mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-27 14:08:44 +01:00
Merge branch 'master' into cleanupTwo
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
return
|
||||
|
||||
/obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
|
||||
if(W.attack_verb.len)
|
||||
visible_message("<span class='warning'>\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
else
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/burn_point = null
|
||||
var/burning = null
|
||||
var/hitsound = null
|
||||
var/storage_cost = null
|
||||
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
|
||||
var/no_attack_log = 0 //If it's an item we don't want to log attack_logs with, set this to 1
|
||||
pass_flags = PASSTABLE
|
||||
@@ -358,7 +359,7 @@ var/list/global/slot_flags_enumeration = list(
|
||||
var/allow = 0
|
||||
if(H.back && istype(H.back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = H.back
|
||||
if(B.contents.len < B.storage_slots && w_class <= B.max_w_class)
|
||||
if(B.can_be_inserted(src,1))
|
||||
allow = 1
|
||||
if(!allow)
|
||||
return 0
|
||||
|
||||
@@ -462,7 +462,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
data["convo_job"] = sanitize(c["job"])
|
||||
break
|
||||
if(mode==41)
|
||||
data_core.get_manifest_json()
|
||||
data_core.get_manifest_list()
|
||||
|
||||
|
||||
if(mode==3)
|
||||
@@ -531,7 +531,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
data["feed"] = feed
|
||||
|
||||
data["manifest"] = list("__json_cache" = ManifestJSON)
|
||||
data["manifest"] = PDA_Manifest
|
||||
|
||||
nanoUI = data
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
@@ -990,7 +990,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
tnote.Add(list(list("sent" = 1, "owner" = "[P.owner]", "job" = "[P.ownjob]", "message" = "[t]", "target" = "\ref[P]")))
|
||||
P.tnote.Add(list(list("sent" = 0, "owner" = "[owner]", "job" = "[ownjob]", "message" = "[t]", "target" = "\ref[src]")))
|
||||
for(var/mob/M in player_list)
|
||||
if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) // src.client is so that ghosts don't have to listen to mice
|
||||
if(M.stat == DEAD && M.client && (M.is_preference_enabled(/datum/client_preference/ghost_ears))) // src.client is so that ghosts don't have to listen to mice
|
||||
if(istype(M, /mob/new_player))
|
||||
continue
|
||||
M.show_message("<span class='game say'>PDA Message - <span class='name'>[owner]</span> -> <span class='name'>[P.owner]</span>: <span class='message'>[t]</span></span>")
|
||||
|
||||
@@ -354,12 +354,12 @@
|
||||
var/muleData[0]
|
||||
muleData["name"] = M.suffix
|
||||
muleData["location"] = get_area(M)
|
||||
muleData["mode"] = M.mode
|
||||
muleData["paused"] = M.paused
|
||||
muleData["home"] = M.homeName
|
||||
muleData["target"] = M.targetName
|
||||
muleData["ref"] = "\ref[M]"
|
||||
muleData["load"] = M.load ? M.load.name : "Nothing"
|
||||
|
||||
|
||||
mulebotsData[++mulebotsData.len] = muleData.Copy()
|
||||
|
||||
values["mulebotcount"] = count
|
||||
|
||||
@@ -43,13 +43,30 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
node = get_exonet_node()
|
||||
processing_objects |= src
|
||||
//This is a pretty terrible way of doing this.
|
||||
spawn(50) //Wait for our mob to finish spawning.
|
||||
spawn(5 SECONDS) //Wait for our mob to finish spawning.
|
||||
if(ismob(loc))
|
||||
register_device(loc)
|
||||
initialize_exonet(loc)
|
||||
else if(istype(loc, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = loc
|
||||
if(ismob(S.loc))
|
||||
register_device(S.loc)
|
||||
initialize_exonet(S.loc)
|
||||
|
||||
// Proc: initialize_exonet()
|
||||
// Parameters: 1 (user - the person the communicator belongs to)
|
||||
// Description: Sets up the exonet datum, gives the device an address, and then gets a node reference. Afterwards, populates the device
|
||||
// list.
|
||||
/obj/item/device/communicator/proc/initialize_exonet(mob/user)
|
||||
if(!user || !istype(user, /mob/living))
|
||||
return
|
||||
if(!exonet)
|
||||
exonet = new(src)
|
||||
if(!exonet.address)
|
||||
exonet.make_address("communicator-[user.client]-[user.name]")
|
||||
if(!node)
|
||||
node = get_exonet_node()
|
||||
populate_known_devices()
|
||||
|
||||
// Proc: examine()
|
||||
// Parameters: 1 (user - the person examining the device)
|
||||
@@ -139,13 +156,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Description: Makes an exonet datum if one does not exist, allocates an address for it, maintains the lists of all devies, clears the alert icon, and
|
||||
// finally makes NanoUI appear.
|
||||
/obj/item/device/communicator/attack_self(mob/user)
|
||||
if(!exonet)
|
||||
exonet = new(src)
|
||||
if(!exonet.address)
|
||||
exonet.make_address("communicator-[user.client]-[user.name]")
|
||||
if(!node)
|
||||
node = get_exonet_node()
|
||||
populate_known_devices()
|
||||
initialize_exonet(user)
|
||||
alert_called = 0
|
||||
update_icon()
|
||||
ui_interact(user)
|
||||
@@ -292,7 +303,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
return
|
||||
var/their_address = href_list["dial"]
|
||||
exonet.send_message(their_address, "voice")
|
||||
|
||||
|
||||
if(href_list["disconnect"])
|
||||
var/name_to_disconnect = href_list["disconnect"]
|
||||
for(var/mob/living/voice/V in contents)
|
||||
@@ -304,13 +315,13 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
|
||||
if(href_list["copy"])
|
||||
target_address = href_list["copy"]
|
||||
|
||||
|
||||
if(href_list["hang_up"])
|
||||
for(var/mob/living/voice/V in contents)
|
||||
close_connection(usr, V, "[usr] hung up.")
|
||||
for(var/obj/item/device/communicator/comm in communicating)
|
||||
close_connection(usr, comm, "[usr] hung up.")
|
||||
|
||||
|
||||
if(href_list["switch_tab"])
|
||||
selected_tab = href_list["switch_tab"]
|
||||
|
||||
|
||||
@@ -6,8 +6,10 @@
|
||||
w_class = 4.0
|
||||
canhear_range = 2
|
||||
flags = CONDUCT | NOBLOODY
|
||||
var/circuit = /obj/item/weapon/circuitboard/intercom
|
||||
var/number = 0
|
||||
var/last_tick //used to delay the powercheck
|
||||
var/wiresexposed = 0
|
||||
|
||||
/obj/item/device/radio/intercom/custom
|
||||
name = "station intercom (Custom)"
|
||||
@@ -81,6 +83,41 @@
|
||||
spawn (0)
|
||||
attack_self(user)
|
||||
|
||||
/obj/item/device/radio/intercom/attackby(obj/item/W as obj, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(istype(W, /obj/item/weapon/screwdriver)) // Opening the intercom up.
|
||||
wiresexposed = !wiresexposed
|
||||
user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
|
||||
if(wiresexposed)
|
||||
if(!on)
|
||||
icon_state = "intercom-p_open"
|
||||
else
|
||||
icon_state = "intercom_open"
|
||||
else
|
||||
icon_state = "intercom"
|
||||
return
|
||||
if (wiresexposed && istype(W, /obj/item/weapon/wirecutters))
|
||||
user.visible_message("<span class='warning'>[user] has cut the wires inside \the [src]!</span>", "You have cut the wires inside \the [src].")
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
new/obj/item/stack/cable_coil(get_turf(src), 5)
|
||||
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
|
||||
var/obj/item/weapon/circuitboard/M = new circuit( A )
|
||||
A.frame_type = "intercom"
|
||||
A.pixel_x = pixel_x
|
||||
A.pixel_y = pixel_y
|
||||
A.circuit = M
|
||||
A.set_dir(dir)
|
||||
A.anchored = 1
|
||||
for (var/obj/C in src)
|
||||
C.forceMove(loc)
|
||||
A.state = 2
|
||||
A.icon_state = "intercom_2"
|
||||
M.deconstruct(src)
|
||||
qdel(src)
|
||||
else
|
||||
src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/item/device/radio/intercom/receive_range(freq, level)
|
||||
if (!on)
|
||||
return -1
|
||||
@@ -110,9 +147,15 @@
|
||||
on = A.powered(EQUIP) // set "on" to the power status
|
||||
|
||||
if(!on)
|
||||
icon_state = "intercom-p"
|
||||
if(wiresexposed)
|
||||
icon_state = "intercom-p_open"
|
||||
else
|
||||
icon_state = "intercom-p"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
if(wiresexposed)
|
||||
icon_state = "intercom_open"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/item/device/radio/intercom/locked
|
||||
var/locked_frequency
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
throwforce = 15.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1875)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2)
|
||||
max_amount = 60
|
||||
attack_verb = list("hit", "bludgeoned", "whacked")
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
desc = "Those could work as a pretty decent throwing weapon" //why?
|
||||
icon_state = "tile"
|
||||
force = 6.0
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 4)
|
||||
throwforce = 15.0
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
@@ -92,13 +92,13 @@
|
||||
name = "steel floor tile"
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = 937.5)
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_white
|
||||
name = "white floor tile"
|
||||
singular_name = "white floor tile"
|
||||
icon_state = "tile_white"
|
||||
matter = list("plastic" = 937.5)
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_yellow
|
||||
name = "yellow floor tile"
|
||||
@@ -110,13 +110,13 @@
|
||||
name = "dark floor tile"
|
||||
singular_name = "dark floor tile"
|
||||
icon_state = "fr_tile"
|
||||
matter = list("plasteel" = 937.5)
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor_freezer
|
||||
name = "freezer floor tile"
|
||||
singular_name = "freezer floor tile"
|
||||
icon_state = "tile_freezer"
|
||||
matter = list("plastic" = 937.5)
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
|
||||
/obj/item/stack/tile/floor/cyborg
|
||||
name = "floor tile synthesizer"
|
||||
|
||||
@@ -407,12 +407,12 @@
|
||||
* Bosun's whistle
|
||||
*/
|
||||
|
||||
/obj/item/toy/bosunwhistle
|
||||
name = "bosun's whistle"
|
||||
desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "bosunwhistle"
|
||||
var/cooldown = 0
|
||||
/obj/item/toy/bosunwhistle
|
||||
name = "bosun's whistle"
|
||||
desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "bosunwhistle"
|
||||
var/cooldown = 0
|
||||
w_class = 1
|
||||
slot_flags = SLOT_EARS
|
||||
|
||||
|
||||
@@ -29,6 +29,16 @@
|
||||
network = list("MINE")
|
||||
req_access = list()
|
||||
|
||||
/obj/item/weapon/circuitboard/security/telescreen/entertainment
|
||||
name = T_BOARD("entertainment camera monitor")
|
||||
build_path = /obj/machinery/computer/security/telescreen/entertainment
|
||||
board_type = "display"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/security/telescreen/entertainment/New()
|
||||
..()
|
||||
network = NETWORK_THUNDER
|
||||
|
||||
/obj/item/weapon/circuitboard/security/construct(var/obj/machinery/computer/security/C)
|
||||
if (..(C))
|
||||
C.network = network.Copy()
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
#ifndef T_BOARD
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#endif
|
||||
|
||||
//Circuitboards for frames (mostly wall based frames). Most of these don't fit into other categories.
|
||||
|
||||
//Display
|
||||
|
||||
/obj/item/weapon/circuitboard/guestpass
|
||||
name = T_BOARD("guestpass console")
|
||||
build_path = /obj/machinery/computer/guestpass
|
||||
board_type = "guestpass"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/status_display
|
||||
name = T_BOARD("status display")
|
||||
build_path = /obj/machinery/status_display
|
||||
board_type = "display"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/ai_status_display
|
||||
name = T_BOARD("ai status display")
|
||||
build_path = /obj/machinery/ai_status_display
|
||||
board_type = "display"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/newscaster
|
||||
name = T_BOARD("newscaster")
|
||||
build_path = /obj/machinery/newscaster
|
||||
board_type = "newscaster"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/atm
|
||||
name = T_BOARD("atm")
|
||||
build_path = /obj/machinery/atm
|
||||
board_type = "atm"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
//Alarm
|
||||
|
||||
/obj/item/weapon/circuitboard/firealarm
|
||||
name = T_BOARD("fire alarm")
|
||||
build_path = /obj/machinery/firealarm
|
||||
board_type = "firealarm"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/airalarm
|
||||
name = T_BOARD("air alarm")
|
||||
build_path = /obj/machinery/alarm
|
||||
board_type = "airalarm"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/intercom
|
||||
name = T_BOARD("intercom")
|
||||
build_path = /obj/item/device/radio/intercom
|
||||
board_type = "intercom"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
/obj/item/weapon/circuitboard/keycard_auth
|
||||
name = T_BOARD("keycard authenticator")
|
||||
build_path = /obj/machinery/keycard_auth
|
||||
board_type = "keycard"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
//Computer
|
||||
|
||||
/obj/item/weapon/circuitboard/holopad
|
||||
name = T_BOARD("holopad")
|
||||
build_path = /obj/machinery/hologram/holopad
|
||||
board_type = "holopad"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
|
||||
//Machine
|
||||
|
||||
/obj/item/weapon/circuitboard/photocopier
|
||||
name = T_BOARD("photocopier")
|
||||
build_path = /obj/machinery/photocopier
|
||||
board_type = "photocopier"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
||||
"/obj/item/weapon/stock_parts/motor" = 1,
|
||||
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
||||
"/obj/item/weapon/stock_parts/matter_bin" = 1)
|
||||
|
||||
/obj/item/weapon/circuitboard/fax
|
||||
name = T_BOARD("fax")
|
||||
build_path = /obj/machinery/photocopier/faxmachine
|
||||
board_type = "fax"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
||||
"/obj/item/weapon/stock_parts/motor" = 1,
|
||||
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
||||
"/obj/item/weapon/stock_parts/matter_bin" = 1)
|
||||
|
||||
/obj/item/weapon/circuitboard/conveyor
|
||||
name = T_BOARD("conveyor")
|
||||
build_path = /obj/machinery/conveyor
|
||||
board_type = "conveyor"
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/gear" = 2,
|
||||
"/obj/item/weapon/stock_parts/motor" = 2,
|
||||
"/obj/item/stack/cable_coil" = 5)
|
||||
|
||||
/obj/item/weapon/circuitboard/microwave
|
||||
name = T_BOARD("microwave")
|
||||
build_path = /obj/machinery/microwave
|
||||
board_type = "microwave"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/console_screen" = 1,
|
||||
"/obj/item/weapon/stock_parts/motor" = 1,
|
||||
"/obj/item/weapon/stock_parts/capacitor" = 1)
|
||||
|
||||
/obj/item/weapon/circuitboard/vending
|
||||
name = T_BOARD("vending")
|
||||
build_path = /obj/machinery/vending
|
||||
board_type = "vending"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/console_screen" = 1,
|
||||
"/obj/item/weapon/stock_parts/motor" = 2,
|
||||
"/obj/item/weapon/stock_parts/spring" = 2,
|
||||
"/obj/item/stack/material/glass/reinforced" = 2)
|
||||
|
||||
/obj/item/weapon/circuitboard/recharger
|
||||
name = T_BOARD("recharger")
|
||||
build_path = /obj/machinery/recharger
|
||||
board_type = "recharger"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/capacitor" = 1,
|
||||
"/obj/item/stack/cable_coil" = 5)
|
||||
|
||||
/obj/item/weapon/circuitboard/recharger/wrecharger
|
||||
name = T_BOARD("wall recharger")
|
||||
build_path = /obj/machinery/recharger/wallcharger
|
||||
board_type = "wrecharger"
|
||||
|
||||
/obj/item/weapon/circuitboard/washing
|
||||
name = T_BOARD("washing machine")
|
||||
build_path = /obj/machinery/washing_machine
|
||||
board_type = "washing"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/motor" = 1,
|
||||
"/obj/item/weapon/stock_parts/gear" = 2)
|
||||
|
||||
/obj/item/weapon/circuitboard/grinder
|
||||
name = T_BOARD("reagent grinder")
|
||||
build_path = /obj/machinery/reagentgrinder
|
||||
board_type = "grinder"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/motor" = 1,
|
||||
"/obj/item/weapon/stock_parts/gear" = 1,
|
||||
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1)
|
||||
|
||||
//for testing - If this is still in when I commit, someone shoot me. --leaving in for now, shouldn't be able to get these on station anyways.
|
||||
/obj/item/weapon/storage/box/frame_parts
|
||||
display_contents_with_number = 1
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/circuitboard/guestpass( src )
|
||||
new /obj/item/weapon/circuitboard/status_display( src )
|
||||
new /obj/item/weapon/circuitboard/ai_status_display( src )
|
||||
new /obj/item/weapon/circuitboard/newscaster( src )
|
||||
new /obj/item/weapon/circuitboard/atm( src )
|
||||
new /obj/item/weapon/circuitboard/firealarm( src )
|
||||
new /obj/item/weapon/circuitboard/airalarm( src )
|
||||
new /obj/item/weapon/circuitboard/intercom( src )
|
||||
new /obj/item/weapon/circuitboard/keycard_auth( src )
|
||||
new /obj/item/weapon/circuitboard/holopad( src )
|
||||
new /obj/item/weapon/circuitboard/photocopier( src )
|
||||
new /obj/item/weapon/circuitboard/fax( src )
|
||||
new /obj/item/weapon/circuitboard/microwave( src )
|
||||
new /obj/item/weapon/circuitboard/vending( src )
|
||||
new /obj/item/weapon/circuitboard/washing( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/weapon/stock_parts/scanning_module( src )
|
||||
new /obj/item/weapon/stock_parts/motor( src )
|
||||
new /obj/item/weapon/stock_parts/micro_laser( src )
|
||||
new /obj/item/weapon/stock_parts/matter_bin( src )
|
||||
new /obj/item/weapon/stock_parts/gear( src )
|
||||
new /obj/item/weapon/stock_parts/console_screen( src )
|
||||
new /obj/item/weapon/stock_parts/capacitor( src )
|
||||
new /obj/item/weapon/stock_parts/spring( src )
|
||||
new /obj/item/stack/cable_coil( src , 5 )
|
||||
new /obj/item/stack/material/glass/reinforced( src , 2 )
|
||||
@@ -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
|
||||
|
||||
//Stuff that doesn't fit into any category goes here
|
||||
@@ -7,4 +7,4 @@
|
||||
/obj/item/weapon/circuitboard/aicore
|
||||
name = T_BOARD("AI core")
|
||||
origin_tech = list(TECH_DATA = 4, TECH_BIO = 2)
|
||||
board_type = "other"
|
||||
board_type = "other"
|
||||
@@ -68,6 +68,12 @@
|
||||
/obj/item/weapon/material/twohanded/update_icon()
|
||||
icon_state = "[base_icon][wielded]"
|
||||
item_state = icon_state
|
||||
|
||||
/obj/item/weapon/material/twohanded/dropped()
|
||||
..()
|
||||
if(wielded)
|
||||
spawn(0)
|
||||
update_held_icon()
|
||||
|
||||
/*
|
||||
* Fireaxe
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
)
|
||||
w_class = 4
|
||||
slot_flags = SLOT_BACK
|
||||
max_w_class = 3
|
||||
max_w_class = 4
|
||||
max_storage_space = 28
|
||||
|
||||
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -53,6 +53,7 @@
|
||||
icon_state = "holdingpack"
|
||||
max_w_class = 4
|
||||
max_storage_space = 56
|
||||
storage_cost = 29
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -77,7 +78,6 @@
|
||||
icon_state = "giftbag0"
|
||||
item_state = "giftbag"
|
||||
w_class = 4.0
|
||||
storage_slots = 20
|
||||
max_w_class = 3
|
||||
max_storage_space = 400 // can store a ton of shit!
|
||||
item_state_slots = null
|
||||
@@ -142,57 +142,84 @@
|
||||
desc = "It's an orange backpack which was designed to hold beakers, pill bottles and bottles."
|
||||
icon_state = "chempack"
|
||||
|
||||
/*
|
||||
* Duffle Types
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag
|
||||
name = "dufflebag"
|
||||
desc = "A large dufflebag for holding extra things."
|
||||
icon_state = "duffle"
|
||||
item_state = "duffle"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle",
|
||||
slot_r_hand_str = "duffle",
|
||||
)
|
||||
slowdown = 1
|
||||
max_storage_space = 38
|
||||
storage_slots = 12
|
||||
max_storage_space = 36
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie
|
||||
name = "suspicious looking dufflebag"
|
||||
name = "black dufflebag"
|
||||
desc = "A large dufflebag for holding extra tactical supplies."
|
||||
icon_state = "duffle_syndie"
|
||||
item_state = "duffle_syndiemed"
|
||||
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 = "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 = "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 = "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 = "duffle_med"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_med",
|
||||
slot_r_hand_str = "duffle_med",
|
||||
)
|
||||
|
||||
/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 = "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 = "duffle_eng"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "duffle_eng",
|
||||
slot_r_hand_str = "duffle_eng",
|
||||
)
|
||||
|
||||
/*
|
||||
* Satchel Types
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
|
||||
w_class = 4
|
||||
max_w_class = 2
|
||||
storage_slots = 21
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/weapon/disk/nuclear)
|
||||
|
||||
@@ -61,7 +60,6 @@
|
||||
|
||||
w_class = 4
|
||||
max_w_class = 2
|
||||
storage_slots = 21
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/weapon/disk/nuclear)
|
||||
|
||||
@@ -76,8 +74,7 @@
|
||||
icon_state = "satchel"
|
||||
slot_flags = SLOT_BELT | SLOT_POCKET
|
||||
w_class = 3
|
||||
storage_slots = 50
|
||||
max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
|
||||
max_storage_space = 100
|
||||
max_w_class = 3
|
||||
can_hold = list(/obj/item/weapon/ore)
|
||||
|
||||
@@ -90,8 +87,7 @@
|
||||
name = "plant bag"
|
||||
icon = 'icons/obj/hydroponics_machines.dmi'
|
||||
icon_state = "plantbag"
|
||||
storage_slots = 50; //the number of plant pieces it can carry.
|
||||
max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
|
||||
max_storage_space = 100
|
||||
max_w_class = 3
|
||||
w_class = 2
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown)
|
||||
@@ -111,6 +107,7 @@
|
||||
|
||||
var/capacity = 300; //the number of sheets it can carry.
|
||||
w_class = 3
|
||||
storage_slots = 7
|
||||
|
||||
allow_quick_empty = 1 // this function is superceded
|
||||
New()
|
||||
@@ -193,7 +190,7 @@
|
||||
var/col_count = min(7,storage_slots) -1
|
||||
if (adjusted_contents > 7)
|
||||
row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width.
|
||||
src.standard_orient_objs(row_num, col_count, numbered_contents)
|
||||
src.slot_orient_objs(row_num, col_count, numbered_contents)
|
||||
return
|
||||
|
||||
|
||||
@@ -248,8 +245,7 @@
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "cashbag"
|
||||
desc = "A bag for carrying lots of cash. It's got a big dollar sign printed on the front."
|
||||
storage_slots = 50; //the number of cash pieces it can carry.
|
||||
max_storage_space = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * cash.w_class
|
||||
max_storage_space = 100
|
||||
max_w_class = 3
|
||||
w_class = 2
|
||||
can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash)
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
icon = 'icons/obj/clothing/belts.dmi'
|
||||
icon_state = "utilitybelt"
|
||||
item_state = "utility"
|
||||
storage_slots = 7
|
||||
max_storage_space = 28 //This should ensure belts always have enough room to store whatever.
|
||||
max_w_class = 3
|
||||
slot_flags = SLOT_BELT
|
||||
attack_verb = list("whipped", "lashed", "disciplined")
|
||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/belt.dmi')
|
||||
@@ -121,9 +124,7 @@
|
||||
desc = "Can hold security gear like handcuffs and flashes."
|
||||
icon_state = "securitybelt"
|
||||
item_state = "security"
|
||||
storage_slots = 7
|
||||
max_w_class = 3
|
||||
max_storage_space = 28
|
||||
can_hold = list(
|
||||
/obj/item/weapon/grenade,
|
||||
/obj/item/weapon/reagent_containers/spray/pepper,
|
||||
@@ -180,7 +181,13 @@
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/taperoll/police
|
||||
/obj/item/taperoll/police,
|
||||
/obj/item/weapon/reagent_containers/spray/pepper,
|
||||
/obj/item/weapon/handcuffs,
|
||||
/obj/item/device/flash,
|
||||
/obj/item/weapon/flame/lighter,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/,
|
||||
/obj/item/ammo_magazine
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/soulstone
|
||||
@@ -227,3 +234,27 @@
|
||||
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"
|
||||
storage_slots = 7
|
||||
max_w_class = 3
|
||||
can_hold = list(
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/grenade,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/clothing/mask/surgical, //sterile mask,
|
||||
/obj/item/device/assembly/mousetrap,
|
||||
/obj/item/weapon/light/bulb,
|
||||
/obj/item/weapon/light/tube,
|
||||
/obj/item/weapon/flame/lighter,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/weapon/reagent_containers/spray,
|
||||
/obj/item/weapon/soap
|
||||
)
|
||||
@@ -25,6 +25,7 @@
|
||||
icon_state = "box"
|
||||
item_state = "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
|
||||
|
||||
// BubbleWrap - A box can be folded up to make card
|
||||
/obj/item/weapon/storage/box/attack_self(mob/user as mob)
|
||||
@@ -498,12 +499,11 @@
|
||||
desc = "Drymate brand monkey cubes. Just add water!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube)
|
||||
New()
|
||||
..()
|
||||
if(src.type == /obj/item/weapon/storage/box/monkeycubes)
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
for(var/i = 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/farwacubes
|
||||
@@ -511,7 +511,7 @@
|
||||
desc = "Drymate brand farwa cubes, shipped from Ahdomai. Just add water!"
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
for(var/i = 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/stokcubes
|
||||
@@ -519,7 +519,7 @@
|
||||
desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!"
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
for(var/i = 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/neaeracubes
|
||||
@@ -527,7 +527,7 @@
|
||||
desc = "Drymate brand neaera cubes, shipped from Jargon 4. Just add water!"
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
for(var/i = 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/ids
|
||||
@@ -612,11 +612,10 @@
|
||||
desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "spbox"
|
||||
storage_slots = 8
|
||||
can_hold = list(/obj/item/toy/snappop)
|
||||
New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
for(var/i = 1 to 8)
|
||||
new /obj/item/toy/snappop(src)
|
||||
|
||||
/obj/item/weapon/storage/box/matches
|
||||
@@ -625,14 +624,13 @@
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "matchbox"
|
||||
item_state = "zippo"
|
||||
storage_slots = 10
|
||||
w_class = 1
|
||||
slot_flags = SLOT_BELT
|
||||
can_hold = list(/obj/item/weapon/flame/match)
|
||||
|
||||
New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
for(var/i=1 to 10)
|
||||
new /obj/item/weapon/flame/match(src)
|
||||
|
||||
attackby(obj/item/weapon/flame/match/W as obj, mob/user as mob)
|
||||
@@ -650,7 +648,7 @@
|
||||
icon_state = "syringe"
|
||||
New()
|
||||
..()
|
||||
for (var/i; i < storage_slots; i++)
|
||||
for (var/i = 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector(src)
|
||||
|
||||
/obj/item/weapon/storage/box/lights
|
||||
@@ -696,7 +694,6 @@
|
||||
icon_state = "portafreezer"
|
||||
item_state = "medicalpack"
|
||||
foldable = null
|
||||
storage_slots=7
|
||||
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
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/weapon/storage/fancy/egg_box/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
for(var/i=1 to storage_slots)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/egg(src)
|
||||
return
|
||||
|
||||
@@ -68,14 +68,13 @@
|
||||
icon_state = "candlebox5"
|
||||
icon_type = "candle"
|
||||
item_state = "candlebox5"
|
||||
storage_slots = 5
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/candle_box/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
for(var/i=1 to 5)
|
||||
new /obj/item/weapon/flame/candle(src)
|
||||
return
|
||||
|
||||
@@ -89,7 +88,6 @@
|
||||
icon = 'icons/obj/crayons.dmi'
|
||||
icon_state = "crayonbox"
|
||||
w_class = 2.0
|
||||
storage_slots = 6
|
||||
icon_type = "crayon"
|
||||
can_hold = list(
|
||||
/obj/item/weapon/pen/crayon
|
||||
@@ -144,27 +142,42 @@
|
||||
for(var/i = 1 to storage_slots)
|
||||
new /obj/item/clothing/mask/smokable/cigarette(src)
|
||||
create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
||||
flags |= OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/update_icon()
|
||||
icon_state = "[initial(icon_state)][contents.len]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
// Don't try to transfer reagents to lighters
|
||||
if(istype(W, /obj/item/clothing/mask/smokable/cigarette))
|
||||
var/obj/item/clothing/mask/smokable/cigarette/C = W
|
||||
if(!istype(C)) return // what
|
||||
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
|
||||
if(M == user && user.zone_sel.selecting == O_MOUTH && contents.len > 0 && !user.wear_mask)
|
||||
var/obj/item/clothing/mask/smokable/cigarette/W = new /obj/item/clothing/mask/smokable/cigarette(user)
|
||||
reagents.trans_to_obj(W, (reagents.total_volume/contents.len))
|
||||
user.equip_to_slot_if_possible(W, slot_wear_mask)
|
||||
if(M == user && user.zone_sel.selecting == O_MOUTH)
|
||||
// Find ourselves a cig. Note that we could be full of lighters.
|
||||
var/obj/item/clothing/mask/smokable/cigarette/cig = locate() in src
|
||||
|
||||
if(cig == null)
|
||||
user << "<span class='notice'>Looks like the packet is out of cigarettes.</span>"
|
||||
return
|
||||
|
||||
// Instead of running equip_to_slot_if_possible() we check here first,
|
||||
// to avoid dousing cig with reagents if we're not going to equip it
|
||||
if(!cig.mob_can_equip(user, slot_wear_mask))
|
||||
return
|
||||
|
||||
// We call remove_from_storage first to manage the reagent transfer and
|
||||
// UI updates.
|
||||
remove_from_storage(cig, null)
|
||||
user.equip_to_slot(cig, slot_wear_mask)
|
||||
|
||||
reagents.maximum_volume = 15 * contents.len
|
||||
contents.len--
|
||||
user << "<span class='notice'>You take a cigarette out of the pack.</span>"
|
||||
update_icon()
|
||||
else
|
||||
@@ -248,21 +261,6 @@
|
||||
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigar/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
|
||||
if(M == user && user.zone_sel.selecting == O_MOUTH && contents.len > 0 && !user.wear_mask)
|
||||
var/obj/item/clothing/mask/smokable/cigarette/cigar/W = new /obj/item/clothing/mask/smokable/cigarette/cigar(user)
|
||||
reagents.trans_to_obj(W, (reagents.total_volume/contents.len))
|
||||
user.equip_to_slot_if_possible(W, slot_wear_mask)
|
||||
reagents.maximum_volume = 15 * contents.len
|
||||
contents.len--
|
||||
user << "<span class='notice'>You take a cigar out of the case.</span>"
|
||||
update_icon()
|
||||
else
|
||||
..()
|
||||
|
||||
/*
|
||||
* Vial Box
|
||||
*/
|
||||
@@ -278,7 +276,7 @@
|
||||
|
||||
/obj/item/weapon/storage/fancy/vials/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
for(var/i=1 to 6)
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker/vial(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -162,7 +162,6 @@
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice,/obj/item/weapon/paper)
|
||||
allow_quick_gather = 1
|
||||
use_to_pickup = 1
|
||||
storage_slots = 14
|
||||
use_sound = null
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/antitox
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
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.
|
||||
storage_slots = 4
|
||||
req_access = list(access_armory)
|
||||
var/locked = 1
|
||||
var/broken = 0
|
||||
|
||||
@@ -15,14 +15,13 @@
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "donutbox"
|
||||
name = "donut box"
|
||||
storage_slots = 6
|
||||
var/startswith = 6
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut)
|
||||
foldable = /obj/item/stack/material/cardboard
|
||||
|
||||
/obj/item/weapon/storage/box/donut/New()
|
||||
..()
|
||||
for(var/i=1; i <= startswith; i++)
|
||||
for(var/i=1 to startswith)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donut/normal(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -15,9 +15,15 @@
|
||||
var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
|
||||
var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage
|
||||
var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set)
|
||||
var/max_storage_space = 14 //The sum of the storage costs of all the items in this storage item.
|
||||
var/storage_slots = 7 //The number of storage slots in this container.
|
||||
var/max_storage_space = 8 //The sum of the storage costs of all the items in this storage item.
|
||||
var/storage_slots = null //The number of storage slots in this container. If null, it uses the volume-based storage instead.
|
||||
var/obj/screen/storage/boxes = null
|
||||
var/obj/screen/storage/storage_start = null //storage UI
|
||||
var/obj/screen/storage/storage_continue = null
|
||||
var/obj/screen/storage/storage_end = null
|
||||
var/obj/screen/storage/stored_start = null
|
||||
var/obj/screen/storage/stored_continue = null
|
||||
var/obj/screen/storage/stored_end = null
|
||||
var/obj/screen/close/closer = null
|
||||
var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up.
|
||||
var/display_contents_with_number //Set this to make the storage item group contents of the same type and display them as a number.
|
||||
@@ -29,6 +35,12 @@
|
||||
/obj/item/weapon/storage/Destroy()
|
||||
close_all()
|
||||
qdel(boxes)
|
||||
qdel(src.storage_start)
|
||||
qdel(src.storage_continue)
|
||||
qdel(src.storage_end)
|
||||
qdel(src.stored_start)
|
||||
qdel(src.stored_continue)
|
||||
qdel(src.stored_end)
|
||||
qdel(closer)
|
||||
..()
|
||||
|
||||
@@ -92,11 +104,19 @@
|
||||
if(user.s_active)
|
||||
user.s_active.hide_from(user)
|
||||
user.client.screen -= src.boxes
|
||||
user.client.screen -= src.storage_start
|
||||
user.client.screen -= src.storage_continue
|
||||
user.client.screen -= src.storage_end
|
||||
user.client.screen -= src.closer
|
||||
user.client.screen -= src.contents
|
||||
user.client.screen += src.boxes
|
||||
user.client.screen += src.closer
|
||||
user.client.screen += src.contents
|
||||
if(storage_slots)
|
||||
user.client.screen += src.boxes
|
||||
else
|
||||
user.client.screen += src.storage_start
|
||||
user.client.screen += src.storage_continue
|
||||
user.client.screen += src.storage_end
|
||||
user.s_active = src
|
||||
is_seeing |= user
|
||||
return
|
||||
@@ -106,6 +126,9 @@
|
||||
if(!user.client)
|
||||
return
|
||||
user.client.screen -= src.boxes
|
||||
user.client.screen -= src.storage_start
|
||||
user.client.screen -= src.storage_continue
|
||||
user.client.screen -= src.storage_end
|
||||
user.client.screen -= src.closer
|
||||
user.client.screen -= src.contents
|
||||
if(user.s_active == src)
|
||||
@@ -157,7 +180,7 @@
|
||||
return
|
||||
|
||||
//This proc draws out the inventory and places the items on it. It uses the standard position.
|
||||
/obj/item/weapon/storage/proc/standard_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents)
|
||||
/obj/item/weapon/storage/proc/slot_orient_objs(var/rows, var/cols, var/list/obj/item/display_contents)
|
||||
var/cx = 4
|
||||
var/cy = 2+rows
|
||||
src.boxes.screen_loc = "4:16,2:16 to [4+cols]:16,[2+rows]:16"
|
||||
@@ -183,6 +206,52 @@
|
||||
src.closer.screen_loc = "[4+cols+1]:16,2:16"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents)
|
||||
|
||||
var/baseline_max_storage_space = 16 //should be equal to default backpack capacity
|
||||
var/storage_cap_width = 2 //length of sprite for start and end of the box representing total storage space
|
||||
var/stored_cap_width = 4 //length of sprite for start and end of the box representing the stored item
|
||||
var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,274) //length of sprite for the box representing total storage space
|
||||
|
||||
storage_start.overlays.Cut()
|
||||
|
||||
var/matrix/M = matrix()
|
||||
M.Scale((storage_width-storage_cap_width*2+3)/32,1)
|
||||
src.storage_continue.transform = M
|
||||
|
||||
src.storage_start.screen_loc = "4:16,2:16"
|
||||
src.storage_continue.screen_loc = "4:[storage_cap_width+(storage_width-storage_cap_width*2)/2+2],2:16"
|
||||
src.storage_end.screen_loc = "4:[19+storage_width-storage_cap_width],2:16"
|
||||
|
||||
var/startpoint = 0
|
||||
var/endpoint = 1
|
||||
|
||||
for(var/obj/item/O in contents)
|
||||
startpoint = endpoint + 1
|
||||
endpoint += storage_width * O.get_storage_cost()/max_storage_space
|
||||
|
||||
var/matrix/M_start = matrix()
|
||||
var/matrix/M_continue = matrix()
|
||||
var/matrix/M_end = matrix()
|
||||
M_start.Translate(startpoint,0)
|
||||
M_continue.Scale((endpoint-startpoint-stored_cap_width*2)/32,1)
|
||||
M_continue.Translate(startpoint+stored_cap_width+(endpoint-startpoint-stored_cap_width*2)/2 - 16,0)
|
||||
M_end.Translate(endpoint-stored_cap_width,0)
|
||||
src.stored_start.transform = M_start
|
||||
src.stored_continue.transform = M_continue
|
||||
src.stored_end.transform = M_end
|
||||
storage_start.overlays += src.stored_start
|
||||
storage_start.overlays += src.stored_continue
|
||||
storage_start.overlays += src.stored_end
|
||||
|
||||
O.screen_loc = "4:[round((startpoint+endpoint)/2)+2],2:16"
|
||||
O.maptext = ""
|
||||
O.layer = 20
|
||||
|
||||
src.closer.screen_loc = "4:[storage_width+19],2:16"
|
||||
return
|
||||
|
||||
|
||||
/datum/numbered_display
|
||||
var/obj/item/sample_object
|
||||
var/number
|
||||
@@ -214,12 +283,14 @@
|
||||
adjusted_contents++
|
||||
numbered_contents.Add( new/datum/numbered_display(I) )
|
||||
|
||||
//var/mob/living/carbon/human/H = user
|
||||
var/row_num = 0
|
||||
var/col_count = min(7,storage_slots) -1
|
||||
if (adjusted_contents > 7)
|
||||
row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width.
|
||||
src.standard_orient_objs(row_num, col_count, numbered_contents)
|
||||
if(storage_slots == null)
|
||||
src.space_orient_objs(numbered_contents)
|
||||
else
|
||||
var/row_num = 0
|
||||
var/col_count = min(7,storage_slots) -1
|
||||
if (adjusted_contents > 7)
|
||||
row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width.
|
||||
src.slot_orient_objs(row_num, col_count, numbered_contents)
|
||||
return
|
||||
|
||||
//This proc return 1 if the item can be picked up and 0 if it can't.
|
||||
@@ -227,12 +298,12 @@
|
||||
/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W)) return //Not an item
|
||||
|
||||
if(usr.isEquipped(W) && !usr.canUnEquip(W))
|
||||
if(usr && usr.isEquipped(W) && !usr.canUnEquip(W))
|
||||
return 0
|
||||
|
||||
if(src.loc == W)
|
||||
return 0 //Means the item is already in the storage item
|
||||
if(contents.len >= storage_slots)
|
||||
if(storage_slots != null && contents.len >= storage_slots)
|
||||
if(!stop_messages)
|
||||
usr << "<span class='notice'>[src] is full, make some space.</span>"
|
||||
return 0 //Storage item is full
|
||||
@@ -249,9 +320,9 @@
|
||||
usr << "<span class='notice'>[src] cannot hold [W].</span>"
|
||||
return 0
|
||||
|
||||
if (W.w_class > max_w_class)
|
||||
if (max_w_class != null && W.w_class > max_w_class)
|
||||
if(!stop_messages)
|
||||
usr << "<span class='notice'>[W] is too big for this [src].</span>"
|
||||
usr << "<span class='notice'>[W] is too long for \the [src].</span>"
|
||||
return 0
|
||||
|
||||
var/total_storage_space = W.get_storage_cost()
|
||||
@@ -260,7 +331,7 @@
|
||||
|
||||
if(total_storage_space > max_storage_space)
|
||||
if(!stop_messages)
|
||||
usr << "<span class='notice'>[src] is full, make some space.</span>"
|
||||
usr << "<span class='notice'>[src] is too full, make some space.</span>"
|
||||
return 0
|
||||
|
||||
if(W.w_class >= src.w_class && (istype(W, /obj/item/weapon/storage)))
|
||||
@@ -437,15 +508,51 @@
|
||||
else
|
||||
verbs -= /obj/item/weapon/storage/verb/toggle_gathering_mode
|
||||
|
||||
spawn(5)
|
||||
var/total_storage_space = 0
|
||||
for(var/obj/item/I in contents)
|
||||
total_storage_space += I.get_storage_cost()
|
||||
max_storage_space = max(total_storage_space,max_storage_space) //prevents spawned containers from being too small for their contents
|
||||
|
||||
src.boxes = new /obj/screen/storage( )
|
||||
src.boxes.name = "storage"
|
||||
src.boxes.master = src
|
||||
src.boxes.icon_state = "block"
|
||||
src.boxes.screen_loc = "7,7 to 10,8"
|
||||
src.boxes.layer = 19
|
||||
|
||||
src.storage_start = new /obj/screen/storage( )
|
||||
src.storage_start.name = "storage"
|
||||
src.storage_start.master = src
|
||||
src.storage_start.icon_state = "storage_start"
|
||||
src.storage_start.screen_loc = "7,7 to 10,8"
|
||||
src.storage_start.layer = 19
|
||||
src.storage_continue = new /obj/screen/storage( )
|
||||
src.storage_continue.name = "storage"
|
||||
src.storage_continue.master = src
|
||||
src.storage_continue.icon_state = "storage_continue"
|
||||
src.storage_continue.screen_loc = "7,7 to 10,8"
|
||||
src.storage_continue.layer = 19
|
||||
src.storage_end = new /obj/screen/storage( )
|
||||
src.storage_end.name = "storage"
|
||||
src.storage_end.master = src
|
||||
src.storage_end.icon_state = "storage_end"
|
||||
src.storage_end.screen_loc = "7,7 to 10,8"
|
||||
src.storage_end.layer = 19
|
||||
|
||||
src.stored_start = new /obj //we just need these to hold the icon
|
||||
src.stored_start.icon_state = "stored_start"
|
||||
src.stored_start.layer = 19
|
||||
src.stored_continue = new /obj
|
||||
src.stored_continue.icon_state = "stored_continue"
|
||||
src.stored_continue.layer = 19
|
||||
src.stored_end = new /obj
|
||||
src.stored_end.icon_state = "stored_end"
|
||||
src.stored_end.layer = 19
|
||||
|
||||
src.closer = new /obj/screen/close( )
|
||||
src.closer.master = src
|
||||
src.closer.icon_state = "x"
|
||||
src.closer.icon_state = "storage_close"
|
||||
src.closer.layer = 20
|
||||
orient2hud()
|
||||
return
|
||||
@@ -500,4 +607,19 @@
|
||||
return depth
|
||||
|
||||
/obj/item/proc/get_storage_cost()
|
||||
return 2**(w_class-1) //1,2,4,8,16,...
|
||||
if (storage_cost)
|
||||
return storage_cost
|
||||
else
|
||||
switch(w_class)
|
||||
if(1)
|
||||
return 1
|
||||
if(2)
|
||||
return 2
|
||||
if(3)
|
||||
return 4
|
||||
if(4)
|
||||
return 8
|
||||
if(5)
|
||||
return 16
|
||||
else
|
||||
return 1000
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
throw_range = 7
|
||||
w_class = 4
|
||||
max_w_class = 3
|
||||
max_storage_space = 14 //can hold 7 w_class-2 items or up to 3 w_class-3 items (with 1 w_class-2 item as change).
|
||||
max_storage_space = 14 //enough to hold all starting contents
|
||||
origin_tech = list(TECH_COMBAT = 1)
|
||||
attack_verb = list("robusted")
|
||||
|
||||
@@ -20,63 +20,153 @@
|
||||
icon_state = "red"
|
||||
item_state = "toolbox_red"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
if(prob(50))
|
||||
new /obj/item/device/flashlight(src)
|
||||
else
|
||||
new /obj/item/device/flashlight/flare(src)
|
||||
new /obj/item/device/radio(src)
|
||||
/obj/item/weapon/storage/toolbox/emergency/New()
|
||||
..()
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
if(prob(50))
|
||||
new /obj/item/device/flashlight(src)
|
||||
else
|
||||
new /obj/item/device/flashlight/flare(src)
|
||||
new /obj/item/device/radio(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical
|
||||
name = "mechanical toolbox"
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/device/analyzer(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
/obj/item/weapon/storage/toolbox/mechanical/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/device/analyzer(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/electrical
|
||||
name = "electrical toolbox"
|
||||
icon_state = "yellow"
|
||||
item_state = "toolbox_yellow"
|
||||
|
||||
New()
|
||||
..()
|
||||
var/color = pick("red","yellow","green","blue","pink","orange","cyan","white")
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/device/t_scanner(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/stack/cable_coil(src,30,color)
|
||||
new /obj/item/stack/cable_coil(src,30,color)
|
||||
if(prob(5))
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
else
|
||||
new /obj/item/stack/cable_coil(src,30,color)
|
||||
/obj/item/weapon/storage/toolbox/electrical/New()
|
||||
..()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/device/t_scanner(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/stack/cable_coil/random(src,30)
|
||||
new /obj/item/stack/cable_coil/random(src,30)
|
||||
if(prob(5))
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
else
|
||||
new /obj/item/stack/cable_coil/random(src,30)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/syndicate
|
||||
name = "suspicious looking toolbox"
|
||||
name = "black and red toolbox"
|
||||
icon_state = "syndicate"
|
||||
item_state = "toolbox_syndi"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1)
|
||||
force = 7.0
|
||||
|
||||
New()
|
||||
..()
|
||||
var/color = pick("red","yellow","green","blue","pink","orange","cyan","white")
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/stack/cable_coil(src,30,color)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
/obj/item/weapon/storage/toolbox/syndicate/New()
|
||||
..()
|
||||
new /obj/item/clothing/gloves/yellow(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox
|
||||
max_storage_space = 8 //slightly smaller than a toolbox
|
||||
name = "rainbow lunchbox"
|
||||
icon_state = "lunchbox_rainbow"
|
||||
item_state = "toolbox_pink"
|
||||
desc = "A little lunchbox. This one is the colors of the rainbow!"
|
||||
w_class = 3
|
||||
max_w_class = 2
|
||||
var/filled = FALSE
|
||||
attack_verb = list("lunched")
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/New()
|
||||
..()
|
||||
if(filled)
|
||||
var/list/lunches = lunchables_lunches()
|
||||
var/lunch = lunches[pick(lunches)]
|
||||
new lunch(src)
|
||||
|
||||
var/list/snacks = lunchables_snacks()
|
||||
var/snack = snacks[pick(snacks)]
|
||||
new snack(src)
|
||||
|
||||
var/list/drinks = lunchables_drinks()
|
||||
var/drink = drinks[pick(drinks)]
|
||||
new drink(src)
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/filled
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/heart
|
||||
name = "heart lunchbox"
|
||||
icon_state = "lunchbox_lovelyhearts"
|
||||
item_state = "toolbox_pink"
|
||||
desc = "A little lunchbox. This one has cute little hearts on it!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/heart/filled
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cat
|
||||
name = "cat lunchbox"
|
||||
icon_state = "lunchbox_sciencecatshow"
|
||||
item_state = "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
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nt
|
||||
name = "Nanotrasen brand lunchbox"
|
||||
icon_state = "lunchbox_nanotrasen"
|
||||
item_state = "toolbox_blue"
|
||||
desc = "A little lunchbox. This one is branded with the Nanotrasen logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nt/filled
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/mars
|
||||
name = "\improper Mars university lunchbox"
|
||||
icon_state = "lunchbox_marsuniversity"
|
||||
item_state = "toolbox_red"
|
||||
desc = "A little lunchbox. This one is branded with the Mars university logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/mars/filled
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cti
|
||||
name = "\improper CTI lunchbox"
|
||||
icon_state = "lunchbox_cti"
|
||||
item_state = "toolbox_blue"
|
||||
desc = "A little lunchbox. This one is branded with the CTI logo!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/cti/filled
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nymph
|
||||
name = "\improper Diona nymph lunchbox"
|
||||
icon_state = "lunchbox_dionanymph"
|
||||
item_state = "toolbox_yellow"
|
||||
desc = "A little lunchbox. This one is an adorable Diona nymph on the side!"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/nymph/filled
|
||||
filled = TRUE
|
||||
|
||||
/obj/item/weapon/storage/toolbox/lunchbox/syndicate
|
||||
name = "black and red lunchbox"
|
||||
icon_state = "lunchbox_syndie"
|
||||
item_state = "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
|
||||
filled = TRUE
|
||||
|
||||
@@ -127,7 +127,6 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/chameleon
|
||||
name = "chameleon kit"
|
||||
desc = "Comes with all the clothes you need to impersonate most people. Acting lessons sold seperately."
|
||||
storage_slots = 10
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/chameleon/New()
|
||||
..()
|
||||
|
||||
@@ -73,18 +73,16 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/wallet/random/New()
|
||||
..()
|
||||
var/item1_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500)
|
||||
var/item2_type
|
||||
if(prob(50))
|
||||
item2_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500)
|
||||
var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron )
|
||||
|
||||
spawn(2)
|
||||
if(item1_type)
|
||||
new item1_type(src)
|
||||
if(item2_type)
|
||||
new item2_type(src)
|
||||
if(item3_type)
|
||||
new item3_type(src)
|
||||
var/amount = rand(50, 100) + rand(50, 100) // Triangular distribution from 100 to 200
|
||||
var/obj/item/weapon/spacecash/SC = null
|
||||
for(var/i in list(100, 50, 20, 10, 5, 1))
|
||||
if(amount < i)
|
||||
continue
|
||||
SC = new(src)
|
||||
while(amount >= i)
|
||||
amount -= i
|
||||
SC.adjust_worth(i, 0)
|
||||
SC.update_icon()
|
||||
@@ -1,18 +0,0 @@
|
||||
// WIRES
|
||||
|
||||
/obj/item/weapon/wire/proc/update()
|
||||
if (src.amount > 1)
|
||||
src.icon_state = "spool_wire"
|
||||
src.desc = text("This is just spool of regular insulated wire. It consists of about [] unit\s of wire.", src.amount)
|
||||
else
|
||||
src.icon_state = "item_wire"
|
||||
src.desc = "This is just a simple piece of regular insulated wire."
|
||||
return
|
||||
|
||||
/obj/item/weapon/wire/attack_self(mob/user as mob)
|
||||
if (src.laying)
|
||||
src.laying = 0
|
||||
user << "<span class='notice'>You're done laying wire!</span>"
|
||||
else
|
||||
user << "<span class='warning'>You are not using this to lay wire...</span>"
|
||||
return
|
||||
@@ -102,7 +102,7 @@
|
||||
usr.visible_message("<span class='warning'>[user] starts climbing onto \the [src]!</span>")
|
||||
climbers |= user
|
||||
|
||||
if(!do_after(user,(issmall(user) ? 30 : 50)))
|
||||
if(!do_after(user,(issmall(user) ? 20 : 34)))
|
||||
climbers -= user
|
||||
return
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ LINEN BINS
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "sheet"
|
||||
item_state = "bedsheet"
|
||||
slot_flags = SLOT_BACK
|
||||
layer = 4.0
|
||||
throwforce = 1
|
||||
throw_speed = 1
|
||||
@@ -19,7 +20,7 @@ LINEN BINS
|
||||
/obj/item/weapon/bedsheet/attack_self(mob/user as mob)
|
||||
user.drop_item()
|
||||
if(layer == initial(layer))
|
||||
layer = 5
|
||||
layer = MOB_LAYER + 0.1
|
||||
else
|
||||
layer = initial(layer)
|
||||
add_fingerprint(user)
|
||||
@@ -38,51 +39,67 @@ 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"
|
||||
|
||||
/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/structure/bedsheetbin
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
new /obj/item/weapon/caution(src)
|
||||
new /obj/item/device/lightreplacer(src)
|
||||
new /obj/item/weapon/storage/bag/trash(src)
|
||||
new /obj/item/weapon/storage/belt/janitor(src)
|
||||
new /obj/item/clothing/shoes/galoshes(src)
|
||||
|
||||
/*
|
||||
@@ -114,3 +115,7 @@
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/big(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/big(src)
|
||||
new /obj/item/clothing/under/lawyer/blue(src)
|
||||
new /obj/item/clothing/under/lawyer/blue(src)
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
/obj/structure/closet/l3closet/general/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/bio_suit/general( src )
|
||||
new /obj/item/clothing/head/bio_hood/general( src )
|
||||
new /obj/item/clothing/suit/bio_suit/general(src)
|
||||
new /obj/item/clothing/head/bio_hood/general(src)
|
||||
|
||||
|
||||
/obj/structure/closet/l3closet/virology
|
||||
@@ -23,9 +23,9 @@
|
||||
|
||||
/obj/structure/closet/l3closet/virology/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/bio_suit/virology( src )
|
||||
new /obj/item/clothing/head/bio_hood/virology( src )
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/clothing/suit/bio_suit/virology(src)
|
||||
new /obj/item/clothing/head/bio_hood/virology(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/weapon/tank/oxygen(src)
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
|
||||
/obj/structure/closet/l3closet/security/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/bio_suit/security( src )
|
||||
new /obj/item/clothing/head/bio_hood/security( src )
|
||||
new /obj/item/clothing/suit/bio_suit/security(src)
|
||||
new /obj/item/clothing/head/bio_hood/security(src)
|
||||
|
||||
|
||||
/obj/structure/closet/l3closet/janitor
|
||||
@@ -47,8 +47,14 @@
|
||||
|
||||
/obj/structure/closet/l3closet/janitor/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/bio_suit/janitor( src )
|
||||
new /obj/item/clothing/head/bio_hood/janitor( src )
|
||||
new /obj/item/clothing/suit/bio_suit/janitor(src)
|
||||
new /obj/item/clothing/suit/bio_suit/janitor(src)
|
||||
new /obj/item/clothing/head/bio_hood/janitor(src)
|
||||
new /obj/item/clothing/head/bio_hood/janitor(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
|
||||
|
||||
/obj/structure/closet/l3closet/scientist
|
||||
@@ -58,5 +64,23 @@
|
||||
|
||||
/obj/structure/closet/l3closet/scientist/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/bio_suit/scientist( src )
|
||||
new /obj/item/clothing/head/bio_hood/scientist( src )
|
||||
new /obj/item/clothing/suit/bio_suit/scientist(src)
|
||||
new /obj/item/clothing/head/bio_hood/scientist(src)
|
||||
|
||||
|
||||
/obj/structure/closet/l3closet/medical
|
||||
icon_state = "bio_scientist"
|
||||
icon_closed = "bio_scientist"
|
||||
icon_opened = "bio_scientistopen"
|
||||
|
||||
/obj/structure/closet/l3closet/medical/New()
|
||||
..()
|
||||
new /obj/item/clothing/suit/bio_suit/general(src)
|
||||
new /obj/item/clothing/suit/bio_suit/general(src)
|
||||
new /obj/item/clothing/suit/bio_suit/general(src)
|
||||
new /obj/item/clothing/head/bio_hood/general(src)
|
||||
new /obj/item/clothing/head/bio_hood/general(src)
|
||||
new /obj/item/clothing/head/bio_hood/general(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
@@ -17,10 +17,7 @@
|
||||
new /obj/item/weapon/storage/backpack/satchel_eng(src)
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/eng(src)
|
||||
if (prob(70))
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/webbing(src)
|
||||
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/chief_engineer/skirt(src)
|
||||
@@ -38,6 +35,7 @@
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/taperoll/engineering(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -92,6 +90,9 @@
|
||||
new /obj/item/weapon/weldpack(src)
|
||||
new /obj/item/weapon/weldpack(src)
|
||||
new /obj/item/weapon/weldpack(src)
|
||||
new /obj/item/clothing/glasses/welding(src)
|
||||
new /obj/item/clothing/glasses/welding(src)
|
||||
new /obj/item/clothing/glasses/welding(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -115,10 +116,7 @@
|
||||
new /obj/item/weapon/storage/backpack/satchel_eng(src)
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/eng(src)
|
||||
if (prob(70))
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/webbing(src)
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
new /obj/item/weapon/storage/toolbox/mechanical(src)
|
||||
new /obj/item/device/radio/headset/headset_eng(src)
|
||||
new /obj/item/device/radio/headset/headset_eng/alt(src)
|
||||
@@ -128,7 +126,11 @@
|
||||
new /obj/item/weapon/cartridge/engineering(src)
|
||||
new /obj/item/taperoll/engineering(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/atmos_personal
|
||||
name = "technician's locker"
|
||||
req_access = list(access_atmospherics)
|
||||
@@ -148,10 +150,7 @@
|
||||
new /obj/item/weapon/storage/backpack/satchel_eng(src)
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/eng(src)
|
||||
if (prob(70))
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
else
|
||||
new /obj/item/clothing/accessory/storage/webbing(src)
|
||||
new /obj/item/clothing/accessory/storage/brown_vest(src)
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/device/flashlight(src)
|
||||
new /obj/item/weapon/extinguisher(src)
|
||||
@@ -162,4 +161,5 @@
|
||||
new /obj/item/weapon/cartridge/atmos(src)
|
||||
new /obj/item/taperoll/atmos(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
return
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/med(src)
|
||||
new /obj/item/clothing/under/rank/nursesuit (src)
|
||||
new /obj/item/clothing/head/nursehat (src)
|
||||
switch(pick("blue", "green", "purple", "black"))
|
||||
switch(pick("blue", "green", "purple", "black", "navyblue"))
|
||||
if ("blue")
|
||||
new /obj/item/clothing/under/rank/medical/blue(src)
|
||||
new /obj/item/clothing/head/surgery/blue(src)
|
||||
@@ -83,7 +83,10 @@
|
||||
if ("black")
|
||||
new /obj/item/clothing/under/rank/medical/black(src)
|
||||
new /obj/item/clothing/head/surgery/black(src)
|
||||
switch(pick("blue", "green", "purple", "black"))
|
||||
if ("navyblue")
|
||||
new /obj/item/clothing/under/rank/medical/navyblue(src)
|
||||
new /obj/item/clothing/head/surgery/navyblue(src)
|
||||
switch(pick("blue", "green", "purple", "black", "navyblue"))
|
||||
if ("blue")
|
||||
new /obj/item/clothing/under/rank/medical/blue(src)
|
||||
new /obj/item/clothing/head/surgery/blue(src)
|
||||
@@ -96,6 +99,9 @@
|
||||
if ("black")
|
||||
new /obj/item/clothing/under/rank/medical/black(src)
|
||||
new /obj/item/clothing/head/surgery/black(src)
|
||||
if ("navyblue")
|
||||
new /obj/item/clothing/under/rank/medical/navyblue(src)
|
||||
new /obj/item/clothing/head/surgery/navyblue(src)
|
||||
new /obj/item/clothing/under/rank/medical(src)
|
||||
new /obj/item/clothing/under/rank/nurse(src)
|
||||
new /obj/item/clothing/under/rank/orderly(src)
|
||||
@@ -144,6 +150,7 @@
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
new /obj/item/weapon/storage/box/freezer(src)
|
||||
new /obj/item/clothing/accessory/storage/white_vest(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/CMO
|
||||
@@ -167,7 +174,7 @@
|
||||
new /obj/item/clothing/suit/bio_suit/cmo(src)
|
||||
new /obj/item/clothing/head/bio_hood/cmo(src)
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
switch(pick("blue", "green", "purple", "black"))
|
||||
switch(pick("blue", "green", "purple", "black", "navyblue"))
|
||||
if ("blue")
|
||||
new /obj/item/clothing/under/rank/medical/blue(src)
|
||||
new /obj/item/clothing/head/surgery/blue(src)
|
||||
@@ -180,6 +187,9 @@
|
||||
if ("black")
|
||||
new /obj/item/clothing/under/rank/medical/black(src)
|
||||
new /obj/item/clothing/head/surgery/black(src)
|
||||
if ("navyblue")
|
||||
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/chief_medical_officer/skirt(src)
|
||||
new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(src)
|
||||
@@ -193,6 +203,7 @@
|
||||
new /obj/item/weapon/reagent_containers/hypospray(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/medical(src)
|
||||
new /obj/item/weapon/storage/box/freezer(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -10,31 +10,16 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/storage/backpack/captain(src)
|
||||
else
|
||||
new /obj/item/weapon/storage/backpack/satchel_cap(src)
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/captain(src)
|
||||
new /obj/item/clothing/suit/captunic(src)
|
||||
new /obj/item/clothing/suit/captunic/capjacket(src)
|
||||
new /obj/item/clothing/head/caphat/cap(src)
|
||||
new /obj/item/clothing/under/rank/captain(src)
|
||||
new /obj/item/weapon/storage/backpack/dufflebag/captain(src)
|
||||
new /obj/item/clothing/suit/storage/vest(src)
|
||||
new /obj/item/weapon/cartridge/captain(src)
|
||||
new /obj/item/clothing/head/helmet/swat(src)
|
||||
new /obj/item/weapon/storage/lockbox/medal(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/device/radio/headset/heads/captain(src)
|
||||
new /obj/item/device/radio/headset/heads/captain/alt(src)
|
||||
new /obj/item/clothing/gloves/captain(src)
|
||||
new /obj/item/weapon/gun/energy/gun(src)
|
||||
new /obj/item/clothing/suit/armor/captain(src)
|
||||
new /obj/item/weapon/melee/telebaton(src)
|
||||
new /obj/item/clothing/under/dress/dress_cap(src)
|
||||
new /obj/item/clothing/head/caphat/formal(src)
|
||||
new /obj/item/clothing/under/captainformal(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/captain(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -51,7 +36,6 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/glasses/sunglasses(src)
|
||||
new /obj/item/clothing/suit/storage/vest(src)
|
||||
new /obj/item/clothing/head/helmet(src)
|
||||
new /obj/item/weapon/cartridge/hop(src)
|
||||
@@ -89,6 +73,8 @@
|
||||
new /obj/item/clothing/shoes/white(src)
|
||||
new /obj/item/clothing/under/rank/head_of_personnel_whimsy(src)
|
||||
new /obj/item/clothing/head/caphat/hop(src)
|
||||
new /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit(src)
|
||||
new /obj/item/clothing/glasses/sunglasses(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -273,20 +259,8 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/under/det/grey(src)
|
||||
new /obj/item/clothing/under/det/black(src)
|
||||
new /obj/item/clothing/under/det/waistcoat(src)
|
||||
new /obj/item/clothing/under/det/grey/waistcoat(src)
|
||||
new /obj/item/clothing/suit/storage/det_trench(src)
|
||||
new /obj/item/clothing/suit/storage/det_trench/grey(src)
|
||||
new /obj/item/clothing/suit/storage/forensics/blue(src)
|
||||
new /obj/item/clothing/suit/storage/forensics/red(src)
|
||||
new /obj/item/clothing/accessory/badge/holo/detective(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/head/det(src)
|
||||
new /obj/item/clothing/head/det/grey(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
new /obj/item/weapon/storage/belt/detective(src)
|
||||
new /obj/item/weapon/storage/box/evidence(src)
|
||||
new /obj/item/device/radio/headset/headset_sec(src)
|
||||
@@ -297,6 +271,9 @@
|
||||
new /obj/item/taperoll/police(src)
|
||||
new /obj/item/weapon/gun/projectile/colt/detective(src)
|
||||
new /obj/item/clothing/accessory/holster/armpit(src)
|
||||
new /obj/item/device/flashlight/maglight(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/flask/detflask(src)
|
||||
new /obj/item/weapon/storage/briefcase/crimekit(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/detective/update_icon()
|
||||
|
||||
@@ -66,18 +66,32 @@
|
||||
..()
|
||||
new /obj/item/clothing/head/det(src)
|
||||
new /obj/item/clothing/head/det(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/head/det/grey(src)
|
||||
new /obj/item/clothing/head/det/grey(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
new /obj/item/clothing/shoes/laceup(src)
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/under/det(src)
|
||||
new /obj/item/clothing/under/det/waistcoat(src)
|
||||
new /obj/item/clothing/under/det/waistcoat(src)
|
||||
new /obj/item/clothing/under/det/grey(src)
|
||||
new /obj/item/clothing/under/det/grey(src)
|
||||
new /obj/item/clothing/under/det/grey/waistcoat(src)
|
||||
new /obj/item/clothing/under/det/grey/waistcoat(src)
|
||||
new /obj/item/clothing/under/det/black(src)
|
||||
new /obj/item/clothing/under/det/black(src)
|
||||
new /obj/item/clothing/under/det/corporate(src)
|
||||
new /obj/item/clothing/under/det/corporate(src)
|
||||
new /obj/item/clothing/suit/storage/det_trench(src)
|
||||
new /obj/item/clothing/suit/storage/det_trench(src)
|
||||
new /obj/item/clothing/suit/storage/det_trench/grey(src)
|
||||
new /obj/item/clothing/suit/storage/det_trench/grey(src)
|
||||
new /obj/item/clothing/suit/storage/forensics/blue(src)
|
||||
new /obj/item/clothing/suit/storage/forensics/blue(src)
|
||||
new /obj/item/clothing/suit/storage/forensics/red(src)
|
||||
new /obj/item/clothing/suit/storage/forensics/red(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/wardrobe/pink
|
||||
@@ -280,6 +294,9 @@
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
|
||||
new /obj/item/clothing/shoes/workboots(src)
|
||||
new /obj/item/clothing/shoes/workboots(src)
|
||||
new /obj/item/clothing/shoes/workboots(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -453,6 +470,8 @@
|
||||
new /obj/item/clothing/under/rank/medical/green(src)
|
||||
new /obj/item/clothing/under/rank/medical/purple(src)
|
||||
new /obj/item/clothing/under/rank/medical/black(src)
|
||||
new /obj/item/clothing/under/rank/medical/navyblue(src)
|
||||
new /obj/item/clothing/head/surgery/navyblue(src)
|
||||
new /obj/item/clothing/head/surgery/purple(src)
|
||||
new /obj/item/clothing/head/surgery/blue(src)
|
||||
new /obj/item/clothing/head/surgery/green(src)
|
||||
@@ -516,7 +535,7 @@
|
||||
new /obj/item/clothing/under/pants/black(src)
|
||||
new /obj/item/clothing/under/pants/tan(src)
|
||||
new /obj/item/clothing/under/pants/track(src)
|
||||
new /obj/item/clothing/under/pants/jeans(src)
|
||||
new /obj/item/clothing/under/pants(src)
|
||||
new /obj/item/clothing/under/pants/khaki(src)
|
||||
new /obj/item/clothing/mask/bandana/blue(src)
|
||||
new /obj/item/clothing/mask/bandana/blue(src)
|
||||
@@ -589,3 +608,29 @@
|
||||
new /obj/item/clothing/under/scratch(src)
|
||||
new /obj/item/weapon/storage/backpack/satchel(src)
|
||||
new /obj/item/weapon/storage/backpack/satchel(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/wardrobe/captain
|
||||
name = "captain's wardrobe"
|
||||
icon_state = "cabinet_closed"
|
||||
icon_closed = "cabinet_closed"
|
||||
icon_opened = "cabinet_open"
|
||||
|
||||
/obj/structure/closet/wardrobe/captain/New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/backpack/captain(src)
|
||||
new /obj/item/clothing/suit/captunic(src)
|
||||
new /obj/item/clothing/suit/captunic/capjacket(src)
|
||||
new /obj/item/clothing/head/caphat/cap(src)
|
||||
new /obj/item/clothing/under/rank/captain(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/gloves/captain(src)
|
||||
new /obj/item/clothing/under/dress/dress_cap(src)
|
||||
new /obj/item/weapon/storage/backpack/satchel_cap(src)
|
||||
new /obj/item/clothing/head/caphat/formal(src)
|
||||
new /obj/item/clothing/under/captainformal(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/captain(src)
|
||||
new /obj/item/clothing/head/beret/centcom/captain(src)
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src)
|
||||
new /obj/item/clothing/glasses/sunglasses(src)
|
||||
return
|
||||
@@ -1,5 +1,5 @@
|
||||
#define SHOWER_OPEN_LAYER OBJ_LAYER + 0.4
|
||||
#define SHOWER_CLOSED_LAYER MOB_LAYER + 0.1
|
||||
#define SHOWER_CLOSED_LAYER MOB_LAYER + 0.2
|
||||
|
||||
/obj/structure/curtain
|
||||
name = "curtain"
|
||||
@@ -35,6 +35,21 @@
|
||||
icon_state = "open"
|
||||
layer = SHOWER_OPEN_LAYER
|
||||
|
||||
/obj/structure/curtain/attackby(obj/item/P, mob/user)
|
||||
if(istype(P, /obj/item/weapon/wirecutters))
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
user << "<span class='notice'>You start to cut the shower curtains.</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 10))
|
||||
user << "<span class='notice'>You cut the shower curtains.</span>"
|
||||
var/obj/item/stack/material/plastic/A = new /obj/item/stack/material/plastic( src.loc )
|
||||
A.amount = 3
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/structure/curtain/black
|
||||
name = "black curtain"
|
||||
color = "#222222"
|
||||
|
||||
@@ -8,9 +8,19 @@
|
||||
var/obj/item/weapon/extinguisher/has_extinguisher
|
||||
var/opened = 0
|
||||
|
||||
/obj/structure/extinguisher_cabinet/New()
|
||||
/obj/structure/extinguisher_cabinet/New(var/loc, var/dir, var/building = 0)
|
||||
..()
|
||||
has_extinguisher = new/obj/item/weapon/extinguisher(src)
|
||||
|
||||
if(building)
|
||||
if(loc)
|
||||
src.loc = loc
|
||||
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -27 : 27)
|
||||
pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
has_extinguisher = new/obj/item/weapon/extinguisher(src)
|
||||
|
||||
/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user)
|
||||
if(isrobot(user))
|
||||
@@ -22,6 +32,15 @@
|
||||
user << "<span class='notice'>You place [O] in [src].</span>"
|
||||
else
|
||||
opened = !opened
|
||||
if(istype(O, /obj/item/weapon/wrench))
|
||||
if(!has_extinguisher)
|
||||
user << "<span class='notice'>You start to unwrench the extinguisher cabinet.</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 15))
|
||||
user << "<span class='notice'>You unwrench the extinguisher cabinet.</span>"
|
||||
new /obj/item/frame/extinguisher_cabinet( src.loc )
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
opened = !opened
|
||||
update_icon()
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
|
||||
var/proj_damage = Proj.get_structure_damage()
|
||||
if(!proj_damage) return
|
||||
|
||||
|
||||
health -= proj_damage
|
||||
..()
|
||||
if(health <= 0)
|
||||
@@ -248,6 +248,7 @@
|
||||
desc = "Contains inflatable walls and doors."
|
||||
icon_state = "inf_box"
|
||||
item_state = "syringe_kit"
|
||||
w_class = 3
|
||||
max_storage_space = 28
|
||||
can_hold = list(/obj/item/inflatable)
|
||||
|
||||
|
||||
@@ -8,9 +8,18 @@
|
||||
anchored = 1
|
||||
var/shattered = 0
|
||||
var/list/ui_users = list()
|
||||
var/glass = 1
|
||||
|
||||
/obj/structure/mirror/New(var/loc, var/dir, var/building = 0, mob/user as mob)
|
||||
if(building)
|
||||
glass = 0
|
||||
icon_state = "mirror_frame"
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28)
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0
|
||||
return
|
||||
|
||||
/obj/structure/mirror/attack_hand(mob/user as mob)
|
||||
|
||||
if(!glass) return
|
||||
if(shattered) return
|
||||
|
||||
if(ishuman(user))
|
||||
@@ -22,6 +31,7 @@
|
||||
AC.ui_interact(user)
|
||||
|
||||
/obj/structure/mirror/proc/shatter()
|
||||
if(!glass) return
|
||||
if(shattered) return
|
||||
shattered = 1
|
||||
icon_state = "mirror_broke"
|
||||
@@ -34,18 +44,57 @@
|
||||
if(prob(Proj.get_structure_damage() * 2))
|
||||
if(!shattered)
|
||||
shatter()
|
||||
else
|
||||
else if(glass)
|
||||
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
||||
..()
|
||||
|
||||
/obj/structure/mirror/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(shattered)
|
||||
if(istype(I, /obj/item/weapon/wrench))
|
||||
if(!glass)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
user << "<span class='notice'>You unfasten the frame.</span>"
|
||||
new /obj/item/frame/mirror( src.loc )
|
||||
qdel(src)
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(shattered && glass)
|
||||
user << "<span class='notice'>The broken glass falls out.</span>"
|
||||
icon_state = "mirror_frame"
|
||||
glass = !glass
|
||||
new /obj/item/weapon/material/shard( src.loc )
|
||||
return
|
||||
if(!shattered && glass)
|
||||
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
user << "<span class='notice'>You remove the glass.</span>"
|
||||
glass = !glass
|
||||
icon_state = "mirror_frame"
|
||||
new /obj/item/stack/material/glass( src.loc, 2 )
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/stack/material/glass))
|
||||
if(!glass)
|
||||
var/obj/item/stack/material/glass/G = I
|
||||
if (G.get_amount() < 2)
|
||||
user << "<span class='warning'>You need two sheets of glass to add them to the frame.</span>"
|
||||
return
|
||||
user << "<span class='notice'>You start to add the glass to the frame.</span>"
|
||||
if(do_after(user, 20))
|
||||
if (G.use(2))
|
||||
shattered = 0
|
||||
glass = 1
|
||||
icon_state = "mirror"
|
||||
user << "<span class='notice'>You add the glass to the frame.</span>"
|
||||
return
|
||||
|
||||
if(shattered && glass)
|
||||
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
||||
return
|
||||
|
||||
if(prob(I.force * 2))
|
||||
visible_message("<span class='warning'>[user] smashes [src] with [I]!</span>")
|
||||
shatter()
|
||||
if(glass)
|
||||
shatter()
|
||||
else
|
||||
visible_message("<span class='warning'>[user] hits [src] with [I]!</span>")
|
||||
playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1)
|
||||
@@ -53,13 +102,14 @@
|
||||
/obj/structure/mirror/attack_generic(var/mob/user, var/damage)
|
||||
|
||||
user.do_attack_animation(src)
|
||||
if(shattered)
|
||||
if(shattered && glass)
|
||||
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
|
||||
return 0
|
||||
|
||||
if(damage)
|
||||
user.visible_message("<span class='danger'>[user] smashes [src]!</span>")
|
||||
shatter()
|
||||
if(glass)
|
||||
shatter()
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] hits [src] and bounces off!</span>")
|
||||
return 1
|
||||
|
||||
@@ -7,6 +7,18 @@
|
||||
anchored = 1
|
||||
var/notices = 0
|
||||
|
||||
/obj/structure/noticeboard/New(var/loc, var/dir, var/building = 0)
|
||||
..()
|
||||
|
||||
if(building)
|
||||
if(loc)
|
||||
src.loc = loc
|
||||
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
|
||||
pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/noticeboard/initialize()
|
||||
for(var/obj/item/I in loc)
|
||||
if(notices > 4) break
|
||||
@@ -27,6 +39,14 @@
|
||||
user << "<span class='notice'>You pin the paper to the noticeboard.</span>"
|
||||
else
|
||||
user << "<span class='notice'>You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached.</span>"
|
||||
if(istype(O, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You start to unwrench the noticeboard.</span>"
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 15))
|
||||
user << "<span class='notice'>You unwrench the noticeboard.</span>"
|
||||
new /obj/item/frame/noticeboard( src.loc )
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/structure/noticeboard/attack_hand(var/mob/user)
|
||||
examine(user)
|
||||
|
||||
Reference in New Issue
Block a user