Revamped Meteor Swarm (#28974)

* meteor code and balanced values

* Meteor Swarms

* Update meteors.yml

* Update meteors.yml

* HOO! (fix overkill bug and buff space dust)

* undo BloodstreamComponent.cs changes

* DamageDistribution -> DamageTypes

* part 2.
This commit is contained in:
Nemanja
2024-06-14 23:38:43 -04:00
committed by GitHub
parent 1d5840c279
commit f136657b38
36 changed files with 887 additions and 164 deletions

View File

@@ -361,7 +361,7 @@
whitelist:
tags:
- CartridgeRocket
proto: MeteorLarge
proto: MeteorMedium
- type: entity
name: immovable rod launcher

View File

@@ -1,40 +1,206 @@
- type: entity
id: MeteorLarge
id: BaseMeteor
name: meteor
noSpawn: true
description: You prefer them when they're burning up in the atmosphere.
abstract: true
components:
- type: Sprite
noRot: false
sprite: Objects/Weapons/Guns/Projectiles/meteor.rsi
scale: 4,4
layers:
- state: large
shader: unshaded
- type: ExplodeOnTrigger
- type: DeleteOnTrigger
- type: TriggerOnCollide
fixtureID: projectile
sprite: Objects/Misc/meteor.rsi
- type: Projectile
damage: {}
deleteOnCollide: false
- type: Explosive
explosionType: Default
totalIntensity: 600.0
intensitySlope: 30
maxIntensity: 45
- type: Meteor
damageTypes:
types:
Blunt: 1
- type: TimedDespawn
lifetime: 120
- type: Clickable
- type: Physics
bodyType: Dynamic
bodyStatus: InAir
angularDamping: 0
linearDamping: 0
- type: Fixtures
fixtures:
projectile:
shape:
!type:PhysShapeCircle
radius: 0.8
radius: 0.4
density: 100
hard: true
# Didn't use MapGridComponent for now as the bounds are stuffed.
hard: false
layer:
- LargeMobLayer
mask:
- Impassable
- BulletImpassable
- type: Damageable
damageContainer: Inorganic
- type: Explosive
explosionType: Default
intensitySlope: 4
maxIntensity: 100
- type: entity
parent: BaseMeteor
id: MeteorSpaceDust
name: space dust
description: Makes a station sneeze.
components:
- type: Sprite
state: space_dust
- type: Fixtures
fixtures:
projectile:
shape:
!type:PhysShapeCircle
radius: 0.45
density: 100
hard: false
layer:
- LargeMobLayer
mask:
- Impassable
- BulletImpassable
- type: Explosive
totalIntensity: 25
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:ExplodeBehavior
- type: entity
parent: BaseMeteor
id: MeteorSmall
suffix: Small
components:
- type: Sprite
state: small
- type: Fixtures
fixtures:
projectile:
shape:
!type:PhysShapeCircle
radius: 0.25
density: 100
hard: false
layer:
- LargeMobLayer
mask:
- Impassable
- BulletImpassable
- type: Explosive
totalIntensity: 100
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 1250
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:ExplodeBehavior
- type: entity
parent: BaseMeteor
id: MeteorMedium
suffix: Medium
components:
- type: Sprite
state: medium
- type: Fixtures
fixtures:
projectile:
shape:
!type:PhysShapeCircle
radius: 0.3
density: 100
hard: false
layer:
- LargeMobLayer
mask:
- Impassable
- BulletImpassable
- type: Explosive
totalIntensity: 200
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 1750
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:ExplodeBehavior
- type: entity
parent: BaseMeteor
id: MeteorLarge
suffix: Large
components:
- type: Sprite
state: big
- type: Explosive
totalIntensity: 300
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 2500
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:ExplodeBehavior
- type: entity
parent: BaseMeteor
id: MeteorUrist
name: Urist McMeteor
description: As a successful member of society with a stable unflinching psyche and limitless drive, natural affinity for finance and domination, you have been selected, no, you have been effortlessly guided by divine (biological) trauma towards this moment. The gates of destiny fling open, and once again you're left standing on pulsating nothingness. A strobing headache of the soul.
suffix: Meteor
components:
- type: Sprite
state: human_pixel
- type: SolutionContainerManager
solutions:
blood:
maxVol: 1000
reagents:
- ReagentId: Blood
Quantity: 1000
- type: Explosive
totalIntensity: 25
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 3000
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MaleScreams
params:
volume: 10
- !type:SpillBehavior
solution: blood
- !type:ExplodeBehavior

View File

@@ -196,23 +196,6 @@
duration: 240
- type: KudzuGrowthRule
- type: entity
id: MeteorSwarm
parent: BaseStationEventLongDelay
components:
- type: StationEvent
earliestStart: 30
weight: 7.5
minimumPlayers: 10 #Enough to hopefully have at least one engineering guy
startAnnouncement: station-event-meteor-swarm-start-announcement
endAnnouncement: station-event-meteor-swarm-end-announcement
startAudio:
path: /Audio/Announcements/meteors.ogg
params:
volume: -4
duration: null #ending is handled by MeteorSwarmRule
- type: MeteorSwarmRule
- type: entity
id: MouseMigration
parent: BaseStationEventShortDelay

View File

@@ -0,0 +1,104 @@
- type: entity
parent: BaseGameRule
id: GameRuleMeteorScheduler
components:
- type: GameRule
minPlayers: 25
- type: MeteorScheduler
- type: weightedRandomEntity
id: DefaultConfig
weights:
GameRuleSpaceDustMinor: 44
GameRuleSpaceDustMajor: 22
GameRuleMeteorSwarmSmall: 18
GameRuleMeteorSwarmMedium: 10
GameRuleMeteorSwarmLarge: 5
GameRuleUristSwarm: 0.05
- type: entity
parent: BaseGameRule
id: GameRuleMeteorSwarm
abstract: true
components:
- type: GameRule
- type: MeteorSwarm
- type: entity
parent: GameRuleMeteorSwarm
id: GameRuleSpaceDustMinor
components:
- type: MeteorSwarm
announcement: null
announcementSound: null
nonDirectional: true
meteors:
MeteorSpaceDust: 1
waves:
min: 2
max: 3
meteorsPerWave:
min: 3
max: 5
- type: entity
parent: GameRuleMeteorSwarm
id: GameRuleSpaceDustMajor
components:
- type: MeteorSwarm
announcement: station-event-space-dust-start-announcement
announcementSound: /Audio/Announcements/attention.ogg
nonDirectional: true
meteors:
MeteorSpaceDust: 1
waves:
min: 2
max: 3
meteorsPerWave:
min: 8
max: 12
- type: entity
parent: GameRuleMeteorSwarm
id: GameRuleMeteorSwarmSmall
components:
- type: MeteorSwarm
meteors:
MeteorSmall: 7
MeteorMedium: 3
- type: entity
parent: GameRuleMeteorSwarm
id: GameRuleMeteorSwarmMedium
components:
- type: MeteorSwarm
meteors:
MeteorSmall: 3
MeteorMedium: 6
MeteorLarge: 1
- type: entity
parent: GameRuleMeteorSwarm
id: GameRuleMeteorSwarmLarge
components:
- type: MeteorSwarm
meteors:
MeteorSmall: 2
MeteorMedium: 4
MeteorLarge: 4
- type: entity
parent: GameRuleMeteorSwarm
id: GameRuleUristSwarm
components:
- type: MeteorSwarm
announcement: station-event-meteor-urist-start-announcement
announcementSound: /Audio/Announcements/attention.ogg
meteors:
MeteorUrist: 1
waves:
min: 3
max: 3
meteorsPerWave:
min: 10
max: 10

View File

@@ -31,6 +31,7 @@
description: extended-description
rules:
- BasicStationEventScheduler
- GameRuleMeteorScheduler
- BasicRoundstartVariation
- type: gamePreset
@@ -64,6 +65,7 @@
description: secret-description
rules:
- BasicStationEventScheduler
- GameRuleMeteorScheduler
- type: gamePreset
id: SecretGreenshift #For Admin Use: Runs Greenshift but shows "Secret" in lobby.
@@ -95,6 +97,7 @@
- Traitor
- SubGamemodesRule
- BasicStationEventScheduler
- GameRuleMeteorScheduler
- BasicRoundstartVariation
- type: gamePreset
@@ -121,6 +124,7 @@
- Nukeops
- SubGamemodesRule
- BasicStationEventScheduler
- GameRuleMeteorScheduler
- BasicRoundstartVariation
- type: gamePreset
@@ -136,6 +140,7 @@
- Revolutionary
- SubGamemodesRule
- BasicStationEventScheduler
- GameRuleMeteorScheduler
- BasicRoundstartVariation
- type: gamePreset
@@ -152,4 +157,5 @@
rules:
- Zombie
- BasicStationEventScheduler
- GameRuleMeteorScheduler
- BasicRoundstartVariation