git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1057 316c924e-a436-60f5-8080-3fe189b3f50e

This commit is contained in:
Atso.Sariola@gmail.com
2011-02-18 03:23:40 +00:00
parent 83dc883551
commit c85f20f54f
63 changed files with 10634 additions and 25 deletions

View File

@@ -32,6 +32,7 @@
return return
/obj/item/weapon/storage/photo_album/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/photo_album/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (src.contents.len >= 7) if (src.contents.len >= 7)
return return

View File

@@ -1468,6 +1468,7 @@ proc/move_mining_shuttle()
icon_state = "ore" icon_state = "ore"
/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/satchel)) if (istype(W, /obj/item/weapon/satchel))
var/obj/item/weapon/satchel/S = W var/obj/item/weapon/satchel/S = W
if (S.mode == 1) if (S.mode == 1)
@@ -1554,6 +1555,7 @@ proc/move_mining_shuttle()
return return
/obj/item/weapon/satchel/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/satchel/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/ore)) if (istype(W, /obj/item/weapon/ore))
var/obj/item/weapon/ore/O = W var/obj/item/weapon/ore/O = W
src.contents += O; src.contents += O;
@@ -2637,6 +2639,7 @@ proc/move_mining_shuttle()
user << browse("[dat]", "window=moneybag") user << browse("[dat]", "window=moneybag")
/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/coin)) if (istype(W, /obj/item/weapon/coin))
var/obj/item/weapon/coin/C = W var/obj/item/weapon/coin/C = W
user << "\blue You add the [C.name] into the bag." user << "\blue You add the [C.name] into the bag."

View File

@@ -300,6 +300,7 @@
var/obj/disposalholder/H = new() // virtual holder object which actually var/obj/disposalholder/H = new() // virtual holder object which actually
// travels through the pipes. // travels through the pipes.
H.init(src) // copy the contents of disposer to holder H.init(src) // copy the contents of disposer to holder
air_contents = new() // new empty gas resv. air_contents = new() // new empty gas resv.
@@ -358,6 +359,7 @@
dir = 0 dir = 0
var/count = 1000 //*** can travel 1000 steps before going inactive (in case of loops) 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/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 // initialize a holder from the contents of a disposal unit
@@ -373,6 +375,13 @@
var/mob/living/carbon/human/H = AM var/mob/living/carbon/human/H = AM
if(H.mutations & 32) // is a human and fat? if(H.mutations & 32) // is a human and fat?
has_fat_guy = 1 // set flag on holder 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 return
// otherswise, do normal expel from turf // otherwise, do normal expel from turf
expel(H, T, 0) expel(H, T, 0)
..() ..()
@@ -640,7 +649,7 @@
del(H) del(H)
return return
// otherswise, do normal expel from turf // otherwise, do normal expel from turf
expel(H, T, 0) expel(H, T, 0)
spawn(2) // delete pipe after 2 ticks to ensure expel proc finished spawn(2) // delete pipe after 2 ticks to ensure expel proc finished
@@ -790,6 +799,69 @@
else else
return mask & (~setbit) 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

View File

@@ -226,6 +226,7 @@
/obj/item/scrap/attackby(obj/item/I, mob/user) /obj/item/scrap/attackby(obj/item/I, mob/user)
..()
if(istype(I, /obj/item/scrap)) if(istype(I, /obj/item/scrap))
var/obj/item/scrap/S = I var/obj/item/scrap/S = I
if( (S.total()+src.total() ) > MAX_SCRAP ) if( (S.total()+src.total() ) > MAX_SCRAP )

View 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

View File

@@ -441,6 +441,10 @@ proc/process_ghost_teleport_locs()
name = "Atmospherics" name = "Atmospherics"
icon_state = "green" icon_state = "green"
/area/maintenance/incinerator
name = "Incinerator"
icon_state = "disposal"
/area/maintenance/disposal /area/maintenance/disposal
name = "Waste Disposal" name = "Waste Disposal"
icon_state = "disposal" icon_state = "disposal"
@@ -757,7 +761,7 @@ proc/process_ghost_teleport_locs()
///////////WORK IN PROGRESS////////// ///////////WORK IN PROGRESS//////////
/area/quartermaster/sorting /area/quartermaster/sorting
name = "Construction Area" name = "Delivery Office"
icon_state = "quartstorage" icon_state = "quartstorage"
////////////WORK IN PROGRESS////////// ////////////WORK IN PROGRESS//////////

View File

@@ -102,6 +102,7 @@ var
wardenMax = 1 wardenMax = 1
cmoMax = 1 cmoMax = 1
mimeMax = 1 mimeMax = 1
sorterMax = 2
list/bombers = list( ) list/bombers = list( )
list/admin_log = list ( ) list/admin_log = list ( )

View File

@@ -469,6 +469,7 @@
src.pixel_y = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5)
/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if (istype(O, /obj/item/device/analyzer/plant_analyzer)) if (istype(O, /obj/item/device/analyzer/plant_analyzer))
user << "This is a \blue [name]" user << "This is a \blue [name]"
switch(plant_type) switch(plant_type)
@@ -492,6 +493,7 @@
return return
/obj/item/weapon/grown/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/item/weapon/grown/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if (istype(O, /obj/item/device/analyzer/plant_analyzer)) if (istype(O, /obj/item/device/analyzer/plant_analyzer))
user << "This is a \blue [name]" user << "This is a \blue [name]"
switch(plant_type) switch(plant_type)

View File

