-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMNPC.cs
83 lines (78 loc) · 2.67 KB
/
MNPC.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
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ModLoader;
using Terraria.ID;
namespace HavenMod
{
public class MNPC : GlobalNPC
{
public override void EditSpawnPool(IDictionary<int, float> pool, NPCSpawnInfo spawnInfo)
{
if (MWorld.dungueonInvasionUp && (Main.invasionX == (double)Main.spawnTileX))
{
//Clear pool so that only the stuff you want spawns
pool.Clear();
if (NPC.downedPlantBoss)
{
//key = NPC ID | value = spawn weight
//pool.add(key, value)
if (Main.rand.Next(5) > 0)
{
foreach (int i in DungueonInvasion.HardmodeInvaders)
{
pool.Add(i, 1f);
}
}
else
{
foreach (int i in DungueonInvasion.PreHardmodeInvaders)
{
pool.Add(i, 1f);
}
}
}
else
{
foreach (int i in DungueonInvasion.PreHardmodeInvaders)
{
pool.Add(i, 1f);
}
}
}
}
public override void EditSpawnRate(Player player, ref int spawnRate, ref int maxSpawns)
{
//Change spawn stuff if invasion up and invasion at spawn
if (MWorld.dungueonInvasionUp && (Main.invasionX == (double)Main.spawnTileX))
{
spawnRate = 150;
maxSpawns = 100;
}
}
public override void PostAI(NPC npc)
{
//Changes NPCs so they do not despawn when invasion up and invasion at spawn
if (MWorld.dungueonInvasionUp && (Main.invasionX == (double)Main.spawnTileX))
{
npc.timeLeft = 1000;
}
}
public override void NPCLoot(NPC npc)
{
//When an NPC (from the invasion list) dies, add progress by decreasing size
if (MWorld.dungueonInvasionUp)
{
int[] FullList = DungueonInvasion.GetFullInvaderList();
foreach (int invader in FullList)
{
if (npc.type == invader)
{
Main.invasionSize -= 1;
}
}
}
}
}
}