def activate(self, action): energy = self.unit.energy if self.unit.energy < 7 else 6 modifier = self.unit.range_accuracy - action.target.evasion + energy + 5 damage = engine.damage_roll(1, modifier) if damage: action.target.receive_damage(1) statuses.Bleeding(action.target) if 'alive' in action.target.types: self.string('use', format_dict={ 'actor': self.unit.name, 'target': action.target.name }) else: self.string('special', format_dict={ 'actor': self.unit.name, 'target': action.target.name }) else: self.string('fail', format_dict={ 'actor': self.unit.name, 'target': action.target.name }) self.unit.wasted_energy += 2
def get_damage(self, target, flying=False): accuracy = self.unit.melee_accuracy if self.melee else self.unit.range_accuracy energy = self.unit.energy if not flying else 5 modifier = accuracy + self.accuracy - target.evasion + energy damage = engine.damage_roll(self.dice_num, modifier) if damage: damage += self.damage return damage
def get_damage(self, target): accuracy = self.unit.melee_accuracy if self.melee else self.unit.range_accuracy energy = self.unit.energy if self.unit.energy < 6 else 5 modifier = accuracy + self.accuracy - target.evasion + energy damage = engine.damage_roll(self.dice_num, modifier) if damage: damage += self.damage if damage > self.damage_cap: return self.damage_cap return damage
def activate(self, action): energy = self.unit.energy if self.unit.energy < 7 else 6 modifier = self.unit.range_accuracy - action.target.evasion + energy + 5 self.dmg_done = engine.damage_roll(3, modifier) self.dmg_done += self.unit.damage self.target = action.target self.target.receive_hit(self) self.target.receive_damage(self.dmg_done) if self.dmg_done: if 'alive' in action.target.types: statuses.Bleeding(action.target) self.string('use', format_dict={ 'actor': self.unit.name, 'target': self.target.name, 'damage': self.dmg_done }) else: self.string('special', format_dict={ 'actor': self.unit.name, 'target': self.target.name, 'damage': self.dmg_done }) elif self.dmg_blocked: self.string('armor', format_dict={ 'actor': self.unit.name, 'target': self.target.name, 'armor_name': self.armored.name_lang_tuple() }) else: self.string('fail', format_dict={ 'actor': self.unit.name, 'target': self.target.name }) self.unit.waste_energy(2)