@@ -41,6 +41,7 @@
src.mustard_gas.set_up(5, 0, usr.loc) src.mustard_gas.set_up(5, 0, usr.loc)
/obj/item/weapon/smokebomb/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/smokebomb/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/screwdriver)) if (istype(W, /obj/item/weapon/screwdriver))
if (src.det_time == 60) if (src.det_time == 60)
src.det_time = 20 src.det_time = 20
@@ -109,6 +110,7 @@
return return
/obj/item/weapon/mustardbomb/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/mustardbomb/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/screwdriver)) if (istype(W, /obj/item/weapon/screwdriver))
if (src.det_time == 80) if (src.det_time == 80)
src.det_time = 40 src.det_time = 40
@@ -208,6 +210,7 @@
item_state = "syringe_kit" item_state = "syringe_kit"
/obj/item/weapon/storage/trashcan/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/trashcan/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (src.contents.len >= 7) if (src.contents.len >= 7)
user << "The trashcan is full!" user << "The trashcan is full!"

View File

@@ -162,6 +162,8 @@
return list(access_robotics, access_tech_storage, access_maint_tunnels) return list(access_robotics, access_tech_storage, access_maint_tunnels)
if("Cargo Technician") if("Cargo Technician")
return list(access_maint_tunnels, access_cargo, access_cargo_bot) return list(access_maint_tunnels, access_cargo, access_cargo_bot)
if("Mail Sorter")
return list(access_maint_tunnels, access_mailsorting)
if("Shaft Miner") if("Shaft Miner")
return list(access_maint_tunnels, access_mining) return list(access_maint_tunnels, access_mining)
if("Quartermaster") if("Quartermaster")
@@ -335,5 +337,5 @@
/proc/get_all_jobs() /proc/get_all_jobs()
return list("Assistant", "Station Engineer", "Shaft Miner", "Detective", "Medical Doctor", "Captain", "Security Officer", "Warden", return list("Assistant", "Station Engineer", "Shaft Miner", "Detective", "Medical Doctor", "Captain", "Security Officer", "Warden",
"Geneticist", "Scientist", "Head of Security", "Head of Personnel", "Atmospheric Technician", "Geneticist", "Scientist", "Head of Security", "Head of Personnel", "Atmospheric Technician",
"Chaplain", "Barman", "Chemist", "Janitor", "Clown", "Mime", "Chef", "Roboticist", "Quartermaster", "Chaplain", "Barman", "Chemist", "Janitor", "Clown", "Mime", "Chef", "Roboticist", "Quartermaster", "Mail Sorter",
"Chief Engineer", "Research Director", "Botanist", "Librarian", "Lawyer", "Virologist", "Cargo Technician", "Chief Medical Officer") "Chief Engineer", "Research Director", "Botanist", "Librarian", "Lawyer", "Virologist", "Cargo Technician", "Chief Medical Officer")

View File

@@ -563,6 +563,13 @@
src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform) src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform)
src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt) src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt)
if ("Mail Sorter")
src.equip_if_possible(new /obj/item/device/radio/headset/headset_cargo(src), slot_ears)
src.equip_if_possible(new /obj/item/clothing/gloves/black(src), slot_gloves)
src.equip_if_possible(new /obj/item/clothing/shoes/black(src), slot_shoes)
src.equip_if_possible(new /obj/item/clothing/under/rank/cargo(src), slot_w_uniform)
src.equip_if_possible(new /obj/item/device/pda/quartermaster(src), slot_belt)
if ("Chief Engineer") if ("Chief Engineer")
src.equip_if_possible(new /obj/item/device/radio/headset/heads/ce (src), slot_ears) src.equip_if_possible(new /obj/item/device/radio/headset/heads/ce (src), slot_ears)
src.equip_if_possible(new /obj/item/device/pda/heads(src), slot_belt) src.equip_if_possible(new /obj/item/device/pda/heads(src), slot_belt)

View File

@@ -23,6 +23,7 @@ var/list/occupations = list(
"Chemist", "Chemist", "Chemist", "Chemist",
"Quartermaster", "Quartermaster",
"Cargo Technician","Cargo Technician", "Cargo Technician","Cargo Technician",
"Mail Sorter", "Mail Sorter",
"Botanist", "Botanist", "Botanist", "Botanist",
"Librarian", "Librarian",
"Lawyer", "Lawyer",

View File

@@ -37,7 +37,7 @@
var/oldloc = null var/oldloc = null
req_access = list(access_janitor) req_access = list(access_janitor)
var/path[] = new() var/path[] = new()
/obj/machinery/bot/cleanbot/New() /obj/machinery/bot/cleanbot/New()
..() ..()
src.get_targets() src.get_targets()
@@ -248,6 +248,7 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
return return
/obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob) /obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm)) if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot
if(user.r_hand == src || user.l_hand == src) if(user.r_hand == src || user.l_hand == src)

View File

@@ -788,6 +788,7 @@ Auto Patrol: []"},
/obj/item/weapon/ed209_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/ed209_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (((istype(W, /obj/item/robot_parts/l_leg)) || (istype(W, /obj/item/robot_parts/r_leg))) && (src.build_step == 0 || src.build_step == 1)) if (((istype(W, /obj/item/robot_parts/l_leg)) || (istype(W, /obj/item/robot_parts/r_leg))) && (src.build_step == 0 || src.build_step == 1))
src.build_step++ src.build_step++
user << "You add the robot leg to [src]!" user << "You add the robot leg to [src]!"

View File

