Merge branch 'master' of https://github.com/PolarisSS13/Polaris into roboticsandcells

This commit is contained in:
Yoshax
2016-05-04 18:50:40 +01:00
210 changed files with 1733 additions and 1046 deletions
@@ -24,6 +24,10 @@
/obj/machinery/atmospherics/unary/freezer/New()
..()
initialize_directions = dir
/obj/machinery/atmospherics/unary/freezer/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
@@ -25,6 +25,9 @@
..()
initialize_directions = dir
/obj/machinery/atmospherics/unary/heater/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
+1 -1
View File
@@ -391,7 +391,7 @@
switch(href_list["common"])
if("undress")
for(var/obj/item/W in current)
current.removeItem(W, force = 1)
current.drop_from_inventory(W)
if("takeuplink")
take_uplink()
memory = null//Remove any memory they may have had.
+3 -1
View File
@@ -1551,7 +1551,9 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
contains = list(/obj/item/device/pipe_painter,
/obj/item/device/pipe_painter,
/obj/item/device/floor_painter,
/obj/item/device/floor_painter)
/obj/item/device/floor_painter,
/obj/item/device/closet_painter,
/obj/item/device/closet_painter)
/datum/supply_packs/randomised/exosuit_mod
+3 -2
View File
@@ -100,7 +100,7 @@
user.visible_message("<span class='warning'>[user] has unsheathed \a [concealed_blade] from \his [src]!</span>", "You unsheathe \the [concealed_blade] from \the [src].")
// Calling drop/put in hands to properly call item drop/pickup procs
playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1)
user.removeItem(src)
user.drop_from_inventory(src)
user.put_in_hands(concealed_blade)
user.put_in_hands(src)
user.update_inv_l_hand(0)
@@ -112,7 +112,8 @@
/obj/item/weapon/cane/concealed/attackby(var/obj/item/weapon/material/butterfly/W, var/mob/user)
if(!src.concealed_blade && istype(W))
user.visible_message("<span class='warning'>[user] has sheathed \a [W] into \his [src]!</span>", "You sheathe \the [W] into \the [src].")
user.removeItem(W, src)
user.drop_from_inventory(W)
W.loc = src
src.concealed_blade = W
update_icon()
else
+2 -1
View File
@@ -6,7 +6,8 @@
// This could use work.
if(flags & ANTAG_CLEAR_EQUIPMENT)
for(var/obj/item/thing in player.contents)
if(player.removeItem(thing, force = 1))
player.drop_from_inventory(thing)
if(thing.loc != player)
qdel(thing)
return 1
+4 -6
View File
@@ -3,7 +3,7 @@ var/datum/antagonist/renegade/renegades
/datum/antagonist/renegade
role_text = "Renegade"
role_text_plural = "Renegades"
welcome_text = "Something's going to go wrong today, you can just feel it. Your paranoid, you've got a gun, and you're going to survive."
welcome_text = "Something's going to go wrong today, you can just feel it. You're paranoid, you've got a gun, and you're going to survive."
antag_text = "You are a <b>minor</b> antagonist! Within the rules, \
try to protect yourself and what's important to you. You aren't here to cause trouble, \
you're just more willing (and equipped) to go to extremes to stop it than others are. \
@@ -15,13 +15,11 @@ var/datum/antagonist/renegade/renegades
id = MODE_RENEGADE
flags = ANTAG_SUSPICIOUS | ANTAG_IMPLANT_IMMUNE | ANTAG_RANDSPAWN | ANTAG_VOTABLE
hard_cap = 5
hard_cap_round = 7
hard_cap = 8
hard_cap_round = 12
initial_spawn_req = 3
initial_spawn_target = 6
initial_spawn_req = 2
initial_spawn_target = 4
var/list/spawn_guns = list(
/obj/item/weapon/gun/energy/laser,
+2 -2
View File
@@ -22,7 +22,7 @@
for(var/obj/item/W in (H.contents-implants))
if (W==H.w_uniform) // will be teared
continue
H.removeItem(W, force = 1)
H.drop_from_inventory(W)
M.transforming = 1
M.canmove = 0
M.icon = null
@@ -90,7 +90,7 @@
W.loc = null
if(!connected)
for(var/obj/item/W in (Mo.contents-implants))
Mo.removeItem(W, force = 1)
Mo.drop_from_inventory(W)
M.transforming = 1
M.canmove = 0
M.icon = null
@@ -79,7 +79,7 @@
organ.implants -= src
host.pinned -= src
host.embedded -= src
host.removeItem(src, force = 1)
host.drop_from_inventory(src)
spawn(1)
if(src)
qdel(src)
@@ -78,7 +78,7 @@
qdel(animation)
for(var/obj/item/W in src)
C.removeItem(W, force = 1)
C.drop_from_inventory(W)
var/mob/living/carbon/human/O = new /mob/living/carbon/human( src )
if (C.dna.GetUIState(DNA_UI_GENDER))
+5 -3
View File
@@ -346,6 +346,7 @@ var/list/sacrificed = list()
for(var/mob/observer/dead/O in loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!(O.client.prefs.be_special & BE_CULTIST)) continue
ghost = O
break
@@ -442,6 +443,7 @@ var/list/sacrificed = list()
if(!O.client) continue
if(!O.MayRespawn()) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!(O.client.prefs.be_special & BE_CULTIST)) continue
ghost = O
break
if(!ghost)
@@ -830,11 +832,11 @@ var/list/sacrificed = list()
return
cultist.buckled = null
if (cultist.handcuffed)
cultist.removeItem(cultist.handcuffed, force = 1)
cultist.drop_from_inventory(cultist.handcuffed)
if (cultist.legcuffed)
cultist.removeItem(cultist.legcuffed, force = 1)
cultist.drop_from_inventory(cultist.legcuffed)
if (istype(cultist.wear_mask, /obj/item/clothing/mask/muzzle))
cultist.removeItem(cultist.wear_mask, force = 1)
cultist.drop_from_inventory(cultist.wear_mask)
if(istype(cultist.loc, /obj/structure/closet)&&cultist.loc:welded)
cultist.loc:welded = 0
if(istype(cultist.loc, /obj/structure/closet/secure_closet)&&cultist.loc:locked)
@@ -93,7 +93,7 @@
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
user.removeItem(W, force = 1)
user.drop_from_inventory(W)
Consume(W)
+3 -3
View File
@@ -3,9 +3,9 @@
round_description = "Subversive elements have invaded the station, and certain individuals are feeling uncertain about their safety."
extended_round_description = "Traitors and renegades spawn during this round."
config_tag = "traitorren"
required_players = 10 //I don't think we can have it lower and not need an ERT every round.
required_players = 11 //I don't think we can have it lower and not need an ERT every round.
required_players_secret = 11 //I don't think we can have it lower and not need an ERT every round.
required_enemies = 4
end_on_antag_death = 0
antag_tags = list(MODE_TRAITOR, MODE_RENEGADE)
require_all_templates = 1
antag_tags = list(MODE_AUTOTRAITOR, MODE_RENEGADE)
require_all_templates = 1
+59 -1
View File
@@ -9,6 +9,7 @@
use_power = 1
idle_power_usage = 40
interact_offline = 1
circuit = /obj/item/weapon/circuitboard/sleeper_console
//obj/machinery/sleep_console/New()
//..()
@@ -32,8 +33,39 @@
/obj/machinery/sleep_console/attack_hand(var/mob/user)
if(..())
return 1
if(connected)
connected.ui_interact(user)
connected.ui_interact(user)
/obj/machinery/sleep_console/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
user << "<span class='notice'>You start disconnecting the monitor.</span>"
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/item/weapon/circuitboard/M = new circuit( A )
A.circuit = M
A.anchored = 1
A.density = 1
A.frame_type = M.board_type
for (var/obj/C in src)
C.forceMove(loc)
if (src.stat & BROKEN)
user << "<span class='notice'>The broken glass falls out.</span>"
new /obj/item/weapon/material/shard( src.loc )
A.state = 3
A.icon_state = "[A.frame_type]_3"
else
user << "<span class='notice'>You disconnect the monitor.</span>"
A.state = 4
A.icon_state = "[A.frame_type]_4"
A.pixel_x = pixel_x
A.pixel_y = pixel_y
A.dir = dir
M.deconstruct(src)
qdel(src)
else
src.attack_hand(user)
return
/obj/machinery/sleep_console/power_change()
..()
@@ -49,6 +81,7 @@
icon_state = "sleeper_0"
density = 1
anchored = 1
circuit = /obj/item/weapon/circuitboard/sleeper
var/mob/living/carbon/human/occupant = null
var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
var/obj/item/weapon/reagent_containers/glass/beaker = null
@@ -59,8 +92,29 @@
active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors.
/obj/machinery/sleeper/New()
..()
spawn(5)
//src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir))
var/obj/machinery/sleep_console/C = locate(/obj/machinery/sleep_console) in range(2,src)
if(C)
C.connected = src
return
return
/obj/machinery/sleeper/map/New()
..()
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src)
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/weapon/reagent_containers/syringe(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
/obj/machinery/sleeper/initialize()
update_icon()
@@ -156,6 +210,10 @@
return 1
/obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user)
if(default_deconstruction_screwdriver(user, I))
return
if(default_deconstruction_crowbar(user, I))
return
add_fingerprint(user)
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!beaker)
+80 -22
View File
@@ -9,11 +9,31 @@
icon_state = "body_scanner_0"
density = 1
anchored = 1
circuit = /obj/item/weapon/circuitboard/body_scanner
use_power = 1
idle_power_usage = 60
active_power_usage = 10000 //10 kW. It's a big all-body scanner.
/obj/machinery/bodyscanner/New()
..()
spawn( 5 )
var/obj/machinery/body_scanconsole/C = locate(/obj/machinery/body_scanconsole) in range(2,src)
if(C)
C.connected = src
return
return
/obj/machinery/bodyscanner/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
/obj/machinery/bodyscanner/relaymove(mob/user as mob)
if (user.stat)
return
@@ -73,29 +93,36 @@
src.icon_state = "body_scanner_0"
return
/obj/machinery/bodyscanner/attackby(obj/item/weapon/grab/G as obj, user as mob)
if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
/obj/machinery/bodyscanner/attackby(var/obj/item/G, user as mob)
if(default_deconstruction_screwdriver(user, G))
return
if (src.occupant)
user << "<span class='warning'>The scanner is already occupied!</span>"
if(default_deconstruction_crowbar(user, G))
return
if (G.affecting.abiotic())
user << "<span class='warning'>Subject cannot have abiotic items on.</span>"
return
var/mob/M = G.affecting
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.loc = src
src.occupant = M
update_use_power(2)
src.icon_state = "body_scanner_1"
for(var/obj/O in src)
O.loc = src.loc
//Foreach goto(154)
src.add_fingerprint(user)
//G = null
qdel(G)
if(istype(G, /obj/item/weapon/grab))
var/obj/item/weapon/grab/H = G
if(!(ismob(H.affecting)))
return
if (src.occupant)
user << "<span class='warning'>The scanner is already occupied!</span>"
return
if (H.affecting.abiotic())
user << "<span class='warning'>Subject cannot have abiotic items on.</span>"
return
var/mob/M = H.affecting
if (M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
M.loc = src
src.occupant = M
update_use_power(2)
src.icon_state = "body_scanner_1"
for(var/obj/O in src)
O.loc = src.loc
//Foreach goto(154)
src.add_fingerprint(user)
//G = null
qdel(G)
return
/obj/machinery/bodyscanner/ex_act(severity)
@@ -166,11 +193,12 @@
dir = 8
density = 0
anchored = 1
circuit = /obj/item/weapon/circuitboard/scanner_console
/obj/machinery/body_scanconsole/New()
..()
spawn( 5 )
src.connected = locate(/obj/machinery/bodyscanner, get_step(src, WEST)) //We assume dir = 8 so scanner is WEST. Other sprites do exist.
src.connected = locate(/obj/machinery/bodyscanner) in range(2,src)
return
return
@@ -228,6 +256,36 @@
user << browse(dat, "window=scanconsole;size=430x600")
return
/obj/machinery/body_scanconsole/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
user << "<span class='notice'>You start disconnecting the monitor.</span>"
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/item/weapon/circuitboard/M = new circuit( A )
A.circuit = M
A.anchored = 1
A.density = 1
A.frame_type = M.board_type
for (var/obj/C in src)
C.forceMove(loc)
if (src.stat & BROKEN)
user << "<span class='notice'>The broken glass falls out.</span>"
new /obj/item/weapon/material/shard( src.loc )
A.state = 3
A.icon_state = "[A.frame_type]_3"
else
user << "<span class='notice'>You disconnect the monitor.</span>"
A.state = 4
A.icon_state = "[A.frame_type]_4"
A.pixel_x = pixel_x
A.pixel_y = pixel_y
A.dir = dir
M.deconstruct(src)
qdel(src)
else
src.attack_hand(user)
return
/obj/machinery/body_scanconsole/Topic(href, href_list)
if (..())
+6 -3
View File
@@ -23,12 +23,14 @@
var/datum/wires/autolathe/wires = null
/obj/machinery/autolathe/New()
..()
wires = new(src)
/obj/machinery/autolathe/map/New()
..()
//Create parts for lathe.
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
@@ -196,7 +198,8 @@
var/obj/item/stack/stack = eating
stack.use(max(1, round(total_used/mass_per_sheet))) // Always use at least 1 to prevent infinite materials.
else
user.deleteItem(O)
user.remove_from_mob(O)
qdel(O)
updateUsrDialog()
return
+5 -10
View File
@@ -226,26 +226,21 @@
path = /obj/item/weapon/circuitboard/fax
category = "Engineering"
/datum/autolathe/recipe/conveyor
name = "conveyor electronics"
path = /obj/item/weapon/circuitboard/conveyor
category = "Engineering"
/datum/autolathe/recipe/microwave
name = "microwave electronics"
path = /obj/item/weapon/circuitboard/microwave
category = "Engineering"
/datum/autolathe/recipe/vending
name = "vending machine electronics"
path = /obj/item/weapon/circuitboard/vending
category = "Engineering"
/datum/autolathe/recipe/washing
name = "washing machine electronics"
path = /obj/item/weapon/circuitboard/washing
category = "Engineering"
/datum/autolathe/recipe/request
name = "request console electronics"
path = /obj/item/weapon/circuitboard/request
category = "Engineering"
/datum/autolathe/recipe/motor
name = "motor"
path = /obj/item/weapon/stock_parts/motor
+8 -3
View File
@@ -21,8 +21,11 @@
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
beaker = new /obj/item/weapon/reagent_containers/glass/bottle(src)
/obj/machinery/biogenerator/map/New()
..()
beaker = new /obj/item/weapon/reagent_containers/glass/bottle(src)
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
@@ -52,7 +55,8 @@
if(beaker)
user << "<span class='notice'>]The [src] is already loaded.</span>"
else
user.removeItem(O, src)
user.remove_from_mob(O)
O.loc = src
beaker = O
updateUsrDialog()
else if(processing)
@@ -83,7 +87,8 @@
if(i >= 10)
user << "<span class='notice'>\The [src] is full! Activate it.</span>"
else
user.removeItem(O, src)
user.remove_from_mob(O)
O.loc = src
user << "<span class='notice'>You put \the [O] in \the [src]</span>"
update_icon()
return
@@ -127,7 +127,8 @@
if(is_type_in_list(W, possible_upgrades) && !is_type_in_list(W, upgrades)) // Is a possible upgrade and isn't in the camera already.
user << "You attach \the [W] into the assembly inner circuits."
upgrades += W
user.removeItem(W, src)
user.remove_from_mob(W)
W.loc = src
return
// Taking out upgrades
+2 -1
View File
@@ -45,8 +45,9 @@
var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk
var/biomass = CLONE_BIOMASS * 3
/obj/machinery/clonepod/New()
/obj/machinery/clonepod/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+8 -3
View File
@@ -59,9 +59,13 @@
if(!istype(id_card))
return ..()
if(!scan && (access_change_ids in id_card.access) && user.removeItem(id_card, src))
if(!scan && (access_change_ids in id_card.access) && user.unEquip(id_card))
user.drop_item()
id_card.forceMove(src)
scan = id_card
else if(!modify && user.removeItem(id_card, src))
else if(!modify)
user.drop_item()
id_card.forceMove(src)
modify = id_card
nanomanager.update_uis(src)
@@ -153,7 +157,8 @@
modify = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.removeItem(I, src))
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
I.forceMove(src)
modify = I
if ("scan")
+5 -2
View File
@@ -61,6 +61,7 @@
..()
uid = "[rand(100,999)]-G[rand(10,99)]"
/obj/machinery/computer/guestpass/attackby(obj/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
user << "<span class='notice'>You start disconnecting the monitor.</span>"
@@ -82,7 +83,8 @@
qdel(src)
return
if(istype(I, /obj/item/weapon/card/id))
if(!giver && user.removeItem(I, src))
if(!giver && user.unEquip(I))
I.forceMove(src)
giver = I
updateUsrDialog()
else if(giver)
@@ -175,7 +177,8 @@
accesses.Cut()
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.removeItem(I, src))
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
I.loc = src
giver = I
updateUsrDialog()
+2 -1
View File
@@ -36,7 +36,8 @@
return
/obj/machinery/computer/med_data/attackby(var/obj/item/O, var/mob/user)
if(istype(O, /obj/item/weapon/card/id) && !scan && user.removeItem(O, src))
if(istype(O, /obj/item/weapon/card/id) && !scan && user.unEquip(O))
O.loc = src
scan = O
user << "You insert \the [O]."
else
+2 -1
View File
@@ -248,7 +248,8 @@ What a mess.*/
scan = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.removeItem(I, src))
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
I.loc = src
scan = I
if("Log Out")
+4 -2
View File
@@ -25,7 +25,8 @@
var/order = 1 // -1 = Descending - 1 = Ascending
/obj/machinery/computer/skills/attackby(obj/item/O as obj, var/mob/user)
if(istype(O, /obj/item/weapon/card/id) && !scan && user.removeItem(O, src))
if(istype(O, /obj/item/weapon/card/id) && !scan && user.unEquip(O))
O.loc = src
scan = O
user << "You insert [O]."
else
@@ -184,7 +185,8 @@ What a mess.*/
scan = null
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && usr.removeItem(I, src))
if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I))
I.loc = src
scan = I
if("Log Out")
@@ -154,7 +154,7 @@
if(isobj(obj))
var/mob/M = obj.loc
if(ismob(M))
M.removeItem(obj)
M.remove_from_mob(obj)
M.update_icons() //so their overlays update
if(!silent)
+2 -1
View File
@@ -386,7 +386,8 @@
/obj/machinery/cryopod/proc/despawn_occupant()
//Drop all items into the pod.
for(var/obj/item/W in occupant)
occupant.removeItem(W, src, force = 1)
occupant.drop_from_inventory(W)
W.forceMove(src)
if(W.contents.len) //Make sure we catch anything not handled by qdel() on the items.
for(var/obj/item/O in W.contents)
+1 -1
View File
@@ -18,7 +18,7 @@
// Proc: New()
// Parameters: None
// Description: Adds components to the machine for deconstruction.
/obj/machinery/exonet_node/New()
/obj/machinery/exonet_node/map/New()
..()
component_parts = list()
+51 -18
View File
@@ -13,10 +13,13 @@
var/list/req_component_names = null
var/list/alarms = list("firealarm", "airalarm", "intercom", "keycard")
var/list/machines = list("machine", "photocopier", "fax", "microwave", "conveyor", "vending", "recharger", "wrecharger", "washing", "grinder")
var/list/computers = list("computer", "holopad")
var/list/displays = list("display", "guestpass", "newscaster", "atm")
var/list/no_circuit = list("wrecharger", "recharger", "grinder","conveyor")
var/list/machines = list(
"machine", "photocopier", "fax", "microwave", "conveyor", "recharger", "wrecharger",
"washing", "grinder", "teleporter_hub", "teleporter_station", "medpod", "dna_analyzer",
"massdriver")
var/list/computers = list("computer", "holopad", "console")
var/list/displays = list("display", "guestpass", "newscaster", "atm", "request")
var/list/no_circuit = list("wrecharger", "recharger", "grinder", "conveyor", "massdriver")
/obj/structure/frame/proc/update_desc()
var/D
@@ -35,15 +38,16 @@
req_components[A] = circuit.req_components[A]
req_component_names = circuit.req_components.Copy()
for(var/A in req_components)
var/cp = text2path(A)
var/obj/ct = new cp() // have to quickly instantiate it get name
req_component_names[A] = ct.name
var/obj/ct = A
req_component_names[A] = initial(ct.name)
/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/obj/item/frame/frame_type, mob/user as mob)
..()
if(building)
src.frame_type = frame_type
icon_state = "[frame_type]_0"
if(dir)
src.set_dir(dir)
if(frame_type in alarms)
if(loc)
@@ -69,7 +73,7 @@
if(loc)
src.loc = loc
if(frame_type == "display" || frame_type == "atm")
if(frame_type == "display" || frame_type == "atm" || frame_type == "request")
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0
@@ -104,8 +108,8 @@
circuit = new /obj/item/weapon/circuitboard/grinder(src)
if(frame_type == "conveyor")
circuit = new /obj/item/weapon/circuitboard/conveyor(src)
if(dir)
src.set_dir(dir)
if(frame_type == "massdriver")
circuit = new /obj/item/weapon/circuitboard/mass_driver(src)
if(frame_type == "computer")
density = 1
@@ -214,12 +218,25 @@
if(component_check)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir)
if(!new_machine.component_parts)
for(var/obj/O in src.components)
O.forceMove(null)
new_machine.RefreshParts()
if(new_machine.component_parts)
new_machine.component_parts.Cut()
else
new_machine.component_parts = list()
src.circuit.construct(new_machine)
for(var/obj/O in src.components)
if(circuit.contain_parts)
O.loc = new_machine
else
O.loc = null
new_machine.component_parts += O
circuit.loc = null
new_machine.circuit = circuit
new_machine.RefreshParts()
new_machine.pixel_x = src.pixel_x
new_machine.pixel_y = src.pixel_y
qdel(src)
@@ -243,6 +260,7 @@
var/obj/machinery/B = new src.circuit.build_path ( src.loc )
B.pixel_x = src.pixel_x
B.pixel_y = src.pixel_y
B.set_dir(dir)
src.circuit.construct(B)
qdel(src)
return
@@ -253,6 +271,7 @@
var/obj/machinery/B = new src.circuit.build_path ( src.loc )
B.pixel_x = src.pixel_x
B.pixel_y = src.pixel_y
B.set_dir(dir)
src.circuit.construct(B)
qdel(src)
return
@@ -386,13 +405,13 @@
if(state == 3)
if(frame_type in machines)
for(var/I in req_components)
if(istype(P, text2path(I)) && (req_components[I] > 0))
if(istype(P, I) && (req_components[I] > 0))
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(istype(P, /obj/item/stack))
var/obj/item/stack/CP = P
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CP = P
if(CP.get_amount() > 1)
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
var/obj/item/stack/CC = new /obj/item/stack(src)
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src)
CC.amount = camt
CC.update_icon()
CP.use(camt)
@@ -400,6 +419,20 @@
req_components[I] -= camt
update_desc()
break
if(istype(P, /obj/item/stack/material/glass/reinforced))
var/obj/item/stack/material/glass/reinforced/CP = P
if(CP.get_amount() > 1)
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
var/obj/item/stack/material/glass/reinforced/CC = new /obj/item/stack/material/glass/reinforced(src)
CC.amount = camt
CC.update_icon()
CP.use(camt)
components += CC
req_components[I] -= camt
update_desc()
break
user.drop_item()
P.forceMove(src)
components += P
+6 -2
View File
@@ -1,4 +1,3 @@
/obj/machinery/microwave
name = "Microwave"
icon = 'icons/obj/kitchen.dmi'
@@ -31,6 +30,9 @@
reagents = new/datum/reagents(100)
reagents.my_atom = src
/obj/machinery/microwave/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
@@ -126,7 +128,9 @@
"<span class='notice'>You add one of [O] to \the [src].</span>")
return
else
user.removeItem(O, src)
// user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete
user.drop_item()
O.loc = src
user.visible_message( \
"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
"<span class='notice'>You add \the [O] to \the [src].</span>")
+2 -1
View File
@@ -218,7 +218,8 @@
user << "<span class='notice'>\The [src] is full.</span>"
return 1
else
user.removeItem(O, src)
user.remove_from_mob(O)
O.loc = src
if(item_quants[O.name])
item_quants[O.name]++
else
+5 -4
View File
@@ -286,8 +286,7 @@ Class Procs:
var/obj/item/weapon/circuitboard/CB = circuit
var/P
for(var/obj/item/weapon/stock_parts/A in component_parts)
for(var/D in CB.req_components)
var/T = text2path(D)
for(var/T in CB.req_components)
if(ispath(A.type, T))
P = T
break
@@ -328,14 +327,14 @@ Class Procs:
/obj/machinery/proc/dismantle()
playsound(loc, 'sound/items/Crowbar.ogg', 50, 1)
var/obj/structure/frame/A = new /obj/structure/frame( src.loc )
var/obj/item/weapon/circuitboard/M = new circuit( A )
var/obj/item/weapon/circuitboard/M = circuit
A.circuit = M
A.anchored = 1
A.density = 1
A.frame_type = M.board_type
if(A.frame_type in A.no_circuit)
A.need_circuit = 0
for (var/obj/D in src)
for (var/obj/D in src.component_parts)
D.forceMove(loc)
if(A.components)
A.components.Cut()
@@ -344,10 +343,12 @@ Class Procs:
component_parts = list()
A.icon_state = "[A.frame_type]_3"
A.state = 3
A.dir = dir
A.pixel_x = pixel_x
A.pixel_y = pixel_y
A.check_components()
A.update_desc()
M.loc = null
M.deconstruct(src)
qdel(src)
return 1
+29
View File
@@ -9,12 +9,41 @@
use_power = 1
idle_power_usage = 2
active_power_usage = 50
circuit = /obj/item/weapon/circuitboard/mass_driver
var/power = 1.0
var/code = 1.0
var/id = 1.0
var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess.
/obj/machinery/mass_driver/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/gear(src)
component_parts += new /obj/item/weapon/stock_parts/gear(src)
component_parts += new /obj/item/weapon/stock_parts/spring(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 5)
RefreshParts()
/obj/machinery/mass_driver/attackby(var/obj/item/I, mob/user)
if(default_deconstruction_screwdriver(user, I))
return
if(default_deconstruction_crowbar(user, I))
return
if(istype(I, /obj/item/device/multitool))
if(panel_open)
var/input = sanitize(input(usr, "What id would you like to give this conveyor?", "Multitool-Conveyor interface", id))
if(!input)
usr << "No input found please hang up and try your call again."
return
id = input
return
return
/obj/machinery/mass_driver/proc/drive(amount)
if(stat & (BROKEN|NOPOWER))
+1 -1
View File
@@ -311,7 +311,7 @@ Buildable meters
/obj/item/pipe/afterattack(turf/simulated/floor/target, mob/user, proximity)
if(!proximity) return
if(istype(target))
user.removeItem(src, target)
user.drop_from_inventory(src, target)
else
return ..()
+2 -2
View File
@@ -746,7 +746,7 @@ var/list/turret_icons
if(isrobot(user))
return
var/obj/item/weapon/gun/energy/E = I //typecasts the item to an energy gun
if(!user.removeItem(I))
if(!user.unEquip(I))
user << "<span class='notice'>\the [I] is stuck to your hand, you cannot put it in \the [src]</span>"
return
installation = I.type //installation becomes I.type
@@ -767,7 +767,7 @@ var/list/turret_icons
if(4)
if(isprox(I))
build_step = 5
if(!user.removeItem(I))
if(!user.unEquip(I))
user << "<span class='notice'>\the [I] is stuck to your hand, you cannot put it in \the [src]</span>"
return
user << "<span class='notice'>You add the prox sensor to the turret.</span>"
+12 -3
View File
@@ -15,9 +15,9 @@ obj/machinery/recharger
var/icon_state_idle = "recharger0" //also when unpowered
var/portable = 1
circuit = /obj/item/weapon/circuitboard/recharger
frame_type = "recharger"
obj/machinery/recharger/New()
obj/machinery/recharger/map/New()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 5)
@@ -171,4 +171,13 @@ obj/machinery/recharger/wallcharger
icon_state_idle = "wrecharger0"
portable = 0
circuit = /obj/item/weapon/circuitboard/recharger/wrecharger
frame_type = "wrecharger"
frame_type = "wrecharger"
obj/machinery/recharger/wallcharger/map/New()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 5)
RefreshParts()
..()
return
+2 -2
View File
@@ -22,9 +22,9 @@
var/weld_power_use = 2300 // power used per point of brute damage repaired. 2.3 kW ~ about the same power usage of a handheld arc welder
var/wire_power_use = 500 // power used per point of burn damage repaired.
/obj/machinery/recharge_station/New()
/obj/machinery/recharge_station/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+25 -22
View File
@@ -28,6 +28,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
anchored = 1
icon = 'icons/obj/terminals.dmi'
icon_state = "req_comp0"
circuit = /obj/item/weapon/circuitboard/request
var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department
var/list/message_log = list() //List of all messages
var/departmentType = 0 //Bitflag. Zero is reply-only. Map currently uses raw numbers instead of defines.
@@ -79,7 +80,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
req_console_supplies |= department
if (departmentType & RC_INFO)
req_console_information |= department
set_light(1)
/obj/machinery/requests_console/Destroy()
@@ -199,27 +200,29 @@ var/list/obj/machinery/requests_console/allConsoles = list()
//err... hacking code, which has no reason for existing... but anyway... it was once supposed to unlock priority 3 messanging on that console (EXTREME priority...), but the code for that was removed.
/obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob)
/*
if (istype(O, /obj/item/weapon/crowbar))
if(open)
open = 0
icon_state="req_comp0"
else
open = 1
if(hackState == 0)
icon_state="req_comp_open"
else if(hackState == 1)
icon_state="req_comp_rewired"
if (istype(O, /obj/item/weapon/screwdriver))
if(open)
if(hackState == 0)
hackState = 1
icon_state="req_comp_rewired"
else if(hackState == 1)
hackState = 0
icon_state="req_comp_open"
else
user << "You can't do much with that."*/
if(default_deconstruction_screwdriver(user, O))
return
if(default_deconstruction_crowbar(user, O))
return
if(istype(O, /obj/item/device/multitool))
if(panel_open)
var/input = sanitize(input(usr, "What Department id would you like to give this Request Console?", "Multitool-Request Console interface", department))
if(!input)
usr << "No input found please hang up and try your call again."
return
department = input
announcement.title = "[department] announcement"
announcement.newscast = 1
name = "[department] Requests Console"
allConsoles += src
if (departmentType & RC_ASSIST)
req_console_assistance |= department
if (departmentType & RC_SUPPLY)
req_console_supplies |= department
if (departmentType & RC_INFO)
req_console_information |= department
return
if (istype(O, /obj/item/weapon/card/id))
if(inoperable(MAINT)) return
+1 -1
View File
@@ -11,7 +11,7 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob
// Fruits and vegetables.
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown) || istype(O, /obj/item/weapon/grown))
user.removeItem(O)
user.remove_from_mob(O)
var/datum/seed/new_seed_type
if(istype(O, /obj/item/weapon/grown))
+2 -1
View File
@@ -17,7 +17,8 @@
return
var/obj/S = new deploy_path(get_turf(user))
user.visible_message("<span class='notice'>\The [user] deploys \the [S].</span>")
user.deleteItem(src)
user.unEquip(src)
qdel(src)
/obj/machinery/power/supply_beacon
name = "supply beacon"
+27
View File
@@ -170,6 +170,7 @@
use_power = 1
idle_power_usage = 10
active_power_usage = 2000
circuit = /obj/item/weapon/circuitboard/teleporter_hub
var/obj/machinery/computer/teleporter/com
@@ -178,6 +179,21 @@
underlays.Cut()
underlays += image('icons/obj/stationobjs.dmi', icon_state = "tele-wires")
/obj/machinery/teleport/hub/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/stack/cable_coil(src, 10)
RefreshParts()
/obj/machinery/teleport/hub/Bumped(M as mob|obj)
spawn()
if (src.icon_state == "tele1")
@@ -307,6 +323,7 @@
use_power = 1
idle_power_usage = 10
active_power_usage = 2000
circuit = /obj/item/weapon/circuitboard/teleporter_station
var/obj/machinery/teleport/hub/com
/obj/machinery/teleport/station/New()
@@ -314,6 +331,16 @@
overlays.Cut()
overlays += image('icons/obj/stationobjs.dmi', icon_state = "controller-wires")
/obj/machinery/teleport/station/map/New()
..()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/stack/cable_coil(src, 10)
RefreshParts()
/obj/machinery/teleport/station/attackby(var/obj/item/weapon/W)
src.attack_hand()
+9 -18
View File
@@ -36,8 +36,6 @@
layer = 2.9
anchored = 1
density = 1
circuit = /obj/item/weapon/circuitboard/vending
frame_type = "vending"
var/icon_vend //Icon_state when vending
var/icon_deny //Icon_state when denying access
@@ -96,14 +94,6 @@
/obj/machinery/vending/New()
..()
wires = new(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/spring(src)
component_parts += new /obj/item/weapon/stock_parts/spring(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/stack/material/glass/reinforced(src, 2)
RefreshParts()
spawn(4)
if(src.product_slogans)
src.slogan_list += splittext(src.product_slogans, ";")
@@ -242,9 +232,6 @@
user << "<span class='notice'>You [anchored? "un" : ""]secured \the [src]!</span>"
anchored = !anchored
return
else if(default_deconstruction_crowbar(user, W))
return
else
for(var/datum/data/vending_product/R in product_records)
@@ -273,7 +260,8 @@
cashmoney.worth -= currently_vending.price
if(cashmoney.worth <= 0)
usr.deleteItem(cashmoney)
usr.drop_from_inventory(cashmoney)
qdel(cashmoney)
else
cashmoney.update_icon()
@@ -938,12 +926,15 @@
/obj/item/weapon/circuitboard/airalarm = 10,/obj/item/weapon/circuitboard/firealarm = 10,/obj/item/weapon/circuitboard/status_display = 2,
/obj/item/weapon/circuitboard/ai_status_display = 2,/obj/item/weapon/circuitboard/newscaster = 2,/obj/item/weapon/circuitboard/holopad = 2,
/obj/item/weapon/circuitboard/intercom = 4,/obj/item/weapon/circuitboard/security/telescreen/entertainment = 4,
/obj/item/weapon/circuitboard/atm = 0,/obj/item/weapon/circuitboard/guestpass = 0,/obj/item/weapon/circuitboard/keycard_auth = 0,
/obj/item/weapon/circuitboard/photocopier = 0,/obj/item/weapon/circuitboard/fax = 0,/obj/item/weapon/circuitboard/conveyor = 0,
/obj/item/weapon/circuitboard/microwave = 0,/obj/item/weapon/circuitboard/vending = 0,/obj/item/weapon/circuitboard/washing = 0,
/obj/item/weapon/stock_parts/motor = 0,/obj/item/weapon/stock_parts/spring = 0,/obj/item/weapon/stock_parts/gear = 0)
/obj/item/weapon/stock_parts/motor = 2,/obj/item/weapon/stock_parts/spring = 2,/obj/item/weapon/stock_parts/gear = 2,
/obj/item/weapon/circuitboard/atm,/obj/item/weapon/circuitboard/guestpass,/obj/item/weapon/circuitboard/keycard_auth,
/obj/item/weapon/circuitboard/photocopier,/obj/item/weapon/circuitboard/fax,/obj/item/weapon/circuitboard/request,
/obj/item/weapon/circuitboard/microwave,/obj/item/weapon/circuitboard/washing,/obj/item/weapon/circuitboard/scanner_console,
/obj/item/weapon/circuitboard/sleeper_console,/obj/item/weapon/circuitboard/body_scanner,/obj/item/weapon/circuitboard/sleeper,
/obj/item/weapon/circuitboard/dna_analyzer)
contraband = list(/obj/item/weapon/cell/potato = 3)
premium = list(/obj/item/weapon/storage/belt/utility = 3)
product_records = list()
//This one's from bay12
/obj/machinery/vending/engineering
+19 -9
View File
@@ -22,11 +22,12 @@
if(!build_machine_type)
return
var/ndir
if(!frame_type)
var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Computer", "Machine", "Holopad", "Conveyor",
"Photocopier", "Fax", "Microwave", "Vending Machine",
"Photocopier", "Fax", "Microwave",
"Recharger", "Washing Machine", "Grinder",
"Medical Console", "Medical Pod", "DNA Analyzer",
"Mass Driver",
"Cancel")
if(response == "Cancel")
@@ -37,22 +38,29 @@
switch(response)
if("Holopad")
new /obj/item/stack/material/steel( usr.loc, 1 ) //holopads are smaller, they only need 4 sheets
if("Conveyor")
ndir = get_dir(src,usr)
if (!(ndir in cardinal))
return
if("Fax")
new /obj/item/stack/material/steel( usr.loc, 2 ) //faxes are smaller, they only need 3 sheets
if("Microwave")
new /obj/item/stack/material/steel( usr.loc, 1 ) //microwaves are smaller, they only need 4 sheets
if("Vending Machine")
frame_type = "vending"
if("Recharger")
new /obj/item/stack/material/steel( usr.loc, 2 ) //rechargers are smaller, they only need 3 sheets
if("Washing Machine")
frame_type = "washing"
if("Grinder")
new /obj/item/stack/material/steel( usr.loc, 2 ) //grinders are smaller, they only need 3 sheets
if("Medical Console")
frame_type = "console"
if("Medical Pod")
frame_type = "medpod"
if("DNA Analyzer")
frame_type = "dna_analyzer"
if("Mass Driver")
frame_type = "massdriver"
var/ndir
ndir = usr.dir
if (!(ndir in cardinal))
return
var/obj/machinery/M = new build_machine_type(get_turf(src.loc), ndir, 1, frame_type)
M.fingerprints = src.fingerprints
@@ -64,7 +72,7 @@
if(!frame_type)
var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Fire Alarm", "Air Alarm", "Display", "Newscaster",
"ATM", "Guest Pass Console", "Intercom", "Keycard Authenticator",
"Wall Charger",
"Wall Charger", "Supply Request Console",
"Cancel")
if(response == "Cancel")
@@ -92,6 +100,8 @@
if("Wall Charger")
frame_type = "wrecharger"
new /obj/item/stack/material/steel( usr.loc, 2 ) //wall rechargers are smaller, they only need 3 sheets
if("Supply Request Console")
frame_type = "request"
if(!build_machine_type)
return
+2 -1
View File
@@ -21,7 +21,8 @@
var/obj/crayon
var/list/washing = list()
/obj/machinery/washing_machine/New()
/obj/machinery/washing_machine/map/New()
circuit = new circuit(src)
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/motor(src)
component_parts += new /obj/item/weapon/stock_parts/gear(src)
+2 -1
View File
@@ -794,7 +794,8 @@
return
else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
user.removeItem(W, src)
user.drop_from_inventory(W)
W.forceMove(src)
user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src]")
return
+22 -73
View File
@@ -193,7 +193,7 @@ steam.start() -- spawns the effect
affect(M)
/obj/effect/effect/smoke/proc/affect(var/mob/living/carbon/M)
if (istype(M))
if (!istype(M))
return 0
if (M.internal != null)
if(M.wear_mask && (M.wear_mask.item_flags & AIRTIGHT))
@@ -226,6 +226,7 @@ steam.start() -- spawns the effect
/obj/effect/effect/smoke/bad
time_to_live = 200
//var/list/projectiles
/obj/effect/effect/smoke/bad/Move()
..()
@@ -235,70 +236,25 @@ steam.start() -- spawns the effect
/obj/effect/effect/smoke/bad/affect(var/mob/living/carbon/M)
if (!..())
return 0
M.drop_item()
M.adjustOxyLoss(1)
if (M.coughedtime != 1)
M.coughedtime = 1
if(prob(25))
M.emote("cough")
spawn ( 20 )
M.coughedtime = 0
/obj/effect/effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
if(istype(mover, /obj/item/projectile/beam))
var/obj/item/projectile/beam/B = mover
B.damage = (B.damage/2)
/* Not feasile until a later date
/obj/effect/effect/smoke/bad/Crossed(atom/movable/M as mob|obj)
..()
if(istype(M, /obj/item/projectile/beam))
var/obj/item/projectile/beam/B = M
if(!(B in projectiles))
B.damage = (B.damage/2)
projectiles += B
destroyed_event.register(B, src, /obj/effect/effect/smoke/bad/proc/on_projectile_delete)
world << "Damage is: [B.damage]"
return 1
/////////////////////////////////////////////
// Sleep smoke
/////////////////////////////////////////////
/obj/effect/effect/smoke/sleepy
/obj/effect/effect/smoke/sleepy/Move()
..()
for(var/mob/living/carbon/M in get_turf(src))
affect(M)
/obj/effect/effect/smoke/sleepy/affect(mob/living/carbon/M as mob )
if (!..())
return 0
M.drop_item()
M:sleeping += 1
if (M.coughedtime != 1)
M.coughedtime = 1
M.emote("cough")
spawn ( 20 )
M.coughedtime = 0
/////////////////////////////////////////////
// Mustard Gas
/////////////////////////////////////////////
/obj/effect/effect/smoke/mustard
name = "mustard gas"
icon_state = "mustard"
/obj/effect/effect/smoke/mustard/Move()
..()
for(var/mob/living/carbon/human/R in get_turf(src))
affect(R)
/obj/effect/effect/smoke/mustard/affect(var/mob/living/carbon/human/R)
if (!..())
return 0
if (R.wear_suit != null)
return 0
R.burn_skin(0.75)
if (R.coughedtime != 1)
R.coughedtime = 1
R.emote("gasp")
spawn (20)
R.coughedtime = 0
R.updatehealth()
return
/obj/effect/effect/smoke/bad/proc/on_projectile_delete(obj/item/projectile/beam/proj)
projectiles -= proj
*/
/////////////////////////////////////////////
// Smoke spread
@@ -321,7 +277,7 @@ steam.start() -- spawns the effect
if(direct)
direction = direct
/datum/effect/effect/system/smoke_spread/start()
/datum/effect/effect/system/smoke_spread/start(var/I)
var/i = 0
for(i=0, i<src.number, i++)
if(src.total_smoke > 20)
@@ -331,6 +287,7 @@ steam.start() -- spawns the effect
src.location = get_turf(holder)
var/obj/effect/effect/smoke/smoke = PoolOrNew(smoke_type, src.location)
src.total_smoke++
smoke.color = I
var/direction = src.direction
if(!direction)
if(src.cardinals)
@@ -348,14 +305,6 @@ steam.start() -- spawns the effect
/datum/effect/effect/system/smoke_spread/bad
smoke_type = /obj/effect/effect/smoke/bad
/datum/effect/effect/system/smoke_spread/sleepy
smoke_type = /obj/effect/effect/smoke/sleepy
/datum/effect/effect/system/smoke_spread/mustard
smoke_type = /obj/effect/effect/smoke/mustard
/////////////////////////////////////////////
//////// Attach an Ion trail to any object, that spawns when it moves (like for the jetpack)
/// just pass in the object to attach it to in set_up
@@ -507,9 +456,9 @@ steam.start() -- spawns the effect
M << "<span class='warning'>The solution violently explodes.</span>"
explosion(
location,
round(min(devst, BOMBCAP_DVSTN_RADIUS)),
round(min(heavy, BOMBCAP_HEAVY_RADIUS)),
round(min(light, BOMBCAP_LIGHT_RADIUS)),
location,
round(min(devst, BOMBCAP_DVSTN_RADIUS)),
round(min(heavy, BOMBCAP_HEAVY_RADIUS)),
round(min(light, BOMBCAP_LIGHT_RADIUS)),
round(min(flash, BOMBCAP_FLASH_RADIUS))
)
+2 -2
View File
@@ -85,7 +85,7 @@
/obj/item/Destroy()
if(ismob(loc))
var/mob/m = loc
m.removeItem(src, force = 1)
m.drop_from_inventory(src)
m.update_inv_r_hand()
m.update_inv_l_hand()
src.loc = null
@@ -178,7 +178,7 @@
src.throwing = 0
if (src.loc == user)
if(!user.removeItem(src))
if(!user.unEquip(src))
return
else
if(isliving(src.loc))
+4 -2
View File
@@ -1152,13 +1152,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
return 1
else
var/obj/item/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && user.removeItem(I, src))
if (istype(I, /obj/item/weapon/card/id) && user.unEquip(I))
I.loc = src
id = I
return 1
else
var/obj/item/weapon/card/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && I:registered_name && user.removeItem(I, src))
if (istype(I, /obj/item/weapon/card/id) && I:registered_name && user.unEquip(I))
var/obj/old_id = id
I.loc = src
id = I
user.put_in_hands(old_id)
return 1
@@ -0,0 +1,140 @@
/obj/item/device/closet_painter
name = "closet painter"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler1"
item_state = "flight"
var/colour = "plain"
var/colour_secure = "plain"
var/list/colours = list(
"plain" = list("open" = "open", "closed" = "closed"),
"blue" = list("open" = "open", "closed" = "blue"),
"mixed" = list("open" = "open", "closed" = "mixed"),
"grey" = list("open" = "open", "closed" = "grey"),
"green" = list("open" = "open", "closed" = "green"),
"orange" = list("open" = "open", "closed" = "orange"),
"pink" = list("open" = "open", "closed" = "pink"),
"red" = list("open" = "open", "closed" = "red"),
"white" = list("open" = "open", "closed" = "white"),
"yellow" = list("open" = "open", "closed" = "yellow"),
"black" = list("open" = "open", "closed" = "black"),
"bio" = list("open" = "bioopen", "closed" = "bio"),
"bio-virology" = list("open" = "bio_virologyopen", "closed" = "bio_virology"),
"bio-security" = list("open" = "bio_securityopen", "closed" = "bio_security"),
"bio-janitor" = list("open" = "bio_janitoropen", "closed" = "bio_janitor"),
"bio-scientist" = list("open" = "bio_scientistopen", "closed" = "bio_scientist"),
"bombsuit" = list("open" = "bombsuitopen", "closed" = "bombsuit"),
"bombsuit-security" = list("open" = "bombsuitsecopen", "closed" = "bombsuitsec"),
"full-red" = list("open" = "syndicateopen", "closed" = "syndicate"),
"full-green" = list("open" = "syndicate1open", "closed" = "syndicate1"),
"full-purple" = list("open" = "aclosetopen", "closed" = "acloset"),
"mining" = list("open" = "miningopen", "closed" = "mining"),
"emergency" = list("open" = "emergencyopen", "closed" = "emergency"),
"fire" = list("open" = "fireclosetopen", "closed" = "firecloset"),
"tool" = list("open" = "toolclosetopen", "closed" = "toolcloset"),
"radiation" = list("open" = "toolclosetopen", "closed" = "radsuitcloset")
)
var/list/colours_secure = list(
"plain" = list("open" = "open", "closed" = "secure", "locked" = "secure1", "broken" = "securebroken", "off" = "secureoff"),
"medical-red" = list("open" = "medicalopen", "closed" = "medical", "locked" = "medical1", "broken" = "medicalbroken", "off" = "medicaloff"),
"medical-green" = list("open" = "securemedopen", "closed" = "securemed", "locked" = "securemed1", "broken" = "securemedbroken", "off" = "securemedoff"),
"CMO" = list("open" = "cmosecureopen", "closed" = "cmosecure", "locked" = "cmosecure1", "broken" = "cmosecurebroken", "off" = "cmosecureoff"),
"cargo" = list("open" = "securecargoopen", "closed" = "securecargo", "locked" = "securecargo1", "broken" = "securecargobroken", "off" = "securecargooff"),
"mining" = list("open" = "miningsecopen", "closed" = "miningsec", "locked" = "miningsec1", "broken" = "miningsecbroken", "off" = "miningsecoff"),
"QM" = list("open" = "secureqmopen", "closed" = "secureqm", "locked" = "secureqm1", "broken" = "secureqmbroken", "off" = "secureqmoff"),
"hydroponics" = list("open" = "hydrosecureopen", "closed" = "hydrosecure", "locked" = "hydrosecure1", "broken" = "hydrosecurebroken", "off" = "hydrosecureoff"),
"atmospherics" = list("open" = "secureatmopen", "closed" = "secureatm", "locked" = "secureatm1", "broken" = "secureatmbroken", "off" = "secureatmoff"),
"engineer" = list("open" = "secureengopen", "closed" = "secureeng", "locked" = "secureeng1", "broken" = "secureengbroken", "off" = "secureengoff"),
"CE" = list("open" = "secureceopen", "closed" = "securece", "locked" = "securece1", "broken" = "securecebroken", "off" = "secureceoff"),
"electrical" = list("open" = "toolclosetopen", "closed" = "secureengelec", "locked" = "secureengelec1", "broken" = "secureengelecbroken", "off" = "secureengelecoff"),
"welding" = list("open" = "toolclosetopen", "closed" = "secureengweld", "locked" = "secureengweld1", "broken" = "secureengweldbroken", "off" = "secureengweldoff"),
"research" = list("open" = "secureresopen", "closed" = "secureres", "locked" = "secureres1", "broken" = "secureresbroken", "off" = "secureresoff"),
"RD" = list("open" = "rdsecureopen", "closed" = "rdsecure", "locked" = "rdsecure1", "broken" = "rdsecurebroken", "off" = "rdsecureoff"),
"security" = list("open" = "secopen", "closed" = "sec", "locked" = "sec1", "broken" = "secbroken", "off" = "secoff"),
"warden" = list("open" = "wardensecureopen", "closed" = "wardensecure", "locked" = "wardensecure1", "broken" = "wardensecurebroken", "off" = "wardensecureoff"),
"HoS" = list("open" = "hossecureopen", "closed" = "hossecure", "locked" = "hossecure1", "broken" = "hossecurebroken", "off" = "hossecureoff"),
"HoP" = list("open" = "hopsecureopen", "closed" = "hopsecure", "locked" = "hopsecure1", "broken" = "hopsecurebroken", "off" = "hopsecureoff"),
"Captain" = list("open" = "capsecureopen", "closed" = "capsecure", "locked" = "capsecure1", "broken" = "capsecurebroken", "off" = "capsecureoff")
)
/obj/item/device/closet_painter/afterattack(atom/A, var/mob/user, proximity)
if(!proximity)
return
if(!istype(A,/obj/structure/closet))
user << "<span class='warning'>\The [src] can only be used on closets.</span>"
return
var/config_error
if(istype(A,/obj/structure/closet/secure_closet))
var/obj/structure/closet/secure_closet/F = A
if(F.broken)
user << "<span class='warning'>\The [src] cannot paint broken closets.</span>"
return
var/list/colour_data = colours_secure[colour_secure]
if(!islist(colour_data))
config_error = 1
if(!config_error)
F.icon_opened = colour_data["open"]
F.icon_closed = colour_data["closed"]
F.icon_locked = colour_data["locked"]
F.icon_broken = colour_data["broken"]
F.icon_off = colour_data["off"]
F.update_icon()
else
var/obj/structure/closet/F = A
var/list/colour_data = colours[colour]
if(!islist(colour_data))
config_error = 1
if(!config_error)
F.icon_opened = colour_data["open"]
F.icon_closed = colour_data["closed"]
F.update_icon()
if(config_error)
user << "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>"
return
/obj/item/device/closet_painter/attack_self(var/mob/user)
var/choice = input("Do you wish to change the regular closet colour or the secure closet colour?") as null|anything in list("Regular Closet Colour","Secure Closet Colour")
if(choice == "Regular Closet Colour")
choose_colour()
else if(choice == "Secure Closet Colour")
choose_colour_secure()
/obj/item/device/closet_painter/examine(mob/user)
..(user)
user << "It is configured to produce the '[colour]' paint scheme or the '[colour_secure]' secure closet paint scheme."
/obj/item/device/closet_painter/verb/choose_colour()
set name = "Choose Colour"
set desc = "Choose a regular closet painter colour."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
var/new_colour = input("Select a colour.") as null|anything in colours
if(new_colour && !isnull(colours[new_colour]))
colour = new_colour
usr << "<span class='notice'>You set \the [src] regular closet colour to '[colour]'.</span>"
/obj/item/device/closet_painter/verb/choose_colour_secure()
set name = "Choose Secure Colour"
set desc = "Choose a secure closet painter colour."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
var/new_colour_secure = input("Select a colour.") as null|anything in colours_secure
if(new_colour_secure && !isnull(colours_secure[new_colour_secure]))
colour_secure = new_colour_secure
usr << "<span class='notice'>You set \the [src] secure closet colour to '[colour_secure]'.</span>"
+4 -2
View File
@@ -23,7 +23,8 @@
if(!parts)
user << "<span class='warning'>This kit has no parts for this modification left.</span>"
user.deleteItem(src)
user.drop_from_inventory(src)
qdel(src)
return
var/allowed = 0
@@ -58,7 +59,8 @@
parts &= ~MODKIT_SUIT
if(!parts)
user.deleteItem(src)
user.drop_from_inventory(src)
qdel(src)
/obj/item/device/modkit/examine(mob/user)
..(user)
@@ -27,11 +27,13 @@
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
A.icon = 'icons/obj/assemblies.dmi'
user.removeItem(W, A)
user.drop_from_inventory(W)
W.loc = A
W.master = A
A.part1 = W
user.removeItem(src, A)
user.drop_from_inventory(src)
loc = A
master = A
A.part2 = src
@@ -15,6 +15,7 @@ For new antags, make sure to add "player.mind.accept_tcrystals = 1" if you want
/obj/item/device/telecrystal/attack_self(mob/user as mob)
if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals
user.mind.tcrystals += 1
user.deleteItem(src)
user.drop_from_inventory(src)
qdel(src)
return
@@ -47,8 +47,9 @@
if(attached_device)
user << "<span class='warning'>There is already an device attached to the valve, remove it first.</span>"
return
user.removeItem(A, src)
user.remove_from_mob(item)
attached_device = A
A.loc = src
user << "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>"
A.holder = src
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
+2 -1
View File
@@ -72,7 +72,8 @@
return
var/obj/item/weapon/spacecash/S = W
user.visible_message("<span class='notice'>[user] puts [S.worth] [S.worth > 1 ? "thalers" : "thaler"] into \the [src].</span>")
user.removeItem(S, src)
user.drop_from_inventory(S)
S.loc = src
update_icon()
/obj/item/glass_jar/update_icon() // Also updates name and desc
+1 -1
View File
@@ -19,7 +19,7 @@
if(!istype(user))
var/mob/living/temp = user
if(istype(temp))
temp.removeItem(src, force = 1)
temp.drop_from_inventory(src)
qdel(src)
return
+1 -1
View File
@@ -118,7 +118,7 @@
B.loc = get_turf(src)
user << "<span class='notice'>You armed the robot frame.</span>"
if (user.get_inactive_hand()==src)
user.removeItem(src)
user.remove_from_mob(src)
user.put_in_inactive_hand(B)
qdel(src)
else
+1 -1
View File
@@ -187,7 +187,7 @@
amount -= used
if (amount <= 0)
if(usr)
usr.removeItem(src)
usr.remove_from_mob(src)
qdel(src) //should be safe to qdel immediately since if someone is still using this stack it will persist for a little while longer
return 1
else
+2 -1
View File
@@ -51,7 +51,8 @@
if((stored_matter + 10) > 30)
user << "<span class='notice'>The RCD can't hold any more matter-units.</span>"
return
user.deleteItem(W)
user.drop_from_inventory(W)
qdel(W)
stored_matter += 10
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
user << "<span class='notice'>The RCD now holds [stored_matter]/30 matter-units.</span>"
@@ -156,7 +156,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/mob/living/M = loc
if (!nomessage)
M << "<span class='notice'>Your [name] goes out.</span>"
M.removeItem(src) //un-equip it so the overlays can update
M.remove_from_mob(src) //un-equip it so the overlays can update
M.update_inv_wear_mask(0)
M.update_inv_l_hand(0)
M.update_inv_r_hand(1)
@@ -36,6 +36,12 @@
board_type = "atm"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/obj/item/weapon/circuitboard/request
name = T_BOARD("reques console")
build_path = /obj/machinery/requests_console
board_type = "request"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
//Alarm
/obj/item/weapon/circuitboard/firealarm
@@ -70,6 +76,18 @@
board_type = "holopad"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/obj/item/weapon/circuitboard/scanner_console
name = T_BOARD("body scanner console")
build_path = /obj/machinery/body_scanconsole
board_type = "console"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
/obj/item/weapon/circuitboard/sleeper_console
name = T_BOARD("sleeper console")
build_path = /obj/machinery/sleep_console
board_type = "console"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
//Machine
/obj/item/weapon/circuitboard/photocopier
@@ -78,10 +96,10 @@
board_type = "photocopier"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/motor" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1)
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/motor = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/matter_bin = 1)
/obj/item/weapon/circuitboard/fax
name = T_BOARD("fax")
@@ -89,19 +107,19 @@
board_type = "fax"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/motor" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1)
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/motor = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/matter_bin = 1)
/obj/item/weapon/circuitboard/conveyor
name = T_BOARD("conveyor")
build_path = /obj/machinery/conveyor
board_type = "conveyor"
req_components = list(
"/obj/item/weapon/stock_parts/gear" = 2,
"/obj/item/weapon/stock_parts/motor" = 2,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/stock_parts/gear = 2,
/obj/item/weapon/stock_parts/motor = 2,
/obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/microwave
name = T_BOARD("microwave")
@@ -109,29 +127,17 @@
board_type = "microwave"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/stock_parts/motor" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 1)
/obj/item/weapon/circuitboard/vending
name = T_BOARD("vending")
build_path = /obj/machinery/vending
board_type = "vending"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/stock_parts/motor" = 2,
"/obj/item/weapon/stock_parts/spring" = 2,
"/obj/item/stack/material/glass/reinforced" = 2)
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/motor = 1,
/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/recharger
name = T_BOARD("recharger")
build_path = /obj/machinery/recharger
board_type = "recharger"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/recharger/wrecharger
name = T_BOARD("wall recharger")
@@ -144,18 +150,78 @@
board_type = "washing"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/motor" = 1,
"/obj/item/weapon/stock_parts/gear" = 2)
/obj/item/weapon/stock_parts/motor = 1,
/obj/item/weapon/stock_parts/gear = 2)
/obj/item/weapon/circuitboard/grinder
name = T_BOARD("reagent grinder")
build_path = /obj/machinery/reagentgrinder
board_type = "grinder"
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
req_components = list(
"/obj/item/weapon/stock_parts/motor" = 1,
"/obj/item/weapon/stock_parts/gear" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1)
/obj/item/weapon/stock_parts/motor = 1,
/obj/item/weapon/stock_parts/gear = 1,
/obj/item/weapon/reagent_containers/glass/beaker/large = 1)
/obj/item/weapon/circuitboard/teleporter_hub
name = T_BOARD("teleporter hub")
build_path = /obj/machinery/teleport/hub
board_type = "teleporter_hub"
// origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 4)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 4,
/obj/item/weapon/stock_parts/micro_laser = 4,
/obj/item/stack/cable_coil = 10)
/obj/item/weapon/circuitboard/teleporter_station
name = T_BOARD("teleporter station")
build_path = /obj/machinery/teleport/station
board_type = "teleporter_station"
// origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 3)
req_components = list(
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/stack/cable_coil = 10)
/obj/item/weapon/circuitboard/body_scanner
name = T_BOARD("body scanner")
build_path = /obj/machinery/bodyscanner
board_type = "medpod"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 3,
/obj/item/stack/material/glass/reinforced = 2)
/obj/item/weapon/circuitboard/sleeper
name = T_BOARD("sleeper")
build_path = /obj/machinery/sleeper
board_type = "medpod"
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/reagent_containers/glass/beaker = 3,
/obj/item/weapon/reagent_containers/syringe = 3,
/obj/item/stack/material/glass/reinforced = 2)
/obj/item/weapon/circuitboard/dna_analyzer
name = T_BOARD("dna analyzer")
build_path = /obj/machinery/dnaforensics
board_type = "dna_analyzer"
origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2, TECH_DATA = 2)
req_components = list(
/obj/item/weapon/stock_parts/scanning_module = 2,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/mass_driver
name = T_BOARD("mass driver")
build_path = /obj/machinery/mass_driver
board_type = "massdriver"
req_components = list(
/obj/item/weapon/stock_parts/gear = 2,
/obj/item/weapon/stock_parts/motor = 2,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/spring = 1,
/obj/item/stack/cable_coil = 5)
//for testing - If this is still in when I commit, someone shoot me. --leaving in for now, shouldn't be able to get these on station anyways.
/obj/item/weapon/storage/box/frame_parts
@@ -175,7 +241,6 @@
new /obj/item/weapon/circuitboard/photocopier( src )
new /obj/item/weapon/circuitboard/fax( src )
new /obj/item/weapon/circuitboard/microwave( src )
new /obj/item/weapon/circuitboard/vending( src )
new /obj/item/weapon/circuitboard/washing( src )
new /obj/item/weapon/stock_parts/scanning_module( src )
new /obj/item/weapon/stock_parts/motor( src )
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/biogenerator
@@ -8,5 +8,5 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1)
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/clonepod
@@ -8,10 +8,10 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_BIO = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1)
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/scanning_module = 2,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/clonescanner
name = T_BOARD("cloning scanner")
@@ -19,8 +19,8 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 2)
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/cable_coil = 2)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/mech_recharger
@@ -8,6 +8,6 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2)
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 2)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/miningdrill
@@ -8,10 +8,10 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/cell" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1)
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/cell = 1,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/miningdrillbrace
name = T_BOARD("mining drill brace")
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/pacman
@@ -8,10 +8,10 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1)
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/capacitor = 1)
/obj/item/weapon/circuitboard/pacman/super
name = T_BOARD("SUPERPACMAN-type generator")
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/smes
@@ -7,18 +7,18 @@
build_path = "/obj/machinery/power/smes/buildable"
board_type = "machine"
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
req_components = list("/obj/item/weapon/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
req_components = list(/obj/item/weapon/smes_coil = 1, /obj/item/stack/cable_coil = 30)
/obj/item/weapon/circuitboard/batteryrack
name = T_BOARD("battery rack PSU")
build_path = "/obj/machinery/power/smes/batteryrack"
board_type = "machine"
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
req_components = list("/obj/item/weapon/cell" = 3)
req_components = list(/obj/item/weapon/cell = 3)
/obj/item/weapon/circuitboard/ghettosmes
name = T_BOARD("makeshift PSU")
desc = "An APC circuit repurposed into some power storage device controller"
build_path = "/obj/machinery/power/smes/batteryrack/makeshift"
board_type = "machine"
req_components = list("/obj/item/weapon/cell" = 3)
req_components = list(/obj/item/weapon/cell = 3)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/recharge_station
@@ -8,7 +8,7 @@
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cell" = 1)
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/cell = 1)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
obj/item/weapon/circuitboard/rdserver
@@ -8,8 +8,8 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = list(TECH_DATA = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1)
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/scanning_module = 1)
/obj/item/weapon/circuitboard/destructive_analyzer
name = T_BOARD("destructive analyzer")
@@ -17,9 +17,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1)
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/autolathe
name = T_BOARD("autolathe")
@@ -27,9 +27,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 3,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
/obj/item/weapon/stock_parts/matter_bin = 3,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
/obj/item/weapon/circuitboard/protolathe
name = T_BOARD("protolathe")
@@ -37,10 +37,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/reagent_containers/glass/beaker = 2)
/obj/item/weapon/circuitboard/circuit_imprinter
name = T_BOARD("circuit imprinter")
@@ -48,9 +47,9 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/reagent_containers/glass/beaker = 2)
/obj/item/weapon/circuitboard/mechfab
name = "Circuit board (Exosuit Fabricator)"
@@ -58,7 +57,7 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
/obj/item/weapon/stock_parts/matter_bin = 2,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/shield_gen_ex
@@ -8,12 +8,12 @@
build_path = "/obj/machinery/shield_gen/external"
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/stock_parts/manipulator/pico = 2,
/obj/item/weapon/stock_parts/subspace/transmitter = 1,
/obj/item/weapon/stock_parts/subspace/crystal = 1,
/obj/item/weapon/stock_parts/subspace/amplifier = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/shield_gen
name = T_BOARD("bubble shield generator")
@@ -21,12 +21,12 @@
build_path = "/obj/machinery/shield_gen"
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/stock_parts/manipulator/pico = 2,
/obj/item/weapon/stock_parts/subspace/transmitter = 1,
/obj/item/weapon/stock_parts/subspace/crystal = 1,
/obj/item/weapon/stock_parts/subspace/amplifier = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/cable_coil = 5)
/obj/item/weapon/circuitboard/shield_cap
name = T_BOARD("shield capacitor")
@@ -34,9 +34,9 @@
build_path = "/obj/machinery/shield_capacitor"
origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 1,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/stock_parts/manipulator/pico = 2,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/treatment = 1,
/obj/item/weapon/stock_parts/subspace/analyzer = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/stack/cable_coil = 5)
@@ -10,69 +10,69 @@
build_path = "/obj/machinery/telecomms/receiver"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
req_components = list(
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/micro_laser" = 1)
/obj/item/weapon/stock_parts/subspace/ansible = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/stock_parts/micro_laser = 1)
/obj/item/weapon/circuitboard/telecomms/hub
name = T_BOARD("hub mainframe")
build_path = "/obj/machinery/telecomms/hub"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 2)
/obj/item/weapon/circuitboard/telecomms/relay
name = T_BOARD("relay mainframe")
build_path = "/obj/machinery/telecomms/relay"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 2)
/obj/item/weapon/circuitboard/telecomms/bus
name = T_BOARD("bus mainframe")
build_path = "/obj/machinery/telecomms/bus"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/telecomms/processor
name = T_BOARD("processor unit")
build_path = "/obj/machinery/telecomms/processor"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 2,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1)
/obj/item/weapon/stock_parts/manipulator = 3,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/treatment = 2,
/obj/item/weapon/stock_parts/subspace/analyzer = 1,
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/amplifier = 1)
/obj/item/weapon/circuitboard/telecomms/server
name = T_BOARD("telecommunication server")
build_path = "/obj/machinery/telecomms/server"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/circuitboard/telecomms/broadcaster
name = T_BOARD("subspace broadcaster")
build_path = "/obj/machinery/telecomms/broadcaster"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/micro_laser/high" = 2)
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/subspace/crystal = 1,
/obj/item/weapon/stock_parts/micro_laser/high = 2)
//This isn't a real telecomms board but I don't want to make a whole file to hold only one circuitboard.
/obj/item/weapon/circuitboard/telecomms/exonet_node
@@ -80,10 +80,10 @@
build_path = "/obj/machinery/exonet_node"
origin_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
req_components = list(
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 2,
"/obj/item/stack/cable_coil" = 2)
/obj/item/weapon/stock_parts/subspace/ansible = 1,
/obj/item/weapon/stock_parts/subspace/filter = 1,
/obj/item/weapon/stock_parts/manipulator = 2,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/subspace/crystal = 1,
/obj/item/weapon/stock_parts/subspace/treatment = 2,
/obj/item/stack/cable_coil = 2)
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/unary_atmos
@@ -18,16 +18,16 @@
build_path = "/obj/machinery/atmospherics/unary/heater"
origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 2)
/obj/item/stack/cable_coil = 5,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/capacitor = 2)
/obj/item/weapon/circuitboard/unary_atmos/cooler
name = T_BOARD("gas cooling system")
build_path = "/obj/machinery/atmospherics/unary/freezer"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1)
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/manipulator = 1)
@@ -93,7 +93,7 @@
spawn(0)//this prevents the collapse of space-time continuum
if (user)
user.removeItem(src, force = 1)
user.drop_from_inventory(src)
qdel(src)
return uses
@@ -109,7 +109,7 @@
if(!ispath(gift_type,/obj/item)) return
var/obj/item/I = new gift_type(M)
M.removeItem(src)
M.remove_from_mob(src)
M.put_in_hands(I)
I.add_fingerprint(M)
qdel(src)
@@ -59,7 +59,8 @@
path = 1
user << "<span class='notice'>You add [W] to the metal casing.</span>"
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
user.removeItem(det, src)
user.remove_from_mob(det)
det.loc = src
detonator = det
if(istimer(detonator.a_left))
var/obj/item/device/assembly/timer/T = detonator.a_left
@@ -175,7 +176,7 @@
if(istype(loc, /mob/living/carbon)) //drop dat grenade if it goes off in your hand
var/mob/living/carbon/C = loc
C.removeItem(src)
C.drop_from_inventory(src)
C.throw_mode_off()
invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
@@ -1,5 +1,5 @@
/obj/item/weapon/grenade/smokebomb
desc = "It is set to detonate in 2 seconds."
desc = "It is set to detonate in 2 seconds. These high-tech grenades can have their color adapted on the fly with a multitool!"
name = "smoke bomb"
icon = 'icons/obj/grenade.dmi'
icon_state = "flashbang"
@@ -7,6 +7,8 @@
item_state = "flashbang"
slot_flags = SLOT_BELT
var/datum/effect/effect/system/smoke_spread/bad/smoke
var/smoke_color
var/smoke_strength = 4
/obj/item/weapon/grenade/smokebomb/New()
..()
@@ -22,13 +24,9 @@
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
src.smoke.set_up(10, 0, usr.loc)
spawn(0)
src.smoke.start()
sleep(10)
src.smoke.start()
sleep(10)
src.smoke.start()
sleep(10)
src.smoke.start()
for(var/i = 1 to smoke_strength)
src.smoke.start(smoke_color)
sleep(10)
for(var/obj/effect/blob/B in view(8,src))
var/damage = round(30/(get_dist(B,src)+1))
@@ -37,3 +35,9 @@
sleep(80)
qdel(src)
return
/obj/item/weapon/grenade/smokebomb/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I,/obj/item/device/multitool))
var/new_smoke_color = input(user, "Choose a color for the smoke:", "Smoke Color", smoke_color) as color|null
if(new_smoke_color)
smoke_color = new_smoke_color
+1 -1
View File
@@ -81,7 +81,7 @@
if(dispenser)
cuffs = new(get_turf(user))
else
user.removeItem(cuffs)
user.drop_from_inventory(cuffs)
cuffs.loc = target
target.handcuffed = cuffs
target.update_inv_handcuffed()
@@ -126,7 +126,7 @@
c.scanned = A
if(istype(A.loc,/mob/living/carbon/human))
var/mob/living/carbon/human/H = A.loc
H.removeItem(A)
H.remove_from_mob(A)
else if(istype(A.loc,/obj/item/weapon/storage))
var/obj/item/weapon/storage/S = A.loc
S.remove_from_storage(A)
@@ -62,7 +62,9 @@
finished = new /obj/item/weapon/melee/baton/cattleprod(get_turf(user))
user << "<span class='notice'>You fasten the wirecutters to the top of the rod with the cable, prongs outward.</span>"
if(finished)
user.deleteItem(src)
user.deleteItem(I)
user.drop_from_inventory(src)
user.drop_from_inventory(I)
qdel(I)
qdel(src)
user.put_in_hands(finished)
update_icon(user)
@@ -50,7 +50,8 @@ var/global/list/ashtray_cache = list()
if (contents.len >= max_butts)
user << "\The [src] is full."
return
user.removeItem(W, src)
user.remove_from_mob(W)
W.loc = src
if (istype(W,/obj/item/clothing/mask/smokable/cigarette))
var/obj/item/clothing/mask/smokable/cigarette/cig = W
@@ -83,7 +83,7 @@
T.visible_message("<span class='danger'>\The [src] [material.destruction_desc]!</span>")
if(istype(loc, /mob/living))
var/mob/living/M = loc
M.removeItem(src, force = 1)
M.drop_from_inventory(src)
playsound(src, "shatter", 70, 1)
if(!consumed && drops_debris) material.place_shard(T)
qdel(src)
@@ -207,7 +207,7 @@
..()
/obj/item/weapon/melee/energy/blade/attack_self(mob/user as mob)
user.removeItem(src, force = 1)
user.drop_from_inventory(src)
spawn(1) if(src) qdel(src)
/obj/item/weapon/melee/energy/blade/dropped()
@@ -225,5 +225,5 @@
organ.implants -= src
host.pinned -= src
host.embedded -= src
host.removeItem(src, force = 1)
host.drop_from_inventory(src)
spawn(1) if(src) qdel(src)
@@ -52,7 +52,7 @@
..()
/obj/item/weapon/mop_deploy/attack_self(mob/user as mob)
user.removeItem(src, force = 1)
user.drop_from_inventory(src)
spawn(1) if(src) del(src)
/obj/item/weapon/mop_deploy/dropped()
@@ -70,5 +70,5 @@
organ.implants -= src
host.pinned -= src
host.embedded -= src
host.removeItem(src, force = 1)
host.drop_from_inventory(src)
spawn(1) if(src) del(src)
@@ -153,7 +153,7 @@
break
if(!inserted || !S.amount)
usr.removeItem(S)
usr.remove_from_mob(S)
usr.update_icons() //update our overlays
if (usr.client && usr.s_active != src)
usr.client.screen -= S
@@ -82,6 +82,6 @@
use_to_pickup = 0
/obj/item/weapon/storage/laundry_basket/offhand/dropped(mob/user as mob)
user.removeItem(linked, force = 1)
user.drop_from_inventory(linked)
return
@@ -69,7 +69,7 @@
if (( usr.restrained() ) || ( usr.stat ))
return
if ((src.loc == usr) && !usr.removeItem(src))
if ((src.loc == usr) && !usr.unEquip(src))
return
switch(over_object.name)
@@ -347,7 +347,7 @@
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
if(!istype(W)) return 0
if(usr)
usr.removeItem(W)
usr.remove_from_mob(W)
usr.update_icons() //update our overlays
W.loc = src
W.on_enter_storage(src)
@@ -104,7 +104,8 @@
if ((!F.status)||(F.ptank)) return
src.master = F
F.ptank = src
user.removeItem(src, F)
user.remove_from_mob(src)
src.loc = F
return
/*
+6 -4
View File
@@ -62,7 +62,8 @@
else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
var/obj/item/weapon/handcuffs/cable/tape/T = new(user)
if(!T.place_handcuffs(H, user))
user.deleteItem(T)
user.unEquip(T)
qdel(T)
else
return ..()
return 1
@@ -70,7 +71,7 @@
/obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user)
if(!istype(W, /obj/item/weapon/paper))
return
user.removeItem(W)
user.drop_from_inventory(W)
var/obj/item/weapon/ducttape/tape = new(get_turf(src))
tape.attach(W)
user.put_in_hands(tape)
@@ -106,7 +107,7 @@
user << "You remove \the [initial(name)] from [stuck]."
user.removeItem(src)
user.drop_from_inventory(src)
stuck.forceMove(get_turf(src))
user.put_in_hands(stuck)
stuck = null
@@ -128,7 +129,8 @@
user << "You cannot reach that from here." // can only place stuck papers in cardinal directions, to
return // reduce papers around corners issue.
user.removeItem(src, source_turf)
user.drop_from_inventory(src)
forceMove(source_turf)
if(params)
var/list/mouse_control = params2list(params)
+3 -3
View File
@@ -195,12 +195,12 @@
if (user.client)
user.client.screen -= src
if (user.r_hand == src)
user.removeItem(src)
user.remove_from_mob(src)
else
user.removeItem(src)
user.remove_from_mob(src)
src.master = F
src.layer = initial(src.layer)
user.removeItem(src)
user.remove_from_mob(src)
if (user.client)
user.client.screen -= src
src.loc = F
+1 -1
View File
@@ -36,7 +36,7 @@
)
deployed = 1
user.removeItem(src)
user.drop_from_inventory(src)
update_icon()
anchored = 1
+1 -1
View File
@@ -21,7 +21,7 @@
if (can_hang && !coat)
user.visible_message("[user] hangs [W] on \the [src].", "You hang [W] on the \the [src]")
coat = W
user.removeItem(coat, src)
user.drop_from_inventory(coat, src)
update_icon()
else
user << "<span class='notice'>You cannot hang [W] on [src]</span>"
@@ -247,6 +247,16 @@
src.update_icon()
for(var/mob/M in viewers(src))
M.show_message("<span class='warning'>[src] has been [welded?"welded shut":"unwelded"] by [user.name].</span>", 3, "You hear welding.", 2)
else if(istype(W, /obj/item/weapon/wrench))
if(welded)
if(anchored)
user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
else
user.visible_message("\The [user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
if(do_after(user, 20))
if(!src) return
user << "<span class='notice'>You [anchored? "un" : ""]secured \the [src]!</span>"
anchored = !anchored
else
src.attack_hand(user)
return
@@ -66,7 +66,8 @@
user << "<span class='warning'>Unwield the axe first.</span>"
return
fireaxe = O
user.removeItem(O, src)
user.remove_from_mob(O)
src.contents += O
user << "<span class='notice'>You place the fire axe back in the [src.name].</span>"
update_icon()
else
@@ -87,6 +87,17 @@
spark_system.start()
playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
else if(istype(W, /obj/item/weapon/wrench))
if(welded)
if(anchored)
user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
else
user.visible_message("\The [user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
if(do_after(user, 20))
if(!src) return
user << "<span class='notice'>You [anchored? "un" : ""]secured \the [src]!</span>"
anchored = !anchored
return
else if(istype(W,/obj/item/weapon/packageWrap) || istype(W,/obj/item/weapon/weldingtool))
return ..(W,user)
else
+2 -1
View File
@@ -27,7 +27,8 @@
return
if(istype(O, /obj/item/weapon/extinguisher))
if(!has_extinguisher && opened)
user.removeItem(O, src)
user.remove_from_mob(O)
contents += O
has_extinguisher = O
user << "<span class='notice'>You place [O] in [src].</span>"
else
+2 -1
View File
@@ -33,7 +33,8 @@
if(notices < 5)
O.add_fingerprint(user)
add_fingerprint(user)
user.removeItem(O, src)
user.drop_from_inventory(O)
O.loc = src
notices++
icon_state = "nboard0[notices]" //update sprite
user << "<span class='notice'>You pin the paper to the noticeboard.</span>"
@@ -96,7 +96,9 @@
user << "\The [src] is already padded."
return
var/obj/item/stack/C = W
if(C.get_amount() < 1)
if(C.get_amount() < 1) // How??
user.drop_from_inventory(C)
qdel(C)
return
var/padding_type //This is awful but it needs to be like this until tiles are given a material var.
if(istype(W,/obj/item/stack/tile/carpet))
@@ -110,7 +112,8 @@
return
C.use(1)
if(!istype(src.loc, /turf))
user.removeItem(src, get_turf(src))
user.drop_from_inventory(src)
src.loc = get_turf(src)
user << "You add padding to \the [src]."
add_padding(padding_type)
return
@@ -72,7 +72,7 @@ var/global/list/stool_cache = list() //haha stool
/obj/item/weapon/stool/attack(mob/M as mob, mob/user as mob)
if (prob(5) && istype(M,/mob/living))
user.visible_message("<span class='danger'>[user] breaks [src] over [M]'s back!</span>")
user.removeItem(src)
user.remove_from_mob(src)
dismantle()
qdel(src)
var/mob/living/T = M
@@ -112,7 +112,9 @@ var/global/list/stool_cache = list() //haha stool
user << "\The [src] is already padded."
return
var/obj/item/stack/C = W
if(C.get_amount() < 1)
if(C.get_amount() < 1) // How??
user.drop_from_inventory(C)
qdel(C)
return
var/padding_type //This is awful but it needs to be like this until tiles are given a material var.
if(istype(W,/obj/item/stack/tile/carpet))
@@ -126,7 +128,8 @@ var/global/list/stool_cache = list() //haha stool
return
C.use(1)
if(!istype(src.loc, /turf))
user.removeItem(src, get_turf(src))
user.drop_from_inventory(src)
src.loc = get_turf(src)
user << "You add padding to \the [src]."
add_padding(padding_type)
return
+2 -1
View File
@@ -27,7 +27,8 @@
if(istype(W, /obj/item/target))
density = 0
W.density = 1
user.removeItem(W, loc)
user.remove_from_mob(W)
W.loc = loc
W.layer = 3.1
pinned_target = W
user << "You slide the target into the stake."
@@ -27,7 +27,7 @@
if(istype(W, /obj/item/organ/external))
continue
//don't strip organs
H.removeItem(W)
H.drop_from_inventory(W)
//teleport person to cell
H.loc = pick(prisonwarp)
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(H), slot_w_uniform)
+4 -4
View File
@@ -973,7 +973,7 @@
//strip their stuff and stick it in the crate
for(var/obj/item/I in M)
M.removeItem(I, locker)
M.drop_from_inventory(I, locker)
M.update_icons()
//so they black out before warping
@@ -1006,7 +1006,7 @@
return
for(var/obj/item/I in M)
M.removeItem(I, force = 1)
M.drop_from_inventory(I)
M.Paralyse(5)
sleep(5)
@@ -1031,7 +1031,7 @@
return
for(var/obj/item/I in M)
M.removeItem(I, force = 1)
M.drop_from_inventory(I)
M.Paralyse(5)
sleep(5)
@@ -1078,7 +1078,7 @@
return
for(var/obj/item/I in M)
M.removeItem(I, force = 1)
M.drop_from_inventory(I)
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/observer = M

Some files were not shown because too many files have changed in this diff Show More