[Antag] add space ninja as midround antag (#14069)
* start of space ninja midround antag * suit has powercell, can be upgraded only (not replaced with equal or worse battery) * add doorjacking to ninja gloves, power cell, doorjack objective (broken), tweaks * 💀 * add basic suit power display that uses stamina rsi * add draining apc/sub/smes - no wires yet * add research downloading * ninja starts implanted, move some stuff to yaml * add Automated field to OnUseTimerTrigger * implement spider charge and objective * fix client crash when taking suit off, some refactor * add survive condition and tweak locale * add comms console icon for objective * add calling in a threat - currently revenant and dragon * combine all glove abilities * locale * spark sounds when draining, refactoring * toggle is actually toggle now * prevent crash if disabling stealth with outline * add antag ctrl for ninja, hopefully show greentext * fix greentext and some other things * disabling gloves if taken off or suit taken off * basic energy katana, change ninja loadout * recallable katana, refactoring * start of dash - not done yet * katana dashing ability * merge upstream + compiling, make AutomatedTimer its own component * docs and stuff * partial refactor of glove abilities, still need to move handling * make dooremaggedevent by ref * move bunch of stuff to shared - broken * clean ninja antag verb * doc * mark rule config fields as required * fix client crash * wip systems refactor * big refactor of systems * fuck * make TryDoElectrocution callable from shared * finish refactoring? * no guns * start with internals on * clean up glove abilities, add range check * create soap, in place of ninja throwing stars * add emp suit ability * able to eat chefs stolen food in space * stuff, tell client when un/cloaked but there is bug with gloves * fix prediction breaking gloves on client * ninja soap despawns after a minute * ninja spawns outside the station now, with gps + station coords to navigate * add cooldown to stun ability * cant use glove abilities in combat mode * require empty hand to use glove abilities * use ghost role spawner * Update Content.Server/Ninja/Systems/NinjaSuitSystem.cs Co-authored-by: keronshb <54602815+keronshb@users.noreply.github.com> * some review changes * show powercell charge on examine * new is needed * address some reviews * ninja starts with jetpack, i hope * partial feedback * uhh * pro * remove pirate from threats list * use doafter refactor * pro i gave skeleton jetpack * some stuff * use auto gen state * mr handy * use EntityQueryEnumerator * cleanup * spider charge target anti-troll * mmmmmm --------- Co-authored-by: deltanedas <deltanedas@laptop> Co-authored-by: deltanedas <user@zenith> Co-authored-by: deltanedas <@deltanedas:kde.org> Co-authored-by: keronshb <54602815+keronshb@users.noreply.github.com>
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
order:
|
||||
- category: Health
|
||||
- category: Stamina
|
||||
- alertType: SuitPower
|
||||
- category: Internals
|
||||
- alertType: Fire
|
||||
- alertType: Handcuffed
|
||||
|
||||
21
Resources/Prototypes/Alerts/ninja.yml
Normal file
21
Resources/Prototypes/Alerts/ninja.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
- type: alert
|
||||
id: SuitPower
|
||||
icons:
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina0
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina1
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina2
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina3
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina4
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina5
|
||||
- sprite: /Textures/Interface/Alerts/stamina.rsi
|
||||
state: stamina6
|
||||
name: alerts-suit-power-name
|
||||
description: alerts-suit-power-desc
|
||||
minSeverity: 0
|
||||
maxSeverity: 6
|
||||
@@ -9,6 +9,20 @@
|
||||
|
||||
- type: entity
|
||||
noSpawn: true
|
||||
parent: ClothingBackpackSatchel
|
||||
id: ClothingBackpackSatchelTools
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: BoxSurvival
|
||||
- id: Crowbar
|
||||
- id: Wrench
|
||||
- id: Screwdriver
|
||||
- id: Wirecutter
|
||||
- id: Welder
|
||||
- id: Multitool
|
||||
|
||||
- type: entity
|
||||
parent: ClothingBackpackSatchelClown
|
||||
id: ClothingBackpackSatchelClownFilled
|
||||
components:
|
||||
|
||||
@@ -203,6 +203,17 @@
|
||||
- type: Thieving
|
||||
stripTimeReduction: 1
|
||||
stealthy: true
|
||||
- type: NinjaGloves
|
||||
- type: NinjaDoorjack
|
||||
- type: NinjaDrain
|
||||
- type: NinjaStun
|
||||
- type: NinjaDownload
|
||||
- type: NinjaTerror
|
||||
# not actually electrified, just used to make stun ability work
|
||||
- type: Electrified
|
||||
# delay for stunning to prevent instant stunlocking
|
||||
- type: UseDelay
|
||||
delay: 1
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHandsBase
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
- HidesHair
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
parent: ClothingHeadEVAHelmetBase
|
||||
id: ClothingHeadHelmetSpaceNinja
|
||||
name: space ninja helmet
|
||||
description: What may appear to be a simple black garment is in fact a highly sophisticated nano-weave helmet. Standard issue ninja gear.
|
||||
@@ -146,7 +146,6 @@
|
||||
sprite: Clothing/Head/Helmets/spaceninja.rsi
|
||||
- type: Clothing
|
||||
sprite: Clothing/Head/Helmets/spaceninja.rsi
|
||||
- type: IngestionBlocker
|
||||
- type: Tag
|
||||
tags:
|
||||
- HidesHair
|
||||
|
||||
@@ -92,6 +92,13 @@
|
||||
sprite: Clothing/OuterClothing/Suits/spaceninja.rsi
|
||||
- type: Clothing
|
||||
sprite: Clothing/OuterClothing/Suits/spaceninja.rsi
|
||||
- type: PressureProtection
|
||||
highPressureMultiplier: 0.6
|
||||
lowPressureMultiplier: 1000
|
||||
- type: DiseaseProtection
|
||||
protection: 0.05
|
||||
- type: TemperatureProtection
|
||||
coefficient: 0.01
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
@@ -99,6 +106,22 @@
|
||||
Slash: 0.6
|
||||
Piercing: 0.6
|
||||
Heat: 0.6
|
||||
- type: NinjaSuit
|
||||
- type: PowerCellSlot
|
||||
cellSlotId: cell_slot
|
||||
# throwing in a recharger would bypass glove charging mechanic
|
||||
fitsInCharger: false
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cell_slot: !type:ContainerSlot
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
startingItem: PowerCellSmall
|
||||
# delay for when attacked while cloaked
|
||||
- type: UseDelay
|
||||
delay: 5
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterBase
|
||||
|
||||
@@ -77,6 +77,10 @@
|
||||
- type: Clothing
|
||||
sprite: Clothing/Shoes/Specific/spaceninja.rsi
|
||||
- type: NoSlip
|
||||
- type: ClothingSpeedModifier
|
||||
# ninja are masters of sneaking around relatively quickly, won't break cloak
|
||||
walkModifier: 1.1
|
||||
sprintModifier: 1.3
|
||||
|
||||
- type: entity
|
||||
parent: ClothingShoesBaseButcherable
|
||||
|
||||
@@ -93,3 +93,21 @@
|
||||
- state: green
|
||||
- sprite: Structures/Wallmounts/signs.rsi
|
||||
state: radiation
|
||||
|
||||
- type: entity
|
||||
id: SpawnPointGhostSpaceNinja
|
||||
name: ghost role spawn point
|
||||
suffix: space ninja
|
||||
parent: MarkerBase
|
||||
components:
|
||||
- type: GhostRoleMobSpawner
|
||||
prototype: MobHumanSpaceNinja
|
||||
name: Space Ninja
|
||||
description: Use stealth and deception to sabotage the station.
|
||||
rules: You are an elite mercenary of the Spider Clan. You aren't required to follow your objectives, yet your NINJA HONOR demands you try.
|
||||
- type: Sprite
|
||||
sprite: Markers/jobs.rsi
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: Objects/Weapons/Melee/energykatana.rsi
|
||||
state: icon
|
||||
|
||||
@@ -77,3 +77,26 @@
|
||||
- type: Faction
|
||||
factions:
|
||||
- Syndicate
|
||||
|
||||
# Space Ninja
|
||||
- type: entity
|
||||
noSpawn: true
|
||||
name: Space Ninja
|
||||
parent: MobHuman
|
||||
id: MobHumanSpaceNinja
|
||||
components:
|
||||
- type: Loadout
|
||||
prototype: SpaceNinjaGear
|
||||
prototypes: [SpaceNinjaGear]
|
||||
- type: Faction
|
||||
factions:
|
||||
- Syndicate
|
||||
- type: Ninja
|
||||
- type: RandomMetadata
|
||||
nameSegments:
|
||||
- names_ninja_title
|
||||
- names_ninja
|
||||
- type: Tag
|
||||
tags:
|
||||
# fight with honor!
|
||||
- GunsDisabled
|
||||
|
||||
@@ -102,3 +102,18 @@
|
||||
- type: StepTrigger
|
||||
- type: Item
|
||||
heldPrefix: omega
|
||||
|
||||
- type: entity
|
||||
name: ninja soap
|
||||
id: SoapNinja
|
||||
parent: Soap
|
||||
description: The most important soap in the entire universe, as without it we would all cease to exist. Smells of honor.
|
||||
components:
|
||||
- type: Item
|
||||
heldPrefix: ninja
|
||||
# despawn to prevent ninja killing server
|
||||
- type: TimedDespawn
|
||||
lifetime: 60
|
||||
# no holding ninja hostage and forcing him to make infinite money for cargo
|
||||
- type: StaticPrice
|
||||
price: 0
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
- type: entity
|
||||
name: spider charge
|
||||
description: A modified C-4 charge supplied to you by the Spider Clan. Its explosive power has been juiced up, but only works in one specific area.
|
||||
# not actually modified C-4! oh the horror!
|
||||
parent: BaseItem
|
||||
id: SpiderCharge
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Bombs/spidercharge.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: Objects/Weapons/Bombs/spidercharge.rsi
|
||||
size: 10
|
||||
- type: SpiderCharge
|
||||
- type: OnUseTimerTrigger
|
||||
delay: 10
|
||||
delayOptions: [5, 10, 30, 60]
|
||||
initialBeepDelay: 0
|
||||
beepSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
startOnStick: true
|
||||
- type: AutomatedTimer
|
||||
- type: Sticky
|
||||
stickDelay: 5
|
||||
stickPopupStart: comp-sticky-start-stick-bomb
|
||||
stickPopupSuccess: comp-sticky-success-stick-bomb
|
||||
# can only stick it in target area, no reason to unstick
|
||||
canUnstick: false
|
||||
blacklist: # can't stick it to movable things, even if they are in the target area
|
||||
components:
|
||||
- Anchorable
|
||||
- Item
|
||||
- Body
|
||||
- type: Explosive # Powerful explosion in a medium radius. Will break underplating.
|
||||
explosionType: DemolitionCharge
|
||||
totalIntensity: 60
|
||||
intensitySlope: 10
|
||||
maxIntensity: 60
|
||||
canCreateVacuum: true
|
||||
- type: ExplodeOnTrigger
|
||||
- type: StickyVisualizer
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: GenericEnumVisualizer
|
||||
key: enum.Trigger.TriggerVisuals.VisualState
|
||||
states:
|
||||
enum.Trigger.TriggerVisualState.Primed: primed
|
||||
enum.Trigger.TriggerVisualState.Unprimed: complete
|
||||
@@ -43,6 +43,29 @@
|
||||
sprite: Objects/Weapons/Melee/katana.rsi
|
||||
- type: DisarmMalus
|
||||
|
||||
- type: entity
|
||||
name: energy katana
|
||||
parent: Katana
|
||||
id: EnergyKatana
|
||||
description: A katana infused with strong energy.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Melee/energykatana.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
types:
|
||||
Slash: 30
|
||||
- type: Item
|
||||
size: 15
|
||||
sprite: Objects/Weapons/Melee/energykatana.rsi
|
||||
- type: EnergyKatana
|
||||
- type: Clothing
|
||||
sprite: Objects/Weapons/Melee/energykatana.rsi
|
||||
slots:
|
||||
- Back
|
||||
- Belt
|
||||
|
||||
- type: entity
|
||||
name: machete
|
||||
parent: BaseItem
|
||||
|
||||
@@ -69,6 +69,28 @@
|
||||
earliestStart: 15
|
||||
minimumPlayers: 15
|
||||
|
||||
- type: gameRule
|
||||
id: SpaceNinjaSpawn
|
||||
config:
|
||||
!type:NinjaRuleConfiguration
|
||||
id: SpaceNinjaSpawn
|
||||
weight: 10
|
||||
endAfter: 1
|
||||
earliestStart: 60
|
||||
minimumPlayers: 15
|
||||
objectives:
|
||||
- DownloadObjective
|
||||
- DoorjackObjective
|
||||
- SpiderChargeObjective
|
||||
- TerrorObjective
|
||||
- SurviveObjective
|
||||
implants: [ MicroBombImplant ]
|
||||
threats:
|
||||
- announcement: terror-dragon
|
||||
rule: Dragon
|
||||
- announcement: terror-revenant
|
||||
rule: RevenantSpawn
|
||||
|
||||
- type: gameRule
|
||||
id: RevenantSpawn
|
||||
config:
|
||||
|
||||
39
Resources/Prototypes/Objectives/ninjaObjectives.yml
Normal file
39
Resources/Prototypes/Objectives/ninjaObjectives.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
- type: objective
|
||||
id: DownloadObjective
|
||||
issuer: spiderclan
|
||||
requirements:
|
||||
- !type:TraitorRequirement {}
|
||||
conditions:
|
||||
- !type:DownloadCondition {}
|
||||
|
||||
- type: objective
|
||||
id: DoorjackObjective
|
||||
issuer: spiderclan
|
||||
requirements:
|
||||
- !type:TraitorRequirement {}
|
||||
conditions:
|
||||
- !type:DoorjackCondition {}
|
||||
|
||||
- type: objective
|
||||
id: SpiderChargeObjective
|
||||
issuer: spiderclan
|
||||
requirements:
|
||||
- !type:TraitorRequirement {}
|
||||
conditions:
|
||||
- !type:SpiderChargeCondition {}
|
||||
|
||||
- type: objective
|
||||
id: TerrorObjective
|
||||
issuer: spiderclan
|
||||
requirements:
|
||||
- !type:TraitorRequirement {}
|
||||
conditions:
|
||||
- !type:TerrorCondition {}
|
||||
|
||||
- type: objective
|
||||
id: SurviveObjective
|
||||
issuer: spiderclan
|
||||
requirements:
|
||||
- !type:TraitorRequirement {}
|
||||
conditions:
|
||||
- !type:SurviveCondition {}
|
||||
9
Resources/Prototypes/Roles/Antags/ninja.yml
Normal file
9
Resources/Prototypes/Roles/Antags/ninja.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
- type: antag
|
||||
id: SpaceNinja
|
||||
name: roles-antag-space-ninja-name
|
||||
antagonist: true
|
||||
setPreference: false
|
||||
objective: roles-antag-space-ninja-objective
|
||||
# special:
|
||||
# - !type:AddImplantSpecial
|
||||
# implants: [ MicroBombImplant ]
|
||||
@@ -40,12 +40,23 @@
|
||||
id: SpaceNinjaGear
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpsuitColorBlack
|
||||
back: ClothingBackpackFilled
|
||||
# belt holds katana so satchel has the tools for sabotaging things
|
||||
back: ClothingBackpackSatchelTools
|
||||
mask: ClothingMaskGasSyndicate
|
||||
head: ClothingHeadHelmetSpaceNinja
|
||||
# TODO: space ninja mask
|
||||
eyes: ClothingEyesGlassesMeson
|
||||
gloves: ClothingHandsGlovesSpaceNinja
|
||||
outerClothing: ClothingOuterSuitSpaceninja
|
||||
shoes: ClothingShoesSpaceNinja
|
||||
id: PassengerPDA
|
||||
id: AgentIDCard
|
||||
ears: ClothingHeadsetGrey
|
||||
pocket1: SpiderCharge
|
||||
pocket2: HandheldGPSBasic
|
||||
belt: EnergyKatana
|
||||
suitstorage: YellowOxygenTankFilled
|
||||
inhand:
|
||||
left hand: JetpackBlackFilled
|
||||
innerclothingskirt: ClothingUniformJumpskirtColorBlack
|
||||
satchel: ClothingBackpackSatchelFilled
|
||||
duffelbag: ClothingBackpackDuffelFilled
|
||||
|
||||
Reference in New Issue
Block a user