@@ -360,7 +360,7 @@
if (amount) if (amount)
new /obj/item/stack/tile(Tsec) // only one tile, yes new /obj/item/stack/tile(Tsec) // only one tile, yes
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(3, 1, src) s.set_up(3, 1, src)
s.start() s.start()
@@ -369,6 +369,7 @@
/obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/stack/tile/T, mob/user as mob) /obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/stack/tile/T, mob/user as mob)
..()
if(!istype(T, /obj/item/stack/tile)) if(!istype(T, /obj/item/stack/tile))
..() ..()
return return
@@ -391,6 +392,7 @@
del(src) del(src)
/obj/item/weapon/toolbox_tiles/attackby(var/obj/item/W, mob/user as mob) /obj/item/weapon/toolbox_tiles/attackby(var/obj/item/W, mob/user as mob)
..()
if(istype(W, /obj/item/device/prox_sensor)) if(istype(W, /obj/item/device/prox_sensor))
var/obj/item/weapon/toolbox_tiles_sensor/B = new /obj/item/weapon/toolbox_tiles_sensor var/obj/item/weapon/toolbox_tiles_sensor/B = new /obj/item/weapon/toolbox_tiles_sensor
B.loc = user B.loc = user
@@ -416,6 +418,7 @@
src.created_name = t src.created_name = t
/obj/item/weapon/toolbox_tiles_sensor/attackby(var/obj/item/W, mob/user as mob) /obj/item/weapon/toolbox_tiles_sensor/attackby(var/obj/item/W, mob/user as mob)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm)) if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
var/obj/machinery/bot/floorbot/A = new /obj/machinery/bot/floorbot var/obj/machinery/bot/floorbot/A = new /obj/machinery/bot/floorbot
if(user.r_hand == src || user.l_hand == src) if(user.r_hand == src || user.l_hand == src)

View File

@@ -527,6 +527,7 @@
*/ */
/obj/item/weapon/storage/firstaid/attackby(var/obj/item/robot_parts/S, mob/user as mob) /obj/item/weapon/storage/firstaid/attackby(var/obj/item/robot_parts/S, mob/user as mob)
..()
if ((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm))) if ((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm)))
if (src.contents.len >= 7) if (src.contents.len >= 7)
return return
@@ -564,6 +565,7 @@
del(src) del(src)
/obj/item/weapon/firstaid_arm_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/firstaid_arm_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/device/healthanalyzer)) && (!src.build_step)) if ((istype(W, /obj/item/device/healthanalyzer)) && (!src.build_step))
src.build_step++ src.build_step++
user << "You add the health sensor to [src]!" user << "You add the health sensor to [src]!"

View File

@@ -686,7 +686,7 @@
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(3, 1, src) s.set_up(3, 1, src)
s.start() s.start()
new /obj/decal/cleanable/oil(src.loc) new /obj/decal/cleanable/oil(src.loc)
del(src) del(src)
@@ -699,6 +699,7 @@
//Secbot Construction //Secbot Construction
/obj/item/clothing/head/helmet/attackby(var/obj/item/device/radio/signaler/S, mob/user as mob) /obj/item/clothing/head/helmet/attackby(var/obj/item/device/radio/signaler/S, mob/user as mob)
..()
if (!istype(S, /obj/item/device/radio/signaler)) if (!istype(S, /obj/item/device/radio/signaler))
..() ..()
return return
@@ -724,6 +725,7 @@
/obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step)) if ((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step))
if(W:remove_fuel(1,user)) if(W:remove_fuel(1,user))
src.build_step++ src.build_step++

View File

@@ -41,7 +41,7 @@ Buildable meters
is_bent = 1 is_bent = 1
if (istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction)) if (istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction))
src.pipe_type = PIPE_JUNCTION src.pipe_type = PIPE_JUNCTION
else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging)) else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging))
src.pipe_type = PIPE_HE_STRAIGHT + is_bent src.pipe_type = PIPE_HE_STRAIGHT + is_bent
else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/insulated)) else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/insulated))
src.pipe_type = PIPE_INSULATED_STRAIGHT + is_bent src.pipe_type = PIPE_INSULATED_STRAIGHT + is_bent
@@ -199,6 +199,7 @@ Buildable meters
return rotate() return rotate()
/obj/item/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) /obj/item/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
..()
//* //*
if (!istype(W, /obj/item/weapon/wrench)) if (!istype(W, /obj/item/weapon/wrench))
return ..() return ..()
@@ -421,6 +422,7 @@ Buildable meters
w_class = 4 w_class = 4
/obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) /obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
..()
if (!istype(W, /obj/item/weapon/wrench)) if (!istype(W, /obj/item/weapon/wrench))
return ..() return ..()

View File

@@ -137,7 +137,16 @@
del(src) del(src)
/obj/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/closet/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (src.opened) if (istype(W, /obj/item/weapon/packageWrap))
var/obj/item/weapon/packageWrap/O = W
if (O.amount > 3)
var/obj/bigDelivery/P = new /obj/bigDelivery(get_turf(src.loc))
P.wrapped = src
src.close()
src.welded = 1
src.loc = P
O.amount -= 3
else if (src.opened)
if (istype(W, /obj/item/weapon/grab)) if (istype(W, /obj/item/weapon/grab))
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet

View File

@@ -612,6 +612,7 @@
/obj/item/device/pda/attackby(obj/item/weapon/C as obj, mob/user as mob) /obj/item/device/pda/attackby(obj/item/weapon/C as obj, mob/user as mob)
..()
if (istype(C, /obj/item/weapon/cartridge) && isnull(src.cartridge)) if (istype(C, /obj/item/weapon/cartridge) && isnull(src.cartridge))
user.drop_item() user.drop_item()
C.loc = src C.loc = src

