mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 10:03:50 +01:00
Merge remote-tracking branch 'upstream/master' into departmental-clothing-vendors
This commit is contained in:
@@ -195,23 +195,16 @@
|
||||
if(target.status != LIGHT_EMPTY)
|
||||
AddShards(1, U)
|
||||
target.status = LIGHT_EMPTY
|
||||
target.update()
|
||||
|
||||
var/obj/item/light/L2 = new target.light_type()
|
||||
|
||||
target.status = L2.status
|
||||
target.switchcount = L2.switchcount
|
||||
var/obj/item/light/replacement = target.light_type
|
||||
target.status = LIGHT_OK
|
||||
target.switchcount = 0
|
||||
target.rigged = emagged
|
||||
target.brightness_range = L2.brightness_range
|
||||
target.brightness_power = L2.brightness_power
|
||||
target.brightness_color = L2.brightness_color
|
||||
target.brightness_range = initial(replacement.brightness_range)
|
||||
target.brightness_power = initial(replacement.brightness_power)
|
||||
target.brightness_color = initial(replacement.brightness_color)
|
||||
target.on = target.has_power()
|
||||
target.update()
|
||||
qdel(L2)
|
||||
|
||||
if(target.on && target.rigged)
|
||||
target.explode()
|
||||
return
|
||||
target.update(TRUE, TRUE, FALSE)
|
||||
|
||||
else
|
||||
to_chat(U, "[src]'s refill light blinks red.")
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
icon_state = "headset"
|
||||
item_state = "headset"
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/ears.dmi',
|
||||
"Vox Armalis" = 'icons/mob/species/armalis/ears.dmi'
|
||||
"Vox" = 'icons/mob/clothing/species/vox/ears.dmi',
|
||||
"Vox Armalis" = 'icons/mob/clothing/species/armalis/ears.dmi'
|
||||
) //We read you loud and skree-er.
|
||||
materials = list(MAT_METAL=75)
|
||||
canhear_range = 0 // can't hear headsets from very far away
|
||||
|
||||
@@ -16,12 +16,21 @@
|
||||
GLOBAL_LIST_INIT(metal_recipes, list(
|
||||
new /datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("barstool", /obj/structure/chair/stool/bar, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("chair (dark)", /obj/structure/chair, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("chair (light)", /obj/structure/chair/light, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("shuttle seat", /obj/structure/chair/comfy/shuttle, 2, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe_list("sofas", list(
|
||||
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, 1, one_per_turf = TRUE, on_floor = TRUE)
|
||||
)), \
|
||||
new /datum/stack_recipe_list("corporate sofas", list( \
|
||||
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa/corp, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/corp/left, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/corp/right, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corp/corner, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
)), \
|
||||
new /datum/stack_recipe("barber chair", /obj/structure/chair/barber, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("wheelchair", /obj/structure/chair/wheelchair, 15, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1),
|
||||
@@ -176,6 +185,11 @@ GLOBAL_LIST_INIT(wood_recipes, list(
|
||||
new /datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20),
|
||||
new /datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 10), \
|
||||
new /datum/stack_recipe("wooden chair", /obj/structure/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe_list("pews", list(
|
||||
new /datum/stack_recipe("pew (middle)", /obj/structure/chair/sofa/pew, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("pew (left)", /obj/structure/chair/sofa/pew/left, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("pew (right)", /obj/structure/chair/sofa/pew/right, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
)), \
|
||||
new /datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("dresser", /obj/structure/dresser, 30, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
@@ -241,6 +255,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
new/datum/stack_recipe("white beanie", /obj/item/clothing/head/beanie, 2), \
|
||||
null, \
|
||||
new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 3), \
|
||||
new/datum/stack_recipe("tattered blindfold", /obj/item/clothing/glasses/sunglasses/blindfold/fake, 2), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/cloth
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
item_state = "plutoniumcore"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
flags_2 = RAD_NO_CONTAMINATE_2 //Don't have the item itself become irradiated when it makes radiation.
|
||||
var/pulse = 0
|
||||
var/cooldown = 0
|
||||
var/pulseicon = "plutonium_core_pulse"
|
||||
|
||||
@@ -49,14 +48,42 @@
|
||||
icon = 'icons/obj/nuke_tools.dmi'
|
||||
icon_state = "core_container_empty"
|
||||
item_state = "metal"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //Don't want people trying to break it open with acid, then destroying the core.
|
||||
var/obj/item/nuke_core/plutonium/core
|
||||
var/dented = FALSE
|
||||
var/cracked = FALSE
|
||||
|
||||
/obj/item/nuke_core_container/Destroy()
|
||||
QDEL_NULL(core)
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/ex_act(severity)
|
||||
switch(severity)
|
||||
if(EXPLODE_DEVASTATE)
|
||||
if(!cracked)
|
||||
crack_open()
|
||||
if(EXPLODE_HEAVY)
|
||||
if(!dented)
|
||||
dented = TRUE
|
||||
|
||||
/obj/item/nuke_core_container/examine(mob/user)
|
||||
. = ..()
|
||||
if(cracked) // Cracked open.
|
||||
. += "<span class='warning'>It is broken, and can no longer store objects safely.</span>"
|
||||
else if(dented) // Not cracked, but dented.
|
||||
. += "<span class='notice'>[src] looks dented. Perhaps a bigger explosion may break it.</span>"
|
||||
else // Not cracked or dented.
|
||||
. += "Fine print on the box reads \"Cybersun Industries secure container, guaranteed thermite proof, assistant proof, and explosive resistant.\""
|
||||
|
||||
/obj/item/nuke_core_container/attack_hand(mob/user)
|
||||
if(cracked && core)
|
||||
unload(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/plutonium/new_core, mob/user)
|
||||
if(core || !istype(new_core))
|
||||
if(core || !istype(new_core) || cracked)
|
||||
return
|
||||
new_core.forceMove(src)
|
||||
core = new_core
|
||||
@@ -64,6 +91,12 @@
|
||||
to_chat(user, "<span class='warning'>Container is sealing...</span>")
|
||||
addtimer(CALLBACK(src, .proc/seal), 10 SECONDS)
|
||||
|
||||
/obj/item/nuke_core_container/proc/unload(mob/user)
|
||||
core.add_fingerprint(user)
|
||||
user.put_in_active_hand(core)
|
||||
core = null
|
||||
icon_state = "core_container_cracked_empty"
|
||||
|
||||
/obj/item/nuke_core_container/proc/seal()
|
||||
if(!QDELETED(core))
|
||||
STOP_PROCESSING(SSobj, core)
|
||||
@@ -73,7 +106,7 @@
|
||||
to_chat(loc, "<span class='warning'>[src] is permanently sealed, [core]'s radiation is contained.</span>")
|
||||
|
||||
/obj/item/nuke_core_container/attackby(obj/item/nuke_core/plutonium/core, mob/user)
|
||||
if(!istype(core))
|
||||
if(!istype(core) || cracked)
|
||||
return ..()
|
||||
|
||||
if(!user.drop_item())
|
||||
@@ -82,9 +115,20 @@
|
||||
else
|
||||
load(core, user)
|
||||
|
||||
/obj/item/nuke_core_container/proc/crack_open()
|
||||
visible_message("<span class='boldnotice'>[src] bursts open!</span>")
|
||||
if(core)
|
||||
START_PROCESSING(SSobj, core)
|
||||
icon_state = "core_container_cracked_loaded"
|
||||
else
|
||||
icon_state = "core_container_cracked_empty"
|
||||
name = "broken nuke core container"
|
||||
cracked = TRUE
|
||||
|
||||
/obj/item/paper/guides/antag/nuke_instructions
|
||||
info = "How to break into a Nanotrasen nuclear device and remove its plutonium core:<br>\
|
||||
<ul>\
|
||||
<li>Acquire some clothing that protects you from radiation, due to the radioactivity of the core.</li>\
|
||||
<li>Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel.</li>\
|
||||
<li>Dislodge and remove the front panel with a crowbar.</li>\
|
||||
<li>Cut the inner metal plate with a welding tool.</li>\
|
||||
@@ -99,7 +143,7 @@
|
||||
/obj/item/paper/guides/antag/supermatter_sliver
|
||||
info = "How to safely extract a supermatter sliver:<br>\
|
||||
<ul>\
|
||||
<li>Approach an active supermatter crystal with radiation shielded personal protective equipment. DO NOT MAKE PHYSICAL CONTACT.</li>\
|
||||
<li>Approach an active supermatter crystal with radiation shielded personal protective equipment, and active magboots. DO NOT MAKE PHYSICAL CONTACT.</li>\
|
||||
<li>Use a supermatter scalpel (provided) to slice off a sliver of the crystal.</li>\
|
||||
<li>Use supermatter extraction tongs (also provided) to safely pick up the sliver you sliced off.</li>\
|
||||
<li>Physical contact of any object with the sliver will dust the object, as well as yourself.</li>\
|
||||
@@ -183,7 +227,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/load(obj/item/retractor/supermatter/I, mob/user)
|
||||
if(!istype(I) || !I.sliver)
|
||||
if(!istype(I) || !I.sliver || sliver)
|
||||
return
|
||||
I.sliver.forceMove(src)
|
||||
sliver = I.sliver
|
||||
@@ -202,13 +246,56 @@
|
||||
if(ismob(loc))
|
||||
to_chat(loc, "<span class='warning'>[src] is permanently sealed, [sliver] is safely contained.</span>")
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/unload(obj/item/retractor/supermatter/I, mob/user)
|
||||
if(!istype(I) || I.sliver)
|
||||
return
|
||||
sliver.forceMove(I)
|
||||
I.sliver = sliver
|
||||
sliver = null
|
||||
I.icon_state = "supermatter_tongs_loaded"
|
||||
I.item_state = "supermatter_tongs_loaded"
|
||||
icon_state = "core_container_cracked_empty"
|
||||
to_chat(user, "<span class='notice'>You carefully pick up [I.sliver] with [I].</span>")
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/attackby(obj/item/retractor/supermatter/tongs, mob/user)
|
||||
if(istype(tongs))
|
||||
//try to load shard into core
|
||||
load(tongs, user)
|
||||
if(cracked)
|
||||
//lets take that shard out
|
||||
unload(tongs, user)
|
||||
else
|
||||
//try to load shard into core
|
||||
load(tongs, user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/attack_hand(mob/user)
|
||||
if(cracked && sliver) //What did we say about touching the shard...
|
||||
if(!isliving(user) || user.status_flags & GODMODE)
|
||||
return FALSE
|
||||
user.visible_message("<span class='danger'>[user] reaches out and tries to pick up [sliver]. [user.p_their()] body starts to glow and bursts into flames before flashing into dust!</span>",
|
||||
"<span class='userdanger'>You reach for [sliver] with your hands. That was dumb.</span>",
|
||||
"<span class='italics'>Everything suddenly goes silent.</span>")
|
||||
radiation_pulse(user, 500, 2)
|
||||
playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE)
|
||||
message_admins("[sliver] has consumed [key_name_admin(user)] [ADMIN_JMP(src)].")
|
||||
investigate_log("has consumed [key_name(user)].", "supermatter")
|
||||
user.dust()
|
||||
icon_state = "core_container_cracked_empty"
|
||||
qdel(sliver)
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/crack_open()
|
||||
visible_message("<span class='boldnotice'>[src] bursts open!</span>")
|
||||
if(sliver)
|
||||
START_PROCESSING(SSobj, sliver)
|
||||
icon_state = "supermatter_container_cracked_loaded"
|
||||
else
|
||||
icon_state = "core_container_cracked_empty"
|
||||
name = "broken supermatter bin"
|
||||
cracked = TRUE
|
||||
|
||||
/obj/item/scalpel/supermatter
|
||||
name = "supermatter scalpel"
|
||||
desc = "A scalpel with a fragile tip of condensed hyper-noblium gas, searingly cold to the touch, that can safely shave a sliver off a supermatter crystal."
|
||||
@@ -267,6 +354,8 @@
|
||||
investigate_log("has irradiated [key_name(victim)].", "supermatter")
|
||||
else if(istype(AM, /obj/singularity))
|
||||
return
|
||||
else if(istype(AM, /obj/item/nuke_core_container))
|
||||
return
|
||||
else
|
||||
investigate_log("has consumed [AM].", "supermatter")
|
||||
qdel(AM)
|
||||
|
||||
@@ -67,9 +67,9 @@
|
||||
slot_flags = SLOT_HEAD
|
||||
dog_fashion = /datum/dog_fashion/head/fried_vox_empty
|
||||
sprite_sheets = list(
|
||||
"Skrell" = 'icons/mob/species/skrell/head.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/head.dmi',
|
||||
"Kidan" = 'icons/mob/species/kidan/head.dmi'
|
||||
"Skrell" = 'icons/mob/clothing/species/skrell/head.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/head.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/head.dmi'
|
||||
)
|
||||
|
||||
/obj/item/trash/pistachios
|
||||
|
||||
@@ -33,11 +33,11 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
var/list/list_reagents = list("nicotine" = 40)
|
||||
var/first_puff = TRUE // the first puff is a bit more reagents ingested
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/mask.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/mask.dmi',
|
||||
"Tajaran" = 'icons/mob/species/tajaran/mask.dmi',
|
||||
"Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi',
|
||||
"Grey" = 'icons/mob/species/grey/mask.dmi')
|
||||
"Vox" = 'icons/mob/clothing/species/vox/mask.dmi',
|
||||
"Unathi" = 'icons/mob/clothing/species/unathi/mask.dmi',
|
||||
"Tajaran" = 'icons/mob/clothing/species/tajaran/mask.dmi',
|
||||
"Vulpkanin" = 'icons/mob/clothing/species/vulpkanin/mask.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/mask.dmi')
|
||||
|
||||
|
||||
/obj/item/clothing/mask/cigarette/New()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
actions_types = list(/datum/action/item_action/toggle_paddles)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/back.dmi'
|
||||
"Vox" = 'icons/mob/clothing/species/vox/back.dmi'
|
||||
)
|
||||
|
||||
var/paddles_on_defib = TRUE //if the paddles are on the defib (TRUE)
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
resistance_flags = NONE
|
||||
max_integrity = 300
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/back.dmi',
|
||||
"Vox Armalis" = 'icons/mob/species/armalis/back.dmi',
|
||||
"Grey" = 'icons/mob/species/grey/back.dmi'
|
||||
"Vox" = 'icons/mob/clothing/species/vox/back.dmi',
|
||||
"Vox Armalis" = 'icons/mob/clothing/species/armalis/back.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/back.dmi'
|
||||
) //For Armalis anything but this and the nitrogen tank will use the default backpack icon.
|
||||
|
||||
/obj/item/storage/backpack/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
|
||||
@@ -97,9 +97,8 @@
|
||||
"<span class='danger'>May the power of [deity_name] compel you to be healed!</span>")
|
||||
playsound(loc, "punch", 25, 1, -1)
|
||||
else
|
||||
if(!istype(H.head, /obj/item/clothing/head/helmet))
|
||||
M.adjustBrainLoss(10)
|
||||
to_chat(M, "<span class='warning'>You feel dumber.</span>")
|
||||
M.adjustBrainLoss(10)
|
||||
to_chat(M, "<span class='warning'>You feel dumber.</span>")
|
||||
H.visible_message("<span class='danger'>[user] beats [H == user ? "[user.p_them()]self" : "[H]"] over the head with [src]!</span>")
|
||||
playsound(src.loc, "punch", 25, 1, -1)
|
||||
else
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
/obj/item/storage/firstaid/toxin/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = pick("antitoxin", "antitoxfirstaid", "antitoxfirstaid2", "antitoxfirstaid3")
|
||||
icon_state = pick("antitoxin", "antitoxfirstaid", "antitoxfirstaid2")
|
||||
|
||||
/obj/item/storage/firstaid/toxin/populate_contents()
|
||||
for(var/I in 1 to 3)
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
name = "nitrogen tank"
|
||||
desc = "A tank of nitrogen."
|
||||
icon_state = "oxygen_fr"
|
||||
sprite_sheets = list("Vox Armalis" = 'icons/mob/species/armalis/back.dmi') //Do it for Big Bird.
|
||||
sprite_sheets = list("Vox Armalis" = 'icons/mob/clothing/species/armalis/back.dmi') //Do it for Big Bird.
|
||||
distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
|
||||
|
||||
/obj/item/tank/internals/nitrogen/populate_gas()
|
||||
@@ -188,7 +188,7 @@
|
||||
name = "vox specialized nitrogen tank"
|
||||
desc = "A high-tech nitrogen tank designed specifically for Vox."
|
||||
icon_state = "emergency_vox"
|
||||
sprite_sheets = list("Vox Armalis" = 'icons/mob/species/armalis/belt.dmi') //Do it for Big Bird.
|
||||
sprite_sheets = list("Vox Armalis" = 'icons/mob/clothing/species/armalis/belt.dmi') //Do it for Big Bird.
|
||||
volume = 35
|
||||
|
||||
/obj/item/tank/internals/emergency_oxygen/double/vox/populate_gas()
|
||||
|
||||
Reference in New Issue
Block a user