public void AddRelationshipToOtherKingdoms(KingdomTest newKingdom) { for (int i = 0; i < this.kingdoms.Count; i++) { if (this.kingdoms[i].kingdom.id != newKingdom.id) { this.kingdoms[i].kingdom.relationshipKingdoms.Add(new RelationshipKingdoms(newKingdom, DECISION.NEUTRAL, 0)); } } }
public RelationshipKingdoms(KingdomTest kingdom, DECISION previousDecision, int like) { // this.id = id; this.kingdom = kingdom; this.previousDecision = previousDecision; this.like = like; this.isFirstEncounter = true; this.lordRelationship = LORD_RELATIONSHIP.NEUTRAL; this.isAdjacent = false; this.isAtWar = false; }
internal void CreateInitialRelationshipsToKingdoms() { for (int i = 0; i < PoliticsPrototypeManager.Instance.kingdoms.Count; i++) { KingdomTest otherKingdom = PoliticsPrototypeManager.Instance.kingdoms[i].kingdom; if (otherKingdom.id != this.id) { this.relationshipKingdoms.Add(new RelationshipKingdoms(otherKingdom, DECISION.NEUTRAL, 0)); } } }
internal void AssimilateKingdom(KingdomTest newKingdom) { for (int i = 0; i < this.cities.Count; i++) { newKingdom.AddCityToKingdom(this.cities [i]); } for (int i = 0; i < this.royaltyList.allRoyalties.Count; i++) { newKingdom.AddRoyaltyToKingdom(this.royaltyList.allRoyalties [i]); } PoliticsPrototypeManager.Instance.MakeKingdomDead(this); PoliticsPrototypeUIManager.Instance.LoadKingdoms(); }
public void RemoveRelationshipToOtherKingdoms(KingdomTest kingdomToRemove) { for (int i = 0; i < this.kingdoms.Count; i++) { for (int j = 0; j < this.kingdoms[i].kingdom.relationshipKingdoms.Count; j++) { if (this.kingdoms[i].kingdom.relationshipKingdoms[j].kingdom.id == kingdomToRemove.id) { this.kingdoms[i].kingdom.relationshipKingdoms.RemoveAt(j); break; } } } }
internal void CheckForWars() { if (this.cities.Count <= 0) { PoliticsPrototypeManager.Instance.turnEnded -= CheckForWars; PoliticsPrototypeManager.Instance.MakeKingdomDead(this); } if (this.kingdomsAtWarWith.Count <= 0) { return; } for (int i = 0; i < this.cities.Count; i++) { for (int j = 0; j < this.cities[i].cityAttributes.connectedCities.Count; j++) { CityTest connectedCity = this.cities[i].cityAttributes.connectedCities[j].cityAttributes; if (connectedCity.kingdomTile.kingdom.id != this.id && SearchRelationshipKingdomsById(connectedCity.kingdomTile.kingdom.id).isAtWar) { KingdomTest kingdomAtWarWith = connectedCity.kingdomTile.kingdom; int chanceOfWar = Random.Range(0, 100); // Debug.LogError(this.kingdomName + " is attempting to invade city " + connectedCity.cityName + " of kingdom " + connectedCity.kingdomTile.kingdom.kingdomName); if (chanceOfWar < 5) { //Invade City Debug.LogError(this.kingdomName + " has invaded city " + connectedCity.cityName + " of kingdom " + connectedCity.kingdomTile.kingdom.kingdomName); this.AddCityToKingdom(connectedCity.hexTile.GetCityTileTest()); kingdomAtWarWith.RemoveCitiesFromKingdom(new List <CityTileTest>() { connectedCity.hexTile.GetCityTileTest() }); int chanceOfPeace = Random.Range(0, 100); if (chanceOfPeace < 15) { Debug.LogError(this.kingdomName + " has declared peace with " + connectedCity.kingdomTile.kingdom.kingdomName); this.SearchRelationshipKingdomsById(kingdomAtWarWith.id).isAtWar = false; kingdomAtWarWith.SearchRelationshipKingdomsById(this.id).isAtWar = false; } break; } } } } }
private void Assassinate(Royalty assassin, Royalty victim, KingdomTest targetKingdom) { victim.kingdom.royaltyList.allRoyalties.Remove(victim); victim.kingdom.royaltyList.successionRoyalties.Remove(victim); if (targetKingdom.assignedLord.id == victim.id) { if (victim.kingdom.royaltyList.successionRoyalties.Count <= 0) { victim.kingdom.AssignNewLord(null); } else { victim.kingdom.AssignNewLord(victim.kingdom.royaltyList.successionRoyalties [0]); } } Debug.Log(PoliticsPrototypeManager.Instance.month + "/" + PoliticsPrototypeManager.Instance.week + "/" + PoliticsPrototypeManager.Instance.year + ": " + assassin.name + " of " + assassin.kingdom.kingdomName + " ASSASSINATED " + victim.name + " of " + victim.kingdom.kingdomName); }
public Royalty(KingdomTest kingdom, int age, GENDER gender, int generation) { this.id = GetID() + 1; this.name = RandomNameGenerator.GenerateRandomName() + " " + this.id; this.age = age; this.gender = gender; this.generation = generation; this.kingdom = kingdom; this.trait = GetTrait(); // this.trait = new TRAIT[]{TRAIT.VICIOUS, TRAIT.NONE}; this.loyalLord = null; this.hatedLord = null; this.father = null; this.mother = null; this.spouse = null; this.children = new List <Royalty> (); this.royaltyChances = new RoyaltyChances(); this.birthMonth = (MONTH)PoliticsPrototypeManager.Instance.month; this.birthWeek = PoliticsPrototypeManager.Instance.week; this.birthYear = PoliticsPrototypeManager.Instance.year; this.isIndependent = false; this.isMarried = false; this.isDirectDescendant = false; this.isDead = false; this.kingdom.royaltyList.allRoyalties.Add(this); if (this.kingdom.assignedLord == null) { this.loyalLord = this; } else { this.loyalLord = this.kingdom.assignedLord; } PoliticsPrototypeManager.Instance.RegisterRoyalty(this); SetLastID(this.id); RoyaltyEventDelegate.onIncreaseIllnessAndAccidentChance += IncreaseIllnessAndAccidentChance; RoyaltyEventDelegate.onChangeIsDirectDescendant += ChangeIsDirectDescendant; RoyaltyEventDelegate.onMassChangeLoyalty += MassChangeLoyalty; PoliticsPrototypeManager.Instance.turnEnded += TurnActions; }
internal void Conversion() { KingdomTest targetKingdom = this.kingdom.relationshipKingdoms [UnityEngine.Random.Range(0, this.kingdom.relationshipKingdoms.Count)].kingdom; Royalty targetRoyalty = null; int targetChance = UnityEngine.Random.Range(0, 100); if (targetKingdom.royaltyList.successionRoyalties.Count > 3) { if (targetChance < 20) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [0]; } else if (targetChance >= 21 && targetChance < 50) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [1]; } else if (targetChance >= 51 && targetChance < 90) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [2]; } else { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [UnityEngine.Random.Range(3, targetKingdom.royaltyList.successionRoyalties.Count)]; } } else if (targetKingdom.royaltyList.successionRoyalties.Count > 2) { if (targetChance < 24) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [0]; } else if (targetChance >= 24 && targetChance < 57) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [1]; } else { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [2]; } } else if (targetKingdom.royaltyList.successionRoyalties.Count > 1) { if (targetChance < 49) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [0]; } else { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [1]; } } else if (targetKingdom.royaltyList.successionRoyalties.Count > 0) { targetRoyalty = targetKingdom.royaltyList.successionRoyalties [0]; } if (targetRoyalty != null) { Debug.Log("Attempting to convert " + targetRoyalty.name); if (!targetRoyalty.trait.Contains(TRAIT.LOYAL)) { if (targetRoyalty.hatedLord == null || targetRoyalty.hatedLord.id != this.id) { if (targetRoyalty.previousConversionMonth == 0) { if (targetRoyalty.trait.Contains(TRAIT.TRAITOR)) { int conversionChance = UnityEngine.Random.Range(0, 100); if (conversionChance < 80) { targetRoyalty.ChangeLoyalty(this); } } else { int conversionChance = UnityEngine.Random.Range(0, 100); if (conversionChance < 30) { targetRoyalty.ChangeLoyalty(this); } } } else { int monthDifference = PoliticsPrototypeManager.Instance.month - targetRoyalty.previousConversionMonth; int yearDifference = PoliticsPrototypeManager.Instance.year - targetRoyalty.previousConversionYear; int difference = monthDifference + (yearDifference * 12); if (difference >= 3) { if (targetRoyalty.trait.Contains(TRAIT.TRAITOR)) { int conversionChance = UnityEngine.Random.Range(0, 100); if (conversionChance < 80) { targetRoyalty.ChangeLoyalty(this); } } else { int conversionChance = UnityEngine.Random.Range(0, 100); if (conversionChance < 30) { targetRoyalty.ChangeLoyalty(this); } } } } } } } else { Debug.LogWarning("No Conversion Target!"); } }
internal void Assassination() { List <RelationshipKingdoms> warRelations = this.kingdom.relationshipKingdoms.Where(x => x.isAtWar == true).ToList(); List <RelationshipKingdoms> peaceRelations = this.kingdom.relationshipKingdoms.Where(x => x.isAtWar == false).ToList(); if (warRelations.Count > 0) { KingdomTest targetKingdom = warRelations [UnityEngine.Random.Range(0, warRelations.Count)].kingdom; if (targetKingdom.royaltyList.successionRoyalties.Count > 0) { if (targetKingdom.royaltyList.successionRoyalties [0].loyalLord.id == this.id) { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE A LORD AT WAR..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 20) { Assassinate(this, targetKingdom.assignedLord, targetKingdom); } } else { if (targetKingdom.SuccessionRoyaltiesHasLoyaltyTo(this)) { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE NEXT IN LINE TO THE LORD AT WAR..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 50) { Assassinate(this, targetKingdom.royaltyList.successionRoyalties [0], targetKingdom); } } else { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE A LORD AT WAR..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 20) { Assassinate(this, targetKingdom.assignedLord, targetKingdom); } } } } else { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE A LORD AT WAR..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 20) { Assassinate(this, targetKingdom.assignedLord, targetKingdom); } } } else { if (peaceRelations.Count > 0) { RelationshipKingdoms targetKingdom = peaceRelations [UnityEngine.Random.Range(0, peaceRelations.Count)]; if (targetKingdom.kingdom.royaltyList.successionRoyalties.Count > 0) { if (targetKingdom.kingdom.royaltyList.successionRoyalties [0].loyalLord.id == this.id) { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE A LORD AT PEACE..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 20) { Assassinate(this, targetKingdom.kingdom.assignedLord, targetKingdom.kingdom); } } else { if (targetKingdom.kingdom.SuccessionRoyaltiesHasLoyaltyTo(this)) { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE NEXT IN LINE TO THE LORD AT PEACE..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 50) { Assassinate(this, targetKingdom.kingdom.royaltyList.successionRoyalties [0], targetKingdom.kingdom); } } else { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE A LORD AT PEACE..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 20) { Assassinate(this, targetKingdom.kingdom.assignedLord, targetKingdom.kingdom); } } } } else { Debug.Log(this.name + " IS ATTEMPTING TO ASSASSINATE A LORD AT PEACE..."); int assassinateChance = UnityEngine.Random.Range(0, 100); if (assassinateChance < 20) { Assassinate(this, targetKingdom.kingdom.assignedLord, targetKingdom.kingdom); } } int caughtChance = UnityEngine.Random.Range(0, 100); if (caughtChance < 20) { Debug.Log(this.name + " GOT CAUGHT!"); targetKingdom.isAtWar = true; RelationshipKingdoms relationFromTarget = targetKingdom.kingdom.SearchRelationshipKingdomsById(this.kingdom.id); if (relationFromTarget != null) { relationFromTarget.isAtWar = true; } } } } }
public void MakeKingdomDead(KingdomTest kingdomToDie) { this.kingdoms.Remove(kingdomToDie.kingdomTile); RemoveRelationshipToOtherKingdoms(kingdomToDie); }