View File

@@ -1,5 +1,6 @@
/obj/item/device/igniter/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/igniter/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/device/radio/signaler) && !( src.status ))) if ((istype(W, /obj/item/device/radio/signaler) && !( src.status )))
var/obj/item/device/radio/signaler/S = W var/obj/item/device/radio/signaler/S = W
if (!( S.b_stat )) if (!( S.b_stat ))

View File

@@ -111,6 +111,7 @@
return return
/obj/item/device/infra/attackby(obj/item/device/radio/signaler/S as obj, mob/user as mob) /obj/item/device/infra/attackby(obj/item/device/radio/signaler/S as obj, mob/user as mob)
..()
if ((!( istype(S, /obj/item/device/radio/signaler) ) || !( S.b_stat ))) if ((!( istype(S, /obj/item/device/radio/signaler) ) || !( S.b_stat )))
return return
var/obj/item/assembly/rad_infra/R = new /obj/item/assembly/rad_infra( user ) var/obj/item/assembly/rad_infra/R = new /obj/item/assembly/rad_infra( user )

View File

@@ -68,6 +68,7 @@
return return
/obj/item/device/prox_sensor/attackby(obj/item/device/radio/signaler/S as obj, mob/user as mob) /obj/item/device/prox_sensor/attackby(obj/item/device/radio/signaler/S as obj, mob/user as mob)
..()
if ((!( istype(S, /obj/item/device/radio/signaler) ) || !( S.b_stat ))) if ((!( istype(S, /obj/item/device/radio/signaler) ) || !( S.b_stat )))
return return
var/obj/item/assembly/rad_prox/R = new /obj/item/assembly/rad_prox( user ) var/obj/item/assembly/rad_prox/R = new /obj/item/assembly/rad_prox( user )

View File

@@ -49,6 +49,7 @@ PLANT ANALYZER
M.invisibility = 2 M.invisibility = 2
/obj/item/device/detective_scanner/attackby(obj/item/weapon/f_card/W as obj, mob/user as mob) /obj/item/device/detective_scanner/attackby(obj/item/weapon/f_card/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/f_card)) if (istype(W, /obj/item/weapon/f_card))
if (W.fingerprints) if (W.fingerprints)

View File

@@ -35,6 +35,7 @@
return return
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/card/emag)) if (istype(W, /obj/item/weapon/card/emag))
if (src.emagged == 0) if (src.emagged == 0)
src.emagged = 1 src.emagged = 1

View File

@@ -62,6 +62,7 @@
return return
/obj/item/device/timer/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/timer/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/radio/signaler) ) if (istype(W, /obj/item/device/radio/signaler) )
var/obj/item/device/radio/signaler/S = W var/obj/item/device/radio/signaler/S = W
if(!S.b_stat) if(!S.b_stat)

View File

@@ -1,6 +1,7 @@
// APC HULL // APC HULL
/obj/item/apc_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/apc_frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench)) if (istype(W, /obj/item/weapon/wrench))
new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 ) new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 )
del(src) del(src)

View File

@@ -7,6 +7,7 @@
return return
/obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))

View File

@@ -42,6 +42,7 @@ THERMAL GLASSES
return return
/obj/item/clothing/shoes/orange/attackby(H as obj, loc) /obj/item/clothing/shoes/orange/attackby(H as obj, loc)
..()
if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained ))) if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained )))
//H = null //H = null
del(H) del(H)
@@ -121,6 +122,7 @@ THERMAL GLASSES
/obj/item/clothing/under/chameleon/attackby(obj/item/clothing/under/U as obj, mob/user as mob) /obj/item/clothing/under/chameleon/attackby(obj/item/clothing/under/U as obj, mob/user as mob)
..()
if(istype(U, /obj/item/clothing/under/chameleon)) if(istype(U, /obj/item/clothing/under/chameleon))
user << "\red Nothing happens." user << "\red Nothing happens."

View File

@@ -144,6 +144,17 @@
user.update_clothing() user.update_clothing()
return return
/obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/packageWrap))
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
/obj/item/proc/attack(mob/M as mob, mob/user as mob, def_zone) /obj/item/proc/attack(mob/M as mob, mob/user as mob, def_zone)
if (!M) // not sure if this is the right thing... if (!M) // not sure if this is the right thing...
return return

View File

@@ -72,6 +72,7 @@
return 0 return 0
/obj/item/robot_parts/robot_suit/attackby(obj/item/W as obj, mob/user as mob) /obj/item/robot_parts/robot_suit/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/stack/sheet/metal)) if(istype(W, /obj/item/stack/sheet/metal))
var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly
B.loc = get_turf(src) B.loc = get_turf(src)
@@ -182,6 +183,7 @@
return return
/obj/item/robot_parts/chest/attackby(obj/item/W as obj, mob/user as mob) /obj/item/robot_parts/chest/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/cell)) if(istype(W, /obj/item/weapon/cell))
if(src.cell) if(src.cell)
user << "\blue You have already inserted a cell!" user << "\blue You have already inserted a cell!"
@@ -203,6 +205,7 @@
return return
/obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob) /obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/device/flash)) if(istype(W, /obj/item/device/flash))
if(src.flash1 && src.flash2) if(src.flash1 && src.flash2)
user << "\blue You have already inserted the eyes!" user << "\blue You have already inserted the eyes!"

View File

