mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 07:03:30 +01:00
Deconflict
This commit is contained in:
@@ -196,6 +196,14 @@
|
||||
/datum/action/item_action/toggle_helmet_light
|
||||
name = "Toggle Helmet Light"
|
||||
|
||||
/datum/action/item_action/toggle_welding_screen/plasmaman
|
||||
name = "Toggle Welding Screen"
|
||||
|
||||
/datum/action/item_action/toggle_welding_screen/plasmaman/Trigger()
|
||||
var/obj/item/clothing/head/helmet/space/plasmaman/H = target
|
||||
if(istype(H))
|
||||
H.toggle_welding_screen(owner)
|
||||
|
||||
/datum/action/item_action/toggle_helmet_mode
|
||||
name = "Toggle Helmet Mode"
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
/datum/component/spraycan_paintable
|
||||
var/current_paint
|
||||
|
||||
/datum/component/spraycan_paintable/Initialize()
|
||||
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/Repaint)
|
||||
|
||||
/datum/component/spraycan_paintable/Destroy()
|
||||
RemoveCurrentCoat()
|
||||
return ..()
|
||||
|
||||
/datum/component/spraycan_paintable/proc/RemoveCurrentCoat()
|
||||
var/atom/A = parent
|
||||
A.remove_atom_colour(FIXED_COLOUR_PRIORITY, current_paint)
|
||||
|
||||
/datum/component/spraycan_paintable/proc/Repaint(datum/source, obj/item/toy/crayon/spraycan/spraycan, mob/living/user)
|
||||
if(!istype(spraycan) || user.a_intent == INTENT_HARM)
|
||||
return
|
||||
. = COMPONENT_NO_AFTERATTACK
|
||||
if(spraycan.capped)
|
||||
to_chat(user, "<span class='warning'>Take the cap off first!</span>")
|
||||
return
|
||||
if(spraycan.uses < 2)
|
||||
to_chat(user, "<span class ='warning'>There is not enough paint in the can!")
|
||||
return
|
||||
RemoveCurrentCoat()
|
||||
var/colour = spraycan.colour
|
||||
current_paint = colour
|
||||
var/atom/A = parent
|
||||
A.add_atom_colour(colour, FIXED_COLOUR_PRIORITY)
|
||||
playsound(spraycan, 'sound/effects/spray.ogg', 5, 1, 5)
|
||||
to_chat(user, "<span class='notice'>You spray [spraycan] on [A], painting it.</span>")
|
||||
@@ -1269,7 +1269,12 @@
|
||||
return
|
||||
src.debug_variables(DAT)
|
||||
|
||||
return
|
||||
if(href_list["copyoutfit"])
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
var/mob/living/carbon/human/H = locateUID(href_list["copyoutfit"])
|
||||
if(istype(H))
|
||||
H.copy_outfit()
|
||||
|
||||
/client/proc/view_var_Topic_list(href, href_list, hsrc)
|
||||
if(href_list["VarsList"])
|
||||
|
||||
@@ -30,11 +30,11 @@ Bonus
|
||||
if(prob(SYMPTOM_ACTIVATION_PROB))
|
||||
var/mob/living/carbon/M = A.affected_mob
|
||||
to_chat(M, "<span class='warning'>[pick("You feel cold.", "You start shivering.")]</span>")
|
||||
if(M.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
|
||||
if(M.bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT)
|
||||
Chill(M, A)
|
||||
return
|
||||
|
||||
/datum/symptom/shivering/proc/Chill(mob/living/M, datum/disease/advance/A)
|
||||
var/get_cold = (sqrtor0(16+A.totalStealth()*2))+(sqrtor0(21+A.totalResistance()*2))
|
||||
M.bodytemperature = min(M.bodytemperature - (get_cold * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1)
|
||||
return 1
|
||||
M.bodytemperature = max(M.bodytemperature - (get_cold * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1)
|
||||
return 1
|
||||
|
||||
@@ -100,15 +100,20 @@
|
||||
height = 400
|
||||
immediate_submit = TRUE
|
||||
|
||||
/datum/async_input/ranked/New()
|
||||
..()
|
||||
popup.add_script("rankedInput.js", 'html/browser/rankedInput.js')
|
||||
popup.add_head_content("<title>Drag and drop or use the buttons to reorder</title>")
|
||||
|
||||
/datum/async_input/ranked/render_choices()
|
||||
var/dat = "<div>"
|
||||
dat += "<table style='margin: auto; text-align: left;'>"
|
||||
dat += "<table id='choices' uid=[UID()] style='margin: auto; text-align: left;'>"
|
||||
for(var/i = 1, i <= choices.len, i++)
|
||||
var/choice = choices[i]
|
||||
dat += "<tr>"
|
||||
dat += "<td>[button("+", i != 1 ? "upvote=[i]" : "", , i == 1)]</td>"
|
||||
dat += "<td>[button("-", i != choices.len ? "downvote=[i]" : "", , i == choices.len)]</td>"
|
||||
dat += "<td>[i]. [choice]</td>"
|
||||
dat += "<td style='cursor: move;' index='[i]' ondrop='drop(event)' ondragover='allowDrop(event)' draggable='true' ondragstart='drag(event)'>[i]. [choice]</td>"
|
||||
dat += "</tr>"
|
||||
dat += "</table>"
|
||||
dat += "</div>"
|
||||
@@ -131,6 +136,15 @@
|
||||
show()
|
||||
return
|
||||
|
||||
if(href_list["cut"] && href_list["insert"])
|
||||
var/cut = text2num(href_list["cut"])
|
||||
var/insert = text2num(href_list["insert"])
|
||||
var/choice = choices[cut]
|
||||
choices.Cut(cut, cut + 1)
|
||||
choices.Insert(insert, choice)
|
||||
show()
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
/datum/async_input/autocomplete
|
||||
|
||||
@@ -19,14 +19,20 @@
|
||||
var/suit_store = null
|
||||
var/l_hand = null
|
||||
var/r_hand = null
|
||||
/// Should the toggle helmet proc be called on the helmet during equip
|
||||
var/toggle_helmet = TRUE
|
||||
var/pda = null
|
||||
var/internals_slot = null //ID of slot containing a gas tank
|
||||
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format
|
||||
var/list/implants = null
|
||||
var/list/cybernetic_implants = null
|
||||
var/box // Internals box. Will be inserted at the start of backpack_contents
|
||||
var/list/implants = list()
|
||||
var/list/cybernetic_implants = list()
|
||||
var/list/accessories = list()
|
||||
|
||||
var/list/chameleon_extras //extra types for chameleon outfit changes, mostly guns
|
||||
|
||||
var/can_be_admin_equipped = TRUE // Set to FALSE if your outfit requires runtime parameters
|
||||
|
||||
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
//to be overriden for customization depending on client prefs,species etc
|
||||
return
|
||||
@@ -82,12 +88,24 @@
|
||||
if(pda)
|
||||
equip_item(H, pda, slot_wear_pda)
|
||||
|
||||
if(uniform)
|
||||
for(var/path in accessories)
|
||||
var/obj/item/clothing/accessory/A = new path()
|
||||
var/obj/item/clothing/under/U = uniform
|
||||
U.attach_accessory(A, H)
|
||||
|
||||
if(!visualsOnly) // Items in pockets or backpack don't show up on mob's icon.
|
||||
if(l_pocket)
|
||||
equip_item(H, l_pocket, slot_l_store)
|
||||
if(r_pocket)
|
||||
equip_item(H, r_pocket, slot_r_store)
|
||||
|
||||
if(box)
|
||||
if(!backpack_contents)
|
||||
backpack_contents = list()
|
||||
backpack_contents.Insert(1, box)
|
||||
backpack_contents[box] = 1
|
||||
|
||||
for(var/path in backpack_contents)
|
||||
var/number = backpack_contents[path]
|
||||
for(var/i in 1 to number)
|
||||
@@ -97,6 +115,10 @@
|
||||
var/obj/item/organ/internal/O = new path(H)
|
||||
O.insert(H)
|
||||
|
||||
if(!H.head && toggle_helmet && istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit))
|
||||
var/obj/item/clothing/suit/space/hardsuit/HS = H.wear_suit
|
||||
HS.ToggleHelmet()
|
||||
|
||||
post_equip(H, visualsOnly)
|
||||
|
||||
if(!visualsOnly)
|
||||
@@ -159,3 +181,97 @@
|
||||
types += chameleon_extras
|
||||
listclearnulls(types)
|
||||
return types
|
||||
|
||||
/datum/outfit/proc/save_to_file(mob/admin)
|
||||
var/stored_data = get_json_data()
|
||||
var/json = json_encode(stored_data)
|
||||
// Kinda annoying but as far as I can tell you need to make actual file.
|
||||
var/f = file("data/TempOutfitUpload")
|
||||
fdel(f)
|
||||
WRITE_FILE(f, json)
|
||||
admin << ftp(f, "[name].json")
|
||||
|
||||
/datum/outfit/proc/load_from(list/outfit_data)
|
||||
// This could probably use more strict validation.
|
||||
name = outfit_data["name"]
|
||||
uniform = text2path(outfit_data["uniform"])
|
||||
suit = text2path(outfit_data["suit"])
|
||||
toggle_helmet = text2path(outfit_data["toggle_helmet"])
|
||||
back = text2path(outfit_data["back"])
|
||||
belt = text2path(outfit_data["belt"])
|
||||
gloves = text2path(outfit_data["gloves"])
|
||||
shoes = text2path(outfit_data["shoes"])
|
||||
head = text2path(outfit_data["head"])
|
||||
mask = text2path(outfit_data["mask"])
|
||||
l_ear = text2path(outfit_data["l_ear"])
|
||||
r_ear = text2path(outfit_data["r_ear"])
|
||||
glasses = text2path(outfit_data["glasses"])
|
||||
id = text2path(outfit_data["id"])
|
||||
pda = text2path(outfit_data["pda"])
|
||||
l_pocket = text2path(outfit_data["l_pocket"])
|
||||
r_pocket = text2path(outfit_data["r_pocket"])
|
||||
suit_store = text2path(outfit_data["suit_store"])
|
||||
r_hand = text2path(outfit_data["r_hand"])
|
||||
l_hand = text2path(outfit_data["l_hand"])
|
||||
internals_slot = text2path(outfit_data["internals_slot"])
|
||||
|
||||
var/list/backpack = outfit_data["backpack_contents"]
|
||||
backpack_contents = list()
|
||||
for(var/item in backpack)
|
||||
var/itype = text2path(item)
|
||||
if(itype)
|
||||
backpack_contents[itype] = backpack[item]
|
||||
box = text2path(outfit_data["box"])
|
||||
|
||||
var/list/impl = outfit_data["implants"]
|
||||
implants = list()
|
||||
for(var/I in impl)
|
||||
var/imptype = text2path(I)
|
||||
if(imptype)
|
||||
implants += imptype
|
||||
|
||||
var/list/cybernetic_impl = outfit_data["cybernetic_implants"]
|
||||
cybernetic_implants = list()
|
||||
for(var/I in cybernetic_impl)
|
||||
var/cybtype = text2path(I)
|
||||
if(cybtype)
|
||||
cybernetic_implants += cybtype
|
||||
|
||||
var/list/accessories = outfit_data["accessories"]
|
||||
accessories = list()
|
||||
for(var/A in accessories)
|
||||
var/accessorytype = text2path(A)
|
||||
if(accessorytype)
|
||||
accessories += accessorytype
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/outfit/proc/get_json_data()
|
||||
. = list()
|
||||
.["outfit_type"] = type
|
||||
.["name"] = name
|
||||
.["uniform"] = uniform
|
||||
.["suit"] = suit
|
||||
.["toggle_helmet"] = toggle_helmet
|
||||
.["back"] = back
|
||||
.["belt"] = belt
|
||||
.["gloves"] = gloves
|
||||
.["shoes"] = shoes
|
||||
.["head"] = head
|
||||
.["mask"] = mask
|
||||
.["l_ear"] = l_ear
|
||||
.["r_ear"] = r_ear
|
||||
.["glasses"] = glasses
|
||||
.["id"] = id
|
||||
.["pda"] = pda
|
||||
.["l_pocket"] = l_pocket
|
||||
.["r_pocket"] = r_pocket
|
||||
.["suit_store"] = suit_store
|
||||
.["r_hand"] = r_hand
|
||||
.["l_hand"] = l_hand
|
||||
.["internals_slot"] = internals_slot
|
||||
.["backpack_contents"] = backpack_contents
|
||||
.["box"] = box
|
||||
.["implants"] = implants
|
||||
.["cybernetic_implants"] = cybernetic_implants
|
||||
.["accessories"] = accessories
|
||||
|
||||
@@ -78,7 +78,6 @@
|
||||
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
belt = /obj/item/storage/belt/military
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
mask = /obj/item/clothing/mask/gas/syndicate
|
||||
l_ear = /obj/item/radio/headset/syndicate/alt
|
||||
glasses = /obj/item/clothing/glasses/night
|
||||
@@ -110,7 +109,6 @@
|
||||
/datum/outfit/admin/syndicate/operative/freedom
|
||||
name = "Syndicate Freedom Operative"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi/freedom
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
|
||||
|
||||
|
||||
/datum/outfit/admin/syndicate_strike_team
|
||||
@@ -794,41 +792,34 @@
|
||||
|
||||
/datum/outfit/admin/hardsuit/engineer
|
||||
name = "Engineer Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/engine
|
||||
|
||||
/datum/outfit/admin/hardsuit/ce
|
||||
name = "CE Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/elite
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/elite
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/engine/elite
|
||||
shoes = /obj/item/clothing/shoes/magboots/advance
|
||||
|
||||
/datum/outfit/admin/hardsuit/mining
|
||||
name = "Mining Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/mining
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/mining
|
||||
|
||||
/datum/outfit/admin/hardsuit/syndi
|
||||
name = "Syndi Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
shoes = /obj/item/clothing/shoes/magboots/syndie
|
||||
|
||||
/datum/outfit/admin/hardsuit/wizard
|
||||
name = "Wizard Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/wizard
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/wizard
|
||||
shoes = /obj/item/clothing/shoes/magboots
|
||||
|
||||
/datum/outfit/admin/hardsuit/medical
|
||||
name = "Medical Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/medical
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/medical
|
||||
|
||||
/datum/outfit/admin/hardsuit/atmos
|
||||
name = "Atmos Hardsuit"
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/atmos
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/atmos
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/engine/atmos
|
||||
|
||||
|
||||
/datum/outfit/admin/tournament
|
||||
@@ -963,7 +954,6 @@
|
||||
belt = /obj/item/claymore/ceremonial
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/magboots
|
||||
head = /obj/item/clothing/head/helmet/space/hardsuit/singuloth
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
l_ear = /obj/item/radio/headset/ert
|
||||
glasses = /obj/item/clothing/glasses/meson/cyber
|
||||
@@ -1111,7 +1101,6 @@
|
||||
backpack_contents = list(
|
||||
/obj/item/storage/box/engineer = 1,
|
||||
/obj/item/clothing/suit/space/hardsuit/wizard = 1,
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/wizard = 1,
|
||||
/obj/item/clothing/shoes/magboots = 1,
|
||||
/obj/item/kitchen/knife/ritual = 1,
|
||||
/obj/item/clothing/suit/wizrobe/red = 1,
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
/datum/outfit/plasmaman
|
||||
name = "Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman
|
||||
uniform = /obj/item/clothing/under/plasmaman
|
||||
r_hand = /obj/item/tank/plasma/plasmaman/belt/full
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
|
||||
/datum/outfit/plasmaman/bar
|
||||
name = "Bartender Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/white
|
||||
uniform = /obj/item/clothing/under/plasmaman/enviroslacks
|
||||
|
||||
/datum/outfit/plasmaman/chef
|
||||
name = "Chef Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/chef
|
||||
uniform = /obj/item/clothing/under/plasmaman/chef
|
||||
|
||||
/datum/outfit/plasmaman/botany
|
||||
name = "Botany Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/botany
|
||||
uniform = /obj/item/clothing/under/plasmaman/botany
|
||||
|
||||
/datum/outfit/plasmaman/librarian
|
||||
name = "Librarian Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/librarian
|
||||
uniform = /obj/item/clothing/under/plasmaman/librarian
|
||||
|
||||
/datum/outfit/plasmaman/chaplain
|
||||
name = "Chaplain Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/chaplain
|
||||
uniform = /obj/item/clothing/under/plasmaman/chaplain
|
||||
|
||||
/datum/outfit/plasmaman/janitor
|
||||
name = "Janitor Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/janitor
|
||||
uniform = /obj/item/clothing/under/plasmaman/janitor
|
||||
|
||||
/datum/outfit/plasmaman/security
|
||||
name = "Security Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/security
|
||||
uniform = /obj/item/clothing/under/plasmaman/security
|
||||
|
||||
/datum/outfit/plasmaman/detective
|
||||
name = "Detective Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/white
|
||||
uniform = /obj/item/clothing/under/plasmaman/enviroslacks
|
||||
l_ear = /obj/item/radio/headset/headset_sec
|
||||
|
||||
/datum/outfit/plasmaman/warden
|
||||
name = "Warden Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/security/warden
|
||||
uniform = /obj/item/clothing/under/plasmaman/security/warden
|
||||
|
||||
/datum/outfit/plasmaman/hos
|
||||
name = "Head of Security Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/security/hos
|
||||
uniform = /obj/item/clothing/under/plasmaman/security/hos
|
||||
|
||||
/datum/outfit/plasmaman/cargo
|
||||
name = "Cargo Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/cargo
|
||||
uniform = /obj/item/clothing/under/plasmaman/cargo
|
||||
|
||||
/datum/outfit/plasmaman/mining
|
||||
name = "Mining Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/mining
|
||||
uniform = /obj/item/clothing/under/plasmaman/mining
|
||||
|
||||
/datum/outfit/plasmaman/medical
|
||||
name = "Medical Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/medical
|
||||
uniform = /obj/item/clothing/under/plasmaman/medical
|
||||
|
||||
/datum/outfit/plasmaman/cmo
|
||||
name = "Chief Medical Officer Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/cmo
|
||||
uniform = /obj/item/clothing/under/plasmaman/cmo
|
||||
|
||||
/datum/outfit/plasmaman/viro
|
||||
name = "Virology Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/viro
|
||||
uniform = /obj/item/clothing/under/plasmaman/viro
|
||||
|
||||
/datum/outfit/plasmaman/chemist
|
||||
name = "Chemist Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/chemist
|
||||
uniform = /obj/item/clothing/under/plasmaman/chemist
|
||||
|
||||
/datum/outfit/plasmaman/genetics
|
||||
name = "Genetics Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/genetics
|
||||
uniform = /obj/item/clothing/under/plasmaman/genetics
|
||||
|
||||
/datum/outfit/plasmaman/science
|
||||
name = "Science Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/science
|
||||
uniform = /obj/item/clothing/under/plasmaman/science
|
||||
|
||||
/datum/outfit/plasmaman/rd
|
||||
name = "Research Director Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/rd
|
||||
uniform = /obj/item/clothing/under/plasmaman/rd
|
||||
|
||||
/datum/outfit/plasmaman/robotics
|
||||
name = "Robotics Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/robotics
|
||||
uniform = /obj/item/clothing/under/plasmaman/robotics
|
||||
|
||||
/datum/outfit/plasmaman/engineering
|
||||
name = "Engineering Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/engineering
|
||||
uniform = /obj/item/clothing/under/plasmaman/engineering
|
||||
|
||||
/datum/outfit/plasmaman/ce
|
||||
name = "Chief Engineer Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/engineering/ce
|
||||
uniform = /obj/item/clothing/under/plasmaman/engineering/ce
|
||||
|
||||
/datum/outfit/plasmaman/atmospherics
|
||||
name = "Atmospherics Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/atmospherics
|
||||
uniform = /obj/item/clothing/under/plasmaman/atmospherics
|
||||
|
||||
/datum/outfit/plasmaman/mime
|
||||
name = "Plasmamime"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/mime
|
||||
uniform = /obj/item/clothing/under/plasmaman/mime
|
||||
mask = /obj/item/clothing/mask/gas/mime
|
||||
|
||||
/datum/outfit/plasmaman/clown
|
||||
name = "Plasmaclown"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/clown
|
||||
uniform = /obj/item/clothing/under/plasmaman/clown
|
||||
mask = /obj/item/clothing/mask/gas/clown_hat
|
||||
|
||||
/datum/outfit/plasmaman/hop
|
||||
name = "Head of Personnel Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/hop
|
||||
uniform = /obj/item/clothing/under/plasmaman/hop
|
||||
|
||||
/datum/outfit/plasmaman/captain
|
||||
name = "Captain Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/captain
|
||||
uniform = /obj/item/clothing/under/plasmaman/captain
|
||||
|
||||
/datum/outfit/plasmaman/blueshield
|
||||
name = "Blueshield Plasmaman"
|
||||
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman/blueshield
|
||||
uniform = /obj/item/clothing/under/plasmaman/blueshield
|
||||
@@ -0,0 +1,190 @@
|
||||
// This outfit preserves varedits made on the items
|
||||
// Created from admin helpers.
|
||||
/datum/outfit/varedit
|
||||
var/list/vv_values
|
||||
var/list/stored_access
|
||||
var/update_id_name = FALSE //If the name of the human is same as the name on the id they're wearing we'll update provided id when equipping
|
||||
|
||||
/datum/outfit/varedit/pre_equip(mob/living/carbon/human/H, visualsOnly)
|
||||
H.delete_equipment() //Applying VV to wrong objects is not reccomended.
|
||||
. = ..()
|
||||
|
||||
/datum/outfit/varedit/proc/set_equipment_by_slot(slot, item_path)
|
||||
switch(slot)
|
||||
if(slot_w_uniform)
|
||||
uniform = item_path
|
||||
if(slot_back)
|
||||
back = item_path
|
||||
if(slot_wear_suit)
|
||||
suit = item_path
|
||||
if(slot_belt)
|
||||
belt = item_path
|
||||
if(slot_gloves)
|
||||
gloves = item_path
|
||||
if(slot_shoes)
|
||||
shoes = item_path
|
||||
if(slot_head)
|
||||
head = item_path
|
||||
if(slot_wear_mask)
|
||||
mask = item_path
|
||||
if(slot_l_ear)
|
||||
l_ear = item_path
|
||||
if(slot_r_ear)
|
||||
r_ear = item_path
|
||||
if(slot_glasses)
|
||||
glasses = item_path
|
||||
if(slot_wear_id)
|
||||
id = item_path
|
||||
if(slot_wear_pda)
|
||||
pda = item_path
|
||||
if(slot_s_store)
|
||||
suit_store = item_path
|
||||
if(slot_l_store)
|
||||
l_pocket = item_path
|
||||
if(slot_r_store)
|
||||
r_pocket = item_path
|
||||
|
||||
|
||||
/proc/collect_vv(obj/item/I)
|
||||
//Temporary/Internal stuff, do not copy these.
|
||||
var/static/list/ignored_vars = list("vars","x","y","z","plane","layer","override","animate_movement","pixel_step_size","screen_loc","fingerprintslast","tip_timer")
|
||||
|
||||
if(istype(I))
|
||||
var/list/vedits = list()
|
||||
for(var/varname in I.vars)
|
||||
if(!I.can_vv_get(varname))
|
||||
continue
|
||||
if(varname in ignored_vars)
|
||||
continue
|
||||
var/vval = I.vars[varname]
|
||||
//Does it even work ?
|
||||
if(vval == initial(I.vars[varname]))
|
||||
continue
|
||||
//Only text/numbers and icons variables to make it less weirdness prone.
|
||||
if(!istext(vval) && !isnum(vval) && !isicon(vval))
|
||||
continue
|
||||
vedits[varname] = I.vars[varname]
|
||||
return vedits
|
||||
|
||||
/mob/living/carbon/human/proc/copy_outfit()
|
||||
var/datum/outfit/varedit/O = new
|
||||
|
||||
//Copy equipment
|
||||
var/list/result = list()
|
||||
var/list/slots_to_check = list(slot_w_uniform, slot_back, slot_wear_suit, slot_belt, slot_gloves, slot_shoes, slot_head, slot_wear_mask, slot_l_ear, slot_r_ear, slot_glasses, slot_wear_id, slot_wear_pda, slot_s_store, slot_l_store, slot_r_store)
|
||||
for(var/s in slots_to_check)
|
||||
var/obj/item/I = get_item_by_slot(s)
|
||||
var/vedits = collect_vv(I)
|
||||
if(vedits)
|
||||
result["[s]"] = vedits
|
||||
if(istype(I))
|
||||
O.set_equipment_by_slot(s, I.type)
|
||||
|
||||
//Copy access
|
||||
O.stored_access = list()
|
||||
var/obj/item/id_slot = get_item_by_slot(slot_wear_id)
|
||||
if(id_slot)
|
||||
O.stored_access |= id_slot.GetAccess()
|
||||
var/obj/item/card/id/ID = id_slot.GetID()
|
||||
if(ID && ID.registered_name == real_name)
|
||||
O.update_id_name = TRUE
|
||||
|
||||
//Copy hands
|
||||
if(l_hand || r_hand) //Not in the mood to let outfits transfer amputees
|
||||
var/obj/item/left_hand = l_hand
|
||||
var/obj/item/right_hand = r_hand
|
||||
if(istype(left_hand))
|
||||
O.l_hand = left_hand.type
|
||||
var/vedits = collect_vv(left_hand)
|
||||
if(vedits)
|
||||
result["LHAND"] = vedits
|
||||
if(istype(right_hand))
|
||||
O.r_hand = right_hand.type
|
||||
var/vedits = collect_vv(left_hand)
|
||||
if(vedits)
|
||||
result["RHAND"] = vedits
|
||||
O.vv_values = result
|
||||
|
||||
//Copy backpack contents if exist.
|
||||
var/obj/item/backpack = get_item_by_slot(slot_back)
|
||||
if(istype(backpack) && LAZYLEN(backpack.contents) > 0)
|
||||
var/list/typecounts = list()
|
||||
for(var/obj/item/I in backpack)
|
||||
if(typecounts[I.type])
|
||||
typecounts[I.type] += 1
|
||||
else
|
||||
typecounts[I.type] = 1
|
||||
O.backpack_contents = typecounts
|
||||
//TODO : Copy varedits from backpack stuff too.
|
||||
|
||||
//Copy implants
|
||||
O.implants = list()
|
||||
for(var/obj/item/implant/I in contents)
|
||||
if(istype(I))
|
||||
O.implants |= I.type
|
||||
|
||||
// Copy cybernetic implants
|
||||
O.cybernetic_implants = list()
|
||||
for(var/obj/item/organ/internal/CI in contents)
|
||||
if(istype(CI))
|
||||
O.cybernetic_implants |= CI.type
|
||||
|
||||
// Copy accessories
|
||||
var/obj/item/clothing/under/uniform_slot = get_item_by_slot(slot_w_uniform)
|
||||
if(uniform_slot)
|
||||
O.accessories = list()
|
||||
for(var/obj/item/clothing/accessory/A in uniform_slot.accessories)
|
||||
if(istype(A))
|
||||
O.accessories |= A
|
||||
|
||||
//Copy to outfit cache
|
||||
var/outfit_name = stripped_input(usr, "Enter the outfit name")
|
||||
O.name = outfit_name
|
||||
GLOB.custom_outfits += O
|
||||
to_chat(usr, "Outfit registered, use select equipment to equip it.")
|
||||
|
||||
/datum/outfit/varedit/post_equip(mob/living/carbon/human/H, visualsOnly)
|
||||
. = ..()
|
||||
//Apply VV
|
||||
for(var/slot in vv_values)
|
||||
var/list/edits = vv_values[slot]
|
||||
var/obj/item/I
|
||||
switch(slot)
|
||||
if("LHAND")
|
||||
I = H.l_hand
|
||||
if("RHAND")
|
||||
I = H.r_hand
|
||||
else
|
||||
I = H.get_item_by_slot(text2num(slot))
|
||||
for(var/vname in edits)
|
||||
I.vv_edit_var(vname,edits[vname])
|
||||
//Apply access
|
||||
var/obj/item/id_slot = H.get_item_by_slot(slot_wear_id)
|
||||
if(id_slot)
|
||||
var/obj/item/card/id/card = id_slot.GetID()
|
||||
if(istype(card))
|
||||
card.access |= stored_access
|
||||
if(update_id_name)
|
||||
card.registered_name = H.real_name
|
||||
card.update_label()
|
||||
|
||||
/datum/outfit/varedit/get_json_data()
|
||||
. = .. ()
|
||||
.["stored_access"] = stored_access
|
||||
.["update_id_name"] = update_id_name
|
||||
var/list/stripped_vv = list()
|
||||
for(var/slot in vv_values)
|
||||
var/list/vedits = vv_values[slot]
|
||||
var/list/stripped_edits = list()
|
||||
for(var/edit in vedits)
|
||||
if(istext(vedits[edit]) || isnum(vedits[edit]) || isnull(vedits[edit]))
|
||||
stripped_edits[edit] = vedits[edit]
|
||||
if(stripped_edits.len)
|
||||
stripped_vv[slot] = stripped_edits
|
||||
.["vv_values"] = stripped_vv
|
||||
|
||||
/datum/outfit/varedit/load_from(list/outfit_data)
|
||||
. = ..()
|
||||
stored_access = outfit_data["stored_access"]
|
||||
vv_values = outfit_data["vv_values"]
|
||||
update_id_name = outfit_data["update_id_name"]
|
||||
@@ -36,7 +36,7 @@
|
||||
return
|
||||
|
||||
var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead
|
||||
magichead.flags |= NODROP //curses!
|
||||
magichead.flags |= NODROP | DROPDEL //curses!
|
||||
magichead.flags_inv = null //so you can still see their face
|
||||
magichead.voicechange = 1 //NEEEEIIGHH
|
||||
target.visible_message( "<span class='danger'>[target]'s face lights up in fire, and after the event a horse's head takes its place!</span>", \
|
||||
|
||||
@@ -40,6 +40,132 @@
|
||||
playsound(owner, 'sound/weapons/bite.ogg', 50, 1)
|
||||
owner.adjustBruteLoss(3)
|
||||
|
||||
/datum/status_effect/blooddrunk
|
||||
id = "blooddrunk"
|
||||
duration = 10
|
||||
tick_interval = 0
|
||||
alert_type = /obj/screen/alert/status_effect/blooddrunk
|
||||
var/last_health = 0
|
||||
var/last_bruteloss = 0
|
||||
var/last_fireloss = 0
|
||||
var/last_toxloss = 0
|
||||
var/last_oxyloss = 0
|
||||
var/last_cloneloss = 0
|
||||
var/last_staminaloss = 0
|
||||
|
||||
/obj/screen/alert/status_effect/blooddrunk
|
||||
name = "Blood-Drunk"
|
||||
desc = "You are drunk on blood! Your pulse thunders in your ears! Nothing can harm you!" //not true, and the item description mentions its actual effect
|
||||
icon_state = "blooddrunk"
|
||||
|
||||
/datum/status_effect/blooddrunk/on_apply()
|
||||
. = ..()
|
||||
if(.)
|
||||
owner.maxHealth *= 10
|
||||
owner.bruteloss *= 10
|
||||
owner.fireloss *= 10
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
for(var/X in H.bodyparts)
|
||||
var/obj/item/organ/external/BP = X
|
||||
BP.max_damage *= 10
|
||||
BP.min_broken_damage *= 10
|
||||
BP.brute_dam *= 10
|
||||
BP.burn_dam *= 10
|
||||
owner.toxloss *= 10
|
||||
owner.oxyloss *= 10
|
||||
owner.cloneloss *= 10
|
||||
owner.staminaloss *= 10
|
||||
owner.updatehealth()
|
||||
last_health = owner.health
|
||||
last_bruteloss = owner.getBruteLoss()
|
||||
last_fireloss = owner.getFireLoss()
|
||||
last_toxloss = owner.getToxLoss()
|
||||
last_oxyloss = owner.getOxyLoss()
|
||||
last_cloneloss = owner.getCloneLoss()
|
||||
last_staminaloss = owner.getStaminaLoss()
|
||||
add_attack_logs(owner, owner, "gained blood-drunk stun immunity")
|
||||
var/status = CANSTUN | CANWEAKEN | CANPARALYSE | IGNORESLOWDOWN
|
||||
owner.status_flags &= ~status
|
||||
owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1)
|
||||
|
||||
/datum/status_effect/blooddrunk/tick() //multiply the effect of healing by 10
|
||||
if(owner.health > last_health)
|
||||
var/needs_health_update = FALSE
|
||||
var/new_bruteloss = owner.getBruteLoss()
|
||||
if(new_bruteloss < last_bruteloss)
|
||||
var/heal_amount = (new_bruteloss - last_bruteloss) * 10
|
||||
owner.adjustBruteLoss(heal_amount, updating_health = FALSE)
|
||||
new_bruteloss = owner.getBruteLoss()
|
||||
needs_health_update = TRUE
|
||||
last_bruteloss = new_bruteloss
|
||||
|
||||
var/new_fireloss = owner.getFireLoss()
|
||||
if(new_fireloss < last_fireloss)
|
||||
var/heal_amount = (new_fireloss - last_fireloss) * 10
|
||||
owner.adjustFireLoss(heal_amount, updating_health = FALSE)
|
||||
new_fireloss = owner.getFireLoss()
|
||||
needs_health_update = TRUE
|
||||
last_fireloss = new_fireloss
|
||||
|
||||
var/new_toxloss = owner.getToxLoss()
|
||||
if(new_toxloss < last_toxloss)
|
||||
var/heal_amount = (new_toxloss - last_toxloss) * 10
|
||||
owner.adjustToxLoss(heal_amount, updating_health = FALSE)
|
||||
new_toxloss = owner.getToxLoss()
|
||||
needs_health_update = TRUE
|
||||
last_toxloss = new_toxloss
|
||||
|
||||
var/new_oxyloss = owner.getOxyLoss()
|
||||
if(new_oxyloss < last_oxyloss)
|
||||
var/heal_amount = (new_oxyloss - last_oxyloss) * 10
|
||||
owner.adjustOxyLoss(heal_amount, updating_health = FALSE)
|
||||
new_oxyloss = owner.getOxyLoss()
|
||||
needs_health_update = TRUE
|
||||
last_oxyloss = new_oxyloss
|
||||
|
||||
var/new_cloneloss = owner.getCloneLoss()
|
||||
if(new_cloneloss < last_cloneloss)
|
||||
var/heal_amount = (new_cloneloss - last_cloneloss) * 10
|
||||
owner.adjustCloneLoss(heal_amount, updating_health = FALSE)
|
||||
new_cloneloss = owner.getCloneLoss()
|
||||
needs_health_update = TRUE
|
||||
last_cloneloss = new_cloneloss
|
||||
|
||||
var/new_staminaloss = owner.getStaminaLoss()
|
||||
if(new_staminaloss < last_staminaloss)
|
||||
var/heal_amount = (new_staminaloss - last_staminaloss) * 10
|
||||
owner.adjustStaminaLoss(heal_amount, updating_health = FALSE)
|
||||
new_staminaloss = owner.getStaminaLoss()
|
||||
needs_health_update = TRUE
|
||||
last_staminaloss = new_staminaloss
|
||||
|
||||
if(needs_health_update)
|
||||
owner.updatehealth()
|
||||
owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1)
|
||||
last_health = owner.health
|
||||
|
||||
/datum/status_effect/blooddrunk/on_remove()
|
||||
tick()
|
||||
owner.maxHealth *= 0.1
|
||||
owner.bruteloss *= 0.1
|
||||
owner.fireloss *= 0.1
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
for(var/X in H.bodyparts)
|
||||
var/obj/item/organ/external/BP = X
|
||||
BP.brute_dam *= 0.1
|
||||
BP.burn_dam *= 0.1
|
||||
BP.max_damage /= 10
|
||||
BP.min_broken_damage /= 10
|
||||
owner.toxloss *= 0.1
|
||||
owner.oxyloss *= 0.1
|
||||
owner.cloneloss *= 0.1
|
||||
owner.staminaloss *= 0.1
|
||||
owner.updatehealth()
|
||||
add_attack_logs(owner, owner, "lost blood-drunk stun immunity")
|
||||
owner.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE | IGNORESLOWDOWN
|
||||
|
||||
/datum/status_effect/exercised
|
||||
id = "Exercised"
|
||||
duration = 1200
|
||||
|
||||
@@ -9,6 +9,39 @@
|
||||
if(owner.reagents)
|
||||
owner.reagents.del_reagent("holywater") //can't be deconverted
|
||||
|
||||
/datum/status_effect/crusher_mark
|
||||
id = "crusher_mark"
|
||||
duration = 300 //if you leave for 30 seconds you lose the mark, deal with it
|
||||
status_type = STATUS_EFFECT_REPLACE
|
||||
alert_type = null
|
||||
var/mutable_appearance/marked_underlay
|
||||
var/obj/item/twohanded/kinetic_crusher/hammer_synced
|
||||
|
||||
/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/twohanded/kinetic_crusher/new_hammer_synced)
|
||||
. = ..()
|
||||
if(.)
|
||||
hammer_synced = new_hammer_synced
|
||||
|
||||
/datum/status_effect/crusher_mark/on_apply()
|
||||
if(owner.mob_size >= MOB_SIZE_LARGE)
|
||||
marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2")
|
||||
marked_underlay.pixel_x = -owner.pixel_x
|
||||
marked_underlay.pixel_y = -owner.pixel_y
|
||||
owner.underlays += marked_underlay
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/status_effect/crusher_mark/Destroy()
|
||||
hammer_synced = null
|
||||
if(owner)
|
||||
owner.underlays -= marked_underlay
|
||||
QDEL_NULL(marked_underlay)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/crusher_mark/be_replaced()
|
||||
owner.underlays -= marked_underlay //if this is being called, we should have an owner at this point.
|
||||
..()
|
||||
|
||||
/datum/status_effect/saw_bleed
|
||||
id = "saw_bleed"
|
||||
duration = -1 //removed under specific conditions
|
||||
|
||||
@@ -1,5 +1,43 @@
|
||||
//entirely neutral or internal status effects go here
|
||||
|
||||
/datum/status_effect/crusher_damage //tracks the damage dealt to this mob by kinetic crushers
|
||||
id = "crusher_damage"
|
||||
duration = -1
|
||||
status_type = STATUS_EFFECT_UNIQUE
|
||||
alert_type = null
|
||||
var/total_damage = 0
|
||||
|
||||
/datum/status_effect/syphon_mark
|
||||
id = "syphon_mark"
|
||||
duration = 50
|
||||
status_type = STATUS_EFFECT_MULTIPLE
|
||||
alert_type = null
|
||||
on_remove_on_mob_delete = TRUE
|
||||
var/obj/item/borg/upgrade/modkit/bounty/reward_target
|
||||
|
||||
/datum/status_effect/syphon_mark/on_creation(mob/living/new_owner, obj/item/borg/upgrade/modkit/bounty/new_reward_target)
|
||||
. = ..()
|
||||
if(.)
|
||||
reward_target = new_reward_target
|
||||
|
||||
/datum/status_effect/syphon_mark/on_apply()
|
||||
if(owner.stat == DEAD)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/syphon_mark/proc/get_kill()
|
||||
if(!QDELETED(reward_target))
|
||||
reward_target.get_kill(owner)
|
||||
|
||||
/datum/status_effect/syphon_mark/tick()
|
||||
if(owner.stat == DEAD)
|
||||
get_kill()
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/syphon_mark/on_remove()
|
||||
get_kill()
|
||||
. = ..()
|
||||
|
||||
/datum/status_effect/high_five
|
||||
id = "high_five"
|
||||
duration = 40
|
||||
|
||||
@@ -160,12 +160,16 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
containername = "vox life support supplies crate"
|
||||
|
||||
/datum/supply_packs/emergency/plasmamansupport
|
||||
name = "Plasmaman Life Support Supplies"
|
||||
contains = list(/obj/item/clothing/mask/breath,
|
||||
/obj/item/tank/emergency_oxygen/plasma,
|
||||
/obj/item/clothing/suit/space/eva/plasmaman,
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman)
|
||||
cost = 75
|
||||
name = "Plasmaman Supply Kit"
|
||||
contains = list(/obj/item/clothing/under/plasmaman,
|
||||
/obj/item/clothing/under/plasmaman,
|
||||
/obj/item/tank/plasma/plasmaman/belt/full,
|
||||
/obj/item/tank/plasma/plasmaman/belt/full,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containername = "plasmaman life support supplies crate"
|
||||
access = access_eva
|
||||
|
||||
@@ -207,6 +207,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
cost = 10
|
||||
job = list("Mime")
|
||||
|
||||
/datum/uplink_item/jobspecific/pressure_mod
|
||||
name = "Kinetic Accelerator Pressure Mod"
|
||||
desc = "A modification kit which allows Kinetic Accelerators to do greatly increased damage while indoors. Occupies 35% mod capacity."
|
||||
reference = "KPM"
|
||||
item = /obj/item/borg/upgrade/modkit/indoors
|
||||
cost = 5 //you need two for full damage, so total of 10 for maximum damage
|
||||
job = list("Shaft Miner")
|
||||
|
||||
//Chef
|
||||
/datum/uplink_item/jobspecific/specialsauce
|
||||
name = "Chef Excellence's Special Sauce"
|
||||
@@ -892,6 +900,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
cost = 3
|
||||
surplus = 10
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/false_briefcase
|
||||
name = "False Bottomed Briefcase"
|
||||
desc = "A modified briefcase capable of storing and firing a gun under a false bottom. Use a screwdriver to pry away the false bottom and make modifications. Distinguishable upon close examination due to the added weight."
|
||||
reference = "FBBC"
|
||||
item = /obj/item/storage/briefcase/false_bottomed
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/soap
|
||||
name = "Syndicate Soap"
|
||||
desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. You can also drop it underfoot to slip people."
|
||||
@@ -1107,10 +1122,10 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/stealthy_tools/thermal
|
||||
name = "Thermal Imaging Glasses"
|
||||
desc = "These glasses are thermals disguised as engineers' optical meson scanners. They allow you to see organisms through walls by capturing the upper portion of the infra-red light spectrum, emitted as heat and light by objects. Hotter objects, such as warm bodies, cybernetic organisms and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks."
|
||||
name = "Thermal Chameleon Glasses"
|
||||
desc = "These glasses are thermals with Syndicate chameleon technology built into them. They allow you to see organisms through walls by capturing the upper portion of the infra-red light spectrum, emitted as heat and light by objects. Hotter objects, such as warm bodies, cybernetic organisms and artificial intelligence cores emit more of this light than cooler objects like walls and airlocks."
|
||||
reference = "THIG"
|
||||
item = /obj/item/clothing/glasses/thermal/syndi
|
||||
item = /obj/item/clothing/glasses/chameleon/thermal
|
||||
cost = 6
|
||||
|
||||
/datum/uplink_item/stealthy_tools/traitor_belt
|
||||
@@ -1305,7 +1320,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
/datum/uplink_item/suits/hardsuit/elite
|
||||
name = "Elite Syndicate Hardsuit"
|
||||
desc = "An advanced hardsuit with superior armor and mobility to the standard Syndicate Hardsuit."
|
||||
item = /obj/item/storage/box/syndie_kit/elite_hardsuit
|
||||
item = /obj/item/clothing/suit/space/hardsuit/syndi/elite
|
||||
cost = 8
|
||||
reference = "ESHS"
|
||||
excludefrom = list()
|
||||
@@ -1314,7 +1329,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
/datum/uplink_item/suits/hardsuit/shielded
|
||||
name = "Shielded Hardsuit"
|
||||
desc = "An advanced hardsuit with built in energy shielding. The shields will rapidly recharge when not under fire."
|
||||
item = /obj/item/storage/box/syndie_kit/shielded_hardsuit
|
||||
item = /obj/item/clothing/suit/space/hardsuit/shielded/syndi
|
||||
cost = 30
|
||||
reference = "SHS"
|
||||
excludefrom = list()
|
||||
|
||||
Reference in New Issue
Block a user