public void RemoveCloneCount(CDouble count) { if (this.DefenderClones <= count) { count = this.DefenderClones; } this.DefenderClones -= count; App.State.Clones.RemoveUsedShadowClones(count.ToInt()); this.DefenderClones.Round(); }
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()); }
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; }
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()); }
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); } }