summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/PerkManager.cs
blob: 540b8584817f5f04218b7ec5647e1957e8ab5738 (plain)
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
using System.Collections.Generic;
using UnityEngine;

public class PerkManager : MonoBehaviour
{
	public const int MaxLevel = 1000000;

	public static PerkManager instance;

	[Header("Equippables: ")]
	[SerializeField]
	private List<Equippable> currentlyEquipped;

	[SerializeField]
	private List<Equippable> unlockedEquippables;

	[Header("Leveling system: ")]
	public int xp;

	public int level = 1;

	[SerializeField]
	private List<MetaLevel> metaLevels;

	public float heavyArmor_HpMultiplyer;

	public float heavyArmor_SpeedMultiplyer;

	public float godsLotion_RegenRateMultiplyer;

	public float godsLotion_RegenDelayMultiplyer;

	public float racingHorse_SpeedMultiplyer;

	public float gladiatorSchool_TrainingSpeedMultiplyer;

	public float elliteWarriors_TrainingSpeedMultiplyer;

	public float tauntTheTiger_damageMultiplyer;

	public Equippable tigerGodPerk;

	public float tauntTheTurtle_hpMultiplyer;

	public Equippable turtleGodPerk;

	public float tauntTheFalcon_speedMultiplyer;

	public float tauntTheFalcon_chasePlayerTimeMultiplyer;

	public Equippable falconGodPerk;

	public Equippable ratGodPerk;

	public Equippable warriorMode;

	public float warriorModeAllyDmgMulti = 0.5f;

	public float warriorModeSelfDmgMultiMax = 2f;

	public Equippable commanderMode;

	public float commanderModeAllyDmgMulti = 1.5f;

	public float commanderModeSelfDmgMulti = 0.5f;

	public Equippable glassCanon;

	public float glassCanon_dmgMulti = 1.5f;

	public Equippable healintSpirits;

	public float healingSpirits_healMulti = 1.5f;

	public Equippable iceMagic;

	public float iceMagic_AdditionalsSlowMutli = 0.75f;

	public float iceMagic_SlowDurationMulti = 2f;

	public Equippable rangedResistence;

	public float rangedResistence_AmountMulti = 1.3f;

	public Equippable meleeResistence;

	public float meleeResistence_AmountMulti = 1.3f;

	public float powerTower_attackSpeedBonus = 2f;

	public Equippable treasureHunter;

	public int treasureHunterGoldAmount = 40;

	public Equippable cheeseGod;

	public Equippable godOfDeath;

	public float godOfDeath_playerRespawnMultiplyer = 2f;

	public Equippable destructionGod;

	public List<Equippable> UnlockedEquippables => unlockedEquippables;

	public List<Equippable> CurrentlyEquipped => currentlyEquipped;

	public List<MetaLevel> MetaLevels => metaLevels;

	public MetaLevel NextMetaLevel
	{
		get
		{
			if (level - 1 >= metaLevels.Count || level >= 1000000)
			{
				return null;
			}
			return metaLevels[level - 1];
		}
	}

	public bool WarriorModeActive => IsEquipped(warriorMode);

	public bool CommanderModeActive => IsEquipped(commanderMode);

	public bool GlassCanonActive => IsEquipped(glassCanon);

	public bool HealingSpiritsActive => IsEquipped(healintSpirits);

	public bool IceMagicActive => IsEquipped(iceMagic);

	public bool RangedResistenceActive => IsEquipped(rangedResistence);

	public bool MeleeResistenceActive => IsEquipped(meleeResistence);

	public bool TreasureHunterActive => IsEquipped(treasureHunter);

	public bool CheeseGodActive => IsEquipped(cheeseGod);

	public bool GodOfDeathActive => IsEquipped(godOfDeath);

	public bool DestructionGodActive => IsEquipped(destructionGod);

	private void Awake()
	{
		if ((bool)instance)
		{
			Object.Destroy(base.gameObject);
			return;
		}
		instance = this;
		Object.DontDestroyOnLoad(base.transform.root.gameObject);
	}

	public static bool IsEquipped(Equippable _perk)
	{
		if (!instance)
		{
			return false;
		}
		return instance.currentlyEquipped.Contains(_perk);
	}

	public static void SetEquipped(Equippable _perk, bool _equipped)
	{
		if (!instance)
		{
			return;
		}
		if (_equipped)
		{
			if (!instance.currentlyEquipped.Contains(_perk))
			{
				instance.currentlyEquipped.Add(_perk);
			}
		}
		else if (instance.currentlyEquipped.Contains(_perk))
		{
			instance.currentlyEquipped.Remove(_perk);
		}
	}

	public void CallAfterLoadToUnlockPerksAndStuff()
	{
		level = Mathf.Min(level, 1000000);
		for (int i = 0; i < Mathf.Min(metaLevels.Count, level - 1); i++)
		{
			if (!unlockedEquippables.Contains(metaLevels[i].reward) || metaLevels[i].reward.GetType() == typeof(PerkPoint))
			{
				unlockedEquippables.Add(metaLevels[i].reward);
			}
		}
	}
}