Ejemplo n.º 1
0
    //Initiator: Increased damage when initiating combat
    public override int GetBonusDamage(BattleConditions battle, GameObject owner)
    {
        if (owner.GetInstanceID() == battle.GetAttacker().GetInstanceID())
        {
            return(bonusDamage);
        }

        return(0);
    }
Ejemplo n.º 2
0
    public override int GetBonusEvasion(BattleConditions battle, GameObject owner)
    {
        if (Advantage(battle, owner))
        {
            return(bonusEvasion);
        }

        return(0);
    }
Ejemplo n.º 3
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);
    }
Ejemplo n.º 4
0
    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;
        }
    }
Ejemplo n.º 5
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);
    }
Ejemplo n.º 6
0
 //Swiftness: An extra attack is granted when attacking
 public override int GetBonusAttacks(BattleConditions battle, GameObject owner)
 {
     return(bonusAttacks);
 }
Ejemplo n.º 7
0
 public virtual int GetBonusAttacks(BattleConditions battle, GameObject owner)
 {
     return(0);
 }
Ejemplo n.º 8
0
 public virtual int GetBonusDefense(BattleConditions battle, GameObject owner)
 {
     return(0);
 }