internal void HandleChallengeResult(TroopDamage damage, int result, Troop sourceTroop, Person sourcePerson, Troop destinationTroop, Person destinationPerson, GameScenario scenario) { scenario.GameScreen.TroopPersonChallenge(result, sourceTroop, sourcePerson, destinationTroop, destinationPerson); switch (result) { case 1: //P1武将胜利 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson, "被打下馬"); damage.SourceMoraleChange += 20; damage.DestinationMoraleChange -= 20; damage.SourceCombativityChange += 20; damage.DestinationCombativityChange -= 20; //第2只军队战意下降 break; case 2: //2:P2武将胜利 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, destinationPerson, sourcePerson, "被打下馬"); damage.SourceMoraleChange -= 20; damage.DestinationMoraleChange += 20; damage.SourceCombativityChange -= 20; damage.DestinationCombativityChange += 20; break; case 3: //3:P1武将被杀 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, destinationPerson, sourcePerson, "被擊殺"); this.challengePersonDie(sourcePerson,sourceTroop, destinationPerson); damage.SourceMoraleChange -= 30; damage.DestinationMoraleChange += 30; damage.SourceCombativityChange -= 30; damage.DestinationCombativityChange += 30; break; case 4: //4:P2武将被杀 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson, "被擊殺"); this.challengePersonDie(destinationPerson, destinationTroop, sourcePerson); damage.SourceMoraleChange += 30; damage.DestinationMoraleChange -= 30; damage.SourceCombativityChange += 30; damage.DestinationCombativityChange -= 30; break; case 5: //5:P1武将逃跑 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, destinationPerson, sourcePerson, "逃跑"); damage.SourceMoraleChange -= 20; damage.DestinationMoraleChange += 20; break; case 6: //6:P2武将逃跑 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson, "逃跑"); damage.SourceMoraleChange += 20; damage.DestinationMoraleChange -= 20; break; case 7: //7、P1武将被俘虏 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, destinationPerson, sourcePerson, "被俘虜"); destinationTroop.CatchCaptiveFromTroop(sourcePerson); sourceTroop.RefreshAfterLosePerson(); damage.SourceMoraleChange -= 20; damage.DestinationMoraleChange += 20; damage.SourceCombativityChange -= 20; damage.DestinationCombativityChange += 20; break; case 8: //8、P2武将被俘虏 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson, "被俘虜"); sourceTroop.CatchCaptiveFromTroop(destinationPerson); destinationTroop.RefreshAfterLosePerson(); damage.SourceMoraleChange += 20; damage.DestinationMoraleChange -= 20; damage.SourceCombativityChange += 20; damage.DestinationCombativityChange -= 20; break; case 9: //9、P1武将被说服 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, destinationPerson, sourcePerson, "被說服"); destinationPerson.ConvincePersonSuccess(sourcePerson); damage.SourceCombativityChange -= 30; damage.DestinationCombativityChange += 30; break; case 10: //10、P2武将被说服 sourcePerson.Scenario.YearTable.addChallengeEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson, "被說服"); sourcePerson.ConvincePersonSuccess(destinationPerson); damage.SourceCombativityChange += 30; damage.DestinationCombativityChange -= 30; break; case -1: //-1:平局 sourcePerson.Scenario.YearTable.addChallengeDrawEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson); break; case -2: //-2:平局:P1武将被杀 sourcePerson.Scenario.YearTable.addChallengeDrawKilledEntry(sourcePerson.Scenario.Date, destinationPerson, sourcePerson); this.challengePersonDie(sourcePerson, sourceTroop, destinationPerson); break; case -3: //-3:平局:P2武将被杀 sourcePerson.Scenario.YearTable.addChallengeDrawKilledEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson); this.challengePersonDie(destinationPerson, destinationTroop, sourcePerson); break; case -4: //-4:平局:双方武将被杀 sourcePerson.Scenario.YearTable.addChallengeDrawBothKilledEntry(sourcePerson.Scenario.Date, sourcePerson, destinationPerson); this.challengePersonDie(sourcePerson, sourceTroop, destinationPerson); this.challengePersonDie(destinationPerson, destinationTroop, sourcePerson); break; } }
public void ToDeath() { Architecture locationArchitecture; Troop locationTroop=new Troop(); GameObjects.Faction belongedFaction = this.BelongedFaction; int deathLocation = 0; if (this.LocationTroop != null) { locationTroop = this.LocationTroop; locationArchitecture = this.LocationTroop.StartingArchitecture; deathLocation = 2; if (!locationTroop.Destroyed) { locationTroop.Persons.Remove(this); this.LocationTroop = null; locationTroop.RefreshAfterLosePerson(); } } else if (this.LocationArchitecture != null) { locationArchitecture = this.LocationArchitecture; deathLocation = 1; } else { deathLocation = 3; throw new Exception("try to kill person onway"); } this.Alive = false; //死亡 this.BelongedCaptive = null; this.LocationArchitecture = null; this.Status = PersonStatus.None; if (this.OnDeath != null && locationArchitecture != null && deathLocation == 1) { this.OnDeath(this, locationArchitecture); } if (belongedFaction != null && this == belongedFaction.Leader) { string name = belongedFaction.Name; base.Scenario.YearTable.addKingDeathEntry(base.Scenario.Date, this, belongedFaction); GameObjects.Faction faction2 = belongedFaction.ChangeLeaderAfterLeaderDeath(); if (faction2 != null) { if (belongedFaction == faction2) { bool changeName = false; if ((name == this.Name) && (belongedFaction.Leader.Ambition >= (int) PersonAmbition.普通)) { belongedFaction.Name = belongedFaction.Leader.Name; changeName = true; } if (this.OnChangeLeader != null) { this.OnChangeLeader(belongedFaction, belongedFaction.Leader, changeName, name); } } else if (this.OnDeathChangeFaction != null) { this.OnDeathChangeFaction(this, faction2.Leader, name); } } else { foreach (Architecture architecture2 in belongedFaction.Architectures.GetList()) { architecture2.ResetFaction(null); } belongedFaction.Destroy(); } } else { Treasure baowu; while (this.Treasures.Count > 0) { baowu = (Treasure)this.Treasures[0]; this.LoseTreasure(baowu); baowu.Available = false; baowu.HidePlace = locationArchitecture; } } ExtensionInterface.call("PersonDie", new Object[] { this.Scenario, this }); }