Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Code/TimeCrystal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,12 @@ private static void LightningRenderer_Update(On.Celeste.LightningRenderer.orig_U

public static float stopTimer;

public static float prevTimer;

public static int stopStage;

public static int prevStage;

private Sprite sprite;

private Sprite flash;
Expand Down
58 changes: 32 additions & 26 deletions Code/VitModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -333,9 +333,18 @@ private static void HookedKeyIceInit()

private void Level_Update(On.Celeste.Level.orig_Update orig, Level self)
{
//timestop crystal
if (!self.Paused)
//time crstal
if (self.Paused) {
//jank because the level becomes "paused" after this update runs, so it's easier to just revert any changes
//that might have happened on the next frame (and we are garunteed to have at least one frame with self.Paused=true)
TimeCrystal.stopStage = TimeCrystal.prevStage;
TimeCrystal.stopTimer = TimeCrystal.prevTimer;
}
if (!(self.FrozenOrPaused || self.unpauseTimer>0))
{
//enable stupid first frame pause reversion
TimeCrystal.prevTimer = TimeCrystal.stopTimer;
TimeCrystal.prevStage = TimeCrystal.stopStage;
if (TimeCrystal.stopTimer > 0f)
{
TimeCrystal.stopTimer -= Engine.DeltaTime;
Expand Down Expand Up @@ -376,11 +385,9 @@ private void Level_Update(On.Celeste.Level.orig_Update orig, Level self)
}
}
}
}


if (TimeCrystal.stopStage > 0)
{
if (!self.Paused)
if (TimeCrystal.stopStage > 0)
{
if (TimeCrystal.timeScaleToSet < 1)
{
Expand All @@ -390,34 +397,33 @@ private void Level_Update(On.Celeste.Level.orig_Update orig, Level self)
{
timeStopScaleTimer -= Engine.DeltaTime;
}
}

float timestop_delta_mult = 1;
if (TimeCrystal.stopStage == 1)
{
timestop_delta_mult = Math.Max(TimeCrystal.timeScaleToSet, 1 - (timeStopScaleTimer / 0.5f));
}
else if (TimeCrystal.stopStage == 2)
{
timestop_delta_mult = Math.Min(1, timeStopScaleTimer / 0.5f);
}
float timestop_delta_mult = 1;
if (TimeCrystal.stopStage == 1)
{
timestop_delta_mult = Math.Max(TimeCrystal.timeScaleToSet, 1 - (timeStopScaleTimer / 0.5f));
}
else if (TimeCrystal.stopStage == 2)
{
timestop_delta_mult = Math.Min(1, timeStopScaleTimer / 0.5f);
}

if (timestop_delta_mult != 1)
{
useTimeStopDelta = true;
timeStopDelta = Engine.DeltaTime * timestop_delta_mult;
timeStopRawDelta = Engine.RawDeltaTime * timestop_delta_mult;
if (timestop_delta_mult != 1)
{
useTimeStopDelta = true;
timeStopDelta = Engine.DeltaTime * timestop_delta_mult;
timeStopRawDelta = Engine.RawDeltaTime * timestop_delta_mult;
}
else
{
useTimeStopDelta = false;
}
}
else
{
useTimeStopDelta = false;
}
}
else
{
useTimeStopDelta = false;
}

//no move trigger
if (NoMoveTrigger.stopTimer > 0f && !self.Paused)
{
Expand Down
2 changes: 1 addition & 1 deletion Code/vitmod.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>vitmod</AssemblyName>
<RootNamespace>vitmod</RootNamespace>
<LangVersion>latest</LangVersion>
Expand Down