private void OnStepTrigger(EntityUid uid, MousetrapComponent component, ref StepTriggeredEvent args) { component.IsActive = false; _triggerSystem.Trigger(uid); UpdateVisuals(uid); }
private void BeforeDamageOnTrigger(EntityUid uid, MousetrapComponent component, BeforeDamageOnTriggerEvent args) { foreach (var slot in component.IgnoreDamageIfSlotFilled) { if (!_inventorySystem.TryGetSlotContainer(args.Tripper, slot, out var container, out _)) { continue; } // This also means that wearing slippers won't // hurt the entity. if (container.ContainedEntity != null) { args.Damage *= 0; return; } } if (TryComp(args.Tripper, out PhysicsComponent? physics) && physics.Mass != 0) { // The idea here is inverse, // Small - big damage, // Large - small damage // yes i punched numbers into a calculator until the graph looked right var scaledDamage = -50 * Math.Atan(physics.Mass - component.MassBalance) + (25 * Math.PI); args.Damage *= scaledDamage; } }
private void OnUseInHand(EntityUid uid, MousetrapComponent component, UseInHandEvent args) { component.IsActive = !component.IsActive; _popupSystem.PopupEntity(component.IsActive ? Loc.GetString("mousetrap-on-activate") : Loc.GetString("mousetrap-on-deactivate"), uid, Filter.Entities(args.User)); UpdateVisuals(uid); }
private void BeforeDamageOnTrigger(EntityUid uid, MousetrapComponent component, BeforeDamageUserOnTriggerEvent args) { if (TryComp(args.Tripper, out PhysicsComponent? physics) && physics.Mass != 0) { // The idea here is inverse, // Small - big damage, // Large - small damage // yes i punched numbers into a calculator until the graph looked right var scaledDamage = -50 * Math.Atan(physics.Mass - component.MassBalance) + (25 * Math.PI); args.Damage *= scaledDamage; } }
private void OnStepTriggerAttempt(EntityUid uid, MousetrapComponent component, ref StepTriggerAttemptEvent args) { args.Continue = component.IsActive; }
private void OnTrigger(EntityUid uid, MousetrapComponent component, TriggerEvent args) { component.IsActive = false; UpdateVisuals(uid); }