Пример #1
0
 public void RemoveCloneCount(CDouble count)
 {
     if (this.DefenderClones <= count)
     {
         count = this.DefenderClones;
     }
     this.DefenderClones -= count;
     App.State.Clones.RemoveUsedShadowClones(count.ToInt());
     this.DefenderClones.Round();
 }
Пример #2
0
        private int CheckCountNeeded()
        {
            if (App.State.GameSettings.CreationToCreateCount > App.State.PremiumBoni.CreationCountBoni(true) + 1)
            {
                App.State.GameSettings.CreationToCreateCount = App.State.PremiumBoni.CreationCountBoni(true).ToInt() + 1;
            }
            CDouble cDouble = App.State.GameSettings.CreationToCreateCount;

            if (App.State.GameSettings.CreationsNextAtMode == 2 && this.NextAtCount > 0 && this.TotalCreated + cDouble >= this.NextAtCount && App.State.GameSettings.LastCreation == this)
            {
                cDouble = this.NextAtCount - this.TotalCreated;
            }
            if (App.State.GameSettings.CreationsNextAtMode == 1 && this.NextAtCount > 0 && this.Count + cDouble >= this.NextAtCount && App.State.GameSettings.LastCreation == this)
            {
                cDouble = this.NextAtCount - this.Count;
            }
            if (App.State.GameSettings.LastCreation != null && App.State.GameSettings.LastCreation != this)
            {
                List <CreationCost> source       = CreationCost.RequiredCreations(App.State.GameSettings.LastCreation.TypeEnum, (long)App.State.GameSettings.LastCreation.CountToAdd.ToInt(), false);
                CreationCost        creationCost = source.FirstOrDefault((CreationCost x) => x.TypeEnum == this.TypeEnum);
                if (creationCost != null)
                {
                    cDouble = creationCost.CountNeeded;
                }
                if (cDouble > App.State.GameSettings.CreationToCreateCount)
                {
                    cDouble = App.State.GameSettings.CreationToCreateCount;
                }
                if (!this.AutoBuy && cDouble < App.State.GameSettings.CreationToCreateCount)
                {
                    cDouble = App.State.GameSettings.CreationToCreateCount;
                }
            }
            if (cDouble <= 0)
            {
                cDouble = 1;
            }
            if (this.TypeEnum == Creation.CreationType.Shadow_clone || this.TypeEnum == Creation.CreationType.Light || this.TypeEnum == Creation.CreationType.Stone)
            {
                cDouble = App.State.PremiumBoni.CreationCountBoni(true) + 1;
            }
            this.CountToAdd = cDouble;
            return(cDouble.ToInt());
        }
