public override int GetCredit(Troop source, Troop destination)
 {
     if (!this.IsVaild(destination))
     {
         return 0;
     }
     int num = 0;
     int pureFightingForce = source.PureFightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, false))
     {
         int num3 = source.GetStratagemSuccessChanceCredit(troop, source.InevitableHuogongOnLowerIntelligence || source.InevitableStratagemOnLowerIntelligence, troop.InvincibleHuogong, troop.InvincibleStratagemFromLowerIntelligence);
         if (num3 > 0)
         {
             num3 = (int)(((num3 + (((5 - troop.Army.Scales) * 5))) * (troop.FireDamageRate - 1)) * troop.PureFightingForce) / pureFightingForce;
             if (troop.RateOfFireProtection > 0f)
             {
                 num += (int) (num3 * troop.RateOfFireProtection);
             }
             else
             {
                 num += num3;
             }
         }
     }
     return (int) (num * source.RateOfFireDamage);
 }
 public override int GetCredit(Troop source, Troop destination)
 {
     if (!this.IsVaild(destination))
     {
         return 0;
     }
     int num = 0;
     int fightingForce = source.FightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, true))
     {
         int num3 = troop.Army.MoraleCeiling - troop.Army.Morale;
         if ((num3 >= 5) || !GameObject.Chance(0x5f))
         {
             int num4 = source.GetStratagemSuccessChanceCredit(troop, false, false, false);
             if (num4 > 0)
             {
                 int num5 = source.GenerateBoostIncrement(this.baseIncrement);
                 if (num3 < num5)
                 {
                     num4 = ((((num4 + ((100 - troop.Morale) / 2)) * troop.FightingForce) * num3) / num5) / fightingForce;
                 }
                 else
                 {
                     num4 = ((num4 + ((100 - troop.Morale) / 2)) * troop.FightingForce) / fightingForce;
                 }
                 num += num4;
             }
         }
     }
     return num;
 }
 public override int GetCredit(Troop source, Troop destination)
 {
     int num = 0;
     int pureFightingForce = source.PureFightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, false))
     {
         int num3 = source.GetStratagemSuccessChanceCredit(troop, source.InevitableRaoluanOnLowerIntelligence || source.InevitableStratagemOnLowerIntelligence, (troop.NeverBeIntoChaos || troop.OutburstNeverBeIntoChaos) || troop.InvincibleRaoluan, troop.InvincibleStratagemFromLowerIntelligence);
         if (num3 > 0)
         {
             num3 = (((num3 + ((120 - troop.Morale) / 2)) + ((troop.Army.Scales - 5) * 5)) * troop.PureFightingForce) / pureFightingForce;
             num += num3;
         }
     }
     return ((num * (2 + (source.IncrementOfChaosDay * 3))) / 2);
 }
 public override int GetCredit(Troop source, Troop destination)
 {
     int num = 0;
     int pureFightingForce = source.PureFightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, false))
     {
         int num3 = source.GetStratagemSuccessChanceCredit(troop, source.InevitableGongxinOnLowerIntelligence || source.InevitableStratagemOnLowerIntelligence, troop.InvincibleGongxin, troop.InvincibleStratagemFromLowerIntelligence);
         if (num3 > 0)
         {
             num3 = (((num3 + ((100 - troop.Morale) / 2)) + ((troop.Army.Scales - 5) * 5)) * troop.PureFightingForce) / pureFightingForce;
             num += num3;
         }
     }
     return (int) (num * source.RateOfGongxin);
 }
 public override int GetCredit(Troop source, Troop destination)
 {
     int num = 0;
     int pureFightingForce = source.PureFightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, false))
     {
         int num3 = source.GetStratagemSuccessChanceCredit(troop, 
             source.InevitableRumourOnLowerIntelligence || source.InevitableStratagemOnLowerIntelligence, 
             troop.InvincibleAttract, troop.InvincibleStratagemFromLowerIntelligence);
         if (num3 > 0)
         {
             num3 = ((num3 + ((troop.Army.Scales - 5) * 10)) * troop.PureFightingForce) / pureFightingForce;
             num += num3;
         }
     }
     return ((num * (2 + (source.IncrementOfRumourDay * 3))) / 2);
 }
 public override int GetCredit(Troop source, Troop destination)
 {
     if (!this.IsVaild(destination))
     {
         return 0;
     }
     int num = 0;
     int pureFightingForce = source.PureFightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, true))
     {
         int num3 = source.GetStratagemSuccessChanceCredit(troop, false, false, false);
         if (num3 > 0)
         {
             num3 = (num3 * troop.FightingForce) / pureFightingForce;
             num += num3;
         }
     }
     return (num * 2);
 }
 public override int GetCredit(Troop source, Troop destination)
 {
     if (!this.IsVaild(destination))
     {
         return 0;
     }
     int num = 0;
     int fightingForce = source.FightingForce;
     foreach (Troop troop in source.GetAreaStratagemTroops(destination, true))
     {
         float rate = ((float) troop.InjuryQuantity) / ((float) troop.Army.Kind.MinScale);
         int num4 = source.GetStratagemSuccessChanceCredit(troop, false, false, false);
         if (num4 > 0)
         {
             if (rate > this.rate)
             {
                 rate = this.rate;
             }
             num += (int) ((((num4 * rate) / this.rate) * troop.FightingForce) / ((float) fightingForce));
         }
     }
     return num;
 }