コード例 #1
0
 static bool WeaponTriangle(TroopScript Attacker, TroopScript Defender)
 {
     bool bonusattack = false;
     WeaponType atkwpn = Attacker.GetWeapon().weapType;
     WeaponType defwpn = Defender.GetWeapon().weapType;
     if ((atkwpn == WeaponType.Spear && defwpn == WeaponType.Sword) ||
         (atkwpn == WeaponType.Sword && defwpn == WeaponType.Axe) ||
         (atkwpn == WeaponType.Axe && defwpn == WeaponType.Spear))
         bonusattack = true;
     return bonusattack;
 }
コード例 #2
0
 static bool EquipTriangleOffensive(TroopScript Attacker, TroopScript Defender)
 {
     bool bonusattack = false;
     WeaponType atkwpn = Attacker.GetWeapon().weapType;
     ArmorType defarmr = Defender.GetArmor().armrType;
     if ((atkwpn == WeaponType.Sword && defarmr == ArmorType.NoArmor)||
         (atkwpn == WeaponType.Axe && defarmr == ArmorType.NoArmor)||
         (atkwpn == WeaponType.Mace && defarmr == ArmorType.Heavy)||
         (atkwpn == WeaponType.Spear && defarmr == ArmorType.Light)||
         (atkwpn == WeaponType.Bow && defarmr == ArmorType.NoArmor))
         bonusattack = true;
     return bonusattack;
 }
コード例 #3
0
 static int CalculateDamage(TroopScript Attacker, TroopScript Defender, Skill Skillused, int BattlefieldEffect)
 {
     TroopScript thisGuysTerrain;
     int TroopDamage = 0;
     if (Skillused.SkillMaxRange > 1)
         thisGuysTerrain = Attacker;
     else thisGuysTerrain = Defender;
     int	AdjustedTroopSize= CalculateAdjustedTroopSize ( Attacker.GetNumber(),ReturnPeoplePerLine(thisGuysTerrain),Attacker.GetChief().GetMuhReturns());
     bool isPhysical = Skillused.isPhysical;
     if (isPhysical && Skillused.PiercesDefence == false)
     TroopDamage = Mathf.RoundToInt	((AdjustedTroopSize*((float)CalculateAttack(Attacker.GetClass().GetAttack(),Attacker.GetChief().GetAttack(),Attacker.GetDirectAttackBuff())-(float)CalculateDefense(Defender.GetClass().GetDefense(),Defender.GetChief().GetDefense(),Defender.GetDefenseBuff(),Defender.GetPhalanx()))/15));
     else if (isPhysical && Skillused.PiercesDefence == true)
         TroopDamage = Mathf.RoundToInt	((AdjustedTroopSize*((float)CalculateAttack(Attacker.GetClass().GetAttack(),Attacker.GetChief().GetAttack(),Attacker.GetDirectAttackBuff())-(float)CalculatePiercedDefense(Defender.GetClass().GetDefense(),Defender.GetChief().GetDefense(),Defender.GetDefenseBuff())/15)));
     else if (!isPhysical)
     TroopDamage = Mathf.RoundToInt((AdjustedTroopSize*(((float)CalculateMagicAttack(Attacker.GetClass().GetIntelligence(),Attacker.GetChief().GetIntelligence(),Attacker.GetDirectMatkBuff())-(float)CalculateMagicDefense(Defender.GetChief().GetIntelligence(),Defender.GetMdefBuff()))/15)));
     if (TroopDamage>Attacker.GetNumber())
         TroopDamage = Attacker.GetNumber();
     int flatWeaponValue = Attacker.GetWeapon().Attack*((isPhysical&&Attacker.GetWeapon().physical||!Attacker.GetWeapon().physical&&!isPhysical)?1:0);
     int Final = Mathf.RoundToInt(((TroopDamage*Attacker.GetWeapon().AttackModifier+flatWeaponValue)*Skillused.DamageScaling)*BattlefieldEffect);
     return Final;
 }
