mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-27 10:32:40 +00:00
Merge remote-tracking branch 'upstream/master'
Conflicts: code/modules/recycling/sortingmachinery.dm
This commit is contained in:
156
code/WorkInProgress/copier.dm
Normal file
156
code/WorkInProgress/copier.dm
Normal file
@@ -0,0 +1,156 @@
|
||||
// Contains: copy machine
|
||||
|
||||
/obj/machinery/copier
|
||||
name = "Copy Machine"
|
||||
icon = 'bureaucracy.dmi'
|
||||
icon_state = "copier"
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/num_copies = 1 // number of copies selected, will be maintained between jobs
|
||||
var/copying = 0 // are we copying
|
||||
var/job_num_copies = 0 // number of copies remaining
|
||||
var/top_open = 1 // the top is open
|
||||
var/obj/item/weapon/template // the paper OR photo being scanned
|
||||
var/copy_wait = 0 // wait for current page to finish
|
||||
var/max_copies = 10 // MAP EDITOR: can set the number of max copies, possibly to 5 or something for public, more for QM, robutist, etc.
|
||||
|
||||
/obj/machinery/copier/New()
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/machinery/copier/attackby(obj/item/weapon/O as obj, mob/user as mob)
|
||||
if(!top_open)
|
||||
return
|
||||
|
||||
if (istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo))
|
||||
// put it inside
|
||||
template = O
|
||||
usr.drop_item()
|
||||
O.loc = src
|
||||
top_open = 0
|
||||
update()
|
||||
updateDialog()
|
||||
|
||||
/obj/machinery/copier/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/copier/attack_ai(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/copier/attack_hand(user as mob)
|
||||
// da UI
|
||||
var/dat
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(src.stat)
|
||||
user << "[name] does not seem to be responding to your button mashing."
|
||||
return
|
||||
|
||||
/*
|
||||
if(top_open)
|
||||
user << "[name] beeps, \"Please place a paper on top and close the lid.\""
|
||||
return
|
||||
*/
|
||||
|
||||
dat = "<HEAD><TITLE>Copy Machine</TITLE></HEAD><TT><b>Xeno Corp. Copying Machine</b><hr>"
|
||||
|
||||
if(copying)
|
||||
dat += "[job_num_copies] copies remaining.<br><br>"
|
||||
dat += "<A href='?src=\ref[src];cancel=1'>Cancel</a>"
|
||||
else
|
||||
if(!top_open)
|
||||
dat += "<A href='?src=\ref[src];open=1'>Open Top</a><br><br>"
|
||||
|
||||
dat += "Number of Copies: "
|
||||
|
||||
dat += "<A href='?src=\ref[src];num=-10'>-</a>"
|
||||
dat += "<A href='?src=\ref[src];num=-1'>-</a>"
|
||||
dat += " [num_copies] "
|
||||
dat += "<A href='?src=\ref[src];num=1'>+</a>"
|
||||
dat += "<A href='?src=\ref[src];num=10'>+</a><br><br>"
|
||||
|
||||
if(template)
|
||||
dat += "<A href='?src=\ref[src];copy=1'>Copy</a>"
|
||||
else
|
||||
dat += "<b>No paper to be copied.<br>"
|
||||
dat += "Please place a paper or photograph on top and close the lid.</b>"
|
||||
|
||||
dat += "<hr></TT>"
|
||||
|
||||
user << browse(dat, "window=copy_machine")
|
||||
onclose(user, "copy_machine")
|
||||
|
||||
/obj/machinery/copier/proc/update()
|
||||
if(top_open)
|
||||
icon_state = "copier_o"
|
||||
else if(copying)
|
||||
icon_state = "copier_s"
|
||||
else
|
||||
icon_state = "copier"
|
||||
|
||||
/obj/machinery/copier/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
if(href_list["num"])
|
||||
num_copies += text2num(href_list["num"])
|
||||
if(num_copies < 1)
|
||||
num_copies = 1
|
||||
else if(num_copies > max_copies)
|
||||
num_copies = max_copies
|
||||
updateDialog()
|
||||
if(href_list["open"])
|
||||
template.loc = src.loc
|
||||
template = null
|
||||
top_open = 1
|
||||
updateDialog()
|
||||
update()
|
||||
if(href_list["copy"])
|
||||
copying = 1
|
||||
job_num_copies = num_copies
|
||||
update()
|
||||
updateDialog()
|
||||
if(href_list["cancel"])
|
||||
copying = 0
|
||||
job_num_copies = 0
|
||||
update()
|
||||
updateDialog()
|
||||
|
||||
/obj/machinery/copier/process()
|
||||
if(src.stat)
|
||||
usr << "[name] does not seem to be responding to your button mashing."
|
||||
return
|
||||
|
||||
if(copying && !copy_wait)
|
||||
copy_wait = 1
|
||||
// make noise
|
||||
playsound(src, 'polaroid1.ogg', 50, 1)
|
||||
spawn(5)
|
||||
if(!copying)
|
||||
return // user cancelled
|
||||
|
||||
if(istype(template, /obj/item/weapon/paper))
|
||||
// make duplicate paper
|
||||
var/obj/item/weapon/paper/P = new(src.loc)
|
||||
P.name = template.name
|
||||
P.info = template:info
|
||||
P.stamped = template:stamped
|
||||
P.icon_state = template.icon_state
|
||||
else if(istype(template, /obj/item/weapon/photo))
|
||||
// make duplicate photo
|
||||
var/obj/item/weapon/photo/P = new(src.loc)
|
||||
P.name = template.name
|
||||
P.desc = template.desc
|
||||
P.icon = template.icon
|
||||
|
||||
// copy counting stuff
|
||||
job_num_copies -= 1
|
||||
if(job_num_copies == 0)
|
||||
usr << "[name] beeps happily."
|
||||
copying = 0
|
||||
update()
|
||||
updateDialog()
|
||||
copy_wait = 0
|
||||
23
code/WorkInProgress/filing.dm
Normal file
23
code/WorkInProgress/filing.dm
Normal file
@@ -0,0 +1,23 @@
|
||||
/obj/filingcabinet
|
||||
name = "Filing Cabinet"
|
||||
desc = "A large cabinet with drawers."
|
||||
icon = 'computer.dmi'
|
||||
icon_state = "messyfiles"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
/obj/filingcabinet/attackby(obj/item/weapon/paper/P,mob/M)
|
||||
if(istype(P))
|
||||
M << "You put the [P] in the [src]."
|
||||
M.drop_item()
|
||||
P.loc = src
|
||||
else
|
||||
M << "You can't put a [P] in the [src]!"
|
||||
|
||||
/obj/filingcabinet/attack_hand(mob/user)
|
||||
if(src.contents.len <= 0)
|
||||
user << "The [src] is empty."
|
||||
return
|
||||
var/obj/item/weapon/paper/P = input(user,"Choose a sheet to take out.","[src]", "Cancel") as null|obj in src.contents
|
||||
if(in_range(src,user))
|
||||
P.loc = user.loc
|
||||
@@ -1139,7 +1139,7 @@
|
||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
|
||||
seed = "/obj/item/seeds/ambrosiavulgaris"
|
||||
seed = "/obj/item/seeds/ambrosiavulgarisseed"
|
||||
name = "Ambrosia Vulgaris"
|
||||
desc = "A plant containing various healing chemicals."
|
||||
icon_state = "ambrosiavulgaris"
|
||||
|
||||
@@ -83,23 +83,34 @@
|
||||
traitor.objectives += block_objective
|
||||
|
||||
else
|
||||
var/list/target = traitor.objectives
|
||||
for(var/i = 1, i <= rand(1,3), i++)
|
||||
var/datum/objective/objective
|
||||
switch(rand(1,100))
|
||||
if(1 to 30)
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = traitor
|
||||
kill_objective.find_target()
|
||||
traitor.objectives += kill_objective
|
||||
objective = kill_objective
|
||||
if(31 to 40)
|
||||
var/datum/objective/protect/protect_objective = new
|
||||
protect_objective.owner = traitor
|
||||
protect_objective.find_target()
|
||||
traitor.objectives += protect_objective
|
||||
objective = protect_objective
|
||||
else
|
||||
var/datum/objective/steal/steal_objective = new
|
||||
steal_objective.owner = traitor
|
||||
steal_objective.find_target()
|
||||
traitor.objectives += steal_objective
|
||||
objective = steal_objective
|
||||
var/inthere = 0
|
||||
for(var/j, j<= target.len, j++)
|
||||
if(target[j] == objective)
|
||||
inthere = 1
|
||||
break
|
||||
if(!inthere)
|
||||
traitor.objectives += objective
|
||||
else
|
||||
i -= 1
|
||||
if (!(locate(/datum/objective/escape) in traitor.objectives))
|
||||
var/datum/objective/escape/escape_objective = new
|
||||
escape_objective.owner = traitor
|
||||
|
||||
@@ -119,6 +119,8 @@
|
||||
<A href='?src=\ref[src];dmake=2'>Junction</A><BR>
|
||||
<A href='?src=\ref[src];dmake=3'>Y-Junction</A><BR>
|
||||
<A href='?src=\ref[src];dmake=4'>Trunk</A><BR>
|
||||
<A href='?src=\ref[src];dmake=5'>Sort Junction 1</A><BR>
|
||||
<A href='?src=\ref[src];dmake=6'>Sort Junction 2</A><BR>
|
||||
"}
|
||||
|
||||
user << browse("<HEAD><TITLE>[src]</TITLE></HEAD><TT>[dat]</TT>", "window=pipedispenser")
|
||||
@@ -147,6 +149,10 @@
|
||||
C.ptype = 4
|
||||
if(4)
|
||||
C.ptype = 5
|
||||
if(5)
|
||||
C.ptype = 6
|
||||
if(6)
|
||||
C.ptype = 7
|
||||
|
||||
C.update()
|
||||
wait = 1
|
||||
|
||||
@@ -5,6 +5,13 @@ var/list/sacrificed = list()
|
||||
proc
|
||||
teleport(var/key)
|
||||
var/mob/living/user = usr
|
||||
var/mob/living/grabbed
|
||||
if (istype(user.get_active_hand(), /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = user.get_active_hand()
|
||||
grabbed = G.affecting
|
||||
else if (istype(user.get_inactive_hand(), /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = user.get_inactive_hand()
|
||||
grabbed = G.affecting
|
||||
var/allrunesloc[]
|
||||
allrunesloc = new/list()
|
||||
var/index = 0
|
||||
@@ -17,7 +24,7 @@ var/list/sacrificed = list()
|
||||
allrunesloc.len = index
|
||||
allrunesloc[index] = R.loc
|
||||
if(index >= 5)
|
||||
user << "\red You feel pain, as rune disappears in reality shift caused by too much wear of space-time fabric"
|
||||
user << "\red You feel pain, as the rune disappears into a reality shift caused by too much wear on the fabric of space-time."
|
||||
if (istype(user, /mob/living))
|
||||
user.take_overall_damage(5, 0)
|
||||
del(src)
|
||||
@@ -29,7 +36,10 @@ var/list/sacrificed = list()
|
||||
user.visible_message("\red [user] disappears in a flash of red light!", \
|
||||
"\red You feel as your body gets dragged through the dimension of Nar-Sie!", \
|
||||
"\red You hear a sickening crunch and sloshing of viscera.")
|
||||
user.loc = allrunesloc[rand(1,index)]
|
||||
var/target = rand(1,index)
|
||||
user.loc = allrunesloc[target]
|
||||
if(grabbed)
|
||||
grabbed.loc = allrunesloc[target]
|
||||
return
|
||||
if(istype(src,/obj/effect/rune))
|
||||
return fizzle() //Use friggin manuals, Dorf, your list was of zero length.
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
var/obj/effect/bigDelivery/P = new /obj/effect/bigDelivery(get_turf(src.loc))
|
||||
P.wrapped = src
|
||||
src.close()
|
||||
P.waswelded = welded
|
||||
src.welded = 1
|
||||
src.loc = P
|
||||
O.amount -= 3
|
||||
@@ -185,13 +186,26 @@
|
||||
return
|
||||
|
||||
if(!src.open())
|
||||
user << "\blue It won't budge!"
|
||||
if(!lastbang)
|
||||
lastbang = 1
|
||||
for (var/mob/M in hearers(src, null))
|
||||
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
|
||||
spawn(30)
|
||||
lastbang = 0
|
||||
if(istype(src.loc,/obj/effect/bigDelivery) && lastbang == 0)
|
||||
var/obj/effect/bigDelivery/Pack = src.loc
|
||||
if(istype(Pack.loc,/turf) && Pack.waswelded == 0)
|
||||
for (var/mob/M in hearers(src.loc, null))
|
||||
M << text("<FONT size=[] color=#6D3F40>BANG, bang, rrrrrip!</FONT>", max(0, 5 - get_dist(src, M)))
|
||||
lastbang = 1
|
||||
sleep(10)
|
||||
src.welded = 0
|
||||
Pack.unwrap()
|
||||
src.open()
|
||||
spawn(30)
|
||||
lastbang = 0
|
||||
else if(!istype(src.loc,/obj/effect/bigDelivery))
|
||||
user << "\blue It won't budge!"
|
||||
if(!lastbang)
|
||||
lastbang = 1
|
||||
for (var/mob/M in hearers(src, null))
|
||||
M << text("<FONT size=[]>BANG, bang!</FONT>", max(0, 5 - get_dist(src, M)))
|
||||
spawn(30)
|
||||
lastbang = 0
|
||||
|
||||
/obj/structure/closet/Move()
|
||||
..()
|
||||
|
||||
@@ -81,6 +81,20 @@
|
||||
new /obj/item/weapon/reagent_containers/pill/kelotane( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/kelotane( src )
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/tramadol
|
||||
name = "Pill bottle (tramadol)"
|
||||
desc = "Contains painkiller pills."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/kelotane/New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
new /obj/item/weapon/reagent_containers/pill/tramadol( src )
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/antitox
|
||||
name = "Pill bottle (Anti-toxin)"
|
||||
desc = "Contains pills used to counter toxins."
|
||||
|
||||
@@ -1311,6 +1311,19 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
tramadol
|
||||
name = "Tramadol"
|
||||
id = "tramadol"
|
||||
description = "A simple, yet effective painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
|
||||
oxycodone
|
||||
name = "Oxycodone"
|
||||
id = "oxycodone"
|
||||
description = "An effective and very addictive painkiller."
|
||||
reagent_state = LIQUID
|
||||
color = "#C805DC"
|
||||
|
||||
impedrezene
|
||||
name = "Impedrezene"
|
||||
|
||||
@@ -70,6 +70,13 @@ datum
|
||||
required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1)
|
||||
result_amount = 3
|
||||
|
||||
tramadol
|
||||
name = "Tramadol"
|
||||
id = "tramadol"
|
||||
result = "tramadol"
|
||||
required_reagents = list("inaprovaline" = 1, "ethanol" = 1, "oxygen" = 1)
|
||||
result_amount = 3
|
||||
|
||||
//cyanide
|
||||
// name = "Cyanide"
|
||||
// id = "cyanide"
|
||||
|
||||
@@ -675,6 +675,21 @@
|
||||
R.my_atom = src
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/packageWrap))
|
||||
if(istype(src.loc,/obj/item/weapon/storage) || istype(src.loc,/obj/item/clothing/suit/storage/)) //Taking stuff out of storage duplicates it.
|
||||
user << "\blue Do not do this, it is broken as all hell. Take it out of the container first."
|
||||
return
|
||||
for(var/obj/item/T in user) //Lets remove it from their inventory
|
||||
if(T == src)
|
||||
user.remove_from_mob(T)
|
||||
break
|
||||
var/obj/item/weapon/packageWrap/O = W
|
||||
if (O.amount > 1)
|
||||
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(src.loc))
|
||||
P.wrapped = src
|
||||
|
||||
src.loc = P
|
||||
O.amount -= 1
|
||||
return
|
||||
attack_self(mob/user as mob)
|
||||
return
|
||||
@@ -2711,6 +2726,14 @@
|
||||
..()
|
||||
reagents.add_reagent("kelotane", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/tramadol
|
||||
name = "Tramadol pill"
|
||||
desc = "A simple painkiller."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("tramadol", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/inaprovaline
|
||||
name = "Inaprovaline pill"
|
||||
desc = "Used to stabilize patients."
|
||||
|
||||
@@ -8,8 +8,12 @@
|
||||
src.traumatic_shock -= 10
|
||||
if(reagents.has_reagent("inaprovaline"))
|
||||
src.traumatic_shock -= 25
|
||||
if(reagents.has_reagent("synaptizine"))
|
||||
src.traumatic_shock -= 100 // make synaptizine function as good painkiller
|
||||
if(reagents.has_reagent("tramadol"))
|
||||
src.traumatic_shock -= 80 // make synaptizine function as good painkiller
|
||||
if(reagents.has_reagent("oxycodone"))
|
||||
src.traumatic_shock -= 200 // make synaptizine function as good painkiller
|
||||
if(src.slurring)
|
||||
src.traumatic_shock -= 20
|
||||
|
||||
// broken or ripped off organs will add quite a bit of pain
|
||||
if(istype(src,/mob/living/carbon/human))
|
||||
@@ -19,7 +23,10 @@
|
||||
if(organ.destroyed || organ.open)
|
||||
src.traumatic_shock += 60
|
||||
else if(organ.broken)
|
||||
src.traumatic_shock += 40
|
||||
src.traumatic_shock += 30
|
||||
|
||||
if(src.traumatic_shock < 0)
|
||||
src.traumatic_shock = 0
|
||||
|
||||
return src.traumatic_shock
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
m_amt = 1850
|
||||
level = 2
|
||||
var/ptype = 0
|
||||
// 0=straight, 1=bent, 2=junction-j1, 3=junction-j2, 4=junction-y, 5=trunk
|
||||
// 0=straight, 1=bent, 2=junction-j1, 3=junction-j2, 4=junction-y, 5=trunk, 6=junction-j1s, 7=junction-j2s
|
||||
|
||||
var/dpdir = 0 // directions as disposalpipe
|
||||
var/base_state = "pipe-s"
|
||||
@@ -42,6 +42,12 @@
|
||||
if(5)
|
||||
base_state = "pipe-t"
|
||||
dpdir = dir
|
||||
if(6)
|
||||
base_state = "pipe-j1s"
|
||||
dpdir = dir | right | flip
|
||||
if(7)
|
||||
base_state = "pipe-j2s"
|
||||
dpdir = dir | left | flip
|
||||
|
||||
|
||||
icon_state = "con[base_state]"
|
||||
@@ -93,6 +99,8 @@
|
||||
return /obj/structure/disposalpipe/junction
|
||||
if(5)
|
||||
return /obj/structure/disposalpipe/trunk
|
||||
if(6,7)
|
||||
return /obj/structure/disposalpipe/sortjunction
|
||||
return
|
||||
|
||||
|
||||
@@ -142,6 +150,15 @@
|
||||
var/obj/structure/disposalpipe/P = new pipetype(src.loc)
|
||||
P.base_icon_state = base_state
|
||||
P.dir = dir
|
||||
if(ptype >= 6)
|
||||
var/obj/structure/disposalpipe/sortjunction/V = P
|
||||
V.posdir = dir
|
||||
if(ptype == 6)
|
||||
V.sortdir = turn(dir, -90)
|
||||
V.negdir = turn(dir, 180)
|
||||
else
|
||||
V.sortdir = turn(dir, 90)
|
||||
V.negdir = turn(dir, 180)
|
||||
P.dpdir = dpdir
|
||||
P.updateicon()
|
||||
del(src)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/obj/structure/disposalpipe/trunk/trunk = null // the attached pipe trunk
|
||||
var/flushing = 0 // true if flushing in progress
|
||||
var/timeleft = 0 //used to give a delay after the last item was put in before flushing
|
||||
var/islarge = 0 //If there is a crate, lets not add a second.
|
||||
|
||||
// create a new disposal
|
||||
// find the attached trunk (if present) and init gas resvr.
|
||||
@@ -112,41 +113,83 @@
|
||||
|
||||
// mouse drop another mob or self
|
||||
//
|
||||
MouseDrop_T(mob/target, mob/user)
|
||||
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
|
||||
MouseDrop_T(var/atom/movable/T, mob/user)
|
||||
if (istype(T,/mob))
|
||||
var/mob/target = T
|
||||
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
|
||||
return
|
||||
|
||||
if(src.islarge == 1)
|
||||
user << "They won't fit with that crate in there!"
|
||||
return
|
||||
|
||||
var/msg
|
||||
for (var/mob/V in viewers(usr))
|
||||
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
V.show_message("[usr] starts climbing into the disposal.", 3)
|
||||
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
if(target.anchored) return
|
||||
V.show_message("[usr] starts stuffing [target.name] into the disposal.", 3)
|
||||
if(!do_after(usr, 20))
|
||||
return
|
||||
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in // must be awake, not stunned or whatever
|
||||
msg = "[user.name] climbs into the [src]."
|
||||
user << "You climb into the [src]."
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
msg = "[user.name] stuffs [target.name] into the [src]!"
|
||||
user << "You stuff [target.name] into the [src]!"
|
||||
else
|
||||
return
|
||||
if (target.client)
|
||||
target.client.perspective = EYE_PERSPECTIVE
|
||||
target.client.eye = src
|
||||
target.loc = src
|
||||
|
||||
for (var/mob/C in viewers(src))
|
||||
if(C == user)
|
||||
continue
|
||||
C.show_message(msg, 3)
|
||||
|
||||
timeleft = 5
|
||||
update()
|
||||
return
|
||||
if(istype(T,/obj/effect/bigDelivery))
|
||||
if (T.anchored || get_dist(user, src) > 1 || get_dist(src,T) > 2 )
|
||||
return
|
||||
|
||||
if(src.islarge == 1)
|
||||
user << "[T] won't fit with that crate in there!"
|
||||
return
|
||||
|
||||
for(var/mob/M in viewers(src))
|
||||
if(M == user)
|
||||
user << "You start to shove \the [T] into the [src]."
|
||||
continue
|
||||
M.show_message("[user.name] looks like they're trying to place \the [T] into the [src].", 5)
|
||||
|
||||
if(!do_after(usr, 20))
|
||||
return
|
||||
|
||||
user << "Your back is starting to hurt!"
|
||||
sleep(5)
|
||||
if(prob(50))
|
||||
user << "No way can you get this thing in there."
|
||||
return
|
||||
|
||||
if(!do_after(usr, 20))
|
||||
return
|
||||
|
||||
T.loc = src
|
||||
src.islarge = 1
|
||||
for(var/mob/M in viewers(src))
|
||||
if(M == user)
|
||||
user << "You shove \the [T] into the [src]."
|
||||
continue
|
||||
M.show_message("[user.name] manages to stuff \the [T] into the [src]. Impressive!", 5)
|
||||
return
|
||||
|
||||
var/msg
|
||||
for (var/mob/V in viewers(usr))
|
||||
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
V.show_message("[usr] starts climbing into the disposal.", 3)
|
||||
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
if(target.anchored) return
|
||||
V.show_message("[usr] starts stuffing [target.name] into the disposal.", 3)
|
||||
if(!do_after(usr, 20))
|
||||
return
|
||||
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in
|
||||
// must be awake, not stunned or whatever
|
||||
msg = "[user.name] climbs into the [src]."
|
||||
user << "You climb into the [src]."
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
msg = "[user.name] stuffs [target.name] into the [src]!"
|
||||
user << "You stuff [target.name] into the [src]!"
|
||||
else
|
||||
return
|
||||
if (target.client)
|
||||
target.client.perspective = EYE_PERSPECTIVE
|
||||
target.client.eye = src
|
||||
target.loc = src
|
||||
|
||||
for (var/mob/C in viewers(src))
|
||||
if(C == user)
|
||||
continue
|
||||
C.show_message(msg, 3)
|
||||
|
||||
timeleft = 5
|
||||
update()
|
||||
return
|
||||
|
||||
// can breath normally in the disposal
|
||||
alter_health()
|
||||
@@ -364,6 +407,8 @@
|
||||
flush = 0
|
||||
if(mode == 2) // if was ready,
|
||||
mode = 1 // switch to charging
|
||||
if(islarge)
|
||||
islarge = 0
|
||||
update()
|
||||
return
|
||||
|
||||
@@ -517,10 +562,6 @@
|
||||
src.destinationTag = T.sortTag
|
||||
else if (!src.destinationTag)
|
||||
src.destinationTag = null
|
||||
else if (istype(AM, /mob)) //If there is a mob somewhere in there....
|
||||
if(prob(10))
|
||||
src.destinationTag = "Mail Office"
|
||||
|
||||
|
||||
// start the movement process
|
||||
// argument is the disposal unit the holder started in
|
||||
@@ -685,7 +726,7 @@
|
||||
M.weakened += 4
|
||||
M << "\red You're gonna remember that one in the morning!"
|
||||
M:UpdateDamageIcon()
|
||||
M:UpdateDamage()
|
||||
//M:UpdateDamage() //doesnt fucking exist if you arent a blob
|
||||
else
|
||||
M.bruteloss += 4
|
||||
if(prob(2))
|
||||
@@ -739,7 +780,7 @@
|
||||
H.active = 0
|
||||
H.loc = src
|
||||
return
|
||||
if(T.intact && istype(T,/turf/simulated/floor)) //intact floor, pop the tile
|
||||
if(istype(T,/turf/simulated/floor) && T.intact) //intact floor, pop the tile
|
||||
var/turf/simulated/floor/F = T
|
||||
//F.health = 100
|
||||
F.burnt = 1
|
||||
@@ -964,13 +1005,18 @@
|
||||
|
||||
desc = "An underfloor disposal pipe with a package sorting mechanism."
|
||||
icon_state = "pipe-j1s"
|
||||
var/list/sortType = list()
|
||||
var/list/backType = list()
|
||||
var/backsort = 0 //For sending disposal packets to upstream destinations.
|
||||
var/mailsort = 0
|
||||
var/posdir = 0
|
||||
var/negdir = 0
|
||||
var/sortdir = 0
|
||||
var
|
||||
list/sortType = list()
|
||||
list/backType = list()
|
||||
backsort = 0 //For sending disposal packets to upstream destinations.
|
||||
mailsort = 0
|
||||
posdir = 0
|
||||
negdir = 0
|
||||
sortdir = 0
|
||||
service = 0
|
||||
screen = 0
|
||||
icon_state_old = null
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -995,6 +1041,8 @@
|
||||
|
||||
nextdir(var/fromdir, var/sortTag, var/ismail)
|
||||
//var/flipdir = turn(fromdir, 180)
|
||||
if(service)
|
||||
return posdir //If it's being worked on, it isn't sorting.
|
||||
if(sortTag)
|
||||
for(var/i, i <= backType.len, i++)
|
||||
if(sortTag == src.backType[i])
|
||||
@@ -1037,6 +1085,75 @@
|
||||
|
||||
return P
|
||||
|
||||
attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(service)
|
||||
icon_state = icon_state_old
|
||||
service = 0
|
||||
user << "You close the service hatch on the sorter"
|
||||
else
|
||||
icon_state_old = icon_state
|
||||
icon_state += "s"
|
||||
service = 1
|
||||
user << "You open up the service hatch on the sorter"
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
if(service)
|
||||
interact(user)
|
||||
return
|
||||
|
||||
proc
|
||||
interact(var/mob/user)
|
||||
var/dat = "<TT><B>Sorting Mechanism</B><BR>"
|
||||
if (sortType.len == 0)
|
||||
dat += "<br>Currently Filtering: <A href='?src=\ref[src];choice=selectSort'>None</A><br>"
|
||||
else
|
||||
dat += "<br>Currently Filtering:"
|
||||
for(var/i = 1, i <= sortType.len, i++)
|
||||
dat += " <A href='?src=\ref[src];choice=selectSort'>[sortType[i]]</A>,"
|
||||
dat += "<br>"
|
||||
if (!backsort)
|
||||
dat += "Backwards Sorting Disabled <A href='?src=\ref[src];choice=toggleBack'>Toggle</A><br>"
|
||||
else if(backType.len == 0 && backsort)
|
||||
dat += "Backwards Sorting Active. Sorting: <A href='?src=\ref[src];choice=selectBack'>None.</A> <A href='?src=\ref[src];choice=toggleBack'>Toggle</A><br>"
|
||||
else
|
||||
dat += "Backwards Sorting Active. Sorting:"
|
||||
for(var/i = 1, i <= backType.len, i++)
|
||||
dat += " <A href='?src=\ref[src];choice=selectBack'>[backType[i]]</A>,"
|
||||
dat += " <A href='?src=\ref[src];choice=toggleBack'>Toggle</A><br>"
|
||||
user << browse(dat, "window=sortScreen")
|
||||
onclose(user, "sortScreen")
|
||||
return
|
||||
|
||||
Topic(href, href_list)
|
||||
src.add_fingerprint(usr)
|
||||
usr.machine = src
|
||||
switch(href_list["choice"])
|
||||
if("toggleBack")
|
||||
backsort = !backsort
|
||||
if("selectBack")
|
||||
var/list/names = sortList(backType)
|
||||
var/variable = input("Which tag?","Tag") as null|anything in names + "(ADD TAG)"
|
||||
if(!variable)
|
||||
return
|
||||
if(variable == "(ADD TAG)")
|
||||
var/var_value = input("Enter new tag:","Tag") as text|null
|
||||
if(!var_value) return
|
||||
backType |= var_value
|
||||
else
|
||||
backType -= variable
|
||||
if("selectSort")
|
||||
var/list/names = sortList(sortType)
|
||||
var/variable = input("Which tag?","Tag") as null|anything in names + "(ADD TAG)"
|
||||
if(!variable)
|
||||
return
|
||||
if(variable == "(ADD TAG)")
|
||||
var/var_value = input("Enter new tag:","Tag") as text|null
|
||||
if(!var_value) return
|
||||
sortType |= var_value
|
||||
else
|
||||
sortType -= variable
|
||||
updateUsrDialog()
|
||||
|
||||
//a trunk joining to a disposal bin or outlet on the same turf
|
||||
/obj/structure/disposalpipe/trunk
|
||||
|
||||
@@ -8,16 +8,21 @@
|
||||
var/sortTag = null
|
||||
flags = FPRINT
|
||||
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
||||
var/examtext = null
|
||||
var/examtext = null
|
||||
var/label_x = 0
|
||||
var/tag_x = 0
|
||||
var/tag_x = 0
|
||||
var/waswelded = 0
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
return unwrap()
|
||||
|
||||
proc/unwrap()
|
||||
if (src.wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
|
||||
src.wrapped.loc = (get_turf(src.loc))
|
||||
if (istype(src.wrapped,/obj/structure/closet))
|
||||
var/obj/structure/closet/O = src.wrapped
|
||||
O.welded = 0
|
||||
O.welded = waswelded
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -235,7 +240,6 @@
|
||||
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
user.machine = src
|
||||
interact(user)
|
||||
|
||||
proc/interact(mob/user as mob)
|
||||
@@ -244,6 +248,7 @@
|
||||
dat += "<br>Current Selection: None<br>"
|
||||
else
|
||||
dat += "<br>Current Selection: [currTag]<br><br>"
|
||||
dat += "<A href='?src=\ref[src];nextTag=[locationList.len + 1]'>Set Custom Destination</A><br><br>"
|
||||
for (var/i = 1, i <= locationList.len, i++)
|
||||
if(spaceList[i])
|
||||
dat += "<br>"
|
||||
@@ -251,14 +256,19 @@
|
||||
dat += "<br>"
|
||||
user << browse(dat, "window=destTagScreen")
|
||||
onclose(user, "destTagScreen")
|
||||
usr.machine = null
|
||||
return
|
||||
|
||||
Topic(href, href_list)
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["nextTag"])
|
||||
var/n = text2num(href_list["nextTag"])
|
||||
src.currTag = locationList[n]
|
||||
if(n > locationList.len)
|
||||
var/t1 = input("Which tag?","Tag") as null|text
|
||||
if(t1)
|
||||
src.currTag = t1
|
||||
else
|
||||
src.currTag = locationList[n]
|
||||
if(istype(loc,/mob))
|
||||
interact(loc)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user