make dragons breathe fire (#26746)

* add ActionGun system

* add RepeatingTrigger

* dragons breath projectile, repeatedly explodes

* give dragon fire breathing action, fireproof it

* oop

* oop 2

* prevent troll

* proper repeating thing

* pro

* webedit ops

* realops

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2024-05-08 00:25:41 +00:00
committed by GitHub
parent bd06aa2365
commit d6d1c9ed8a
8 changed files with 210 additions and 1 deletions

View File

@@ -91,6 +91,12 @@
speedModifierThresholds:
250: 0.7
400: 0.5
# disable taking damage from fire, since its a fire breathing dragon
- type: Flammable
damage:
types: {}
- type: Temperature
heatDamageThreshold: 800
- type: Metabolizer
solutionOnBody: false
updateInterval: 0.25
@@ -141,10 +147,33 @@
spawnRiftAction: ActionSpawnRift
- type: GenericAntag
rule: Dragon
- type: ActionGun
action: ActionDragonsBreath
gunProto: DragonsBreathGun
- type: GuideHelp
guides:
- MinorAntagonists
- type: entity
noSpawn: true
id: DragonsBreathGun
name: dragon's lung
description: For dragon's breathing
components:
- type: RechargeBasicEntityAmmo
rechargeCooldown: 5
rechargeSound:
path: /Audio/Animals/space_dragon_roar.ogg
- type: BasicEntityAmmoProvider
proto: ProjectileDragonsBreath
capacity: 1
count: 1
- type: Gun
soundGunshot:
path: /Audio/Animals/space_dragon_roar.ogg
soundEmpty: null
projectileSpeed: 5
- type: entity
parent: BaseMobDragon
id: MobDragonDungeon
@@ -183,6 +212,7 @@
state: icon
event: !type:DragonSpawnRiftActionEvent
useDelay: 1
priority: 3
- type: entity
id: ActionDevour
@@ -194,3 +224,18 @@
icon: { sprite : Interface/Actions/devour.rsi, state: icon }
iconOn: { sprite : Interface/Actions/devour.rsi, state: icon-on }
event: !type:DevourActionEvent
priority: 1
- type: entity
noSpawn: true
id: ActionDragonsBreath
name: "[color=orange]Dragon's Breath[/color]"
description: Spew out flames at anyone foolish enough to attack you!
components:
- type: WorldTargetAction
# TODO: actual sprite
icon: { sprite : Objects/Weapons/Guns/Projectiles/magic.rsi, state: fireball }
event: !type:ActionGunShootEvent
priority: 2
checkCanAccess: false
range: 0

View File

@@ -30,6 +30,39 @@
- type: IgniteOnCollide
fireStacks: 0.35
- type: entity
noSpawn: true
parent: BaseBulletTrigger
id: ProjectileDragonsBreath
name: dragon's breath
description: Try not to get toasted.
components:
- type: PointLight
color: "#E25822"
radius: 3.0
energy: 5.0
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/magic.rsi
layers:
- state: fireball
shader: unshaded
- type: IgnitionSource
temperature: 1000
ignited: true
- type: RepeatingTrigger
delay: 0.5 # line of fire as well as if it hits something
- type: ExplodeOnTrigger
- type: Explosive
explosionType: FireBomb
totalIntensity: 5 # low intensity, the point is to burn attackers not to break open walls, dragons can just eat them
intensitySlope: 1
maxIntensity: 3
canCreateVacuum: false
deleteAfterExplosion: false
repeatable: true
- type: TimedDespawn
lifetime: 5
- type: entity
id: ProjectileAnomalyFireball
name: fireball