Skip to content

Commit 76c856f

Browse files
committed
Badeline Bounce Direction Trigger
1 parent 762535c commit 76c856f

File tree

4 files changed

+53
-0
lines changed

4 files changed

+53
-0
lines changed

Ahorn/lang/en_gb.lang

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,3 +320,6 @@ placements.entities.SpringCollab2020/ForegroundReflectionTentacles.tooltips.fear
320320

321321
# Static Puffer
322322
placements.entities.SpringCollab2020/StaticPuffer.tooltips.right=The initial direction of the puffer.
323+
324+
# Badeline Bounce Direction Trigger
325+
placements.triggers.SpringCollab2020/BadelineBounceDirectionTrigger.tooltips.bounceLeft=Determines the bounce direction of the player when hitting the Badeline Boss inside of the trigger (checked = to the left, unchecked = to the right).
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module SpringCollab2020BadelineBounceDirectionTrigger
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Trigger "SpringCollab2020/BadelineBounceDirectionTrigger" BadelineBounceDirectionTrigger(x::Integer, y::Integer,
6+
width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight, bounceLeft::Bool=false)
7+
8+
const placements = Ahorn.PlacementDict(
9+
"Badeline Bounce Direction (Spring Collab 2020)" => Ahorn.EntityPlacement(
10+
BadelineBounceDirectionTrigger,
11+
"rectangle",
12+
),
13+
)
14+
15+
end

SpringCollab2020Module.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public override void Load() {
3939
SpeedBasedMusicParamTrigger.Load();
4040
StaticPuffer.Load();
4141
LeaveTheoBehindTrigger.Load();
42+
BadelineBounceDirectionTrigger.Load();
4243
Everest.Events.Level.OnLoadBackdrop += onLoadBackdrop;
4344

4445
DecalRegistry.AddPropertyHandler("scale", (decal, attrs) => {
@@ -83,6 +84,7 @@ public override void Unload() {
8384
SpeedBasedMusicParamTrigger.Unload();
8485
StaticPuffer.Unload();
8586
LeaveTheoBehindTrigger.Unload();
87+
BadelineBounceDirectionTrigger.Unload();
8688
Everest.Events.Level.OnLoadBackdrop -= onLoadBackdrop;
8789
}
8890

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+
5+
namespace Celeste.Mod.SpringCollab2020.Triggers {
6+
[CustomEntity("SpringCollab2020/BadelineBounceDirectionTrigger")]
7+
[Tracked]
8+
class BadelineBounceDirectionTrigger : Trigger {
9+
public static void Load() {
10+
On.Celeste.Player.FinalBossPushLaunch += onPlayerBadelinePushLaunch;
11+
}
12+
13+
public static void Unload() {
14+
On.Celeste.Player.FinalBossPushLaunch -= onPlayerBadelinePushLaunch;
15+
}
16+
17+
private static void onPlayerBadelinePushLaunch(On.Celeste.Player.orig_FinalBossPushLaunch orig, Player self, int dir) {
18+
// if the player is inside a Badeline Bounce Direction Trigger, mod the bounce direction to be the one we want.
19+
BadelineBounceDirectionTrigger trigger = self.CollideFirst<BadelineBounceDirectionTrigger>();
20+
if (trigger != null) {
21+
dir = trigger.bounceLeft ? -1 : 1;
22+
}
23+
24+
orig(self, dir);
25+
}
26+
27+
private bool bounceLeft;
28+
29+
public BadelineBounceDirectionTrigger(EntityData data, Vector2 offset) : base(data, offset) {
30+
bounceLeft = data.Bool("bounceLeft");
31+
}
32+
}
33+
}

0 commit comments

Comments
 (0)