Пример #1
0
 def use(self, player_state: "PlayerState", monster: "Combat"):
     self.recipient = monster
     self.max_available_uses -= 1
     self.expiration_turn = player_state.total_turns_spent + self.turn_duration
     if not self.has_rejection:
         player_state.olfacted_monster = monster # immunity from rejection is handled on player_state while only olfaction does so
     utils.vlog(f"{player_state.total_turns_spent + 1}: Using the copier {self.name} on {utils.agreement(monster)} {monster.name}.")
Пример #2
0
def holiday_run(encounter, player_state, location, **kwargs):
    if player_state.inventory[Items.BoringBinderClip] < 1:
        player_state.inventory[Items.BoringBinderClip] += 1
        utils.vlog(
            f"{player_state.total_turns_spent + 1}: Gained a boring binder clip."
        )
    elif player_state.accountants_fought > 4:
        player_state.locations[location].increment_progress(
            player_state, location)
Пример #3
0
def surgeon_run(encounter, player_state, location, **kwargs):
    if player_state.surgeonosity < threshold:
        for gear in SURGEON_GEAR:
            if player_state.inventory[gear] < 1:
                player_state.inventory[gear] += 1
                break
    else:
        utils.vlog(
            f"Ran away from a surgeon at {player_state.surgeonosity} surgeonosity."
        )
Пример #4
0
 def resolve_macro(self, player_state: "PlayerState",
                   original_monster: "Combat") -> None:
     player_state.macro_active = True
     new_monster = self.select_macro_combat(player_state, original_monster)
     player_state.locations[self].macros_used += 1
     player_state.available_macros -= 1
     utils.vlog(
         f"{player_state.total_turns_spent + 1}: using Macrometeorite on {utils.agreement(original_monster)} {original_monster.name}, which changed it into a {new_monster.name}."
     )
     new_monster.run_from(4, player_state, self)
Пример #5
0
 def use(self, player_state: "PlayerState", location: "Location",
         monster: "Combat"):
     self.recipient = monster
     self.max_available_uses -= 1
     self.expiration_turn = player_state.total_turns_spent + self.turn_duration
     if not self.should_roll_drops:
         player_state.should_roll_drops = False
     if self.is_free:
         player_state.free_turn = True
     player_state.locations[location].banishers_used += 1
     utils.vlog(
         f"{player_state.total_turns_spent}: Using the banisher {self.name} on {utils.agreement(monster)} {monster.name}."
     )
Пример #6
0
 def roll_drops(self, player_state: "PlayerState") -> None:
     if self.item_drops:
         for item in self.item_drops:
             roll = random.randrange(100)
             rate = math.floor(self.item_drops[item] *
                               player_state.drop_multiplier)
             if roll < rate:
                 player_state.inventory[item] += 1
                 utils.vlog(
                     f"Acquired {Items.get_name(item)} by rolling {roll} against a total drop rate of {rate}."
                 )
             else:
                 utils.vlog(
                     f"Drop failure: rolled {roll} against a total drop rate of {rate} for {Items.get_name(item)}."
                 )
Пример #7
0
def dumpster_run(encounter, player_state, location, **kwargs):
    if not player_state.janitors_moved:
        player_state.janitors_moved = True
        utils.vlog(
            f"{player_state.total_turns_spent}: Pygmy janitors moved to the park."
        )
    else:
        item = roll_dumpster_item()
        player_state.inventory[item] += 1
        utils.vlog(f"Acquired 1 {Items.get_name(item)} from the dumpster.")
        if not random.randrange(20):
            player_state.inventory[Items.ShortWritOfHabeasCorpus] += 1
            utils.vlog(
                f"Acquired 1 {Items.get_name(Items.ShortWritOfHabeasCorpus)} from the dumpster."
            )
Пример #8
0
def drunk_run(encounter, player_state, location, **kwargs):
    if player_state.inventory[Items.BookOfMatches]:
        player_state.free_turn = True
        player_state.should_roll_drops = False
        utils.vlog("Used a bowl of scoprions to complete the combat without using a turn.")
Пример #9
0
 def increment_progress(self, player_state: "PlayerState", location: "Location", num: int = 1):
     self.progress += num
     utils.vlog(f"Gained {num} progress in {location.name} for a total of {self.progress}.")
Пример #10
0
 def verbose_log(self, player_state: "PlayerState",
                 location: "Location") -> None:
     utils.vlog(
         f"{player_state.total_turns_spent}: Encountered {self.name} at {player_state.locations[location].progress} location progress."
     )
Пример #11
0
 def resolve_free_turn(self, player_state: "PlayerState",
                       location: "Location") -> None:
     if player_state.free_turn:
         player_state.free_turn = False
         utils.vlog(
             f"Turn {player_state.total_turns_spent + 1} was a free turn.")