mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 13:05:44 +01:00
Ninja changes (#3851)
This changes the ninja suit to start off with only essential modules. The Ninja now gets telecrystals and access to a restricted uplink category filled with hardsuit modules. Also adds the EMAG hand module, EMP dissipation module, and emergency power generation module. Other changes include a buff across the board for ninja including an increase in their armor values, a buff towards their ninja modules (which they now have to buy), and changing their suit to say "stealth" instead of ominous. This should make the Ninja have a better chance against security while also ensuring it maintains its stealth antag title.
👍 5
This commit is contained in:
@@ -299,6 +299,7 @@
|
||||
#include "code\datums\uplink\highly visible and dangerous weapons.dm"
|
||||
#include "code\datums\uplink\implants.dm"
|
||||
#include "code\datums\uplink\medical.dm"
|
||||
#include "code\datums\uplink\ninja_modules.dm"
|
||||
#include "code\datums\uplink\specialty.dm"
|
||||
#include "code\datums\uplink\stealth and camouflage items.dm"
|
||||
#include "code\datums\uplink\stealthy and inconspicuous weapons.dm"
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/***************
|
||||
* Special Ninja Modules *
|
||||
***************/
|
||||
/datum/uplink_item/item/ninja_modules
|
||||
category = /datum/uplink_category/ninja_modules
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/energency_generator
|
||||
name = "Emergency Power Generator"
|
||||
desc = "An emergency use power generator that gives 1000 power to the suits battery. Has a long cooldown."
|
||||
item_cost = 4
|
||||
path = /obj/item/rig_module/emergency_powergenerator
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/energy_net
|
||||
name = "Energy Net"
|
||||
desc = "An unlimited use net, if the user has enough power, that can be thrown at others causing them to be trapped. The net can be broken with brute force.."
|
||||
item_cost = 4
|
||||
path = /obj/item/rig_module/fabricator/energy_net
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/stealth_field
|
||||
name = "Stealth Field"
|
||||
desc = "A module that allows the user to go invisible. Consumes power when active."
|
||||
item_cost = 6
|
||||
path = /obj/item/rig_module/stealth_field
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/normal_grenade_lancher
|
||||
name = "Standard Grenade Launcher"
|
||||
desc = "A shoulder mounted grenade launcher with 3 EMP, Smoke, and flashbang grenades.It can be refilled with more grenades."
|
||||
item_cost = 6
|
||||
path = /obj/item/rig_module/grenade_launcher
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/enery_blade
|
||||
name = "Energy Blade and dart launcher."
|
||||
desc = "A module that can produce a powerful energy blade in the users hand. It can also shoot stun-darts."
|
||||
item_cost = 8
|
||||
path = /obj/item/rig_module/mounted/energy_blade
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/matter_fab
|
||||
name = "Matter Fabricator"
|
||||
desc = "A hardsuit matter fabricator that can produce sharp ninja stars used for throwing."
|
||||
item_cost = 5
|
||||
path = /obj/item/rig_module/fabricator
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/sink
|
||||
name = "Power Sink"
|
||||
desc = "A module that sucks power out of powered items and into the users suit."
|
||||
item_cost = 4
|
||||
path = /obj/item/rig_module/power_sink
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/emag_hand
|
||||
name = "EMAG Hand Module"
|
||||
desc = "A module that allows the user to apply an EMAG effect to the targeted item."
|
||||
item_cost = 5
|
||||
path = /obj/item/rig_module/emag_hand
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/chem_injector
|
||||
name = "Chemical Injector"
|
||||
desc = "A chemical injector that allows the user to inject themsleves with medical chemicals."
|
||||
item_cost = 3
|
||||
path = /obj/item/rig_module/chem_dispenser
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/EMP_Shield
|
||||
name = "Active EMP Shielding"
|
||||
desc = "A very complicated module for a hardsuit that protects it to some degree from EMPs."
|
||||
item_cost = 4
|
||||
path = /obj/item/rig_module/emp_shielding
|
||||
|
||||
/datum/uplink_item/item/ninja_modules/combat_injector
|
||||
name = "Combat Injector"
|
||||
desc = "A chemical injector that allows the user to inject themsleves with combat chemicals."
|
||||
item_cost = 4
|
||||
path = /obj/item/rig_module/chem_dispenser/combat
|
||||
@@ -1,15 +1,25 @@
|
||||
/datum/uplink_category
|
||||
var/name = ""
|
||||
var/list/datum/uplink_item/items
|
||||
var/list/datum/antagonist/antag_roles
|
||||
|
||||
/datum/uplink_category/New()
|
||||
..()
|
||||
items = list()
|
||||
|
||||
/datum/uplink_category/proc/can_view(obj/item/device/uplink/U)
|
||||
for(var/antag_role in antag_roles)
|
||||
var/datum/antagonist/antag = all_antag_types[antag_role]
|
||||
if(antag.is_antagonist(U.uplink_owner))
|
||||
return 1
|
||||
|
||||
for(var/datum/uplink_item/item in items)
|
||||
if(item.can_view(U))
|
||||
return 1
|
||||
|
||||
if(!antag_roles.len)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
/datum/uplink_category/ammunition
|
||||
@@ -51,4 +61,7 @@
|
||||
/datum/uplink_category/specialty //snowflake antag items - a brave new frontier!
|
||||
name = "Specialised Items"
|
||||
|
||||
/datum/uplink_category/ninja_modules
|
||||
name = "Infiltration Items"
|
||||
antag_roles = list(MODE_NINJA)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ var/datum/antagonist/ninja/ninjas
|
||||
role_text_plural = "Ninja"
|
||||
bantype = "ninja"
|
||||
landmark_id = "ninjastart"
|
||||
welcome_text = "<span class='info'>You are an elite mercenary assassin of the Spider Clan. You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor.</span>"
|
||||
welcome_text = "<span class='info'>You are an elite stealth agent. You can equip your suit with the latest technology using your uplink.</span>"
|
||||
restricted_species = list("Diona")
|
||||
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_RANDSPAWN | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE
|
||||
antaghud_indicator = "hudninja"
|
||||
@@ -107,7 +107,7 @@ var/datum/antagonist/ninja/ninjas
|
||||
player.equip_to_slot_or_del(R, slot_l_ear)
|
||||
player.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(player), slot_w_uniform)
|
||||
player.equip_to_slot_or_del(new /obj/item/device/flashlight(player), slot_belt)
|
||||
player.equip_to_slot_or_del(new /obj/item/device/contract_uplink(player), slot_l_store)
|
||||
player.equip_to_slot_or_del(new /obj/item/device/ninja_uplink(player, player.mind), slot_l_store)
|
||||
create_id("Infiltrator", player)
|
||||
|
||||
var/obj/item/weapon/rig/light/ninja/ninjasuit = new(get_turf(player))
|
||||
|
||||
@@ -384,5 +384,24 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
||||
if(!message)
|
||||
return
|
||||
|
||||
command_announcement.Announce("[message]", title, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1, do_newscast=1, do_print=1);
|
||||
qdel(src)
|
||||
command_announcement.Announce("[message]", title, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
|
||||
qdel(src)
|
||||
|
||||
//ninja
|
||||
/obj/item/device/ninja_uplink
|
||||
name = "infiltrator uplink"
|
||||
desc = "A small device used for access to a restricted cache of specialized items."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "radio"
|
||||
flags = CONDUCT
|
||||
w_class = 2
|
||||
|
||||
/obj/item/device/ninja_uplink/New()
|
||||
..()
|
||||
hidden_uplink = new(src)
|
||||
hidden_uplink.uses = DEFAULT_TELECRYSTAL_AMOUNT
|
||||
hidden_uplink.nanoui_menu = 1
|
||||
|
||||
/obj/item/device/ninja_uplink/attack_self(mob/user as mob)
|
||||
if (hidden_uplink)
|
||||
hidden_uplink.trigger(user)
|
||||
@@ -18,7 +18,13 @@
|
||||
..()
|
||||
if(material.radioactivity>0 && istype(hit_atom,/mob/living))
|
||||
var/mob/living/M = hit_atom
|
||||
M.adjustToxLoss(rand(20,40))
|
||||
M.adjustToxLoss(rand(25,50))
|
||||
|
||||
/obj/item/weapon/material/star/ninja
|
||||
default_material = "uranium"
|
||||
default_material = "uranium"
|
||||
|
||||
/obj/item/weapon/material/star/ninja/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
if(prob(30) && istype(hit_atom,/mob/living))
|
||||
var/mob/living/M = hit_atom
|
||||
M.Weaken(7)
|
||||
@@ -481,31 +481,3 @@
|
||||
drain_loc = null
|
||||
interfaced_with = null
|
||||
total_power_drained = 0
|
||||
|
||||
/*
|
||||
//Maybe make this use power when active or something
|
||||
/obj/item/rig_module/emp_shielding
|
||||
name = "\improper EMP dissipation module"
|
||||
desc = "A bewilderingly complex bundle of fiber optics and chips."
|
||||
toggleable = 1
|
||||
usable = 0
|
||||
|
||||
activate_string = "Enable active EMP shielding"
|
||||
deactivate_string = "Disable active EMP shielding"
|
||||
|
||||
interface_name = "active EMP shielding system"
|
||||
interface_desc = "A highly experimental system that augments the hardsuit's existing EM shielding."
|
||||
var/protection_amount = 20
|
||||
|
||||
/obj/item/rig_module/emp_shielding/activate()
|
||||
if(!..())
|
||||
return
|
||||
|
||||
holder.emp_protection += protection_amount
|
||||
|
||||
/obj/item/rig_module/emp_shielding/deactivate()
|
||||
if(!..())
|
||||
return
|
||||
|
||||
holder.emp_protection = max(0,(holder.emp_protection - protection_amount))
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
* /obj/item/rig_module/teleporter
|
||||
* /obj/item/rig_module/fabricator/energy_net
|
||||
* /obj/item/rig_module/self_destruct
|
||||
* /obj/item/rig_module/emp_shielding
|
||||
* /obj/item/rig_module/emergency_powergenerator
|
||||
* /obj/item/rig_module/emag_hand
|
||||
*/
|
||||
|
||||
/obj/item/rig_module/stealth_field
|
||||
@@ -152,7 +155,7 @@
|
||||
engage_string = "Fabricate Net"
|
||||
|
||||
fabrication_type = /obj/item/weapon/energy_net
|
||||
use_power_cost = 70
|
||||
use_power_cost = 60
|
||||
|
||||
/obj/item/rig_module/fabricator/energy_net/engage(atom/target)
|
||||
|
||||
@@ -175,10 +178,10 @@
|
||||
|
||||
interface_name = "dead man's switch"
|
||||
interface_desc = "An integrated self-destruct module. When the wearer dies, so does the surrounding area. Do not press this button."
|
||||
var/list/explosion_values = list(1,2,4,5)
|
||||
var/list/explosion_values = list(3,4,5,6)
|
||||
|
||||
/obj/item/rig_module/self_destruct/small
|
||||
explosion_values = list(0,0,3,4)
|
||||
explosion_values = list(1,2,3,4)
|
||||
|
||||
/obj/item/rig_module/self_destruct/activate()
|
||||
return
|
||||
@@ -205,3 +208,111 @@
|
||||
holder.wearer.drop_from_inventory(src)
|
||||
qdel(holder)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/rig_module/emp_shielding
|
||||
name = "EMP dissipation module"
|
||||
desc = "A bewilderingly complex bundle of fiber optics and chips. Seems like it uses a good deal of power."
|
||||
active_power_cost = 10
|
||||
toggleable = 1
|
||||
usable = 0
|
||||
use_power_cost = 70
|
||||
module_cooldown = 30
|
||||
|
||||
activate_string = "Enable Active EMP Shielding"
|
||||
deactivate_string = "Disable Active EMP Shielding"
|
||||
|
||||
interface_name = "active EMP shielding system"
|
||||
interface_desc = "A highly experimental system that augments the hardsuit's existing EM shielding."
|
||||
var/protection_amount = 30
|
||||
|
||||
/obj/item/rig_module/emp_shielding/activate()
|
||||
if(!..())
|
||||
return
|
||||
|
||||
holder.emp_protection += protection_amount
|
||||
|
||||
/obj/item/rig_module/emp_shielding/deactivate()
|
||||
if(!..())
|
||||
return
|
||||
|
||||
holder.emp_protection = max(0,(holder.emp_protection - protection_amount))
|
||||
|
||||
/obj/item/rig_module/emergency_powergenerator
|
||||
name = "emergency power generator"
|
||||
desc = "A high yield power generating device that takes a long time to recharge."
|
||||
active_power_cost = 0
|
||||
toggleable = 0
|
||||
usable = 1
|
||||
confined_use = 1
|
||||
var/cooldown = 0
|
||||
|
||||
engage_string = "Use Emergency Power"
|
||||
|
||||
interface_name = "emergency power generator"
|
||||
interface_desc = "A high yield power generating device that takes a long time to recharge."
|
||||
var/generation_ammount = 1500
|
||||
|
||||
/obj/item/rig_module/emergency_powergenerator/engage()
|
||||
if(!..())
|
||||
return
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
if(cooldown)
|
||||
H << "<span class='danger'>There isn't enough power stored up yet!</span>"
|
||||
return 0
|
||||
else
|
||||
H << "<span class='danger'>Your suit emits a loud sound as power is rapidly injected into your suits battery!</span>"
|
||||
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)
|
||||
|
||||
/obj/item/rig_module/emergency_powergenerator/proc/reset_cooldown()
|
||||
cooldown = 0
|
||||
|
||||
/obj/item/rig_module/emag_hand
|
||||
name = "EMAG integrated hand"
|
||||
desc = "A complex uprade that allows the user to touch things with their hand and apply an EMAG effect. High power cost."
|
||||
use_power_cost = 100
|
||||
usable = 0
|
||||
toggleable = 1
|
||||
activates_on_touch = 1
|
||||
disruptive = 0
|
||||
|
||||
activate_string = "Enable EMAG"
|
||||
deactivate_string = "Disable EMAG"
|
||||
|
||||
interface_name = "enable EMAG"
|
||||
interface_desc = "A complex uprade that allows the user to touch things with their hand and apply an EMAG effect. High power cost."
|
||||
var/atom/interfaced_with
|
||||
module_cooldown = 4800
|
||||
|
||||
/obj/item/rig_module/emag_hand/activate()
|
||||
if(!..())
|
||||
return
|
||||
|
||||
/obj/item/rig_module/emag_hand/deactivate()
|
||||
if(!..())
|
||||
return
|
||||
|
||||
/obj/item/rig_module/emag_hand/engage(atom/target)
|
||||
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
if(interfaced_with)
|
||||
return 0
|
||||
|
||||
if(!target)
|
||||
return 1
|
||||
|
||||
if(!target.Adjacent(holder.wearer))
|
||||
return 0
|
||||
|
||||
holder.wearer << "<span class = 'danger'>You stick your hand on [target] shorting out some of its circuits!</span>"
|
||||
interfaced_with = target
|
||||
target.emag_act(user, src)
|
||||
addtimer(CALLBACK(src, /obj/item/rig_module/emag_hand/proc/reset_interface, 2))
|
||||
return 1
|
||||
|
||||
/obj/item/rig_module/emag_hand/proc/reset_interface()
|
||||
interfaced_with = null
|
||||
|
||||
@@ -72,20 +72,30 @@
|
||||
siemens_coefficient = 0
|
||||
|
||||
/obj/item/weapon/rig/light/ninja
|
||||
name = "ominous suit control module"
|
||||
suit_type = "ominous"
|
||||
desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins."
|
||||
name = "stealth suit control module"
|
||||
suit_type = "stealth suit"
|
||||
desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for stealth operations."
|
||||
icon_state = "ninja_rig"
|
||||
armor = list(melee = 50, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 30)
|
||||
emp_protection = 40 //change this to 30 if too high.
|
||||
armor = list(melee = 50, bullet = 35, laser = 35, energy = 30, bomb = 25, bio = 100, rad = 30)
|
||||
emp_protection = 40
|
||||
slowdown = 0
|
||||
|
||||
chest_type = /obj/item/clothing/suit/space/rig/light/ninja
|
||||
glove_type = /obj/item/clothing/gloves/rig/light/ninja
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/light/ninja
|
||||
boot_type = /obj/item/clothing/shoes/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/ai_container,
|
||||
/obj/item/rig_module/datajack,
|
||||
/obj/item/rig_module/self_destruct
|
||||
)
|
||||
|
||||
/obj/item/weapon/rig/light/ninja/equipped
|
||||
initial_modules = list(
|
||||
/obj/item/rig_module/teleporter,
|
||||
/obj/item/rig_module/stealth_field,
|
||||
@@ -102,12 +112,13 @@
|
||||
/obj/item/rig_module/actuators/combat
|
||||
)
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/clothing/gloves/rig/light/ninja
|
||||
name = "insulated gloves"
|
||||
siemens_coefficient = 0
|
||||
|
||||
/obj/item/clothing/shoes/rig/light/ninja
|
||||
silent = 1
|
||||
|
||||
/obj/item/clothing/suit/space/rig/light/ninja
|
||||
species_restricted = list("exclude","Diona","Xenomorph", "Golem")
|
||||
breach_threshold = 38 //comparable to regular hardsuits
|
||||
|
||||
Reference in New Issue
Block a user