From 3439234d4627e43ba7540bfd8435052c9175fd78 Mon Sep 17 00:00:00 2001 From: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com> Date: Tue, 22 Jul 2025 09:42:30 -0500 Subject: [PATCH] Reincorporates Wizard (#4066) * Reincorporates Wizard wiz! wiz! it's time to waz! * Update roundstart.yml forgot the comment * Added 4 objectives --- .../_DV/objectives/conditions/wizard.ftl | 1 + .../Prototypes/Catalog/spellbook_catalog.yml | 48 ++++----- Resources/Prototypes/GameRules/events.yml | 2 +- Resources/Prototypes/GameRules/roundstart.yml | 18 ++-- Resources/Prototypes/Magic/touch_spells.yml | 2 +- .../_DV/Objectives/objectiveGroups.yml | 23 +++++ .../Prototypes/_DV/Objectives/wizard.yml | 91 ++++++++++++++++++ .../Textures/_DV/Misc/wizard.rsi/meta.json | 14 +++ .../Textures/_DV/Misc/wizard.rsi/scale.png | Bin 0 -> 351 bytes 9 files changed, 167 insertions(+), 32 deletions(-) create mode 100644 Resources/Locale/en-US/_DV/objectives/conditions/wizard.ftl create mode 100644 Resources/Prototypes/_DV/Objectives/wizard.yml create mode 100644 Resources/Textures/_DV/Misc/wizard.rsi/meta.json create mode 100644 Resources/Textures/_DV/Misc/wizard.rsi/scale.png diff --git a/Resources/Locale/en-US/_DV/objectives/conditions/wizard.ftl b/Resources/Locale/en-US/_DV/objectives/conditions/wizard.ftl new file mode 100644 index 0000000000..c9d17b6dd9 --- /dev/null +++ b/Resources/Locale/en-US/_DV/objectives/conditions/wizard.ftl @@ -0,0 +1 @@ +objective-condition-wizard-preserve-person-title = Keep {$targetName}, {CAPITALIZE($job)} alive, no matter the cost. diff --git a/Resources/Prototypes/Catalog/spellbook_catalog.yml b/Resources/Prototypes/Catalog/spellbook_catalog.yml index 61a868682c..7245d514ed 100644 --- a/Resources/Prototypes/Catalog/spellbook_catalog.yml +++ b/Resources/Prototypes/Catalog/spellbook_catalog.yml @@ -13,18 +13,18 @@ - !type:ListingLimitedStockCondition stock: 1 -- type: listing - id: SpellbookRodForm - name: spellbook-polymorph-rod-name - description: spellbook-polymorph-rod-desc - productAction: ActionPolymorphWizardRod - cost: - WizCoin: 3 - categories: - - SpellbookOffensive - conditions: - - !type:ListingLimitedStockCondition - stock: 1 +# - type: listing # DeltaV - lol this shit is wild +# id: SpellbookRodForm +# name: spellbook-polymorph-rod-name +# description: spellbook-polymorph-rod-desc +# productAction: ActionPolymorphWizardRod +# cost: +# WizCoin: 3 +# categories: +# - SpellbookOffensive +# conditions: +# - !type:ListingLimitedStockCondition +# stock: 1 - type: listing id: SpellbookSmite @@ -39,18 +39,18 @@ - !type:ListingLimitedStockCondition stock: 1 -- type: listing - id: SpellbookCluwne - name: spellbook-cluwne-name - description: spellbook-cluwne-desc - productAction: ActionCluwne - cost: - WizCoin: 3 - categories: - - SpellbookOffensive - conditions: - - !type:ListingLimitedStockCondition - stock: 1 +# - type: listing # DeltaV - commented out in case of confusion where cluwnes are considered KOS by some +# id: SpellbookCluwne +# name: spellbook-cluwne-name +# description: spellbook-cluwne-desc +# productAction: ActionCluwne +# cost: +# WizCoin: 3 +# categories: +# - SpellbookOffensive +# conditions: +# - !type:ListingLimitedStockCondition +# stock: 1 - type: listing id: SpellbookSlip diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 7df49c3b3a..abbb300ee2 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -44,7 +44,7 @@ - id: ZombieOutbreak - id: LoneOpsSpawn - id: DerelictCyborgSpawn - #- id: WizardSpawn # DeltaV - disabled until its touched up + - id: WizardSpawn - type: entity id: BaseStationEvent diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 7c8377b952..5ac4cd834d 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -22,8 +22,8 @@ rules: - id: Thief prob: 0.5 - #- id: SubWizard # DeltaV - removed until its touched up - # prob: 0.05 + - id: SubWizard + prob: 0.05 - type: entity parent: BaseGameRule @@ -271,10 +271,14 @@ parent: BaseGameRule id: BaseWizardRule components: - - type: AntagObjectives - objectives: - - WizardSurviveObjective - - WizardDemonstrateObjective + #- type: AntagObjectives # DeltaV - begin changes + #objectives: + #- WizardSurviveObjective + #- WizardDemonstrateObjective + - type: AntagRandomObjectives + sets: + - groups: WizardObjectiveGroupDelta + maxDifficulty: 3 # DeltaV - end changes - type: LoadMapRule gridPath: /Maps/Shuttles/wizard.yml - type: RuleGrids @@ -314,6 +318,8 @@ - NamesWizardFirst - NamesWizardLast nameFormat: name-format-wizard + - type: RandomHumanoidAppearance # DeltaV - randomizes character + randomizeName: false mindRoles: - MindRoleWizard diff --git a/Resources/Prototypes/Magic/touch_spells.yml b/Resources/Prototypes/Magic/touch_spells.yml index 3eba350dd0..8b8328cfd4 100644 --- a/Resources/Prototypes/Magic/touch_spells.yml +++ b/Resources/Prototypes/Magic/touch_spells.yml @@ -4,7 +4,7 @@ description: Instantly gibs a target. components: - type: EntityTargetAction - useDelay: 90 + useDelay: 300 # DeltaV - was 90, increased because jesus christ itemIconStyle: BigAction whitelist: components: diff --git a/Resources/Prototypes/_DV/Objectives/objectiveGroups.yml b/Resources/Prototypes/_DV/Objectives/objectiveGroups.yml index e12ca0913a..5bf049bece 100644 --- a/Resources/Prototypes/_DV/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/_DV/Objectives/objectiveGroups.yml @@ -38,3 +38,26 @@ id: TraitorObjectiveGroupSpecial weights: UploadAILawObjective: 1 + +## Wizard +- type: weightedRandom + id: WizardObjectiveGroupDelta + weights: + WizardObjectiveGroupDeltaObjectives1: 0.75 + WizardObjectiveGroupDeltaObjectives2: 1 + +- type: weightedRandom + id: WizardObjectiveGroupDeltaObjectives1 + weights: + WizardMagicocracyObjective: 1 + WizardBalanceObjective: 1 + WizardDestroyObjective: 0.5 + +- type: weightedRandom + id: WizardObjectiveGroupDeltaObjectives2 + weights: + WizardProfitObjective: 0.75 + WizardTeachObjective: 0.75 + WizardPopularObjective: 0.75 + WizardDataObjective: 0.75 + WizardPreserveObjective: 1 diff --git a/Resources/Prototypes/_DV/Objectives/wizard.yml b/Resources/Prototypes/_DV/Objectives/wizard.yml new file mode 100644 index 0000000000..c6b7d09fbe --- /dev/null +++ b/Resources/Prototypes/_DV/Objectives/wizard.yml @@ -0,0 +1,91 @@ +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardMagicocracyObjective + name: Magicocracy + description: Establish Magicocracy amidst the secular on this station! + components: + - type: Objective + icon: + sprite: Clothing/Head/Hats/wizardhat.rsi + state: icon + +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardBalanceObjective + name: Balance + description: Establish a cosmic balance on the station by eradicating chaos through the use of wit and the arcane! + components: + - type: Objective + icon: + sprite: _DV/Misc/wizard.rsi + state: scale + +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardDestroyObjective + name: Find the funniest way for the station to end + description: Seek the most hilarious possible apocalypse scenario. Test options. Simulate disasters. Take crew "input" surveys. Choose your favorite ending and try to make it happen. + components: + - type: Objective + difficulty: 2 + icon: + sprite: Objects/Magic/magicactions.rsi + state: fireball + +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardTeachObjective + name: Teach + description: Establish a movement based around training, instructing, or discussing with crew in the arts of the arcane, whether by mentorship or experimentation! + components: + - type: Objective + icon: + sprite: Objects/Magic/magicactions.rsi + state: spell_default + +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardProfitObjective + name: Profit + description: Utilize the station for the purpose of profit for the wizard federation! + components: + - type: Objective + icon: + sprite: Objects/Economy/cash.rsi + state: cash_1000000 + +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardPopularObjective + name: Become Popular + description: Seek to be the most liked, talked-about, or sought-after person on the station! + components: + - type: Objective + icon: + sprite: Clothing/Eyes/Glasses/sunglasses.rsi + state: icon + +- type: entity + parent: [BaseWizardObjective, BaseFreeObjective] + id: WizardDataObjective + name: Collect Pointless Data + description: Record and analyze bizarre metrics like "Average Doorway Hesitation Time," "Crew Punchability Ratings," or "How many feathers is too many feathers?" If questioned, simply tell them "it's for science." + components: + - type: Objective + icon: + sprite: _DV/Clothing/Head/Hats/propellerhat.rsi + state: icon + +- type: entity + parent: [BaseWizardObjective, BaseKeepAliveObjective] + id: WizardPreserveObjective + description: An arcane cosmic entity has prophesized that a mortal aboard the station will go on to do great things, and you must preserve their life by any means necessary. + components: + - type: Objective + icon: + sprite: Objects/Magic/magicactions.rsi + state: shield + - type: TargetObjective + title: objective-condition-wizard-preserve-person-title + - type: PickRandomPerson + onlyChoosableJobs: true diff --git a/Resources/Textures/_DV/Misc/wizard.rsi/meta.json b/Resources/Textures/_DV/Misc/wizard.rsi/meta.json new file mode 100644 index 0000000000..8fc056cff5 --- /dev/null +++ b/Resources/Textures/_DV/Misc/wizard.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "scale made by Pikepeicrer on Discord", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "scale" + } + ] +} diff --git a/Resources/Textures/_DV/Misc/wizard.rsi/scale.png b/Resources/Textures/_DV/Misc/wizard.rsi/scale.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3e21aff7032aa694e4ccdff863b12d9bf35fe7 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCim11AIbU_snHrQ2TFVHnkuYD8#U$Lc$A3v6ck+1^)*EhTq%xf`I~@1s;*b z3=DjSL74G){)!Z!;5tti#}Etuqmu&pjwo=r2=4tq^Yj6Qu-Q4kHojEhYW82%YgG4w z*`bd~S=IMDm$K@rxtgUVcdo_HbJU0mpB3>^_OM#8o`KZGkCpKZk6ka%dvcChAdThH zI)^*?OqH=r9P`)=-s=9C$84q+itlBrFcIdyFzIp5t%6-&W5pi$r*<8UZcqO!EAg1=&=KB)#-Y^_K$r8S eMtG+A`Z8z%*&IL&0+)g(gD6i|KbLh*2~7Z2{C6?{ literal 0 HcmV?d00001