mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1057 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/photo_album/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
if (src.contents.len >= 7)
|
||||
return
|
||||
|
||||
@@ -1468,6 +1468,7 @@ proc/move_mining_shuttle()
|
||||
icon_state = "ore"
|
||||
|
||||
/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/satchel))
|
||||
var/obj/item/weapon/satchel/S = W
|
||||
if (S.mode == 1)
|
||||
@@ -1554,6 +1555,7 @@ proc/move_mining_shuttle()
|
||||
return
|
||||
|
||||
/obj/item/weapon/satchel/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/ore))
|
||||
var/obj/item/weapon/ore/O = W
|
||||
src.contents += O;
|
||||
@@ -2637,6 +2639,7 @@ proc/move_mining_shuttle()
|
||||
user << browse("[dat]", "window=moneybag")
|
||||
|
||||
/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/coin))
|
||||
var/obj/item/weapon/coin/C = W
|
||||
user << "\blue You add the [C.name] into the bag."
|
||||
|
||||
@@ -300,6 +300,7 @@
|
||||
var/obj/disposalholder/H = new() // virtual holder object which actually
|
||||
// travels through the pipes.
|
||||
|
||||
|
||||
H.init(src) // copy the contents of disposer to holder
|
||||
|
||||
air_contents = new() // new empty gas resv.
|
||||
@@ -358,6 +359,7 @@
|
||||
dir = 0
|
||||
var/count = 1000 //*** can travel 1000 steps before going inactive (in case of loops)
|
||||
var/has_fat_guy = 0 // true if contains a fat person
|
||||
var/destinationTag = 0 // changes if contains a delivery container
|
||||
|
||||
|
||||
// initialize a holder from the contents of a disposal unit
|
||||
@@ -373,6 +375,13 @@
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(H.mutations & 32) // is a human and fat?
|
||||
has_fat_guy = 1 // set flag on holder
|
||||
if(istype(AM, /obj/bigDelivery))
|
||||
var/obj/bigDelivery/T = AM
|
||||
src.destinationTag = T.sortTag
|
||||
if(istype(AM, /obj/item/smallDelivery))
|
||||
var/obj/item/smallDelivery/T = AM
|
||||
src.destinationTag = T.sortTag
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -504,7 +513,7 @@
|
||||
..()
|
||||
return
|
||||
|
||||
// otherswise, do normal expel from turf
|
||||
// otherwise, do normal expel from turf
|
||||
expel(H, T, 0)
|
||||
..()
|
||||
|
||||
@@ -640,7 +649,7 @@
|
||||
del(H)
|
||||
return
|
||||
|
||||
// otherswise, do normal expel from turf
|
||||
// otherwise, do normal expel from turf
|
||||
expel(H, T, 0)
|
||||
|
||||
spawn(2) // delete pipe after 2 ticks to ensure expel proc finished
|
||||
@@ -790,6 +799,69 @@
|
||||
else
|
||||
return mask & (~setbit)
|
||||
|
||||
//a three-way junction that sorts objects
|
||||
/obj/disposalpipe/sortjunction
|
||||
|
||||
desc = "An underfloor disposal pipe with a package sorting mechanism."
|
||||
icon_state = "pipe-j1s"
|
||||
var/sortType = 0
|
||||
var/posdir = 0
|
||||
var/negdir = 0
|
||||
var/sortdir = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
posdir = dir
|
||||
if(icon_state == "pipe-j1s")
|
||||
sortdir = turn(posdir, -90)
|
||||
negdir = turn(posdir, 180)
|
||||
else
|
||||
icon_state = "pipe-j2s"
|
||||
sortdir = turn(posdir, 90)
|
||||
negdir = turn(posdir, 180)
|
||||
dpdir = sortdir | posdir | negdir
|
||||
|
||||
update()
|
||||
return
|
||||
|
||||
|
||||
// next direction to move
|
||||
// if coming in from negdir, then next is primary dir or sortdir
|
||||
// if coming in from posdir, then flip around and go back to posdir
|
||||
// if coming in from sortdir, go to posdir
|
||||
|
||||
nextdir(var/fromdir, var/sortTag)
|
||||
//var/flipdir = turn(fromdir, 180)
|
||||
if(fromdir != sortdir) // probably came from the negdir
|
||||
|
||||
if(src.sortType == sortTag) //if destination matches filtered type...
|
||||
return sortdir // exit through sortdirection
|
||||
else
|
||||
return posdir
|
||||
else // came from sortdir
|
||||
// so go with the flow to positive direction
|
||||
return posdir
|
||||
|
||||
transfer(var/obj/disposalholder/H)
|
||||
var/nextdir = nextdir(H.dir, H.destinationTag)
|
||||
H.dir = nextdir
|
||||
var/turf/T = H.nextloc()
|
||||
var/obj/disposalpipe/P = H.findpipe(T)
|
||||
|
||||
if(P)
|
||||
// find other holder in next loc, if inactive merge it with current
|
||||
var/obj/disposalholder/H2 = locate() in P
|
||||
if(H2 && !H2.active)
|
||||
H.merge(H2)
|
||||
|
||||
H.loc = P
|
||||
else // if wasn't a pipe, then set loc to turf
|
||||
H.loc = T
|
||||
return null
|
||||
|
||||
return P
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -226,6 +226,7 @@
|
||||
|
||||
|
||||
/obj/item/scrap/attackby(obj/item/I, mob/user)
|
||||
..()
|
||||
if(istype(I, /obj/item/scrap))
|
||||
var/obj/item/scrap/S = I
|
||||
if( (S.total()+src.total() ) > MAX_SCRAP )
|
||||
|
||||
207
code/WorkInProgress/recycling/sortingmachinery.dm
Normal file
207
code/WorkInProgress/recycling/sortingmachinery.dm
Normal file
@@ -0,0 +1,207 @@
|
||||
/obj/bigDelivery
|
||||
desc = "A big wrapped package."
|
||||
name = "large parcel"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "deliverycrate"
|
||||
var/obj/wrapped = null
|
||||
density = 1
|
||||
var/sortTag = 0
|
||||
flags = FPRINT
|
||||
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
src.wrapped.loc = (get_turf(src.loc))
|
||||
if (istype(src.wrapped,/obj/closet))
|
||||
var/obj/closet/O = src.wrapped
|
||||
O.welded = 0
|
||||
del(src)
|
||||
return
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/destTagger))
|
||||
var/obj/item/device/destTagger/O = W
|
||||
user << "\blue *TAGGED*"
|
||||
src.sortTag = O.currTag
|
||||
return
|
||||
|
||||
/obj/item/smallDelivery
|
||||
desc = "A small wrapped package."
|
||||
name = "small parcel"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "deliverycrateSmall"
|
||||
var/obj/item/wrapped = null
|
||||
var/sortTag = 0
|
||||
flags = FPRINT
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
src.wrapped.loc = (get_turf(src.loc))
|
||||
|
||||
del(src)
|
||||
return
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/destTagger))
|
||||
var/obj/item/device/destTagger/O = W
|
||||
user << "\blue *TAGGED*"
|
||||
src.sortTag = O.currTag
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/packageWrap
|
||||
name = "package wrapper"
|
||||
icon = 'items.dmi'
|
||||
icon_state = "deliveryPaper"
|
||||
var/amount = 25.0
|
||||
|
||||
|
||||
attack(target as obj, mob/user as mob)
|
||||
if (istype(target, /obj/item))
|
||||
var/obj/item/O = target
|
||||
if (src.amount > 1)
|
||||
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc))
|
||||
P.wrapped = O
|
||||
O.loc = P
|
||||
src.amount -= 1
|
||||
else if (istype(target, /obj/crate))
|
||||
var/obj/crate/O = target
|
||||
if (src.amount > 3)
|
||||
var/obj/bigDelivery/P = new /obj/bigDelivery(get_turf(O.loc))
|
||||
P.wrapped = O
|
||||
O.loc = P
|
||||
src.amount -= 3
|
||||
else
|
||||
user << "\blue You need more paper."
|
||||
else if (istype (target, /obj/closet))
|
||||
var/obj/closet/O = target
|
||||
if (src.amount > 3)
|
||||
var/obj/bigDelivery/P = new /obj/bigDelivery(get_turf(O.loc))
|
||||
P.wrapped = O
|
||||
O.close()
|
||||
O.welded = 1
|
||||
O.loc = P
|
||||
src.amount -= 3
|
||||
|
||||
else
|
||||
user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!"
|
||||
if (src.amount <= 0)
|
||||
new /obj/item/weapon/c_tube( src.loc )
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/device/destTagger
|
||||
name = "destination tagger"
|
||||
desc = "Used to set the destination of properly wrapped packages."
|
||||
icon_state = "forensic0"
|
||||
var/currTag = 0
|
||||
var/list/locationList = list("Waste Disposal", "Head of Personnel's Quarters", "Research Director's Office",
|
||||
"Dormitory Toilets", "Locker Room", "Locker Toilets", "Fitness Room", "Kitchen", "Bar", "Bartender's workspace",
|
||||
"Theatre", "Library", "Chapel Office", "Assembly Line", "Medbay", "Chemistry", "Surgery", "Exam Room",
|
||||
"Security", "Head of Security", "Cargo Bay", "Quartermaster's Office", "Janitors Closet", "Hydroponics",
|
||||
"Toxin Lab")
|
||||
w_class = 1
|
||||
item_state = "electronic"
|
||||
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
var/dat = "<TT><B>TagMaster 2.2</B><BR><BR>"
|
||||
if (src.currTag == 0)
|
||||
dat += "<br>Current Selection: None<br>"
|
||||
else
|
||||
dat += "<br>Current Selection: [locationList[currTag]]<br><br>"
|
||||
for (var/i = 1, i <= locationList.len, i++)
|
||||
dat += "<A href='?src=\ref[src];nextTag=[i]'>[locationList[i]]</A>"
|
||||
if (i%4==0)
|
||||
dat += "<br>"
|
||||
else
|
||||
dat += " "
|
||||
user << browse(dat, "window=destTagScreen")
|
||||
onclose(user, "destTagScreen")
|
||||
return
|
||||
|
||||
Topic(href, href_list)
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["nextTag"])
|
||||
var/n = text2num(href_list["nextTag"])
|
||||
src.currTag = n
|
||||
src.updateUsrDialog()
|
||||
|
||||
|
||||
/*
|
||||
attack(target as obj, mob/user as mob)
|
||||
user << "/blue *TAGGED*"
|
||||
target.sortTag = src.currTag
|
||||
|
||||
attack(target as obj, mob/user as mob)
|
||||
user << "/blue You can only tag properly wrapped delivery packages!"
|
||||
*/
|
||||
attack(target as obj, mob/user as mob)
|
||||
if (istype(target, /obj/bigDelivery))
|
||||
user << "\blue *TAGGED*"
|
||||
var/obj/bigDelivery/O = target
|
||||
O.sortTag = src.currTag
|
||||
else if (istype(target, /obj/item/smallDelivery))
|
||||
user << "\blue *TAGGED*"
|
||||
var/obj/item/smallDelivery/O = target
|
||||
O.sortTag = src.currTag
|
||||
else
|
||||
user << "\blue You can only tag properly wrapped delivery packages!"
|
||||
return
|
||||
|
||||
/obj/machinery/disposal/deliveryChute
|
||||
name = "Delivery chute"
|
||||
desc = "A chute for big and small packages alike!"
|
||||
density = 0
|
||||
icon_state = "intake"
|
||||
|
||||
interact()
|
||||
return
|
||||
|
||||
HasEntered(AM as mob|obj) //Go straight into the chute
|
||||
if (istype(AM, /obj))
|
||||
var/obj/O = AM
|
||||
O.loc = src
|
||||
else if (istype(AM, /mob))
|
||||
var/mob/M = AM
|
||||
M.loc = src
|
||||
src.flush()
|
||||
|
||||
flush()
|
||||
flushing = 1
|
||||
flick("intake-closing", src)
|
||||
var/deliveryCheck = 0
|
||||
var/obj/disposalholder/H = new() // virtual holder object which actually
|
||||
// travels through the pipes.
|
||||
for(var/obj/bigDelivery/O in src)
|
||||
deliveryCheck = 1
|
||||
if(O.sortTag == 0)
|
||||
O.sortTag = 1
|
||||
for(var/obj/item/smallDelivery/O in src)
|
||||
deliveryCheck = 1
|
||||
if (O.sortTag == 0)
|
||||
O.sortTag = 1
|
||||
if(deliveryCheck == 0)
|
||||
H.destinationTag = 1
|
||||
|
||||
|
||||
H.init(src) // copy the contents of disposer to holder
|
||||
|
||||
air_contents = new() // new empty gas resv.
|
||||
|
||||
sleep(10)
|
||||
playsound(src, 'disposalflush.ogg', 50, 0, 0)
|
||||
sleep(5) // wait for animation to finish
|
||||
|
||||
|
||||
H.start(src) // start the holder processing movement
|
||||
flushing = 0
|
||||
// now reset disposal state
|
||||
flush = 0
|
||||
if(mode == 2) // if was ready,
|
||||
mode = 1 // switch to charging
|
||||
update()
|
||||
return
|
||||
Reference in New Issue
Block a user