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
/obj/item/weapon/storage/photo_album/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (src.contents.len >= 7)
return

View File

@@ -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."

View File

@@ -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

View File

@@ -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 )

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"
icon_state = "green"
/area/maintenance/incinerator
name = "Incinerator"
icon_state = "disposal"
/area/maintenance/disposal
name = "Waste Disposal"
icon_state = "disposal"
@@ -757,7 +761,7 @@ proc/process_ghost_teleport_locs()
///////////WORK IN PROGRESS//////////
/area/quartermaster/sorting
name = "Construction Area"
name = "Delivery Office"
icon_state = "quartstorage"
////////////WORK IN PROGRESS//////////

View File

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

View File

@@ -469,6 +469,7 @@
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)
..()
if (istype(O, /obj/item/device/analyzer/plant_analyzer))
user << "This is a \blue [name]"
switch(plant_type)
@@ -492,6 +493,7 @@
return
/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))
user << "This is a \blue [name]"
switch(plant_type)

View File

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

View File

@@ -162,6 +162,8 @@
return list(access_robotics, access_tech_storage, access_maint_tunnels)
if("Cargo Technician")
return list(access_maint_tunnels, access_cargo, access_cargo_bot)
if("Mail Sorter")
return list(access_maint_tunnels, access_mailsorting)
if("Shaft Miner")
return list(access_maint_tunnels, access_mining)
if("Quartermaster")
@@ -335,5 +337,5 @@
/proc/get_all_jobs()
return list("Assistant", "Station Engineer", "Shaft Miner", "Detective", "Medical Doctor", "Captain", "Security Officer", "Warden",
"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")

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/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")
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)

View File

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

View File

@@ -248,6 +248,7 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
return
/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))
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot
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)
..()
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++
user << "You add the robot leg to [src]!"

View File

@@ -369,6 +369,7 @@
/obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/stack/tile/T, mob/user as mob)
..()
if(!istype(T, /obj/item/stack/tile))
..()
return
@@ -391,6 +392,7 @@
del(src)
/obj/item/weapon/toolbox_tiles/attackby(var/obj/item/W, mob/user as mob)
..()
if(istype(W, /obj/item/device/prox_sensor))
var/obj/item/weapon/toolbox_tiles_sensor/B = new /obj/item/weapon/toolbox_tiles_sensor
B.loc = user
@@ -416,6 +418,7 @@
src.created_name = t
/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))
var/obj/machinery/bot/floorbot/A = new /obj/machinery/bot/floorbot
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)
..()
if ((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm)))
if (src.contents.len >= 7)
return
@@ -564,6 +565,7 @@
del(src)
/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))
src.build_step++
user << "You add the health sensor to [src]!"

View File

@@ -699,6 +699,7 @@
//Secbot Construction
/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))
..()
return
@@ -724,6 +725,7 @@
/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(W:remove_fuel(1,user))
src.build_step++

View File

@@ -199,6 +199,7 @@ Buildable meters
return rotate()
/obj/item/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
..()
//*
if (!istype(W, /obj/item/weapon/wrench))
return ..()
@@ -421,6 +422,7 @@ Buildable meters
w_class = 4
/obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
..()
if (!istype(W, /obj/item/weapon/wrench))
return ..()

View File

@@ -137,7 +137,16 @@
del(src)
/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))
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)
..()
if (istype(C, /obj/item/weapon/cartridge) && isnull(src.cartridge))
user.drop_item()
C.loc = src

View File

@@ -1,5 +1,6 @@
/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 )))
var/obj/item/device/radio/signaler/S = W
if (!( S.b_stat ))

View File

@@ -111,6 +111,7 @@
return
/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 )))
return
var/obj/item/assembly/rad_infra/R = new /obj/item/assembly/rad_infra( user )

View File

@@ -68,6 +68,7 @@
return
/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 )))
return
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
/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 (W.fingerprints)

View File

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

View File

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

View File

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

View File

@@ -7,6 +7,7 @@
return
/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 )))
var/turf/T = src.loc
if (ismob(T))

