//Initiator: Increased damage when initiating combat public override int GetBonusDamage(BattleConditions battle, GameObject owner) { if (owner.GetInstanceID() == battle.GetAttacker().GetInstanceID()) { return(bonusDamage); } return(0); }
public override int GetBonusEvasion(BattleConditions battle, GameObject owner) { if (Advantage(battle, owner)) { return(bonusEvasion); } return(0); }
bool Advantage(BattleConditions battle, GameObject owner) { if (owner.GetInstanceID() == battle.GetAttacker().GetInstanceID()) { if (battle.GetDefenderWeapon().weaponClass == advantage) { return(true); } } else if (owner.GetInstanceID() == battle.GetDefender().GetInstanceID()) { if (battle.GetAttackerWeapon().weaponClass == advantage) { return(true); } } return(false); }
public BattleSimulation(GameObject _attacker, GameObject _defender, Vector3Int attackerPos, Vector3Int defenderPos) { attacker = _attacker; defender = _defender; int range = (int)(Mathf.Abs(attackerPos.x - defenderPos.x) + Mathf.Abs(attackerPos.y - defenderPos.y)); conditions = new BattleConditions(_attacker, _defender, range); aDamage = CalculateDamage(_attacker, _defender, attackerPos, defenderPos); aAccuracy = CalculateHitChance(_attacker, _defender, attackerPos, defenderPos); aCritDamage = CalculateCritDamage(_attacker, _defender); aAttacks = 1 + _attacker.GetComponent <CharacterStats>().GetWeapon().GetBonusAttacks(conditions, _attacker); if (CalculateDoubleAttack(_attacker, _defender)) { aAttacks++; } dAttacks = 0; if (CanCounterattack(_defender, range)) { dAttacks++; dAttacks += _defender.GetComponent <CharacterStats>().GetWeapon().GetBonusAttacks(conditions, _defender); if (CalculateDoubleAttack(_defender, _attacker)) { dAttacks++; } dDamage = CalculateDamage(_defender, _attacker, defenderPos, attackerPos); dAccuracy = CalculateHitChance(_defender, _attacker, defenderPos, attackerPos); dCritDamage = CalculateCritDamage(_defender, _attacker); } else { dDamage = 0; dAccuracy = 0; dCritDamage = 0; } }
//Armor Slayer: Increased damage against heavy armor public override int GetBonusDamage(BattleConditions battle, GameObject owner) { if (battle.GetDefenderArmor() == null) { return(0); } if (owner.GetInstanceID() == battle.GetAttacker().GetInstanceID()) { if (battle.GetDefenderArmor().weightClass == effective) { return(armorSlayerDamageBonus); } } else if (owner.GetInstanceID() == battle.GetDefender().GetInstanceID()) { if (battle.GetAttackerArmor().weightClass == effective) { return(armorSlayerDamageBonus); } } return(0); }
//Swiftness: An extra attack is granted when attacking public override int GetBonusAttacks(BattleConditions battle, GameObject owner) { return(bonusAttacks); }
public virtual int GetBonusAttacks(BattleConditions battle, GameObject owner) { return(0); }
public virtual int GetBonusDefense(BattleConditions battle, GameObject owner) { return(0); }