Пример #3
0
        public string CalculateResult(GameState state)
        {
            StringBuilder stringBuilder = new StringBuilder();
            CDouble       cDouble       = 0;
            Pet           pet           = null;

            foreach (Pet current in this.PetsInCampaign)
            {
                if (cDouble == 0 || current.GetTotalGrowth() < cDouble)
                {
                    cDouble = current.GetTotalGrowth();
                    pet     = current;
                }
            }
            CDouble cDouble2  = 0;
            CDouble cDouble3  = 0;
            int     num       = (this.TotalDuration / 3600000).ToInt();
            CDouble cDouble4  = 0;
            CDouble cDouble5  = 0;
            CDouble cDouble6  = 0;
            CDouble cDouble7  = 0;
            CDouble cDouble8  = 0;
            CDouble cDouble9  = 0;
            CDouble cDouble10 = 0;
            CDouble cDouble11 = 0;

            stringBuilder.Append("Your pets ");
            for (int i = 0; i < this.PetsInCampaign.Count; i++)
            {
                stringBuilder.Append(this.PetsInCampaign[i]);
                if (i == this.PetsInCampaign.Count - 2)
                {
                    stringBuilder.Append(" and ");
                }
                else if (i != this.PetsInCampaign.Count - 1)
                {
                    stringBuilder.Append(", ");
                }
            }
            stringBuilder.Append(" finished their " + this.Type + " Campaign.\n\n");
            int     num2      = 0;
            CDouble cDouble12 = 100;

            foreach (Pet current2 in this.PetsInCampaign)
            {
                List <CampaignBoost> campaignBoost = current2.GetCampaignBoost();
                foreach (CampaignBoost current3 in campaignBoost)
                {
                    CDouble rightSide = current3.Value;
                    if (current2.TypeEnum == PetType.Turtle && num == 1)
                    {
                        rightSide = -25;
                    }
                    else if (current2.TypeEnum == PetType.Turtle && num == 12)
                    {
                        rightSide = 25;
                    }
                    if (current3.Type == Campaigns.Level)
                    {
                        cDouble12 += rightSide;
                    }
                }
            }
            foreach (Pet current4 in this.PetsInCampaign)
            {
                List <CampaignBoost> campaignBoost2 = current4.GetCampaignBoost();
                CDouble leftSide  = 100;
                CDouble leftSide2 = 100;
                CDouble cDouble13 = 100;
                CDouble cDouble14 = 100;
                CDouble cDouble15 = 100;
                CDouble leftSide3 = 100;
                foreach (CampaignBoost current5 in campaignBoost2)
                {
                    CDouble rightSide2 = current5.Value;
                    if (current4.TypeEnum == PetType.Turtle && num == 1)
                    {
                        rightSide2 = -25;
                    }
                    else if (current4.TypeEnum == PetType.Turtle && num == 12)
                    {
                        rightSide2 = 25;
                    }
                    if (current5.Type == Campaigns.Growth)
                    {
                        leftSide += rightSide2;
                    }
                    else if (current5.Type == Campaigns.Divinity)
                    {
                        leftSide2 += rightSide2;
                    }
                    else if (current5.Type == Campaigns.Food)
                    {
                        cDouble13 += rightSide2;
                    }
                    else if (current5.Type == Campaigns.Item)
                    {
                        cDouble14 += rightSide2;
                    }
                    else if (current5.Type == Campaigns.Multiplier)
                    {
                        cDouble15 += rightSide2;
                    }
                    else if (current5.Type == Campaigns.GodPower)
                    {
                        leftSide3 += rightSide2;
                    }
                }
                int num3 = UnityEngine.Random.Range(1, 100);
                if (this.RandomChances.Count > num2)
                {
                    num3 = this.RandomChances[num2];
                }
                CDouble cDouble16 = 100;
                if (state.Statistic.UltimatePetChallengesFinished > 0)
                {
                    cDouble16 = 100 + state.Statistic.UltimatePetChallengesFinished * 5;
                    if (cDouble16 > 200)
                    {
                        cDouble16 = 200;
                    }
                }
                switch (this.Type)
                {
                case Campaigns.Growth:
                    if (current4 != pet)
                    {
                        CDouble campaignValue = current4.GetCampaignValue(this.Type, num, state);
                        cDouble2 += campaignValue;
                        stringBuilder.Append(string.Concat(new object[]
                        {
                            current4.Name,
                            " increased the growth gain for ",
                            pet,
                            " by ",
                            campaignValue.ToGuiText(false),
                            ".\n"
                        }));
                    }
                    break;

                case Campaigns.Divinity:
                {
                    CDouble campaignValue2 = current4.GetCampaignValue(this.Type, num, state);
                    cDouble3 += campaignValue2;
                    stringBuilder.Append(current4.Name + " gained " + campaignValue2.GuiText + " divinity.\n");
                    break;
                }

                case Campaigns.Food:
                {
                    CDouble cDouble17 = 0;
                    CDouble cDouble18 = 0;
                    CDouble cDouble19 = 0;
                    int     num4      = (num * 3 * cDouble13 / 100).ToInt();
                    num4 = (num4 * cDouble16 / 100).ToInt();
                    bool flag = num3 <= num4;
                    if (flag)
                    {
                        cDouble19 = 1;
                    }
                    int j = (num * 10 * cDouble13 / 100).ToInt();
                    j = (j * cDouble16 / 100).ToInt();
                    while (j > 100)
                    {
                        j         -= 100;
                        cDouble18 += 1;
                    }
                    bool flag2 = num3 <= j;
                    if (flag2)
                    {
                        cDouble18 += 1;
                    }
                    int k = (num * 20 * cDouble13 / 100).ToInt();
                    k = (k * cDouble16 / 100).ToInt();
                    while (k > 100)
                    {
                        k         -= 100;
                        cDouble17 += 1;
                    }
                    bool flag3 = num3 <= k;
                    if (flag2)
                    {
                        cDouble17 += 1;
                    }
                    if (cDouble19 > 0)
                    {
                        cDouble6 += cDouble19;
                        stringBuilder.Append(current4.Name + " found " + cDouble19.GuiText + " mighty food!\n");
                    }
                    if (cDouble18 > 0)
                    {
                        cDouble5 += cDouble18;
                        stringBuilder.Append(current4.Name + " found " + cDouble18.GuiText + " strong food.\n");
                    }
                    if (cDouble17 > 0)
                    {
                        cDouble4 += cDouble17;
                        stringBuilder.Append(current4.Name + " found " + cDouble17.GuiText + " puny food.\n");
                    }
                    if (cDouble17 == 0)
                    {
                        stringBuilder.Append(current4.Name + " didn't find any food...\n");
                    }
                    break;
                }

                case Campaigns.Item:
                {
                    CDouble campaignValue3 = current4.GetCampaignValue(this.Type, num, state);
                    cDouble8 += campaignValue3;
                    stringBuilder.Append(string.Concat(new object[]
                        {
                            current4.Name,
                            " found ",
                            campaignValue3,
                            " pet stones.\n"
                        }));
                    int  num5  = (num * (campaignValue3 / 100) * cDouble14 / 100).ToInt();
                    bool flag4 = num3 <= num5;
                    int  num6  = num5 / 3;
                    bool flag5 = num3 <= num6;
                    bool flag6 = num3 <= num6 * 2;
                    if (flag5)
                    {
                        cDouble9 = ++cDouble9;
                        stringBuilder.Append(current4.Name + " found a lucky draw!\n");
                    }
                    else if (flag6)
                    {
                        cDouble11 = ++cDouble11;
                        stringBuilder.Append(current4.Name + " found a godly liquid!\n");
                    }
                    else if (flag4)
                    {
                        cDouble10 = ++cDouble10;
                        stringBuilder.Append(current4.Name + " found a chakra pill!\n");
                    }
                    break;
                }

                case Campaigns.Level:
                {
                    CDouble campaignValue4 = current4.GetCampaignValue(this.Type, num, state);
                    CDouble cDouble20      = campaignValue4 * cDouble12 / 100;
                    current4.Level += cDouble20;
                    if (cDouble20 > campaignValue4)
                    {
                        stringBuilder.Append(string.Concat(new string[]
                            {
                                current4.Name,
                                " gained ",
                                campaignValue4.GuiText,
                                " and an additional ",
                                (cDouble20 - campaignValue4).GuiText,
                                " levels!\n"
                            }));
                    }
                    else
                    {
                        stringBuilder.Append(current4.Name + " gained " + campaignValue4.GuiText + " levels!\n");
                    }
                    break;
                }

                case Campaigns.Multiplier:
                {
                    CDouble cDouble21 = 1;
                    if (current4.GetTotalGrowth() > 500)
                    {
                        cDouble21 += 1;
                    }
                    if (current4.GetTotalGrowth() > 1000)
                    {
                        cDouble21 += 1;
                    }
                    if (current4.GetTotalGrowth() > 2500)
                    {
                        cDouble21 += 1;
                    }
                    if (current4.GetTotalGrowth() > 5000)
                    {
                        cDouble21 += 1;
                    }
                    if (current4.GetTotalGrowth() > 10000)
                    {
                        cDouble21 += 1;
                    }
                    if (current4.GetTotalGrowth() > 25000)
                    {
                        cDouble21 += 1;
                    }
                    CDouble cDouble22 = 0.5;
                    if (current4.GetTotalStats() > 10000)
                    {
                        cDouble22 += 0.5;
                    }
                    if (current4.GetTotalStats() > 100000)
                    {
                        cDouble22 += 0.5;
                    }
                    if (current4.GetTotalStats() > 1000000)
                    {
                        cDouble22 += 0.5;
                    }
                    if (current4.GetTotalStats() > 5000000)
                    {
                        cDouble22 += 0.5;
                    }
                    if (current4.GetTotalStats() > 10000000)
                    {
                        cDouble22 += 0.5;
                    }
                    if (current4.GetTotalStats() > 100000000)
                    {
                        cDouble22 += 0.5;
                    }
                    cDouble21 = cDouble21 * num * cDouble15 / 200;
                    cDouble22 = cDouble22 * num * cDouble15 / 500;
                    cDouble22 = cDouble22 * cDouble16 / 100;
                    cDouble21 = cDouble21 * cDouble16 / 100;
                    CDouble petMultiBattle   = state.Multiplier.PetMultiBattle;
                    CDouble petMultiMystic   = state.Multiplier.PetMultiMystic;
                    CDouble petMultiPhysical = state.Multiplier.PetMultiPhysical;
                    state.Multiplier.PetCampainBoost        += cDouble22;
                    state.Multiplier.PetCampainBoostRebirth += cDouble21;
                    state.Multiplier.UpdatePetMultis(state);
                    CDouble cDouble23 = state.Multiplier.PetMultiPhysical - petMultiPhysical;
                    CDouble cDouble24 = state.Multiplier.PetMultiMystic - petMultiMystic;
                    CDouble cDouble25 = state.Multiplier.PetMultiBattle - petMultiBattle;
                    stringBuilder.Append(string.Concat(new string[]
                        {
                            current4.Name,
                            " increased all your pet multipliers by ",
                            cDouble22.ToGuiText(false),
                            " % and added ",
                            cDouble21.GuiText,
                            "% to all pet rebirth multipliers!\n"
                        }));
                    break;
                }

                case Campaigns.GodPower:
                {
                    CDouble campaignValue5 = current4.GetCampaignValue(this.Type, num, state);
                    bool    flag7          = num3 <= campaignValue5;
                    if (flag7)
                    {
                        cDouble7 = ++cDouble7;
                        stringBuilder.Append(current4.Name + " found one god power!\n");
                    }
                    else
                    {
                        stringBuilder.Append(current4.Name + " didn't find any god power...\n");
                    }
                    break;
                }
                }
                num2++;
            }
            if (this.Type == Campaigns.Divinity)
            {
                stringBuilder.Append("You received a total of " + cDouble3.GuiText + "!");
                state.Money += cDouble3;
            }
            else if (this.Type == Campaigns.GodPower)
            {
                if (cDouble7 == 0)
                {
                    stringBuilder.Append("None of your pets found any god power...\n");
                }
                else
                {
                    if (cDouble7 > 10)
                    {
                        cDouble7 = 10;
                    }
                    state.PremiumBoni.GodPowerFromPets += cDouble7;
                    state.PremiumBoni.GodPower         += cDouble7.ToInt();
                    stringBuilder.Append("Your pets found a total of " + cDouble7.GuiText + " god power!\n");
                }
            }
            else if (this.Type == Campaigns.Growth)
            {
                switch (this.SelectedGrowth)
                {
                case Growth.Physical:
                    pet.PhysicalGrowth += cDouble2;
                    stringBuilder.Append(string.Concat(new string[]
                    {
                        "The physical growth for ",
                        pet.Name,
                        " has increased by ",
                        cDouble2.ToGuiText(false),
                        "!"
                    }));
                    break;

                case Growth.Mystic:
                    pet.MysticGrowth += cDouble2;
                    stringBuilder.Append(string.Concat(new string[]
                    {
                        "The mystic growth for ",
                        pet.Name,
                        " has increased by ",
                        cDouble2.ToGuiText(false),
                        "!"
                    }));
                    break;

                case Growth.Battle:
                    pet.BattleGrowth += cDouble2;
                    stringBuilder.Append(string.Concat(new string[]
                    {
                        "The battle growth for ",
                        pet.Name,
                        " has increased by ",
                        cDouble2.ToGuiText(false),
                        "!"
                    }));
                    break;

                case Growth.All:
                {
                    CDouble cDouble26 = cDouble2 / 3;
                    if (cDouble26 < 0.25)
                    {
                        cDouble26 = 0.25;
                    }
                    cDouble26           = Conv.RoundToOneFourth(cDouble26.Double);
                    pet.PhysicalGrowth += cDouble26;
                    pet.MysticGrowth   += cDouble26;
                    pet.BattleGrowth   += cDouble26;
                    stringBuilder.Append(string.Concat(new string[]
                        {
                            "The growth of physical, mystic and battle for ",
                            pet.Name,
                            " has increased by ",
                            cDouble26.ToGuiText(false),
                            "!"
                        }));
                    break;
                }
                }
                pet.CalculateValues();
            }
            else if (this.Type == Campaigns.Food)
            {
                if (cDouble6 > 0)
                {
                    state.Ext.MightyFood += cDouble6;
                    stringBuilder.Append("Your pets found a total of " + cDouble6.GuiText + " mighty food!\n");
                }
                if (cDouble5 > 0)
                {
                    state.Ext.StrongFood += cDouble5;
                    stringBuilder.Append("Your pets found a total of " + cDouble5.GuiText + " strong food!\n");
                }
                if (cDouble4 > 0)
                {
                    state.Ext.PunyFood += cDouble4;
                    stringBuilder.Append("Your pets found a total of " + cDouble4.GuiText + " puny food!\n");
                }
                if (cDouble4 == 0)
                {
                    stringBuilder.Append("None of your pets found any food...\n");
                }
            }
            else if (this.Type == Campaigns.Item)
            {
                state.Ext.PetStones += cDouble8;
                if (state.Statistic.HasStartedUltimatePetChallenge)
                {
                    CDouble cDouble27 = cDouble8 / 10;
                    if (cDouble27 < 1)
                    {
                        cDouble27 = 1;
                    }
                    stringBuilder.Append(string.Concat(new string[]
                    {
                        "Your pets found a total of ",
                        cDouble27.GuiText,
                        " pet pills. Your pets ate them to increase their multi by ",
                        cDouble27.GuiText,
                        ".\n"
                    }));
                    if (state.Ext.PetPowerMultiCampaigns < 1)
                    {
                        state.Ext.PetPowerMultiCampaigns = 1;
                    }
                    state.Ext.PetPowerMultiCampaigns = state.Ext.PetPowerMultiCampaigns * cDouble27;
                }
                stringBuilder.Append("Your pets found a total of " + cDouble8.GuiText + " pet stones.\n");
                if (cDouble9 > 0)
                {
                    stringBuilder.Append("Your pets found a total of " + cDouble9.GuiText + " lucky draws!\n");
                    state.PremiumBoni.LuckyDraws += cDouble9;
                }
                if (cDouble11 > 0)
                {
                    stringBuilder.Append("Your pets found a total of " + cDouble11.GuiText + " godly liquids!\n");
                    state.PremiumBoni.GodlyLiquidCount += cDouble11;
                }
                if (cDouble10 > 0)
                {
                    stringBuilder.Append("Your pets found a total of " + cDouble10.GuiText + " chakra pills!\n");
                    state.PremiumBoni.ChakraPillCount += cDouble10;
                }
            }
            this.CampaingsFinished = ++this.CampaingsFinished;
            this.Cancel();
            return(stringBuilder.ToString());
        }
        private void UBAttack(bool playerSecondAttack)
        {
            if (playerSecondAttack)
            {
                return;
            }
            int num = UnityEngine.Random.Range(0, 100);

            if (this.Being.DamageReduction < 75 && num > 80)
            {
                this.Being.DamageReduction += 10;
                this.InfoText = this.InfoText + "\n" + this.Being.Name + " concentrated his power. His damage reduction increased by 10%";
            }
            else if (this.Being.HPPercent < 15 && num > 67)
            {
                this.Being.HPPercent += 10;
                this.InfoText         = this.InfoText + "\n" + this.Being.Name + " healed himself for 10% of his hp.";
            }
            else if (num > 85 && !this.Being.PowerUp)
            {
                this.Being.PowerUp = true;
                this.InfoText      = this.InfoText + "\n" + this.Being.Name + " concentrated his power.";
            }
            else
            {
                string  text      = this.Being.SkillName1;
                CDouble rightSide = 1;
                if (num > 50)
                {
                    if (num > 80)
                    {
                        rightSide = 2.5;
                        text      = this.Being.SkillName3;
                    }
                    else
                    {
                        rightSide = 1.5;
                        text      = this.Being.SkillName2;
                    }
                }
                if (this.Being.PowerUp)
                {
                    rightSide          = 2;
                    this.Being.PowerUp = false;
                }
                CDouble cDouble = this.Being.BaseCloneDamage / 100 * (100 - this.DamageReduction) * rightSide;
                cDouble = (double)UnityEngine.Random.Range((float)cDouble.ToInt() * 0.9f, (float)cDouble.ToInt() * 1.1f);
                CDouble cDouble2 = this.Being.BaseDamage / 100 * (100 - this.DamageReduction) * rightSide;
                if (!this.DamageReflect)
                {
                    if (num < this.DodgeChance)
                    {
                        CDouble cDouble3 = 5 * (100 - this.Being.DamageReduction) / 100;
                        if (this.DoubleUp)
                        {
                            cDouble3     *= 2;
                            this.DoubleUp = false;
                        }
                        this.DodgeChance      = 0;
                        this.CounterChance    = 0;
                        cDouble3              = cDouble3 * this.Damage / 100;
                        cDouble3              = (double)UnityEngine.Random.Range((float)cDouble3.ToInt() * 0.9f, (float)cDouble3.ToInt() * 1.1f);
                        this.Being.HPPercent -= cDouble3;
                        this.InfoText         = string.Concat(new string[]
                        {
                            this.InfoText,
                            "\n",
                            this.Being.Name,
                            " used ",
                            text,
                            " and you dodged the attack! \nYou countered for ",
                            cDouble3.ToGuiText(true)
                        });
                    }
                    else
                    {
                        if (cDouble > App.State.HomePlanet.ShadowCloneCount)
                        {
                            cDouble   = App.State.HomePlanet.ShadowCloneCount;
                            cDouble2 *= 2;
                        }
                        else
                        {
                            cDouble2 *= 0.5;
                        }
                        App.State.HomePlanet.ShadowCloneCount -= cDouble.ToInt();
                        App.State.Clones.RemoveUsedShadowClones(cDouble.ToInt());
                        App.State.Clones.Count                    -= cDouble.ToInt();
                        App.State.Clones.TotalClonesKilled        += cDouble.ToInt();
                        App.State.Statistic.TotalShadowClonesDied += cDouble;
                        this.PlayerHp -= App.State.MaxHealth * cDouble2 / 100;
                        this.InfoText  = string.Concat(new string[]
                        {
                            this.InfoText,
                            "\n",
                            this.Being.Name,
                            " used ",
                            text,
                            " and killed ",
                            cDouble.ToGuiText(true),
                            " of your clones!\nYou also lost ",
                            cDouble2.ToGuiText(true),
                            " % of your hp."
                        });
                    }
                }
                else
                {
                    cDouble2 = cDouble2 * (100 - this.Being.DamageReduction) / 250;
                    if (cDouble2 > 5)
                    {
                        cDouble2 = 5;
                    }
                    this.Being.HPPercent -= cDouble2;
                    this.DamageReflect    = false;
                    this.InfoText         = string.Concat(new string[]
                    {
                        this.InfoText,
                        "\n",
                        this.Being.Name,
                        " used ",
                        text,
                        " but the damage is reflected back!\n",
                        this.Being.Name,
                        " took ",
                        cDouble2.ToGuiText(true),
                        " % damage."
                    });
                }
            }
            if (this.PlayerHp <= 0 || App.State.HomePlanet.ShadowCloneCount <= 0)
            {
                App.State.CurrentHealth = 0;
                GuiBase.ShowToast("You lost the fight!");
                this.IsFighting = false;
            }
            if (this.Being.HPPercent <= 0)
            {
                this.Being.IsDefeated = true;
                this.Being.isCreating = false;
                this.Being.TimesDefeated++;
                CDouble multiplier = this.Being.GetMultiplier(App.State.HomePlanet.UBMultiplier);
                App.State.HomePlanet.UBMultiplier        += multiplier;
                App.State.PremiumBoni.GodPower           += this.Being.Tier * 10;
                App.State.HomePlanet.TotalGainedGodPower += this.Being.Tier * 10;
                GuiBase.ShowToast(string.Concat(new object[]
                {
                    "You won the fight and earned ",
                    this.Being.Tier * 10,
                    " God Power!\nYour planet multiplier also increased by ",
                    multiplier.ToGuiText(true)
                }));
                if (this.Being.Tier < 5)
                {
                    App.State.HomePlanet.UltimateBeingsV2[this.Being.Tier].IsAvailable = true;
                }
                App.State.PremiumBoni.CheckGP = true;
                this.IsFighting = false;
                HeroImage.SetTitle();
            }
        }
        public void Fight(SkillUB2 skillUsed, bool playerSecondAttack)
        {
            string str  = string.Empty;
            int    num  = 0;
            int    num2 = 0;

            foreach (SkillUB2 current in this.LastUsedSkills)
            {
                if (current.TypeEnum == SkillTypeUBV2.GiveBaseCreation)
                {
                    num++;
                }
                if (current.TypeEnum == SkillTypeUBV2.GiveModifiedCreation)
                {
                    num2++;
                }
            }
            this.LastUsedSkills.Add(skillUsed);
            if (skillUsed.TypeEnum == SkillTypeUBV2.GiveBaseCreation)
            {
                Creation creation = App.State.AllCreations.FirstOrDefault((Creation x) => x.TypeEnum == this.Being.CreationNeeded);
                if (creation.Count < 1)
                {
                    this.LastUsedSkills.RemoveAt(this.LastUsedSkills.Count - 1);
                    str = "You did not have any " + creation.Name + "!";
                    this.UBAttack(playerSecondAttack);
                }
                else
                {
                    if ((this.LastUsedSkills.Count > 2 && this.LastUsedSkills[this.LastUsedSkills.Count - 2].TypeEnum == SkillTypeUBV2.GiveBaseCreation) || (this.LastUsedSkills.Count > 2 && this.LastUsedSkills[this.LastUsedSkills.Count - 2].TypeEnum == SkillTypeUBV2.GiveModifiedCreation))
                    {
                        this.LastUsedSkills.RemoveAt(this.LastUsedSkills.Count - 1);
                        str = this.Being.Name + " destroyed your " + creation.Name + "! He grew tired of it.";
                        this.UBAttack(playerSecondAttack);
                    }
                    else
                    {
                        this.Being.DamageReduction += 3;
                        if (this.Being.DamageReduction > 100)
                        {
                            this.Being.DamageReduction = 100;
                        }
                        str = this.Being.Name + " ate your " + creation.Name + ". His damage reduction was increased by 3%";
                    }
                    Creation expr_20B = creation;
                    expr_20B.Count = --expr_20B.Count;
                }
            }
            else if (skillUsed.TypeEnum == SkillTypeUBV2.GiveModifiedCreation)
            {
                if (this.Being.CreationCount < 1)
                {
                    this.LastUsedSkills.RemoveAt(this.LastUsedSkills.Count - 1);
                    str = "You did not have any " + this.Being.CreationName + "!";
                    this.UBAttack(playerSecondAttack);
                }
                else
                {
                    if (num2 > num * 2)
                    {
                        this.LastUsedSkills.RemoveAt(this.LastUsedSkills.Count - 1);
                        str = this.Being.Name + " destroyed your " + this.Being.CreationName + "! He was suspicious of it!";
                        this.UBAttack(playerSecondAttack);
                    }
                    else if ((this.LastUsedSkills.Count > 2 && this.LastUsedSkills[this.LastUsedSkills.Count - 2].TypeEnum == SkillTypeUBV2.GiveBaseCreation) || (this.LastUsedSkills.Count > 2 && this.LastUsedSkills[this.LastUsedSkills.Count - 2].TypeEnum == SkillTypeUBV2.GiveModifiedCreation))
                    {
                        this.LastUsedSkills.RemoveAt(this.LastUsedSkills.Count - 1);
                        str = this.Being.Name + " destroyed your " + this.Being.CreationName + "! He grew tired of it.";
                        this.UBAttack(playerSecondAttack);
                    }
                    else
                    {
                        this.Being.DamageReduction -= 5;
                        if (this.Being.DamageReduction < 0)
                        {
                            this.Being.DamageReduction = 0;
                        }
                        str = this.Being.Name + " ate your " + this.Being.CreationName + ". His damage reduction was reduced by 5%!";
                    }
                    UltimateBeingV2 expr_402 = this.Being;
                    expr_402.CreationCount = --expr_402.CreationCount;
                }
            }
            else if (skillUsed.TypeEnum == SkillTypeUBV2.AuraBall || skillUsed.TypeEnum == SkillTypeUBV2.IonioiHeroSummon || skillUsed.TypeEnum == SkillTypeUBV2.BigBang)
            {
                CDouble cDouble = skillUsed.Damage * (100 - this.Being.DamageReduction) / 100;
                if (this.DoubleUp)
                {
                    cDouble      *= 2;
                    this.DoubleUp = false;
                }
                cDouble  = cDouble * this.Damage / 100;
                cDouble  = (double)UnityEngine.Random.Range((float)cDouble.ToInt() * 0.9f, (float)cDouble.ToInt() * 1.1f);
                cDouble /= 0.5 + (double)(this.Being.Tier / 2);
                this.Being.HPPercent -= cDouble;
                this.InfoText         = this.InfoText + " and caused " + cDouble.ToGuiText(true) + " % damage.";
                this.UBAttack(playerSecondAttack);
            }
            else
            {
                this.UBAttack(playerSecondAttack);
            }
            this.InfoText = this.InfoText + "\n" + str;
        }
