mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-02-08 07:08:30 +00:00
Polaris sync
This commit is contained in:
@@ -155,12 +155,24 @@
|
||||
var/mob/living/carbon/human/H = AM
|
||||
H.in_stasis = 1
|
||||
src.used = 1
|
||||
|
||||
if(istype(AM, /obj/item/organ))
|
||||
var/obj/item/organ/O = AM
|
||||
O.preserved = 1
|
||||
for(var/obj/item/organ/organ in O)
|
||||
organ.preserved = 1
|
||||
..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/Exited(atom/movable/AM)
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/human/H = AM
|
||||
H.in_stasis = 0
|
||||
|
||||
if(istype(AM, /obj/item/organ))
|
||||
var/obj/item/organ/O = AM
|
||||
O.preserved = 0
|
||||
for(var/obj/item/organ/organ in O)
|
||||
organ.preserved = 0
|
||||
..()
|
||||
|
||||
/obj/structure/closet/body_bag/cryobag/return_air() //Used to make stasis bags protect from vacuum.
|
||||
|
||||
@@ -222,6 +222,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
|
||||
/mob/observer/dead
|
||||
var/datum/exonet_protocol/exonet = null
|
||||
var/list/exonet_messages = list()
|
||||
|
||||
// Proc: New()
|
||||
// Parameters: None
|
||||
@@ -305,6 +306,10 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
if(comm.exonet)
|
||||
im_contacts_ui[++im_contacts_ui.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address, "ref" = "\ref[comm]")
|
||||
|
||||
for(var/mob/observer/dead/ghost in im_contacts)
|
||||
if(ghost.exonet)
|
||||
im_contacts_ui[++im_contacts_ui.len] = list("name" = sanitize(ghost.name), "address" = ghost.exonet.address, "ref" = "\ref[ghost]")
|
||||
|
||||
//Actual messages.
|
||||
for(var/I in im_list)
|
||||
im_list_ui[++im_list_ui.len] = list("address" = I["address"], "to_address" = I["to_address"], "im" = I["im"])
|
||||
@@ -411,6 +416,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
if(text)
|
||||
exonet.send_message(their_address, "text", text)
|
||||
im_list += list(list("address" = exonet.address, "to_address" = their_address, "im" = text))
|
||||
log_pda("[usr] (COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]")
|
||||
|
||||
if(href_list["disconnect"])
|
||||
var/name_to_disconnect = href_list["disconnect"]
|
||||
@@ -493,7 +499,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Proc: receive_exonet_message()
|
||||
// Parameters: 3 (origin atom - the source of the message's holder, origin_address - where the message came from, message - the message received)
|
||||
// Description: Handles voice requests and invite messages originating from both real communicators and ghosts. Also includes a ping response.
|
||||
/mob/observer/dead/receive_exonet_message(origin_atom, origin_address, message)
|
||||
/mob/observer/dead/receive_exonet_message(origin_atom, origin_address, message, text)
|
||||
if(message == "voice")
|
||||
if(istype(origin_atom, /obj/item/device/communicator))
|
||||
var/obj/item/device/communicator/comm = origin_atom
|
||||
@@ -508,7 +514,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
var/random = rand(450,700)
|
||||
random = random / 10
|
||||
exonet.send_message(origin_address, "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms")
|
||||
if(message == "text") //Ghosts don't get texting yet. Mostly for spam prevention by ghosts but also due to ui requirements not sorted out yet.
|
||||
if(message == "text")
|
||||
src << "<span class='notice'>\icon[origin_atom] Received text message from [origin_atom]: <b>\"[text]\"</b></span>"
|
||||
exonet_messages.Add("<b>From [origin_atom]:</b><br>[text]")
|
||||
return
|
||||
|
||||
// Proc: register_device()
|
||||
@@ -533,7 +541,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
communicating |= comm
|
||||
listening_objects |= src
|
||||
update_icon()
|
||||
|
||||
|
||||
// Proc: del_communicating()
|
||||
// Parameters: 1 (comm - the communicator to remove from communicating)
|
||||
// Description: Used when this communicator is being asked to stop relaying say/me messages to another
|
||||
@@ -732,7 +740,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
/obj/item/device/communicator/proc/request_im(var/atom/candidate, var/origin_address, var/text)
|
||||
var/who = null
|
||||
if(isobserver(candidate))
|
||||
return
|
||||
var/mob/observer/dead/ghost = candidate
|
||||
who = ghost
|
||||
im_list += list(list("address" = origin_address, "to_address" = exonet.address, "im" = text))
|
||||
else if(istype(candidate, /obj/item/device/communicator))
|
||||
var/obj/item/device/communicator/comm = candidate
|
||||
who = comm.owner
|
||||
@@ -811,7 +821,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
if(!T) return
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display
|
||||
var/list/mobs_to_relay = in_range["mobs"]
|
||||
|
||||
|
||||
for(var/mob/mob in mobs_to_relay) //We can't use visible_message(), or else we will get an infinite loop if two communicators hear each other.
|
||||
var/dst = get_dist(get_turf(mob),get_turf(comm))
|
||||
if(dst <= video_range)
|
||||
@@ -827,7 +837,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Description: Relays the speech to all linked communicators.
|
||||
/obj/item/device/communicator/hear_talk(mob/living/M, text, verb, datum/language/speaking)
|
||||
for(var/obj/item/device/communicator/comm in communicating)
|
||||
|
||||
|
||||
var/turf/T = get_turf(comm)
|
||||
if(!T) return
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0)
|
||||
@@ -915,6 +925,71 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
|
||||
src << "A communications request has been sent to [chosen_communicator]. Now you need to wait until someone answers."
|
||||
|
||||
// Verb: text_communicator()
|
||||
// Parameters: None
|
||||
// Description: Allows a ghost to send a text message to a communicator.
|
||||
/mob/observer/dead/verb/text_communicator()
|
||||
set category = "Ghost"
|
||||
set name = "Text Communicator"
|
||||
set desc = "If there is a communicator available, send a text message to it."
|
||||
|
||||
if(ticker.current_state < GAME_STATE_PLAYING)
|
||||
src << "<span class='danger'>The game hasn't started yet!</span>"
|
||||
return
|
||||
|
||||
if (!src.stat)
|
||||
return
|
||||
|
||||
if (usr != src)
|
||||
return //something is terribly wrong
|
||||
|
||||
for(var/mob/living/L in mob_list) //Simple check so you don't have dead people calling.
|
||||
if(src.client.prefs.real_name == L.real_name)
|
||||
src << "<span class='danger'>Your identity is already present in the game world. Please load in a different character first.</span>"
|
||||
return
|
||||
|
||||
var/obj/machinery/exonet_node/E = get_exonet_node()
|
||||
if(!E || !E.on || !E.allow_external_communicators)
|
||||
src << "<span class='danger'>The Exonet node at telecommunications is down at the moment, or is actively blocking you, so your call can't go through.</span>"
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
for(var/obj/item/device/communicator/comm in all_communicators)
|
||||
if(!comm.network_visibility || !comm.exonet || !comm.exonet.address)
|
||||
continue
|
||||
choices.Add(comm)
|
||||
|
||||
if(!choices.len)
|
||||
src << "<span class='danger'>There are no available communicators, sorry.</span>"
|
||||
return
|
||||
|
||||
var/choice = input(src,"Send a text message to whom?") as null|anything in choices
|
||||
if(choice)
|
||||
var/obj/item/device/communicator/chosen_communicator = choice
|
||||
var/mob/observer/dead/O = src
|
||||
var/text_message = sanitize(input(src, "What do you want the message to say?")) as message
|
||||
if(text_message && O.exonet)
|
||||
O.exonet.send_message(chosen_communicator.exonet.address, "text", text_message)
|
||||
|
||||
src << "<span class='notice'>You have sent '[text_message]' to [chosen_communicator].</span>."
|
||||
exonet_messages.Add("<b>To [chosen_communicator]:</b><br>[text_message]")
|
||||
log_pda("[usr] (COMM: [src]) sent \"[text_message]\" to [chosen_communicator]")
|
||||
|
||||
|
||||
// Verb: show_text_messages()
|
||||
// Parameters: None
|
||||
// Description: Lets ghosts review messages they've sent or received.
|
||||
/mob/observer/dead/verb/show_text_messages()
|
||||
set category = "Ghost"
|
||||
set name = "Show Text Messages"
|
||||
set desc = "Allows you to see exonet text messages you've sent and received."
|
||||
|
||||
var/HTML = "<html><head><title>Exonet Message Log</title></head><body>"
|
||||
for(var/line in exonet_messages)
|
||||
HTML += line + "<br>"
|
||||
HTML +="</body></html>"
|
||||
usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
|
||||
|
||||
// Proc: connect_video()
|
||||
// Parameters: user - the mob doing the viewing of video, comm - the communicator at the far end
|
||||
// Description: Sets up a videocall and puts the first view into it using watch_video, and updates the icon
|
||||
@@ -963,7 +1038,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Description: Cleans up mob's client when they stop watching a video
|
||||
/obj/item/device/communicator/proc/video_cleanup(mob/user)
|
||||
if(!user) return
|
||||
|
||||
|
||||
user.reset_view(null)
|
||||
user.unset_machine()
|
||||
|
||||
@@ -972,14 +1047,14 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Description: Ends the video call by clearing video_source
|
||||
/obj/item/device/communicator/proc/end_video(var/reason)
|
||||
video_source = null
|
||||
|
||||
|
||||
. = "<span class='danger'>\icon[src] [reason ? reason : "Video session ended"].</span>"
|
||||
|
||||
|
||||
visible_message(.)
|
||||
update_icon()
|
||||
|
||||
//For synths who have no hands.
|
||||
/obj/item/device/communicator/integrated
|
||||
/obj/item/device/communicator/integrated
|
||||
name = "integrated communicator"
|
||||
desc = "A circuit used for long-range communications, able to be integrated into a system."
|
||||
|
||||
|
||||
@@ -74,13 +74,17 @@
|
||||
if(M.stat!=DEAD)
|
||||
var/safety = M:eyecheck()
|
||||
if(safety <= 0)
|
||||
var/flash_strength = 10
|
||||
var/flash_strength = 5
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
flash_strength *= H.species.flash_mod
|
||||
if(flash_strength > 0)
|
||||
M.Weaken(flash_strength)
|
||||
M.flash_eyes()
|
||||
|
||||
if(flash_strength > 0)
|
||||
H.confused = max(H.confused, flash_strength)
|
||||
H.eye_blind = max(H.eye_blind, flash_strength)
|
||||
H.eye_blurry = max(H.eye_blurry, flash_strength + 5)
|
||||
H.flash_eyes()
|
||||
|
||||
else
|
||||
flashfail = 1
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "A hand-held emergency light."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "flashlight"
|
||||
item_state = "flashlight"
|
||||
w_class = 2
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
@@ -89,7 +88,7 @@
|
||||
name = "penlight"
|
||||
desc = "A pen-sized light, used by medical staff."
|
||||
icon_state = "penlight"
|
||||
item_state = ""
|
||||
item_state = "pen"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_EARS
|
||||
brightness_on = 2
|
||||
@@ -99,7 +98,6 @@
|
||||
name = "maglight"
|
||||
desc = "A very, very heavy duty flashlight."
|
||||
icon_state = "maglight"
|
||||
item_state = "maglight"
|
||||
force = 10
|
||||
flags = CONDUCT
|
||||
brightness_on = 4
|
||||
@@ -113,7 +111,7 @@
|
||||
name = "low-power flashlight"
|
||||
desc = "A miniature lamp, that might be used by small robots."
|
||||
icon_state = "penlight"
|
||||
item_state = ""
|
||||
item_state = null
|
||||
flags = CONDUCT
|
||||
brightness_on = 2
|
||||
w_class = 1
|
||||
@@ -124,7 +122,6 @@
|
||||
name = "desk lamp"
|
||||
desc = "A desk lamp with an adjustable mount."
|
||||
icon_state = "lamp"
|
||||
item_state = "lamp"
|
||||
brightness_on = 5
|
||||
w_class = 4
|
||||
flags = CONDUCT
|
||||
@@ -136,7 +133,6 @@
|
||||
/obj/item/device/flashlight/lamp/green
|
||||
desc = "A classic green-shaded desk lamp."
|
||||
icon_state = "lampgreen"
|
||||
item_state = "lampgreen"
|
||||
brightness_on = 5
|
||||
light_color = "#FFC58F"
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "floor painter"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "labeler1"
|
||||
item_state = "flight"
|
||||
|
||||
var/decal = "remove all decals"
|
||||
var/paint_dir = "precise"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "closet painter"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "labeler1"
|
||||
item_state = "flight"
|
||||
|
||||
var/colour = "plain"
|
||||
var/colour_secure = "plain"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "pipe painter"
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "labeler1"
|
||||
item_state = "flight"
|
||||
var/list/modes
|
||||
var/mode
|
||||
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
name = "electropack"
|
||||
desc = "Dance my monkeys! DANCE!!!"
|
||||
icon_state = "electropack0"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi',
|
||||
)
|
||||
item_state = "electropack"
|
||||
frequency = 1449
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
desc = "An encryption key for a radio headset. Contains cypherkeys."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "cypherkey"
|
||||
item_state = ""
|
||||
w_class = 1
|
||||
slot_flags = SLOT_EARS
|
||||
var/translate_binary = 0
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
|
||||
var/radio_desc = ""
|
||||
icon_state = "headset"
|
||||
item_state = "headset"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 75)
|
||||
subspace_transmission = 1
|
||||
canhear_range = 0 // can't hear headsets from very far away
|
||||
@@ -71,7 +70,7 @@
|
||||
|
||||
/obj/item/device/radio/headset/syndicate/alt
|
||||
icon_state = "syndie_headset"
|
||||
item_state = "syndie_headset"
|
||||
item_state = "headset"
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
syndie = 1
|
||||
ks1type = /obj/item/device/encryptionkey/syndicate
|
||||
@@ -91,7 +90,7 @@
|
||||
name = "security bowman headset"
|
||||
desc = "This is used by your elite security force."
|
||||
icon_state = "sec_headset_alt"
|
||||
item_state = "sec_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_sec
|
||||
|
||||
/obj/item/device/radio/headset/headset_eng
|
||||
@@ -105,7 +104,7 @@
|
||||
name = "engineering bowman headset"
|
||||
desc = "When the engineers wish to chat like girls."
|
||||
icon_state = "eng_headset_alt"
|
||||
item_state = "eng_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_eng
|
||||
|
||||
/obj/item/device/radio/headset/headset_rob
|
||||
@@ -126,7 +125,7 @@
|
||||
name = "medical bowman headset"
|
||||
desc = "A headset for the trained staff of the medbay."
|
||||
icon_state = "med_headset_alt"
|
||||
item_state = "med_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_med
|
||||
|
||||
/obj/item/device/radio/headset/headset_sci
|
||||
@@ -154,7 +153,7 @@
|
||||
name = "command bowman headset"
|
||||
desc = "A headset with a commanding channel."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_com
|
||||
|
||||
|
||||
@@ -169,7 +168,7 @@
|
||||
name = "captain's bowman headset"
|
||||
desc = "The headset of the boss."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/captain
|
||||
|
||||
/obj/item/device/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
|
||||
@@ -198,7 +197,7 @@
|
||||
name = "research director's bowman headset"
|
||||
desc = "Headset of the researching God."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/rd
|
||||
|
||||
/obj/item/device/radio/headset/heads/hos
|
||||
@@ -212,7 +211,7 @@
|
||||
name = "head of security's bowman headset"
|
||||
desc = "The headset of the man who protects your worthless lifes."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/hos
|
||||
|
||||
/obj/item/device/radio/headset/heads/ce
|
||||
@@ -226,7 +225,7 @@
|
||||
name = "chief engineer's bowman headset"
|
||||
desc = "The headset of the guy who is in charge of morons"
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/ce
|
||||
|
||||
/obj/item/device/radio/headset/heads/cmo
|
||||
@@ -240,7 +239,7 @@
|
||||
name = "chief medical officer's bowman headset"
|
||||
desc = "The headset of the highly trained medical chief."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/cmo
|
||||
|
||||
/obj/item/device/radio/headset/heads/hop
|
||||
@@ -254,7 +253,7 @@
|
||||
name = "head of personnel's bowman headset"
|
||||
desc = "The headset of the guy who will one day be captain."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/hop
|
||||
/*
|
||||
/obj/item/device/radio/headset/headset_mine
|
||||
@@ -275,7 +274,7 @@
|
||||
name = "supply bowman headset"
|
||||
desc = "A bowman headset used by the QM and his slaves."
|
||||
icon_state = "cargo_headset_alt"
|
||||
item_state = "cargo_headset_alt"
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/headset_cargo
|
||||
|
||||
/obj/item/device/radio/headset/headset_service
|
||||
@@ -297,7 +296,7 @@
|
||||
name = "emergency response team bowman headset"
|
||||
desc = "The headset of the boss's boss."
|
||||
icon_state = "com_headset_alt"
|
||||
item_state = "com_headset_alt"
|
||||
item_state = "headset"
|
||||
// freerange = 1
|
||||
ks2type = /obj/item/device/encryptionkey/ert
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ var/global/list/default_medbay_channels = list(
|
||||
name = "station bounced radio"
|
||||
suffix = "\[3\]"
|
||||
icon_state = "walkietalkie"
|
||||
item_state = "walkietalkie"
|
||||
item_state = "radio"
|
||||
|
||||
var/on = 1 // 0 for off
|
||||
var/last_transmission
|
||||
|
||||
@@ -13,7 +13,7 @@ REAGENT SCANNER
|
||||
name = "health analyzer"
|
||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
||||
icon_state = "health"
|
||||
item_state = "analyzer"
|
||||
item_state = "healthanalyzer"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 3
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
w_class = 4
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "suitcooler0"
|
||||
slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
//copied from tank.dm
|
||||
flags = CONDUCT
|
||||
@@ -20,7 +20,7 @@
|
||||
var/on = 0 //is it turned on?
|
||||
var/cover_open = 0 //is the cover open?
|
||||
var/obj/item/weapon/cell/cell
|
||||
var/max_cooling = 12 // in degrees per second - probably don't need to mess with heat capacity here
|
||||
var/max_cooling = 15 // in degrees per second - probably don't need to mess with heat capacity here
|
||||
var/charge_consumption = 3 // charge per second at max_cooling
|
||||
var/thermostat = T20C
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if (!H.wear_suit || H.s_store != src)
|
||||
if (!H.wear_suit || (H.s_store != src && H.back != src))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
Telecrystal item
|
||||
Does nothing if not suitable antag type, checks for accept_tcrystals = 1 in a mob's mind.
|
||||
For new antags, make sure to add "player.mind.accept_tcrystals = 1" if you want tradable tcrystals.
|
||||
*/
|
||||
/obj/item/device/telecrystal
|
||||
name = "red crystal"
|
||||
desc = "A strange, red, glowing crystal."
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "telecrystal"
|
||||
item_state = "telecrystal"
|
||||
force = 5
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_BLUESPACE = 1, TECH_ILLEGAL = 1)
|
||||
|
||||
/obj/item/device/telecrystal/attack_self(mob/user as mob)
|
||||
if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals
|
||||
user.mind.tcrystals += 1
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/list/purchase_log = new
|
||||
var/datum/mind/uplink_owner = null
|
||||
var/used_TC = 0
|
||||
var/offer_time = 15 MINUTES //The time increment per discount offered
|
||||
var/offer_time = 10 MINUTES //The time increment per discount offered
|
||||
var/next_offer_time //The time a discount will next be offered
|
||||
var/datum/uplink_item/discount_item //The item to be discounted
|
||||
var/discount_amount //The amount as a percent the item will be discounted by
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_random_selection/default()
|
||||
var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random_selection/all()
|
||||
|
||||
/datum/uplink_random_item
|
||||
var/uplink_item // The uplink item
|
||||
@@ -14,16 +15,22 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
|
||||
|
||||
/datum/uplink_random_selection
|
||||
var/list/datum/uplink_random_item/items
|
||||
var/list/datum/uplink_random_item/all_items
|
||||
|
||||
/datum/uplink_random_selection/New()
|
||||
..()
|
||||
items = list()
|
||||
all_items = list()
|
||||
|
||||
/datum/uplink_random_selection/proc/get_random_item(var/telecrystals, obj/item/device/uplink/U, var/list/bought_items)
|
||||
/datum/uplink_random_selection/proc/get_random_item(var/telecrystals, obj/item/device/uplink/U, var/list/bought_items, var/items_override = 0)
|
||||
var/const/attempts = 50
|
||||
|
||||
for(var/i = 0; i < attempts; i++)
|
||||
var/datum/uplink_random_item/RI = pick(items)
|
||||
var/datum/uplink_random_item/RI
|
||||
if(items_override)
|
||||
RI = pick(all_items)
|
||||
else
|
||||
RI = pick(items)
|
||||
if(!prob(RI.keep_probability))
|
||||
continue
|
||||
var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item]
|
||||
@@ -35,6 +42,14 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
|
||||
continue
|
||||
return I
|
||||
|
||||
/datum/uplink_random_selection/all/New()
|
||||
..()
|
||||
for(var/datum/uplink_item/item in uplink.items)
|
||||
if(item.blacklisted)
|
||||
continue
|
||||
else
|
||||
all_items += new/datum/uplink_random_item(item.type)
|
||||
|
||||
/datum/uplink_random_selection/default/New()
|
||||
..()
|
||||
|
||||
@@ -86,7 +101,7 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
|
||||
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/thermal, reselect_propbability = 15)
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/energy_net, reselect_propbability = 15)
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/ewar_voice, reselect_propbability = 15)
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/ewar_voice, reselect_propbability = 15)
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/maneuvering_jets, reselect_propbability = 15)
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/egun, reselect_propbability = 15)
|
||||
items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/power_sink, reselect_propbability = 15)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\""
|
||||
icon = 'icons/obj/musician.dmi'
|
||||
icon_state = "violin"
|
||||
item_state = "violin"
|
||||
force = 10
|
||||
var/datum/song/song
|
||||
var/playing = 0
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
name = "latex glove"
|
||||
desc = "A latex glove, usually used as a balloon."
|
||||
icon_state = "latexballon"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi',
|
||||
)
|
||||
item_state = "lgloves"
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
/obj/item/borg/upgrade/tasercooler/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.module || !(src in R.module.supported_upgrades))
|
||||
if(!R.module || !(type in R.module.supported_upgrades))
|
||||
R << "Upgrade mounting error! No suitable hardpoint detected!"
|
||||
usr << "There's no mounting point for the module!"
|
||||
return 0
|
||||
@@ -137,7 +137,7 @@
|
||||
/obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R)
|
||||
if(..()) return 0
|
||||
|
||||
if(!R.module || !(src in R.module.supported_upgrades))
|
||||
if(!R.module || !(type in R.module.supported_upgrades))
|
||||
R << "Upgrade mounting error! No suitable hardpoint detected!"
|
||||
usr << "There's no mounting point for the module!"
|
||||
return 0
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
max_amount = 60
|
||||
attack_verb = list("hit", "bludgeoned", "whacked")
|
||||
|
||||
/obj/item/stack/rods/fifty //Calling this path still fifty because sixty is confusing
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/rods/cyborg
|
||||
name = "metal rod synthesizer"
|
||||
desc = "A device that makes metal rods."
|
||||
|
||||
@@ -4,36 +4,54 @@
|
||||
singular_name = "human skin piece"
|
||||
icon_state = "sheet-hide"
|
||||
|
||||
/obj/item/stack/material/animalhide/human
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/material/animalhide/corgi
|
||||
name = "corgi hide"
|
||||
desc = "The by-product of corgi farming."
|
||||
singular_name = "corgi hide piece"
|
||||
icon_state = "sheet-corgi"
|
||||
|
||||
/obj/item/stack/material/animalhide/corgi
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/material/animalhide/cat
|
||||
name = "cat hide"
|
||||
desc = "The by-product of cat farming."
|
||||
singular_name = "cat hide piece"
|
||||
icon_state = "sheet-cat"
|
||||
|
||||
/obj/item/stack/material/animalhide/cat
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/material/animalhide/monkey
|
||||
name = "monkey hide"
|
||||
desc = "The by-product of monkey farming."
|
||||
singular_name = "monkey hide piece"
|
||||
icon_state = "sheet-monkey"
|
||||
|
||||
/obj/item/stack/material/animalhide/monkey
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/material/animalhide/lizard
|
||||
name = "lizard skin"
|
||||
desc = "Sssssss..."
|
||||
singular_name = "lizard skin piece"
|
||||
icon_state = "sheet-lizard"
|
||||
|
||||
/obj/item/stack/material/animalhide/lizard
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/material/animalhide/xeno
|
||||
name = "alien hide"
|
||||
desc = "The skin of a terrible creature."
|
||||
singular_name = "alien hide piece"
|
||||
icon_state = "sheet-xeno"
|
||||
|
||||
/obj/item/stack/material/animalhide/xeno
|
||||
amount = 50
|
||||
|
||||
//don't see anywhere else to put these, maybe together they could be used to make the xenos suit?
|
||||
/obj/item/stack/material/xenochitin
|
||||
name = "alien chitin"
|
||||
@@ -42,6 +60,9 @@
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
|
||||
/obj/item/stack/material/xenochitin
|
||||
amount = 50
|
||||
|
||||
/obj/item/xenos_claw
|
||||
name = "alien claw"
|
||||
desc = "The claw of a terrible creature."
|
||||
@@ -60,6 +81,9 @@
|
||||
singular_name = "hairless hide piece"
|
||||
icon_state = "sheet-hairlesshide"
|
||||
|
||||
/obj/item/stack/material/hairlesshide
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/material/wetleather
|
||||
name = "wet leather"
|
||||
desc = "This leather has been cleaned but still needs to be dried."
|
||||
@@ -68,6 +92,9 @@
|
||||
var/wetness = 30 //Reduced when exposed to high temperautres
|
||||
var/drying_threshold_temperature = 500 //Kelvin to start drying
|
||||
|
||||
/obj/item/stack/material/wetleather
|
||||
amount = 50
|
||||
|
||||
//Step one - dehairing.
|
||||
/obj/item/stack/material/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if( istype(W, /obj/item/weapon/material/knife) || \
|
||||
|
||||
26
code/game/objects/items/stacks/telecrystal.dm
Normal file
26
code/game/objects/items/stacks/telecrystal.dm
Normal file
@@ -0,0 +1,26 @@
|
||||
/obj/item/stack/telecrystal
|
||||
name = "telecrystal"
|
||||
desc = "It seems to be pulsing with suspiciously enticing energies."
|
||||
description_antag = "Telecrystals can be activated by utilizing them on devices with an actively running uplink. They will not activate on unactivated uplinks."
|
||||
singular_name = "telecrystal"
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "telecrystal"
|
||||
w_class = 1
|
||||
max_amount = 240
|
||||
origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4)
|
||||
force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things
|
||||
|
||||
/obj/item/stack/telecrystal/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
if(amount >= 5)
|
||||
target.visible_message("<span class='warning'>\The [target] has been transported with \the [src] by \the [user].</span>")
|
||||
safe_blink(target, 14)
|
||||
use(5)
|
||||
else
|
||||
user << "<span class='warning'>There are not enough telecrystals to do that.</span>"
|
||||
|
||||
/obj/item/stack/telecrystal/attack_self(mob/user as mob)
|
||||
if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals
|
||||
user << "<span class='notice'>You use \the [src], adding [src.amount] to your balance.</span>"
|
||||
user.mind.tcrystals += amount
|
||||
use(amount)
|
||||
return
|
||||
@@ -35,6 +35,8 @@
|
||||
flags = 0
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
|
||||
/obj/item/stack/tile/grass/fifty
|
||||
amount = 50
|
||||
/*
|
||||
* Wood
|
||||
*/
|
||||
@@ -49,6 +51,9 @@
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/wood/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/wood/cyborg
|
||||
name = "wood floor tile synthesizer"
|
||||
desc = "A device that makes wood floor tiles."
|
||||
@@ -71,12 +76,18 @@
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/carpet/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/carpet/blue
|
||||
name = "blue carpet"
|
||||
singular_name = "blue carpet"
|
||||
desc = "A piece of blue carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-bluecarpet"
|
||||
|
||||
/obj/item/stack/tile/carpet/blue/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor
|
||||
name = "floor tile"
|
||||
singular_name = "floor tile"
|
||||
@@ -89,42 +100,63 @@
|
||||
throw_range = 20
|
||||
flags = CONDUCT
|
||||
|
||||
/obj/item/stack/tile/floor/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor_red
|
||||
name = "red floor tile"
|
||||
singular_name = "red floor tile"
|
||||
color = COLOR_RED_GRAY
|
||||
icon_state = "tile_white"
|
||||
|
||||
/obj/item/stack/tile/floor_red/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor_steel
|
||||
name = "steel floor tile"
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_steel/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor_white
|
||||
name = "white floor tile"
|
||||
singular_name = "white floor tile"
|
||||
icon_state = "tile_white"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_white/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor_yellow
|
||||
name = "yellow floor tile"
|
||||
singular_name = "yellow floor tile"
|
||||
color = COLOR_BROWN
|
||||
icon_state = "tile_white"
|
||||
|
||||
/obj/item/stack/tile/floor_yellow/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor_dark
|
||||
name = "dark floor tile"
|
||||
singular_name = "dark floor tile"
|
||||
icon_state = "fr_tile"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_dark/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor_freezer
|
||||
name = "freezer floor tile"
|
||||
singular_name = "freezer floor tile"
|
||||
icon_state = "tile_freezer"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/foor_freezer/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/tile/floor/cyborg
|
||||
name = "floor tile synthesizer"
|
||||
desc = "A device that makes floor tiles."
|
||||
@@ -144,4 +176,7 @@
|
||||
throwforce = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
flags = 0
|
||||
|
||||
/obj/item/stack/tile/linoleum/fifty
|
||||
amount = 50
|
||||
@@ -34,7 +34,6 @@
|
||||
desc = "A translucent balloon. There's nothing in it."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "waterballoon-e"
|
||||
item_state = "balloon-empty"
|
||||
|
||||
/obj/item/toy/balloon/New()
|
||||
var/datum/reagents/R = new/datum/reagents(10)
|
||||
@@ -85,10 +84,8 @@
|
||||
/obj/item/toy/balloon/update_icon()
|
||||
if(src.reagents.total_volume >= 1)
|
||||
icon_state = "waterballoon"
|
||||
item_state = "balloon"
|
||||
else
|
||||
icon_state = "waterballoon-e"
|
||||
item_state = "balloon-empty"
|
||||
|
||||
/obj/item/toy/syndicateballoon
|
||||
name = "criminal balloon"
|
||||
@@ -99,7 +96,6 @@
|
||||
force = 0
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "syndballoon"
|
||||
item_state = "syndballoon"
|
||||
w_class = 4.0
|
||||
|
||||
/obj/item/toy/nanotrasenballoon
|
||||
@@ -111,7 +107,6 @@
|
||||
force = 0
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "ntballoon"
|
||||
item_state = "ntballoon"
|
||||
w_class = 4.0
|
||||
|
||||
/*
|
||||
@@ -142,7 +137,6 @@
|
||||
desc = "A weapon favored by many overactive children. Ages 8 and up."
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "crossbow"
|
||||
item_state = "crossbow"
|
||||
item_icons = list(
|
||||
icon_l_hand = 'icons/mob/items/lefthand_guns.dmi',
|
||||
icon_r_hand = 'icons/mob/items/righthand_guns.dmi',
|
||||
@@ -251,7 +245,6 @@
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
|
||||
/*
|
||||
* Toy swords
|
||||
*/
|
||||
@@ -260,7 +253,10 @@
|
||||
desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "sword0"
|
||||
item_state = "sword0"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
||||
)
|
||||
var/active = 0.0
|
||||
w_class = 2.0
|
||||
attack_verb = list("attacked", "struck", "hit")
|
||||
@@ -271,13 +267,11 @@
|
||||
user << "<span class='notice'>You extend the plastic blade with a quick flick of your wrist.</span>"
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
src.icon_state = "swordblue"
|
||||
src.item_state = "swordblue"
|
||||
src.w_class = 4
|
||||
else
|
||||
user << "<span class='notice'>You push the plastic blade back down into the handle.</span>"
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||
src.icon_state = "sword0"
|
||||
src.item_state = "sword0"
|
||||
src.w_class = 2
|
||||
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
@@ -293,7 +287,10 @@
|
||||
desc = "Woefully underpowered in D20."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "katana"
|
||||
item_state = "katana"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_material.dmi',
|
||||
)
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
force = 5
|
||||
@@ -863,7 +860,10 @@
|
||||
desc = "An arcane weapon (made of foam) wielded by the followers of the hit Saturday morning cartoon \"King Nursee and the Acolytes of Heroism\"."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "cultblade"
|
||||
item_state = "cultblade"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
||||
)
|
||||
w_class = 4
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "poked")
|
||||
|
||||
@@ -883,7 +883,6 @@
|
||||
name = "inflatable duck"
|
||||
desc = "No bother to sink or swim when you can just float!"
|
||||
icon_state = "inflatable"
|
||||
item_state = "inflatable"
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments."
|
||||
icon = 'icons/obj/candle.dmi'
|
||||
icon_state = "candle1"
|
||||
item_state = "candle1"
|
||||
w_class = 1
|
||||
light_color = "#E09D37"
|
||||
var/wax = 2000
|
||||
|
||||
@@ -69,7 +69,6 @@
|
||||
icon_state = "emag"
|
||||
item_state = "card-id"
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
var/default_uses = 10
|
||||
var/uses = 10
|
||||
|
||||
/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user)
|
||||
@@ -89,9 +88,15 @@
|
||||
qdel(src)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob)
|
||||
if(istype(O, /obj/item/device/telecrystal))
|
||||
src.uses += default_uses/2 //Adds half the default amount of uses which is more than you get per TC when buying, as to balance the utility of having multiple emags vs one heavily usable one
|
||||
if(istype(O, /obj/item/stack/telecrystal))
|
||||
var/obj/item/stack/telecrystal/T = O
|
||||
if(T.amount < 1)
|
||||
usr << "<span class='notice'>You are not adding enough telecrystals to fuel \the [src].</span>"
|
||||
return
|
||||
uses += T.amount/2 //Gives 5 uses per 10 TC
|
||||
uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice
|
||||
usr << "<span class='notice'>You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].</span>"
|
||||
qdel(O)
|
||||
|
||||
@@ -350,4 +355,11 @@
|
||||
desc = "A card which represents common sense and responsibility."
|
||||
icon_state = "civGold"
|
||||
primary_color = rgb(0,94,142)
|
||||
secondary_color = rgb(255,223,127)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/external
|
||||
name = "identification card"
|
||||
desc = "An identification card of some sort. It does not look like it is issued by NT."
|
||||
icon_state = "permit"
|
||||
primary_color = rgb(142,94,0)
|
||||
secondary_color = rgb(191,159,95)
|
||||
@@ -481,7 +481,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/weapon/flame/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
M.IgniteMob()
|
||||
|
||||
if(lit == 1)
|
||||
M.IgniteMob()
|
||||
|
||||
if(istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == O_MOUTH && lit)
|
||||
var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef T_BOARD
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#endif
|
||||
|
||||
/obj/item/weapon/circuitboard/supplycomp
|
||||
@@ -28,7 +28,6 @@
|
||||
catastasis = "STANDARD"
|
||||
|
||||
switch( alert("Current receiver spectrum is set to: [catastasis]","Multitool-Circuitboard interface","Switch to [opposite_catastasis]","Cancel") )
|
||||
//switch( alert("Current receiver spectrum is set to: " {(src.contraband_enabled) ? ("BROAD") : ("STANDARD")} , "Multitool-Circuitboard interface" , "Switch to " {(src.contraband_enabled) ? ("STANDARD") : ("BROAD")}, "Cancel") )
|
||||
if("Switch to STANDARD","Switch to BROAD")
|
||||
src.contraband_enabled = !src.contraband_enabled
|
||||
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
slot_flags = SLOT_EARS
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "purplecomb"
|
||||
item_state = "purplecomb"
|
||||
|
||||
/obj/item/weapon/haircomb/attack_self(mob/living/user)
|
||||
user.visible_message(text("<span class='notice'>[] uses [] to comb their hair with incredible style and sophistication. What a [].</span>", user, src, user.gender == FEMALE ? "lady" : "guy"))
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
desc = "You are a firestarter!"
|
||||
icon = 'icons/obj/flamethrower.dmi'
|
||||
icon_state = "flamethrowerbase"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi',
|
||||
)
|
||||
item_state = "flamethrower_0"
|
||||
flags = CONDUCT
|
||||
force = 3.0
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
name = "photon disruption grenade"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "emp"
|
||||
item_state = "emp"
|
||||
det_time = 20
|
||||
origin_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 4)
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
name = "low yield emp grenade"
|
||||
desc = "A weaker variant of the EMP grenade"
|
||||
icon_state = "lyemp"
|
||||
item_state = "lyempgrenade"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3)
|
||||
|
||||
prime()
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
//icon = 'icons/obj/grenade.dmi'
|
||||
//det_time = 50
|
||||
//icon_state = "frggrenade"
|
||||
//item_state = "frggrenade"
|
||||
//origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 3)
|
||||
|
||||
//obj/item/weapon/grenade/explosive/prime()
|
||||
@@ -18,7 +17,8 @@
|
||||
//Explosive grenade projectile, borrowed from fragmentation grenade code.
|
||||
/obj/item/projectile/bullet/pellet/fragment
|
||||
damage = 10
|
||||
range_step = 2
|
||||
armor_penetration = 30
|
||||
range_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer.
|
||||
|
||||
base_spread = 0 //causes it to be treated as a shrapnel explosion instead of cone
|
||||
spread_step = 20
|
||||
@@ -31,11 +31,10 @@
|
||||
name = "fragmentation grenade"
|
||||
desc = "A fragmentation grenade, optimized for harming personnel without causing massive structural damage."
|
||||
icon_state = "frggrenade"
|
||||
item_state = "frggrenade"
|
||||
item_state = "grenade"
|
||||
|
||||
var/num_fragments = 50 //total number of fragments produced by the grenade
|
||||
var/fragment_damage = 10
|
||||
var/damage_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer.
|
||||
var/fragment_type = /obj/item/projectile/bullet/pellet/fragment
|
||||
var/num_fragments = 63 //total number of fragments produced by the grenade
|
||||
var/explosion_size = 2 //size of the center explosion
|
||||
|
||||
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
|
||||
@@ -57,9 +56,7 @@
|
||||
for(var/turf/T in target_turfs)
|
||||
var/obj/item/projectile/bullet/pellet/fragment/P = new (O)
|
||||
|
||||
P.damage = fragment_damage
|
||||
P.pellets = fragments_per_projectile
|
||||
P.range_step = damage_step
|
||||
P.shot_from = src.name
|
||||
|
||||
P.launch(T)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
user << "<span class='danger'>\The [H] needs at least two wrists before you can cuff them together!</span>"
|
||||
return 0
|
||||
|
||||
if(istype(H.gloves,/obj/item/clothing/gloves/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit.
|
||||
if(istype(H.gloves,/obj/item/clothing/gloves/gauntlets/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit.
|
||||
user << "<span class='danger'>\The [src] won't fit around \the [H.gloves]!</span>"
|
||||
return 0
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.do_attack_animation(H)
|
||||
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] has put [cuff_type] on \the [H]!</span>")
|
||||
|
||||
// Apply cuffs.
|
||||
@@ -169,4 +169,4 @@ var/last_chew = 0
|
||||
item_state = null
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
breakouttime = 200
|
||||
cuff_type = "duct tape"
|
||||
cuff_type = "duct tape"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
desc = "HOME RUN!"
|
||||
icon_state = "metalbat0"
|
||||
base_icon = "metalbat"
|
||||
item_state = "metalbat"
|
||||
throwforce = 7
|
||||
attack_verb = list("smashed", "beaten", "slammed", "smacked", "struck", "battered", "bonked")
|
||||
hitsound = 'sound/weapons/genhit3.ogg'
|
||||
|
||||
@@ -38,3 +38,6 @@
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/foam/New(var/newloc)
|
||||
..(newloc,"foam")
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/foam/afterattack()
|
||||
return
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/weapon/material/kitchen
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
|
||||
|
||||
/*
|
||||
* Utensils
|
||||
*/
|
||||
|
||||
@@ -72,7 +72,6 @@
|
||||
name = "meat hook"
|
||||
desc = "A sharp, metal hook what sticks into things."
|
||||
icon_state = "hook_knife"
|
||||
item_state = "hook_knife"
|
||||
|
||||
/obj/item/weapon/material/knife/ritual
|
||||
name = "ritual knife"
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
w_class = 3
|
||||
sharp = 0
|
||||
edge = 0
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_material.dmi',
|
||||
)
|
||||
|
||||
var/applies_material_colour = 1
|
||||
var/unbreakable
|
||||
|
||||
@@ -38,6 +38,22 @@
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "unathiknife"
|
||||
attack_verb = list("ripped", "torn", "cut")
|
||||
var hits = 0
|
||||
|
||||
/obj/item/weapon/material/hatchet/unathiknife/attack(mob/M as mob, mob/user as mob)
|
||||
if(hits > 0)
|
||||
return
|
||||
var/obj/item/I = user.get_inactive_hand()
|
||||
if(istype(I, /obj/item/weapon/material/hatchet/unathiknife))
|
||||
hits ++
|
||||
var/obj/item/weapon/W = I
|
||||
W.attack(M, user)
|
||||
W.afterattack(M, user)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/material/hatchet/unathiknife/afterattack(mob/M as mob, mob/user as mob)
|
||||
hits = initial(hits)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/material/hatchet/tacknife
|
||||
name = "tactical knife"
|
||||
@@ -64,7 +80,6 @@
|
||||
desc = "It's used for removing weeds or scratching your back."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "hoe"
|
||||
item_state = "hoe"
|
||||
force_divisor = 0.25 // 5 with weight 20 (steel)
|
||||
thrown_force_divisor = 0.25 // as above
|
||||
w_class = 2
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "claymore"
|
||||
desc = "What are you standing around staring at this for? Get to killing!"
|
||||
icon_state = "claymore"
|
||||
item_state = "claymore"
|
||||
slot_flags = SLOT_BELT
|
||||
force_divisor = 0.7 // 42 when wielded with hardnes 60 (steel)
|
||||
thrown_force_divisor = 0.5 // 10 when thrown with weight 20 (steel)
|
||||
@@ -27,7 +26,6 @@
|
||||
name = "katana"
|
||||
desc = "Woefully underpowered in D20. This one looks pretty sharp."
|
||||
icon_state = "katana"
|
||||
item_state = "katana"
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
|
||||
/obj/item/weapon/material/sword/katana/suicide_act(mob/user)
|
||||
|
||||
@@ -93,6 +93,22 @@
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
applies_material_colour = 0
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/update_held_icon()
|
||||
var/mob/living/M = loc
|
||||
if(istype(M) && !issmall(M) && M.item_is_in_hands(src) && !M.hands_are_full())
|
||||
wielded = 1
|
||||
pry = 1
|
||||
force = force_wielded
|
||||
name = "[base_name] (wielded)"
|
||||
update_icon()
|
||||
else
|
||||
wielded = 0
|
||||
pry = 0
|
||||
force = force_unwielded
|
||||
name = "[base_name]"
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
..()
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "chain of command"
|
||||
desc = "A tool used by great men to placate the frothing masses."
|
||||
icon_state = "chain"
|
||||
item_state = "chain"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 10
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
/obj/item/weapon/shield
|
||||
name = "shield"
|
||||
var/base_block_chance = 50
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
||||
)
|
||||
|
||||
/obj/item/weapon/shield/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(user.incapacitated())
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
* Backpack
|
||||
*/
|
||||
@@ -6,17 +5,7 @@
|
||||
/obj/item/weapon/storage/backpack
|
||||
name = "backpack"
|
||||
desc = "You wear this on your back and put items into it."
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_backpacks.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_backpacks.dmi',
|
||||
)
|
||||
icon_state = "backpack"
|
||||
item_state = null
|
||||
//most backpacks use the default backpack state for inhand overlays
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "backpack",
|
||||
slot_r_hand_str = "backpack",
|
||||
)
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/back.dmi'
|
||||
)
|
||||
@@ -76,7 +65,7 @@
|
||||
name = "\improper Santa's gift bag"
|
||||
desc = "Space Santa uses this to deliver toys to all the nice children in space in Christmas! Wow, it's pretty big!"
|
||||
icon_state = "giftbag0"
|
||||
item_state = "giftbag"
|
||||
item_state_slots = list(slot_r_hand_str = "giftbag", slot_l_hand_str = "giftbag")
|
||||
w_class = 4.0
|
||||
max_w_class = 3
|
||||
max_storage_space = 400 // can store a ton of shit!
|
||||
@@ -91,31 +80,26 @@
|
||||
name = "Giggles von Honkerton"
|
||||
desc = "It's a backpack made by Honk! Co."
|
||||
icon_state = "clownpack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/medic
|
||||
name = "medical backpack"
|
||||
desc = "It's a backpack especially designed for use in a sterile environment."
|
||||
icon_state = "medicalpack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/security
|
||||
name = "security backpack"
|
||||
desc = "It's a very robust backpack."
|
||||
icon_state = "securitypack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/captain
|
||||
name = "captain's backpack"
|
||||
desc = "It's a special backpack made exclusively for officers."
|
||||
icon_state = "captainpack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/industrial
|
||||
name = "industrial backpack"
|
||||
desc = "It's a tough backpack for the daily grind of station life."
|
||||
icon_state = "engiepack"
|
||||
item_state_slots = null
|
||||
|
||||
/obj/item/weapon/storage/backpack/toxins
|
||||
name = "laboratory backpack"
|
||||
@@ -150,10 +134,6 @@
|
||||
name = "dufflebag"
|
||||
desc = "A large dufflebag for holding extra things."
|
||||
icon_state = "duffle"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle",
|
||||
slot_r_hand_str = "duffle",
|
||||
)
|
||||
slowdown = 1
|
||||
max_storage_space = 36
|
||||
|
||||
@@ -161,74 +141,42 @@
|
||||
name = "black dufflebag"
|
||||
desc = "A large dufflebag for holding extra tactical supplies."
|
||||
icon_state = "duffle_syndie"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_syndiemed",
|
||||
slot_r_hand_str = "duffle_syndiemed",
|
||||
)
|
||||
slowdown = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med
|
||||
name = "medical dufflebag"
|
||||
desc = "A large dufflebag for holding extra tactical medical supplies."
|
||||
icon_state = "duffle_syndiemed"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_syndiemed",
|
||||
slot_r_hand_str = "duffle_syndiemed",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo
|
||||
name = "ammunition dufflebag"
|
||||
desc = "A large dufflebag for holding extra weapons ammunition and supplies."
|
||||
icon_state = "duffle_syndieammo"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_syndieammo",
|
||||
slot_r_hand_str = "duffle_syndieammo",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/captain
|
||||
name = "captain's dufflebag"
|
||||
desc = "A large dufflebag for holding extra captainly goods."
|
||||
icon_state = "duffle_captain"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_captain",
|
||||
slot_r_hand_str = "duffle_captain",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/med
|
||||
name = "medical dufflebag"
|
||||
desc = "A large dufflebag for holding extra medical supplies."
|
||||
icon_state = "duffle_med"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_med",
|
||||
slot_r_hand_str = "duffle_med",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/emt
|
||||
name = "EMT dufflebag"
|
||||
desc = "A large dufflebag for holding extra medical supplies. This one has reflective stripes!"
|
||||
icon_state = "duffle_emt"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_emt",
|
||||
slot_r_hand_str = "duffle_emt",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sec
|
||||
name = "security dufflebag"
|
||||
desc = "A large dufflebag for holding extra security supplies and ammunition."
|
||||
icon_state = "duffle_sec"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_sec",
|
||||
slot_r_hand_str = "duffle_sec",
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/eng
|
||||
name = "industrial dufflebag"
|
||||
desc = "A large dufflebag for holding extra tools and supplies."
|
||||
icon_state = "duffle_eng"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_eng",
|
||||
slot_r_hand_str = "duffle_eng",
|
||||
)
|
||||
|
||||
/*
|
||||
* Satchel Types
|
||||
@@ -238,6 +186,7 @@
|
||||
name = "leather satchel"
|
||||
desc = "It's a very fancy satchel made with fine leather."
|
||||
icon_state = "satchel"
|
||||
item_state_slots = list(slot_r_hand_str = "briefcase", slot_l_hand_str = "briefcase")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet
|
||||
New()
|
||||
@@ -253,48 +202,43 @@
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "engiepack",
|
||||
slot_r_hand_str = "engiepack",
|
||||
)
|
||||
item_state_slots = list(slot_r_hand_str = "engiepack", slot_l_hand_str = "engiepack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "medicalpack",
|
||||
slot_r_hand_str = "medicalpack",
|
||||
)
|
||||
item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/vir
|
||||
name = "virologist satchel"
|
||||
desc = "A sterile satchel with virologist colours."
|
||||
icon_state = "satchel-vir"
|
||||
item_state_slots = list(slot_r_hand_str = "viropack", slot_l_hand_str = "viropack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/chem
|
||||
name = "chemist satchel"
|
||||
desc = "A sterile satchel with chemist colours."
|
||||
icon_state = "satchel-chem"
|
||||
item_state_slots = list(slot_r_hand_str = "chempack", slot_l_hand_str = "chempack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/gen
|
||||
name = "geneticist satchel"
|
||||
desc = "A sterile satchel with geneticist colours."
|
||||
icon_state = "satchel-gen"
|
||||
item_state_slots = list(slot_r_hand_str = "genpack", slot_l_hand_str = "genpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/tox
|
||||
name = "scientist satchel"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "satchel-tox"
|
||||
item_state_slots = list(slot_r_hand_str = "toxpack", slot_l_hand_str = "toxpack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/sec
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "securitypack",
|
||||
slot_r_hand_str = "securitypack",
|
||||
)
|
||||
item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/hyd
|
||||
name = "hydroponics satchel"
|
||||
@@ -305,20 +249,14 @@
|
||||
name = "captain's satchel"
|
||||
desc = "An exclusive satchel for officers."
|
||||
icon_state = "satchel-cap"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "satchel-cap",
|
||||
slot_r_hand_str = "satchel-cap",
|
||||
)
|
||||
item_state_slots = list(slot_r_hand_str = "captainpack", slot_l_hand_str = "captainpack")
|
||||
|
||||
//ERT backpacks.
|
||||
/obj/item/weapon/storage/backpack/ert
|
||||
name = "emergency response team backpack"
|
||||
desc = "A spacious backpack with lots of pockets, used by members of the Emergency Response Team."
|
||||
icon_state = "ert_commander"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "securitypack",
|
||||
slot_r_hand_str = "securitypack",
|
||||
)
|
||||
item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack")
|
||||
|
||||
//Commander
|
||||
/obj/item/weapon/storage/backpack/ert/commander
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "trashbag0"
|
||||
item_state = "trashbag"
|
||||
item_state_slots = list(slot_r_hand_str = "trashbag", slot_l_hand_str = "trashbag")
|
||||
|
||||
w_class = 4
|
||||
max_w_class = 2
|
||||
@@ -56,7 +56,6 @@
|
||||
desc = "It's a very flimsy, very noisy alternative to a bag."
|
||||
icon = 'icons/obj/trash.dmi'
|
||||
icon_state = "plasticbag"
|
||||
item_state = "plasticbag"
|
||||
|
||||
w_class = 4
|
||||
max_w_class = 2
|
||||
@@ -169,7 +168,6 @@
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
|
||||
// Sets up numbered display to show the stack size of each stored mineral
|
||||
// NOTE: numbered display is turned off currently because it's broken
|
||||
orient2hud(mob/user as mob)
|
||||
|
||||
@@ -2,8 +2,7 @@
|
||||
name = "belt"
|
||||
desc = "Can hold various things."
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
icon_state = "utility"
|
||||
storage_slots = 7
|
||||
max_storage_space = 28 //This should ensure belts always have enough room to store whatever.
|
||||
max_w_class = 3
|
||||
@@ -28,12 +27,10 @@
|
||||
var/mob/M = src.loc
|
||||
M.update_inv_belt()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/utility
|
||||
name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing.
|
||||
desc = "Can hold various tools."
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
icon_state = "utility"
|
||||
can_hold = list(
|
||||
///obj/item/weapon/combitool,
|
||||
/obj/item/weapon/crowbar,
|
||||
@@ -50,17 +47,17 @@
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/taperoll/engineering,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/device/robotanalyzer,
|
||||
/obj/item/weapon/material/minihoe,
|
||||
/obj/item/weapon/material/hatchet,
|
||||
/obj/item/device/analyzer/plant_analyzer,
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/device/flashlight/maglight
|
||||
/obj/item/device/flashlight/maglight,
|
||||
/obj/item/weapon/tape_roll,
|
||||
)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/full/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
@@ -70,7 +67,6 @@
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange"))
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/atmostech/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
@@ -80,13 +76,10 @@
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/device/t_scanner(src)
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/medical
|
||||
name = "medical belt"
|
||||
desc = "Can hold various medical equipment."
|
||||
icon_state = "medicalbelt"
|
||||
item_state = "medical"
|
||||
icon_state = "medical"
|
||||
can_hold = list(
|
||||
/obj/item/device/healthanalyzer,
|
||||
/obj/item/weapon/dnainjector,
|
||||
@@ -101,6 +94,7 @@
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/device/flashlight/pen,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
@@ -116,14 +110,12 @@
|
||||
/obj/item/weapon/storage/belt/medical/emt
|
||||
name = "EMT utility belt"
|
||||
desc = "A sturdy black webbing belt with attached pouches."
|
||||
icon_state = "emsbelt"
|
||||
item_state = "emsbelt"
|
||||
icon_state = "ems"
|
||||
|
||||
/obj/item/weapon/storage/belt/security
|
||||
name = "security belt"
|
||||
desc = "Can hold security gear like handcuffs and flashes."
|
||||
icon_state = "securitybelt"
|
||||
item_state = "security"
|
||||
icon_state = "security"
|
||||
max_w_class = 3
|
||||
can_hold = list(
|
||||
/obj/item/weapon/grenade,
|
||||
@@ -146,15 +138,14 @@
|
||||
/obj/item/weapon/melee,
|
||||
/obj/item/clothing/accessory/badge,
|
||||
/obj/item/weapon/gun/projectile/sec,
|
||||
/obj/item/taperoll/police,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/gun/projectile/colt/detective
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/detective
|
||||
name = "forensic utility belt"
|
||||
desc = "A belt for holding forensics equipment."
|
||||
icon_state = "securitybelt"
|
||||
item_state = "security"
|
||||
icon_state = "security"
|
||||
storage_slots = 7
|
||||
max_w_class = 3
|
||||
can_hold = list(
|
||||
@@ -181,7 +172,7 @@
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/taperoll/police,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/reagent_containers/spray/pepper,
|
||||
/obj/item/weapon/handcuffs,
|
||||
/obj/item/device/flash,
|
||||
@@ -194,8 +185,7 @@
|
||||
/obj/item/weapon/storage/belt/soulstone
|
||||
name = "soul stone belt"
|
||||
desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away"
|
||||
icon_state = "soulstonebelt"
|
||||
item_state = "soulstonebelt"
|
||||
icon_state = "soulstone"
|
||||
storage_slots = 6
|
||||
can_hold = list(
|
||||
/obj/item/device/soulstone
|
||||
@@ -214,8 +204,7 @@
|
||||
/obj/item/weapon/storage/belt/champion
|
||||
name = "championship belt"
|
||||
desc = "Proves to the world that you are the strongest!"
|
||||
icon_state = "championbelt"
|
||||
item_state = "champion"
|
||||
icon_state = "champion"
|
||||
storage_slots = 1
|
||||
can_hold = list(
|
||||
"/obj/item/clothing/mask/luchador"
|
||||
@@ -224,8 +213,7 @@
|
||||
/obj/item/weapon/storage/belt/security/tactical
|
||||
name = "combat belt"
|
||||
desc = "Can hold security gear like handcuffs and flashes, with more pouches for more storage."
|
||||
icon_state = "swatbelt"
|
||||
item_state = "swatbelt"
|
||||
icon_state = "swat"
|
||||
storage_slots = 9
|
||||
max_w_class = 3
|
||||
max_storage_space = 28
|
||||
@@ -234,13 +222,11 @@
|
||||
name = "combat belt"
|
||||
desc = "Can hold security gear like handcuffs and flashes, with more pouches for more storage."
|
||||
icon_state = "bandolier"
|
||||
item_state = "bandolier"
|
||||
|
||||
/obj/item/weapon/storage/belt/janitor
|
||||
name = "janitorial belt"
|
||||
desc = "A belt used to hold most janitorial supplies."
|
||||
icon_state = "janibelt"
|
||||
item_state = "janibelt"
|
||||
icon_state = "janitor"
|
||||
storage_slots = 7
|
||||
max_w_class = 3
|
||||
can_hold = list(
|
||||
@@ -256,6 +242,36 @@
|
||||
/obj/item/weapon/light/tube,
|
||||
/obj/item/weapon/flame/lighter,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/reagent_containers/spray,
|
||||
/obj/item/weapon/soap
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/archaeology
|
||||
name = "excavation gear-belt"
|
||||
desc = "Can hold various excavation gear."
|
||||
icon_state = "gear"
|
||||
can_hold = list(
|
||||
/obj/item/weapon/storage/box/samplebags,
|
||||
/obj/item/device/core_sampler,
|
||||
/obj/item/device/beacon_locator,
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/device/gps,
|
||||
/obj/item/device/measuring_tape,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/device/depth_scanner,
|
||||
/obj/item/device/camera,
|
||||
/obj/item/weapon/paper,
|
||||
/obj/item/weapon/photo,
|
||||
/obj/item/weapon/folder,
|
||||
/obj/item/weapon/pen,
|
||||
/obj/item/weapon/folder,
|
||||
/obj/item/weapon/clipboard,
|
||||
/obj/item/weapon/anodevice,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/weapon/storage/box/excavation,
|
||||
/obj/item/weapon/anobattery,
|
||||
/obj/item/device/ano_scanner
|
||||
)
|
||||
@@ -23,7 +23,7 @@
|
||||
name = "box"
|
||||
desc = "It's just an ordinary box."
|
||||
icon_state = "box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
var/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
|
||||
max_w_class = 2
|
||||
|
||||
@@ -35,20 +35,20 @@
|
||||
if ( contents.len )
|
||||
return
|
||||
|
||||
if ( !ispath(src.foldable) )
|
||||
if ( !ispath(foldable) )
|
||||
return
|
||||
var/found = 0
|
||||
// Close any open UI windows first
|
||||
for(var/mob/M in range(1))
|
||||
if (M.s_active == src)
|
||||
src.close(M)
|
||||
close(M)
|
||||
if ( M == user )
|
||||
found = 1
|
||||
if ( !found ) // User is too far away
|
||||
return
|
||||
// Now make the cardboard
|
||||
user << "<span class='notice'>You fold [src] flat.</span>"
|
||||
new src.foldable(get_turf(src))
|
||||
new foldable(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/New()
|
||||
@@ -125,7 +125,7 @@
|
||||
name = "box of blank shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front."
|
||||
icon_state = "blankshot_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/blanks/New()
|
||||
..()
|
||||
@@ -136,7 +136,7 @@
|
||||
name = "box of beanbag shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "beanshot_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/beanbags/New()
|
||||
..()
|
||||
@@ -147,7 +147,7 @@
|
||||
name = "box of shotgun slugs"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "lethalshellshot_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/shotgunammo/New()
|
||||
..()
|
||||
@@ -158,7 +158,7 @@
|
||||
name = "box of shotgun shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "lethalslug_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/shotgunshells/New()
|
||||
..()
|
||||
@@ -169,7 +169,7 @@
|
||||
name = "box of illumination shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "illumshot_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/flashshells/New()
|
||||
..()
|
||||
@@ -180,7 +180,7 @@
|
||||
name = "box of stun shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "stunshot_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/stunshells/New()
|
||||
..()
|
||||
@@ -191,7 +191,7 @@
|
||||
name = "box of practice shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "blankshot_box"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/practiceshells/New()
|
||||
..()
|
||||
@@ -224,7 +224,7 @@
|
||||
|
||||
/obj/item/weapon/storage/box/emps/New()
|
||||
..()
|
||||
for(var/i = 1 to 5)
|
||||
for(var/i = 1 to 7)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
|
||||
/obj/item/weapon/storage/box/empslite
|
||||
@@ -234,7 +234,7 @@
|
||||
|
||||
/obj/item/weapon/storage/box/empslite/New()
|
||||
..()
|
||||
for(var/i = 1 to 5)
|
||||
for(var/i = 1 to 7)
|
||||
new /obj/item/weapon/grenade/empgrenade/low_yield(src)
|
||||
|
||||
/obj/item/weapon/storage/box/smokes
|
||||
@@ -249,22 +249,32 @@
|
||||
|
||||
/obj/item/weapon/storage/box/anti_photons
|
||||
name = "box of anti-photon grenades"
|
||||
desc = "A box containing 5 experimental photon disruption grenades."
|
||||
desc = "A box containing 7 experimental photon disruption grenades."
|
||||
icon_state = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/anti_photons/New()
|
||||
..()
|
||||
for(var/i = 1 to 5)
|
||||
for(var/i = 1 to 7)
|
||||
new /obj/item/weapon/grenade/anti_photon(src)
|
||||
|
||||
/obj/item/weapon/storage/box/frags
|
||||
name = "box of fragmentation grenades (WARNING)"
|
||||
desc = "A box containing 5 military grade fragmentation grenades.<br> WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use."
|
||||
desc = "A box containing 7 military grade fragmentation grenades.<br> WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use."
|
||||
icon_state = "frag"
|
||||
|
||||
/obj/item/weapon/storage/box/frags/New()
|
||||
..()
|
||||
for(var/i = 1 to 5)
|
||||
for(var/i = 1 to 7)
|
||||
new /obj/item/weapon/grenade/explosive(src)
|
||||
|
||||
/obj/item/weapon/storage/box/frags_half_box
|
||||
name = "box of fragmentation grenades (WARNING)"
|
||||
desc = "A box containing 4 military grade fragmentation grenades.<br> WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use."
|
||||
icon_state = "frag"
|
||||
|
||||
/obj/item/weapon/storage/box/frags_half_box/New()
|
||||
..()
|
||||
for(var/i = 1 to 4)
|
||||
new /obj/item/weapon/grenade/explosive(src)
|
||||
|
||||
/obj/item/weapon/storage/box/metalfoam
|
||||
@@ -316,7 +326,7 @@
|
||||
name = "death alarm kit"
|
||||
desc = "Box of stuff used to implant death alarms."
|
||||
icon_state = "implant"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
|
||||
/obj/item/weapon/storage/box/cdeathalarm_kit/New()
|
||||
..()
|
||||
@@ -371,7 +381,7 @@
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/New()
|
||||
..()
|
||||
if(src.type == /obj/item/weapon/storage/box/monkeycubes)
|
||||
if(type == /obj/item/weapon/storage/box/monkeycubes)
|
||||
for(var/i = 1 to 4)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src)
|
||||
|
||||
@@ -468,7 +478,6 @@
|
||||
desc = "A small box of 'Space-Proof' premium matches."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "matchbox"
|
||||
item_state = "zippo"
|
||||
w_class = 1
|
||||
slot_flags = SLOT_BELT
|
||||
can_hold = list(/obj/item/weapon/flame/match)
|
||||
@@ -502,7 +511,7 @@
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "light"
|
||||
desc = "This box is shaped on the inside so that only light tubes and bulbs fit."
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
storage_slots=21
|
||||
can_hold = list(/obj/item/weapon/light/tube, /obj/item/weapon/light/bulb)
|
||||
max_storage_space = 42 //holds 21 items of w_class 2
|
||||
@@ -538,13 +547,29 @@
|
||||
desc = "This nifty shock-resistant device will keep your 'groceries' nice and non-spoiled."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "portafreezer"
|
||||
item_state = "medicalpack"
|
||||
item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack")
|
||||
foldable = null
|
||||
max_w_class = 3
|
||||
can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/food, /obj/item/weapon/reagent_containers/glass)
|
||||
max_storage_space = 21
|
||||
use_to_pickup = 1 // for picking up broken bulbs, not that most people will try
|
||||
|
||||
/obj/item/weapon/storage/box/freezer/Entered(var/atom/movable/AM)
|
||||
if(istype(AM, /obj/item/organ))
|
||||
var/obj/item/organ/O = AM
|
||||
O.preserved = 1
|
||||
for(var/obj/item/organ/organ in O)
|
||||
organ.preserved = 1
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/box/freezer/Exited(var/atom/movable/AM)
|
||||
if(istype(AM, /obj/item/organ))
|
||||
var/obj/item/organ/O = AM
|
||||
O.preserved = 0
|
||||
for(var/obj/item/organ/organ in O)
|
||||
organ.preserved = 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/box/ambrosia
|
||||
name = "ambrosia seeds box"
|
||||
desc = "Contains the seeds you need to get a little high."
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "briefcase"
|
||||
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
|
||||
icon_state = "briefcase"
|
||||
item_state = "briefcase"
|
||||
flags = CONDUCT
|
||||
force = 8.0
|
||||
throw_speed = 1
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
var/icon_type = "donut"
|
||||
|
||||
/obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0)
|
||||
var/total_contents = src.contents.len - itemremoved
|
||||
src.icon_state = "[src.icon_type]box[total_contents]"
|
||||
var/total_contents = contents.len - itemremoved
|
||||
icon_state = "[icon_type]box[total_contents]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/examine(mob/user)
|
||||
@@ -28,11 +28,11 @@
|
||||
return
|
||||
|
||||
if(contents.len <= 0)
|
||||
user << "There are no [src.icon_type]s left in the box."
|
||||
user << "There are no [icon_type]s left in the box."
|
||||
else if(contents.len == 1)
|
||||
user << "There is one [src.icon_type] left in the box."
|
||||
user << "There is one [icon_type] left in the box."
|
||||
else
|
||||
user << "There are [src.contents.len] [src.icon_type]s in the box."
|
||||
user << "There are [contents.len] [icon_type]s in the box."
|
||||
|
||||
return
|
||||
|
||||
@@ -71,7 +71,6 @@
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/New()
|
||||
..()
|
||||
for(var/i=1 to 5)
|
||||
@@ -128,7 +127,7 @@
|
||||
desc = "A ubiquitous brand of cigarettes, found in every major spacefaring corporation in the universe. As mild and flavorless as it gets."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cigpacket"
|
||||
item_state = "cigpacket"
|
||||
item_state_slots = list(slot_r_hand_str = "cigpacket", slot_l_hand_str = "cigpacket")
|
||||
w_class = 1
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
@@ -187,13 +186,11 @@
|
||||
name = "\improper DromedaryCo packet"
|
||||
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
||||
icon_state = "Dpacket"
|
||||
item_state = "Dpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/killthroat
|
||||
name = "\improper AcmeCo packet"
|
||||
desc = "A packet of six AcmeCo cigarettes. For those who somehow want to obtain the record for the most amount of cancerous tumors."
|
||||
icon_state = "Bpacket"
|
||||
item_state = "Bpacket" //Doesn't have an inhand state, but neither does dromedary, so, ya know..
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -205,37 +202,31 @@
|
||||
name = "\improper pack of Lucky Stars"
|
||||
desc = "A mellow blend made from synthetic, pod-grown tobacco. The commercial jingle is guaranteed to get stuck in your head."
|
||||
icon_state = "LSpacket"
|
||||
item_state = "Dpacket" //I actually don't mind cig packs not showing up in the hand. whotf doesn't just keep them in their pockets/coats //
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/jerichos
|
||||
name = "\improper pack of Jerichos"
|
||||
desc = "Typically seen dangling from the lips of Martian soldiers and border world hustlers. Tastes like hickory smoke, feels like warm liquid death down your lungs."
|
||||
icon_state = "Jpacket"
|
||||
item_state = "Dpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/menthols
|
||||
name = "\improper pack of Temperamento Menthols"
|
||||
desc = "With a sharp and natural organic menthol flavor, these Temperamentos are a favorite of NDV crews. Hardly anyone knows they make 'em in non-menthol!"
|
||||
icon_state = "TMpacket"
|
||||
item_state = "Dpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/carcinomas
|
||||
name = "\improper pack of Carcinoma Angels"
|
||||
desc = "This unknown brand was slated for the chopping block, until they were publicly endorsed by an old Earthling gonzo journalist. The rest is history. They sell a variety for cats, too."
|
||||
icon_state = "CApacket"
|
||||
item_state = "Dpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/professionals
|
||||
name = "\improper pack of Professional 120s"
|
||||
desc = "Let's face it - if you're smoking these, you're either trying to look upper-class or you're 80 years old. That's the only excuse. They taste disgusting, too."
|
||||
icon_state = "P100packet"
|
||||
item_state = "Dpacket"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigar
|
||||
name = "cigar case"
|
||||
desc = "A case for holding your cigars when you are not smoking them."
|
||||
icon_state = "cigarcase"
|
||||
item_state = "cigarcase"
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
w_class = 1
|
||||
throwforce = 2
|
||||
@@ -273,7 +264,6 @@
|
||||
storage_slots = 6
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/vials/New()
|
||||
..()
|
||||
for(var/i=1 to 6)
|
||||
@@ -285,7 +275,7 @@
|
||||
desc = "A locked box for keeping things away from children."
|
||||
icon = 'icons/obj/vialbox.dmi'
|
||||
icon_state = "vialbox0"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
max_w_class = 2
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
||||
max_storage_space = 12 //The sum of the w_classes of all the items in this storage item.
|
||||
@@ -297,9 +287,9 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0)
|
||||
var/total_contents = src.contents.len - itemremoved
|
||||
src.icon_state = "vialbox[total_contents]"
|
||||
src.overlays.Cut()
|
||||
var/total_contents = contents.len - itemremoved
|
||||
icon_state = "vialbox[total_contents]"
|
||||
overlays.Cut()
|
||||
if (!broken)
|
||||
overlays += image(icon, src, "led[locked]")
|
||||
if(locked)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
name = "fire first-aid kit"
|
||||
desc = "It's an emergency medical kit for when the toxins lab <i>-spontaneously-</i> burns down."
|
||||
icon_state = "ointment"
|
||||
item_state = "firstaid-ointment"
|
||||
item_state_slots = list(slot_r_hand_str = "firstaid-ointment", slot_l_hand_str = "firstaid-ointment")
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -58,7 +58,7 @@
|
||||
name = "toxin first aid"
|
||||
desc = "Used to treat when you have a high amoutn of toxins in your body."
|
||||
icon_state = "antitoxin"
|
||||
item_state = "firstaid-toxin"
|
||||
item_state_slots = list(slot_r_hand_str = "firstaid-toxin", slot_l_hand_str = "firstaid-toxin")
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -79,7 +79,7 @@
|
||||
name = "oxygen deprivation first aid"
|
||||
desc = "A box full of oxygen goodies."
|
||||
icon_state = "o2"
|
||||
item_state = "firstaid-o2"
|
||||
item_state_slots = list(slot_r_hand_str = "firstaid-o2", slot_l_hand_str = "firstaid-o2")
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -97,7 +97,7 @@
|
||||
name = "advanced first-aid kit"
|
||||
desc = "Contains advanced medical treatments."
|
||||
icon_state = "advfirstaid"
|
||||
item_state = "firstaid-advanced"
|
||||
item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced")
|
||||
|
||||
/obj/item/weapon/storage/firstaid/adv/New()
|
||||
..()
|
||||
@@ -115,7 +115,7 @@
|
||||
name = "combat medical kit"
|
||||
desc = "Contains advanced medical treatments."
|
||||
icon_state = "bezerk"
|
||||
item_state = "firstaid-advanced"
|
||||
item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced")
|
||||
|
||||
/obj/item/weapon/storage/firstaid/combat/New()
|
||||
..()
|
||||
@@ -158,7 +158,7 @@
|
||||
desc = "It's an airtight container for storing medication."
|
||||
icon_state = "pill_canister"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
item_state = "contsolid"
|
||||
item_state_slots = list(slot_r_hand_str = "contsolid", slot_l_hand_str = "contsolid")
|
||||
w_class = 2.0
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice,/obj/item/weapon/paper)
|
||||
allow_quick_gather = 1
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
name = "laundry basket"
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "laundry-empty"
|
||||
item_state = "laundry"
|
||||
item_state_slots = list(slot_r_hand_str = "laundry", slot_l_hand_str = "laundry")
|
||||
desc = "The peak of thousands of years of laundry evolution."
|
||||
|
||||
w_class = 5
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "lockbox"
|
||||
desc = "A locked box."
|
||||
icon_state = "lockbox+l"
|
||||
item_state = "syringe_kit"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
w_class = 4
|
||||
max_w_class = 3
|
||||
max_storage_space = 14 //The sum of the w_classes of all the items in this storage item.
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
name = "secure briefcase"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "secure"
|
||||
item_state = "sec-case"
|
||||
item_state_slots = list(slot_r_hand_str = "case", slot_l_hand_str = "case")
|
||||
desc = "A large briefcase with a digital locking system."
|
||||
force = 8.0
|
||||
throw_speed = 1
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
/obj/item/weapon/storage
|
||||
name = "storage"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi',
|
||||
)
|
||||
w_class = 3
|
||||
show_messages = 1
|
||||
|
||||
@@ -348,7 +352,7 @@
|
||||
if(usr)
|
||||
usr.remove_from_mob(W)
|
||||
usr.update_icons() //update our overlays
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
W.on_enter_storage(src)
|
||||
if(usr)
|
||||
if (usr.client && usr.s_active != src)
|
||||
@@ -391,9 +395,9 @@
|
||||
W.layer = 20
|
||||
else
|
||||
W.layer = initial(W.layer)
|
||||
W.loc = new_location
|
||||
W.forceMove(new_location)
|
||||
else
|
||||
W.loc = get_turf(src)
|
||||
W.forceMove(get_turf(src))
|
||||
|
||||
if(usr)
|
||||
src.orient2hud(usr)
|
||||
@@ -437,7 +441,7 @@
|
||||
user << "<span class='warning'>The tray won't fit in [src].</span>"
|
||||
return
|
||||
else
|
||||
W.loc = user.loc
|
||||
W.forceMove(get_turf(user))
|
||||
if ((user.client && user.s_active != src))
|
||||
user.client.screen -= W
|
||||
W.dropped(user)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Danger. Very robust."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "red"
|
||||
item_state = "toolbox_red"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red")
|
||||
flags = CONDUCT
|
||||
force = 5
|
||||
throwforce = 10
|
||||
@@ -18,7 +18,7 @@
|
||||
/obj/item/weapon/storage/toolbox/emergency
|
||||
name = "emergency toolbox"
|
||||
icon_state = "red"
|
||||
item_state = "toolbox_red"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red")
|
||||
|
||||
/obj/item/weapon/storage/toolbox/emergency/New()
|
||||
..()
|
||||
@@ -33,7 +33,7 @@
|
||||
/obj/item/weapon/storage/toolbox/mechanical
|
||||
name = "mechanical toolbox"
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue")
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical/New()
|
||||
..()
|
||||
@@ -47,7 +47,7 @@
|
||||
/obj/item/weapon/storage/toolbox/electrical
|
||||
name = "electrical toolbox"
|
||||
icon_state = "yellow"
|
||||
item_state = "toolbox_yellow"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_yellow", slot_l_hand_str = "toolbox_yellow")
|
||||
|
||||
/obj/item/weapon/storage/toolbox/electrical/New()
|
||||
..()
|
||||
@@ -65,7 +65,7 @@
|
||||
/obj/item/weapon/storage/toolbox/syndicate
|
||||
name = "black and red toolbox"
|
||||
icon_state = "syndicate"
|
||||
item_state = "toolbox_syndi"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi")
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1)
|
||||
force = 7.0
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
max_storage_space = 8 //slightly smaller than a toolbox
|
||||
name = "rainbow lunchbox"
|
||||
icon_state = "lunchbox_rainbow"
|
||||
item_state = "toolbox_pink"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_pink", slot_l_hand_str = "toolbox_pink")
|
||||
desc = "A little lunchbox. This one is the colors of the rainbow!"
|
||||
w_class = 3
|
||||
max_w_class = 2
|
||||
@@ -111,7 +111,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/heart
|
||||
name = "heart lunchbox"
|
||||
icon_state = "lunchbox_lovelyhearts"
|
||||
item_state = "toolbox_pink"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_pink", slot_l_hand_str = "toolbox_pink")
|
||||
desc = "A little lunchbox. This one has cute little hearts on it!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/heart/filled
|
||||
@@ -120,7 +120,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cat
|
||||
name = "cat lunchbox"
|
||||
icon_state = "lunchbox_sciencecatshow"
|
||||
item_state = "toolbox_green"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_green", slot_l_hand_str = "toolbox_green")
|
||||
desc = "A little lunchbox. This one has a cute little science cat from a popular show on it!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cat/filled
|
||||
@@ -129,7 +129,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nt
|
||||
name = "Nanotrasen brand lunchbox"
|
||||
icon_state = "lunchbox_nanotrasen"
|
||||
item_state = "toolbox_blue"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue")
|
||||
desc = "A little lunchbox. This one is branded with the Nanotrasen logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nt/filled
|
||||
@@ -138,7 +138,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/mars
|
||||
name = "\improper Mojave university lunchbox"
|
||||
icon_state = "lunchbox_marsuniversity"
|
||||
item_state = "toolbox_red"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red")
|
||||
desc = "A little lunchbox. This one is branded with the Mojave university logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/mars/filled
|
||||
@@ -147,7 +147,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cti
|
||||
name = "\improper CTI lunchbox"
|
||||
icon_state = "lunchbox_cti"
|
||||
item_state = "toolbox_blue"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue")
|
||||
desc = "A little lunchbox. This one is branded with the CTI logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cti/filled
|
||||
@@ -156,7 +156,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nymph
|
||||
name = "\improper Diona nymph lunchbox"
|
||||
icon_state = "lunchbox_dionanymph"
|
||||
item_state = "toolbox_yellow"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_yellow", slot_l_hand_str = "toolbox_yellow")
|
||||
desc = "A little lunchbox. This one is an adorable Diona nymph on the side!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nymph/filled
|
||||
@@ -165,7 +165,7 @@
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/syndicate
|
||||
name = "black and red lunchbox"
|
||||
icon_state = "lunchbox_syndie"
|
||||
item_state = "toolbox_syndi"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi")
|
||||
desc = "A little lunchbox. This one is a sleek black and red, made of a durable steel!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/syndicate/filled
|
||||
|
||||
@@ -265,4 +265,19 @@
|
||||
new /obj/item/clothing/suit/armor/combat(src)
|
||||
new /obj/item/clothing/gloves/arm_guard/combat(src)
|
||||
new /obj/item/clothing/shoes/leg_guard/combat(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/demolitions/New()
|
||||
..()
|
||||
new /obj/item/weapon/syndie/c4explosive(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy/New()
|
||||
..()
|
||||
new /obj/item/weapon/syndie/c4explosive/heavy(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy/New()
|
||||
..()
|
||||
new /obj/item/weapon/syndie/c4explosive/heavy/super_heavy(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
@@ -35,13 +35,14 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt)
|
||||
if(bcell)
|
||||
if(bcell.checked_use(chrgdeductamt))
|
||||
return 1
|
||||
else
|
||||
status = 0
|
||||
update_icon()
|
||||
return 0
|
||||
if(status == 1) //Only deducts charge when it's on
|
||||
if(bcell)
|
||||
if(bcell.checked_use(chrgdeductamt))
|
||||
return 1
|
||||
else
|
||||
status = 0
|
||||
update_icon()
|
||||
return 0
|
||||
return null
|
||||
|
||||
/obj/item/weapon/melee/baton/update_icon()
|
||||
@@ -109,6 +110,7 @@
|
||||
user.Weaken(30)
|
||||
deductcharge(hitcost)
|
||||
return
|
||||
deductcharge(hitcost)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/baton/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
@@ -144,8 +146,6 @@
|
||||
target.stun_effect_act(stun, agony, hit_zone, src)
|
||||
msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].")
|
||||
|
||||
deductcharge(hitcost)
|
||||
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.forcesay(hit_appends)
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
* Contains:
|
||||
* Sword
|
||||
* Classic Baton
|
||||
* Telescopic Baton
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Classic Baton
|
||||
*/
|
||||
/obj/item/weapon/melee/classic_baton
|
||||
@@ -34,7 +35,6 @@
|
||||
desc = "A compact yet rebalanced personal defense weapon. Can be concealed when folded."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "telebaton0"
|
||||
item_state = "telebaton0"
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = 2
|
||||
force = 3
|
||||
@@ -48,7 +48,6 @@
|
||||
"<span class='warning'>You extend the baton.</span>",\
|
||||
"You hear an ominous click.")
|
||||
icon_state = "telebaton1"
|
||||
item_state = "telebaton1"
|
||||
w_class = 3
|
||||
force = 15//quite robust
|
||||
attack_verb = list("smacked", "struck", "slapped")
|
||||
@@ -57,7 +56,6 @@
|
||||
"<span class='notice'>You collapse the baton.</span>",\
|
||||
"You hear a click.")
|
||||
icon_state = "telebaton0"
|
||||
item_state = "telebaton0"
|
||||
w_class = 2
|
||||
force = 3//not so robust now
|
||||
attack_verb = list("hit", "punched")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/obj/item/weapon/syndie/c4explosive
|
||||
icon_state = "c-4small_0"
|
||||
item_state = "c-4small"
|
||||
item_state = "radio"
|
||||
name = "normal-sized package"
|
||||
desc = "A small wrapped package."
|
||||
w_class = 3
|
||||
@@ -18,67 +18,75 @@
|
||||
|
||||
/obj/item/weapon/syndie/c4explosive/heavy
|
||||
icon_state = "c-4large_0"
|
||||
item_state = "c-4large"
|
||||
item_state = "radio"
|
||||
desc = "A mysterious package, it's quite heavy."
|
||||
power = 2
|
||||
size = "large"
|
||||
|
||||
/obj/item/weapon/syndie/c4explosive/heavy/super_heavy
|
||||
name = "large-sized package"
|
||||
desc = "A mysterious package, it's quite exceptionally heavy."
|
||||
power = 3
|
||||
|
||||
/obj/item/weapon/syndie/c4explosive/New()
|
||||
var/K = rand(1,2000)
|
||||
K = md5(num2text(K)+name)
|
||||
K = copytext(K,1,7)
|
||||
src.desc += "\n You see [K] engraved on \the [src]."
|
||||
var/obj/item/weapon/syndie/c4detonator/detonator = new(src.loc)
|
||||
detonator.desc += "\n You see [K] engraved on the lighter."
|
||||
desc += "\n You see [K] engraved on \the [src]."
|
||||
var/obj/item/weapon/flame/lighter/zippo/c4detonator/detonator = new(src.loc)
|
||||
detonator.desc += " You see [K] engraved on the lighter."
|
||||
detonator.bomb = src
|
||||
|
||||
/obj/item/weapon/syndie/c4explosive/proc/detonate()
|
||||
icon_state = "c-4[size]_1"
|
||||
spawn(50)
|
||||
explosion(get_turf(src), power, power*2, power*3, power*4, power*4)
|
||||
for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors.
|
||||
var/turf/simulated/wall/T = get_step(src,dirn)
|
||||
if(locate(/obj/machinery/door/airlock) in T)
|
||||
var/obj/machinery/door/airlock/D = locate() in T
|
||||
if(D.density)
|
||||
D.open()
|
||||
if(istype(T,/turf/simulated/wall))
|
||||
T.dismantle_wall(1)
|
||||
qdel(src)
|
||||
explosion(get_turf(src), power, power*2, power*3, power*4, power*5)
|
||||
for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors.
|
||||
var/turf/simulated/wall/T = get_step(src,dirn)
|
||||
if(locate(/obj/machinery/door/airlock) in T)
|
||||
var/obj/machinery/door/airlock/D = locate() in T
|
||||
if(D.density)
|
||||
D.open()
|
||||
if(istype(T,/turf/simulated/wall))
|
||||
T.dismantle_wall(1)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/*Detonator, disguised as a lighter*/
|
||||
/*Click it when closed to open, when open to bring up a prompt asking you if you want to close it or press the button.*/
|
||||
|
||||
/obj/item/weapon/syndie/c4detonator
|
||||
icon_state = "c-4detonator_0"
|
||||
item_state = "c-4detonator"
|
||||
name = "\improper Zippo lighter" /*Sneaky, thanks Dreyfus.*/
|
||||
desc = "The zippo."
|
||||
w_class = 1
|
||||
|
||||
/obj/item/weapon/flame/lighter/zippo/c4detonator
|
||||
var/detonator_mode = 0
|
||||
var/obj/item/weapon/syndie/c4explosive/bomb
|
||||
var/pr_open = 0 /*Is the "What do you want to do?" prompt open?*/
|
||||
|
||||
/obj/item/weapon/syndie/c4detonator/attack_self(mob/user as mob)
|
||||
switch(src.icon_state)
|
||||
if("c-4detonator_0")
|
||||
src.icon_state = "c-4detonator_1"
|
||||
user << "You flick open the lighter."
|
||||
/obj/item/weapon/flame/lighter/zippo/c4detonator/attack_self(mob/user as mob)
|
||||
if(!detonator_mode)
|
||||
..()
|
||||
|
||||
if("c-4detonator_1")
|
||||
if(!pr_open)
|
||||
pr_open = 1
|
||||
switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter."))
|
||||
if("Press the button.")
|
||||
user << "<span class='warning'>You press the button.</span>"
|
||||
flick("c-4detonator_click", src)
|
||||
if(src.bomb)
|
||||
src.bomb.detonate()
|
||||
log_admin("[key_name(user)] has triggered [src.bomb] with [src].")
|
||||
message_admins("<span class='danger'>[key_name_admin(user)] has triggered [src.bomb] with [src].</span>")
|
||||
else if(!lit)
|
||||
base_state = icon_state
|
||||
lit = 1
|
||||
icon_state = "[base_state]1"
|
||||
//item_state = "[base_state]on"
|
||||
user.visible_message("<span class='rose'>Without even breaking stride, \the [user] flips open \the [src] in one smooth movement.</span>")
|
||||
|
||||
if("Close the lighter.")
|
||||
src.icon_state = "c-4detonator_0"
|
||||
user << "You close the lighter."
|
||||
pr_open = 0
|
||||
else if(lit && detonator_mode)
|
||||
switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter."))
|
||||
if("Press the button.")
|
||||
user << "<span class='warning'>You press the button.</span>"
|
||||
icon_state = "[base_state]click"
|
||||
if(src.bomb)
|
||||
src.bomb.detonate()
|
||||
log_admin("[key_name(user)] has triggered [src.bomb] with [src].")
|
||||
message_admins("<span class='danger'>[key_name_admin(user)] has triggered [src.bomb] with [src].</span>")
|
||||
|
||||
if("Close the lighter.")
|
||||
lit = 0
|
||||
icon_state = "[base_state]"
|
||||
//item_state = "[base_state]"
|
||||
user.visible_message("<span class='rose'>You hear a quiet click, as \the [user] shuts off \the [src] without even looking at what they're doing.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/flame/lighter/zippo/c4detonator/attackby(obj/item/weapon/W, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
detonator_mode = !detonator_mode
|
||||
user << "<span class='notice'>You unscrew the top panel of \the [src] revealing a button.</span>"
|
||||
@@ -6,7 +6,11 @@
|
||||
icon_state = "jetpack"
|
||||
gauge_icon = null
|
||||
w_class = 4.0
|
||||
item_state = "jetpack"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi',
|
||||
)
|
||||
item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack")
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
var/datum/effect/effect/system/ion_trail_follow/ion_trail
|
||||
var/on = 0.0
|
||||
@@ -16,8 +20,8 @@
|
||||
|
||||
/obj/item/weapon/tank/jetpack/New()
|
||||
..()
|
||||
src.ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
src.ion_trail.set_up(src)
|
||||
ion_trail = new /datum/effect/effect/system/ion_trail_follow()
|
||||
ion_trail.set_up(src)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/Destroy()
|
||||
qdel(ion_trail)
|
||||
@@ -32,7 +36,7 @@
|
||||
/obj/item/weapon/tank/jetpack/verb/toggle_rockets()
|
||||
set name = "Toggle Jetpack Stabilization"
|
||||
set category = "Object"
|
||||
src.stabilization_on = !( src.stabilization_on )
|
||||
stabilization_on = !( stabilization_on )
|
||||
usr << "You toggle the stabilization [stabilization_on? "on":"off"]."
|
||||
|
||||
/obj/item/weapon/tank/jetpack/verb/toggle()
|
||||
@@ -55,13 +59,13 @@
|
||||
usr << "You toggle the thrusters [on? "on":"off"]."
|
||||
|
||||
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
|
||||
if(!(src.on))
|
||||
if(!on)
|
||||
return 0
|
||||
if((num < 0.005 || src.air_contents.total_moles < num))
|
||||
src.ion_trail.stop()
|
||||
if((num < 0.005 || air_contents.total_moles < num))
|
||||
ion_trail.stop()
|
||||
return 0
|
||||
|
||||
var/datum/gas_mixture/G = src.air_contents.remove(num)
|
||||
var/datum/gas_mixture/G = air_contents.remove(num)
|
||||
|
||||
var/allgases = G.gas["carbon_dioxide"] + G.gas["nitrogen"] + G.gas["oxygen"] + G.gas["phoron"]
|
||||
if(allgases >= 0.005)
|
||||
@@ -73,12 +77,11 @@
|
||||
/obj/item/weapon/tank/jetpack/ui_action_click()
|
||||
toggle()
|
||||
|
||||
|
||||
/obj/item/weapon/tank/jetpack/void
|
||||
name = "void jetpack (oxygen)"
|
||||
desc = "It works well in a void."
|
||||
icon_state = "jetpack-void"
|
||||
item_state = "jetpack-void"
|
||||
item_state_slots = list(slot_r_hand_str = "jetpack-void", slot_l_hand_str = "jetpack-void")
|
||||
|
||||
/obj/item/weapon/tank/jetpack/void/New()
|
||||
..()
|
||||
@@ -89,7 +92,7 @@
|
||||
name = "jetpack (oxygen)"
|
||||
desc = "A tank of compressed oxygen for use as propulsion in zero-gravity areas. Use with caution."
|
||||
icon_state = "jetpack"
|
||||
item_state = "jetpack"
|
||||
item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack")
|
||||
|
||||
/obj/item/weapon/tank/jetpack/oxygen/New()
|
||||
..()
|
||||
@@ -101,7 +104,7 @@
|
||||
desc = "A tank of compressed carbon dioxide for use as propulsion in zero-gravity areas. Painted black to indicate that it should not be used as a source for internals."
|
||||
distribute_pressure = 0
|
||||
icon_state = "jetpack-black"
|
||||
item_state = "jetpack-black"
|
||||
item_state_slots = list(slot_r_hand_str = "jetpack-black", slot_l_hand_str = "jetpack-black")
|
||||
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide/New()
|
||||
..()
|
||||
|
||||
@@ -16,19 +16,16 @@
|
||||
icon_state = "oxygen"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
|
||||
return
|
||||
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 0) && air_contents.gas["oxygen"] < 10)
|
||||
user << text("<span class='warning'>The meter on \the [src] indicates you are almost out of oxygen!</span>")
|
||||
//playsound(usr, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
|
||||
/obj/item/weapon/tank/oxygen/yellow
|
||||
desc = "A tank of oxygen, this one is yellow."
|
||||
icon_state = "oxygen_f"
|
||||
@@ -37,7 +34,6 @@
|
||||
desc = "A tank of oxygen, this one is red."
|
||||
icon_state = "oxygen_fr"
|
||||
|
||||
|
||||
/*
|
||||
* Anesthetic
|
||||
*/
|
||||
@@ -45,7 +41,6 @@
|
||||
name = "anesthetic tank"
|
||||
desc = "A tank with an N2O/O2 gas mix."
|
||||
icon_state = "anesthetic"
|
||||
item_state = "an_tank"
|
||||
|
||||
/obj/item/weapon/tank/anesthetic/New()
|
||||
..()
|
||||
@@ -64,7 +59,6 @@
|
||||
desc = "Mixed anyone?"
|
||||
icon_state = "oxygen"
|
||||
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 0) && air_contents.gas["oxygen"] < 1 && loc==user)
|
||||
user << "<span class='danger'>The meter on the [src.name] indicates you are almost out of air!</span>"
|
||||
@@ -76,8 +70,7 @@
|
||||
src.air_contents.adjust_multi("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, "nitrogen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD)
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Phoron
|
||||
*/
|
||||
@@ -89,7 +82,6 @@
|
||||
flags = CONDUCT
|
||||
slot_flags = null //they have no straps!
|
||||
|
||||
|
||||
/obj/item/weapon/tank/phoron/New()
|
||||
..()
|
||||
|
||||
@@ -124,14 +116,12 @@
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
src.air_contents.adjust_gas("oxygen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
|
||||
|
||||
return
|
||||
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 0) && air_contents.gas["oxygen"] < 0.2 && loc==user)
|
||||
user << text("<span class='danger'>The meter on the [src.name] indicates you are almost out of air!</span>")
|
||||
@@ -157,7 +147,6 @@
|
||||
icon_state = "oxygen_fr"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
|
||||
|
||||
/obj/item/weapon/tank/nitrogen/New()
|
||||
..()
|
||||
|
||||
@@ -167,4 +156,4 @@
|
||||
/obj/item/weapon/tank/nitrogen/examine(mob/user)
|
||||
if(..(user, 0) && air_contents.gas["nitrogen"] < 10)
|
||||
user << text("<span class='danger'>The meter on \the [src] indicates you are almost out of nitrogen!</span>")
|
||||
//playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
//playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] has taped up \the [H]'s eyes!</span>")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/blindfold/tape(H), slot_glasses)
|
||||
H.update_inv_glasses()
|
||||
|
||||
else if(user.zone_sel.selecting == O_MOUTH || user.zone_sel.selecting == BP_HEAD)
|
||||
if(!H.organs_by_name[BP_HEAD])
|
||||
@@ -58,6 +59,7 @@
|
||||
user.visible_message("<span class='danger'>\The [user] has taped up \the [H]'s mouth!</span>")
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/muzzle/tape(H), slot_wear_mask)
|
||||
H.update_inv_wear_mask()
|
||||
|
||||
else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
|
||||
var/obj/item/weapon/handcuffs/cable/tape/T = new(user)
|
||||
|
||||
@@ -413,6 +413,7 @@
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5.0
|
||||
throwforce = 7.0
|
||||
pry = 1
|
||||
item_state = "crowbar"
|
||||
w_class = 2.0
|
||||
origin_tech = list(TECH_ENGINEERING = 1)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/obj/item/weapon/nullrod
|
||||
name = "null rod"
|
||||
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
var/throwforce = 1
|
||||
var/sharp = 0 // whether this object cuts
|
||||
var/edge = 0 // whether this object is more likely to dismember
|
||||
var/pry = 0 //Used in attackby() to open doors
|
||||
var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING!
|
||||
var/damtype = "brute"
|
||||
var/armor_penetration = 0
|
||||
@@ -119,9 +120,6 @@
|
||||
/obj/proc/interact(mob/user)
|
||||
return
|
||||
|
||||
/obj/proc/update_icon()
|
||||
return
|
||||
|
||||
/mob/proc/unset_machine()
|
||||
src.machine = null
|
||||
|
||||
|
||||
@@ -42,12 +42,14 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "welder"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/weapon/screwdriver,\
|
||||
/obj/item/weapon/wirecutters,\
|
||||
/obj/item/weapon/weldingtool,\
|
||||
/obj/item/weapon/crowbar,\
|
||||
/obj/item/weapon/wrench,\
|
||||
/obj/item/device/flashlight)
|
||||
return pick(/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/weldingtool/largetank,
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/multitool)
|
||||
|
||||
|
||||
/obj/random/technology_scanner
|
||||
@@ -56,8 +58,8 @@
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "atmos"
|
||||
item_to_spawn()
|
||||
return pick(prob(5);/obj/item/device/t_scanner,\
|
||||
prob(2);/obj/item/device/radio,\
|
||||
return pick(prob(5);/obj/item/device/t_scanner,
|
||||
prob(2);/obj/item/device/radio,
|
||||
prob(5);/obj/item/device/analyzer)
|
||||
|
||||
|
||||
@@ -67,10 +69,9 @@
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
item_to_spawn()
|
||||
return pick(prob(10);/obj/item/weapon/cell/crap,\
|
||||
prob(40);/obj/item/weapon/cell,\
|
||||
prob(40);/obj/item/weapon/cell/high,\
|
||||
prob(9);/obj/item/weapon/cell/super,\
|
||||
return pick(prob(50);/obj/item/weapon/cell,
|
||||
prob(40);/obj/item/weapon/cell/high,
|
||||
prob(9);/obj/item/weapon/cell/super,
|
||||
prob(1);/obj/item/weapon/cell/hyper)
|
||||
|
||||
|
||||
@@ -80,9 +81,10 @@
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = "signaller"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/device/assembly/igniter,\
|
||||
/obj/item/device/assembly/prox_sensor,\
|
||||
/obj/item/device/assembly/signaler,\
|
||||
return pick(/obj/item/device/assembly/igniter,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/assembly/signaler,
|
||||
/obj/item/device/assembly/timer,
|
||||
/obj/item/device/multitool)
|
||||
|
||||
|
||||
@@ -92,9 +94,10 @@
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "red"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/storage/toolbox/mechanical,\
|
||||
prob(2);/obj/item/weapon/storage/toolbox/electrical,\
|
||||
prob(1);/obj/item/weapon/storage/toolbox/emergency)
|
||||
return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical,
|
||||
prob(6);/obj/item/weapon/storage/toolbox/electrical,
|
||||
prob(2);/obj/item/weapon/storage/toolbox/emergency,
|
||||
prob(1);/obj/item/weapon/storage/toolbox/syndicate)
|
||||
|
||||
|
||||
/obj/random/tech_supply
|
||||
@@ -102,41 +105,53 @@
|
||||
desc = "This is a random piece of technology supplies."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
spawn_nothing_percentage = 50
|
||||
spawn_nothing_percentage = 25
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/random/powercell,\
|
||||
prob(2);/obj/random/technology_scanner,\
|
||||
prob(1);/obj/item/weapon/packageWrap,\
|
||||
prob(2);/obj/random/bomb_supply,\
|
||||
prob(1);/obj/item/weapon/extinguisher,\
|
||||
prob(1);/obj/item/clothing/gloves/fyellow,\
|
||||
prob(3);/obj/item/stack/cable_coil/random,\
|
||||
prob(2);/obj/random/toolbox,\
|
||||
prob(2);/obj/item/weapon/storage/belt/utility,\
|
||||
prob(5);/obj/random/tool,\
|
||||
prob(2);/obj/item/weapon/tape_roll)
|
||||
return pick(prob(3);/obj/random/powercell,
|
||||
prob(2);/obj/random/technology_scanner,
|
||||
prob(1);/obj/item/weapon/packageWrap,
|
||||
prob(2);/obj/random/bomb_supply,
|
||||
prob(1);/obj/item/weapon/extinguisher,
|
||||
prob(1);/obj/item/clothing/gloves/fyellow,
|
||||
prob(3);/obj/item/stack/cable_coil/random,
|
||||
prob(2);/obj/random/toolbox,
|
||||
prob(2);/obj/item/weapon/storage/belt/utility,
|
||||
prob(1);/obj/item/weapon/storage/belt/utility/full,
|
||||
prob(5);/obj/random/tool,
|
||||
prob(2);/obj/item/weapon/tape_roll,
|
||||
prob(2);/obj/item/taperoll/engineering,
|
||||
prob(1);/obj/item/taperoll/atmos,
|
||||
prob(1);/obj/item/device/flashlight/maglight)
|
||||
|
||||
/obj/random/medical
|
||||
name = "Random Medicine"
|
||||
desc = "This is a random medical item."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "brutepack"
|
||||
spawn_nothing_percentage = 25
|
||||
spawn_nothing_percentage = 12.5
|
||||
item_to_spawn()
|
||||
return pick(prob(4);/obj/item/stack/medical/bruise_pack,\
|
||||
prob(4);/obj/item/stack/medical/ointment,\
|
||||
prob(2);/obj/item/stack/medical/advanced/bruise_pack,\
|
||||
prob(2);/obj/item/stack/medical/advanced/ointment,\
|
||||
prob(1);/obj/item/stack/medical/splint,\
|
||||
prob(2);/obj/item/bodybag,\
|
||||
prob(1);/obj/item/bodybag/cryobag,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/kelotane,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/antitox,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/tramadol,\
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/antitoxin,\
|
||||
prob(1);/obj/item/weapon/reagent_containers/syringe/antiviral,\
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/inaprovaline,\
|
||||
prob(1);/obj/item/stack/nanopaste)
|
||||
return pick(prob(8);/obj/item/stack/medical/bruise_pack,
|
||||
prob(8);/obj/item/stack/medical/ointment,
|
||||
prob(4);/obj/item/stack/medical/advanced/bruise_pack,
|
||||
prob(4);/obj/item/stack/medical/advanced/ointment,
|
||||
prob(2);/obj/item/stack/medical/splint,
|
||||
prob(4);/obj/item/bodybag,
|
||||
prob(2);/obj/item/bodybag/cryobag,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/kelotane,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/dylovene,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||
prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin,
|
||||
prob(1);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||
prob(0.2);/obj/item/weapon/storage/pill_bottle/dermaline,
|
||||
prob(0.2);/obj/item/weapon/storage/pill_bottle/dexalin_plus,
|
||||
prob(0.2);/obj/item/weapon/storage/pill_bottle/bicaridine,
|
||||
prob(4);/obj/item/weapon/reagent_containers/syringe/antitoxin,
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/antiviral,
|
||||
prob(4);/obj/item/weapon/reagent_containers/syringe/inaprovaline,
|
||||
prob(4);/obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
prob(0.1);/obj/item/weapon/reagent_containers/hypospray,
|
||||
prob(1);/obj/item/device/healthanalyzer,
|
||||
prob(2);/obj/item/stack/nanopaste)
|
||||
|
||||
|
||||
/obj/random/firstaid
|
||||
@@ -145,10 +160,10 @@
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "firstaid"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/storage/firstaid/regular,\
|
||||
prob(2);/obj/item/weapon/storage/firstaid/toxin,\
|
||||
prob(2);/obj/item/weapon/storage/firstaid/o2,\
|
||||
prob(1);/obj/item/weapon/storage/firstaid/adv,\
|
||||
return pick(prob(3);/obj/item/weapon/storage/firstaid/regular,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/toxin,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/o2,
|
||||
prob(1);/obj/item/weapon/storage/firstaid/adv,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/fire)
|
||||
|
||||
|
||||
@@ -159,17 +174,22 @@
|
||||
icon_state = "purplecomb"
|
||||
spawn_nothing_percentage = 50
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/storage/pill_bottle/tramadol,\
|
||||
prob(4);/obj/item/weapon/haircomb,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/happy,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/zoom,\
|
||||
prob(5);/obj/item/weapon/contraband/poster,\
|
||||
prob(2);/obj/item/weapon/material/butterfly,\
|
||||
prob(3);/obj/item/weapon/material/butterflyblade,\
|
||||
prob(3);/obj/item/weapon/material/butterflyhandle,\
|
||||
prob(3);/obj/item/weapon/material/wirerod,\
|
||||
prob(1);/obj/item/weapon/material/butterfly/switchblade,\
|
||||
prob(1);/obj/item/weapon/reagent_containers/syringe/drugs)
|
||||
return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||
prob(8);/obj/item/weapon/haircomb,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/happy,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
|
||||
prob(10);/obj/item/weapon/contraband/poster,
|
||||
prob(4);/obj/item/weapon/material/butterfly,
|
||||
prob(6);/obj/item/weapon/material/butterflyblade,
|
||||
prob(6);/obj/item/weapon/material/butterflyhandle,
|
||||
prob(6);/obj/item/weapon/material/wirerod,
|
||||
prob(2);/obj/item/weapon/material/butterfly/switchblade,
|
||||
prob(2);/obj/item/weapon/material/knuckledusters,
|
||||
prob(1);/obj/item/weapon/material/hatchet/tacknife,
|
||||
prob(0.5);/obj/item/weapon/beartrap,
|
||||
prob(1);/obj/item/weapon/handcuffs,
|
||||
prob(1);/obj/item/weapon/legcuffs,
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/drugs)
|
||||
|
||||
|
||||
/obj/random/energy
|
||||
@@ -178,9 +198,8 @@
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "energykill100"
|
||||
item_to_spawn()
|
||||
return pick(prob(2);/obj/item/weapon/gun/energy/laser,\
|
||||
prob(2);/obj/item/weapon/gun/energy/gun,\
|
||||
prob(1);/obj/item/weapon/gun/energy/stunrevolver)
|
||||
return pick(prob(2);/obj/item/weapon/gun/energy/laser,
|
||||
prob(2);/obj/item/weapon/gun/energy/gun)
|
||||
|
||||
/obj/random/projectile
|
||||
name = "Random Projectile Weapon"
|
||||
@@ -188,8 +207,8 @@
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "revolver"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,\
|
||||
prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,\
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
|
||||
prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||
prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat)
|
||||
|
||||
/obj/random/handgun
|
||||
@@ -198,7 +217,7 @@
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "secgundark"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/sec,\
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/sec,
|
||||
prob(1);/obj/item/weapon/gun/projectile/sec/wood)
|
||||
|
||||
|
||||
@@ -208,14 +227,14 @@
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "45-10"
|
||||
item_to_spawn()
|
||||
return pick(prob(6);/obj/item/weapon/storage/box/beanbags,\
|
||||
prob(2);/obj/item/weapon/storage/box/shotgunammo,\
|
||||
prob(4);/obj/item/weapon/storage/box/shotgunshells,\
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,\
|
||||
prob(2);/obj/item/ammo_magazine/c45m,\
|
||||
prob(4);/obj/item/ammo_magazine/c45m/rubber,\
|
||||
prob(4);/obj/item/ammo_magazine/c45m/flash,\
|
||||
prob(2);/obj/item/ammo_magazine/mc9mmt,\
|
||||
return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
|
||||
prob(2);/obj/item/weapon/storage/box/shotgunammo,
|
||||
prob(4);/obj/item/weapon/storage/box/shotgunshells,
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,
|
||||
prob(2);/obj/item/ammo_magazine/c45m,
|
||||
prob(4);/obj/item/ammo_magazine/c45m/rubber,
|
||||
prob(4);/obj/item/ammo_magazine/c45m/flash,
|
||||
prob(2);/obj/item/ammo_magazine/mc9mmt,
|
||||
prob(6);/obj/item/ammo_magazine/mc9mmt/rubber)
|
||||
|
||||
|
||||
@@ -225,43 +244,43 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "assistant"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/toy/figure/cmo,\
|
||||
/obj/item/toy/figure/assistant,\
|
||||
/obj/item/toy/figure/atmos,\
|
||||
/obj/item/toy/figure/bartender,\
|
||||
/obj/item/toy/figure/borg,\
|
||||
/obj/item/toy/figure/gardener,\
|
||||
/obj/item/toy/figure/captain,\
|
||||
/obj/item/toy/figure/cargotech,\
|
||||
/obj/item/toy/figure/ce,\
|
||||
/obj/item/toy/figure/chaplain,\
|
||||
/obj/item/toy/figure/chef,\
|
||||
/obj/item/toy/figure/chemist,\
|
||||
/obj/item/toy/figure/clown,\
|
||||
/obj/item/toy/figure/corgi,\
|
||||
/obj/item/toy/figure/detective,\
|
||||
/obj/item/toy/figure/dsquad,\
|
||||
/obj/item/toy/figure/engineer,\
|
||||
/obj/item/toy/figure/geneticist,\
|
||||
/obj/item/toy/figure/hop,\
|
||||
/obj/item/toy/figure/hos,\
|
||||
/obj/item/toy/figure/qm,\
|
||||
/obj/item/toy/figure/janitor,\
|
||||
/obj/item/toy/figure/agent,\
|
||||
/obj/item/toy/figure/librarian,\
|
||||
/obj/item/toy/figure/md,\
|
||||
/obj/item/toy/figure/mime,\
|
||||
/obj/item/toy/figure/miner,\
|
||||
/obj/item/toy/figure/ninja,\
|
||||
/obj/item/toy/figure/wizard,\
|
||||
/obj/item/toy/figure/rd,\
|
||||
/obj/item/toy/figure/roboticist,\
|
||||
/obj/item/toy/figure/scientist,\
|
||||
/obj/item/toy/figure/syndie,\
|
||||
/obj/item/toy/figure/secofficer,\
|
||||
/obj/item/toy/figure/warden,\
|
||||
/obj/item/toy/figure/psychologist,\
|
||||
/obj/item/toy/figure/paramedic,\
|
||||
return pick(/obj/item/toy/figure/cmo,
|
||||
/obj/item/toy/figure/assistant,
|
||||
/obj/item/toy/figure/atmos,
|
||||
/obj/item/toy/figure/bartender,
|
||||
/obj/item/toy/figure/borg,
|
||||
/obj/item/toy/figure/gardener,
|
||||
/obj/item/toy/figure/captain,
|
||||
/obj/item/toy/figure/cargotech,
|
||||
/obj/item/toy/figure/ce,
|
||||
/obj/item/toy/figure/chaplain,
|
||||
/obj/item/toy/figure/chef,
|
||||
/obj/item/toy/figure/chemist,
|
||||
/obj/item/toy/figure/clown,
|
||||
/obj/item/toy/figure/corgi,
|
||||
/obj/item/toy/figure/detective,
|
||||
/obj/item/toy/figure/dsquad,
|
||||
/obj/item/toy/figure/engineer,
|
||||
/obj/item/toy/figure/geneticist,
|
||||
/obj/item/toy/figure/hop,
|
||||
/obj/item/toy/figure/hos,
|
||||
/obj/item/toy/figure/qm,
|
||||
/obj/item/toy/figure/janitor,
|
||||
/obj/item/toy/figure/agent,
|
||||
/obj/item/toy/figure/librarian,
|
||||
/obj/item/toy/figure/md,
|
||||
/obj/item/toy/figure/mime,
|
||||
/obj/item/toy/figure/miner,
|
||||
/obj/item/toy/figure/ninja,
|
||||
/obj/item/toy/figure/wizard,
|
||||
/obj/item/toy/figure/rd,
|
||||
/obj/item/toy/figure/roboticist,
|
||||
/obj/item/toy/figure/scientist,
|
||||
/obj/item/toy/figure/syndie,
|
||||
/obj/item/toy/figure/secofficer,
|
||||
/obj/item/toy/figure/warden,
|
||||
/obj/item/toy/figure/psychologist,
|
||||
/obj/item/toy/figure/paramedic,
|
||||
/obj/item/toy/figure/ert)
|
||||
|
||||
|
||||
@@ -271,12 +290,12 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "nymphplushie"
|
||||
item_to_spawn()
|
||||
return pick(/obj/structure/plushie/ian,\
|
||||
/obj/structure/plushie/drone,\
|
||||
/obj/structure/plushie/carp,\
|
||||
/obj/structure/plushie/beepsky,\
|
||||
/obj/item/toy/plushie/nymph,\
|
||||
/obj/item/toy/plushie/mouse,\
|
||||
/obj/item/toy/plushie/kitten,\
|
||||
return pick(/obj/structure/plushie/ian,
|
||||
/obj/structure/plushie/drone,
|
||||
/obj/structure/plushie/carp,
|
||||
/obj/structure/plushie/beepsky,
|
||||
/obj/item/toy/plushie/nymph,
|
||||
/obj/item/toy/plushie/mouse,
|
||||
/obj/item/toy/plushie/kitten,
|
||||
/obj/item/toy/plushie/lizard)
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@ LINEN BINS
|
||||
desc = "A surprisingly soft linen bedsheet."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "sheet"
|
||||
item_state = "bedsheet"
|
||||
slot_flags = SLOT_BACK
|
||||
layer = 4.0
|
||||
throwforce = 1
|
||||
@@ -39,75 +38,59 @@ LINEN BINS
|
||||
|
||||
/obj/item/weapon/bedsheet/blue
|
||||
icon_state = "sheetblue"
|
||||
item_state = "sheetblue"
|
||||
|
||||
/obj/item/weapon/bedsheet/green
|
||||
icon_state = "sheetgreen"
|
||||
item_state = "sheetgreen"
|
||||
|
||||
/obj/item/weapon/bedsheet/orange
|
||||
icon_state = "sheetorange"
|
||||
item_state = "sheetorange"
|
||||
|
||||
/obj/item/weapon/bedsheet/purple
|
||||
icon_state = "sheetpurple"
|
||||
item_state = "sheetpurple"
|
||||
|
||||
/obj/item/weapon/bedsheet/rainbow
|
||||
icon_state = "sheetrainbow"
|
||||
item_state = "sheetrainbow"
|
||||
|
||||
/obj/item/weapon/bedsheet/red
|
||||
icon_state = "sheetred"
|
||||
item_state = "sheetred"
|
||||
|
||||
/obj/item/weapon/bedsheet/yellow
|
||||
icon_state = "sheetyellow"
|
||||
item_state = "sheetyellow"
|
||||
|
||||
/obj/item/weapon/bedsheet/mime
|
||||
icon_state = "sheetmime"
|
||||
item_state = "sheetmime"
|
||||
|
||||
/obj/item/weapon/bedsheet/clown
|
||||
icon_state = "sheetclown"
|
||||
item_state = "sheetclown"
|
||||
item_state = "sheetrainbow"
|
||||
|
||||
/obj/item/weapon/bedsheet/captain
|
||||
icon_state = "sheetcaptain"
|
||||
item_state = "sheetcaptain"
|
||||
|
||||
/obj/item/weapon/bedsheet/rd
|
||||
icon_state = "sheetrd"
|
||||
item_state = "sheetrd"
|
||||
|
||||
/obj/item/weapon/bedsheet/medical
|
||||
icon_state = "sheetmedical"
|
||||
item_state = "sheetmedical"
|
||||
|
||||
/obj/item/weapon/bedsheet/hos
|
||||
icon_state = "sheethos"
|
||||
item_state = "sheethos"
|
||||
|
||||
/obj/item/weapon/bedsheet/hop
|
||||
icon_state = "sheethop"
|
||||
item_state = "sheethop"
|
||||
|
||||
/obj/item/weapon/bedsheet/ce
|
||||
icon_state = "sheetce"
|
||||
item_state = "sheetce"
|
||||
|
||||
/obj/item/weapon/bedsheet/brown
|
||||
icon_state = "sheetbrown"
|
||||
item_state = "sheetbrown"
|
||||
|
||||
/obj/item/weapon/bedsheet/ian
|
||||
icon_state = "sheetian"
|
||||
item_state = "bedsheet"
|
||||
|
||||
/obj/item/weapon/bedsheet/double
|
||||
icon_state = "doublesheet"
|
||||
item_state = "bedsheet"
|
||||
item_state = "sheet"
|
||||
|
||||
/obj/item/weapon/bedsheet/bluedouble
|
||||
icon_state = "doublesheetblue"
|
||||
@@ -125,54 +108,53 @@ LINEN BINS
|
||||
icon_state = "doublesheetpurple"
|
||||
item_state = "sheetpurple"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublerainbow //all the way across the sky.
|
||||
/obj/item/weapon/bedsheet/rainbowdouble //all the way across the sky.
|
||||
icon_state = "doublesheetrainbow"
|
||||
item_state = "sheetrainbow"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublered
|
||||
/obj/item/weapon/bedsheet/reddouble
|
||||
icon_state = "doublesheetred"
|
||||
item_state = "sheetred"
|
||||
|
||||
/obj/item/weapon/bedsheet/doubleyellow
|
||||
/obj/item/weapon/bedsheet/yellowdouble
|
||||
icon_state = "doublesheetyellow"
|
||||
item_state = "sheetyellow"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublemime
|
||||
/obj/item/weapon/bedsheet/mimedouble
|
||||
icon_state = "doublesheetmime"
|
||||
item_state = "sheetmime"
|
||||
|
||||
/obj/item/weapon/bedsheet/doubleclown
|
||||
/obj/item/weapon/bedsheet/clowndouble
|
||||
icon_state = "doublesheetclown"
|
||||
item_state = "sheetclown"
|
||||
item_state = "sheetrainbow"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublecaptain
|
||||
/obj/item/weapon/bedsheet/captaindouble
|
||||
icon_state = "doublesheetcaptain"
|
||||
item_state = "sheetcaptain"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublerd
|
||||
/obj/item/weapon/bedsheet/rddouble
|
||||
icon_state = "doublesheetrd"
|
||||
item_state = "sheetrd"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublehos
|
||||
/obj/item/weapon/bedsheet/hosdouble
|
||||
icon_state = "doublesheethos"
|
||||
item_state = "sheethos"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublehop
|
||||
/obj/item/weapon/bedsheet/hopdouble
|
||||
icon_state = "doublesheethop"
|
||||
item_state = "sheethop"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublece
|
||||
/obj/item/weapon/bedsheet/cedouble
|
||||
icon_state = "doublesheetce"
|
||||
item_state = "sheetce"
|
||||
|
||||
/obj/item/weapon/bedsheet/doublebrown
|
||||
/obj/item/weapon/bedsheet/browndouble
|
||||
icon_state = "doublesheetbrown"
|
||||
item_state = "sheetbrown"
|
||||
|
||||
/obj/item/weapon/bedsheet/doubleian
|
||||
/obj/item/weapon/bedsheet/iandouble
|
||||
icon_state = "doublesheetian"
|
||||
item_state = "bedsheet"
|
||||
|
||||
item_state = "sheetian"
|
||||
|
||||
/obj/structure/bedsheetbin
|
||||
name = "linen bin"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
new /obj/item/blueprints(src)
|
||||
new /obj/item/clothing/under/rank/chief_engineer(src)
|
||||
new /obj/item/clothing/under/rank/engineer/chief_engineer/skirt(src)
|
||||
new /obj/item/clothing/under/rank/chief_engineer/skirt(src)
|
||||
new /obj/item/clothing/head/hardhat/white(src)
|
||||
new /obj/item/clothing/head/welding(src)
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
new /obj/item/clothing/under/rank/medical/navyblue(src)
|
||||
new /obj/item/clothing/head/surgery/navyblue(src)
|
||||
new /obj/item/clothing/under/rank/chief_medical_officer(src)
|
||||
new /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt(src)
|
||||
new /obj/item/clothing/under/rank/chief_medical_officer/skirt(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt(src)
|
||||
new /obj/item/weapon/cartridge/cmo(src)
|
||||
|
||||
@@ -102,8 +102,8 @@
|
||||
new /obj/item/clothing/suit/storage/vest/hos(src)
|
||||
new /obj/item/clothing/under/rank/head_of_security/jensen(src)
|
||||
new /obj/item/clothing/under/rank/head_of_security/corp(src)
|
||||
new /obj/item/clothing/suit/armor/hos/jensen(src)
|
||||
new /obj/item/clothing/suit/armor/hos(src)
|
||||
new /obj/item/clothing/suit/storage/vest/hoscoat/jensen(src)
|
||||
new /obj/item/clothing/suit/storage/vest/hoscoat(src)
|
||||
new /obj/item/clothing/head/helmet/HoS/dermal(src)
|
||||
new /obj/item/weapon/cartridge/hos(src)
|
||||
new /obj/item/device/radio/headset/heads/hos(src)
|
||||
@@ -114,6 +114,8 @@
|
||||
new /obj/item/weapon/shield/riot/tele(src)
|
||||
new /obj/item/weapon/storage/box/holobadge/hos(src)
|
||||
new /obj/item/clothing/accessory/badge/holo/hos(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/belt/security(src)
|
||||
new /obj/item/device/flash(src)
|
||||
@@ -150,8 +152,8 @@
|
||||
new /obj/item/clothing/suit/storage/vest/warden(src)
|
||||
new /obj/item/clothing/under/rank/warden(src)
|
||||
new /obj/item/clothing/under/rank/warden/corp(src)
|
||||
new /obj/item/clothing/suit/armor/vest/warden(src)
|
||||
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
|
||||
new /obj/item/clothing/suit/storage/vest/wardencoat(src)
|
||||
new /obj/item/clothing/suit/storage/vest/wardencoat/alt(src)
|
||||
new /obj/item/clothing/head/helmet/warden(src)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
|
||||
@@ -246,9 +246,9 @@
|
||||
new /obj/item/clothing/under/rank/atmospheric_technician(src)
|
||||
new /obj/item/clothing/under/rank/atmospheric_technician(src)
|
||||
new /obj/item/clothing/under/rank/atmospheric_technician(src)
|
||||
new /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt(src)
|
||||
new /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt(src)
|
||||
new /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt(src)
|
||||
new /obj/item/clothing/under/rank/atmospheric_technician/skirt(src)
|
||||
new /obj/item/clothing/under/rank/atmospheric_technician/skirt(src)
|
||||
new /obj/item/clothing/under/rank/atmospheric_technician/skirt(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
@@ -396,8 +396,8 @@
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/chemist(src)
|
||||
new /obj/item/clothing/under/rank/chemist(src)
|
||||
new /obj/item/clothing/under/rank/medical/chemist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/medical/chemist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/chemist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/chemist/skirt(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(src)
|
||||
@@ -418,8 +418,8 @@
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/geneticist(src)
|
||||
new /obj/item/clothing/under/rank/geneticist(src)
|
||||
new /obj/item/clothing/under/rank/medical/geneticist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/medical/geneticist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/geneticist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/geneticist/skirt(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(src)
|
||||
@@ -440,8 +440,8 @@
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/virologist(src)
|
||||
new /obj/item/clothing/under/rank/virologist(src)
|
||||
new /obj/item/clothing/under/rank/medical/virologist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/medical/virologist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/virologist/skirt(src)
|
||||
new /obj/item/clothing/under/rank/virologist/skirt(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(src)
|
||||
|
||||
@@ -331,18 +331,34 @@
|
||||
var/target_temp = T0C - 40
|
||||
var/cooling_power = 40
|
||||
|
||||
return_air()
|
||||
var/datum/gas_mixture/gas = (..())
|
||||
if(!gas) return null
|
||||
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
|
||||
newgas.copy_from(gas)
|
||||
if(newgas.temperature <= target_temp) return
|
||||
/obj/structure/closet/crate/freezer/return_air()
|
||||
var/datum/gas_mixture/gas = (..())
|
||||
if(!gas) return null
|
||||
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
|
||||
newgas.copy_from(gas)
|
||||
if(newgas.temperature <= target_temp) return
|
||||
|
||||
if((newgas.temperature - cooling_power) > target_temp)
|
||||
newgas.temperature -= cooling_power
|
||||
else
|
||||
newgas.temperature = target_temp
|
||||
return newgas
|
||||
if((newgas.temperature - cooling_power) > target_temp)
|
||||
newgas.temperature -= cooling_power
|
||||
else
|
||||
newgas.temperature = target_temp
|
||||
return newgas
|
||||
|
||||
/obj/structure/closet/crate/freezer/Entered(var/atom/movable/AM)
|
||||
if(istype(AM, /obj/item/organ))
|
||||
var/obj/item/organ/O = AM
|
||||
O.preserved = 1
|
||||
for(var/obj/item/organ/organ in O)
|
||||
organ.preserved = 1
|
||||
..()
|
||||
|
||||
/obj/structure/closet/crate/freezer/Exited(var/atom/movable/AM)
|
||||
if(istype(AM, /obj/item/organ))
|
||||
var/obj/item/organ/O = AM
|
||||
O.preserved = 0
|
||||
for(var/obj/item/organ/organ in O)
|
||||
organ.preserved = 0
|
||||
..()
|
||||
|
||||
/obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle
|
||||
name = "emergency rations"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
w_class = 5
|
||||
var/state = 0
|
||||
var/base_icon_state = ""
|
||||
var/base_name = "Airlock"
|
||||
var/base_name = "airlock"
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
var/airlock_type = "" //the type path of the airlock once completed
|
||||
var/glass_type = "/glass"
|
||||
@@ -19,91 +19,91 @@
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_com
|
||||
base_icon_state = "com"
|
||||
base_name = "Command Airlock"
|
||||
base_name = "Command airlock"
|
||||
glass_type = "/glass_command"
|
||||
airlock_type = "/command"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_sec
|
||||
base_icon_state = "sec"
|
||||
base_name = "Security Airlock"
|
||||
base_name = "Security airlock"
|
||||
glass_type = "/glass_security"
|
||||
airlock_type = "/security"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_eng
|
||||
base_icon_state = "eng"
|
||||
base_name = "Engineering Airlock"
|
||||
base_name = "Engineering airlock"
|
||||
glass_type = "/glass_engineering"
|
||||
airlock_type = "/engineering"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_eat
|
||||
base_icon_state = "eat"
|
||||
base_name = "Engineering Atmos Airlock"
|
||||
base_name = "Engineering atmos airlock"
|
||||
glass_type = "/glass_engineeringatmos"
|
||||
airlock_type = "/engineering"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_min
|
||||
base_icon_state = "min"
|
||||
base_name = "Mining Airlock"
|
||||
base_name = "Mining airlock"
|
||||
glass_type = "/glass_mining"
|
||||
airlock_type = "/mining"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_atmo
|
||||
base_icon_state = "atmo"
|
||||
base_name = "Atmospherics Airlock"
|
||||
base_name = "Atmospherics airlock"
|
||||
glass_type = "/glass_atmos"
|
||||
airlock_type = "/atmos"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_research
|
||||
base_icon_state = "res"
|
||||
base_name = "Research Airlock"
|
||||
base_name = "Research airlock"
|
||||
glass_type = "/glass_research"
|
||||
airlock_type = "/research"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_science
|
||||
base_icon_state = "sci"
|
||||
base_name = "Science Airlock"
|
||||
base_name = "Science airlock"
|
||||
glass_type = "/glass_science"
|
||||
airlock_type = "/science"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_med
|
||||
base_icon_state = "med"
|
||||
base_name = "Medical Airlock"
|
||||
base_name = "Medical airlock"
|
||||
glass_type = "/glass_medical"
|
||||
airlock_type = "/medical"
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_mai
|
||||
base_icon_state = "mai"
|
||||
base_name = "Maintenance Airlock"
|
||||
base_name = "Maintenance airlock"
|
||||
airlock_type = "/maintenance"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_ext
|
||||
base_icon_state = "ext"
|
||||
base_name = "External Airlock"
|
||||
base_name = "External airlock"
|
||||
airlock_type = "/external"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_fre
|
||||
base_icon_state = "fre"
|
||||
base_name = "Freezer Airlock"
|
||||
base_name = "Freezer airlock"
|
||||
airlock_type = "/freezer"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_hatch
|
||||
base_icon_state = "hatch"
|
||||
base_name = "Airtight Hatch"
|
||||
base_name = "airtight hatch"
|
||||
airlock_type = "/hatch"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_mhatch
|
||||
base_icon_state = "mhatch"
|
||||
base_name = "Maintenance Hatch"
|
||||
base_name = "maintenance hatch"
|
||||
airlock_type = "/maintenance_hatch"
|
||||
glass = -1
|
||||
|
||||
/obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly
|
||||
base_icon_state = "highsec"
|
||||
base_name = "High Security Airlock"
|
||||
base_name = "high security airlock"
|
||||
airlock_type = "/highsecurity"
|
||||
glass = -1
|
||||
|
||||
@@ -221,7 +221,6 @@
|
||||
W.loc = src
|
||||
user << "<span class='notice'>You installed the airlock electronics!</span>"
|
||||
src.state = 2
|
||||
src.name = "Near finished Airlock Assembly"
|
||||
src.electronics = W
|
||||
|
||||
else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
|
||||
@@ -238,7 +237,6 @@
|
||||
if(!src) return
|
||||
user << "<span class='notice'>You removed the airlock electronics!</span>"
|
||||
src.state = 1
|
||||
src.name = "Wired Airlock Assembly"
|
||||
electronics.loc = src.loc
|
||||
electronics = null
|
||||
|
||||
@@ -294,9 +292,9 @@
|
||||
switch (state)
|
||||
if(0)
|
||||
if (anchored)
|
||||
name = "Secured "
|
||||
name = "secured "
|
||||
if(1)
|
||||
name = "Wired "
|
||||
name = "wired "
|
||||
if(2)
|
||||
name = "Near Finished "
|
||||
name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly"
|
||||
name = "near finished "
|
||||
name += "[glass == 1 ? "window " : ""][istext(glass) ? "[glass] airlock" : base_name] assembly ([created_name])"
|
||||
|
||||
@@ -78,6 +78,11 @@
|
||||
icon = 'icons/obj/plants.dmi'
|
||||
icon_state = "plant-26"
|
||||
|
||||
/obj/structure/flora/pottedplant/xmas/New()
|
||||
..()
|
||||
icon_state = "plant-xmas"
|
||||
|
||||
|
||||
//newbushes
|
||||
|
||||
/obj/structure/flora/ausbushes
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
else if(!anchored)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
|
||||
user << "<span class='notice'>Now securing the girder...</span>"
|
||||
if(get_turf(user, 40))
|
||||
if(do_after(user, 40,src))
|
||||
user << "<span class='notice'>You secured the girder!</span>"
|
||||
reset_girder()
|
||||
|
||||
@@ -126,7 +126,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/girder/proc/construct_wall(obj/item/stack/material/S, mob/user)
|
||||
if(S.get_amount() < 2)
|
||||
var/amount_to_use = reinf_material ? 1 : 2
|
||||
if(S.get_amount() < amount_to_use)
|
||||
user << "<span class='notice'>There isn't enough material here to construct a wall.</span>"
|
||||
return 0
|
||||
|
||||
@@ -143,7 +144,6 @@
|
||||
|
||||
user << "<span class='notice'>You begin adding the plating...</span>"
|
||||
|
||||
var/amount_to_use = reinf_material ? 1 : 2
|
||||
if(!do_after(user,40) || !S.use(amount_to_use))
|
||||
return 1 //once we've gotten this far don't call parent attackby()
|
||||
|
||||
|
||||
@@ -328,9 +328,6 @@
|
||||
desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl
|
||||
icon = 'icons/obj/watercloset.dmi'
|
||||
icon_state = "rubberducky"
|
||||
item_state = "rubberducky"
|
||||
|
||||
|
||||
|
||||
/obj/structure/sink
|
||||
name = "sink"
|
||||
@@ -388,7 +385,6 @@
|
||||
for(var/mob/V in viewers(src, null))
|
||||
V.show_message("<span class='notice'>[user] washes their hands using \the [src].</span>")
|
||||
|
||||
|
||||
/obj/structure/sink/attackby(obj/item/O as obj, mob/user as mob)
|
||||
if(busy)
|
||||
user << "<span class='warning'>Someone's already washing here.</span>"
|
||||
@@ -444,7 +440,6 @@
|
||||
"<span class='notice'>[user] washes \a [I] using \the [src].</span>", \
|
||||
"<span class='notice'>You wash \a [I] using \the [src].</span>")
|
||||
|
||||
|
||||
/obj/structure/sink/kitchen
|
||||
name = "kitchen sink"
|
||||
icon_state = "sink_alt"
|
||||
|
||||
@@ -19,12 +19,18 @@ obj/structure/windoor_assembly
|
||||
w_class = 3
|
||||
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
var/created_name = null
|
||||
|
||||
//Vars to help with the icon's name
|
||||
var/facing = "l" //Does the windoor open to the left or right?
|
||||
var/secure = "" //Whether or not this creates a secure windoor
|
||||
var/state = "01" //How far the door assembly has progressed in terms of sprites
|
||||
|
||||
obj/structure/windoor_assembly/secure
|
||||
name = "secure windoor assembly"
|
||||
secure = "secure_"
|
||||
icon_state = "l_secure_windoor_assembly01"
|
||||
|
||||
obj/structure/windoor_assembly/New(Loc, start_dir=NORTH, constructed=0)
|
||||
..()
|
||||
if(constructed)
|
||||
@@ -65,24 +71,31 @@ obj/structure/windoor_assembly/Destroy()
|
||||
|
||||
|
||||
/obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob)
|
||||
//I really should have spread this out across more states but thin little windoors are hard to sprite.
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN)
|
||||
if(!t) return
|
||||
if(!in_range(src, usr) && src.loc != usr) return
|
||||
created_name = t
|
||||
return
|
||||
|
||||
switch(state)
|
||||
if("01")
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (WT.remove_fuel(0,user))
|
||||
user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.")
|
||||
user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly.")
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
|
||||
if(do_after(user, 40))
|
||||
if(!src || !WT.isOn()) return
|
||||
user << "<span class='notice'>You dissasembled the windoor assembly!</span>"
|
||||
new /obj/item/stack/material/glass/reinforced(get_turf(src), 5)
|
||||
user << "<span class='notice'>You disassembled the windoor assembly!</span>"
|
||||
if(secure)
|
||||
PoolOrNew(/obj/item/stack/rods, list(get_turf(src), 4))
|
||||
new /obj/item/stack/material/glass/reinforced(get_turf(src), 2)
|
||||
else
|
||||
new /obj/item/stack/material/glass(get_turf(src), 2)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You need more welding fuel to dissassemble the windoor assembly.</span>"
|
||||
user << "<span class='notice'>You need more welding fuel to disassemble the windoor assembly.</span>"
|
||||
return
|
||||
|
||||
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
|
||||
@@ -95,9 +108,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user << "<span class='notice'>You've secured the windoor assembly!</span>"
|
||||
src.anchored = 1
|
||||
if(src.secure)
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
src.name = "secure anchored windoor assembly"
|
||||
else
|
||||
src.name = "Anchored Windoor Assembly"
|
||||
src.name = "anchored windoor assembly"
|
||||
|
||||
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
|
||||
else if(istype(W, /obj/item/weapon/wrench) && anchored)
|
||||
@@ -109,26 +122,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user << "<span class='notice'>You've unsecured the windoor assembly!</span>"
|
||||
src.anchored = 0
|
||||
if(src.secure)
|
||||
src.name = "Secure Windoor Assembly"
|
||||
src.name = "secure windoor assembly"
|
||||
else
|
||||
src.name = "Windoor Assembly"
|
||||
|
||||
//Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete.
|
||||
else if(istype(W, /obj/item/stack/rods) && !secure)
|
||||
var/obj/item/stack/rods/R = W
|
||||
if(R.get_amount() < 4)
|
||||
user << "<span class='warning'>You need more rods to do this.</span>"
|
||||
return
|
||||
user << "<span class='notice'>You start to reinforce the windoor with rods.</span>"
|
||||
|
||||
if(do_after(user,40) && !secure)
|
||||
if (R.use(4))
|
||||
user << "<span class='notice'>You reinforce the windoor.</span>"
|
||||
src.secure = "secure_"
|
||||
if(src.anchored)
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
else
|
||||
src.name = "Secure Windoor Assembly"
|
||||
src.name = "windoor assembly"
|
||||
|
||||
//Adding cable to the assembly. Step 5 complete.
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && anchored)
|
||||
@@ -140,9 +136,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user << "<span class='notice'>You wire the windoor!</span>"
|
||||
src.state = "02"
|
||||
if(src.secure)
|
||||
src.name = "Secure Wired Windoor Assembly"
|
||||
src.name = "secure wired windoor assembly"
|
||||
else
|
||||
src.name = "Wired Windoor Assembly"
|
||||
src.name = "wired windoor assembly"
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -160,9 +156,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
new/obj/item/stack/cable_coil(get_turf(user), 1)
|
||||
src.state = "01"
|
||||
if(src.secure)
|
||||
src.name = "Secure Anchored Windoor Assembly"
|
||||
src.name = "secure anchored windoor assembly"
|
||||
else
|
||||
src.name = "Anchored Windoor Assembly"
|
||||
src.name = "anchored windoor assembly"
|
||||
|
||||
//Adding airlock electronics for access. Step 6 complete.
|
||||
else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked")
|
||||
@@ -175,7 +171,7 @@ obj/structure/windoor_assembly/Destroy()
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
user << "<span class='notice'>You've installed the airlock electronics!</span>"
|
||||
src.name = "Near finished Windoor Assembly"
|
||||
src.name = "near finished windoor assembly"
|
||||
src.electronics = W
|
||||
else
|
||||
W.loc = src.loc
|
||||
@@ -189,9 +185,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
if(!src || !src.electronics) return
|
||||
user << "<span class='notice'>You've removed the airlock electronics!</span>"
|
||||
if(src.secure)
|
||||
src.name = "Secure Wired Windoor Assembly"
|
||||
src.name = "secure wired windoor assembly"
|
||||
else
|
||||
src.name = "Wired Windoor Assembly"
|
||||
src.name = "wired windoor assembly"
|
||||
var/obj/item/weapon/airlock_electronics/ae = electronics
|
||||
electronics = null
|
||||
ae.loc = src.loc
|
||||
@@ -222,6 +218,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
windoor.base_state = "rightsecure"
|
||||
windoor.set_dir(src.dir)
|
||||
windoor.density = 0
|
||||
windoor.name = created_name
|
||||
spawn(0)
|
||||
windoor.close()
|
||||
|
||||
if(src.electronics.one_access)
|
||||
windoor.req_access = null
|
||||
@@ -240,6 +239,9 @@ obj/structure/windoor_assembly/Destroy()
|
||||
windoor.base_state = "right"
|
||||
windoor.set_dir(src.dir)
|
||||
windoor.density = 0
|
||||
windoor.name = created_name
|
||||
spawn(0)
|
||||
windoor.close()
|
||||
|
||||
if(src.electronics.one_access)
|
||||
windoor.req_access = null
|
||||
@@ -257,8 +259,11 @@ obj/structure/windoor_assembly/Destroy()
|
||||
..()
|
||||
|
||||
//Update to reflect changes(if applicable)
|
||||
update_icon()
|
||||
update_state()
|
||||
|
||||
/obj/structure/windoor_assembly/proc/update_state()
|
||||
update_icon()
|
||||
name += " ([created_name])"
|
||||
|
||||
//Rotates the windoor assembly clockwise
|
||||
/obj/structure/windoor_assembly/verb/revrotate()
|
||||
|
||||
@@ -161,6 +161,7 @@
|
||||
if(reinf) tforce *= 0.25
|
||||
if(health - tforce <= 7 && !reinf)
|
||||
anchored = 0
|
||||
update_verbs()
|
||||
update_nearby_icons()
|
||||
step(src, get_dir(AM, src))
|
||||
take_damage(tforce)
|
||||
|
||||
@@ -6,4 +6,10 @@
|
||||
/obj/item/weapon/Bump(mob/M as mob)
|
||||
spawn(0)
|
||||
..()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
|
||||
)
|
||||
Reference in New Issue
Block a user