mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Stealth and Steel: The Space Ninja (#31497)
* Space Ninja Antag Datum * Small fixes * Ninja outfit, ekatana, actions * Ninja scanner and spans * Ninja uplink implant * Ninja bombs * Ninja bomb flare grants * Ninja modsuit, objective payouts * Fixes objectives * Ninja stealth fix, modsuit sprites and final implementations * Lints * Ninja scanner sprites * Ninja Suit and Energy Shuriken Sprites * Fixes config, Adjusts stim ability, adds shuriken printer and e-shurikens, uplink stuff * Fixes a duplicate icon * Attack chain * Energy katana item sprite * Ninja net gun * Brazil * Spawning ninjas, ninja on traitor panel, ninja spawn sound * Linter * Objective stuff * Fixes n grey suits * Objectives * Trim intro sound * Event, spawn point * Ninja Outfits, Vox Check, Bug Fixes, Mirror at ninja spawn * Address code review * Oops * Uncomments an important thingy * Update: Gave space ninjas access to maints and an agent ID card. Updated net description. * Update scanner examine * Removes excess file * Makes ninja scanner fit in belts and ninja suits. Gives them NV goggles * Fixes modsuit sprite issue * Energy shuriken fixes * Scanner fix * Printer fix * Fixes some runtimes * Fixes capture teleport * Clothes rename * Buffs energy katana, adds soft no-drop to ekatana, buffs ninja modsuit, fixes equip bug * Adds research levels to ninja gear * Fixes ninja capture issue * Remaps ninja dojo * Better cuff removal * Forgor * Fixes action availability * Updates walls at dojo * Improves ninja modsuit * Windoors can now be opened with the katana * Adds advanced pinpointer to ninja uplink * Fixed energy nets sticking * Fixes slime people ninjas * Adds reroll to ninja capture if target is DNR. Prevents off Z-level targets * Oop * Adds reactor sabotage objective. * Fixes ninja cuffs * Removes Carp scroll from uplink. Adds Krav Implant to uplink
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
RESTRICT_TYPE(/datum/antagonist/space_ninja)
|
||||
|
||||
// Spider Clan Space Ninja
|
||||
/datum/antagonist/space_ninja
|
||||
name = "Space Ninja"
|
||||
roundend_category = "ninjas"
|
||||
job_rank = ROLE_NINJA
|
||||
special_role = SPECIAL_ROLE_NINJA
|
||||
antag_hud_name = "hud_ninja"
|
||||
antag_hud_type = ANTAG_HUD_NINJA
|
||||
clown_gain_text = "Your spider clan training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself."
|
||||
clown_removal_text = "You lose your spider clan training and return to your own clumsy, clownish self."
|
||||
wiki_page_name = "Space Ninja"
|
||||
var/give_uplink = TRUE
|
||||
blurb_r = 200
|
||||
blurb_a = 0.75
|
||||
boss_title = "Spider Clan Daimyo"
|
||||
/// Number of missions needed to complete
|
||||
var/mission_goal = 4
|
||||
|
||||
/datum/antagonist/space_ninja/on_gain()
|
||||
..()
|
||||
mission_goal = 4 + (length(GLOB.crew_list) / 10)
|
||||
SEND_SOUND(owner.current, sound('sound/ambience/antag/ninjaalert.ogg'))
|
||||
|
||||
/datum/antagonist/space_ninja/give_objectives()
|
||||
forge_objectives()
|
||||
|
||||
/datum/antagonist/space_ninja/exfiltrate(mob/living/carbon/human/extractor, obj/item/radio/radio)
|
||||
extractor.equipOutfit(/datum/outfit/admin/ghostbar_antag/space_ninja)
|
||||
radio.autosay("<b>--ZZZT!- Domo Ar!g@to, [extractor.real_name]. Your training paid -^%&!-ZZT!-</b>", "Spider Clan HQ", "Security")
|
||||
SSblackbox.record_feedback("tally", "successful_extraction", 1, "Space Ninja")
|
||||
|
||||
/datum/antagonist/space_ninja/finalize_antag()
|
||||
. = ..()
|
||||
equip_ninja()
|
||||
|
||||
/datum/antagonist/space_ninja/add_owner_to_gamemode()
|
||||
SSticker.mode.ninjas |= owner
|
||||
|
||||
/datum/antagonist/space_ninja/remove_owner_from_gamemode()
|
||||
SSticker.mode.ninjas -= owner
|
||||
|
||||
/datum/antagonist/space_ninja/proc/equip_ninja()
|
||||
if(!ishuman(owner.current))
|
||||
return
|
||||
var/mob/living/carbon/human/new_ninja = owner.current
|
||||
new_ninja.delete_equipment()
|
||||
if(isvox(new_ninja))
|
||||
new_ninja.equipOutfit(/datum/outfit/space_ninja/vox)
|
||||
else
|
||||
new_ninja.equipOutfit(/datum/outfit/space_ninja)
|
||||
|
||||
/datum/antagonist/space_ninja/proc/forge_objectives()
|
||||
var/list/moderate_objectives = list(
|
||||
/datum/objective/ninja/capture = 8,
|
||||
/datum/objective/ninja/kill = 8,
|
||||
/datum/objective/ninja/hack_rnd = 5,
|
||||
/datum/objective/ninja/bomb_department/emp = 3,
|
||||
/datum/objective/ninja/bomb_department/spiders = 3,
|
||||
)
|
||||
var/list/all_ninja_objectives = list(
|
||||
/datum/objective/ninja/capture = 8,
|
||||
/datum/objective/ninja/kill = 8,
|
||||
/datum/objective/ninja/hack_rnd = 4,
|
||||
/datum/objective/ninja/bomb_department = 3,
|
||||
/datum/objective/ninja/bomb_department/emp = 3,
|
||||
/datum/objective/ninja/bomb_department/spiders = 3,
|
||||
/datum/objective/ninja/steal_supermatter = 3,
|
||||
/datum/objective/ninja/insert_spider_rod = 3,
|
||||
/datum/objective/ninja/interrogate_ai = 3,
|
||||
)
|
||||
for(var/i in 1 to mission_goal)
|
||||
if(i <= mission_goal / 2) // This ensures some easier objectives are rolled to allow ninjas to work up to harder ones.
|
||||
forge_objective(moderate_objectives)
|
||||
continue
|
||||
forge_objective(all_ninja_objectives)
|
||||
add_antag_objective(/datum/objective/ninja_exfiltrate)
|
||||
|
||||
/datum/antagonist/space_ninja/proc/forge_objective(list/objective_list)
|
||||
|
||||
var/datum/objective/ninja/new_objective = pickweight(objective_list)
|
||||
var/datum/objective/ninja/obj_item = new new_objective() // Needed to do to check validity and reroll
|
||||
if(!obj_item.check_objective_conditions())
|
||||
forge_objective(objective_list)
|
||||
qdel(obj_item)
|
||||
return
|
||||
qdel(obj_item)
|
||||
if(new_objective.onlyone)
|
||||
var/list/current_objectives = get_antag_objectives()
|
||||
for(var/datum/objective/ninja/c_objective in current_objectives)
|
||||
if(istype(c_objective, new_objective))
|
||||
forge_objective(objective_list)
|
||||
return
|
||||
add_antag_objective(new_objective)
|
||||
Reference in New Issue
Block a user