forked from JavidPack/CrystiliumMod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CrystiliumMod.cs
84 lines (72 loc) · 2.23 KB
/
CrystiliumMod.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
using System;
using System.IO;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace CrystiliumMod
{
public class CrystiliumMod : Mod
{
internal static CrystiliumMod instance;
public CrystiliumMod()
{
// We need this for the worldgen chest fix.
if (ModLoader.version < new Version(0, 10, 0, 1))
{
throw new Exception("\nThis mod uses functionality only present in the latest tModLoader. Please update tModLoader to use this mod\n\n");
}
instance = this;
}
public override void Unload()
{
instance = null;
}
public override void AddRecipes()
{
}
public override void UpdateMusic(ref int music)
{
if (Main.gameMenu) return;
Player player = Main.LocalPlayer;
//Don't override the songs in this list!
int[] NoOverride = {MusicID.Boss1, MusicID.Boss2, MusicID.Boss3, MusicID.Boss4, MusicID.Boss5,
MusicID.LunarBoss, MusicID.PumpkinMoon, MusicID.TheTowers, MusicID.FrostMoon, MusicID.GoblinInvasion,
MusicID.PirateInvasion, GetSoundSlot(SoundType.Music, "Sounds/Music/CrystalKing")};
bool playMusic = true;
foreach (int n in NoOverride)
{
if (music == n) playMusic = false;
}
if (player.active && player.GetModPlayer<CrystalPlayer>(this).ZoneCrystal && !Main.gameMenu && playMusic)
{
music = this.GetSoundSlot(SoundType.Music, "Sounds/Music/CrystallineFlows");
}
}
public override void PostSetupContent()
{
Mod bossChecklist = ModLoader.GetMod("BossChecklist");
if (bossChecklist != null)
{
bossChecklist.Call("AddBossWithInfo", "Crystal King", 11.8f, (Func<bool>)(() => CrystalWorld.downedCrystalKing), "Right click on a Crystal Fountain with a [i:" + ItemType<Items.CrypticCrystal>() + "] in your inventory");
}
}
public override void HandlePacket(BinaryReader reader, int whoAmI)
{
CrystiliumModMessageType msgType = (CrystiliumModMessageType)reader.ReadByte();
switch (msgType)
{
case CrystiliumModMessageType.SpawnBossSpecial:
int dps = reader.ReadInt32();
NPC.SpawnOnPlayer(whoAmI, NPCType<NPCs.Bosses.CrystalKing>());
break;
default:
ErrorLogger.Log("CrystiliumMod: Unknown Message type: " + msgType);
break;
}
}
}
enum CrystiliumModMessageType : byte
{
SpawnBossSpecial,
}
}