roundstart.yml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. - type: entity
  2. id: BaseGameRule
  3. abstract: true
  4. components:
  5. - type: GameRule
  6. - type: entity
  7. parent: BaseGameRule
  8. id: RespawnDeadRule
  9. components:
  10. - type: RespawnDeadRule
  11. alwaysRespawnDead: true
  12. - type: RespawnTracker
  13. respawnDelay: 10
  14. deleteBody: false
  15. - type: entity
  16. parent: BaseGameRule
  17. id: SubGamemodesRule
  18. components:
  19. - type: SubGamemodes
  20. rules:
  21. - id: Thief
  22. prob: 0.5
  23. - id: SubWizard
  24. prob: 0.05
  25. - type: entity
  26. parent: BaseGameRule
  27. id: SubGamemodesRuleNoWizard
  28. components:
  29. - type: SubGamemodes
  30. rules:
  31. - id: Thief
  32. prob: 0.5
  33. - type: entity
  34. id: DeathMatch31
  35. parent: BaseGameRule
  36. components:
  37. - type: DeathMatchRule
  38. rewardSpawns:
  39. - id: HealingToolbox
  40. - id: ClothingOuterArmorBasicSlim
  41. orGroup: loot
  42. - id: ClothingHeadHelmetBasic
  43. orGroup: loot
  44. - id: SoapNT
  45. orGroup: loot
  46. - id: Bola
  47. orGroup: loot
  48. - id: Spear
  49. orGroup: loot
  50. - id: ClothingShoesGaloshes
  51. orGroup: loot
  52. - id: FoodPieBananaCream
  53. orGroup: loot
  54. - id: Stimpack
  55. orGroup: loot
  56. - type: KillCalloutRule
  57. - type: PointManager
  58. - type: RespawnDeadRule
  59. - type: RespawnTracker
  60. respawnDelay: 5
  61. - type: entity
  62. id: InactivityTimeRestart
  63. parent: BaseGameRule
  64. components:
  65. - type: InactivityRule
  66. inactivityMaxTime: 600
  67. roundEndDelay: 10
  68. - type: entity
  69. id: MaxTimeRestart
  70. parent: BaseGameRule
  71. components:
  72. - type: MaxTimeRestartRule
  73. roundMaxTime: 300
  74. roundEndDelay: 10
  75. - type: entity
  76. abstract: true
  77. parent: BaseGameRule
  78. id: BaseNukeopsRule
  79. components:
  80. - type: RandomMetadata #this generates the random operation name cuz it's cool.
  81. nameSegments:
  82. - NamesOperationPrefix
  83. - NamesOperationSuffix
  84. - type: NukeopsRule
  85. - type: RuleGrids
  86. - type: AntagSelection
  87. - type: AntagLoadProfileRule
  88. speciesOverride: Human
  89. speciesOverrideBlacklist:
  90. #Species that do not work with nukies should be included in this list.
  91. #Once the issues are fixed the species should be removed from this list to be enabled.
  92. #Balance concerns are not a valid reason to disable a species, except for high-impact Nukie-specific exploits.
  93. #- Vox
  94. - type: entity
  95. parent: BaseNukeopsRule
  96. id: Nukeops
  97. components:
  98. - type: GameRule
  99. minPlayers: 20
  100. - type: LoadMapRule
  101. mapPath: /Maps/Nonstations/nukieplanet.yml
  102. - type: AntagSelection
  103. selectionTime: PrePlayerSpawn
  104. definitions:
  105. - prefRoles: [ NukeopsCommander ]
  106. fallbackRoles: [ Nukeops, NukeopsMedic ]
  107. spawnerPrototype: SpawnPointNukeopsCommander
  108. startingGear: SyndicateCommanderGearFull
  109. roleLoadout:
  110. - RoleSurvivalNukie
  111. components:
  112. - type: NukeOperative
  113. - type: RandomMetadata
  114. nameSegments:
  115. - nukeops-role-commander
  116. - NamesSyndicateElite
  117. - type: NpcFactionMember
  118. factions:
  119. - Syndicate
  120. mindRoles:
  121. - MindRoleNukeopsCommander
  122. - prefRoles: [ NukeopsMedic ]
  123. fallbackRoles: [ Nukeops, NukeopsCommander ]
  124. spawnerPrototype: SpawnPointNukeopsMedic
  125. startingGear: SyndicateOperativeMedicFull
  126. roleLoadout:
  127. - RoleSurvivalNukie
  128. components:
  129. - type: NukeOperative
  130. - type: RandomMetadata
  131. nameSegments:
  132. - nukeops-role-agent
  133. - NamesSyndicateNormal
  134. - type: NpcFactionMember
  135. factions:
  136. - Syndicate
  137. mindRoles:
  138. - MindRoleNukeopsMedic
  139. - prefRoles: [ Nukeops ]
  140. fallbackRoles: [ NukeopsCommander, NukeopsMedic ]
  141. spawnerPrototype: SpawnPointNukeopsOperative
  142. max: 3
  143. playerRatio: 10
  144. startingGear: SyndicateOperativeGearFull
  145. roleLoadout:
  146. - RoleSurvivalNukie
  147. components:
  148. - type: NukeOperative
  149. - type: RandomMetadata
  150. nameSegments:
  151. - nukeops-role-operator
  152. - NamesSyndicateNormal
  153. - type: NpcFactionMember
  154. factions:
  155. - Syndicate
  156. mindRoles:
  157. - MindRoleNukeops
  158. - type: entity
  159. abstract: true
  160. parent: BaseGameRule
  161. id: BaseTraitorRule
  162. components:
  163. - type: TraitorRule
  164. # TODO: codewords in yml
  165. # TODO: uplink in yml
  166. - type: AntagRandomObjectives
  167. sets:
  168. - groups: TraitorObjectiveGroups
  169. maxDifficulty: 5
  170. - type: AntagSelection
  171. agentName: traitor-round-end-agent-name
  172. - type: entity
  173. parent: BaseTraitorRule
  174. id: Traitor
  175. components:
  176. - type: GameRule
  177. minPlayers: 5
  178. delay:
  179. min: 240
  180. max: 420
  181. - type: AntagSelection
  182. definitions:
  183. - prefRoles: [ Traitor ]
  184. max: 8
  185. playerRatio: 10
  186. blacklist:
  187. components:
  188. - AntagImmune
  189. lateJoinAdditional: true
  190. mindRoles:
  191. - MindRoleTraitor
  192. - type: entity
  193. id: TraitorReinforcement
  194. parent: BaseTraitorRule
  195. components:
  196. - type: TraitorRule
  197. giveUplink: false
  198. giveCodewords: false # It would actually give them a different set of codewords than the regular traitors, anyway
  199. giveBriefing: false
  200. - type: AntagSelection
  201. definitions:
  202. - prefRoles: [ Traitor ]
  203. mindRoles:
  204. - MindRoleTraitorReinforcement
  205. - type: entity
  206. id: Revolutionary
  207. parent: BaseGameRule
  208. components:
  209. - type: GameRule
  210. minPlayers: 15
  211. - type: RevolutionaryRule
  212. - type: AntagSelection
  213. definitions:
  214. - prefRoles: [ HeadRev ]
  215. max: 3
  216. playerRatio: 15
  217. briefing:
  218. text: head-rev-role-greeting
  219. color: CornflowerBlue
  220. sound: "/Audio/Ambience/Antag/headrev_start.ogg"
  221. startingGear: HeadRevGear
  222. components:
  223. - type: Revolutionary
  224. - type: HeadRevolutionary
  225. mindRoles:
  226. - MindRoleHeadRevolutionary
  227. - type: entity
  228. id: Sandbox
  229. parent: BaseGameRule
  230. components:
  231. - type: SandboxRule
  232. - type: entity
  233. id: Secret
  234. parent: BaseGameRule
  235. components:
  236. - type: SecretRule
  237. - type: entity
  238. abstract: true
  239. parent: BaseGameRule
  240. id: BaseWizardRule
  241. components:
  242. - type: AntagObjectives
  243. objectives:
  244. - WizardSurviveObjective
  245. - WizardDemonstrateObjective
  246. - type: LoadMapRule
  247. gridPath: /Maps/Shuttles/wizard.yml
  248. - type: RuleGrids
  249. - type: AntagSelection
  250. - type: AntagLoadProfileRule
  251. speciesOverride: Human
  252. - type: entity
  253. parent: BaseWizardRule
  254. id: Wizard
  255. components:
  256. - type: GameRule
  257. minPlayers: 10
  258. - type: AntagSelection
  259. agentName: wizard-round-end-name
  260. selectionTime: PrePlayerSpawn
  261. definitions:
  262. - prefRoles: [ Wizard ]
  263. max: 1
  264. playerRatio: 1
  265. spawnerPrototype: SpawnPointGhostWizard
  266. roleLoadout:
  267. - RoleSurvivalExtended
  268. briefing:
  269. text: wizard-role-greeting
  270. color: Turquoise
  271. # TODO: Need Wizard Start sound
  272. #sound: "/Audio/Ambience/Antag/wizard_start.ogg"
  273. startingGear: WizardBlueGear
  274. # TODO: WizardComp as needed
  275. components:
  276. - type: NpcFactionMember
  277. factions:
  278. - Wizard
  279. - type: RandomMetadata
  280. nameSegments:
  281. - NamesWizardFirst
  282. - NamesWizardLast
  283. mindRoles:
  284. - MindRoleWizard
  285. - type: entity
  286. id: Zombie
  287. parent: BaseGameRule
  288. components:
  289. - type: GameRule
  290. minPlayers: 20
  291. delay:
  292. min: 600
  293. max: 900
  294. - type: ZombieRule
  295. - type: AntagSelection
  296. definitions:
  297. - prefRoles: [ InitialInfected ]
  298. max: 6
  299. playerRatio: 10
  300. blacklist:
  301. components:
  302. - ZombieImmune
  303. - AntagImmune
  304. briefing:
  305. text: zombie-patientzero-role-greeting
  306. color: Plum
  307. sound: "/Audio/Ambience/Antag/zombie_start.ogg"
  308. components:
  309. - type: PendingZombie
  310. - type: ZombifyOnDeath
  311. - type: IncurableZombie
  312. - type: InitialInfected
  313. mindRoles:
  314. - MindRoleInitialInfected
  315. # event schedulers
  316. - type: entityTable
  317. id: BasicGameRulesTable
  318. table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp
  319. children:
  320. - !type:NestedSelector
  321. tableId: BasicCalmEventsTable
  322. - !type:NestedSelector
  323. tableId: BasicAntagEventsTable
  324. - !type:NestedSelector
  325. tableId: CargoGiftsTable
  326. - !type:NestedSelector
  327. tableId: CalmPestEventsTable
  328. - !type:NestedSelector
  329. tableId: SpicyPestEventsTable
  330. - type: entityTable
  331. id: SpaceTrafficControlTable
  332. table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp
  333. children:
  334. - !type:NestedSelector
  335. tableId: UnknownShuttlesFriendlyTable
  336. - !type:NestedSelector
  337. tableId: UnknownShuttlesFreelanceTable
  338. - !type:NestedSelector
  339. tableId: UnknownShuttlesHostileTable
  340. - type: entity
  341. id: BasicStationEventScheduler
  342. parent: BaseGameRule
  343. components:
  344. - type: BasicStationEventScheduler
  345. scheduledGameRules: !type:NestedSelector
  346. tableId: BasicGameRulesTable
  347. - type: entity
  348. id: RampingStationEventScheduler
  349. parent: BaseGameRule
  350. components:
  351. - type: RampingStationEventScheduler
  352. scheduledGameRules: !type:NestedSelector
  353. tableId: BasicGameRulesTable
  354. - type: entity
  355. id: SpaceTrafficControlEventScheduler # iff we make a selector for EntityTables that can respect StationEventComp restrictions, or somehow impliment them otherwise in said tables,
  356. parent: BaseGameRule # we can remerge this with the other schedulers, but it will silently fail due to that limitation without a separate scheduler to balance atm.
  357. components:
  358. - type: BasicStationEventScheduler
  359. minimumTimeUntilFirstEvent: 2700 # 45 mins #shows up like half way through shift.
  360. minMaxEventTiming:
  361. min: 1200 # 20 mins
  362. max: 7200 # 120 mins # you probably arent getting a second visitor shuttle in one round, but it is possible.
  363. scheduledGameRules: !type:NestedSelector
  364. tableId: SpaceTrafficControlTable
  365. - type: entity
  366. id: SpaceTrafficControlFriendlyEventScheduler
  367. parent: BaseGameRule
  368. components:
  369. - type: BasicStationEventScheduler
  370. minimumTimeUntilFirstEvent: 1200 # 20 mins
  371. minMaxEventTiming:
  372. min: 600 # 10 mins
  373. max: 1800 # 30 mins
  374. scheduledGameRules: !type:NestedSelector
  375. tableId: UnknownShuttlesFriendlyTable
  376. # variation passes
  377. - type: entity
  378. id: BasicRoundstartVariation
  379. parent: BaseGameRule
  380. components:
  381. - type: RoundstartStationVariationRule
  382. rules:
  383. - id: BasicPoweredLightVariationPass
  384. - id: BasicTrashVariationPass
  385. - id: SolidWallRustingVariationPass
  386. - id: ReinforcedWallRustingVariationPass
  387. - id: BasicPuddleMessVariationPass
  388. prob: 0.99
  389. orGroup: puddleMess
  390. - id: BloodbathPuddleMessVariationPass
  391. prob: 0.01
  392. orGroup: puddleMess