Skip to content

Commit 4e8d134

Browse files
committed
Add lightning strike trigger
1 parent 26ceb46 commit 4e8d134

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

Ahorn/lang/en_gb.lang

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ placements.entities.SpringCollab2020/diagonalWingedStrawberry.tooltips.checkpoin
66
# Cave Wall
77
placements.entities.SpringCollab2020/caveWall.tooltips.tiletype=Changes the visual appearance of the wall.
88

9+
# Lightning Strike Trigger
10+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.playerOffset=The X offset of the lightning relative to the player's position.
11+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.seed=The seed for the randomizer which generates the lightning strike.
12+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.delay=The delay, in seconds, between the player entering the trigger and the appearance of the lightning strike.
13+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.rain=Upon lightning strike, rain will begin falling in the level.
14+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.flash=Upon lightning strike, the screen will flash white.
15+
916
# Variable Crumble Blocks
1017

1118
placements.entities.SpringCollab2020/variableCrumbleBlock.tooltips.texture=The texture of the blocks that are crumbling.2
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module SpringCollab2020LightningStrikeTrigger
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Trigger "SpringCollab2020/LightningStrikeTrigger" LightningStrikeTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight, playerOffset::Number=0.0, seed::Integer=0, delay::Number=0.0, rain::Bool=true, flash::Bool=true)
6+
7+
const placements = Ahorn.PlacementDict(
8+
"Lightning Strike (Spring Collab 2020)" => Ahorn.EntityPlacement(
9+
LightningStrikeTrigger,
10+
"rectangle",
11+
),
12+
)
13+
14+
end

Triggers/LightningStrikeTrigger.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using Celeste;
2+
using Celeste.Mod.Entities;
3+
using Microsoft.Xna.Framework;
4+
using System.Linq;
5+
using Monocle;
6+
using System.Collections;
7+
8+
namespace Celeste.Mod.SpringCollab2020.Triggers {
9+
[CustomEntity("SpringCollab2020/LightningStrikeTrigger")]
10+
class LightningStrikeTrigger : Trigger {
11+
public LightningStrikeTrigger(EntityData data, Vector2 offset) : this(data, offset, data.Float("playerOffset", 0f), data.Int("seed", 0), data.Float("delay", 0f), data.Bool("rain", true), data.Bool("flash", true)) { }
12+
13+
public LightningStrikeTrigger(EntityData data, Vector2 offset, float playerOffset, int seed, float delay, bool raining, bool flash) : base (data, offset) {
14+
PlayerOffset = playerOffset;
15+
Seed = seed;
16+
Delay = delay;
17+
Raining = raining;
18+
Flash = flash;
19+
}
20+
21+
public override void OnEnter(Player player) {
22+
base.OnEnter(player);
23+
24+
Level level = player.SceneAs<Level>();
25+
26+
if(!Activated) {
27+
Activated = true;
28+
level.Add(new LightningStrike(new Vector2(player.X + PlayerOffset, level.Bounds.Top), Seed, level.Bounds.Height, Delay));
29+
Add(new Coroutine(ThunderEffect(level), true));
30+
31+
if(Raining && !level.Background.Backdrops.OfType<RainFG>().Any()) {
32+
level.Background.Backdrops.Add(new RainFG());
33+
}
34+
}
35+
}
36+
37+
private IEnumerator ThunderEffect(Level level) {
38+
yield return Delay;
39+
Audio.Play("event:/new_content/game/10_farewell/lightning_strike");
40+
level.Shake(0.3f);
41+
42+
if(Flash)
43+
level.Flash(Color.White, false);
44+
45+
yield break;
46+
}
47+
48+
public bool Activated { get; private set; }
49+
50+
private float PlayerOffset;
51+
52+
private int Seed;
53+
54+
private float Delay;
55+
56+
private bool Raining;
57+
58+
private bool Flash;
59+
}
60+
}

0 commit comments

Comments
 (0)