From ca32d38d92540e9e86a495e0ebf2497dde0a470d Mon Sep 17 00:00:00 2001 From: mend-dev Date: Fri, 14 Jul 2023 15:57:28 -0500 Subject: [PATCH] Update 1.3 --- Bosses/BloonariusConfig.cs | 14 ++--- Bosses/LychConfig.cs | 104 ++++++++++++++++++++++++++++++++ Bosses/MiniLychConfig.cs | 53 ++++++++++++++++ Bosses/RogueLych.cs | 85 ++++++++++---------------- Bosses/RogueMiniLych.cs | 35 +++++++++++ Bosses/VortexConfig.cs | 10 +-- LATEST.md | 20 ++++-- ModHelperData.cs | 2 +- Panels/DifficultyChoicePanel.cs | 10 +-- Patches/OnUpgradePatch.cs | 1 - Rounds/RoundGenerator.cs | 4 +- 11 files changed, 257 insertions(+), 81 deletions(-) create mode 100644 Bosses/LychConfig.cs create mode 100644 Bosses/MiniLychConfig.cs create mode 100644 Bosses/RogueMiniLych.cs delete mode 100644 Patches/OnUpgradePatch.cs diff --git a/Bosses/BloonariusConfig.cs b/Bosses/BloonariusConfig.cs index 4d3f0b9..83e002d 100644 --- a/Bosses/BloonariusConfig.cs +++ b/Bosses/BloonariusConfig.cs @@ -11,10 +11,10 @@ public static class BloonariusConfig { // General Stats public static readonly float baseMaxHealth = 7500f; - public static readonly float levelMaxHealthMultiplier = 2f; + public static readonly float levelMaxHealthMultiplier = 3f; - public static readonly float baseSpeed = 0.8f; - public static readonly float levelSpeedAddition = 0f; + public static readonly float baseSpeed = 1.2f; + public static readonly float levelSpeedAddition = 0.1f; // Difficulty Multiplier public static readonly Dictionary difficultyMultipliers = new Dictionary() { @@ -27,7 +27,7 @@ public static class BloonariusConfig { // Strong Spawn public static readonly int baseStrongSpawnCount = 30; - public static readonly float levelStrongSpawnCountAddition = -5; + public static readonly float levelStrongSpawnCountAddition = -4; public static readonly int baseStrongSpawnDistAhead = 40; public static readonly float levelStrongSpawnDistAheadAddition = 0; public static readonly List strongSpawnBloons = new List() { @@ -41,7 +41,7 @@ public static class BloonariusConfig { // Weak Spawn public static readonly int baseWeakSpawnCount = 30; - public static readonly float levelWeakSpawnCountAddition = -10; + public static readonly float levelWeakSpawnCountAddition = -5; public static readonly float baseWeakSpawnTrackMax = 0.4f; public static readonly float levelWeakSpawnTrackMaxAddition = 0; public static readonly float baseWeakSpawnTrackMin = 0.1f; @@ -56,8 +56,8 @@ public static class BloonariusConfig { }; // Bloon Bleed - public static readonly int baseBleedSpawnCount = 10; - public static readonly float levelBleedSpawnCountAddition = 0; + public static readonly int baseBleedSpawnCount = 15; + public static readonly float levelBleedSpawnCountAddition = 5; public static readonly float baseBleedSpawnTrackMax = 0.4f; public static readonly float levelBleedSpawnTrackMaxAddition = 0; public static readonly float baseBLeedSpawnTrackMin = 0.1f; diff --git a/Bosses/LychConfig.cs b/Bosses/LychConfig.cs new file mode 100644 index 0000000..3e27abc --- /dev/null +++ b/Bosses/LychConfig.cs @@ -0,0 +1,104 @@ +using BTD_Mod_Helper.Extensions; +using Il2CppAssets.Scripts.Models.Bloons; +using Il2CppAssets.Scripts.Models.Bloons.Behaviors; +using System.Collections.Generic; +using UnityEngine; + +namespace BTD6Rogue; + +public static class LychConfig { + + // General Stats + public static readonly float baseMaxHealth = 5000f; + public static readonly float levelMaxHealthMultiplier = 2f; + + public static readonly float baseSpeed = 1.2f; + public static readonly float levelSpeedAddition = 0.1f; + + // Difficulty Multiplier + public static readonly Dictionary difficultyMultipliers = new Dictionary() { + ["Poppable"] = 0.7f, + ["Easy"] = 0.85f, + ["Medium"] = 1f, + ["Hard"] = 1.15f, + ["Impoppable"] = 1.3f + }; + + // Time Trigger Model + public static readonly float baseTimeInterval = 12f; + public static readonly float levelTimeIntervalAddition = -0.5f; + + // Absorb Tower Buffs Action Model + public static readonly float baseHealPerBuff = 0; + public static readonly float levelHealPerBuff = 0; + public static readonly float baseHealPercentPerBuff = 0.02f; + public static readonly float levelHealPercentPerBuff = 0; + public static readonly float baseAbsorbBuffRadius = 9999; + public static readonly float levelAbsorbBuffRadius = 0; + public static readonly float baseTowerFreezeDuration = 5; + public static readonly float levelTowerFreezeDuration = 0; + + // Heal on Tower Sell Action Model + public static readonly float baseHealAmount = 0; + public static readonly float levelHealAmount = 0; + public static readonly float baseHealPercentTier = 0.01f; + public static readonly float levelHealPercentTier = 0; + + // Reanimate Moabs Model + public static readonly float baseMaxRbe = 5000; + public static readonly float levelMaxRbe = 0; + public static readonly float basePauseMovementDuration = 1; + public static readonly float levelPauseMovementDuration = 0; + public static readonly float baseReanimatedSpeedMultiplier = 1.5f; + public static readonly float levelReanimatedSpeedMutliplier = 0; + public static readonly float baseReanimatedHealthMultiplier = 3; + public static readonly float levelReanimatedHealthMultiplier = 0; + public static readonly float baseTimeUntilBloonsMove = 1; + public static readonly float levelTimeUntilBloonsMove = 0; + + // Speed Down Model + public static readonly float baseSpeedDownPercent = 0.5f; + public static readonly float levelSpeedDownPercentAddition = 0; + + public static void ApplyLychSettings(BloonModel bloonModel, string difficulty, int level) { + float multiplier = difficultyMultipliers[difficulty]; + + bloonModel.maxHealth = baseMaxHealth * level * multiplier; + if (level == 0) { bloonModel.maxHealth = baseMaxHealth * multiplier; } + + bloonModel.leakDamage = 99999f; + bloonModel.speed = (baseSpeed + (levelSpeedAddition * level)) * multiplier; + bloonModel.Speed = (baseSpeed + (levelSpeedAddition * level)) * multiplier; + + foreach (TimeTriggerModel model in bloonModel.GetBehaviors()) { + model.interval = (baseTimeInterval + (levelTimeIntervalAddition * level)) * multiplier; + } + + foreach (AbsorbTowerBuffsActionModel model in bloonModel.GetBehaviors()) { + model.healPerBuff = Mathf.FloorToInt((baseHealPerBuff + (levelHealPerBuff * level)) * multiplier); + model.healPercentPerBuff = (baseHealPercentPerBuff + (levelHealPercentPerBuff * level)) * multiplier; + model.radius = (baseAbsorbBuffRadius + (levelAbsorbBuffRadius * level)) * multiplier; + model.towerFreezeDuration = (baseTowerFreezeDuration + (levelTowerFreezeDuration * level)) * multiplier; + } + + foreach (HealOnTowerSellActionModel model in bloonModel.GetBehaviors()) { + model.healAmount = Mathf.FloorToInt((baseHealAmount + (levelHealAmount * level)) * multiplier); + model.healPercentForHighestTier = (baseHealPercentTier + (levelHealPercentTier * level)) * multiplier; + } + + foreach (ReanimateMoabsActionModel model in bloonModel.GetBehaviors()) { + model.maxRbe = Mathf.FloorToInt((baseMaxRbe + (levelMaxRbe * level)) * multiplier); + model.pauseMovementDuration = (basePauseMovementDuration + (levelPauseMovementDuration * level)) * multiplier; + model.speedMultiplier = (baseReanimatedSpeedMultiplier + (levelReanimatedSpeedMutliplier * level)) * multiplier; + model.healthMultiplier = (baseReanimatedHealthMultiplier + (levelReanimatedHealthMultiplier * level)) * multiplier; + model.miniMeModelId = "BTD6Rogue-" + difficulty + "RogueMiniLych" + (level + 1); + model.timeUntilBloonsMove = (baseTimeUntilBloonsMove + (levelTimeUntilBloonsMove * level)) * multiplier; + } + + foreach (SetSpeedPercentActionModel model in bloonModel.GetBehaviors()) { + if (model.actionId == "SpeedDown") { + model.percent = (baseSpeedDownPercent + (levelSpeedDownPercentAddition * level)) * multiplier; + } + } + } +} \ No newline at end of file diff --git a/Bosses/MiniLychConfig.cs b/Bosses/MiniLychConfig.cs new file mode 100644 index 0000000..5434ba7 --- /dev/null +++ b/Bosses/MiniLychConfig.cs @@ -0,0 +1,53 @@ +using Il2CppAssets.Scripts.Models.Bloons.Behaviors; +using Il2CppAssets.Scripts.Models.Bloons; +using System.Collections.Generic; +using BTD_Mod_Helper.Extensions; +using UnityEngine; + +namespace BTD6Rogue; + +public static class MiniLychConfig { + + // General Stats + public static readonly float baseMaxHealth = 400; + public static readonly float levelMaxHealthMultiplier = 2f; + + public static readonly float baseSpeed = 10; + public static readonly float levelSpeedAddition = 0f; + + // Difficulty Multiplier + public static readonly Dictionary difficultyMultipliers = new Dictionary() { + ["Poppable"] = 0.7f, + ["Easy"] = 0.85f, + ["Medium"] = 1f, + ["Hard"] = 1.15f, + ["Impoppable"] = 1.3f + }; + + // Time Trigger Model + public static readonly float baseTimeInterval = 10; + public static readonly float levelTimeIntervalAddition = 0; + + // Drain Lives Model + public static readonly float baseDrainLives = 1; + public static readonly float levelDrainLives = 0; + + public static void ApplyMiniLychSettings(BloonModel bloonModel, string difficulty, int level) { + float multiplier = difficultyMultipliers[difficulty]; + + bloonModel.maxHealth = baseMaxHealth * level * multiplier; + if (level == 0) { bloonModel.maxHealth = baseMaxHealth * multiplier; } + + bloonModel.leakDamage = 99999f; + bloonModel.speed = (baseSpeed + (levelSpeedAddition * level)) * multiplier; + bloonModel.Speed = (baseSpeed + (levelSpeedAddition * level)) * multiplier; + + foreach (TimeTriggerModel model in bloonModel.GetBehaviors()) { + model.interval = (baseTimeInterval + (levelTimeIntervalAddition * level)) * multiplier; + } + + foreach (DrainLivesActionModel model in bloonModel.GetBehaviors()) { + model.livesDrained = Mathf.FloorToInt((baseDrainLives + (levelDrainLives * level)) * multiplier); + } + } +} diff --git a/Bosses/RogueLych.cs b/Bosses/RogueLych.cs index f480ce1..a672051 100644 --- a/Bosses/RogueLych.cs +++ b/Bosses/RogueLych.cs @@ -1,58 +1,35 @@ -using BTD_Mod_Helper; -using BTD_Mod_Helper.Api.Bloons; -using BTD_Mod_Helper.Api.Enums; -using BTD_Mod_Helper.Extensions; -using Il2CppAssets.Scripts.Models; +using BTD_Mod_Helper.Api.Bloons; using Il2CppAssets.Scripts.Models.Bloons; -using Il2CppAssets.Scripts.Models.Bloons.Behaviors; -using Il2CppNewtonsoft.Json; namespace BTD6Rogue; -public class RogueLych1 : ModBloon { - public override string BaseBloon => "Lych1"; - - public override void ModifyBaseBloonModel(BloonModel bloonModel) { - bloonModel.maxHealth = 12500; - } -} - -public class RogueLych2 : ModBloon { - public override string BaseBloon => "Lych1"; - - public override void ModifyBaseBloonModel(BloonModel bloonModel) { - bloonModel.maxHealth = 25000; - } -} - -public class RogueLych3 : ModBloon { - public override string BaseBloon => "Lych2"; - - public override void ModifyBaseBloonModel(BloonModel bloonModel) { - bloonModel.maxHealth = 50000; - } -} - -public class RogueLych4 : ModBloon { - public override string BaseBloon => "Lych3"; - - public override void ModifyBaseBloonModel(BloonModel bloonModel) { - bloonModel.maxHealth = 100000; - } -} - -public class RogueLych5 : ModBloon { - public override string BaseBloon => "Lych4"; - - public override void ModifyBaseBloonModel(BloonModel bloonModel) { - bloonModel.maxHealth = 200000; - } -} - -public class RogueLych6 : ModBloon { - public override string BaseBloon => "Lych5"; - - public override void ModifyBaseBloonModel(BloonModel bloonModel) { - bloonModel.maxHealth = 400000; - } -} \ No newline at end of file +public class PoppableRogueLych1 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Poppable", 0); } } +public class PoppableRogueLych2 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Poppable", 1); } } +public class PoppableRogueLych3 : ModBloon { public override string BaseBloon => "Lych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Poppable", 2); } } +public class PoppableRogueLych4 : ModBloon { public override string BaseBloon => "Lych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Poppable", 3); } } +public class PoppableRogueLych5 : ModBloon { public override string BaseBloon => "Lych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Poppable", 4); } } +public class PoppableRogueLych6 : ModBloon { public override string BaseBloon => "Lych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Poppable", 5); } } +public class EasyRogueLych1 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Easy", 0); } } +public class EasyRogueLych2 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Easy", 1); } } +public class EasyRogueLych3 : ModBloon { public override string BaseBloon => "Lych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Easy", 2); } } +public class EasyRogueLych4 : ModBloon { public override string BaseBloon => "Lych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Easy", 3); } } +public class EasyRogueLych5 : ModBloon { public override string BaseBloon => "Lych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Easy", 4); } } +public class EasyRogueLych6 : ModBloon { public override string BaseBloon => "Lych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Easy", 5); } } +public class MediumRogueLych1 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Medium", 0); } } +public class MediumRogueLych2 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Medium", 1); } } +public class MediumRogueLych3 : ModBloon { public override string BaseBloon => "Lych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Medium", 2); } } +public class MediumRogueLych4 : ModBloon { public override string BaseBloon => "Lych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Medium", 3); } } +public class MediumRogueLych5 : ModBloon { public override string BaseBloon => "Lych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Medium", 4); } } +public class MediumRogueLych6 : ModBloon { public override string BaseBloon => "Lych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Medium", 5); } } +public class HardRogueLych1 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Hard", 0); } } +public class HardRogueLych2 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Hard", 1); } } +public class HardRogueLych3 : ModBloon { public override string BaseBloon => "Lych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Hard", 2); } } +public class HardRogueLych4 : ModBloon { public override string BaseBloon => "Lych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Hard", 3); } } +public class HardRogueLych5 : ModBloon { public override string BaseBloon => "Lych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Hard", 4); } } +public class HardRogueLych6 : ModBloon { public override string BaseBloon => "Lych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Hard", 5); } } +public class ImpoppableRogueLych1 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Impoppable", 0); } } +public class ImpoppableRogueLych2 : ModBloon { public override string BaseBloon => "Lych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Impoppable", 1); } } +public class ImpoppableRogueLych3 : ModBloon { public override string BaseBloon => "Lych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Impoppable", 2); } } +public class ImpoppableRogueLych4 : ModBloon { public override string BaseBloon => "Lych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Impoppable", 3); } } +public class ImpoppableRogueLych5 : ModBloon { public override string BaseBloon => "Lych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Impoppable", 4); } } +public class ImpoppableRogueLych6 : ModBloon { public override string BaseBloon => "Lych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { LychConfig.ApplyLychSettings(bloonModel, "Impoppable", 5); } } \ No newline at end of file diff --git a/Bosses/RogueMiniLych.cs b/Bosses/RogueMiniLych.cs new file mode 100644 index 0000000..51adfe6 --- /dev/null +++ b/Bosses/RogueMiniLych.cs @@ -0,0 +1,35 @@ +using BTD_Mod_Helper.Api.Bloons; +using Il2CppAssets.Scripts.Models.Bloons; + +namespace BTD6Rogue; + +public class PoppableRogueMiniLych1 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Poppable", 0); } } +public class PoppableRogueMiniLych2 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Poppable", 1); } } +public class PoppableRogueMiniLych3 : ModBloon { public override string BaseBloon => "MiniLych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Poppable", 2); } } +public class PoppableRogueMiniLych4 : ModBloon { public override string BaseBloon => "MiniLych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Poppable", 3); } } +public class PoppableRogueMiniLych5 : ModBloon { public override string BaseBloon => "MiniLych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Poppable", 4); } } +public class PoppableRogueMiniLych6 : ModBloon { public override string BaseBloon => "MiniLych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Poppable", 5); } } +public class EasyRogueMiniLych1 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Easy", 0); } } +public class EasyRogueMiniLych2 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Easy", 1); } } +public class EasyRogueMiniLych3 : ModBloon { public override string BaseBloon => "MiniLych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Easy", 2); } } +public class EasyRogueMiniLych4 : ModBloon { public override string BaseBloon => "MiniLych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Easy", 3); } } +public class EasyRogueMiniLych5 : ModBloon { public override string BaseBloon => "MiniLych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Easy", 4); } } +public class EasyRogueMiniLych6 : ModBloon { public override string BaseBloon => "MiniLych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Easy", 5); } } +public class MediumRogueMiniLych1 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Medium", 0); } } +public class MediumRogueMiniLych2 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Medium", 1); } } +public class MediumRogueMiniLych3 : ModBloon { public override string BaseBloon => "MiniLych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Medium", 2); } } +public class MediumRogueMiniLych4 : ModBloon { public override string BaseBloon => "MiniLych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Medium", 3); } } +public class MediumRogueMiniLych5 : ModBloon { public override string BaseBloon => "MiniLych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Medium", 4); } } +public class MediumRogueMiniLych6 : ModBloon { public override string BaseBloon => "MiniLych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Medium", 5); } } +public class HardRogueMiniLych1 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Hard", 0); } } +public class HardRogueMiniLych2 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Hard", 1); } } +public class HardRogueMiniLych3 : ModBloon { public override string BaseBloon => "MiniLych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Hard", 2); } } +public class HardRogueMiniLych4 : ModBloon { public override string BaseBloon => "MiniLych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Hard", 3); } } +public class HardRogueMiniLych5 : ModBloon { public override string BaseBloon => "MiniLych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Hard", 4); } } +public class HardRogueMiniLych6 : ModBloon { public override string BaseBloon => "MiniLych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Hard", 5); } } +public class ImpoppableRogueMiniLych1 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Impoppable", 0); } } +public class ImpoppableRogueMiniLych2 : ModBloon { public override string BaseBloon => "MiniLych1"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Impoppable", 1); } } +public class ImpoppableRogueMiniLych3 : ModBloon { public override string BaseBloon => "MiniLych2"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Impoppable", 2); } } +public class ImpoppableRogueMiniLych4 : ModBloon { public override string BaseBloon => "MiniLych3"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Impoppable", 3); } } +public class ImpoppableRogueMiniLych5 : ModBloon { public override string BaseBloon => "MiniLych4"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Impoppable", 4); } } +public class ImpoppableRogueMiniLych6 : ModBloon { public override string BaseBloon => "MiniLych5"; public override void ModifyBaseBloonModel(BloonModel bloonModel) { MiniLychConfig.ApplyMiniLychSettings(bloonModel, "Impoppable", 5); } } \ No newline at end of file diff --git a/Bosses/VortexConfig.cs b/Bosses/VortexConfig.cs index 11105de..b4fea81 100644 --- a/Bosses/VortexConfig.cs +++ b/Bosses/VortexConfig.cs @@ -9,11 +9,11 @@ namespace BTD6Rogue; public static class VortexConfig { // General Stats - public static readonly float baseMaxHealth = 8000f; - public static readonly float levelMaxHealthMultiplier = 2f; + public static readonly float baseMaxHealth = 6000f; + public static readonly float levelMaxHealthMultiplier = 3f; - public static readonly float baseSpeed = 3f; - public static readonly float levelSpeedAddition = 0.1f; + public static readonly float baseSpeed = 2.75f; + public static readonly float levelSpeedAddition = 0.25f; // Difficulty Multiplier public static readonly Dictionary difficultyMultipliers = new Dictionary() { @@ -31,7 +31,7 @@ public static class VortexConfig { public static readonly float levelStunDurationAddition = 2f; // Set Speed Percent Action Model - public static readonly float baseBackupDistance = -100f; + public static readonly float baseBackupDistance = -125f; public static readonly float levelBackupDistanceAddition = 10f; // Destroy Projectiles in Radius Action Model diff --git a/LATEST.md b/LATEST.md index 2b89bd0..babd4db 100644 --- a/LATEST.md +++ b/LATEST.md @@ -1,14 +1,22 @@ -Version 1.1: +Version 1.3: NEW FEATURES: -- Changes in Round Scaling -- No Hero XP Split -- Vortex Boss - -Upcoming in Version 1.2+: - Lych Boss +- Fixed the dumb bug where same tower in a choice messes which upgrades you get +- Removed the scuffed "10 mil" upgrade in favor of actually locking upgrades +- Changed the difficulty icons +- Nerfed Early Game +- Buffed mid-late game + +Upcoming in Version 1.4+: - Dreadbloon Boss - Difficulties effecting costs +- Mod settings +- Modifiers +- Artifacts +- Banana Farmer, Pontoon, and Portable Lake as towers you can get + + General Disclaimer: diff --git a/ModHelperData.cs b/ModHelperData.cs index 3070d84..e7a6d7f 100644 --- a/ModHelperData.cs +++ b/ModHelperData.cs @@ -2,7 +2,7 @@ namespace BTD6Rogue; public static class ModHelperData { public const string WorksOnVersion = "37.0"; - public const string Version = "1.2.1"; + public const string Version = "1.3.0"; public const string Name = "BTD6Rogue"; public const string Description = "Turns BTD6 into a Roguelike"; diff --git a/Panels/DifficultyChoicePanel.cs b/Panels/DifficultyChoicePanel.cs index 0a1e5b4..a5e3274 100644 --- a/Panels/DifficultyChoicePanel.cs +++ b/Panels/DifficultyChoicePanel.cs @@ -56,11 +56,11 @@ public class DifficultyChoicePanel : MonoBehaviour { }; List difficultyIcons = new List() { - VanillaSprites.ModeSelectEasyBtn, - VanillaSprites.ModeSelectEasyBtn, - VanillaSprites.ModeSelectMediumBtn, - VanillaSprites.ModeSelectHardBtn, - VanillaSprites.ImpoppableBtn, + VanillaSprites.Red, + VanillaSprites.Pink, + VanillaSprites.Rainbow, + VanillaSprites.Moab, + VanillaSprites.Bad, }; ModHelperText infoText = inset.AddText(new Info("Title", 0, 400, 500, 500), "Difficulty", 96); diff --git a/Patches/OnUpgradePatch.cs b/Patches/OnUpgradePatch.cs deleted file mode 100644 index 5f28270..0000000 --- a/Patches/OnUpgradePatch.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Rounds/RoundGenerator.cs b/Rounds/RoundGenerator.cs index 0198fb1..2d10b98 100644 --- a/Rounds/RoundGenerator.cs +++ b/Rounds/RoundGenerator.cs @@ -21,9 +21,9 @@ public class RoundGenerator { int bloonGroups = new Random().Next(4) + 3; int mincrease = 0; - int bossInt = new Random().Next(2); + int bossInt = new Random().Next(3); string bossId = BTD6Rogue.mod.overrideBoss; - if (bossInt == 1) { bossId = "RogueVortex"; } + if (bossInt == 0) { bossId = "RogueBloonarius"; } else if (bossInt == 1) { bossId = "RogueVortex"; } else if (bossInt == 2) { bossId = "RogueLych"; } //if (bossInt == 1) { bossId = "RogueDreadbloon"; } else if (bossInt == 2) { bossId = "RogueLych"; } else if (bossInt == 3) { bossId = "RogueVortex"; } if (round + 1 == 20) {