private void SetSideData(SpousesBattleRecordSide side, IBattleCombatant battleCombatant, BasicCharacterObject character, int remain, int killCount, int killed, int wounder, int wounded)
 {
     if (null != side)
     {
         side.Remain    += remain;
         side.KillCount += killCount;
         side.Killed    += killed;
         side.Wounded   += wounded;
         side.RunAway   += wounder;
         SpousesBattleRecordParty party = side.GetPartyByUniqueId(battleCombatant.GetHashCode() + "");
         if (null == party)
         {
             party      = new SpousesBattleRecordParty(battleCombatant.GetHashCode() + "");
             party.Name = battleCombatant.Name.ToString();
             side.Parties.Add(party);
         }
         party.Remain    += remain;
         party.KillCount += killCount;
         party.Killed    += killed;
         party.Wounded   += wounded;
         party.RunAway   += wounder;
         SpousesBattleRecordCharacter battleRecordCharacter = party.GetBattleRecordCharacter(character);
         if (null == battleRecordCharacter)
         {
             battleRecordCharacter = new SpousesBattleRecordCharacter(character);
             party.Characters.Add(battleRecordCharacter);
         }
         battleRecordCharacter.Remain    += remain;
         battleRecordCharacter.KillCount += killCount;
         battleRecordCharacter.Killed    += killed;
         battleRecordCharacter.Wounded   += wounded;
         battleRecordCharacter.RunAway   += wounder;
     }
 }
Exemple #2
0
 internal static void TroopNumberChangedInternal(BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject character, int number = 0, int numberKilled = 0, int numberWounded = 0, int numberRouted = 0, int killCount = 0, int numberReadyToUpgrade = 0)
 {
     if (battleCombatant is PartyBase party)
     {
         if (party.MapEvent != null && SimulationModel.IsValidEventType(party.MapEvent.EventType))
         {
             if (SimulationsPool.TryGetSimulationModel(party.MapEvent.Id, out SimulationModel simulationModel))
             {
                 while (numberKilled > 0)
                 {
                     simulationModel.RemoveTroop(side, character.Id);
                     numberKilled--;
                 }
                 while (numberWounded > 0)
                 {
                     simulationModel.RemoveTroop(side, character.Id);
                     numberWounded--;
                 }
                 while (numberRouted > 0)
                 {
                     simulationModel.RemoveTroop(side, character.Id);
                     numberRouted--;
                 }
             }
         }
     }
 }
Exemple #3
0
 protected EnhancedBattleTestAgentOrigin(IBattleCombatant combatant, IEnhancedBattleTestTroopSupplier troopSupplier, BattleSideEnum side, int rank = -1, UniqueTroopDescriptor uniqueNo = default)
 {
     _troopSupplier  = troopSupplier;
     _side           = side;
     BattleCombatant = combatant;
     _descriptor     = !uniqueNo.IsValid ? new UniqueTroopDescriptor(TaleWorlds.Core.Game.Current.NextUniqueTroopSeed) : uniqueNo;
     Rank            = rank == -1 ? MBRandom.RandomInt(10000) : rank;
 }
 public SPAgentOrigin(SPCombatant combatant, SPSpawnableCharacter character, IEnhancedBattleTestTroopSupplier troopSupplier, BattleSideEnum side, int rank = -1, UniqueTroopDescriptor uniqueNo = default)
     : base(combatant.Combatant, troopSupplier, side, rank, uniqueNo)
 {
     SPCharacter      = character;
     CultureCombatant = combatant;
     PartyAgentOrigin = new PartyAgentOrigin(combatant.Combatant, character.CharacterObject, rank,
                                             uniqueNo);
 }
Exemple #5
0
 public CustomSiegeMissionSpawnHandler(
     IBattleCombatant defenderBattleCombatant,
     IBattleCombatant attackerBattleCombatant)
 {
     this._battleCombatants = new CustomBattleCombatant[2]
     {
         (CustomBattleCombatant)defenderBattleCombatant,
         (CustomBattleCombatant)attackerBattleCombatant
     };
 }
        public void RecordBattleData(BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject character, int remain, int killed, int killCount, int wounder, int wounded)
        {
            if (null != (character as CharacterObject))
            {
                RecordHeroBattleStatistic((CharacterObject)character, killCount);
            }

            if (side == BattleSideEnum.Attacker)
            {
                if (null == attackerSide)
                {
                    Banner banner = null;
                    if (null != attackerBanner)
                    {
                        banner = attackerBanner;
                    }
                    else if (null != MobileParty.MainParty.MapEvent)
                    {
                        banner = MobileParty.MainParty.MapEvent.AttackerSide.LeaderParty.Banner;
                    }
                    attackerSide = new SpousesBattleRecordSide(GameTexts.FindText("str_battle_result_army", "attacker").ToString(), banner);
                }
                SetSideData(attackerSide, battleCombatant, character, remain, killCount, killed, wounder, wounded);
            }
            else
            {
                if (null == defenderSide)
                {
                    Banner banner = null;;
                    if (null != defenderBanner)
                    {
                        banner = defenderBanner;
                    }
                    else if (null != MobileParty.MainParty.MapEvent)
                    {
                        banner = MobileParty.MainParty.MapEvent.DefenderSide.LeaderParty.Banner;
                    }
                    defenderSide = new SpousesBattleRecordSide(GameTexts.FindText("str_battle_result_army", "defender").ToString(), banner);
                }
                SetSideData(defenderSide, battleCombatant, character, remain, killCount, killed, wounder, wounded);
            }
        }