Пример #6
0
        internal string Fight(GameState gameState, int bpAtk, int bpDef, int powersurge, CDouble shadowCloneCount, bool crystalFactoryAttack = false)
        {
            gameState.HomePlanet.BaalPower -= bpAtk + bpDef;
            int           num           = gameState.ClonesPlanetMod + bpAtk * 50 + powersurge;
            int           num2          = gameState.ClonesPlanetMod + bpDef * 50 + powersurge;
            StringBuilder stringBuilder = new StringBuilder();
            int           num3          = 1;
            int           num4          = 0;

            if (crystalFactoryAttack)
            {
                this.crystalFightBuilder = new StringBuilder();
                CultureInfo currentCulture = CultureInfo.CurrentCulture;
                this.crystalFightBuilder.Append(DateTime.Now.ToString(currentCulture) + "\n");
                if (shadowCloneCount == 0)
                {
                    this.crystalFightBuilder.Append(this.Name + " attacked your crystal factory and you lost the fight!");
                }
            }
            while (gameState.CurrentHealth > 0 && shadowCloneCount > 0 && this.HPPercent > 0.0)
            {
                int num5 = 7000;
                if (this.Tier == 2)
                {
                    num5 = 16000;
                }
                else if (this.Tier == 3)
                {
                    num5 = 25000;
                }
                else if (this.Tier == 4)
                {
                    num5 = 40000;
                }
                else if (this.Tier == 5)
                {
                    num5 = 60000;
                }
                int    num6  = this.skillOrder[(num3 - 1) % 10];
                string value = this.SkillName1;
                if (num6 == 3)
                {
                    num5 *= 4;
                    value = this.SkillName3;
                }
                else if (num6 == 2)
                {
                    num5 *= 2;
                    value = this.SkillName2;
                }
                long num7 = (long)UnityEngine.Random.Range((int)((double)num5 * 0.9), (int)((double)num5 * 1.1));
                if (crystalFactoryAttack && gameState.PremiumBoni.CrystalBonusDefender > 0)
                {
                    num7 = (num7 * (100 - gameState.PremiumBoni.CrystalBonusDefender) / 100).ToLong();
                }
                int num8 = (int)((double)(num7 / 4000L) - shadowCloneCount.Double / 40000.0);
                if (num8 < 0)
                {
                    num8 = 0;
                }
                num7 = num7 * 100L / (long)num2;
                if (num7 >= shadowCloneCount)
                {
                    num7 = (long)shadowCloneCount.ToInt();
                    num8 = 100;
                }
                if (crystalFactoryAttack)
                {
                    gameState.Ext.Factory.DefenderClones -= num7;
                }
                else
                {
                    gameState.CurrentHealth -= gameState.MaxHealth / 100 * num8;
                    gameState.HomePlanet.ShadowCloneCount -= num7;
                }
                shadowCloneCount -= (int)num7;
                num4             += (int)num7;
                shadowCloneCount.Round();
                gameState.Clones.RemoveUsedShadowClones((int)num7);
                gameState.Clones.Count                    -= (int)num7;
                gameState.Clones.TotalClonesKilled        += (int)num7;
                gameState.Statistic.TotalShadowClonesDied += num7;
                stringBuilder.Append(num3).Append(". ").Append(this.Name).Append(" uses ").Append(value).Append(", kills ").Append(num7).Append(" Shadow Clones and deals ").Append(num8).Append(" % damage to your hp.\n");
                if (gameState.CurrentHealth == 0 || shadowCloneCount <= 0)
                {
                    stringBuilder.Append("You lost the fight!");
                    this.crystalFightBuilder.Append(this.Name + " attacked your crystal factory and your defender clones lost the fight!");
                }
                else
                {
                    double num9 = shadowCloneCount.Double / 20000.0 / (double)this.Tier + 1.0;
                    if (shadowCloneCount <= 100000)
                    {
                        num9 *= 2.0;
                    }
                    else if (shadowCloneCount <= 150000)
                    {
                        num9 *= 1.8;
                    }
                    else if (shadowCloneCount <= 200000)
                    {
                        num9 *= 1.6;
                    }
                    else if (shadowCloneCount <= 250000)
                    {
                        num9 *= 1.4;
                    }
                    else if (shadowCloneCount <= 300000)
                    {
                        num9 *= 1.2;
                    }
                    num9 = num9 * (double)num / 100.0;
                    string str = "Shadow Clones Power Charge";
                    if (num6 != 1)
                    {
                        num9 *= 1.5;
                        str   = "Ultimate Shadow Clone Blast";
                    }
                    stringBuilder.Append("You used " + str + " and dealt ").Append((int)num9).Append(" % damage to ").Append(this.Name).Append("\n");
                    if (num9 > this.HPPercent)
                    {
                        num9 = this.HPPercent;
                    }
                    this.HPPercent -= num9;
                    if (this.HPPercent <= 0.0)
                    {
                        Statistic expr_585 = gameState.Statistic;
                        expr_585.UBsDefeated = ++expr_585.UBsDefeated;
                        gameState.HomePlanet.UBMultiplier += this.NextMultiplier;
                        this.TimesDefeated++;
                        gameState.HomePlanet.RecalculateMultiplier();
                        CDouble cDouble = 100000;
                        foreach (Fight current in gameState.AllFights)
                        {
                            if (current.IsAvailable)
                            {
                                cDouble *= 2;
                            }
                        }
                        if (gameState.Generator != null && gameState.Generator.IsBuilt)
                        {
                            cDouble += gameState.Generator.DivinitySec * 3600;
                        }
                        cDouble          = cDouble * this.Tier / 2;
                        gameState.Money += cDouble;
                        this.crystalFightBuilder.Append(string.Concat(new object[]
                        {
                            this.Name,
                            " attacked your defender clones and you won the fight!\nYou lost a total of ",
                            num4,
                            " clones and gained "
                        })).Append(cDouble.ToGuiText(true)).Append(" Divinity, your Planet Stat Multiplier increased by ").Append(this.NextMultiplier.ToGuiText(true)).Append(" %");
                        stringBuilder.Append("You won the fight!\nYou gained ").Append(cDouble.ToGuiText(true)).Append(" Divinity, your Planet Stat Multiplier increased by ").Append(this.NextMultiplier.ToGuiText(true)).Append(" %");
                        bool flag = false;
                        if (this.TimesDefeated % 5 == 0 && this.Tier == 1)
                        {
                            flag = true;
                        }
                        else if ((this.TimesDefeated % 5 == 0 && this.Tier == 2) || (this.TimesDefeated % 5 == 3 && this.Tier == 2))
                        {
                            flag = true;
                        }
                        else if (this.TimesDefeated % 5 != 0 && this.Tier == 3 && this.TimesDefeated % 5 != 3 && this.Tier == 3)
                        {
                            flag = true;
                        }
                        else if (this.TimesDefeated % 5 != 3 && this.Tier == 4)
                        {
                            flag = true;
                        }
                        else if (this.Tier == 5)
                        {
                            flag = true;
                        }
                        Log.Info(string.Concat(new object[]
                        {
                            "times defeated: ",
                            this.TimesDefeated,
                            ", drop GP = ",
                            flag
                        }));
                        if (flag)
                        {
                            gameState.PremiumBoni.GodPower++;
                            gameState.HomePlanet.TotalGainedGodPower++;
                            gameState.PremiumBoni.CheckIfGPIsAdjusted();
                            stringBuilder.Append(" and got 1 God Power!");
                            this.crystalFightBuilder.Append("\nYou received 1 God Power.");
                        }
                        if (gameState.IsCrystalFactoryAvailable)
                        {
                            CDouble cDouble2 = this.Tier * 100;
                            gameState.Ext.Factory.Energy += cDouble2;
                            stringBuilder.Append("\nYour crystal factory received " + cDouble2.GuiText + " energy!");
                            this.crystalFightBuilder.Append("\nYour crystal factory received " + cDouble2.GuiText + " energy!");
                        }
                        gameState.HomePlanet.InitUBMultipliers();
                    }
                }
                num3++;
            }
            if (!crystalFactoryAttack)
            {
                return(stringBuilder.ToString());
            }
            return(this.crystalFightBuilder.ToString());
        }
