private static IEnumerator RumbleTrigger_RumbleRoutine(On.Celeste.RumbleTrigger.orig_RumbleRoutine orig, RumbleTrigger self, float delay) { DynData <RumbleTrigger> triggerData = new DynData <RumbleTrigger>(self); yield return(new SwapImmediately(orig(self, delay))); foreach (DreamCrumbleWallOnRumble crumble in triggerData.Get <List <DreamCrumbleWallOnRumble> >(RUMBLETRIGGER_DREAMCRUMBLES)) { crumble.Break(); yield return(0.05f); } }
private static void RumbleTrigger_Awake(On.Celeste.RumbleTrigger.orig_Awake orig, RumbleTrigger self, Scene scene) { orig(self, scene); DynData <RumbleTrigger> triggerData = new DynData <RumbleTrigger>(self); bool constrainHeight = triggerData.Get <bool>("constrainHeight"); // Reflection is slow float top = constrainHeight ? triggerData.Get <float>("top") : 0; float bottom = constrainHeight ? triggerData.Get <float>("bottom") : 0; float left = triggerData.Get <float>("left"); float right = triggerData.Get <float>("right"); bool triggered = triggerData.Get <bool>("persistent") && (scene as Level).Session.GetFlag(triggerData.Get <EntityID>("id").ToString()); List <DreamCrumbleWallOnRumble> crumbles = new List <DreamCrumbleWallOnRumble>(); foreach (Entity entity in scene.Tracker.GetEntities <DreamCrumbleWallOnRumble>()) { DreamCrumbleWallOnRumble crumble = (DreamCrumbleWallOnRumble)entity; if ((!constrainHeight || (crumble.Y >= top && crumble.Y <= bottom)) && crumble.X >= left && crumble.X <= right) { if (triggered) { crumble.RemoveSelf(); } else { crumbles.Add(crumble); } } } // Slightly unsafe, but only if someone else does some weird stuff with RumbleTriggers if (!triggered) { triggerData[RUMBLETRIGGER_DREAMCRUMBLES] = crumbles; } }
private void onRumbleTriggerRenderDisplacement(On.Celeste.RumbleTrigger.orig_RenderDisplacement orig, RumbleTrigger self) { if (Settings.ScreenShakeIntensity == 10) { orig(self); return; } float tempRumble = (float)rumbleInfo.GetValue(self); rumbleInfo.SetValue(self, tempRumble * Settings.ScreenShakeIntensity / 10f); orig(self); rumbleInfo.SetValue(self, tempRumble); }