コード例 #4
0
 static int CalculateCounterDamage(TroopScript Attacker, TroopScript Defender, float CounterAtkScale,  int BattlefieldEffect)
 {
     int	AdjustedTroopSize= CalculateAdjustedTroopSize ( Attacker.GetNumber(),ReturnPeoplePerLine(Attacker),Attacker.GetChief().GetMuhReturns());
     int TroopDamage = 0;
     if (Attacker.GetClass().GetIfItsPhysical())
         TroopDamage = Mathf.RoundToInt	((AdjustedTroopSize*((float)CalculateAttack(Attacker.GetClass().GetAttack(),Attacker.GetChief().GetAttack(),Attacker.GetCounterAttackBuff())-(float)CalculateDefense(Defender.GetClass().GetDefense(),Defender.GetChief().GetDefense(),Defender.GetDefenseBuff(),Defender.GetPhalanx()))/15));
     else
         TroopDamage = Mathf.RoundToInt((AdjustedTroopSize*(((float)CalculateMagicAttack(Attacker.GetClass().GetIntelligence(),Attacker.GetChief().GetIntelligence(),Attacker.GetCounterMatkBuff())-(float)CalculateMagicDefense(Defender.GetChief().GetIntelligence(),Defender.GetMdefBuff()))/15)));
     if (TroopDamage>Attacker.GetNumber())
         TroopDamage = Attacker.GetNumber();
     int flatWeaponValue = Attacker.GetWeapon().Attack*((Attacker.GetClass().GetIfItsPhysical()&&Attacker.GetWeapon().physical||!Attacker.GetWeapon().physical&&!Attacker.GetClass().GetIfItsPhysical())?1:0);
     int Final = Mathf.RoundToInt(((TroopDamage*Attacker.GetWeapon().AttackModifier+flatWeaponValue)*CounterAtkScale)*BattlefieldEffect);
     return Final;
 }
コード例 #5
0
 static int CalculateAccurateShotDamage(TroopScript Attacker, TroopScript Defender, float _skillDamage, int BattlefieldEffect)
 {
     int AdjustedTroopSize = CalculateAdjustedTroopSize (Attacker.GetNumber(),ReturnPeoplePerLine(Attacker), Attacker.GetChief().GetMuhReturns());
     int TroopDamage = Mathf.RoundToInt	((AdjustedTroopSize*((float)CalculateAttack(Attacker.GetClass().GetAttack(),Attacker.GetChief().GetAttack(),Attacker.GetDirectAttackBuff())-(float)CalculateDefense(Defender.GetClass().GetDefense(),Defender.GetChief().GetDefense(),Defender.GetDefenseBuff()))/15));
     int flatWeaponValue = Attacker.GetWeapon().Attack;
     int Final = Mathf.RoundToInt(((TroopDamage*Attacker.GetWeapon().AttackModifier+flatWeaponValue)*_skillDamage)*BattlefieldEffect);
     return Final;
 }
