Skip to content

Commit 7dd06b2

Browse files
authored
Merge pull request #190 from EverestAPI/pause_badeline_bosses_trigger
Pause Badeline Bosses Trigger
2 parents 0cde178 + f287264 commit 7dd06b2

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module SpringCollab2020PauseBadelineBossesTrigger
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Trigger "SpringCollab2020/PauseBadelineBossesTrigger" PauseBadelineBossesTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight)
6+
7+
const placements = Ahorn.PlacementDict(
8+
"Pause Badeline Bosses (Spring Collab 2020)" => Ahorn.EntityPlacement(
9+
PauseBadelineBossesTrigger,
10+
"rectangle",
11+
),
12+
)
13+
14+
end
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Celeste.Mod.Entities;
2+
using Microsoft.Xna.Framework;
3+
using Monocle;
4+
using MonoMod.Utils;
5+
using System.Linq;
6+
7+
namespace Celeste.Mod.SpringCollab2020.Triggers {
8+
[CustomEntity("SpringCollab2020/PauseBadelineBossesTrigger")]
9+
class PauseBadelineBossesTrigger : Trigger {
10+
public PauseBadelineBossesTrigger(EntityData data, Vector2 offset) : base(data, offset) { }
11+
12+
public override void OnStay(Player player) {
13+
base.OnStay(player);
14+
15+
// kick the attack coroutines from Badeline bosses so that they don't attack anymore.
16+
foreach (FinalBoss badelineBoss in Scene.Tracker.GetEntities<FinalBoss>()) {
17+
DynData<FinalBoss> bossData = new DynData<FinalBoss>(badelineBoss);
18+
if (badelineBoss.Sprite.CurrentAnimationID == "idle") {
19+
badelineBoss.Remove(bossData.Get<Coroutine>("attackCoroutine"));
20+
}
21+
}
22+
}
23+
24+
public override void OnLeave(Player player) {
25+
base.OnLeave(player);
26+
27+
// add the attack coroutines back.
28+
foreach (FinalBoss badelineBoss in Scene.Tracker.GetEntities<FinalBoss>()) {
29+
Coroutine attackCoroutine = new DynData<FinalBoss>(badelineBoss).Get<Coroutine>("attackCoroutine");
30+
if (!badelineBoss.Components.Contains(attackCoroutine)) {
31+
badelineBoss.Add(attackCoroutine);
32+
}
33+
}
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)