Пример #7
0
        public void UseSkill(Skill skill, bool usedKey = false)
        {
            int num = 500;

            if (usedKey)
            {
                num = 800;
            }
            foreach (Skill current in App.State.AllSkills)
            {
                if (current.Extension.CoolDownCurrent < (long)num)
                {
                    current.Extension.CoolDownCurrent = (long)num;
                }
            }
            SkillExtension extension = skill.Extension;

            extension.CoolDownCurrent = extension.CoolDownBase;
            extension.UsageCount     += 1L;
            if (skill.TypeEnum == Skill.SkillType.time_manipulation)
            {
                this.CurrentEnemy.TimeManipulate();
                CDouble       cDouble       = new CDouble();
                StringBuilder stringBuilder = new StringBuilder("You use ").Append(skill.Name).Append(" and the damages ");
                for (int i = 0; i < 3; i++)
                {
                    if (this.last3EnemyAttacks[i] != null)
                    {
                        cDouble += this.last3EnemyAttacks[i];
                        stringBuilder.Append(this.last3EnemyAttacks[i].ToGuiText(true));
                        if (i == 0)
                        {
                            stringBuilder.Append(", ");
                        }
                        if (i == 1)
                        {
                            stringBuilder.Append(" and ");
                        }
                    }
                }
                this.PlayerHp    += cDouble;
                this.SkillUseText = this.FightTimeString + stringBuilder.ToString() + " never occurred.";
                this.FightingLog.Add(this.SkillUseText);
                return;
            }
            if (extension.DamagePercent > 0)
            {
                int num2 = extension.DamagePercent;
                int num3 = extension.Hitcount;
                if (skill.TypeEnum == Skill.SkillType.unlimited_creation_works)
                {
                    int num4 = 0;
                    foreach (Creation current2 in App.State.AllCreations)
                    {
                        if (current2.CanBuy)
                        {
                            num4++;
                        }
                    }
                    num2 *= num4;
                }
                else if (skill.TypeEnum == Skill.SkillType.ionioi_hero_summon)
                {
                    num3 = App.State.Statistic.HighestGodDefeated.ToInt();
                }
                if (this.DoubleUp)
                {
                    this.DoubleUp = false;
                    num2         *= 2;
                }
                StringBuilder stringBuilder2 = new StringBuilder("You attack ").Append(this.CurrentEnemy.Name).Append(" with ").Append(skill.Name);
                int           num5           = 0;
                for (int j = 0; j < num3; j++)
                {
                    int num6 = UnityEngine.Random.Range(0, 100);
                    if (extension.Hitchance + this.HitchanceBonus > num6)
                    {
                        num5++;
                    }
                }
                this.HitchanceBonus = 0;
                if (num5 > 0)
                {
                    CDouble cDouble2 = skill.Level;
                    if (cDouble2 > 100000)
                    {
                        int num7 = cDouble2.ToInt() - 100000;
                        if (num7 > 1100000)
                        {
                            cDouble2 = 150000 + (num7 - 1100000) / 100;
                        }
                        else
                        {
                            cDouble2 = 100000 + num7 / 20;
                        }
                    }
                    CDouble cDouble3 = this.randomize(cDouble2 * num2 * this.DamageIncrease * App.State.Attack / 1000000000 * num5);
                    Log.Info("playerDamage: " + cDouble3.ToGuiText(true));
                    stringBuilder2.Append(" and hit ").Append(num5).Append(" times for ").Append(cDouble3.ToGuiText(true)).Append(" damage total.");
                    this.TotalPlayerDamage += cDouble3;
                    this.SkillUseText       = this.FightTimeString + stringBuilder2.ToString();
                    if (extension.HealPercent != 0)
                    {
                        StringBuilder stringBuilder3 = new StringBuilder();
                        CDouble       cDouble4       = extension.HealPercent * App.State.MaxHealth / 100;
                        if (this.PlayerHp + cDouble4 > this.PlayerMaxHP)
                        {
                            cDouble4 = this.PlayerMaxHP - this.PlayerHp;
                        }
                        this.PlayerHp += cDouble4;
                        if (cDouble4 > 0)
                        {
                            stringBuilder3.Append("\nYou heal yourself for " + cDouble4.ToGuiText(true)).Append(".");
                        }
                        else
                        {
                            stringBuilder3.Append("\nYou damage yourself for " + (cDouble4 * -1).ToGuiText(true)).Append(".");
                        }
                        this.SkillUseText += stringBuilder3.ToString();
                    }
                    this.FightingLog.Add(this.SkillUseText);
                    if (this.PlayerHp <= 0)
                    {
                        GuiBase.ShowToast("You lose!");
                        this.IsFighting       = false;
                        this.IsBattleFinished = true;
                        this.GetReward(false);
                        return;
                    }
                    if (this.CurrentEnemy.DoDamage(cDouble3))
                    {
                        this.SkillUseText = "You defeated " + this.CurrentEnemy.Name + "!";
                        if (this.currentBattleType == BattleState.BattleType.developer)
                        {
                            this.SkillUseText = this.SkillUseText + " " + this.CurrentEnemy.Name + " evolved into ";
                        }
                        this.DefeatedEnemyCount++;
                        Log.Info("AllEnemies.Count: " + this.AllEnemies.Count);
                        if (this.AllEnemies.Count > 0)
                        {
                            this.CurrentEnemy = this.AllEnemies[0];
                            this.AllEnemies.RemoveAt(0);
                            if (this.currentBattleType == BattleState.BattleType.developer)
                            {
                                this.SkillUseText = this.SkillUseText + this.CurrentEnemy.Name + "!";
                            }
                        }
                        else if (this.currentBattleType == BattleState.BattleType.gods)
                        {
                            CDouble cDouble5 = new CDouble("99999999999999999999999999999999999999999999999999999999000");
                            int     num8     = 1;
                            for (int k = 0; k < this.DefeatedEnemyCount - 28; k++)
                            {
                                num8++;
                                cDouble5 *= 100;
                            }
                            string name = "P. Baal";
                            if (num8 > 1)
                            {
                                name = "P. Baal v " + num8;
                            }
                            List <EnemyData.SpecialAttackChance> list = new List <EnemyData.SpecialAttackChance>();
                            list.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.doubleDamage, 20));
                            list.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.tripleDamage, 10));
                            list.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.fiveDamage, 5));
                            list.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.tenDamage, 3));
                            this.CurrentEnemy = new EnemyData.Enemy(name, string.Empty, cDouble5 * 1000, cDouble5, EnemyData.EnemyType.constantDamage, list);
                        }
                        else if (this.currentBattleType == BattleState.BattleType.endless)
                        {
                            string name2 = this.DefeatedEnemyCount + 1 + " Shadow Clones";
                            List <EnemyData.SpecialAttackChance> list2 = new List <EnemyData.SpecialAttackChance>();
                            list2.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.doubleDamage, 2 + this.DefeatedEnemyCount / 2));
                            list2.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.tripleDamage, 1 + this.DefeatedEnemyCount / 3));
                            list2.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.fiveDamage, 1 + this.DefeatedEnemyCount / 5));
                            list2.Add(new EnemyData.SpecialAttackChance(EnemyData.SpecialAttack.tenDamage, 1 + this.DefeatedEnemyCount / 10));
                            CDouble hp  = App.State.PowerLevel * 5 * (this.DefeatedEnemyCount + 1);
                            CDouble dam = App.State.PowerLevel / 300 * (this.DefeatedEnemyCount + 1);
                            this.CurrentEnemy = new EnemyData.Enemy(name2, string.Empty, hp, dam, EnemyData.EnemyType.constantDamage, list2);
                        }
                        else
                        {
                            GuiBase.ShowToast("You win!");
                            this.IsFighting       = false;
                            this.IsBattleFinished = true;
                            this.GetReward(true);
                        }
                        this.FightingLog.Add(this.SkillUseText);
                    }
                }
                else
                {
                    stringBuilder2.Append(" and your attack misses!");
                    this.SkillUseText = this.FightTimeString + stringBuilder2.ToString();
                    this.FightingLog.Add(this.SkillUseText);
                }
            }
            else
            {
                StringBuilder stringBuilder4 = new StringBuilder(this.FightTimeString + "You use " + skill.Name).Append(" ");
                if (extension.DamageBlock)
                {
                    this.DamageBlock = true;
                    stringBuilder4.Append("and the next incoming damage will be blocked.");
                }
                if (extension.DamageReflect)
                {
                    this.DamageReflect = true;
                    stringBuilder4.Append("and the next incoming damage will be reflected.");
                }
                if (extension.DoubleUp)
                {
                    this.DoubleUp = true;
                    stringBuilder4.Append("and the next damage you do will be doubled.");
                }
                if (extension.GodSpeedModeDuration > 0L)
                {
                    this.GodSpeedModeDuration = extension.GodSpeedModeDuration;
                    stringBuilder4.Append("and you enter god speed mode for " + extension.GodSpeedModeDuration / 1000L + " seconds.");
                }
                if (extension.GearEyesDuration > 0L)
                {
                    this.GearEyesDuration = extension.GearEyesDuration;
                    stringBuilder4.Append("and the enemy is stopped for " + extension.GearEyesDuration / 1000L + " seconds.");
                }
                if (extension.HealPercent != 0)
                {
                    CDouble cDouble6 = extension.HealPercent * App.State.MaxHealth / 100;
                    if (this.PlayerHp + cDouble6 > this.PlayerMaxHP)
                    {
                        cDouble6 = this.PlayerMaxHP - this.PlayerHp;
                    }
                    this.PlayerHp += cDouble6;
                    if (cDouble6 > 0)
                    {
                        stringBuilder4.Append("and you heal yourself for " + cDouble6.ToGuiText(true)).Append(".");
                    }
                    else
                    {
                        stringBuilder4.Append("and you damage yourself for " + (cDouble6 * -1).ToGuiText(true)).Append(".");
                    }
                }
                if (extension.DodgeChance > 0)
                {
                    this.DodgeChance = extension.DodgeChance;
                    stringBuilder4.Append("and have a ").Append(extension.DodgeChance).Append(" % chance to dodge the next attack.");
                }
                if (extension.HitchanceBonus > 0)
                {
                    this.HitchanceBonus = extension.HitchanceBonus;
                    stringBuilder4.Append("and your next attack skill will have a ").Append(this.HitchanceBonus).Append(" % higher chance to hit.");
                }
                if (extension.CounterChance > 0)
                {
                    this.CounterChance = extension.CounterChance;
                    stringBuilder4.Append("and you have a ").Append(extension.CounterChance).Append(" % chance to counter the next attack.");
                }
                if (extension.DamageIncreaseDuration > 0L)
                {
                    stringBuilder4.Append("and your damage is increased by ").Append(extension.DamageIncreasePercent).Append(" % for ").Append(extension.DamageIncreaseDuration / 1000L).Append(" seconds.");
                    this.DamageIncreases.Add(new DamageChange(extension.DamageIncreasePercent, extension.DamageIncreaseDuration));
                }
                if (extension.DamageDecreaseDuration > 0L)
                {
                    stringBuilder4.Append("and the damage you receive is decreased by ").Append(extension.DamageDecreasePercent).Append(" % for ").Append(extension.DamageDecreaseDuration / 1000L).Append(" seconds.");
                    this.DamageDecreases.Add(new DamageChange(extension.DamageDecreasePercent, extension.DamageDecreaseDuration));
                }
                this.SkillUseText = stringBuilder4.ToString();
                this.SkillUseText = this.SkillUseText.Replace('.', ' ').TrimEnd(new char[0]) + ".";
                this.FightingLog.Add(this.SkillUseText);
            }
        }