private static void ctor(On.Celeste.Player.orig_ctor orig, Celeste.Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); var conveyorMover = new ConveyorMover(); conveyorMover.OnMove = (amount) => { if (self.StateMachine.State != 1) { self.MoveH(amount * Engine.DeltaTime); } }; self.Add(conveyorMover); }
public ThrowBox(Vector2 position, bool isMetal, bool tutorial = false, bool isSpecial = false, bool isCrucial = false) : base(position) { Position -= DISPLACEMENT; _starterPosition = Position; Depth = 100; Collider = new Hitbox(8f, 10f, 4f + DISPLACEMENT.X, 6f + DISPLACEMENT.Y); _isMetal = isMetal; IsSpecial = isSpecial; _isCrucial = isCrucial; _tutorial = tutorial; string pathString = isMetal ? "crate_metal0" : "crate0"; Add(_image = new Image(GFX.Game[$"objects/FactoryHelper/crate/{pathString}"])); _image.Position += DISPLACEMENT; if (_isCrucial) { Add(_warningImage = new Image(GFX.Game["objects/FactoryHelper/crate/crucial"])); _warningImage.Position += DISPLACEMENT; } Add(Hold = new Holdable(0.1f)); Hold.PickupCollider = new Hitbox(16f, 16f, DISPLACEMENT.X, DISPLACEMENT.Y); Hold.SlowFall = false; Hold.SlowRun = true; Hold.OnPickup = OnPickup; Hold.OnRelease = OnRelease; Hold.OnHitSpring = HitSpring; Hold.OnHitSpinner = OnHitSpinner; Hold.SpeedGetter = (() => Speed); Add(_transitionListener = new TransitionListener()); _transitionListener.OnOutBegin = () => _isCrucial = false; Add(ConveyorMover = new ConveyorMover()); ConveyorMover.OnMove = MoveOnConveyor; Add(new SteamCollider(OnSteamWall)); LiftSpeedGraceTime = 0.1f; Add(new LightOcclude(0.2f)); Add(new MirrorReflection()); }