Shinobi: Geeves Destroys Game Balance: Electric Boogaloo (#6989)

Added a ninja frequency to radios which ninjas spawn with to collaborate.
    Two ninjas now spawn instead of just one.
    Gave the ninja better spawning gear, a syndicate uniform, a belt with some tools and a pAI card.
    The ninja suit now has new lights, and its shoes are now magboots.
    Added a doorhack RIG module. Functions the same as the normal doorhack, but the user can move around after initiating the hack, as well as hack multiple airlocks at once.
    Added new advanced combat belt, can hold various gear that a ninja would usually come across.
    Gave the ninja teleporter a 5 second cooldown between uses.
    Buffed the ninja's RIG armour values slightly. Still requires feedback, if ninjas die too quickly, it will be buffed more.
    Added an additional toolbox, chair, suitcooling unit and ninja spawn point to the ninja shuttle on the centcomm level.
    Gave the ninja a new uniform + gloves.
    Tweaked Emergency Power Generator to give 2500 energy, but take 5 minutes to recharge. In the past, they took 24 seconds to recharge and gave 1500 energy, which made all other sources of energy regeneration useless.
This commit is contained in:
Geeves
2019-09-19 09:43:30 +03:00
committed by Erki
parent ad758533f1
commit c2979e5496
20 changed files with 347 additions and 65 deletions
@@ -41,6 +41,19 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/ring/ninja
desc = "A pair of plain black infiltration gloves. Too thin to protect anything, but can fit underneath a hardsuit gauntlet."
name = "black slipgloves"
icon = 'icons/obj/clothing/gloves.dmi'
icon_state = "s-ninja"
item_state = "s-ninja"
siemens_coefficient = 0
permeability_coefficient = 0.05
undergloves = 1
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/gloves/latex
name = "latex gloves"
@@ -78,6 +78,7 @@
redundant = 1
usable = 1
selectable = 1
var/lastteleport
engage_string = "Emergency Leap"
@@ -106,13 +107,17 @@
/obj/item/rig_module/teleporter/engage(var/atom/target, var/notify_ai)
if(!..()) return 0
if(!..()) return FALSE
var/mob/living/carbon/human/H = holder.wearer
if(lastteleport + (5 SECONDS) > world.time)
to_chat(H, span("warning", "The teleporter needs time to cool down!"))
return FALSE
if(!istype(H.loc, /turf))
to_chat(H, "<span class='warning'>You cannot teleport out of your current location.</span>")
return 0
return FALSE
var/turf/T
if(target)
@@ -122,19 +127,19 @@
if(!T || T.density)
to_chat(H, "<span class='warning'>You cannot teleport into solid walls.</span>")
return 0
return FALSE
if(T.z in current_map.admin_levels)
to_chat(H, "<span class='warning'>You cannot use your teleporter on this Z-level.</span>")
return 0
return FALSE
if(T.contains_dense_objects())
to_chat(H, "<span class='warning'>You cannot teleport to a location with solid objects.</span>")
return 0
return FALSE
if((T.z != H.z || get_dist(T, get_turf(H)) > world.view) && target)
to_chat(H, "<span class='warning'>You cannot teleport to such a distant object.</span>")
return 0
return FALSE
phase_out(H,get_turf(H))
do_teleport(H,T)
@@ -149,7 +154,8 @@
do_teleport(G.affecting,locate(T.x+rand(-1,1),T.y+rand(-1,1),T.z))
phase_in(G.affecting,get_turf(G.affecting))
return 1
lastteleport = world.time
return TRUE
/obj/item/rig_module/fabricator/energy_net
@@ -264,7 +270,7 @@
interface_name = "emergency power generator"
interface_desc = "A high yield power generating device that takes a long time to recharge."
var/generation_ammount = 1500
var/generation_ammount = 2500
category = MODULE_SPECIAL
@@ -280,7 +286,7 @@
playsound(H.loc, 'sound/effects/sparks2.ogg', 50, 1)
holder.cell.give(generation_ammount)
cooldown = 1
addtimer(CALLBACK(src, /obj/item/rig_module/emergency_powergenerator/proc/reset_cooldown), 240)
addtimer(CALLBACK(src, /obj/item/rig_module/emergency_powergenerator/proc/reset_cooldown), 5 MINUTES)
/obj/item/rig_module/emergency_powergenerator/proc/reset_cooldown()
cooldown = 0
@@ -297,3 +303,64 @@
device_type = /obj/item/weapon/robot_emag
category = MODULE_SPECIAL
/obj/item/rig_module/stealth_field/advanced //credits to Burger BB
name = "advanced active camouflage module"
desc = "A robust hardsuit-integrated stealth module. This model sports a significantly lower cooldown between uses as well as a reduced charge cost."
use_power_cost = 10
active_power_cost = 2
passive_power_cost = 0
module_cooldown = 10
category = MODULE_SPECIAL
/obj/item/rig_module/device/door_hack //credits to BurgerBB
name = "advanced door hacking tool"
desc = "An advanced door hacking tool that sports a low power cost and incredibly quick door hacking time. The device also supports hacking several signals at once remotely, and the last 10 doors hacked can be instantly accessed."
use_power_cost = 10
module_cooldown = 5
usable = 0
selectable = 0
toggleable = 1
interface_name = "advanced door hacking tool"
interface_desc = "An advanced door hacking tool that sports a low power cost and incredibly quick door hacking time. The device also supports hacking several signals at once remotely, and the last 10 doors hacked can be instantly accessed."
category = MODULE_SPECIAL
/obj/item/rig_module/device/door_hack/process()
if(holder && holder.wearer)
if(!(locate(/obj/item/device/multitool/hacktool/rig) in holder.wearer))
deactivate()
return 0
return ..()
/obj/item/rig_module/device/door_hack/activate()
..()
var/mob/living/M = holder.wearer
if(M.l_hand && M.r_hand)
to_chat(M, "<span class='danger'>Your hands are full.</span>")
deactivate()
return
var/obj/item/device/multitool/hacktool/rig/hacktool = new(M)
hacktool.creator = M
M.put_in_hands(hacktool)
/obj/item/rig_module/device/door_hack/deactivate()
..()
var/mob/living/M = holder.wearer
if(!M)
return
for(var/obj/item/device/multitool/hacktool/rig/hacktool in M.contents)
qdel(hacktool)
@@ -76,31 +76,40 @@
/obj/item/weapon/rig/light/ninja
name = "stealth suit control module"
suit_type = "stealth suit"
desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for stealth operations."
desc = "A unique, vacuum-proof suit of nano-enhanced armor designed specifically for stealth operations."
icon_state = "ninja_rig"
armor = list(melee = 50, bullet = 35, laser = 35, energy = 30, bomb = 25, bio = 100, rad = 30)
armor = list(melee = 50, bullet = 45, laser = 45, energy = 30, bomb = 35, bio = 100, rad = 100)
emp_protection = 40
slowdown = 0
species_restricted = list("Human","Tajara","Unathi", "Skrell", "Machine", "Vaurca")
helm_type = /obj/item/clothing/head/helmet/space/rig/light/ninja
chest_type = /obj/item/clothing/suit/space/rig/light/ninja
glove_type = /obj/item/clothing/gloves/rig/light/ninja
boot_type = /obj/item/clothing/shoes/rig/light/ninja
boot_type = /obj/item/clothing/shoes/magboots/rig/light/ninja
req_access = list(access_syndicate)
initial_modules = list(
/obj/item/rig_module/teleporter,
/obj/item/rig_module/vision,
/obj/item/rig_module/voice,
/obj/item/rig_module/teleporter,
/obj/item/rig_module/stealth_field,
/obj/item/rig_module/electrowarfare_suite,
/obj/item/rig_module/ai_container,
/obj/item/rig_module/device/door_hack,
/obj/item/rig_module/datajack,
/obj/item/rig_module/chem_dispenser/ninja,
/obj/item/rig_module/self_destruct,
/obj/item/rig_module/actuators
/obj/item/rig_module/actuators/combat
)
allowed_module_types = MODULE_GENERAL | MODULE_LIGHT_COMBAT | MODULE_HEAVY_COMBAT | MODULE_SPECIAL | MODULE_MEDICAL | MODULE_UTILITY | MODULE_VAURCA
/obj/item/clothing/head/helmet/space/rig/light/ninja
light_overlay = "helmet_light_dual_green"
light_color = "#3e7c3e"
/obj/item/weapon/rig/light/ninja/equipped
initial_modules = list(
/obj/item/rig_module/teleporter,
@@ -122,7 +131,7 @@
name = "insulated gloves"
siemens_coefficient = 0
/obj/item/clothing/shoes/rig/light/ninja
/obj/item/clothing/shoes/magboots/rig/light/ninja
silent = 1
/obj/item/clothing/suit/space/rig/light/ninja
@@ -223,4 +232,4 @@
/obj/item/rig_module/fabricator/energy_net,
/obj/item/rig_module/chem_dispenser/combat,
/obj/item/rig_module/mounted/xray
)
)
+7
View File
@@ -28,3 +28,10 @@
icon_state = "fulltracksuit"
item_state = "fulltracksuit"
contained_sprite = 1
/obj/item/clothing/under/syndicate/ninja
name = "slipsuit"
desc = "A sleek, form-fitting undersuit designed to retain the wearer's mobility. It almost feels like you're wearing nothing at all."
icon_state = "ninja"
item_state = "ninja"
worn_state = "ninja"