Esempio n. 1
0
 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;
 }
Esempio n. 3
0
 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));
         }
     }
 }
Esempio n. 4
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();
 }
Esempio n. 5
0
 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;
             }
         }
     }
 }
Esempio n. 6
0
    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;
                    }
                }
            }
        }
    }
Esempio n. 7
0
    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);
    }
Esempio n. 8
0
    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;
    }
Esempio n. 9
0
    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!");
        }
    }
Esempio n. 10
0
    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;
                    }
                }
            }
        }
    }
Esempio n. 11
0
 public void MakeKingdomDead(KingdomTest kingdomToDie)
 {
     this.kingdoms.Remove(kingdomToDie.kingdomTile);
     RemoveRelationshipToOtherKingdoms(kingdomToDie);
 }