Hard upstream sync (#6951)
* maps - none of our changes included yet i'll get them in after i finish up the rest of the sync * sync part 1 - underscore folders in code * controllers folder * datums folder * game folder * cmon, work * modules - admin to awaymissions * cargo to events * fields to lighting * mapping > ruins * rest of the code folder * rest of the folders in the root directory * DME * fixes compiling errors. it compiles so it works * readds map changes * fixes dogborg module select * fixes typo in moduleselect_alternate_icon filepath
This commit is contained in:
@@ -68,6 +68,73 @@
|
||||
return 1
|
||||
|
||||
|
||||
/datum/action/chameleon_outfit
|
||||
name = "Select Chameleon Outfit"
|
||||
button_icon_state = "chameleon_outfit"
|
||||
var/list/outfit_options //By default, this list is shared between all instances. It is not static because if it were, subtypes would not be able to have their own. If you ever want to edit it, copy it first.
|
||||
|
||||
/datum/action/chameleon_outfit/New()
|
||||
..()
|
||||
initialize_outfits()
|
||||
|
||||
/datum/action/chameleon_outfit/proc/initialize_outfits()
|
||||
var/static/list/standard_outfit_options
|
||||
if(!standard_outfit_options)
|
||||
standard_outfit_options = list()
|
||||
for(var/path in subtypesof(/datum/outfit/job))
|
||||
var/datum/outfit/O = path
|
||||
if(initial(O.can_be_admin_equipped))
|
||||
standard_outfit_options[initial(O.name)] = path
|
||||
sortTim(standard_outfit_options, /proc/cmp_text_asc)
|
||||
outfit_options = standard_outfit_options
|
||||
|
||||
/datum/action/chameleon_outfit/Trigger()
|
||||
return select_outfit(owner)
|
||||
|
||||
/datum/action/chameleon_outfit/proc/select_outfit(mob/user)
|
||||
if(!user || !IsAvailable())
|
||||
return FALSE
|
||||
var/selected = input("Select outfit to change into", "Chameleon Outfit") as null|anything in outfit_options
|
||||
if(!IsAvailable() || QDELETED(src) || QDELETED(user))
|
||||
return FALSE
|
||||
var/outfit_type = outfit_options[selected]
|
||||
if(!outfit_type)
|
||||
return FALSE
|
||||
var/datum/outfit/O = new outfit_type()
|
||||
var/list/outfit_types = O.get_chameleon_disguise_info()
|
||||
|
||||
for(var/V in user.chameleon_item_actions)
|
||||
var/datum/action/item_action/chameleon/change/A = V
|
||||
var/done = FALSE
|
||||
for(var/T in outfit_types)
|
||||
for(var/name in A.chameleon_list)
|
||||
if(A.chameleon_list[name] == T)
|
||||
A.update_look(user, T)
|
||||
outfit_types -= T
|
||||
done = TRUE
|
||||
break
|
||||
if(done)
|
||||
break
|
||||
//hardsuit helmets/suit hoods
|
||||
if(O.toggle_helmet && (ispath(O.suit, /obj/item/clothing/suit/space/hardsuit) || ispath(O.suit, /obj/item/clothing/suit/hooded)) && ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
//make sure they are actually wearing the suit, not just holding it, and that they have a chameleon hat
|
||||
if(istype(H.wear_suit, /obj/item/clothing/suit/chameleon) && istype(H.head, /obj/item/clothing/head/chameleon))
|
||||
var/helmet_type
|
||||
if(ispath(O.suit, /obj/item/clothing/suit/space/hardsuit))
|
||||
var/obj/item/clothing/suit/space/hardsuit/hardsuit = O.suit
|
||||
helmet_type = initial(hardsuit.helmettype)
|
||||
else
|
||||
var/obj/item/clothing/suit/hooded/hooded = O.suit
|
||||
helmet_type = initial(hooded.hoodtype)
|
||||
|
||||
if(helmet_type)
|
||||
var/obj/item/clothing/head/chameleon/hat = H.head
|
||||
hat.chameleon_action.update_look(user, helmet_type)
|
||||
qdel(O)
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/action/item_action/chameleon/change
|
||||
name = "Chameleon Change"
|
||||
var/list/chameleon_blacklist = list() //This is a typecache
|
||||
@@ -77,6 +144,24 @@
|
||||
|
||||
var/emp_timer
|
||||
|
||||
/datum/action/item_action/chameleon/change/Grant(mob/M)
|
||||
if(M && (owner != M))
|
||||
if(!M.chameleon_item_actions)
|
||||
M.chameleon_item_actions = list(src)
|
||||
var/datum/action/chameleon_outfit/O = new /datum/action/chameleon_outfit()
|
||||
O.Grant(M)
|
||||
else
|
||||
M.chameleon_item_actions |= src
|
||||
..()
|
||||
|
||||
/datum/action/item_action/chameleon/change/Remove(mob/M)
|
||||
if(M && (M == owner))
|
||||
LAZYREMOVE(M.chameleon_item_actions, src)
|
||||
if(!LAZYLEN(M.chameleon_item_actions))
|
||||
var/datum/action/chameleon_outfit/O = locate(/datum/action/chameleon_outfit) in M.actions
|
||||
qdel(O)
|
||||
..()
|
||||
|
||||
/datum/action/item_action/chameleon/change/proc/initialize_disguises()
|
||||
if(button)
|
||||
button.name = "Change [chameleon_name] Appearance"
|
||||
@@ -85,9 +170,7 @@
|
||||
for(var/V in typesof(chameleon_type))
|
||||
if(ispath(V) && ispath(V, /obj/item))
|
||||
var/obj/item/I = V
|
||||
if(chameleon_blacklist[V] || (initial(I.flags_1) & ABSTRACT_1))
|
||||
continue
|
||||
if(!initial(I.icon_state) || !initial(I.item_state))
|
||||
if(chameleon_blacklist[V] || (initial(I.flags_1) & ABSTRACT_1) || !initial(I.icon_state))
|
||||
continue
|
||||
var/chameleon_item_name = "[initial(I.name)] ([initial(I.icon_state)])"
|
||||
chameleon_list[chameleon_item_name] = I
|
||||
@@ -195,6 +278,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/under/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/under/chameleon/broken/Initialize()
|
||||
@@ -221,6 +307,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/suit/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/suit/chameleon/broken/Initialize()
|
||||
@@ -246,6 +335,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/glasses/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/glasses/chameleon/broken/Initialize()
|
||||
@@ -272,6 +364,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/gloves/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/gloves/chameleon/broken/Initialize()
|
||||
@@ -298,6 +393,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/head/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/head/chameleon/broken/Initialize()
|
||||
@@ -345,6 +443,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/mask/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/mask/chameleon/broken/Initialize()
|
||||
@@ -395,6 +496,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/shoes/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/shoes/chameleon/noslip
|
||||
@@ -420,6 +524,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/storage/backpack/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/storage/backpack/chameleon/broken/Initialize()
|
||||
@@ -445,6 +552,9 @@
|
||||
STR.silent = TRUE
|
||||
|
||||
/obj/item/storage/belt/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/storage/belt/chameleon/broken/Initialize()
|
||||
@@ -463,6 +573,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/radio/headset/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/radio/headset/chameleon/broken/Initialize()
|
||||
@@ -482,8 +595,25 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/pda/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/pda/chameleon/broken/Initialize()
|
||||
. = ..()
|
||||
chameleon_action.emp_randomise(INFINITY)
|
||||
|
||||
/obj/item/stamp/chameleon
|
||||
var/datum/action/item_action/chameleon/change/chameleon_action
|
||||
|
||||
/obj/item/stamp/chameleon/Initialize()
|
||||
. = ..()
|
||||
chameleon_action = new(src)
|
||||
chameleon_action.chameleon_type = /obj/item/stamp
|
||||
chameleon_action.chameleon_name = "Stamp"
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/stamp/chameleon/broken/Initialize()
|
||||
. = ..()
|
||||
chameleon_action.emp_randomise(INFINITY)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
for(var/variable in user_vars_to_edit)
|
||||
if(variable in user.vars)
|
||||
LAZYSET(user_vars_remembered, variable, user.vars[variable])
|
||||
user.vars[variable] = user_vars_to_edit[variable]
|
||||
user.vv_edit_var(variable, user_vars_to_edit[variable])
|
||||
|
||||
/obj/item/clothing/examine(mob/user)
|
||||
..()
|
||||
|
||||
@@ -286,8 +286,10 @@
|
||||
glass_colour_type = /datum/client_colour/glass_colour/red
|
||||
|
||||
/obj/item/clothing/glasses/thermal/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
thermal_overload()
|
||||
..()
|
||||
|
||||
/obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete
|
||||
name = "chameleon thermals"
|
||||
@@ -305,7 +307,9 @@
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
/obj/item/clothing/glasses/thermal/syndi/emp_act(severity)
|
||||
..()
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
/obj/item/clothing/glasses/thermal/monocle
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
H.remove_hud_from(user)
|
||||
|
||||
/obj/item/clothing/glasses/hud/emp_act(severity)
|
||||
if(obj_flags & EMAGGED)
|
||||
. = ..()
|
||||
if(obj_flags & EMAGGED || . & EMP_PROTECT_SELF)
|
||||
return
|
||||
obj_flags |= EMAGGED
|
||||
desc = "[desc] The display is flickering slightly."
|
||||
@@ -96,6 +97,8 @@
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/chameleon/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
chameleon_action.emp_randomise()
|
||||
|
||||
|
||||
@@ -192,5 +195,7 @@
|
||||
user.update_inv_glasses()
|
||||
|
||||
/obj/item/clothing/glasses/hud/toggle/thermal/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
thermal_overload()
|
||||
..()
|
||||
|
||||
@@ -233,12 +233,6 @@
|
||||
icon_state = "knight_red"
|
||||
item_state = "knight_red"
|
||||
|
||||
/obj/item/clothing/head/helmet/knight/templar
|
||||
name = "crusader helmet"
|
||||
desc = "Deus Vult."
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
|
||||
/obj/item/clothing/head/helmet/skull
|
||||
name = "skull helmet"
|
||||
desc = "An intimidating tribal helmet, it doesn't look very comfortable."
|
||||
|
||||
@@ -55,24 +55,6 @@
|
||||
flags_inv = HIDEHAIR
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/cage
|
||||
name = "cage"
|
||||
desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is."
|
||||
alternate_worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
|
||||
icon_state = "cage"
|
||||
item_state = "cage"
|
||||
worn_x_dimension = 64
|
||||
worn_y_dimension = 64
|
||||
dynamic_hair_suffix = ""
|
||||
|
||||
|
||||
/obj/item/clothing/head/witchunter_hat
|
||||
name = "witchunter hat"
|
||||
desc = "This hat saw much use back in the day."
|
||||
icon_state = "witchhunterhat"
|
||||
item_state = "witchhunterhat"
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
//Detective
|
||||
/obj/item/clothing/head/fedora/det_hat
|
||||
name = "detective's fedora"
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/datum/outfit/vr
|
||||
name = "Basic VR"
|
||||
uniform = /obj/item/clothing/under/color/random
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
ears = /obj/item/radio/headset
|
||||
id = /obj/item/card/id
|
||||
|
||||
/datum/outfit/vr/post_equip(mob/living/carbon/human/H)
|
||||
var/datum/job/captain/J = new/datum/job/captain
|
||||
var/obj/item/card/id/id = H.wear_id
|
||||
if (id)
|
||||
id.access |= J.get_access()
|
||||
|
||||
/datum/outfit/vr/syndicate
|
||||
name = "Syndicate VR Operative - Basic"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
back = /obj/item/storage/backpack
|
||||
id = /obj/item/card/id/syndicate
|
||||
belt = /obj/item/gun/ballistic/automatic/pistol
|
||||
l_pocket = /obj/item/paper/fluff/vr/fluke_ops
|
||||
backpack_contents = list(/obj/item/storage/box/syndie=1,\
|
||||
/obj/item/kitchen/knife/combat/survival)
|
||||
|
||||
/datum/outfit/vr/syndicate/post_equip(mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
var/obj/item/radio/uplink/U = new /obj/item/radio/uplink/nuclear_restricted(H, H.key, 80)
|
||||
H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK)
|
||||
var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H)
|
||||
W.implant(H)
|
||||
var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H)
|
||||
E.implant(H)
|
||||
H.faction |= ROLE_SYNDICATE
|
||||
H.update_icons()
|
||||
|
||||
/obj/item/paper/fluff/vr/fluke_ops
|
||||
name = "Where is my uplink?"
|
||||
info = "Use the radio in your backpack."
|
||||
@@ -67,6 +67,9 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/space/chronos/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
var/mob/living/carbon/human/user = src.loc
|
||||
switch(severity)
|
||||
if(1)
|
||||
|
||||
@@ -189,11 +189,13 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/flightpack/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
var/damage = severity == 1 ? emp_strong_damage : emp_weak_damage
|
||||
if(emp_damage <= (emp_disable_threshold * 1.5))
|
||||
emp_damage += damage
|
||||
usermessage("WARNING: Class [severity] EMP detected! Circuit damage at [(emp_damage/emp_disable_threshold)*100]%!", "boldwarning")
|
||||
return ..()
|
||||
|
||||
//Proc to change amount of momentum the wearer has, or dampen all momentum by a certain amount.
|
||||
/obj/item/flightpack/proc/adjust_momentum(amountx, amounty, reduce_amount_total = 0)
|
||||
@@ -758,7 +760,7 @@
|
||||
item_state = "flightsuit"
|
||||
strip_delay = 30
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/flightsuit
|
||||
jetpack = null
|
||||
actions_types = list(/datum/action/item_action/flightsuit/toggle_helmet, /datum/action/item_action/flightsuit/toggle_boots, /datum/action/item_action/flightsuit/toggle_flightpack, /datum/action/item_action/flightsuit/lock_suit)
|
||||
@@ -1079,12 +1081,12 @@
|
||||
icon_state = "flighthelmet"
|
||||
item_state = "flighthelmet"
|
||||
item_color = "flight"
|
||||
resistance_flags = FIRE_PROOF
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
brightness_on = 7
|
||||
light_color = "#30ffff"
|
||||
armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 100)
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
var/list/datahuds = list(DATA_HUD_SECURITY_BASIC, DATA_HUD_MEDICAL_BASIC, DATA_HUD_DIAGNOSTIC_BASIC) //CITADEL NERF
|
||||
var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_BASIC)
|
||||
var/zoom_range = 12
|
||||
var/zoom = FALSE
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/flightpack/zoom)
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
soundloop.last_radiation = rad_record
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/emp_act(severity)
|
||||
..()
|
||||
. = ..()
|
||||
display_visor_message("[severity > 1 ? "Light" : "Strong"] electromagnetic pulse detected!")
|
||||
|
||||
|
||||
|
||||
@@ -234,9 +234,3 @@
|
||||
/obj/item/clothing/suit/armor/riot/knight/red
|
||||
icon_state = "knight_red"
|
||||
item_state = "knight_red"
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/knight/templar
|
||||
name = "crusader armour"
|
||||
desc = "God wills it!"
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
|
||||
@@ -23,22 +23,6 @@
|
||||
allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie
|
||||
name = "chaplain hoodie"
|
||||
desc = "This suit says to you 'hush'!"
|
||||
icon_state = "chaplain_hoodie"
|
||||
item_state = "chaplain_hoodie"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood
|
||||
|
||||
/obj/item/clothing/head/hooded/chaplain_hood
|
||||
name = "chaplain hood"
|
||||
desc = "For protecting your identity when immolating demons."
|
||||
icon_state = "chaplain_hood"
|
||||
body_parts_covered = HEAD
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
|
||||
/obj/item/clothing/suit/nun
|
||||
name = "nun robe"
|
||||
desc = "Maximum piety in this star system."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
item_state = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman,/obj/item/hypospray) //CITADEL ADD, Hyposprays to laboats
|
||||
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
togglename = "buttons"
|
||||
species_exception = list(/datum/species/golem)
|
||||
|
||||
@@ -52,11 +52,13 @@
|
||||
return
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
return
|
||||
active = 0
|
||||
icon_state = "reactiveoff"
|
||||
item_state = "reactiveoff"
|
||||
reactivearmor_cooldown = world.time + 200
|
||||
..()
|
||||
|
||||
//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!)
|
||||
/obj/item/clothing/suit/armor/reactive/teleport
|
||||
@@ -152,12 +154,21 @@
|
||||
siemens_coefficient = -1
|
||||
var/tesla_power = 25000
|
||||
var/tesla_range = 20
|
||||
var/tesla_boom = FALSE
|
||||
var/tesla_stun = FALSE
|
||||
var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/tesla/dropped(mob/user)
|
||||
..()
|
||||
if(istype(user))
|
||||
user.flags_1 &= ~TESLA_IGNORE_1
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/tesla/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item?
|
||||
user.flags_1 |= TESLA_IGNORE_1
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(!active)
|
||||
return 0
|
||||
return FALSE
|
||||
if(prob(hit_reaction_chance))
|
||||
if(world.time < reactivearmor_cooldown)
|
||||
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
|
||||
@@ -166,10 +177,9 @@
|
||||
owner.visible_message("<span class='danger'>The tesla capacitors on [owner]'s reactive tesla armor are still recharging! The armor merely emits some sparks.</span>")
|
||||
return
|
||||
owner.visible_message("<span class='danger'>[src] blocks [attack_text], sending out arcs of lightning!</span>")
|
||||
tesla_zap(owner,tesla_range,tesla_power,tesla_boom, tesla_stun)
|
||||
tesla_zap(owner, tesla_range, tesla_power, tesla_flags)
|
||||
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
|
||||
return 1
|
||||
|
||||
return TRUE
|
||||
|
||||
//Repulse
|
||||
|
||||
|
||||
@@ -614,7 +614,6 @@
|
||||
/obj/item/clothing/under/plasmaman
|
||||
name = "plasma envirosuit"
|
||||
desc = "A special containment suit that allows plasma-based lifeforms to exist safely in an oxygenated environment, and automatically extinguishes them in a crisis. Despite being airtight, it's not spaceworthy."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "plasmaman"
|
||||
item_state = "plasmaman"
|
||||
item_color = "plasmaman"
|
||||
|
||||
Reference in New Issue
Block a user