Skip to content

Commit dcf352a

Browse files
committed
Lightning strike additions
1 parent 9f7f269 commit dcf352a

File tree

3 files changed

+54
-10
lines changed

3 files changed

+54
-10
lines changed

Ahorn/lang/en_gb.lang

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@ placements.entities.SpringCollab2020/caveWall.tooltips.disableTransitionFading=I
2525

2626
# Lightning Strike Trigger
2727
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.playerOffset=The X offset of the lightning relative to the player's position.
28+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.verticalOffset=The Y offset of the lightning relative to the player's position.
29+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.strikeHeight=The height of the lightning strike. If set to 0, the height will be the screen's height.
2830
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.seed=The seed for the randomizer which generates the lightning strike.
2931
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.delay=The delay, in seconds, between the player entering the trigger and the appearance of the lightning strike.
3032
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.rain=Upon lightning strike, rain will begin falling in the level.
3133
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.flash=Upon lightning strike, the screen will flash white.
34+
placements.triggers.SpringCollab2020/LightningStrikeTrigger.tooltips.constant=If lightning should constantly strike while the player is inside the trigger.
3235

3336
# Variable Crumble Blocks
3437
placements.entities.SpringCollab2020/variableCrumbleBlock.tooltips.texture=The texture of the blocks that are crumbling.2

Ahorn/triggers/lightningStrikeTrigger.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
using ..Ahorn, Maple
44

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)
5+
@mapdef Trigger "SpringCollab2020/LightningStrikeTrigger" LightningStrikeTrigger(x::Integer, y::Integer, width::Integer=Maple.defaultTriggerWidth, height::Integer=Maple.defaultTriggerHeight, playerOffset::Number=0.0, verticalOffset::Number=0.0, strikeHeight::Number=0.0, seed::Integer=0, delay::Number=0.0, rain::Bool=true, flash::Bool=true, constant::Bool=false)
66

77
const placements = Ahorn.PlacementDict(
88
"Lightning Strike (Spring Collab 2020)" => Ahorn.EntityPlacement(

Triggers/LightningStrikeTrigger.cs

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using Monocle;
66
using System.Collections;
7+
using System;
78

89
namespace Celeste.Mod.SpringCollab2020.Triggers {
910
[CustomEntity("SpringCollab2020/LightningStrikeTrigger")]
@@ -12,40 +13,80 @@ class LightningStrikeTrigger : Trigger {
1213

1314
private float PlayerOffset;
1415

16+
private float VerticalOffset;
17+
18+
private float StrikeHeight;
19+
1520
private int Seed;
1621

1722
private float Delay;
1823

1924
private bool Raining;
2025

2126
private bool Flash;
27+
28+
private bool Constant;
29+
30+
private int ConstantTimer = 10;
31+
32+
private Random rand = new Random();
2233

23-
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)) { }
34+
public LightningStrikeTrigger(EntityData data, Vector2 offset) : this(data, offset, data.Float("playerOffset", 0f), data.Float("verticalOffset", 0), data.Float("strikeHeight", 0), data.Int("seed", 0), data.Float("delay", 0f), data.Bool("rain", true), data.Bool("flash", true), data.Bool("constant", false)) { }
2435

25-
public LightningStrikeTrigger(EntityData data, Vector2 offset, float playerOffset, int seed, float delay, bool raining, bool flash) : base (data, offset) {
36+
public LightningStrikeTrigger(EntityData data, Vector2 offset, float playerOffset, float verticalOffset, float height, int seed, float delay, bool raining, bool flash, bool constant) : base (data, offset) {
2637
PlayerOffset = playerOffset;
38+
VerticalOffset = verticalOffset;
39+
StrikeHeight = height;
2740
Seed = seed;
2841
Delay = delay;
2942
Raining = raining;
3043
Flash = flash;
44+
Constant = constant;
3145
}
3246

3347
public override void OnEnter(Player player) {
3448
base.OnEnter(player);
49+
if (!Activated && !Constant) {
50+
Activated = true;
3551

36-
Level level = player.SceneAs<Level>();
52+
Strike(player);
53+
}
54+
}
3755

38-
if (!Activated) {
39-
Activated = true;
40-
level.Add(new LightningStrike(new Vector2(player.X + PlayerOffset, level.Bounds.Top), Seed, level.Bounds.Height, Delay));
41-
Add(new Coroutine(ThunderEffect(level), true));
56+
public override void OnStay(Player player) {
57+
base.OnStay(player);
4258

43-
if (Raining && !level.Background.Backdrops.OfType<RainFG>().Any()) {
44-
level.Background.Backdrops.Add(new RainFG());
59+
if (Constant) {
60+
ConstantTimer -= 1;
61+
62+
if (ConstantTimer <= 0) {
63+
Strike(player);
64+
ConstantTimer = rand.Next(40, 60);
4565
}
4666
}
4767
}
4868

69+
public int GenSeed() {
70+
if (!Constant)
71+
return Seed;
72+
else
73+
return rand.Next(1, 100);
74+
}
75+
76+
public void Strike(Player player) {
77+
Level level = player.SceneAs<Level>();
78+
if (StrikeHeight == 0)
79+
level.Add(new LightningStrike(new Vector2(player.X + PlayerOffset, level.Bounds.Top), GenSeed(), level.Bounds.Height, Delay));
80+
else
81+
level.Add(new LightningStrike(new Vector2(player.X + PlayerOffset, player.Y + VerticalOffset), GenSeed(), StrikeHeight, Delay));
82+
83+
Add(new Coroutine(ThunderEffect(level), true));
84+
85+
if (Raining && !level.Background.Backdrops.OfType<RainFG>().Any()) {
86+
level.Background.Backdrops.Add(new RainFG());
87+
}
88+
}
89+
4990
private IEnumerator ThunderEffect(Level level) {
5091
yield return Delay;
5192
Audio.Play("event:/new_content/game/10_farewell/lightning_strike");

0 commit comments

Comments
 (0)