@@ -11,6 +11,7 @@ RCD
return return
/obj/item/weapon/rcd/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/rcd/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/rcd_ammo)) if (istype(W, /obj/item/weapon/rcd_ammo))
if ((matter + 10) > 30) if ((matter + 10) > 30)
user << "The RCD cant hold any more matter." user << "The RCD cant hold any more matter."

View File

@@ -118,6 +118,7 @@ FINGERPRINT CARD
return return
/obj/item/weapon/fcardholder/attackby(obj/item/weapon/P as obj, mob/user as mob) /obj/item/weapon/fcardholder/attackby(obj/item/weapon/P as obj, mob/user as mob)
..()
if (istype(P, /obj/item/weapon/f_card)) if (istype(P, /obj/item/weapon/f_card))
if (src.contents.len < 30) if (src.contents.len < 30)
user.drop_item() user.drop_item()
@@ -205,7 +206,7 @@ FINGERPRINT CARD
return return
/obj/item/weapon/f_card/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/f_card/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/f_card)) if (istype(W, /obj/item/weapon/f_card))
if ((src.fingerprints || W.fingerprints)) if ((src.fingerprints || W.fingerprints))
return return

View File

@@ -72,6 +72,7 @@ obj/item/weapon/matchbox.attackby(obj/item/weapon/match/W as obj, mob/user as mo
//CIGARETTES + CIGARS// //CIGARETTES + CIGARS//
/////////////////////// ///////////////////////
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool) && W:welding) if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
if(src.lit == 0) if(src.lit == 0)
src.lit = 1 src.lit = 1

View File

@@ -61,6 +61,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
return return
/obj/item/assembly/weld_rod/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/weld_rod/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench) ) if (istype(W, /obj/item/weapon/wrench) )
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -114,6 +115,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
return return
/obj/item/assembly/w_r_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/w_r_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -156,6 +158,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE
location.hotspot_expose(700, 2) location.hotspot_expose(700, 2)
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob) /obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
..()
if(user.stat || user.restrained() || user.lying) if(user.stat || user.restrained() || user.lying)
return return
if (istype(W,/obj/item/weapon/tank/plasma)) if (istype(W,/obj/item/weapon/tank/plasma))

View File

@@ -44,6 +44,7 @@ FLASHBANG
return return
/obj/item/weapon/flashbang/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/flashbang/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/screwdriver)) if (istype(W, /obj/item/weapon/screwdriver))
switch(src.det_time) switch(src.det_time)
if ("1") if ("1")

View File

@@ -129,6 +129,7 @@ TELEPORT GUN
return return
obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/user as mob) obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a357)) if (istype(A, /obj/item/weapon/ammo/a357))
if (src.bullets >= 7) if (src.bullets >= 7)
@@ -242,6 +243,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
//0, not loaded. 1, beanbag, 2, 12gauge, 3, blank, 4, dart. //0, not loaded. 1, beanbag, 2, 12gauge, 3, blank, 4, dart.
/obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/user as mob) /obj/item/weapon/gun/shotgun/attackby(obj/item/weapon/A as obj, mob/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/shell/beanbag)) if (istype(A, /obj/item/weapon/ammo/shell/beanbag))
if (index == src.shellsmax || shellsunlimited >= 1) //...than sorry. if (index == src.shellsmax || shellsunlimited >= 1) //...than sorry.
user << "\blue It's already fully loaded!" user << "\blue It's already fully loaded!"
@@ -434,6 +436,7 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us
return return
/obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/user as mob) /obj/item/weapon/gun/detectiverevolver/attackby(obj/item/weapon/ammo/a38/A as obj, mob/user as mob)
..()
if (istype(A, /obj/item/weapon/ammo/a38)) if (istype(A, /obj/item/weapon/ammo/a38))
if (src.bullets >= 7) if (src.bullets >= 7)

View File

