TriggerOnSpawn + Admin toys (#23999)

* spawn on trigger, or trigger on spawn?

* fixes

* fix?

* revert

* fixes

* Update admin_triggers.yml

* pip
This commit is contained in:
Ed
2024-01-24 01:25:25 +03:00
committed by GitHub
parent 1f851fbea0
commit 1505f5b820
3 changed files with 127 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
namespace Content.Server.Explosion.Components;
/// <summary>
/// calls the trigger when the object is initialized
/// </summary>
[RegisterComponent]
public sealed partial class TriggerOnSpawnComponent : Component
{
}

View File

@@ -78,6 +78,7 @@ namespace Content.Server.Explosion.EntitySystems
InitializeVoice(); InitializeVoice();
InitializeMobstate(); InitializeMobstate();
SubscribeLocalEvent<TriggerOnSpawnComponent, MapInitEvent>(OnSpawnTriggered);
SubscribeLocalEvent<TriggerOnCollideComponent, StartCollideEvent>(OnTriggerCollide); SubscribeLocalEvent<TriggerOnCollideComponent, StartCollideEvent>(OnTriggerCollide);
SubscribeLocalEvent<TriggerOnActivateComponent, ActivateInWorldEvent>(OnActivate); SubscribeLocalEvent<TriggerOnActivateComponent, ActivateInWorldEvent>(OnActivate);
SubscribeLocalEvent<TriggerImplantActionComponent, ActivateImplantEvent>(OnImplantTrigger); SubscribeLocalEvent<TriggerImplantActionComponent, ActivateImplantEvent>(OnImplantTrigger);
@@ -193,6 +194,11 @@ namespace Content.Server.Explosion.EntitySystems
Trigger(uid); Trigger(uid);
} }
private void OnSpawnTriggered(EntityUid uid, TriggerOnSpawnComponent component, MapInitEvent args)
{
Trigger(uid);
}
private void OnActivate(EntityUid uid, TriggerOnActivateComponent component, ActivateInWorldEvent args) private void OnActivate(EntityUid uid, TriggerOnActivateComponent component, ActivateInWorldEvent args)
{ {
Trigger(uid, args.User); Trigger(uid, args.User);

View File

@@ -0,0 +1,112 @@
- type: entity
id: AdminInstantEffectBase
abstract: true
name: instant effect
components:
- type: Sprite
sprite: /Textures/Objects/Fun/goldbikehorn.rsi
visible: false
state: icon
- type: TriggerOnSpawn
- type: TimedDespawn
lifetime: 5
- type: entity
id: AdminInstantEffectEMP
suffix: EMP
parent: AdminInstantEffectBase
components:
- type: EmpOnTrigger
range: 4
energyConsumption: 50000
- type: entity
id: AdminInstantEffectFlash
suffix: Flash
parent: AdminInstantEffectBase
components:
- type: FlashOnTrigger
range: 7
- type: SpawnOnTrigger
proto: GrenadeFlashEffect
- type: entity
id: AdminInstantEffectSmoke3
suffix: Smoke (03 sec)
parent: AdminInstantEffectBase
components:
- type: SmokeOnTrigger
duration: 3
spreadAmount: 1
- type: SoundOnTrigger
sound: /Audio/Effects/smoke.ogg
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/Smoke-grenade.ogg
- type: entity
id: AdminInstantEffectSmoke10
suffix: Smoke (10 sec)
parent: AdminInstantEffectBase
components:
- type: SmokeOnTrigger
duration: 10
spreadAmount: 30
- type: SoundOnTrigger
sound: /Audio/Effects/smoke.ogg
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/Smoke-grenade.ogg
- type: entity
id: AdminInstantEffectSmoke30
suffix: Smoke (30 sec)
parent: AdminInstantEffectBase
components:
- type: SmokeOnTrigger
duration: 30
spreadAmount: 50
- type: SoundOnTrigger
sound: /Audio/Effects/smoke.ogg
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Effects/Smoke-grenade.ogg
- type: entity
id: AdminInstantEffectTearGas
suffix: Tear Gas
parent: AdminInstantEffectBase
components:
- type: SmokeOnTrigger
duration: 10
spreadAmount: 30
solution:
reagents:
- ReagentId: TearGas
Quantity: 50
- type: entity
id: AdminInstantEffectGravityWell
suffix: Gravity Well
parent: AdminInstantEffectBase
components:
- type: SoundOnTrigger
removeOnTrigger: true
sound:
path: /Audio/Effects/Grenades/Supermatter/supermatter_start.ogg
volume: 5
- type: AmbientSound
enabled: true
volume: -5
range: 14
sound:
path: /Audio/Effects/Grenades/Supermatter/supermatter_loop.ogg
- type: GravityWell
maxRange: 8
baseRadialAcceleration: 10
baseTangentialAcceleration: 0
gravPulsePeriod: 0.01
- type: SingularityDistortion
intensity: 10
falloffPower: 1.5