action refactor proper ecs edition (#27422)

This commit is contained in:
deltanedas
2025-05-28 19:52:11 +00:00
committed by GitHub
parent a9f7cfbcb6
commit b3825dce97
111 changed files with 1995 additions and 2901 deletions

View File

@@ -1,11 +1,17 @@
- type: entity
parent: BaseEntitySpellAction
id: ActionAnimateSpell
name: Animate
description: Bring an inanimate object to life!
components:
- type: EntityTargetAction
- type: Action
useDelay: 0
itemIconStyle: BigAction
sound: !type:SoundPathSpecifier
path: /Audio/Magic/staff_animation.ogg
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: EntityTargetAction
whitelist:
components:
- Animateable # Currently on: SeatBase, TableBase, ClosetBase, BaseMachine, ConstructibleMachine, BaseComputer, BaseItem, CrateGeneric, StorageTank, GasCanister
@@ -18,13 +24,6 @@
- TegGenerator
- TegCirculator
- XenoArtifact
canTargetSelf: false
interactOnMiss: false
sound: !type:SoundPathSpecifier
path: /Audio/Magic/staff_animation.ogg
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
event: !type:ChangeComponentsSpellEvent
toAdd:
- type: Animate

View File

@@ -1,30 +1,34 @@
- type: entity
parent: BaseAction
id: ActionSummonGhosts
name: Summon Ghosts
description: Makes all current ghosts permanently visible
components:
- type: InstantAction
- type: Action
useDelay: 120
itemIconStyle: BigAction
icon:
sprite: Mobs/Ghosts/ghost_human.rsi
state: icon
- type: InstantAction
event: !type:ToggleGhostVisibilityToAllEvent
# TODO: Add Whitelist/Blacklist and Component support to EntitySpawnLists (to avoid making huge hardcoded lists like below).
- type: entity
parent: BaseAction
id: ActionSummonGuns
name: Summon Guns
description: AK47s for everyone! Places a random gun in front of everybody.
components:
- type: Magic
- type: InstantAction
- type: Action
useDelay: 300
itemIconStyle: BigAction
icon:
sprite: Objects/Weapons/Guns/Rifles/ak.rsi
state: base
- type: InstantAction
event: !type:RandomGlobalSpawnSpellEvent
makeSurvivorAntagonist: true
spawns:
@@ -162,17 +166,19 @@
sentence: action-speech-spell-summon-guns
- type: entity
parent: BaseAction
id: ActionSummonMagic
name: Summon Magic
description: Places a random magical item in front of everybody. Nothing could go wrong!
components:
- type: Magic
- type: InstantAction
- type: Action
useDelay: 300
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: magicmissile
- type: InstantAction
event: !type:RandomGlobalSpawnSpellEvent
makeSurvivorAntagonist: true
spawns:

View File

@@ -1,9 +1,10 @@
- type: entity
parent: BaseAction
id: ActionForceWall
name: forcewall
description: Creates a magical barrier.
components:
- type: InstantAction
- type: Action
useDelay: 15
itemIconStyle: BigAction
sound: !type:SoundPathSpecifier
@@ -11,6 +12,7 @@
icon:
sprite: Objects/Magic/magicactions.rsi
state: shield
- type: InstantAction
event: !type:InstantSpawnSpellEvent
prototype: WallForce
posData: !type:TargetInFront

View File

@@ -1,9 +1,10 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionKnock
name: Knock
description: This spell opens nearby doors.
components:
- type: InstantAction
- type: Action
useDelay: 10
itemIconStyle: BigAction
sound: !type:SoundPathSpecifier
@@ -11,6 +12,7 @@
icon:
sprite: Objects/Magic/magicactions.rsi
state: knock
- type: InstantAction
event: !type:KnockSpellEvent
- type: SpeakOnAction
sentence: action-speech-spell-knock

View File

@@ -1,22 +1,22 @@
- type: entity
parent: BaseEntitySpellAction
id: ActionMindSwap
name: Mind Swap
description: Exchange bodies with another person!
components:
- type: EntityTargetAction
- type: Action
useDelay: 300
itemIconStyle: BigAction
whitelist:
components:
- Body
- MindContainer
canTargetSelf: false
interactOnMiss: false
sound: !type:SoundPathSpecifier
path: /Audio/Magic/staff_animation.ogg
icon:
sprite: Mobs/Species/Human/organs.rsi
state: brain
- type: EntityTargetAction
whitelist:
components:
- Body # this also allows borgs because that supercode uses Body for no reason
- PAI # intended to mindswap pAIs and AIs
- StationAiCore
event: !type:MindSwapSpellEvent
- type: SpeakOnAction
sentence: action-speech-spell-mind-swap

View File

@@ -1,20 +1,23 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionFireball
name: Fireball
description: Fires an explosive fireball towards the clicked location.
components:
- type: Magic
- type: WorldTargetAction
- type: Action
useDelay: 15
itemIconStyle: BigAction
checkCanAccess: false
raiseOnUser: true
range: 60
sound: !type:SoundPathSpecifier
path: /Audio/Magic/fireball.ogg
icon:
sprite: Objects/Magic/magicactions.rsi
state: fireball
- type: TargetAction
range: 60
checkCanAccess: false
- type: WorldTargetAction
event: !type:ProjectileSpellEvent
prototype: ProjectileFireball
- type: SpeakOnAction
@@ -25,43 +28,19 @@
3: ActionFireballIII
- type: entity
id: ActionFireballII
parent: ActionFireball
id: ActionFireballII
name: Fireball II
description: Fires a fireball, but faster!
components:
- type: WorldTargetAction
itemIconStyle: BigAction
checkCanAccess: false
raiseOnUser: true
range: 60
sound: !type:SoundPathSpecifier
path: /Audio/Magic/fireball.ogg
icon:
sprite: Objects/Magic/magicactions.rsi
state: fireball
event: !type:ProjectileSpellEvent
prototype: ProjectileFireball
- type: SpeakOnAction
sentence: action-speech-spell-fireball
- type: Action
useDelay: 10
- type: entity
id: ActionFireballIII
parent: ActionFireball
id: ActionFireballIII
name: Fireball III
description: The fastest fireball in the west!
components:
- type: WorldTargetAction
itemIconStyle: BigAction
checkCanAccess: false
raiseOnUser: true
range: 60
sound: !type:SoundPathSpecifier
path: /Audio/Magic/fireball.ogg
icon:
sprite: Objects/Magic/magicactions.rsi
state: fireball
event: !type:ProjectileSpellEvent
prototype: ProjectileFireball
- type: SpeakOnAction
sentence: action-speech-spell-fireball
- type: Action
useDelay: 8

View File

@@ -1,9 +1,10 @@
- type: entity
parent: BaseAction
id: ActionItemRecall
name: Mark Item
description: Mark a held item to later summon into your hand.
components:
- type: InstantAction
- type: Action
useDelay: 10
raiseOnAction: true
itemIconStyle: BigAction
@@ -17,5 +18,6 @@
icon:
sprite: Objects/Magic/magicactions.rsi
state: item_recall
- type: InstantAction
event: !type:OnItemRecallActionEvent
- type: ItemRecall

View File

@@ -1,4 +1,5 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionRepulse
name: Repulse
description: Pushes entities away from the user.
@@ -10,11 +11,12 @@
components:
- MobMover
- Item
- type: InstantAction
- type: Action
useDelay: 40
raiseOnAction: true
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: repulse
- type: InstantAction
event: !type:RepulseAttractActionEvent

View File

@@ -1,55 +1,58 @@
- type: entity
- type: entity
abstract: true
parent: BaseAction
id: BaseRuneAction
components:
- type: Action
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: entity
parent: BaseRuneAction
id: ActionFlashRune
name: Flash Rune
description: Summons a rune that flashes if used.
components:
- type: InstantAction
- type: Action
useDelay: 10
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: InstantAction
event: !type:InstantSpawnSpellEvent
prototype: FlashRune
- type: entity
parent: BaseRuneAction
id: ActionExplosionRune
name: Explosion Rune
description: Summons a rune that explodes if used.
components:
- type: InstantAction
- type: Action
useDelay: 20
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: InstantAction
event: !type:InstantSpawnSpellEvent
prototype: ExplosionRune
- type: entity
parent: BaseRuneAction
id: ActionIgniteRune
name: Ignite Rune
description: Summons a rune that ignites if used.
components:
- type: InstantAction
- type: Action
useDelay: 15
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: InstantAction
event: !type:InstantSpawnSpellEvent
prototype: IgniteRune
- type: entity
parent: BaseRuneAction
id: ActionStunRune
name: Stun Rune
description: Summons a rune that stuns if used.
components:
- type: InstantAction
- type: Action
useDelay: 10
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: InstantAction
event: !type:InstantSpawnSpellEvent
prototype: StunRune

View File

@@ -1,14 +1,16 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionSmoke
name: Smoke
description: Summons smoke around the user.
components:
- type: InstantAction
- type: Action
useDelay: 10
itemIconStyle: BigAction
icon:
sprite: Actions/smokeaction.rsi
state: smokeaction
- type: InstantAction
event: !type:InstantSpawnSpellEvent
prototype: WizardSmoke
posData: !type:TargetInFront

View File

@@ -1,15 +1,18 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionSpawnMagicarpSpell
name: Summon Magicarp
description: This spell summons three Magi-Carp to your aid! May or may not turn on user.
components:
- type: WorldTargetAction
- type: Action
useDelay: 10
range: 4
itemIconStyle: BigAction
icon:
sprite: Objects/Magic/magicactions.rsi
state: spell_default
- type: TargetAction
range: 4
- type: WorldTargetAction
event: !type:WorldSpawnSpellEvent
prototypes:
- id: MobCarpMagic

View File

@@ -67,11 +67,11 @@
- WizardWand
- type: entity
parent: BaseAction
id: ActionRgbLight
components:
- type: EntityTargetAction
whitelist: { components: [ PointLight ] }
sound: /Audio/Magic/blink.ogg
event: !type:ChangeComponentsSpellEvent
toAdd:
- type: RgbLightController

View File

@@ -1,43 +1,43 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionBlink
name: Blink
description: Teleport to the clicked location.
components:
- type: WorldTargetAction
- type: Action
useDelay: 10
range: 16 # default examine-range.
# ^ should probably add better validation that the clicked location is on the users screen somewhere,
itemIconStyle: BigAction
sound: !type:SoundPathSpecifier
path: /Audio/Magic/blink.ogg
itemIconStyle: BigAction
checkCanAccess: false
repeat: false
icon:
sprite: Objects/Magic/magicactions.rsi
state: blink
- type: TargetAction
range: 16 # default examine-range.
# ^ should probably add better validation that the clicked location is on the users screen somewhere,
repeat: false
checkCanAccess: false
- type: WorldTargetAction
event: !type:TeleportSpellEvent
# TODO: Second level upgrade sometime that allows swapping with all objects
- type: entity
parent: BaseEntitySpellAction
id: ActionVoidApplause
name: Void Applause
description: Clap your hands and swap places with the target.
components:
- type: EntityTargetAction
- type: Action
useDelay: 15
range: 16
sound: !type:SoundPathSpecifier
path: /Audio/Magic/Eldritch/voidblink.ogg
itemIconStyle: BigAction
whitelist:
components:
- Body
canTargetSelf: false
interactOnMiss: false
checkCanAccess: false
repeat: false
icon:
sprite: Objects/Magic/Eldritch/eldritch_actions.rsi
state: voidblink
- type: TargetAction
checkCanAccess: false
repeat: false
range: 16
- type: EntityTargetAction
event: !type:VoidApplauseSpellEvent
effect: EffectVoidBlink

View File

@@ -1,21 +1,40 @@
- type: entity
id: ActionSmite
name: Smite
description: Instantly gibs a target.
# Smite-like spell that you click on someone else to use
- type: entity
abstract: true
parent: BaseAction
id: BaseEntitySpellAction
components:
- type: EntityTargetAction
useDelay: 90
- type: Action
itemIconStyle: BigAction
- type: TargetAction
interactOnMiss: false
- type: EntityTargetAction
whitelist:
components:
- Body
canTargetSelf: false
interactOnMiss: false
- type: entity
abstract: true
parent: BaseEntitySpellAction
id: BaseSmiteAction
components:
- type: Magic
requiresClothes: true
- type: entity
parent: BaseSmiteAction
id: ActionSmite
name: Smite
description: Instantly gibs a target.
components:
- type: Action
sound: !type:SoundPathSpecifier
path: /Audio/Magic/disintegrate.ogg
icon:
sprite: Objects/Magic/magicactions.rsi
state: gib
- type: EntityTargetAction
event: !type:SmiteSpellEvent
- type: SpeakOnAction
sentence: action-speech-spell-smite
@@ -24,29 +43,26 @@
# For the Snail
- type: entity
id: ActionSmiteNoReq
parent: ActionSmite
id: ActionSmiteNoReq
components:
- type: Magic
requiresClothes: false
- type: entity
parent: BaseSmiteAction
id: ActionCluwne
name: Cluwne's Curse
description: Turns someone into a Cluwne!
components:
- type: EntityTargetAction
- type: Action
useDelay: 120
itemIconStyle: BigAction
whitelist:
components:
- Body
canTargetSelf: false
interactOnMiss: false
sound: !type:SoundPathSpecifier
path: /Audio/Items/brokenbikehorn.ogg
icon:
sprite: Clothing/Mask/cluwne.rsi
state: icon
- type: EntityTargetAction
event: !type:ChangeComponentsSpellEvent
toAdd:
- type: Cluwne
@@ -56,23 +72,19 @@
requiresClothes: true
- type: entity
parent: BaseSmiteAction
id: ActionSlippery
name: Slippery Slope
description: Make someone slippery.
components:
- type: EntityTargetAction
- type: Action
useDelay: 60
itemIconStyle: BigAction
whitelist:
components:
- Body
canTargetSelf: false
interactOnMiss: false
sound: !type:SoundPathSpecifier
path: /Audio/Effects/slip.ogg
icon:
sprite: Objects/Specific/Janitorial/soap.rsi
state: omega-4
- type: EntityTargetAction
event: !type:ChangeComponentsSpellEvent
toAdd:
- type: Slippery

View File

@@ -1,14 +1,16 @@
- type: entity
- type: entity
parent: BaseAction
id: ActionChargeSpell
name: Charge
description: Adds a charge back to your wand
components:
- type: InstantAction
- type: Action
useDelay: 30
itemIconStyle: BigAction
icon:
sprite: Objects/Weapons/Guns/Basic/wands.rsi
state: nothing
- type: InstantAction
event: !type:ChargeSpellEvent
charge: 1
- type: SpeakOnAction