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:
@@ -272,3 +272,4 @@
|
||||
- id: OxygenTankFilled
|
||||
- id: ClothingOuterHardsuitWizard
|
||||
- id: ClothingMaskBreath
|
||||
- id: JetpackVoidFilled
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
- type: entity
|
||||
id: SpawnPointWizard
|
||||
parent: MarkerBase
|
||||
name: wizard
|
||||
components:
|
||||
- type: SpawnPoint
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Clothing/Head/Hats/wizardhat.rsi
|
||||
state: icon
|
||||
@@ -207,4 +207,25 @@
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Mobs/Silicon/chassis.rsi
|
||||
state: derelict_icon
|
||||
state: derelict_icon
|
||||
|
||||
- type: entity
|
||||
categories: [ HideSpawnMenu, Spawner ]
|
||||
parent: BaseAntagSpawner
|
||||
id: SpawnPointGhostWizard
|
||||
name: ghost role spawn point
|
||||
suffix: wizard
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-wizard-name
|
||||
description: ghost-role-information-wizard-desc
|
||||
mindRoles:
|
||||
- MindRoleGhostRoleSoloAntagonist
|
||||
raffle:
|
||||
settings: default
|
||||
- type: Sprite
|
||||
sprite: Markers/jobs.rsi
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Clothing/Head/Hats/wizardhat.rsi
|
||||
state: icon
|
||||
|
||||
@@ -102,3 +102,15 @@
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- Syndicate
|
||||
|
||||
# Wizard
|
||||
- type: entity
|
||||
categories: [ HideSpawnMenu ]
|
||||
name: Wizard
|
||||
parent: MobHuman
|
||||
id: MobHumanWizard
|
||||
components:
|
||||
- type: RandomHumanoidAppearance
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- Wizard
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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
|
||||
|
||||
66
Resources/Prototypes/GameRules/subgamemodes.yml
Normal file
66
Resources/Prototypes/GameRules/subgamemodes.yml
Normal 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
|
||||
@@ -8,6 +8,7 @@
|
||||
- Revolutionaries
|
||||
- NuclearOperatives
|
||||
- SpaceNinja
|
||||
- Wizard
|
||||
- Zombies
|
||||
- MinorAntagonists
|
||||
|
||||
@@ -45,3 +46,8 @@
|
||||
id: Thieves
|
||||
name: guide-entry-thieves
|
||||
text: "/ServerInfo/Guidebook/Antagonist/Thieves.xml"
|
||||
|
||||
- type: guideEntry
|
||||
id: Wizard
|
||||
name: guide-entry-wizard
|
||||
text: "/ServerInfo/Guidebook/Antagonist/Wizard.xml"
|
||||
|
||||
@@ -111,3 +111,11 @@
|
||||
id: BaseCodeObjective
|
||||
components:
|
||||
- type: CodeCondition
|
||||
|
||||
# a free objective, which is a free greentext
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseObjective
|
||||
id: BaseFreeObjective
|
||||
components:
|
||||
- type: FreeObjective
|
||||
|
||||
35
Resources/Prototypes/Objectives/wizard.yml
Normal file
35
Resources/Prototypes/Objectives/wizard.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseObjective
|
||||
id: BaseWizardObjective
|
||||
components:
|
||||
- type: Objective
|
||||
# required but not used
|
||||
difficulty: 1
|
||||
issuer: objective-issuer-swf
|
||||
- type: RoleRequirement
|
||||
roles:
|
||||
mindRoles:
|
||||
- WizardRole
|
||||
|
||||
- type: entity
|
||||
parent: [BaseWizardObjective, BaseSurviveObjective]
|
||||
id: WizardSurviveObjective
|
||||
name: Survive
|
||||
description: The Space Wizards Federation want you to live!
|
||||
components:
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: Clothing/Head/Hats/wizardhat.rsi
|
||||
state: icon
|
||||
|
||||
- type: entity
|
||||
parent: [BaseWizardObjective, BaseFreeObjective]
|
||||
id: WizardDemonstrateObjective
|
||||
name: Demonstration
|
||||
description: Give the station a good demonstration of your powers!
|
||||
components:
|
||||
- type: Objective
|
||||
icon:
|
||||
sprite: Objects/Magic/magicactions.rsi
|
||||
state: fireball
|
||||
@@ -1,8 +1,19 @@
|
||||
# TODO: Actual wizard coming later, this is just for the survival antags
|
||||
|
||||
- type: antag
|
||||
id: Survivor
|
||||
name: roles-antag-survivor-name
|
||||
antagonist: true
|
||||
objective: roles-antag-survivor-objective
|
||||
# guides: [ ]
|
||||
|
||||
- type: antag
|
||||
id: Wizard
|
||||
name: roles-antag-wizard-name
|
||||
antagonist: true
|
||||
setPreference: true
|
||||
objective: roles-antag-wizard-objective # TODO: maybe give random objs and stationary ones from AntagObjectives and AntagRandomObjectives
|
||||
requirements: # I hate time locked roles but this should be enough time for someone to be acclimated
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 18000 # 5h
|
||||
guides: [ Wizard ]
|
||||
|
||||
# See wizard_startinggear for wiz start gear options
|
||||
|
||||
@@ -4,13 +4,14 @@
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpsuitColorDarkBlue
|
||||
head: ClothingHeadHatWizard
|
||||
back: ClothingBackpack # Wizard backpack?
|
||||
outerClothing: ClothingOuterWizard
|
||||
shoes: ClothingShoesWizard
|
||||
id: PassengerPDA
|
||||
ears: ClothingHeadsetService
|
||||
storage:
|
||||
back:
|
||||
- BoxSurvival
|
||||
id: PassengerPDA # Maybe a wizard PDA of some sort?
|
||||
ears: ClothingHeadsetAltCommand
|
||||
belt: ClothingBeltWand
|
||||
# pocket1: TODO: Include wizard teleport scroll
|
||||
pocket2: WizardsGrimoire
|
||||
|
||||
- type: startingGear
|
||||
id: WizardRedGear
|
||||
|
||||
@@ -250,6 +250,19 @@
|
||||
- type: MindRole
|
||||
roleType: TeamAntagonist
|
||||
|
||||
# Wizards
|
||||
- type: entity
|
||||
parent: BaseMindRoleAntag
|
||||
id: MindRoleWizard
|
||||
name: Wizard Role
|
||||
# description: these are all commented out
|
||||
components:
|
||||
- type: MindRole
|
||||
antagPrototype: Wizard
|
||||
exclusiveAntag: true
|
||||
roleType: SoloAntagonist
|
||||
- type: WizardRole
|
||||
|
||||
# Zombie Squad
|
||||
- type: entity
|
||||
parent: BaseMindRoleAntag
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
- /Audio/Lobby/thunderdome.ogg
|
||||
- /Audio/Lobby/absconditus.ogg
|
||||
- /Audio/Lobby/space_asshole.ogg
|
||||
- /Audio/Lobby/the_wizard.ogg
|
||||
- /Audio/Lobby/endless_space.ogg
|
||||
- /Audio/Lobby/singuloose.ogg
|
||||
- /Audio/Lobby/comet_haley.ogg
|
||||
|
||||
@@ -201,6 +201,21 @@
|
||||
- SpaceTrafficControlEventScheduler
|
||||
- BasicRoundstartVariation
|
||||
|
||||
- type: gamePreset
|
||||
id: Wizard
|
||||
alias:
|
||||
- wizard
|
||||
name: wizard-title
|
||||
description: wizard-description
|
||||
showInVote: false
|
||||
rules:
|
||||
- Wizard
|
||||
- SubGamemodesRuleNoWizard #No Dual Wizards at the start, midround is fine
|
||||
- BasicStationEventScheduler
|
||||
- MeteorSwarmScheduler
|
||||
- SpaceTrafficControlEventScheduler
|
||||
- BasicRoundstartVariation
|
||||
|
||||
- type: gamePreset
|
||||
id: Zombie
|
||||
alias:
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
id: Secret
|
||||
weights:
|
||||
Nukeops: 0.20
|
||||
Traitor: 0.60
|
||||
Traitor: 0.55
|
||||
Zombie: 0.05
|
||||
Survival: 0.10
|
||||
Revolutionary: 0.05
|
||||
Wizard: 0.05 # Why not, should probably be lower
|
||||
|
||||
Reference in New Issue
Block a user