-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSubCommanderTier.cs
More file actions
136 lines (126 loc) · 5.78 KB
/
SubCommanderTier.cs
File metadata and controls
136 lines (126 loc) · 5.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using MelonLoader;
using BTD_Mod_Helper;
using PathsPlusPlus;
using Il2CppAssets.Scripts.Models.Towers;
using BTD_Mod_Helper.Api.Enums;
using Il2Cpp;
using Il2CppAssets.Scripts.Models.Towers.Projectiles.Behaviors;
using JetBrains.Annotations;
using BTD_Mod_Helper.Extensions;
using Il2CppAssets.Scripts.Models.Towers.Behaviors.Attack;
using Il2CppSystem.IO;
using Il2CppAssets.Scripts.Simulation.Towers.Behaviors;
using Il2CppAssets.Scripts.Models.Towers.Behaviors;
using Il2CppAssets.Scripts.Utils;
using System.Collections.Generic;
using System.Linq;
using Il2CppAssets.Scripts.Models.TowerSets;
using BTD_Mod_Helper.Api.Towers;
using Il2CppAssets.Scripts.Unity;
using Il2CppAssets.Scripts.Unity.Display;
using BTD_Mod_Helper.Api.Display;
using UnityEngine;
using Il2CppAssets.Scripts.Models.GenericBehaviors;
using Il2CppAssets.Scripts.Simulation.SMath;
using Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.Behaviors;
using Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities;
using Il2CppAssets.Scripts.Models.Towers.TowerFilters;
using Il2CppAssets.Scripts.Models.Map;
using Il2CppAssets.Scripts.Models.Towers.Weapons.Behaviors;
using Il2CppAssets.Scripts.Models.Towers.Behaviors.Emissions;
using Il2CppAssets.Scripts.Simulation.Towers;
using Il2CppAssets.Scripts.Models.Towers.Filters;
using System.Runtime.CompilerServices;
using Il2CppAssets.Scripts.Models.Bloons.Behaviors;
using Il2CppAssets.Scripts.Models.Towers.Behaviors.Attack.Behaviors;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using SubCommanderTier;
[assembly: MelonInfo(typeof(SubCommanderTier.SubCommanderTier), ModHelperData.Name, ModHelperData.Version, ModHelperData.RepoOwner)]
[assembly: MelonGame("Ninja Kiwi", "BloonsTD6")]
namespace SubCommanderTier;
public class SubCommanderTier : BloonsTD6Mod
{
public override void OnApplicationStart()
{
ModHelper.Msg<SubCommanderTier>("SubCommanderTier loaded!");
}
public class RateIcon : ModBuffIcon
{
protected override int Order => 1;
public override string Icon => "navyForce";
public override int MaxStackSize => 0;
}
public class SubTopPath : PathPlusPlus
{
public override string Tower => TowerType.MonkeySub;
public override int ExtendVanillaPath => 2;
public override int UpgradeCount => 8; // Adding one new upgrade to bring the total upgrades up to 6
}
public class NavalMissles : UpgradePlusPlus<SubTopPath>
{
public override int Cost => 18000;
public override int Tier => 6;
public override string Icon => "nukeIcon";
public override string Description => "Deals increased damage to ceramics with missles.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
var missle = Game.instance.model.GetTowerFromId("BombShooter-320").GetWeapon().Duplicate();
missle.rate = 0.05f;
attackModel.AddWeapon(missle);
}
}
public class EliteSubmarine : UpgradePlusPlus<SubTopPath>
{
public override int Cost => 34000;
public override int Tier => 7;
public override string Icon => "navyForce";
public override string Description => "Double damage for all attacks. Offers the naval force buff which increases attack speed of most water based towers.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
foreach (var dmgModel in towerModel.GetDescendants<DamageModel>().ToArray())
{
dmgModel.damage *= 2;
}
var buff = new RateSupportModel("rate_", 0.1f, true, "idk", true, 1, new Il2CppReferenceArray<TowerFilterModel>(new TowerFilterModel[]
{
new FilterInBaseTowerIdModel("FilterInBaseTowerIdModel_",
new Il2CppStringArray(new[] { TowerType.MonkeySub, TowerType.MonkeyBuccaneer, TowerType.AdmiralBrickell }))
}), null, null, false);
buff.ApplyBuffIcon<RateIcon>();
towerModel.AddBehavior(buff);
}
}
public class navyWarHead : UpgradePlusPlus<SubTopPath>
{
public override int Cost => 250000;
public override int Tier => 8;
public override string Icon => "navyWarHead";
public override string Description => "MANY more damage and unlocks the warhead ability which temporarily increases damage by ALOT. All buffs are even better!";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
foreach (var dmgModel in towerModel.GetDescendants<DamageModel>().ToArray())
{
dmgModel.damage *= 9;
}
var abilityModel = Game.instance.model.GetTowerFromId("BoomerangMonkey-040").GetAbility().Duplicate();
abilityModel.GetBehavior<TurboModel>().extraDamage += 275;
abilityModel.RemoveBehavior<CreateSoundOnAbilityModel>();
abilityModel.icon = GetSpriteReference("navyWarHead");
towerModel.AddBehavior(abilityModel);
towerModel.GetBehavior<SubCommanderSupportModel>().pierceIncrease += 20;
towerModel.GetBehavior<SubCommanderSupportModel>().damageScale = 20;
towerModel.GetBehavior<RateSupportModel>().multiplier = 0.02f;
abilityModel.GetBehavior<TurboModel>().projectileDisplay.assetPath = CreatePrefabReference<stuffff>();
}
}
public class stuffff : ModDisplay
{
public override string BaseDisplay => Game.instance.model.GetTowerFromId("BombShooter-320").GetWeapon().projectile.display.guidRef;
public override void ModifyDisplayNode(UnityDisplayNode node)
{
}
}
}