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; } }
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--; } } } } }
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); }
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); } }
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; }
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; } } }
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); }
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); }
public void HeroSkillIncreased(BattleSideEnum side, IBattleCombatant battleCombatant, BasicCharacterObject heroCharacter, SkillObject skill) { }