events.yml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. - type: entityTable
  2. id: BasicCalmEventsTable
  3. table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp
  4. children:
  5. - id: AnomalySpawn
  6. - id: BluespaceArtifact
  7. - id: BluespaceLocker
  8. - id: BreakerFlip
  9. - id: BureaucraticError
  10. - id: ClericalError
  11. - id: CockroachMigration
  12. - id: GasLeak
  13. - id: GreytideVirus
  14. - id: IonStorm # its calm like 90% of the time smh
  15. - id: KudzuGrowth
  16. - id: MassHallucinations
  17. - id: MimicVendorRule
  18. - id: MouseMigration
  19. - id: PowerGridCheck
  20. - id: RandomSentience
  21. - id: SlimesSpawn
  22. - id: SolarFlare
  23. - id: SnakeSpawn
  24. - id: SpiderClownSpawn
  25. - id: SpiderSpawn
  26. - id: VentClog
  27. - type: entityTable
  28. id: BasicAntagEventsTable
  29. table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp
  30. children:
  31. - id: ClosetSkeleton
  32. - id: DragonSpawn
  33. - id: KingRatMigration
  34. - id: NinjaSpawn
  35. - id: RevenantSpawn
  36. - id: SleeperAgents
  37. - id: ZombieOutbreak
  38. - id: LoneOpsSpawn
  39. - id: DerelictCyborgSpawn
  40. - id: WizardSpawn
  41. - type: entity
  42. id: BaseStationEvent
  43. parent: BaseGameRule
  44. abstract: true
  45. components:
  46. - type: GameRule
  47. delay:
  48. min: 10
  49. max: 20
  50. - type: entity
  51. id: BaseStationEventShortDelay
  52. parent: BaseGameRule
  53. abstract: true
  54. components:
  55. - type: GameRule
  56. delay:
  57. min: 10
  58. max: 20
  59. - type: entity
  60. id: BaseStationEventLongDelay
  61. parent: BaseGameRule
  62. abstract: true
  63. components:
  64. - type: GameRule
  65. delay:
  66. min: 40
  67. max: 60
  68. - type: entity
  69. id: AnomalySpawn
  70. parent: BaseStationEventShortDelay
  71. components:
  72. - type: StationEvent
  73. startAnnouncementColor: "#18abf5"
  74. startAudio:
  75. path: /Audio/Announcements/announce.ogg
  76. weight: 8
  77. duration: 35
  78. - type: AnomalySpawnRule
  79. - type: entity
  80. id: BluespaceArtifact
  81. parent: BaseStationEventShortDelay
  82. components:
  83. - type: GameRule
  84. delay:
  85. min: 30
  86. max: 30
  87. - type: StationEvent
  88. startAnnouncementColor: "#18abf5"
  89. startAudio:
  90. path: /Audio/Announcements/announce.ogg
  91. weight: 8
  92. duration: 35
  93. - type: BluespaceArtifactRule
  94. - type: entity
  95. id: BluespaceLocker
  96. parent: BaseGameRule
  97. components:
  98. - type: StationEvent
  99. weight: 2
  100. reoccurrenceDelay: 5
  101. earliestStart: 1
  102. duration: 1
  103. - type: BluespaceLockerRule
  104. - type: entity
  105. id: BreakerFlip
  106. parent: BaseGameRule
  107. components:
  108. - type: StationEvent
  109. weight: 7
  110. duration: 1
  111. minimumPlayers: 15
  112. - type: BreakerFlipRule
  113. - type: entity
  114. id: BureaucraticError
  115. parent: BaseGameRule
  116. components:
  117. - type: StationEvent
  118. startAnnouncement: station-event-bureaucratic-error-announcement
  119. minimumPlayers: 25
  120. weight: 3
  121. duration: 1
  122. - type: BureaucraticErrorRule
  123. ignoredJobs:
  124. - StationAi
  125. - type: entity
  126. id: ClericalError
  127. parent: BaseGameRule
  128. components:
  129. - type: StationEvent
  130. startAnnouncement: station-event-clerical-error-announcement
  131. minimumPlayers: 15
  132. weight: 5
  133. duration: 1
  134. - type: ClericalErrorRule
  135. - type: entity
  136. parent: BaseGameRule
  137. id: ClosetSkeleton
  138. components:
  139. - type: StationEvent
  140. weight: 5
  141. duration: 1
  142. minimumPlayers: 10
  143. - type: RandomEntityStorageSpawnRule
  144. prototype: MobSkeletonCloset
  145. - type: entity
  146. parent: BaseGameRule
  147. id: DragonSpawn
  148. components:
  149. - type: StationEvent
  150. weight: 6.5
  151. earliestStart: 40
  152. reoccurrenceDelay: 20
  153. minimumPlayers: 20
  154. duration: null
  155. - type: SpaceSpawnRule
  156. spawnDistance: 0
  157. - type: AntagSpawner
  158. prototype: MobDragon
  159. - type: DragonRule
  160. - type: AntagObjectives
  161. objectives:
  162. - CarpRiftsObjective
  163. - DragonSurviveObjective
  164. - type: AntagSelection
  165. agentName: dragon-round-end-agent-name
  166. definitions:
  167. - spawnerPrototype: SpawnPointGhostDragon
  168. min: 1
  169. max: 1
  170. pickPlayer: false
  171. mindRoles:
  172. - MindRoleDragon
  173. - type: entity
  174. parent: BaseGameRule
  175. id: NinjaSpawn
  176. components:
  177. - type: StationEvent
  178. weight: 6
  179. duration: null
  180. earliestStart: 30
  181. reoccurrenceDelay: 20
  182. minimumPlayers: 30
  183. - type: SpaceSpawnRule
  184. - type: AntagLoadProfileRule
  185. - type: AntagObjectives
  186. objectives:
  187. - StealResearchObjective
  188. - DoorjackObjective
  189. - SpiderChargeObjective
  190. - TerrorObjective
  191. - MassArrestObjective
  192. - NinjaSurviveObjective
  193. - type: AntagSelection
  194. agentName: ninja-round-end-agent-name
  195. definitions:
  196. - spawnerPrototype: SpawnPointGhostSpaceNinja
  197. min: 1
  198. max: 1
  199. pickPlayer: false
  200. startingGear: SpaceNinjaGear
  201. roleLoadout:
  202. - RoleSurvivalEVA
  203. briefing:
  204. text: ninja-role-greeting
  205. color: Green
  206. sound: /Audio/Misc/ninja_greeting.ogg
  207. components:
  208. - type: SpaceNinja
  209. - type: NpcFactionMember
  210. factions:
  211. - Syndicate
  212. - type: AutoImplant
  213. implants:
  214. - DeathAcidifierImplant
  215. - type: RandomMetadata
  216. nameSegments:
  217. - NamesNinjaTitle
  218. - NamesNinja
  219. mindRoles:
  220. - MindRoleNinja
  221. - type: entity
  222. parent: BaseGameRule
  223. id: RevenantSpawn
  224. components:
  225. - type: StationEvent
  226. weight: 7.5
  227. duration: 1
  228. earliestStart: 45
  229. minimumPlayers: 20
  230. - type: RandomSpawnRule
  231. prototype: MobRevenant
  232. - type: entity
  233. parent: BaseWizardRule
  234. id: WizardSpawn
  235. components:
  236. - type: StationEvent
  237. weight: 1 # rare
  238. duration: 1
  239. earliestStart: 30
  240. reoccurrenceDelay: 60
  241. minimumPlayers: 10
  242. - type: AntagSelection
  243. agentName: wizard-round-end-name
  244. definitions:
  245. - spawnerPrototype: SpawnPointGhostWizard
  246. min: 1
  247. max: 1
  248. playerRatio: 1
  249. pickPlayer: false
  250. startingGear: WizardBlueGear
  251. roleLoadout:
  252. - RoleSurvivalExtended
  253. briefing:
  254. text: wizard-role-greeting
  255. color: Turquoise
  256. # TODO: Need Wizard Start sound
  257. #sound: "/Audio/Ambience/Antag/wizard_start.ogg"
  258. # TODO: WizardComp as needed
  259. components:
  260. - type: NpcFactionMember
  261. factions:
  262. - Wizard
  263. - type: RandomMetadata
  264. nameSegments:
  265. - NamesWizardFirst
  266. - NamesWizardLast
  267. mindRoles:
  268. - MindRoleWizard
  269. # disabled until event is rewritten to be more interesting
  270. #- type: entity
  271. # id: FalseAlarm
  272. # parent: BaseGameRule
  273. # components:
  274. # - type: StationEvent
  275. # weight: 15
  276. # duration: 1
  277. # - type: FalseAlarmRule
  278. - type: entity
  279. id: GasLeak
  280. parent: BaseStationEventShortDelay
  281. components:
  282. - type: StationEvent
  283. startAnnouncement: station-event-gas-leak-start-announcement
  284. startAudio:
  285. path: /Audio/Announcements/attention.ogg
  286. endAnnouncement: station-event-gas-leak-end-announcement
  287. weight: 8
  288. - type: GasLeakRule
  289. - type: entity
  290. id: KudzuGrowth
  291. parent: BaseStationEventLongDelay
  292. components:
  293. - type: StationEvent
  294. earliestStart: 15
  295. minimumPlayers: 15
  296. weight: 7
  297. duration: 240
  298. - type: KudzuGrowthRule
  299. - type: entity
  300. id: PowerGridCheck
  301. parent: BaseStationEventShortDelay
  302. components:
  303. - type: StationEvent
  304. weight: 5
  305. startAnnouncement: station-event-power-grid-check-start-announcement
  306. endAnnouncement: station-event-power-grid-check-end-announcement
  307. startAudio:
  308. path: /Audio/Announcements/power_off.ogg
  309. params:
  310. volume: -4
  311. duration: 60
  312. maxDuration: 120
  313. - type: PowerGridCheckRule
  314. - type: entity
  315. parent: BaseGameRule
  316. id: SolarFlare
  317. components:
  318. - type: StationEvent
  319. weight: 8
  320. startAnnouncement: station-event-solar-flare-start-announcement
  321. endAnnouncement: station-event-solar-flare-end-announcement
  322. startAudio:
  323. path: /Audio/Announcements/attention.ogg
  324. duration: 120
  325. maxDuration: 240
  326. - type: SolarFlareRule
  327. onlyJamHeadsets: true
  328. affectedChannels:
  329. - Common
  330. extraChannels:
  331. - Command
  332. - Engineering
  333. - Medical
  334. - Science
  335. - Security
  336. - Service
  337. - Supply
  338. extraCount: 2
  339. lightBreakChancePerSecond: 0.0003
  340. doorToggleChancePerSecond: 0.001
  341. - type: entity
  342. id: VentClog
  343. parent: BaseStationEventLongDelay
  344. components:
  345. - type: StationEvent
  346. startAnnouncement: station-event-vent-clog-start-announcement
  347. startAudio:
  348. path: /Audio/Announcements/attention.ogg
  349. earliestStart: 15
  350. minimumPlayers: 15
  351. weight: 5
  352. duration: 60
  353. - type: VentClogRule
  354. - type: entity
  355. id: SlimesSpawn
  356. parent: BaseStationEventShortDelay
  357. components:
  358. - type: StationEvent
  359. startAnnouncement: station-event-vent-creatures-start-announcement
  360. startAudio:
  361. path: /Audio/Announcements/attention.ogg
  362. earliestStart: 20
  363. minimumPlayers: 15
  364. weight: 5
  365. duration: 60
  366. - type: VentCrittersRule
  367. entries:
  368. - id: MobAdultSlimesBlueAngry
  369. prob: 0.02
  370. - id: MobAdultSlimesGreenAngry
  371. prob: 0.02
  372. - id: MobAdultSlimesYellowAngry
  373. prob: 0.02
  374. - type: entity
  375. id: SnakeSpawn
  376. parent: BaseStationEventShortDelay
  377. components:
  378. - type: StationEvent
  379. startAnnouncement: station-event-vent-creatures-start-announcement
  380. startAudio:
  381. path: /Audio/Announcements/attention.ogg
  382. earliestStart: 20
  383. minimumPlayers: 15
  384. weight: 5
  385. duration: 60
  386. - type: VentCrittersRule
  387. entries:
  388. - id: MobPurpleSnake
  389. prob: 0.02
  390. - id: MobSmallPurpleSnake
  391. prob: 0.02
  392. - id: MobCobraSpace
  393. prob: 0.02
  394. - type: entity
  395. id: SpiderSpawn
  396. parent: BaseStationEventShortDelay
  397. components:
  398. - type: StationEvent
  399. startAnnouncement: station-event-vent-creatures-start-announcement
  400. startAudio:
  401. path: /Audio/Announcements/attention.ogg
  402. earliestStart: 20
  403. minimumPlayers: 15
  404. weight: 5
  405. duration: 60
  406. - type: VentCrittersRule
  407. entries:
  408. - id: MobGiantSpiderAngry
  409. prob: 0.05
  410. - type: entity
  411. id: SpiderClownSpawn
  412. parent: BaseStationEventShortDelay
  413. components:
  414. - type: StationEvent
  415. startAnnouncement: station-event-vent-creatures-start-announcement
  416. startAudio:
  417. path: /Audio/Announcements/attention.ogg
  418. earliestStart: 20
  419. minimumPlayers: 20
  420. weight: 1.5
  421. duration: 60
  422. - type: VentCrittersRule
  423. entries:
  424. - id: MobClownSpider
  425. prob: 0.05
  426. - type: entity
  427. id: ZombieOutbreak
  428. parent: BaseGameRule
  429. components:
  430. - type: StationEvent
  431. earliestStart: 90
  432. minimumPlayers: 40
  433. weight: 1 # Zombies was happening basically every single survival round, so now it's super rare
  434. duration: 1
  435. - type: ZombieRule
  436. - type: AntagSelection
  437. definitions:
  438. - prefRoles: [ InitialInfected ]
  439. max: 3
  440. playerRatio: 10
  441. blacklist:
  442. components:
  443. - ZombieImmune
  444. - AntagImmune
  445. briefing:
  446. text: zombie-patientzero-role-greeting
  447. color: Plum
  448. sound: "/Audio/Ambience/Antag/zombie_start.ogg"
  449. components:
  450. - type: PendingZombie #less time to prepare than normal
  451. minInitialInfectedGrace: 300
  452. maxInitialInfectedGrace: 450
  453. - type: ZombifyOnDeath
  454. - type: IncurableZombie
  455. - type: InitialInfected
  456. mindRoles:
  457. - MindRoleInitialInfected
  458. - type: entity
  459. parent: BaseNukeopsRule
  460. id: LoneOpsSpawn
  461. components:
  462. - type: StationEvent
  463. earliestStart: 35
  464. weight: 5.5
  465. minimumPlayers: 20
  466. duration: 1
  467. - type: RuleGrids
  468. - type: LoadMapRule
  469. gridPath: /Maps/Shuttles/ShuttleEvent/striker.yml
  470. - type: NukeopsRule
  471. roundEndBehavior: Nothing
  472. - type: AntagSelection
  473. definitions:
  474. - spawnerPrototype: SpawnPointLoneNukeOperative
  475. min: 1
  476. max: 1
  477. pickPlayer: false
  478. startingGear: SyndicateLoneOperativeGearFull
  479. roleLoadout:
  480. - RoleSurvivalNukie
  481. components:
  482. - type: NukeOperative
  483. - type: RandomMetadata
  484. nameSegments:
  485. - NamesSyndicatePrefix
  486. - NamesSyndicateNormal
  487. - type: NpcFactionMember
  488. factions:
  489. - Syndicate
  490. mindRoles:
  491. - MindRoleNukeops
  492. - type: entity
  493. parent: BaseTraitorRule
  494. id: SleeperAgents
  495. components:
  496. - type: StationEvent
  497. earliestStart: 30
  498. weight: 8
  499. minimumPlayers: 15
  500. maxOccurrences: 1 # can only happen once per round
  501. startAnnouncement: station-event-communication-interception
  502. startAudio:
  503. path: /Audio/Announcements/intercept.ogg
  504. duration: null # the rule has to last the whole round not 1 second
  505. occursDuringRoundEnd: false
  506. - type: AlertLevelInterceptionRule
  507. - type: AntagSelection
  508. definitions:
  509. - prefRoles: [ TraitorSleeper ]
  510. fallbackRoles: [ Traitor ]
  511. min: 1
  512. max: 2
  513. playerRatio: 10
  514. blacklist:
  515. components:
  516. - AntagImmune
  517. mindRoles:
  518. - MindRoleTraitorSleeper
  519. - type: entity
  520. id: MassHallucinations
  521. parent: BaseGameRule
  522. components:
  523. - type: StationEvent
  524. weight: 7
  525. duration: 150
  526. maxDuration: 300
  527. reoccurrenceDelay: 30
  528. - type: MassHallucinationsRule
  529. minTimeBetweenIncidents: 0.1
  530. maxTimeBetweenIncidents: 300
  531. maxSoundDistance: 7
  532. sounds:
  533. collection: Paracusia
  534. - type: entity
  535. parent: BaseGameRule
  536. id: IonStorm
  537. components:
  538. - type: StationEvent
  539. weight: 8
  540. reoccurrenceDelay: 20
  541. duration: 1
  542. - type: IonStormRule
  543. - type: entity
  544. id: MimicVendorRule
  545. parent: BaseGameRule
  546. components:
  547. - type: StationEvent
  548. earliestStart: 0
  549. minimumPlayers: 20
  550. maxOccurrences: 1 # this event has diminishing returns on interesting-ness, so we cap it
  551. weight: 5
  552. - type: MobReplacementRule
  553. - type: entity
  554. id: GreytideVirus
  555. parent: BaseStationEventShortDelay
  556. components:
  557. - type: StationEvent
  558. startAudio:
  559. path: /Audio/Announcements/attention.ogg
  560. weight: 5
  561. minimumPlayers: 25
  562. reoccurrenceDelay: 20
  563. - type: GreytideVirusRule
  564. accessGroups:
  565. - Cargo
  566. - Command
  567. - Engineering
  568. - Research
  569. - Security
  570. - Service
  571. blacklist:
  572. - External # don't space everything
  573. - type: entity
  574. parent: BaseGameRule
  575. id: DerelictCyborgSpawn
  576. components:
  577. - type: StationEvent
  578. weight: 5
  579. earliestStart: 15
  580. reoccurrenceDelay: 20
  581. minimumPlayers: 4
  582. duration: null
  583. - type: SpaceSpawnRule
  584. spawnDistance: 0
  585. - type: AntagSpawner
  586. prototype: PlayerBorgDerelict
  587. - type: AntagSelection
  588. definitions:
  589. - spawnerPrototype: SpawnPointGhostDerelictCyborg
  590. min: 1
  591. max: 1
  592. pickPlayer: false