-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAlchemistFourthPath.cs
More file actions
138 lines (123 loc) · 6.02 KB
/
AlchemistFourthPath.cs
File metadata and controls
138 lines (123 loc) · 6.02 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
137
138
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 AlchemistFourthPath;
[assembly: MelonInfo(typeof(AlchemistFourthPath.AlchemistFourthPath), ModHelperData.Name, ModHelperData.Version, ModHelperData.RepoOwner)]
[assembly: MelonGame("Ninja Kiwi", "BloonsTD6")]
namespace AlchemistFourthPath;
public class AlchemistFourthPath : BloonsTD6Mod
{
public override void OnApplicationStart()
{
ModHelper.Msg<AlchemistFourthPath>("AlchemistFourthPath loaded!");
}
public class FourthPath2 : PathPlusPlus
{
public override string Tower => TowerType.Alchemist;
public override int UpgradeCount => 5;
}
public class LongRangePotions : UpgradePlusPlus<FourthPath2>
{
public override int Cost => 250;
public override int Tier => 1;
public override string Icon => VanillaSprites.GoingTheDistance;
public override string Description => "More range for the alchemist.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
towerModel.range *= 1.5f;
attackModel.range *= 1.5f;
}
}
public class StickySituation : UpgradePlusPlus<FourthPath2>
{
public override int Cost => 550;
public override int Tier => 2;
public override string Icon => VanillaSprites.StickierGlueUpgradeIcon;
public override string Description => "Potions no longer explode but slows bloons rapidly, popping them overtime.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
var proj = Game.instance.model.GetTowerFromId("GlueGunner-210").GetAttackModel().weapons[0].projectile.Duplicate();
attackModel.weapons[0].rate *= 0.5f;
attackModel.weapons[0].projectile = proj;
attackModel.weapons[0].projectile.display = Game.instance.model.GetTowerFromId("Alchemist-020").GetAttackModel().weapons[0].projectile.display;
attackModel.weapons[0].projectile.GetBehavior<SlowModel>().multiplier *= 1.3f;
attackModel.weapons[0].projectile.pierce += 5f;
attackModel.weapons[0].projectile.scale *= 2;
}
}
public class BloonWeakness : UpgradePlusPlus<FourthPath2>
{
public override int Cost => 1275;
public override int Tier => 3;
public override string Icon => VanillaSprites.RelentlessGlueUpgradeIcon;
public override string Description => "Potions weaken bloon defenses, making them take more damage.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
attackModel.weapons[0].projectile.AddBehavior(new AddBonusDamagePerHitToBloonModel("ouchyNerd", "_ouchyNerd", 10f, 6f, 7, true, true, false));
}
}
public class SuperStickyConction : UpgradePlusPlus<FourthPath2>
{
public override int Cost => 4500;
public override int Tier => 4;
public override string Icon => VanillaSprites.GlueSplatterUpgradeIcon;
public override string Description => "Super sticky substances, made with help from the Glue Gunner, allows alot of bloons to slowed at a time.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
var proj = Game.instance.model.GetTowerFromId("GlueGunner-204").GetAttackModel().weapons[0].projectile.Duplicate();
attackModel.weapons[0].projectile.AddBehavior(new CreateProjectileOnContactModel("Projectile_Create23", proj, new ArcEmissionModel("ArcEmissionModel_", 4, 0.0f, 360.0f, null, false), true, false, false));
}
}
public class TheBloonBreakerBrew : UpgradePlusPlus<FourthPath2>
{
public override int Cost => 48362;
public override int Tier => 5;
public override string Icon => VanillaSprites.GlueStrikeUpgradeIcon;
public override string Description => "The bloon breaker brew breaks bloons for maximum damage and slow.";
public override void ApplyUpgrade(TowerModel towerModel)
{
var attackModel = towerModel.GetAttackModel();
attackModel.weapons[0].rate *= 0.4f;
attackModel.weapons[0].projectile.GetBehavior<SlowModel>().multiplier *= 0.4f;
attackModel.weapons[0].projectile.GetBehavior<AddBonusDamagePerHitToBloonModel>().perHitDamageAddition *= 3;
attackModel.weapons[0].projectile.AddBehavior(new WindModel("breakerbloonbrew", 56, 300, 90, true, null, 0, null, 1));
}
}
}