def calculate_potency(self, agent, max_potency): _die = 1 if hasattr(agent, "skills"): _die += agent.skills.get_skill("First Aid").get_rank() _roll = do_d10_roll(_die, 0) _difficulty = do_d10_roll(4, 0) _potency = int((float(_roll) / float(_difficulty)) * max_potency) + 1 if _potency > max_potency: _potency = max_potency if _potency < 5: _potency = 5 return _potency
def handle_stealth_check(self, player): _loudness = do_d10_roll(1,1) _roll = player.stealth_roll() _roll = int(round(_roll / 10.0)) _volume = _loudness - _roll if _roll < 1: _roll = 1 _radius = 6 - _roll if _radius < 1: _radius = 1 _noise = Noise(_volume, player, player.row, player.col, 'walking') self.monsters_react_to_noise(_radius, _noise)
def use_item(self): try: _p = self.dm.player _sw = self.pick_software(_p, _p.software.get_menu(), 'Which program?') if _sw.executing: self.dui.display_message("You terminate the " + _sw.get_name() + '.') _sw.terminate(self, _p) elif _p.software.is_category_running(_sw.category): self.dui.display_message("You cannot start that process.") else: if not _sw.decrypted: _crypto = _p.skills.get_skill('Crypto').get_rank() _crypto_roll = do_d10_roll(_crypto, _p.get_intuition_bonus()) _sw_roll = do_d10_roll(_sw.level, 0) _sw.decrypted = _crypto_roll > _sw_roll _sw.execute(self.dm, _p) if not (_sw.category == 'mp3' or _sw.category == 'datafile'): self.dui.display_message("You start the " + _sw.get_name() + '.') except NonePicked: self.dui.clear_msg_line() self.dui.display_message('Never mind.')
def attempt_to_hack_trap(self, player, tile, row, col): _hack = player.skills.get_skill("Hacking").get_rank() + 1 _roll = do_d10_roll(_hack, 0) + player.get_intuition_bonus() if _roll < 3: _msg = 'You set off ' + tile.get_name() + '!' self.dm.alert_player(player.row, player.col, _msg) raise TrapSetOff() elif _roll > 15: _tf = TerrainFactory() self.map[row][col] = _tf.get_terrain_tile(CYBERSPACE_FLOOR) _msg = "You delete " + tile.get_name() + "." self.dm.alert_player(player.row, player.col, _msg) else: _msg = "You aren't able to alter the code fabric." self.dm.alert_player(player.row, player.col, _msg)
def stealth_roll(self): _dice = 1 + self.skills.get_skill('Stealth').get_rank() _mod = sum(_con[0][1] for _con in self.conditions if _con[0][0] == 'sneaky') _mod += self.get_coordination_bonus() return do_d10_roll(_dice, _mod)