Exemple #7
0
 public MissionCombatantsLogic(
     IEnumerable <IBattleCombatant> battleCombatants,
     IBattleCombatant playerBattleCombatant,
     IBattleCombatant defenderLeaderBattleCombatant,
     IBattleCombatant attackerLeaderBattleCombatant,
     Mission.MissionTeamAITypeEnum teamAIType,
     bool isPlayerSergeant)
 {
     if (battleCombatants == null)
     {
         battleCombatants = (IEnumerable <IBattleCombatant>) new IBattleCombatant[2]
         {
             defenderLeaderBattleCombatant,
             attackerLeaderBattleCombatant
         }
     }
     ;
     this._battleCombatants              = battleCombatants;
     this._playerBattleCombatant         = playerBattleCombatant;
     this._defenderLeaderBattleCombatant = defenderLeaderBattleCombatant;
     this._attackerLeaderBattleCombatant = attackerLeaderBattleCombatant;
     this._teamAIType       = teamAIType;
     this._isPlayerSergeant = isPlayerSergeant;
 }
Exemple #8
0
        public override void OnBehaviourInitialize()
        {
            base.OnBehaviourInitialize();
            if (!this.Mission.Teams.IsEmpty <Team>())
            {
                throw new MBIllegalValueException("Number of teams is not 0.");
            }
            if (this._playerBattleCombatant.Side == BattleSideEnum.Defender && this._playerBattleCombatant != this._defenderLeaderBattleCombatant)
            {
                this.Mission.Teams.Add(BattleSideEnum.Defender, this._playerBattleCombatant.PrimaryColorPair.Item1, this._playerBattleCombatant.PrimaryColorPair.Item2, this._playerBattleCombatant.Banner);
            }
            else
            {
                this.Mission.Teams.Add(BattleSideEnum.Defender, this._defenderLeaderBattleCombatant.PrimaryColorPair.Item1, this._defenderLeaderBattleCombatant.PrimaryColorPair.Item2, this._defenderLeaderBattleCombatant.Banner);
            }
            if (this._playerBattleCombatant.Side == BattleSideEnum.Attacker && this._playerBattleCombatant != this._attackerLeaderBattleCombatant)
            {
                this.Mission.Teams.Add(BattleSideEnum.Attacker, this._playerBattleCombatant.PrimaryColorPair.Item1, this._playerBattleCombatant.PrimaryColorPair.Item2, this._playerBattleCombatant.Banner);
            }
            else
            {
                this.Mission.Teams.Add(BattleSideEnum.Attacker, this._attackerLeaderBattleCombatant.PrimaryColorPair.Item1, this._attackerLeaderBattleCombatant.PrimaryColorPair.Item2, this._attackerLeaderBattleCombatant.Banner);
            }
            switch (this._playerBattleCombatant.Side)
            {
            case BattleSideEnum.Defender:
                this.Mission.PlayerTeam = this.Mission.DefenderTeam;
                if (this._battleCombatants == null)
                {
                    break;
                }
                using (IEnumerator <IBattleCombatant> enumerator = this._battleCombatants.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        IBattleCombatant current = enumerator.Current;
                        if (current != this._playerBattleCombatant && current.Side == BattleSideEnum.Defender && !this._isPlayerSergeant)
                        {
                            this.Mission.Teams.Add(BattleSideEnum.Defender, current.PrimaryColorPair.Item1, current.PrimaryColorPair.Item2, current.Banner);
                            break;
                        }
                    }
                    break;
                }

            case BattleSideEnum.Attacker:
                this.Mission.PlayerTeam = this.Mission.AttackerTeam;
                if (this._battleCombatants == null)
                {
                    break;
                }
                using (IEnumerator <IBattleCombatant> enumerator = this._battleCombatants.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        IBattleCombatant current = enumerator.Current;
                        if (current != this._playerBattleCombatant && current.Side == BattleSideEnum.Attacker && !this._isPlayerSergeant)
                        {
                            this.Mission.Teams.Add(BattleSideEnum.Attacker, current.PrimaryColorPair.Item1, current.PrimaryColorPair.Item2, current.Banner);
                            break;
                        }
                    }
                    break;
                }
            }
        }
Exemple #9
0
 public static void Postfix(SPScoreboardVM __instance, BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject character, int number = 0, int numberDead = 0, int numberWounded = 0, int numberRouted = 0, int numberKilled = 0, int numberReadyToUpgrade = 0)
 {
     Campaign.Current.GetCampaignBehavior <SpousesStatsBehavior>()
     .GetSpouseStatsBusiness().RecordBattleData(side, battleCombatant, character, number, numberDead, numberKilled, numberRouted, numberWounded);
 }
 internal static void Postfix(BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject character, int number = 0, int numberKilled = 0, int numberWounded = 0, int numberRouted = 0, int killCount = 0, int numberReadyToUpgrade = 0)
 {
     SimulationObserver.TroopNumberChangedInternal(side, battleCombatant, character, number, numberKilled, numberWounded, numberRouted, killCount, numberReadyToUpgrade);
 }
Exemple #11
0
 public void TroopNumberChanged(BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject character, int number = 0, int numberKilled = 0, int numberWounded = 0, int numberRouted = 0, int killCount = 0, int numberReadyToUpgrade = 0)
 {
     TroopNumberChangedInternal(side, battleCombatant, character, number, numberKilled, numberWounded, numberRouted, killCount, numberReadyToUpgrade);
 }
Exemple #12
0
 public void HeroSkillIncreased(BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject heroCharacter, SkillObject skill)
 {
 }