diff --git a/Resources/Locale/en-US/deltav/objectives/conditions/ninja.ftl b/Resources/Locale/en-US/deltav/objectives/conditions/ninja.ftl new file mode 100644 index 00000000000..9f3065bc8e7 --- /dev/null +++ b/Resources/Locale/en-US/deltav/objectives/conditions/ninja.ftl @@ -0,0 +1 @@ +objective-ninja-kill-head-title = Execute {$targetName}, {CAPITALIZE($job)} diff --git a/Resources/Locale/en-US/deltav/objectives/conditions/steal-target-groups.ftl b/Resources/Locale/en-US/deltav/objectives/conditions/steal-target-groups.ftl index 9ee5e824214..e10d906a562 100644 --- a/Resources/Locale/en-US/deltav/objectives/conditions/steal-target-groups.ftl +++ b/Resources/Locale/en-US/deltav/objectives/conditions/steal-target-groups.ftl @@ -6,3 +6,5 @@ steal-target-groups-notary-stamp = notary stamp steal-target-groups-silvia = silvia steal-target-groups-recruiter-pen = recruiter's pen + +steal-target-groups-captains-cloak = captain's cloak diff --git a/Resources/Prototypes/DeltaV/Objectives/ninja.yml b/Resources/Prototypes/DeltaV/Objectives/ninja.yml new file mode 100644 index 00000000000..52a7dc02f87 --- /dev/null +++ b/Resources/Prototypes/DeltaV/Objectives/ninja.yml @@ -0,0 +1,81 @@ +# Kill + +- type: entity + abstract: true + parent: [BaseNinjaObjective, BaseTeachLessonObjective] + id: BaseNinjaTeachLessonObjective + description: This fool has spoken out against the Spider Clan. Teach them the error of their ways. + components: + - type: Objective + unique: true + icon: + sprite: Objects/Weapons/Throwable/throwing_star.rsi + state: icon + - type: TargetObjective + title: objective-condition-teach-person-title + +- type: entity + parent: BaseNinjaTeachLessonObjective + id: NinjaTeachLessonRandomHeadObjective + components: + - type: PickRandomHead + +- type: entity + parent: BaseNinjaTeachLessonObjective + id: NinjaTeachLessonRandomPersonObjective + components: + - type: PickRandomPerson + +- type: entity + parent: [BaseNinjaObjective, BaseKillObjective] + id: NinjaKillRandomHeadObjective + description: The Spider Clan is in need of more saboteur cyborgs. This head's brain will be perfect. + components: + - type: Objective + icon: + sprite: Objects/Weapons/Melee/energykatana.rsi + state: icon + - type: TargetObjective + title: objective-ninja-kill-head-title + - type: PickRandomHead + - type: KillPersonCondition + requireDead: true + +# Steal + +- type: entity + abstract: true + parent: [BaseNinjaObjective, BaseStealObjective] + id: BaseNinjaStealObjective + components: + - type: StealCondition + verifyMapExistence: false + +- type: entity + parent: BaseNinjaStealObjective + id: NinjaIanDossierStealObjective + components: + - type: StealCondition + stealGroup: BookIanDossier + +- type: entity + parent: BaseNinjaStealObjective + id: NinjaLuckyBillStealObjective + components: + - type: StealCondition + stealGroup: SpaceCashLuckyBill + +- type: entity + parent: BaseNinjaStealObjective + id: NinjaCaptainsCloakStealObjective + components: + - type: StealCondition + stealGroup: CaptainsCloak + +- type: entity + parent: BaseNinjaStealObjective + id: NinjaNotaryStampStealObjective + components: + - type: StealCondition + stealGroup: RubberStampNotary + owner: job-name-clerk diff --git a/Resources/Prototypes/DeltaV/Objectives/objectiveGroups.yml b/Resources/Prototypes/DeltaV/Objectives/objectiveGroups.yml new file mode 100644 index 00000000000..7b85fdc4e5b --- /dev/null +++ b/Resources/Prototypes/DeltaV/Objectives/objectiveGroups.yml @@ -0,0 +1,35 @@ +## Ninja +# Hacking things +- type: weightedRandom + id: NinjaHackingObjectiveGroups + weights: + NinjaObjectiveGroupHacking: 1 + +- type: weightedRandom + id: NinjaObjectiveGroupHacking + weights: + StealResearchObjective: 1 + TerrorObjective: 1 + MassArrestObjective: 1 + +# Extra objectives besides hacking things +- type: weightedRandom + id: NinjaBonusObjectiveGroups + weights: + NinjaObjectiveGroupKill: 1 + NinjaObjectiveGroupSteal: 1 + +- type: weightedRandom + id: NinjaObjectiveGroupKill + weights: + NinjaTeachLessonRandomHeadObjective: 1 + NinjaTeachLessonRandomPersonObjective: 0.5 + NinjaKillRandomHeadObjective: 0.25 # rarely have to gib, but it'll be towards the end of the round anyway + +# Steal random sentimental things, hopefully a traitor didn't do it first... +- type: weightedRandom + id: NinjaObjectiveGroupSteal + weights: + NinjaIanDossierStealObjective: 1 + NinjaLuckyBillStealObjective: 1 + NinjaCaptainsCloakStealObjective: 0.75 diff --git a/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml b/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml index 1df9cd69736..9599ba6e3fc 100644 --- a/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml @@ -32,3 +32,12 @@ sprite: sprite: DeltaV/Mobs/Pets/silvia.rsi state: silvia + +# Ninja + +- type: stealTargetGroup + id: CaptainsCloak + name: steal-target-groups-captains-cloak + sprite: + sprite: Clothing/Neck/Cloaks/cap.rsi + state: icon diff --git a/Resources/Prototypes/DeltaV/Objectives/traitor.yml b/Resources/Prototypes/DeltaV/Objectives/traitor.yml index 28bd9a1f895..2083abff62f 100644 --- a/Resources/Prototypes/DeltaV/Objectives/traitor.yml +++ b/Resources/Prototypes/DeltaV/Objectives/traitor.yml @@ -62,6 +62,7 @@ icon: sprite: Objects/Weapons/Guns/Pistols/viper.rsi state: icon + - type: TeachLessonCondition - type: ObjectiveBlacklistRequirement blacklist: components: @@ -78,4 +79,3 @@ - type: TargetObjective title: objective-condition-teach-person-title - type: PickRandomPerson - - type: TeachLessonCondition diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index f8dfd793da9..1c433f5d3da 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -200,12 +200,19 @@ - type: AntagLoadProfileRule - type: AntagObjectives objectives: - - StealResearchObjective + #- StealResearchObjective # DeltaV: Moved to random objectives - DoorjackObjective - SpiderChargeObjective - - TerrorObjective - - MassArrestObjective + #- TerrorObjective # DeltaV: Moved to random objectives + #- MassArrestObjective # DeltaV: Moved to random objectives - NinjaSurviveObjective + - type: AntagRandomObjectives # DeltaV: Random objectives for hacking and killing + sets: + - groups: NinjaHackingObjectiveGroups + maxPicks: 2 # only pick 2 of 3 of them to reduce metagaming + - groups: NinjaBonusObjectiveGroups + maxPicks: 2 # 2 kill or steal objectives max + maxDifficulty: 100 # ignore difficulty, use maxPicks instead - type: AntagSelection agentName: ninja-round-end-agent-name definitions: