first pass of cleaning up construction.dm + merge from upstream

This commit is contained in:
duncathan
2015-08-14 20:55:09 -06:00
parent 13b43cba87
commit d320c4c945
144 changed files with 77776 additions and 9886 deletions
+4
View File
@@ -6,6 +6,10 @@
zone = "chest"
slot = "parasite_egg"
/obj/item/organ/internal/body_egg/on_find(mob/living/finder)
..()
finder << "<span class='warning'>You found an unknown alien organism in [owner]'s [zone]!</span>"
/obj/item/organ/internal/body_egg/New(loc)
if(iscarbon(loc))
src.Insert(loc)
+50 -43
View File
@@ -8,9 +8,8 @@
var/timer_set = 0
var/primed = 0
var/disarmed = 0
var/wires = list("orange", "green", "blue", "yellow", "aqua", "purple")
var/correct_wire
var/armer //Used for admin purposes
var/datum/wires/pizza_bomb/wires
/obj/item/device/pizza_bomb/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is opening [src]! It looks like \he's hungry and looking for pizza.</span>")
@@ -44,16 +43,10 @@
desc = "A box suited for pizzas."
return
if(!primed)
name = "pizza bomb"
desc = "OH GOD THAT'S NOT A PIZZA"
icon_state = "pizzabox_bomb"
audible_message("<span class='warning'>\icon[src] *beep* *beep*</span>")
user << "<span class='danger'>That's no pizza! That's a bomb!</span>"
message_admins("[key_name_admin(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) has triggered a pizza bomb armed by [key_name_admin(armer)] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>(JMP)</a>.")
log_game("[key_name(usr)] has triggered a pizza bomb armed by [key_name(armer)] ([loc.x],[loc.y],[loc.z]).")
primed = 1
sleep(timer)
return go_boom()
arm()
/obj/item/device/pizza_bomb/burn() //Instead of burning to ashes, it will just explode
go_boom()
@@ -61,52 +54,66 @@
/obj/item/device/pizza_bomb/proc/go_boom()
if(disarmed)
visible_message("<span class='danger'>\icon[src] Sparks briefly jump out of the [correct_wire] wire on \the [src], but it's disarmed!")
visible_message("<span class='danger'>\icon[src] Sparks briefly jump out of \the [src], but it's disarmed!")
return
src.audible_message("\icon[src] <b>[src]</b> beeps, \"Enjoy the pizza!\"")
src.visible_message("<span class='userdanger'>\The [src] violently explodes!</span>")
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
qdel(src)
/obj/item/device/pizza_bomb/attack_hand(mob/user)
if(loc == user || primed)
wires.Interact(user)
else
..()
/obj/item/device/pizza_bomb/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/wirecutters) && primed)
user << "<span class='danger'>Oh God, what wire do you cut?!</span>"
var/chosen_wire = input(user, "OH GOD OH GOD", "WHAT WIRE?!") in wires
if(!user.canUseTopic(src))
return
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1)
user.visible_message("<span class='warning'>[user] cuts the [chosen_wire] wire!</span>", "<span class='danger'>You cut the [chosen_wire] wire!</span>")
sleep(5)
if(chosen_wire == correct_wire)
src.audible_message("\icon[src] \The [src] suddenly stops beeping and seems lifeless.")
user << "<span class='notice'>You did it!</span>"
icon_state = "pizzabox_bomb_[correct_wire]"
name = "pizza bomb"
desc = "A devious contraption, made of a small explosive payload hooked up to pressure-sensitive wires. It's disarmed."
disarmed = 1
primed = 0
if(istype(I, /obj/item/weapon/wirecutters))
if(disarmed)
if(!in_range(user, src))
user << "<span class='warning'>You can't see the box well enough to cut the wires out!</span>"
return
user.visible_message("<span class='notice'>[user] starts removing the payload and wires from \the [src].</span>", "<span class='notice'>You start removing the payload and wires from \the [src]...</span>")
if(do_after(user, 40, target = src))
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1)
user.unEquip(src)
user.visible_message("<span class='notice'>[user] removes the insides of \the [src]!</span>", "<span class='notice'>You remove the insides of \the [src].</span>")
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(src.loc)
C.amount = 3
new /obj/item/weapon/bombcore/miniature(src.loc)
new /obj/item/pizzabox(src.loc)
qdel(src)
return
else
user << "<span class='userdanger'>WRONG WIRE!</span>"
go_boom()
attack_hand(user)
return
if(istype(I, /obj/item/weapon/wirecutters) && disarmed)
if(!in_range(user, src))
user << "<span class='warning'>You can't see the box well enough to cut the wires out!</span>"
return
user.visible_message("<span class='notice'>[user] starts removing the payload and wires from \the [src].</span>", "<span class='notice'>You start removing the payload and wires from \the [src]...</span>")
if(do_after(user, 40, target = src))
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1)
user.unEquip(src)
user.visible_message("<span class='notice'>[user] removes the insides of \the [src]!</span>", "<span class='notice'>You remove the insides of \the [src].</span>")
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(src.loc)
C.amount = 3
new /obj/item/weapon/bombcore/miniature(src.loc)
new /obj/item/pizzabox(src.loc)
qdel(src)
if(istype(I, /obj/item/device/multitool))
attack_hand(user)
return
..()
/obj/item/device/pizza_bomb/New()
..()
correct_wire = pick(wires)
wires = new(src)
/obj/item/device/pizza_bomb/proc/disarm()
audible_message("\icon[src] \The [src] suddenly stops beeping and seems lifeless.")
icon_state = "pizzabox_bomb_[wires.GetColour(PIZZA_WIRE_DISARM)]"
name = "pizza bomb"
desc = "A devious contraption, made of a small explosive payload hooked up to pressure-sensitive wires. It's disarmed."
disarmed = 1
primed = 0
/obj/item/device/pizza_bomb/proc/arm()
name = "pizza bomb"
desc = "OH GOD THAT'S NOT A PIZZA"
icon_state = "pizzabox_bomb"
audible_message("<span class='warning'>\icon[src] *beep* *beep*</span>")
primed = 1
sleep(timer)
return go_boom()
+1 -1
View File
@@ -143,7 +143,7 @@ MASS SPECTROMETER
user << "\t<span class='alert'>Subject appears to have [M.getCloneLoss() > 30 ? "severe" : "minor"] cellular damage.</span>"
if (M.reagents && M.reagents.get_reagent_amount("epinephrine"))
user << "\t<span class='info'>Bloodstream analysis located [M.reagents:get_reagent_amount("epinephrine")] units of rejuvenation chemicals.</span>"
if (M.getBrainLoss() >= 100 || !M.getorgan(/obj/item/organ/brain))
if (M.getBrainLoss() >= 100 || !M.getorgan(/obj/item/organ/internal/brain))
user << "\t<span class='alert'>Subject brain function is non-existant.</span>"
else if (M.getBrainLoss() >= 60)
user << "\t<span class='alert'>Severe brain damage detected. Subject likely to have mental retardation.</span>"
@@ -15,12 +15,10 @@
var/playsleepseconds = 0
var/obj/item/device/tape/mytape
var/open_panel = 0
var/datum/wires/taperecorder/wires = null
var/canprint = 1
/obj/item/device/taperecorder/New()
wires = new(src)
mytape = new /obj/item/device/tape/random(src)
update_icon()
@@ -38,13 +36,6 @@
mytape = I
user << "<span class='notice'>You insert [I] into [src].</span>"
update_icon()
else if(istype(I, /obj/item/weapon/screwdriver))
open_panel = !open_panel
user << "<span class='notice'>You [open_panel ? "open" : "close"] the wire panel.</span>"
if(open_panel)
wires.Interact(user)
else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler))
wires.Interact(user)
/obj/item/device/taperecorder/proc/eject(mob/user)
@@ -117,8 +108,6 @@
return
if(playing)
return
if(!wires.get_record())
return
if(mytape.used_capacity < mytape.max_capacity)
usr << "<span class='notice'>Recording started.</span>"
@@ -131,8 +120,6 @@
for(used, used < max)
if(recording == 0)
break
if(!wires.get_record())
break
mytape.used_capacity++
used++
sleep(10)
@@ -174,8 +161,6 @@
return
if(playing)
return
if(!wires.get_play())
return
playing = 1
update_icon()
@@ -185,8 +170,6 @@
for(var/i = 1, used < max, sleep(10 * playsleepseconds))
if(!mytape)
break
if(!wires.get_play())
break
if(playing == 0)
break
if(mytape.storedinfo.len < i)
@@ -246,7 +229,6 @@
//empty tape recorders
/obj/item/device/taperecorder/empty/New()
wires = new(src)
return
@@ -12,6 +12,14 @@
icon_state = "sheet-corgi"
origin_tech = null
var/global/list/datum/stack_recipe/corgi_recipes = list ( \
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3, on_floor = 1), \
)
/obj/item/stack/sheet/animalhide/corgi/New(var/loc, var/amount=null)
recipes = corgi_recipes
return ..()
/obj/item/stack/sheet/animalhide/cat
name = "cat hide"
desc = "The by-product of cat farming."
@@ -99,10 +99,11 @@
singular_name = "astral carpet"
desc = "A piece of carpet with a convincing star pattern."
icon_state = "tile_space"
amount = 30
turf_type = /turf/simulated/floor/fakespace
burn_state = 0 //Burnable
/obj/item/stack/tile/fakespace/loaded
amount = 30
//High-traction
/obj/item/stack/tile/noslip
@@ -132,4 +133,4 @@
desc = "The ground you walk on." //Not the usual floor tile desc as that refers to throwing, Cyborgs can't do that - RR
materials = list() // All other Borg versions of items have no Metal or Glass - RR
is_cyborg = 1
cost = 125
cost = 125
+9 -9
View File
@@ -31,7 +31,7 @@ RPD
/datum/pipe_info/New(pid,direction,dt)
src.id=pid
src.icon_state=pipeID2State[pid+1]
src.icon_state=pipeID2State["[pid]"]
src.dir=direction
src.dirtype=dt
@@ -81,8 +81,8 @@ var/global/list/disposalpipeID2State=list(
//find these defines in code\game\machinery\pipe\consruction.dm
var/global/list/RPD_recipes=list(
"Regular Pipes" = list(
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE_STRAIGHT, 1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE_BENT, 5, PIPE_BENT),
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 5, PIPE_BENT),
"Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY),
"Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY),
"Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY),
@@ -101,19 +101,19 @@ var/global/list/RPD_recipes=list(
// "Injector" = new /datum/pipe_info(PIPE_INJECTOR, 1, PIPE_UNARY),
),
"Heat Exchange" = list(
"Pipe" = new /datum/pipe_info(PIPE_HE_STRAIGHT, 1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(PIPE_HE_BENT, 5, PIPE_BENT),
"Pipe" = new /datum/pipe_info(PIPE_HE, 1, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info(PIPE_HE, 5, PIPE_BENT),
"Junction" = new /datum/pipe_info(PIPE_JUNCTION, 1, PIPE_UNARY),
"Heat Exchanger" = new /datum/pipe_info(PIPE_HEAT_EXCHANGE, 1, PIPE_UNARY),
),
"Disposal Pipes" = list(
"Pipe" = new /datum/pipe_info/disposal(DISP_PIPE_STRAIGHT, PIPE_BINARY),
"Bent Pipe" = new /datum/pipe_info/disposal(DISP_PIPE_BENT, PIPE_TRINARY),
"Junction" = new /datum/pipe_info/disposal(DISP_JUNCTION, PIPE_TRINARY),
"Junction" = new /datum/pipe_info/disposal(DISP_JUNCTION, PIPE_TRINARY),
"Y-Junction" = new /datum/pipe_info/disposal(DISP_YJUNCTION, PIPE_TRINARY),
"Trunk" = new /datum/pipe_info/disposal(DISP_END_TRUNK, PIPE_TRINARY),
"Bin" = new /datum/pipe_info/disposal(DISP_END_BIN, PIPE_QUAD),
"Outlet" = new /datum/pipe_info/disposal(DISP_END_OUTLET, PIPE_UNARY),
"Bin" = new /datum/pipe_info/disposal(DISP_END_BIN, PIPE_QUAD),
"Outlet" = new /datum/pipe_info/disposal(DISP_END_OUTLET, PIPE_UNARY),
"Chute" = new /datum/pipe_info/disposal(DISP_END_CHUTE, PIPE_UNARY),
"Sort Junction" = new /datum/pipe_info/disposal(DISP_SORTJUNCTION, PIPE_TRINARY),
)
@@ -471,7 +471,7 @@ var/global/list/RPD_recipes=list(
show_menu(usr)
if(href_list["makepipe"])
p_type = text2num(href_list["makepipe"])
p_type = text2path(href_list["makepipe"])
p_dir = text2num(href_list["dir"])
p_conntype = text2num(href_list["type"])
p_class = ATMOS_MODE
@@ -100,6 +100,11 @@
spam_flag = 0
return
/obj/item/weapon/bikehorn/Crossed(mob/living/L)
if(isliving(L))
playsound(loc, honksound, 50, 1, -1)
..()
/obj/item/weapon/bikehorn/airhorn
name = "air horn"
desc = "Damn son, where'd you find this?"
+23 -16
View File
@@ -361,11 +361,13 @@
return
if(user.zone_sel && user.zone_sel.selecting == "chest")
if(!defib.safety && user.a_intent == "harm")
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>", "<span class='warning'>You overcharge the paddles and begin to place them onto [M]'s chest...</span>")
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>",
"<span class='warning'>You overcharge the paddles and begin to place them onto [M]'s chest...</span>")
busy = 1
update_icon()
if(do_after(user, 30, target = M))
user.visible_message("<span class='notice'>[user] places [src] on [M.name]'s chest.</span>", "<span class='warning'>You place [src] on [M.name]'s chest and begin to charge them.</span>")
user.visible_message("<span class='notice'>[user] places [src] on [M.name]'s chest.</span>",
"<span class='warning'>You place [src] on [M.name]'s chest and begin to charge them.</span>")
var/turf/T = get_turf(defib)
playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0)
T.audible_message("<span class='warning'>\The [defib] lets out an urgent beep and lets out a steadily rising hum...</span>")
@@ -384,7 +386,8 @@
if(!HU.heart_attack)
HU.heart_attack = 1
if(!HU.stat)
HU.visible_message("<span class='warning'>[M] thrashes wildly, clutching at their chest!</span>", "<span class='userdanger'>You feel a horrible agony in your chest!</span>")
HU.visible_message("<span class='warning'>[M] thrashes wildly, clutching at their chest!</span>",
"<span class='userdanger'>You feel a horrible agony in your chest!</span>")
HU.apply_damage(50, BURN, "chest")
add_logs(user, M, "overloaded the heart of", defib)
M.Weaken(5)
@@ -427,7 +430,22 @@
total_brute = H.getBruteLoss()
total_burn = H.getFireLoss()
if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !H.get_ghost() && tplus < tlimit && !(NOCLONE in H.mutations))
var/failed = null
if (H.suiciding || (NOCLONE in H.mutations))
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>"
else if ((tplus > tlimit) || !H.getorgan(/obj/item/organ/internal/heart))
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return. Further attempts futile.</span>"
else if(total_burn >= 180 || total_brute >= 180)
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Severe tissue damage detected.</span>"
else if(H.get_ghost() || !H.getorgan(/obj/item/organ/internal/brain))
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful.</span>"
if(failed)
user.visible_message(failed)
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
else
//If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit
if (H.health > halfwaycritdeath)
H.adjustOxyLoss(H.health - halfwaycritdeath)
@@ -446,19 +464,8 @@
H.emote("gasp")
if(tplus > tloss)
H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100))))
defib.deductcharge(revivecost)
add_logs(user, M, "revived", defib)
else
if (H.suiciding || (NOCLONE in H.mutations))
user.visible_message("<span class='warning'>[defib] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>")
else if (tplus > tlimit)
user.visible_message("<span class='warning'>[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return for defibrillation. Further attempts futile.</span>")
else if(total_burn >= 180 || total_brute >= 180)
user.visible_message("<span class='warning'>[defib] buzzes: Resuscitation failed - Severe tissue damage detected.</span>")
else
user.visible_message("<span class='warning'>[defib] buzzes: Resuscitation failed - No soul in patient body. Further attempts may be successful.</span>")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
defib.deductcharge(revivecost)
defib.deductcharge(revivecost)
update_icon()
cooldown = 1
defib.cooldowncheck(user)
@@ -3,7 +3,7 @@
desc = "And boom goes the weasel."
icon_state = "explosive"
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
var/weak = 1.6
var/weak = 2
var/medium = 0.8
var/heavy = 0.4
var/delay = 7
@@ -42,7 +42,7 @@
/obj/item/weapon/implant/explosive/implant(mob/source)
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
if(imp_e)
if(imp_e && imp_e != src)
imp_e.heavy += heavy
imp_e.medium += medium
imp_e.weak += weak
@@ -89,10 +89,10 @@
/obj/item/weapon/implant/explosive/macro/implant(mob/source)
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
if(imp_e)
if(imp_e && imp_e != src)
return 0
imp_e = locate(/obj/item/weapon/implant/explosive) in source
if(imp_e)
if(imp_e && imp_e != src)
heavy += imp_e.heavy
medium += imp_e.medium
weak += imp_e.weak
@@ -21,13 +21,13 @@
if(..())
if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.get_gang_bosses())) || is_shadow_or_thrall(target))
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
imp_in = null
removed(target, 1)
qdel(src)
return -1
if(target.mind in ticker.mode.get_gangsters())
ticker.mode.remove_gangster(target.mind)
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>")
imp_in = null
removed(target, 1)
qdel(src)
return -1
if(target.mind in ticker.mode.revolutionaries)
@@ -39,9 +39,9 @@
return 1
return 0
/obj/item/weapon/implant/loyalty/removed(mob/target)
/obj/item/weapon/implant/loyalty/removed(mob/target, var/silent = 0)
if(..())
if(target.stat != DEAD)
if(target.stat != DEAD && !silent)
target << "<span class='boldnotice'>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</span>"
return 1
return 0
@@ -0,0 +1,51 @@
/obj/item/weapon/storage/internal/implant
name = "bluespace pocket"
max_w_class = 3
max_combined_w_class = 6
cant_hold = list(/obj/item/weapon/disk/nuclear)
silent = 1
/obj/item/weapon/implant/storage
name = "storage implant"
desc = "Stores up to two big items in a bluespace pocket."
icon_state = "storage"
origin_tech = "materials=2;magnets=4;bluespace=4;syndicate=4"
item_color = "r"
var/obj/item/weapon/storage/internal/implant/storage
/obj/item/weapon/implant/storage/New()
..()
storage = new /obj/item/weapon/storage/internal/implant(src)
/obj/item/weapon/implant/storage/activate()
storage.MouseDrop(imp_in)
/obj/item/weapon/implant/storage/removed(source)
if(..())
storage.close_all()
for(var/obj/item/I in storage)
storage.remove_from_storage(I, get_turf(source))
return 1
/obj/item/weapon/implant/storage/implant(mob/source)
var/obj/item/weapon/implant/storage/imp_e = locate(src.type) in source
if(imp_e)
imp_e.storage.storage_slots += storage.storage_slots
imp_e.storage.max_combined_w_class += storage.max_combined_w_class
imp_e.storage.contents += storage.contents
storage.close_all()
storage.show_to(source)
qdel(src)
return 1
return ..()
/obj/item/weapon/implanter/storage
name = "implanter (storage)"
/obj/item/weapon/implanter/storage/New()
imp = new /obj/item/weapon/implant/storage(src)
..()
@@ -12,7 +12,7 @@
/obj/item/weapon/implant/uplink/implant(mob/source)
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
if(imp_e)
if(imp_e && imp_e != src)
imp_e.hidden_uplink.uses += hidden_uplink.uses
qdel(src)
return 1
@@ -299,24 +299,31 @@
slowdown = 1
max_combined_w_class = 27
/obj/item/weapon/storage/backpack/dufflebag/syndiemed
/obj/item/weapon/storage/backpack/dufflebag/syndie
name = "suspicious looking dufflebag"
desc = "A large dufflebag for holding extra tactical supplies."
icon_state = "duffle-syndie"
item_state = "duffle-syndiemed"
origin_tech = "syndicate=1"
silent = 1
slowdown = 0
/obj/item/weapon/storage/backpack/dufflebag/syndie/med
name = "medical dufflebag"
desc = "A large dufflebag for holding extra tactical medical supplies."
icon_state = "duffle-syndiemed"
item_state = "duffle-syndiemed"
slowdown = 0
/obj/item/weapon/storage/backpack/dufflebag/syndieammo
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo
name = "ammunition dufflebag"
desc = "A large dufflebag for holding extra weapons ammunition and supplies."
icon_state = "duffle-syndieammo"
item_state = "duffle-syndieammo"
slowdown = 0
/obj/item/weapon/storage/backpack/dufflebag/syndieammo/loaded
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded
desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo."
/obj/item/weapon/storage/backpack/dufflebag/syndieammo/loaded/New()
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded/New()
..()
contents = list()
new /obj/item/ammo_box/magazine/m12g(src)
@@ -330,14 +337,14 @@
new /obj/item/ammo_box/magazine/m12g/dragon(src)
return
/obj/item/weapon/storage/backpack/dufflebag/syndiesurgery
name = "Syndicate surgery dufflebag"
desc = "A menacingly looking dufflebag for holding surgery tools."
/obj/item/weapon/storage/backpack/dufflebag/syndie/surgery
name = "surgery dufflebag"
desc = "A suspicious looking dufflebag for holding surgery tools."
icon_state = "duffle-syndiemed"
item_state = "duffle-syndiemed"
storage_slots = 10
/obj/item/weapon/storage/backpack/dufflebag/syndiesurgery/New()
/obj/item/weapon/storage/backpack/dufflebag/syndie/surgery/New()
..()
contents = list()
new /obj/item/weapon/scalpel(src)
@@ -0,0 +1,42 @@
/obj/item/weapon/storage/internal
storage_slots = 2
max_w_class = 2
max_combined_w_class = 4
w_class = 4
var/priority = 1
/*obj/item/weapon/storage/internal/pocket/New()
..()
if(loc) name = loc.name
/obj/item/weapon/storage/internal/pocket/big
max_w_class = 3
max_combined_w_class = 6
/obj/item/weapon/storage/internal/pocket/small
storage_slots = 1
max_combined_w_class = 2
priority = 0
/obj/item/weapon/storage/internal/pocket/tiny
storage_slots = 1
max_w_class = 1
max_combined_w_class = 1
priority = 0
/obj/item/weapon/storage/internal/pocket/small/detective
priority = 1
/obj/item/weapon/storage/internal/pocket/small/detective/New()
..()
new /obj/item/weapon/reagent_containers/food/drinks/flask/det(src)
proc/isstorage(var/atom/A)
if(istype(A, /obj/item/weapon/storage))
return 1
if(istype(A, /obj/item/clothing))
var/obj/item/clothing/C = A
if(C.pockets) return 1*/
@@ -9,6 +9,7 @@
name = "storage"
icon = 'icons/obj/storage.dmi'
w_class = 3.0
var/silent = 0 // No message on putting items in
var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else)
var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage
@@ -292,6 +293,8 @@
if(usr)
if(!usr.unEquip(W))
return 0
if(silent)
prevent_warning = 1
W.loc = src
W.on_enter_storage(src)
if(usr)
@@ -454,6 +457,9 @@
/obj/item/weapon/storage/Destroy()
for(var/obj/O in contents)
O.mouse_opacity = initial(O.mouse_opacity)
close_all()
qdel(boxes)
qdel(closer)
@@ -71,6 +71,7 @@
icon_state = "syndicate"
item_state = "toolbox_syndi"
origin_tech = "combat=1;syndicate=1"
silent = 1
force = 15
throwforce = 18
@@ -82,7 +83,7 @@
new /obj/item/weapon/crowbar/red(src)
new /obj/item/weapon/wirecutters(src, "red")
new /obj/item/device/multitool(src)
new /obj/item/clothing/gloves/color/red/insulated(src)
new /obj/item/clothing/gloves/combat(src)
/obj/item/weapon/storage/toolbox/drone
name = "mechanical toolbox"
@@ -58,6 +58,7 @@
new /obj/item/weapon/implanter/emp(src)
new /obj/item/weapon/implanter/adrenalin(src)
new /obj/item/weapon/implanter/explosive(src)
new /obj/item/weapon/implanter/storage(src)
return
if("hacker")
@@ -148,6 +149,15 @@
return
/obj/item/weapon/storage/box/syndie_kit/imp_storage
name = "boxed storage implant (with injector)"
/obj/item/weapon/storage/box/syndie_kit/imp_storage/New()
..()
new /obj/item/weapon/implanter/storage(src)
return
/obj/item/weapon/storage/box/syndie_kit/space
name = "boxed space suit and helmet"
can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)
@@ -173,6 +183,7 @@
/obj/item/weapon/storage/box/syndie_kit/chemical
name = "boxed chemical kit"
storage_slots = 14
/obj/item/weapon/storage/box/syndie_kit/chemical/New()
..()