@@ -16,6 +16,7 @@ IMPLANTER
return return
/obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob) /obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob)
..()
if (istype(I, /obj/item/weapon/pen)) if (istype(I, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if (user.equipped() != I) if (user.equipped() != I)
@@ -111,7 +112,7 @@ IMPLANTER
return return
/obj/item/weapon/implantpad/attackby(obj/item/weapon/implantcase/C as obj, mob/user as mob) /obj/item/weapon/implantpad/attackby(obj/item/weapon/implantcase/C as obj, mob/user as mob)
..()
if (istype(C, /obj/item/weapon/implantcase)) if (istype(C, /obj/item/weapon/implantcase))
if (!( src.case )) if (!( src.case ))
user.drop_item() user.drop_item()

View File

@@ -38,6 +38,7 @@ MEDICAL
..() ..()
/obj/item/weapon/medical/attackby(obj/item/weapon/medical/W as obj, mob/user as mob) /obj/item/weapon/medical/attackby(obj/item/weapon/medical/W as obj, mob/user as mob)
..()
if (!istype(W, src.type)) if (!istype(W, src.type))
return return

View File

@@ -212,6 +212,7 @@ CLIPBOARDS
return return
/obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob) /obj/item/weapon/paper/attackby(obj/item/weapon/P as obj, mob/user as mob)
..()
var/clown = 0 var/clown = 0
if(user.mind && (user.mind.assigned_role == "Clown")) if(user.mind && (user.mind.assigned_role == "Clown"))
clown = 1 clown = 1
@@ -410,6 +411,7 @@ CLIPBOARDS
// WRAPPING PAPER // WRAPPING PAPER
/obj/item/weapon/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (!( locate(/obj/table, src.loc) )) if (!( locate(/obj/table, src.loc) ))
user << "\blue You MUST put the paper on a table!" user << "\blue You MUST put the paper on a table!"
if (W.w_class < 4) if (W.w_class < 4)
@@ -497,6 +499,7 @@ CLIPBOARDS
user << "\blue You cant move." user << "\blue You cant move."
/obj/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (!istype(W, /obj/item/weapon/wirecutters)) if (!istype(W, /obj/item/weapon/wirecutters))
user << "/blue I need wirecutters for that." user << "/blue I need wirecutters for that."
@@ -737,7 +740,7 @@ CLIPBOARDS
return return
/obj/item/weapon/clipboard/attackby(obj/item/weapon/P as obj, mob/user as mob) /obj/item/weapon/clipboard/attackby(obj/item/weapon/P as obj, mob/user as mob)
..()
if (istype(P, /obj/item/weapon/paper)) if (istype(P, /obj/item/weapon/paper))
if (src.contents.len < 15) if (src.contents.len < 15)
user.drop_item() user.drop_item()

View File

@@ -10,6 +10,7 @@ RACK PARTS
// TABLE PARTS // TABLE PARTS
/obj/item/weapon/table_parts/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/table_parts/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench)) if (istype(W, /obj/item/weapon/wrench))
new /obj/item/stack/sheet/metal( src.loc ) new /obj/item/stack/sheet/metal( src.loc )
//SN src = null //SN src = null
@@ -39,6 +40,7 @@ RACK PARTS
// REINFORCED TABLE PARTS // REINFORCED TABLE PARTS
/obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench)) if (istype(W, /obj/item/weapon/wrench))
new /obj/item/stack/sheet/r_metal( src.loc ) new /obj/item/stack/sheet/r_metal( src.loc )
//SN src = null //SN src = null
@@ -69,6 +71,7 @@ RACK PARTS
// RACK PARTS // RACK PARTS
/obj/item/weapon/rack_parts/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/rack_parts/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench)) if (istype(W, /obj/item/weapon/wrench))
new /obj/item/stack/sheet/metal( src.loc ) new /obj/item/stack/sheet/metal( src.loc )
del(src) del(src)

View File

@@ -16,7 +16,7 @@ TOILET
item_state = "syringe_kit" item_state = "syringe_kit"
/obj/item/weapon/storage/toilet/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/toilet/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (src.contents.len >= 7) if (src.contents.len >= 7)
user << "The toilet is clogged!" user << "The toilet is clogged!"
return return

View File

@@ -22,6 +22,7 @@
return return
/obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/screwdriver)) if (istype(W, /obj/item/weapon/screwdriver))
src.e_pads = !( src.e_pads ) src.e_pads = !( src.e_pads )

View File

@@ -12,7 +12,7 @@
src.frequency = sanitize_frequency(src.frequency) src.frequency = sanitize_frequency(src.frequency)
set_frequency(frequency) set_frequency(frequency)
for (var/ch_name in channels) for (var/ch_name in channels)
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
@@ -270,7 +270,7 @@ Speaker: <A href='byond://?src=\ref[src];ch_name=[chan_name];listen=[!list]'>[li
if ((R.frequency == src.frequency && message)) if ((R.frequency == src.frequency && message))
return 1 return 1
else if else if
else else
return null return null
return return
@@ -315,6 +315,7 @@ Speaker: <A href='byond://?src=\ref[src];ch_name=[chan_name];listen=[!list]'>[li
return return
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
user.machine = src user.machine = src
if (!( istype(W, /obj/item/weapon/screwdriver) )) if (!( istype(W, /obj/item/weapon/screwdriver) ))
return return

View File

@@ -93,6 +93,7 @@
return return
/obj/item/weapon/secstorage/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/secstorage/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((W.w_class > 3 || istype(W, /obj/item/weapon/secstorage))) if ((W.w_class > 3 || istype(W, /obj/item/weapon/secstorage)))
return return
if ((istype(W, /obj/item/weapon/card/emag)) && (src.locked == 1) && (!src.emagged)) if ((istype(W, /obj/item/weapon/card/emag)) && (src.locked == 1) && (!src.emagged))

View File

@@ -54,6 +54,7 @@ SHARDS
construct_window(usr, src) construct_window(usr, src)
/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user) /obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user)
..()
if( istype(W, /obj/item/stack/rods) ) if( istype(W, /obj/item/stack/rods) )
var/obj/item/stack/rods/V = W var/obj/item/stack/rods/V = W
var/obj/item/stack/sheet/rglass/RG = new (user.loc) var/obj/item/stack/sheet/rglass/RG = new (user.loc)
@@ -113,6 +114,7 @@ SHARDS
return return
/obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ( istype(W, /obj/item/weapon/weldingtool) && W:welding ) if ( istype(W, /obj/item/weapon/weldingtool) && W:welding )
W:eyecheck(user) W:eyecheck(user)
new /obj/item/stack/sheet/glass( user.loc ) new /obj/item/stack/sheet/glass( user.loc )

View File

@@ -11,6 +11,7 @@ FLOOR TILES
// RODS // RODS
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) /obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/weldingtool) && W:welding) if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
if(amount < 2) if(amount < 2)
user << "\red You need at least two rods to do this." user << "\red You need at least two rods to do this."

View File

