Skip to content

Commit bd8a8b3

Browse files
committed
Block Jelly Spawn Trigger
1 parent 9396d69 commit bd8a8b3

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module SpringCollab2020BlockJellySpawnTrigger
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Trigger "SpringCollab2020/BlockJellySpawnTrigger" BlockJellySpawnTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight)
6+
7+
const placements = Ahorn.PlacementDict(
8+
"Block Jelly Spawn (Spring Collab 2020)" => Ahorn.EntityPlacement(
9+
BlockJellySpawnTrigger,
10+
"rectangle"
11+
)
12+
)
13+
14+
end

SpringCollab2020Module.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public override void Load() {
2929
DisableIcePhysicsTrigger.Load();
3030
MultiRoomStrawberrySeed.Load();
3131
MadelineSilhouetteTrigger.Load();
32+
BlockJellySpawnTrigger.Load();
3233
}
3334

3435
public override void LoadContent(bool firstLoad) {
@@ -52,6 +53,7 @@ public override void Unload() {
5253
DisableIcePhysicsTrigger.Unload();
5354
MultiRoomStrawberrySeed.Unload();
5455
MadelineSilhouetteTrigger.Unload();
56+
BlockJellySpawnTrigger.Unload();
5557
}
5658

5759
public override void PrepareMapDataProcessors(MapDataFixup context) {

Triggers/BlockJellySpawnTrigger.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using Celeste.Mod.Entities;
2+
using Microsoft.Xna.Framework;
3+
using Monocle;
4+
using System.Linq;
5+
6+
namespace Celeste.Mod.SpringCollab2020.Triggers {
7+
[CustomEntity("SpringCollab2020/BlockJellySpawnTrigger")]
8+
[Tracked]
9+
class BlockJellySpawnTrigger : Trigger {
10+
public static void Load() {
11+
On.Celeste.Level.LoadLevel += onLoadLevel;
12+
}
13+
14+
public static void Unload() {
15+
On.Celeste.Level.LoadLevel -= onLoadLevel;
16+
}
17+
18+
private static void onLoadLevel(On.Celeste.Level.orig_LoadLevel orig, Level self, Player.IntroTypes playerIntro, bool isFromLoader) {
19+
orig(self, playerIntro, isFromLoader);
20+
21+
// if the player spawned in a Block Jelly Spawn Trigger...
22+
if (playerIntro == Player.IntroTypes.Respawn && (self.Tracker.GetEntity<Player>()?.CollideCheck<BlockJellySpawnTrigger>() ?? false)) {
23+
// remove all jellyfish from the room.
24+
foreach (Glider jelly in self.Entities.OfType<Glider>()) {
25+
jelly.RemoveSelf();
26+
}
27+
self.Entities.UpdateLists();
28+
}
29+
}
30+
31+
public BlockJellySpawnTrigger(EntityData data, Vector2 offset) : base(data, offset) { }
32+
}
33+
}

0 commit comments

Comments
 (0)