Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
257 additions
and
81 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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<string, float> difficultyMultipliers = new Dictionary<string, float>() { | ||
["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<TimeTriggerModel>()) { | ||
model.interval = (baseTimeInterval + (levelTimeIntervalAddition * level)) * multiplier; | ||
} | ||
|
||
foreach (AbsorbTowerBuffsActionModel model in bloonModel.GetBehaviors<AbsorbTowerBuffsActionModel>()) { | ||
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<HealOnTowerSellActionModel>()) { | ||
model.healAmount = Mathf.FloorToInt((baseHealAmount + (levelHealAmount * level)) * multiplier); | ||
model.healPercentForHighestTier = (baseHealPercentTier + (levelHealPercentTier * level)) * multiplier; | ||
} | ||
|
||
foreach (ReanimateMoabsActionModel model in bloonModel.GetBehaviors<ReanimateMoabsActionModel>()) { | ||
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<SetSpeedPercentActionModel>()) { | ||
if (model.actionId == "SpeedDown") { | ||
model.percent = (baseSpeedDownPercent + (levelSpeedDownPercentAddition * level)) * multiplier; | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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<string, float> difficultyMultipliers = new Dictionary<string, float>() { | ||
["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<TimeTriggerModel>()) { | ||
model.interval = (baseTimeInterval + (levelTimeIntervalAddition * level)) * multiplier; | ||
} | ||
|
||
foreach (DrainLivesActionModel model in bloonModel.GetBehaviors<DrainLivesActionModel>()) { | ||
model.livesDrained = Mathf.FloorToInt((baseDrainLives + (levelDrainLives * level)) * multiplier); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
} | ||
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); } } |
Oops, something went wrong.