mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +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:
@@ -105,6 +105,9 @@
|
||||
else if(!rad_component)
|
||||
start_rads()
|
||||
|
||||
/obj/item/nuclear_rod/proc/do_special_effect()
|
||||
return
|
||||
|
||||
/obj/item/nuclear_rod/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
|
||||
. = ..()
|
||||
check_rad_shield()
|
||||
@@ -164,6 +167,17 @@
|
||||
craftable = TRUE
|
||||
materials = list(MAT_METAL = 2000, MAT_URANIUM = 1000)
|
||||
|
||||
/obj/item/nuclear_rod/fuel/uranium_238/spiders
|
||||
name = "spider-clan uranium 238 fuel rod"
|
||||
desc = "A small fuel rod for most NGCR reactors. This one was green webs coating its surface, with tiny spiders skittering along them."
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
craftable = FALSE
|
||||
adjacent_requirements = list()
|
||||
|
||||
/obj/item/nuclear_rod/fuel/uranium_238/spiders/do_special_effect()
|
||||
if(prob(5))
|
||||
new /mob/living/basic/spiderling(get_turf(src))
|
||||
|
||||
/obj/item/nuclear_rod/fuel/weak_thorium
|
||||
name = "weak thorium fuel rod"
|
||||
desc = "A specialized fuel rod refined from uranium 238. This rod will last longer than normal, and won't generate as much heat."
|
||||
|
||||
@@ -605,6 +605,7 @@
|
||||
final_heat += heat_total
|
||||
final_power += power_total
|
||||
chamber.held_rod.durability -= durability_loss
|
||||
chamber.held_rod.do_special_effect()
|
||||
|
||||
if(final_heat)
|
||||
average_heatgen = final_heat / active_chambers
|
||||
|
||||
@@ -245,6 +245,9 @@
|
||||
/// How long has it been since we processed the crystal?
|
||||
var/tick_counter = 0
|
||||
|
||||
/// Are we being stolen?
|
||||
var/being_stolen = FALSE
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/supermatter_crystal/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -697,12 +700,31 @@
|
||||
countdown()
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/supermatter_crystal/update_overlays()
|
||||
. = ..()
|
||||
overlays.Cut()
|
||||
if(being_stolen)
|
||||
. += "causality_field"
|
||||
color = COLOR_GREEN
|
||||
else
|
||||
color = COLOR_WHITE
|
||||
|
||||
/obj/machinery/atmospherics/supermatter_crystal/bullet_act(obj/projectile/proj)
|
||||
var/turf/L = loc
|
||||
if(!istype(L))
|
||||
return FALSE
|
||||
if(!istype(proj, /obj/projectile/beam/emitter/hitscan) && power_changes)
|
||||
investigate_log("has been hit by [proj] fired by [key_name(proj.firer)]", INVESTIGATE_SUPERMATTER)
|
||||
if(istype(proj, /obj/projectile/energy/net))
|
||||
var/mob/living/carbon/user = proj.firer
|
||||
var/list/obj_list = user.mind.get_all_objectives()
|
||||
for(var/datum/objective/ninja/ninja_obj in obj_list)
|
||||
if(ninja_obj.completed)
|
||||
continue
|
||||
if(!istype(ninja_obj, /datum/objective/ninja/steal_supermatter))
|
||||
continue
|
||||
begin_theft()
|
||||
return FALSE
|
||||
if(proj.flag != BULLET)
|
||||
if(power_changes) //This needs to be here I swear
|
||||
power += proj.damage * bullet_energy
|
||||
@@ -712,6 +734,32 @@
|
||||
damage += proj.damage * bullet_energy
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/atmospherics/supermatter_crystal/proc/begin_theft(mob/living/carbon/thief)
|
||||
if(being_stolen)
|
||||
return
|
||||
message_admins("Ninja [thief] is beginning to steal the Supermatter Crystal.")
|
||||
addtimer(src, CALLBACK(PROC_REF(complete_theft), thief), 3 MINUTES)
|
||||
being_stolen = TRUE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/supermatter_crystal/proc/complete_theft(mob/living/carbon/thief)
|
||||
if(!being_stolen)
|
||||
return
|
||||
if(!thief.mind)
|
||||
return
|
||||
var/list/obj_list = thief.mind.get_all_objectives()
|
||||
if(!length(obj_list))
|
||||
return
|
||||
for(var/datum/objective/ninja/ninja_obj in obj_list)
|
||||
if(ninja_obj.completed)
|
||||
continue
|
||||
if(!istype(ninja_obj, /datum/objective/ninja/steal_supermatter))
|
||||
continue
|
||||
ninja_obj.complete_objective()
|
||||
break
|
||||
message_admins("Ninja [thief] has stolen the Supermatter Crystal.")
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/supermatter_crystal/singularity_act()
|
||||
var/gain = 100
|
||||
investigate_log("Supermatter shard consumed by singularity.", INVESTIGATE_SINGULO)
|
||||
@@ -796,6 +844,15 @@
|
||||
/obj/machinery/atmospherics/supermatter_crystal/item_interaction(mob/living/user, obj/item/used, list/modifiers)
|
||||
if(!istype(used) || (used.flags & ABSTRACT) || !istype(user))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(being_stolen)
|
||||
to_chat(user, SPAN_WARNING("You begin to very carefully unfasten the net tangled around [src]!"))
|
||||
if(!do_after_once(user, 5 SECONDS, TRUE, src))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
being_stolen = FALSE
|
||||
update_icon()
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(moveable && default_unfasten_wrench(user, used, time = 20))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user