コード例 #6
0
    public static void MeleeFightingScript(TroopScript Attacker, TroopScript Defender, Skill SkillUsed)
    {
        int AttackerBattlefieldEffect = 1; //still to impement
        int DefenderBattlefieldEffect = 1; //still to impement
        int DamageOnAtk = 0;
        int DamageOnDef = 0;
        TroopScript DefenderGuarder = Defender.GuardedBy;
        float 	DefenderGuardPercent = (float)Defender.GuardedByPercent/100;
        if (SkillUsed.CancelsPreparation == true && Defender.isMagicGuarded == false){
            Defender.CancelPreparation();
            Defender.FlushPreparationTarget();
        }
        if (SkillUsed.ReducesEnergy == true && Defender.isMagicGuarded == false){
            Defender.SetEnergy(Defender.GetEnergy()-1);
            if (Defender.GetEnergy() <0)
                Defender.SetEnergy(0);
        }
        if (SkillUsed.RemoveBuffs == true && Defender.isMagicGuarded == false)Defender.RemoveAllbuffs();
        if (SkillUsed.AppliesPoison == true && Defender.Poisoned == 0) Defender.Poisoned = 1;
        if (SkillUsed.Freezes == true && !Defender.Frozen) Defender.Frozen = true;
        if (SkillUsed.Penetrating == true || DefenderGuarder == null){
        DamageOnDef = CalculateDamage(Attacker,Defender,SkillUsed,AttackerBattlefieldEffect);
            Debug.Log("Damage on "+Defender.GetChief().GetName()+":"+DamageOnDef);
            Defender.SetNumber(Defender.GetNumber()-DamageOnDef);
            if (Defender.GetNumber()<0) Defender.SetNumber(0);
        if (CanCounter(Attacker,Defender,SkillUsed)){

        float CounterScaling = CounterAttackDamage(Defender.GetChief().GetCounterAttack(),Defender.GetArmor().CounterAttackValue+Defender.GetWeapon().CounterAttackValue);
            DamageOnAtk = CalculateCounterDamage(Defender,Attacker,CounterScaling,DefenderBattlefieldEffect);
            Attacker.SetNumber(Attacker.GetNumber()-DamageOnAtk);
                if (Attacker.GetNumber()<0) Attacker.SetNumber(0);}}

        else if (SkillUsed.Penetrating == false && DefenderGuarder != null){

            DamageOnDef = CalculateDamage(Attacker,Defender,SkillUsed,AttackerBattlefieldEffect);
            if (SkillUsed.AffectRating) RatingFromDamage(Attacker,DamageOnDef);
            if (DefenderGuarder){
                if (DefenderGuarder.GetNumber()<= 0){
                    Defender.GuardedBy = null;
                    Defender.GuardedByPercent = 0;
                    DamageOnDef = CalculateDamage(Attacker,Defender,SkillUsed,AttackerBattlefieldEffect);
                    Debug.Log("Damage on "+Defender.GetChief().GetName()+":"+DamageOnDef);
                    Defender.SetNumber(Defender.GetNumber()-DamageOnDef);
                    if (Defender.GetNumber()<0) Defender.SetNumber(0);
                    if (CanCounter(Attacker,Defender,SkillUsed)){

                        float CounterScaling = CounterAttackDamage(Defender.GetChief().GetCounterAttack(),Defender.GetArmor().CounterAttackValue+Defender.GetWeapon().CounterAttackValue);
                        DamageOnAtk = CalculateCounterDamage(Defender,Attacker,CounterScaling,DefenderBattlefieldEffect);
                        Attacker.SetNumber(Attacker.GetNumber()-DamageOnAtk);
                        if (Attacker.GetNumber()<0) Attacker.SetNumber(0);}
                }else{
                DefenderGuarder.SetNumber(DefenderGuarder.GetNumber()-Mathf.RoundToInt(DamageOnDef*DefenderGuardPercent));
                if (DefenderGuarder.GetNumber()<0) DefenderGuarder.SetNumber(0);
                Defender.SetNumber(Defender.GetNumber()-Mathf.RoundToInt(DamageOnDef*(1-DefenderGuardPercent)));
                if (Defender.GetNumber()<0) Defender.SetNumber(0);
                if (CanCounter(Attacker,DefenderGuarder,SkillUsed)){
                    float CounterScaling = CounterAttackDamage(DefenderGuarder.GetChief().GetCounterAttack(),DefenderGuarder.GetArmor().CounterAttackValue+DefenderGuarder.GetWeapon().CounterAttackValue);
                    DamageOnAtk = CalculateCounterDamage(DefenderGuarder,Attacker,CounterScaling,DefenderBattlefieldEffect);
                    Attacker.SetNumber(Attacker.GetNumber()-DamageOnAtk);
                    if (Attacker.GetNumber()<0) Attacker.SetNumber(0);
            }
                }}
        }
    }