THE WIZARD (#35406)

* Adds Survivor Antag

* Adds Survivor Role

* Adds Survivor Rule ECS, adds a survivor role event, adds make antagonist to  random global spawn spell

* Moves Survivor Ensurecomp to event handler. Makes Add Survivor Role a broadcast. Adds Survivor Component. Removes redundant briefing.

* Adds Survivor Antagonist role type for admins to keep track of this easier, adds it to Survivor.

* Adds access to survivor game rule system

* Adds Survivor Rule

* Adds end of round survivor text

* Adds end of round reporting logic. Adds logic to start the survivor rule.

* Changes desc from centcomm to shuttle

* survivor (S)

* Checks if they're alive on the shuttle instead of centcomm.

* ftl text selection based on number of survivors.

* Removed Survivor Antagonist, replaced it with Free Agent.

* Adds InvalidForGlobalSpawnSpell tag, checks for it on spawnspell, and adds it to a zombified person.

* Changes logic so we launch the game rule if it hasnt launched yet. Moves rule logic starting to server. Moved survivor rule logic out of event and into Start method.

* Fixes invalid entity issue

* Descs for Survivor Rule and Survivor comps

* Moves Survivor Rule to its own yml

* Checks for dead survivors, changes survivor checks for mind. Adds survivor comp to mind to fix any mindswap issues. Same for invalid survivor tag

* Changes shuttle xform call to just mapid

* Protoid fix

* THE WIZARD

* Wizard spawner

* adds the correct state

* Wizard preset and weight

* Fixes wizard rule

* Weight back to 100%

* Adds Random Metadata

* Wizard locs

* Puts requirements in the right place

* Adds wiz ghost spawner and mob

* wizard spawnpoint fix + shuttle mapping

* wizard loadout + fix wizard spawning + wizard random name

* comment

* Adds Wizard testing

* FIXES SHUTTLE ISSUE BASED REI

* THE WIZARD LOBBY SONG. Special thanks to song creator Chris Remo for allowing us to use this.

* Free Objective ECS + Base Free Objective

* Space Wizard Federation for Wiz Obj issuer.

* Wizard Objectives

* Moves wizard shuttle to base wizard rule. Gives Wizard their objectives. Removes WizardRule

* Renames midround to subgamemodes. Adds wizard sub game mode.

* Adds SubWizard to SubGameModesRule. Adds a SubGameMode with no wizard. Adds No SubGamemodeRule for Wizard preset

* Wizard midround event

* Fixes wizard midround

* Wizard Guidebook

* Removes todo

* Fixes text

* Removes wizard rule ECS, not needed

* Wizard jetpack

---------

Co-authored-by: ScarKy0 <scarky0@onet.eu>
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
This commit is contained in:
keronshb
2025-02-26 00:34:07 -05:00
committed by GitHub
parent 6ea742d4b4
commit 68de58eb66
28 changed files with 491 additions and 54 deletions

View File

@@ -38,6 +38,7 @@
- id: ZombieOutbreak
- id: LoneOpsSpawn
- id: DerelictCyborgSpawn
- id: WizardSpawn
- type: entity
id: BaseStationEvent
@@ -243,6 +244,44 @@
- type: RandomSpawnRule
prototype: MobRevenant
- type: entity
parent: BaseWizardRule
id: WizardSpawn
components:
- type: StationEvent
weight: 1 # rare
duration: 1
earliestStart: 30
reoccurrenceDelay: 60
minimumPlayers: 10
- type: AntagSelection
agentName: wizard-round-end-name
definitions:
- spawnerPrototype: SpawnPointGhostWizard
min: 1
max: 1
playerRatio: 1
pickPlayer: false
startingGear: WizardBlueGear
roleLoadout:
- RoleSurvivalExtended
briefing:
text: wizard-role-greeting
color: Turquoise
# TODO: Need Wizard Start sound
#sound: "/Audio/Ambience/Antag/wizard_start.ogg"
# TODO: WizardComp as needed
components:
- type: NpcFactionMember
factions:
- Wizard
- type: RandomMetadata
nameSegments:
- names_wizard_first
- names_wizard_last
mindRoles:
- MindRoleWizard
# disabled until event is rewritten to be more interesting
#- type: entity
# id: FalseAlarm

View File

@@ -1,32 +0,0 @@
- type: entity
parent: BaseGameRule
id: Thief
components:
- type: ThiefRule
- type: AntagObjectives
objectives:
- EscapeThiefShuttleObjective
- type: AntagRandomObjectives
sets:
- groups: ThiefBigObjectiveGroups
prob: 0.7
maxPicks: 1
- groups: ThiefObjectiveGroups
maxPicks: 10
maxDifficulty: 2.5
- type: AntagSelection
agentName: thief-round-end-agent-name
definitions:
- prefRoles: [ Thief ]
max: 3
playerRatio: 15
lateJoinAdditional: true
allowNonHumans: true
multiAntagSetting: NotExclusive
startingGear: ThiefGear
components:
- type: Pacified
mindRoles:
- MindRoleThief
briefing:
sound: "/Audio/Misc/thief_greeting.ogg"

View File

@@ -18,6 +18,17 @@
parent: BaseGameRule
id: SubGamemodesRule
components:
- type: SubGamemodes
rules:
- id: Thief
prob: 0.5
- id: SubWizard
prob: 0.05
- type: entity
parent: BaseGameRule
id: SubGamemodesRuleNoWizard
components:
- type: SubGamemodes
rules:
- id: Thief
@@ -238,6 +249,56 @@
components:
- type: SecretRule
- type: entity
abstract: true
parent: BaseGameRule
id: BaseWizardRule
components:
- type: AntagObjectives
objectives:
- WizardSurviveObjective
- WizardDemonstrateObjective
- type: LoadMapRule
gridPath: /Maps/Shuttles/wizard.yml
- type: RuleGrids
- type: AntagSelection
- type: AntagLoadProfileRule
speciesOverride: Human
- type: entity
parent: BaseWizardRule
id: Wizard
components:
- type: GameRule
minPlayers: 10
- type: AntagSelection
agentName: wizard-round-end-name
selectionTime: PrePlayerSpawn
definitions:
- prefRoles: [ Wizard ]
max: 1
playerRatio: 1
spawnerPrototype: SpawnPointGhostWizard
roleLoadout:
- RoleSurvivalExtended
briefing:
text: wizard-role-greeting
color: Turquoise
# TODO: Need Wizard Start sound
#sound: "/Audio/Ambience/Antag/wizard_start.ogg"
startingGear: WizardBlueGear
# TODO: WizardComp as needed
components:
- type: NpcFactionMember
factions:
- Wizard
- type: RandomMetadata
nameSegments:
- names_wizard_first
- names_wizard_last
mindRoles:
- MindRoleWizard
- type: entity
id: Zombie
parent: BaseGameRule

View File

@@ -0,0 +1,66 @@
- type: entity
parent: BaseGameRule
id: Thief
components:
- type: ThiefRule
- type: AntagObjectives
objectives:
- EscapeThiefShuttleObjective
- type: AntagRandomObjectives
sets:
- groups: ThiefBigObjectiveGroups
prob: 0.7
maxPicks: 1
- groups: ThiefObjectiveGroups
maxPicks: 10
maxDifficulty: 2.5
- type: AntagSelection
agentName: thief-round-end-agent-name
definitions:
- prefRoles: [ Thief ]
max: 3
playerRatio: 15
lateJoinAdditional: true
allowNonHumans: true
multiAntagSetting: NotExclusive
startingGear: ThiefGear
components:
- type: Pacified
mindRoles:
- MindRoleThief
briefing:
sound: "/Audio/Misc/thief_greeting.ogg"
# Needs testing
- type: entity
abstract: true
parent: BaseWizardRule
id: SubWizard
components:
- type: AntagSelection
agentName: wizard-round-end-name
selectionTime: PrePlayerSpawn
definitions:
- prefRoles: [ Wizard ]
max: 1
playerRatio: 1
spawnerPrototype: SpawnPointGhostWizard
roleLoadout:
- RoleSurvivalExtended
briefing:
text: wizard-role-greeting
color: Turquoise
# TODO: Need Wizard Start sound
#sound: "/Audio/Ambience/Antag/wizard_start.ogg"
startingGear: WizardBlueGear
# TODO: WizardComp as needed
components:
- type: NpcFactionMember
factions:
- Wizard
- type: RandomMetadata
nameSegments:
- names_wizard_first
- names_wizard_last
mindRoles:
- MindRoleWizard