@@ -13,7 +13,7 @@
..() ..()
if (amount) if (amount)
src.amount=amount src.amount=amount
return return
/obj/item/stack/examine() /obj/item/stack/examine()
@@ -61,6 +61,7 @@
return return
/obj/item/stack/attackby(obj/item/W as obj, mob/user as mob) /obj/item/stack/attackby(obj/item/W as obj, mob/user as mob)
..()
if (istype(W, src.type)) if (istype(W, src.type))
var/obj/item/stack/S = W var/obj/item/stack/S = W
if (S.amount >= max_amount) if (S.amount >= max_amount)
@@ -82,7 +83,7 @@
src.blood_DNA = from.blood_DNA src.blood_DNA = from.blood_DNA
src.blood_type = from.blood_type src.blood_type = from.blood_type
src.fingerprints = from.fingerprints src.fingerprints = from.fingerprints
src.fingerprintshidden = from.fingerprintshidden src.fingerprintshidden = from.fingerprintshidden
src.fingerprintslast = from.fingerprintslast src.fingerprintslast = from.fingerprintslast
//TODO bloody overlay //TODO bloody overlay
@@ -157,7 +158,7 @@
return return
if (href_list["make"]) if (href_list["make"])
if (src.amount < 1) del(src) //Never should happen if (src.amount < 1) del(src) //Never should happen
var/datum/stack_recipe/R = recipes[text2num(href_list["make"])] var/datum/stack_recipe/R = recipes[text2num(href_list["make"])]
var/multiplier = text2num(href_list["multiplier"]) var/multiplier = text2num(href_list["multiplier"])
if (!multiplier) multiplier = 1 if (!multiplier) multiplier = 1

View File

@@ -34,6 +34,7 @@
return return
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (src.contents.len >= 7) if (src.contents.len >= 7)
return return

View File

@@ -75,6 +75,7 @@
call(/obj/rune/proc/revealrunes)(src) call(/obj/rune/proc/revealrunes)(src)
/obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/storage/bible)) if (istype(W, /obj/item/weapon/storage/bible))
return return
if (src.contents.len >= 7) if (src.contents.len >= 7)

View File

@@ -251,7 +251,14 @@
return attack_hand(user) return attack_hand(user)
/obj/crate/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(opened) if (istype(W, /obj/item/weapon/packageWrap))
var/obj/item/weapon/packageWrap/O = W
if (O.amount > 3)
var/obj/bigDelivery/P = new /obj/bigDelivery(get_turf(src.loc))
P.wrapped = src
src.loc = P
O.amount -= 3
else if(opened)
user.drop_item() user.drop_item()
if(W) if(W)
W.loc = src.loc W.loc = src.loc

View File

@@ -80,7 +80,7 @@
return return
/obj/item/weapon/storage/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(can_hold.len) if(can_hold.len)
var/ok = 0 var/ok = 0
for(var/A in can_hold) for(var/A in can_hold)
@@ -250,6 +250,7 @@
src.add_fingerprint(user) src.add_fingerprint(user)
/obj/item/weapon/storage/utilitybelt/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/storage/utilitybelt/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(!can_use()) if(!can_use())
user << "\red I need to wear the belt for that." user << "\red I need to wear the belt for that."
return return

View File

@@ -166,6 +166,7 @@
return return
/obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
var/obj/item/weapon/icon = src var/obj/item/weapon/icon = src
if (istype(src.loc, /obj/item/assembly)) if (istype(src.loc, /obj/item/assembly))
icon = src.loc icon = src.loc
@@ -364,6 +365,7 @@
del(src) del(src)
/obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() ..()
if (istype(W, /obj/item/assembly/rad_ignite)) if (istype(W, /obj/item/assembly/rad_ignite))
var/obj/item/assembly/rad_ignite/S = W var/obj/item/assembly/rad_ignite/S = W

View File

@@ -117,6 +117,7 @@
return return
/obj/item/assembly/time_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/time_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -151,6 +152,7 @@
//*********** //***********
/obj/item/assembly/anal_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/anal_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -225,6 +227,7 @@
src.add_fingerprint(user) src.add_fingerprint(user)
*/ */
/obj/item/assembly/a_i_a/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/a_i_a/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -268,6 +271,7 @@
return return
/obj/item/assembly/rad_time/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/rad_time/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
@@ -325,7 +329,7 @@
return return
/obj/item/assembly/rad_prox/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/rad_prox/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -387,7 +391,7 @@
return return
/obj/item/assembly/rad_infra/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/rad_infra/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -475,6 +479,7 @@
return return
/obj/item/assembly/prox_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/prox_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -535,7 +540,7 @@
return return
/obj/item/assembly/rad_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/rad_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
var/turf/T = src.loc var/turf/T = src.loc
if (ismob(T)) if (ismob(T))
@@ -636,6 +641,7 @@
return return
/obj/item/assembly/m_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/m_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer)) if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user) src.part3.attackby(W, user)
@@ -734,6 +740,7 @@
return return
/obj/item/assembly/t_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/t_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer)) if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user) src.part3.attackby(W, user)
@@ -827,6 +834,7 @@
return return
/obj/item/assembly/r_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/r_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer)) if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user) src.part3.attackby(W, user)
@@ -883,6 +891,7 @@
//*****RM //*****RM
/obj/item/clothing/suit/armor/a_i_a_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/clothing/suit/armor/a_i_a_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer)) if (istype(W, /obj/item/device/analyzer))
src.part4.attackby(W, user) src.part4.attackby(W, user)

View File

@@ -151,6 +151,7 @@
/obj/window/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/window/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/screwdriver)) if (istype(W, /obj/item/weapon/screwdriver))
if(reinf && state >= 1) if(reinf && state >= 1)
state = 3 - state state = 3 - state

View File