View File

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

View File

@@ -144,6 +144,17 @@
user.update_clothing()
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)
if (!M) // not sure if this is the right thing...
return

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -129,6 +129,7 @@ TELEPORT GUN
return
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 (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.
/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 (index == src.shellsmax || shellsunlimited >= 1) //...than sorry.
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
/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 (src.bullets >= 7)

View File

@@ -16,6 +16,7 @@ IMPLANTER
return
/obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob)
..()
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
if (user.equipped() != I)
@@ -111,7 +112,7 @@ IMPLANTER
return
/obj/item/weapon/implantpad/attackby(obj/item/weapon/implantcase/C as obj, mob/user as mob)
..()
if (istype(C, /obj/item/weapon/implantcase))
if (!( src.case ))
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)
..()
if (!istype(W, src.type))
return

View File

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

View File

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

View File

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

View File

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

View File

@@ -315,6 +315,7 @@ Speaker: <A href='byond://?src=\ref[src];ch_name=[chan_name];listen=[!list]'>[li
return
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
user.machine = src
if (!( istype(W, /obj/item/weapon/screwdriver) ))
return

View File

@@ -93,6 +93,7 @@
return
/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)))
return
if ((istype(W, /obj/item/weapon/card/emag)) && (src.locked == 1) && (!src.emagged))

View File

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

View File

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

View File

@@ -61,6 +61,7 @@
return
/obj/item/stack/attackby(obj/item/W as obj, mob/user as mob)
..()
if (istype(W, src.type))
var/obj/item/stack/S = W
if (S.amount >= max_amount)

View File

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

View File

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

View File

@@ -251,7 +251,14 @@
return attack_hand(user)
/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()
if(W)
W.loc = src.loc

View File

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

View File

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

View File

@@ -117,6 +117,7 @@
return
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -151,6 +152,7 @@
//***********
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -225,6 +227,7 @@
src.add_fingerprint(user)
*/
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -268,6 +271,7 @@
return
/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 )))
var/turf/T = src.loc
@@ -325,7 +329,7 @@
return
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -387,7 +391,7 @@
return
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -475,6 +479,7 @@
return
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -535,7 +540,7 @@
return
/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 )))
var/turf/T = src.loc
if (ismob(T))
@@ -636,6 +641,7 @@
return
/obj/item/assembly/m_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user)
@@ -734,6 +740,7 @@
return
/obj/item/assembly/t_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user)
@@ -827,6 +834,7 @@
return
/obj/item/assembly/r_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/device/analyzer))
src.part3.attackby(W, user)
@@ -883,6 +891,7 @@
//*****RM
/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))
src.part4.attackby(W, user)

View File

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

View File

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

View File

@@ -234,6 +234,8 @@ mob/new_player
AttemptLateSpawn("Shaft Miner", minerMax)
if ("30")
AttemptLateSpawn("Mime", mimeMax)
if ("31")
AttemptLateSpawn("Mail Sorter", sorterMax)
if(!ready && href_list["preferences"])
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>"
if (IsJobAvailable("Shaft Miner",minerMax))
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"))
dat += "<a href='byond://?src=\ref[src];SelectedJob=18'>Assistant</a><br>"

View File

@@ -21,11 +21,12 @@
fuel = 1e-12 //pico-kilogram
/obj/item/weapon/fuel/attackby(obj/item/weapon/fuel/F, mob/user)
..()
if(istype(src, /obj/item/weapon/fuel/antiH))
if(istype(F, /obj/item/weapon/fuel/antiH))
src.fuel += F.fuel
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))
src.fuel += F.fuel
del(F)
@@ -34,7 +35,7 @@
if(istype(F, /obj/item/weapon/fuel/H))
src.fuel += F.fuel
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))
src.fuel += F.fuel
del(src)

View File

@@ -203,6 +203,7 @@
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)
..()
if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1)
src.amount--
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.
/obj/item/weapon/cell/attackby(obj/item/W, mob/user)
..()
var/obj/item/clothing/gloves/G = W
if(istype(G))
// var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread

View File

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