forked from MadYeling/Fargowiltas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MutantSummonTracker.cs
106 lines (95 loc) · 5.54 KB
/
MutantSummonTracker.cs
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
using Fargowiltas.Items.Summons;
using Fargowiltas.Items.Summons.Mutant;
using Fargowiltas.Items.Summons.VanillaCopy;
using System;
using System.Collections.Generic;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace Fargowiltas
{
internal class MutantSummonTracker
{
public const float KingSlime = 1f;
public const float EyeOfCthulhu = 2f;
public const float EaterOfWorlds = 3f;
public const float QueenBee = 4f;
public const float Skeletron = 5f;
public const float DeerClops = 6f;
public const float WallOfFlesh = 7f;
public const float QueenSlime = 8f;
public const float TheTwins = 9f;
public const float TheDestroyer = 10f;
public const float SkeletronPrime = 11f;
public const float Plantera = 12f;
public const float Golem = 13f;
public const float EmpressOfLight = 14f;
public const float DukeFishron = 15f;
public const float LunaticCultist = 16f;
public const float Moonlord = 17f;
internal List<MutantSummonInfo> SortedSummons;
internal List<MutantSummonInfo> EventSummons;
internal bool SummonsFinalized = false;
public MutantSummonTracker()
{
Fargowiltas.summonTracker = this;
InitializeVanillaSummons();
}
private void InitializeVanillaSummons()
{
SortedSummons = new List<MutantSummonInfo> {
// Vanilla bosses
new MutantSummonInfo(KingSlime, ModContent.ItemType<SlimyCrown>(), () => NPC.downedSlimeKing, Item.buyPrice(gold: 5)),
new MutantSummonInfo(EyeOfCthulhu, ModContent.ItemType<SuspiciousEye>(), () => NPC.downedBoss1, Item.buyPrice(gold: 8)),
new MutantSummonInfo(EaterOfWorlds, ModContent.ItemType<WormyFood>(), () => NPC.downedBoss2, Item.buyPrice(gold: 10)),
new MutantSummonInfo(EaterOfWorlds, ModContent.ItemType<GoreySpine>(), () => NPC.downedBoss2, Item.buyPrice(gold: 10)),
new MutantSummonInfo(DeerClops, ModContent.ItemType<DeerThing2>(), () => NPC.downedDeerclops, Item.buyPrice(gold: 12)),
new MutantSummonInfo(QueenBee, ModContent.ItemType<Abeemination2>(), () => NPC.downedQueenBee, Item.buyPrice(gold: 15)),
new MutantSummonInfo(Skeletron, ModContent.ItemType<SuspiciousSkull>(), () => NPC.downedBoss3, Item.buyPrice(gold: 15)),
new MutantSummonInfo(WallOfFlesh, ModContent.ItemType<FleshyDoll>(), () => Main.hardMode , Item.buyPrice(gold: 20)),
new MutantSummonInfo(WallOfFlesh + 0.0001f, ModContent.ItemType<DeathBringerFairy>(), () => Main.hardMode, Item.buyPrice(gold: 50)),
new MutantSummonInfo(QueenSlime, ModContent.ItemType<JellyCrystal>(), () => NPC.downedQueenSlime, Item.buyPrice(gold: 25)),
new MutantSummonInfo(TheTwins, ModContent.ItemType<MechEye>(), () => NPC.downedMechBoss2, Item.buyPrice(gold: 40)),
new MutantSummonInfo(TheDestroyer, ModContent.ItemType<MechWorm>(), () => NPC.downedMechBoss1, Item.buyPrice(gold: 40)),
new MutantSummonInfo(SkeletronPrime, ModContent.ItemType<MechSkull>(), () => NPC.downedMechBoss3, Item.buyPrice(gold: 40)),
new MutantSummonInfo(SkeletronPrime + 0.0001f, ModContent.ItemType<MechanicalAmalgam>(), () => NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3, Item.buyPrice(platinum: 1)),
new MutantSummonInfo(Plantera, ModContent.ItemType<PlanterasFruit>(), () => NPC.downedPlantBoss, Item.buyPrice(gold: 50)),
new MutantSummonInfo(Golem, ModContent.ItemType<LihzahrdPowerCell2>(), () => NPC.downedGolemBoss, Item.buyPrice(gold: 60)),
new MutantSummonInfo(EmpressOfLight, ModContent.ItemType<PrismaticPrimrose>(), () => NPC.downedEmpressOfLight, Item.buyPrice(gold: 60)),
new MutantSummonInfo(DukeFishron, ModContent.ItemType<TruffleWorm2>(), () => NPC.downedFishron, Item.buyPrice(gold: 60)),
new MutantSummonInfo(LunaticCultist, ModContent.ItemType<CultistSummon>(), () => NPC.downedAncientCultist, Item.buyPrice(gold: 75)),
new MutantSummonInfo(Moonlord, ModContent.ItemType<CelestialSigil2>(), () => NPC.downedMoonlord, Item.buyPrice(platinum: 1)),
new MutantSummonInfo(Moonlord + 0.0001f, ModContent.ItemType<MutantVoodoo>(), () => NPC.downedMoonlord, Item.buyPrice(platinum: 2))
};
EventSummons = new List<MutantSummonInfo>();
}
internal void FinalizeSummonData()
{
SortedSummons.Sort((x, y) => x.progression.CompareTo(y.progression));
SummonsFinalized = true;
}
internal void AddSummon(float progression, int itemId, Func<bool> downed, int price)
{
SortedSummons.Add(new MutantSummonInfo(progression, itemId, downed, price));
}
internal void AddEventSummon(float progression, int itemId, Func<bool> downed, int price)
{
EventSummons.Add(new MutantSummonInfo(progression, itemId, downed, price));
}
}
internal class MutantSummonInfo
{
internal float progression;
internal string modSource;
internal int itemId;
internal Func<bool> downed;
internal int price;
internal MutantSummonInfo(float progression, int itemId, Func<bool> downed, int price)
{
this.progression = progression;
this.itemId = itemId;
this.downed = downed;
this.price = price;
}
}
}