@@ -45,6 +45,7 @@
user << "\blue The vial shatters." user << "\blue The vial shatters."
src.shatter() src.shatter()
/obj/item/weapon/vial/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/weapon/vial/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
user << "\blue The vial shatters." user << "\blue The vial shatters."
src.shatter() src.shatter()
/obj/item/weapon/vial/attack_self(mob/user as mob) /obj/item/weapon/vial/attack_self(mob/user as mob)

View File

@@ -234,6 +234,8 @@ mob/new_player
AttemptLateSpawn("Shaft Miner", minerMax) AttemptLateSpawn("Shaft Miner", minerMax)
if ("30") if ("30")
AttemptLateSpawn("Mime", mimeMax) AttemptLateSpawn("Mime", mimeMax)
if ("31")
AttemptLateSpawn("Mail Sorter", sorterMax)
if(!ready && href_list["preferences"]) if(!ready && href_list["preferences"])
preferences.process_link(src, href_list) preferences.process_link(src, href_list)
@@ -406,6 +408,8 @@ mob/new_player
dat += "<a href='byond://?src=\ref[src];SelectedJob=28'>Warden</a><br>" dat += "<a href='byond://?src=\ref[src];SelectedJob=28'>Warden</a><br>"
if (IsJobAvailable("Shaft Miner",minerMax)) if (IsJobAvailable("Shaft Miner",minerMax))
dat += "<a href='byond://?src=\ref[src];SelectedJob=29'>Shaft Miner</a> (BETA)<br>" dat += "<a href='byond://?src=\ref[src];SelectedJob=29'>Shaft Miner</a> (BETA)<br>"
if (IsJobAvailable("Mail Sorter",sorterMax))
dat += "<a href='byond://?src=\ref[src];SelectedJob=31'>Mail Sorter</a> (BETA)<br>"
if (!jobban_isbanned(src,"Assistant")) if (!jobban_isbanned(src,"Assistant"))
dat += "<a href='byond://?src=\ref[src];SelectedJob=18'>Assistant</a><br>" dat += "<a href='byond://?src=\ref[src];SelectedJob=18'>Assistant</a><br>"

View File

@@ -21,11 +21,12 @@
fuel = 1e-12 //pico-kilogram fuel = 1e-12 //pico-kilogram
/obj/item/weapon/fuel/attackby(obj/item/weapon/fuel/F, mob/user) /obj/item/weapon/fuel/attackby(obj/item/weapon/fuel/F, mob/user)
..()
if(istype(src, /obj/item/weapon/fuel/antiH)) if(istype(src, /obj/item/weapon/fuel/antiH))
if(istype(F, /obj/item/weapon/fuel/antiH)) if(istype(F, /obj/item/weapon/fuel/antiH))
src.fuel += F.fuel src.fuel += F.fuel
F.fuel = 0 F.fuel = 0
user << "You have added the anti-Hydorgen to the storage ring, it now contains [src.fuel]kg" user << "You have added the anti-Hydrogen to the storage ring, it now contains [src.fuel]kg"
if(istype(F, /obj/item/weapon/fuel/H)) if(istype(F, /obj/item/weapon/fuel/H))
src.fuel += F.fuel src.fuel += F.fuel
del(F) del(F)
@@ -34,7 +35,7 @@
if(istype(F, /obj/item/weapon/fuel/H)) if(istype(F, /obj/item/weapon/fuel/H))
src.fuel += F.fuel src.fuel += F.fuel
F.fuel = 0 F.fuel = 0
user << "You have added the Hydorgen to the storage ring, it now contains [src.fuel]kg" user << "You have added the Hydrogen to the storage ring, it now contains [src.fuel]kg"
if(istype(F, /obj/item/weapon/fuel/antiH)) if(istype(F, /obj/item/weapon/fuel/antiH))
src.fuel += F.fuel src.fuel += F.fuel
del(src) del(src)

View File

@@ -203,6 +203,7 @@
usr << "A coil of power cable. There are [amount] lengths of cable in the coil." usr << "A coil of power cable. There are [amount] lengths of cable in the coil."
/obj/item/weapon/cable_coil/attackby(obj/item/weapon/W, mob/user) /obj/item/weapon/cable_coil/attackby(obj/item/weapon/W, mob/user)
..()
if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1) if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1)
src.amount-- src.amount--
new/obj/item/weapon/cable_coil(user.loc, 1) new/obj/item/weapon/cable_coil(user.loc, 1)

View File

@@ -62,6 +62,7 @@
//Just because someone gets you occasionally with stun gloves doesn't mean you can put in code to kill everyone who tries to make some. //Just because someone gets you occasionally with stun gloves doesn't mean you can put in code to kill everyone who tries to make some.
/obj/item/weapon/cell/attackby(obj/item/W, mob/user) /obj/item/weapon/cell/attackby(obj/item/W, mob/user)
..()
var/obj/item/clothing/gloves/G = W var/obj/item/clothing/gloves/G = W
if(istype(G)) if(istype(G))
// var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread // var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread

View File

@@ -487,6 +487,7 @@
// attack bulb/tube with object // attack bulb/tube with object
// if a syringe, can inject plasma to make it explode // if a syringe, can inject plasma to make it explode
/obj/item/weapon/light/attackby(var/obj/item/I, var/mob/user) /obj/item/weapon/light/attackby(var/obj/item/I, var/mob/user)
..()
if(istype(I, /obj/item/weapon/reagent_containers/syringe)) if(istype(I, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/S = I var/obj/item/weapon/reagent_containers/syringe/S = I

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

10204
maps/tgstation.2.0.3.dmm Normal file

File diff suppressed because it is too large Load Diff