adds clown glue

This commit is contained in:
unid15
2015-10-18 23:46:11 +02:00
parent 636687c2a8
commit f8da080ba1
194 changed files with 1621 additions and 1388 deletions

View File

@@ -221,9 +221,9 @@ Pipelines + Other Objects -> Pipe network
/obj/machinery/atmospherics/attackby(var/obj/item/W, mob/user) /obj/machinery/atmospherics/attackby(var/obj/item/W, mob/user)
if(istype(W, /obj/item/pipe)) //lets you autodrop if(istype(W, /obj/item/pipe)) //lets you autodrop
var/obj/item/pipe/pipe = W var/obj/item/pipe/pipe = W
user.drop_item(pipe) if(user.drop_item(pipe))
pipe.setPipingLayer(src.piping_layer) //align it with us pipe.setPipingLayer(src.piping_layer) //align it with us
return 1 return 1
if (!istype(W, /obj/item/weapon/wrench)) if (!istype(W, /obj/item/weapon/wrench))
return ..() return ..()
if(src.machine_flags & WRENCHMOVE) if(src.machine_flags & WRENCHMOVE)

View File

@@ -83,11 +83,11 @@
if(panel_open && !cell) if(panel_open && !cell)
var/obj/item/weapon/cell/C = usr.get_active_hand() var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C)) if(istype(C))
usr.drop_item(C, src) if(usr.drop_item(C, src))
cell = C cell = C
C.add_fingerprint(usr) C.add_fingerprint(usr)
usr.visible_message("<span class='notice'>[usr] inserts a power cell into \the [src].</span>", "<span class='notice'>You insert the power cell into \the [src].</span>") usr.visible_message("<span class='notice'>[usr] inserts a power cell into \the [src].</span>", "<span class='notice'>You insert the power cell into \the [src].</span>")
src.updateDialog() src.updateDialog()
return return

View File

@@ -114,10 +114,10 @@
// insert cell // insert cell
var/obj/item/weapon/cell/C = usr.get_active_hand() var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C)) if(istype(C))
user.drop_item(C, src) if(user.drop_item(C, src))
cell = C cell = C
C.add_fingerprint(usr) C.add_fingerprint(usr)
user.visible_message("<span class='notice'>[user] inserts a power cell into [src].</span>", "<span class='notice'>You insert the power cell into [src].</span>") user.visible_message("<span class='notice'>[user] inserts a power cell into [src].</span>", "<span class='notice'>You insert the power cell into [src].</span>")
else else
to_chat(user, "The hatch must be open to insert a power cell.") to_chat(user, "The hatch must be open to insert a power cell.")
return return
@@ -253,11 +253,11 @@
if(panel_open && !cell) if(panel_open && !cell)
var/obj/item/weapon/cell/C = usr.get_active_hand() var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C)) if(istype(C))
usr.drop_item(C, src) if(usr.drop_item(C, src))
cell = C cell = C
C.add_fingerprint(usr) C.add_fingerprint(usr)
usr.visible_message("<span class='notice'>[usr] inserts a power cell into \the [src].</span>", "<span class='notice'>You insert the power cell into \the [src].</span>") usr.visible_message("<span class='notice'>[usr] inserts a power cell into \the [src].</span>", "<span class='notice'>You insert the power cell into \the [src].</span>")
updateDialog() updateDialog()
else else

View File

@@ -140,13 +140,13 @@
/obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob) /obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob)
src.add_fingerprint(usr) src.add_fingerprint(usr)
if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter) || istype(W, /obj/item/pipe_gsensor)) if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter) || istype(W, /obj/item/pipe_gsensor))
to_chat(usr, "<span class='notice'>You put [W] back to [src].</span>") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(usr, "<span class='notice'>You put [W] back to [src].</span>")
if(istype(W, /obj/item/pipe)) if(istype(W, /obj/item/pipe))
returnToPool(W) returnToPool(W)
else else
qdel(W) qdel(W)
return return
else else
return ..() return ..()

View File

@@ -46,8 +46,8 @@
/datum/context_click/pipe_planner/action(obj/item/used_item, mob/user, params) /datum/context_click/pipe_planner/action(obj/item/used_item, mob/user, params)
if(istype(used_item, /obj/item/pipe)) if(istype(used_item, /obj/item/pipe))
var/obj/item/pipe/pipe = used_item var/obj/item/pipe/pipe = used_item
user.drop_item(pipe, get_turf(holder)) if(user.drop_item(pipe, get_turf(holder)))
var/dis = PIPING_LAYER_DEFAULT + (PIPING_LAYER_INCREMENT * return_clicked_id_by_params(params)) var/dis = PIPING_LAYER_DEFAULT + (PIPING_LAYER_INCREMENT * return_clicked_id_by_params(params))
pipe.setPipingLayer(dis) pipe.setPipingLayer(dis)
return 1 return 1
return 0 return 0

View File

@@ -894,8 +894,8 @@
if(istype(W, /obj/item/pipe_meter)) if(istype(W, /obj/item/pipe_meter))
var/obj/item/pipe_meter/meter = W var/obj/item/pipe_meter/meter = W
user.drop_item(meter, src.loc) if(user.drop_item(meter, src.loc))
meter.setAttachLayer(src.piping_layer) meter.setAttachLayer(src.piping_layer)
if(istype(W,/obj/item/device/analyzer)) if(istype(W,/obj/item/device/analyzer))
var/obj/item/device/analyzer/A = W var/obj/item/device/analyzer/A = W

View File

@@ -17,10 +17,10 @@
if(cur_assembly) if(cur_assembly)
to_chat(user, "<span class='warning'>There is already a fuel rod assembly in there!</span>") to_chat(user, "<span class='warning'>There is already a fuel rod assembly in there!</span>")
else else
cur_assembly = I if(user.drop_item(I, src))
user.drop_item(I, src) cur_assembly = I
icon_state = "port1" icon_state = "port1"
to_chat(user, "<span class='notice'>You insert [I] into [src]. Touch the panel again to insert [I] into the injector.</span>") to_chat(user, "<span class='notice'>You insert [I] into [src]. Touch the panel again to insert [I] into the injector.</span>")
/obj/machinery/rust_fuel_assembly_port/attack_hand(mob/user) /obj/machinery/rust_fuel_assembly_port/attack_hand(mob/user)
add_fingerprint(user) add_fingerprint(user)

View File

@@ -73,10 +73,10 @@
if(istype(W, /obj/item/weapon/fuel_assembly) && !cur_assembly) if(istype(W, /obj/item/weapon/fuel_assembly) && !cur_assembly)
if(emergency_insert_ready) if(emergency_insert_ready)
cur_assembly = W if(user.drop_item(W, src))
user.drop_item(W, src) cur_assembly = W
emergency_insert_ready = 0 emergency_insert_ready = 0
return return
..() ..()
return return

View File

@@ -22,7 +22,7 @@
if (contents.len >= max_butts) if (contents.len >= max_butts)
to_chat(user, "This ashtray is full.") to_chat(user, "This ashtray is full.")
return return
user.drop_item(W, src) user.drop_item(W, src, force_drop = 1)
var/obj/item/clothing/mask/cigarette/cig = W var/obj/item/clothing/mask/cigarette/cig = W
if(istype(cig, /obj/item/weapon/cigbutt)) if(istype(cig, /obj/item/weapon/cigbutt))
to_chat(user, "You drop the [cig] into [src].") to_chat(user, "You drop the [cig] into [src].")

View File

@@ -89,11 +89,11 @@ log transactions
if(istype(I, /obj/item/weapon/card/id)) if(istype(I, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/idcard = I var/obj/item/weapon/card/id/idcard = I
if(!held_card) if(!held_card)
usr.drop_item(idcard, src) if(usr.drop_item(idcard, src))
held_card = idcard held_card = idcard
if(authenticated_account && held_card.associated_account_number != authenticated_account.account_number) if(authenticated_account && held_card.associated_account_number != authenticated_account.account_number)
authenticated_account = null authenticated_account = null
src.attack_hand(user) src.attack_hand(user)
else if(authenticated_account) else if(authenticated_account)
if(istype(I,/obj/item/weapon/spacecash)) if(istype(I,/obj/item/weapon/spacecash))
var/obj/item/weapon/spacecash/dosh = I var/obj/item/weapon/spacecash/dosh = I
@@ -456,8 +456,8 @@ log transactions
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src) if(usr.drop_item(I, src))
held_card = I held_card = I
if("logout") if("logout")
authenticated_account = null authenticated_account = null
failsafe = 1 failsafe = 1

View File

@@ -155,8 +155,8 @@ var/list/alldepartments = list("Central Command")
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src) if(usr.drop_item(I, src))
scan = I scan = I
authenticated = 0 authenticated = 0
if(href_list["dept"]) if(href_list["dept"])
@@ -180,11 +180,11 @@ var/list/alldepartments = list("Central Command")
if(istype(O, /obj/item/weapon/paper)) if(istype(O, /obj/item/weapon/paper))
if(!tofax) if(!tofax)
user.drop_item(O, src) if(user.drop_item(O, src))
tofax = O tofax = O
to_chat(user, "<span class='notice'>You insert the paper into \the [src].</span>") to_chat(user, "<span class='notice'>You insert the paper into \the [src].</span>")
flick("faxsend", src) flick("faxsend", src)
updateUsrDialog() updateUsrDialog()
else else
to_chat(user, "<span class='notice'>There is already something in \the [src].</span>") to_chat(user, "<span class='notice'>There is already something in \the [src].</span>")
@@ -192,8 +192,8 @@ var/list/alldepartments = list("Central Command")
var/obj/item/weapon/card/id/idcard = O var/obj/item/weapon/card/id/idcard = O
if(!scan) if(!scan)
usr.drop_item(idcard, src) if(usr.drop_item(idcard, src))
scan = idcard scan = idcard
else if(istype(O, /obj/item/weapon/wrench)) else if(istype(O, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)

View File

@@ -122,9 +122,9 @@
if(battery) if(battery)
to_chat(user, "<span class='notice'>The pod already has a battery.</span>") to_chat(user, "<span class='notice'>The pod already has a battery.</span>")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
battery = W battery = W
return return
if(istype(W, /obj/item/device/spacepod_equipment)) if(istype(W, /obj/item/device/spacepod_equipment))
if(!hatch_open) if(!hatch_open)
return ..() return ..()
@@ -136,13 +136,12 @@
to_chat(user, "<span class='notice'>The pod already has a weapon system, remove it first.</span>") to_chat(user, "<span class='notice'>The pod already has a weapon system, remove it first.</span>")
return return
else else
to_chat(user, "<span class='notice'>You insert \the [W] into the equipment system.</span>") if(user.drop_item(W, equipment_system))
user.drop_item(W, equipment_system) to_chat(user, "<span class='notice'>You insert \the [W] into the equipment system.</span>")
equipment_system.weapon_system = W equipment_system.weapon_system = W
equipment_system.weapon_system.my_atom = src equipment_system.weapon_system.my_atom = src
new/obj/item/device/spacepod_equipment/weaponry/proc/fire_weapon_system(src, equipment_system.weapon_system.verb_name, equipment_system.weapon_system.verb_desc) //Yes, it has to be referenced like that. W.verb_name/desc doesn't compile. new/obj/item/device/spacepod_equipment/weaponry/proc/fire_weapon_system(src, equipment_system.weapon_system.verb_name, equipment_system.weapon_system.verb_desc) //Yes, it has to be referenced like that. W.verb_name/desc doesn't compile.
return return
/obj/spacepod/attack_hand(mob/user as mob) /obj/spacepod/attack_hand(mob/user as mob)
if(!hatch_open) if(!hatch_open)

View File

@@ -82,9 +82,8 @@ STI KALY - blind
var/mob/living/carbon/H = affected_mob var/mob/living/carbon/H = affected_mob
if(prob(chance)) if(prob(chance))
if(!istype(H.r_hand, /obj/item/weapon/staff)) if(!istype(H.r_hand, /obj/item/weapon/staff))
if(H.r_hand) //no need to drop if we aren't holding anything if(H.r_hand || H.drop_item(H.r_hand))
H.drop_item(H.r_hand) H.put_in_r_hand( new /obj/item/weapon/staff(H) )
H.put_in_r_hand( new /obj/item/weapon/staff(H) )
return return
return return

View File

@@ -180,8 +180,8 @@
else else
var/atom_name = used_atom.name var/atom_name = used_atom.name
if(permanence || (Co_KEEP in given_step)) if(permanence || (Co_KEEP in given_step))
user.drop_item(used_atom, holder) if(user.drop_item(used_atom, holder))
used_atoms.Add(list("[steps.Find(given_step)]" = used_atom)) used_atoms.Add(list("[steps.Find(given_step)]" = used_atom))
else else
qdel(used_atom) qdel(used_atom)
given_step[Co_AMOUNT]-- given_step[Co_AMOUNT]--
@@ -352,10 +352,10 @@
else else
var/atom_name = used_atom.name var/atom_name = used_atom.name
if(permanence || (Co_KEEP in given_step)) if(permanence || (Co_KEEP in given_step))
user.drop_item(used_atom, holder) if(user.drop_item(used_atom, holder))
if(!("[index][diff == FORWARD ? "+" : "-"]" in used_atoms)) if(!("[index][diff == FORWARD ? "+" : "-"]" in used_atoms))
used_atoms.Add(list("[index][diff == FORWARD ? "+" : "-"]" = list())) used_atoms.Add(list("[index][diff == FORWARD ? "+" : "-"]" = list()))
used_atoms["[index][diff == FORWARD ? "+" : "-"]"] += used_atom used_atoms["[index][diff == FORWARD ? "+" : "-"]"] += used_atom
else else
qdel(used_atom) qdel(used_atom)
given_step[Co_AMOUNT]-- given_step[Co_AMOUNT]--

View File

@@ -141,8 +141,8 @@ var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown",
// Attach // Attach
else else
if(istype(I, /obj/item/device/assembly/signaler)) if(istype(I, /obj/item/device/assembly/signaler))
L.drop_item(I) if(L.drop_item(I))
Attach(colour, I) Attach(colour, I)
else else
to_chat(L, "<span class='error'>You need a remote signaller!</span>") to_chat(L, "<span class='error'>You need a remote signaller!</span>")

View File

@@ -306,8 +306,8 @@ var/global/list/PDA_Manifest = list()
siemens_coefficient = 1 siemens_coefficient = 1
/obj/item/weapon/beach_ball/afterattack(atom/target as mob|obj|turf|area, mob/user as mob) /obj/item/weapon/beach_ball/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
user.drop_item(src) if(user.drop_item(src))
src.throw_at(target, throw_range, throw_speed) src.throw_at(target, throw_range, throw_speed)
/obj/effect/stop /obj/effect/stop
var/victim = null var/victim = null

View File

@@ -358,19 +358,19 @@
if(I.w_class) //if it has a defined weight if(I.w_class) //if it has a defined weight
if(I.w_class == 2.0 || I.w_class == 3.0) //just one is too specific, so don't change this if(I.w_class == 2.0 || I.w_class == 3.0) //just one is too specific, so don't change this
if(!weight1) if(!weight1)
user.drop_item(I, src) if(user.drop_item(I, src))
weight1 = I weight1 = I
user.show_message("<span class='notice'>You tie [weight1] to the [src].</span>") user.show_message("<span class='notice'>You tie [weight1] to the [src].</span>")
update_icon() update_icon()
//del(I) //del(I)
return return
if(!weight2) //just in case if(!weight2) //just in case
user.drop_item(I, src) if(user.drop_item(I, src))
weight2 = I weight2 = I
user.show_message("<span class='notice'>You tie [weight2] to the [src].</span>") user.show_message("<span class='notice'>You tie [weight2] to the [src].</span>")
update_icon() update_icon()
//del(I) //del(I)
return return
else else
user.show_message("<span class='rose'>There are already two weights on this [src]!</span>") user.show_message("<span class='rose'>There are already two weights on this [src]!</span>")
return return
@@ -423,14 +423,14 @@
IED = null IED = null
return return
if(2,3) if(2,3)
user.drop_item(I, src) if(user.drop_item(I, src))
var/turf/bombturf = get_turf(src) var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf) var/area/A = get_area(bombturf)
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> has rigged a beartrap with an IED at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>." var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> has rigged a beartrap with an IED at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
message_admins(log_str) message_admins(log_str)
log_game(log_str) log_game(log_str)
to_chat(user, "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>") to_chat(user, "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>")
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>" desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
else else
to_chat(user, "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>") to_chat(user, "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>")
IED = null IED = null

View File

@@ -224,11 +224,10 @@
if(beaker) if(beaker)
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine.</span>") to_chat(user, "<span class='warning'>A beaker is already loaded into the machine.</span>")
return return
if(user.drop_item(beaker, src))
beaker = item beaker = item
user.drop_item(beaker, src) user.visible_message("[user] adds \a [item] to \the [src]!", "You add \a [item] to \the [src]!")
user.visible_message("[user] adds \a [item] to \the [src]!", "You add \a [item] to \the [src]!") return
return
else if(istype(item, /obj/item/weapon/grab)) //sanity checks, you chucklefucks else if(istype(item, /obj/item/weapon/grab)) //sanity checks, you chucklefucks
var/obj/item/weapon/grab/G = item var/obj/item/weapon/grab/G = item
if (!ismob(G.affecting)) if (!ismob(G.affecting))

View File

@@ -75,15 +75,14 @@
/mob/living/simple_animal/hostile/retaliate/snowman/attackby(var/obj/item/W, var/mob/user) /mob/living/simple_animal/hostile/retaliate/snowman/attackby(var/obj/item/W, var/mob/user)
if(!carrot && istype(W, /obj/item/weapon/reagent_containers/food/snacks/grown/carrot)) if(!carrot && istype(W, /obj/item/weapon/reagent_containers/food/snacks/grown/carrot))
visible_message("<span class='notice'>[user] puts \a [W] on \the [src]'s nose.</span>") if(user.drop_item(W, src))
user.drop_item(W, src) visible_message("<span class='notice'>[user] puts \a [W] on \the [src]'s nose.</span>")
carrot = W carrot = W
overlays += "snowman_carrot" overlays += "snowman_carrot"
speak -= "Would you happen to have a carrot for my nose?" speak -= "Would you happen to have a carrot for my nose?"
src.say("Ah, most excellent!") src.say("Ah, most excellent!")
if(prob(30)) if(prob(30))
call(/obj/item/weapon/winter_gift/proc/pick_a_gift)(src.loc) call(/obj/item/weapon/winter_gift/proc/pick_a_gift)(src.loc)
else if(istype(W,/obj/item/clothing/head/)) else if(istype(W,/obj/item/clothing/head/))
if(hat) if(hat)
@@ -92,10 +91,10 @@
hat = null hat = null
else else
speak += "I feel so dandy!" speak += "I feel so dandy!"
user.drop_item(W, src) if(user.drop_item(W, src))
hat = W hat = W
overlays += image('icons/mob/head.dmi', hat.icon_state) overlays += image('icons/mob/head.dmi', hat.icon_state)
else ..() else ..()

View File

@@ -38,7 +38,7 @@ var/bomb_set
/obj/machinery/nuclearbomb/attackby(obj/item/weapon/O as obj, mob/user as mob) /obj/machinery/nuclearbomb/attackby(obj/item/weapon/O as obj, mob/user as mob)
if (src.extended) if (src.extended)
if (istype(O, /obj/item/weapon/disk/nuclear)) if (istype(O, /obj/item/weapon/disk/nuclear))
usr.drop_item(O, src) usr.drop_item(O, src, force_drop = 1)
src.auth = O src.auth = O
src.add_fingerprint(user) src.add_fingerprint(user)
return return
@@ -188,7 +188,7 @@ var/bomb_set
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/disk/nuclear)) if (istype(I, /obj/item/weapon/disk/nuclear))
usr.drop_item(I, src) usr.drop_item(I, src, force_drop = 1) //FORCE DROP for balance reasons
src.auth = I src.auth = I
if (src.auth) if (src.auth)
if (href_list["type"]) if (href_list["type"])

View File

@@ -81,9 +81,9 @@
if ((( istype(O, /obj/item/weapon) ) || user.get_active_hand() == O)) if ((( istype(O, /obj/item/weapon) ) || user.get_active_hand() == O))
user.drop_item(O) if(user.drop_item(O))
if (O.loc != src.loc) if (O.loc != src.loc)
step(O, get_dir(O, src)) step(O, get_dir(O, src))
return return
else else
if(!ismob(O)) //humans only if(!ismob(O)) //humans only

View File

@@ -86,10 +86,10 @@
if (src.holding) if (src.holding)
return 0 return 0
var/obj/item/weapon/tank/T = W var/obj/item/weapon/tank/T = W
user.drop_item(T, src) if(user.drop_item(T, src))
src.holding = T src.holding = T
update_icon() update_icon()
return 1 return 1
else if (istype(W, /obj/item/weapon/wrench)) else if (istype(W, /obj/item/weapon/wrench))
if(connected_port) if(connected_port)

View File

@@ -177,9 +177,10 @@
else else
to_chat(user, "You cannot recycle your built in tools.") to_chat(user, "You cannot recycle your built in tools.")
return 1 return 1
user.drop_item(I, src)
materials.removeFrom(I.materials) if(user.drop_item(I, src))
user.visible_message("[user] puts \the [I] into \the [src]'s recycling unit.", materials.removeFrom(I.materials)
"You put \the [I] in \the [src]'s reycling unit.") user.visible_message("[user] puts \the [I] into \the [src]'s recycling unit.",
qdel(I) "You put \the [I] in \the [src]'s reycling unit.")
qdel(I)
return 1 return 1

View File

@@ -71,12 +71,12 @@
if(health > 0) if(health > 0)
to_chat(user, "<span class='warning'>There is already a queen in there.</span>") to_chat(user, "<span class='warning'>There is already a queen in there.</span>")
else else
health = 10 if(user.drop_item(O))
nutrilevel = min(10,nutrilevel+10) health = 10
user.drop_item(O) nutrilevel = min(10,nutrilevel+10)
qdel(O) qdel(O)
to_chat(user, "<span class='notice'>You carefully insert the queen into [src], she gets busy making a hive.</span>") to_chat(user, "<span class='notice'>You carefully insert the queen into [src], she gets busy making a hive.</span>")
bees_in_hive = 0 bees_in_hive = 0
else if(istype(O, /obj/item/beezeez)) else if(istype(O, /obj/item/beezeez))
beezeez += 100 beezeez += 100
nutrilevel += 10 nutrilevel += 10

View File

@@ -86,19 +86,19 @@
return return
// Meat for biomass. // Meat for biomass.
else if(!prints_prosthetics && istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat)) else if(!prints_prosthetics && istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat))
visible_message("<span class='notice'>\The [src] processes \the [W].</span>") if(user.drop_item(W))
stored_matter += 50 visible_message("<span class='notice'>\The [src] processes \the [W].</span>")
user.drop_item(W) stored_matter += 50
qdel(W) qdel(W)
return return
// Steel for matter. // Steel for matter.
else if(prints_prosthetics && istype(W, /obj/item/stack/sheet/metal)) else if(prints_prosthetics && istype(W, /obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/metal/M = W var/obj/item/stack/sheet/metal/M = W
visible_message("<span class='notice'>\The [src] processes \the [W].</span>") if(user.drop_item(M))
stored_matter += M.amount * 10 visible_message("<span class='notice'>\The [src] processes \the [W].</span>")
user.drop_item(M) stored_matter += M.amount * 10
returnToPool(M) returnToPool(M)
return return
else if(istype(W, /obj/item/weapon/wrench)) else if(istype(W, /obj/item/weapon/wrench))
user.visible_message("<span class='notice'>[user] begins to [anchored? "unfasten" : "fasten"] \the [src].</span>", "<span class='notice'>You begin to [anchored? "unfasten" : "fasten"] \the [src].</span>", "<span class='notice'>You hear a ratchet.</span>") user.visible_message("<span class='notice'>[user] begins to [anchored? "unfasten" : "fasten"] \the [src].</span>", "<span class='notice'>You begin to [anchored? "unfasten" : "fasten"] \the [src].</span>", "<span class='notice'>You hear a ratchet.</span>")
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)

View File

@@ -339,14 +339,14 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
/obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob) /obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob)
..() ..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm)) if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
user.drop_item(W) if(user.drop_item(W))
qdel(W) qdel(W)
var/turf/T = get_turf(src.loc) var/turf/T = get_turf(src.loc)
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot(T) var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot(T)
A.name = src.created_name A.name = src.created_name
to_chat(user, "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>") to_chat(user, "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>")
user.drop_from_inventory(src) user.drop_from_inventory(src)
qdel(src) qdel(src)
else if (istype(W, /obj/item/weapon/pen)) else if (istype(W, /obj/item/weapon/pen))
var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN) var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN)

View File

@@ -213,14 +213,14 @@ Auto Patrol: []"},
if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if (src.allowed(user) && !open && !emagged) if (src.allowed(user) && !open && !emagged)
src.locked = !src.locked src.locked = !src.locked
to_chat(user, "<span class='notice'>Controls are now [src.locked ? "locked" : "unlocked"].</span>") to_chat(user, "<span class='notice'>Controls are now [src.locked ? "locked" : "unlocked"].</span>")
else else
if(emagged) if(emagged)
to_chat(user, "<span class='warning'>ERROR</span>") to_chat(user, "<span class='warning'>ERROR</span>")
if(open) if(open)
to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>") to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>")
else else
to_chat(user, "<span class='notice'>Access denied.</span>") to_chat(user, "<span class='notice'>Access denied.</span>")
else else
..() ..()
if (!istype(W, /obj/item/weapon/screwdriver) && (!src.target)) if (!istype(W, /obj/item/weapon/screwdriver) && (!src.target))
@@ -236,7 +236,7 @@ Auto Patrol: []"},
/obj/machinery/bot/ed209/Emag(mob/user as mob) /obj/machinery/bot/ed209/Emag(mob/user as mob)
..() ..()
if(open && !locked) if(open && !locked)
if(user) to_chat(user, "<span class='warning'>You short out [src]'s target assessment circuits.</span>") if(user) to_chat(user, "<span class='warning'>You short out [src]'s target assessment circuits.</span>")
spawn(0) spawn(0)
for(var/mob/O in hearers(src, null)) for(var/mob/O in hearers(src, null))
O.show_message("<span class='danger'>[src] buzzes oddly!</span>", 1) O.show_message("<span class='danger'>[src] buzzes oddly!</span>", 1)
@@ -295,7 +295,7 @@ Auto Patrol: []"},
// if can't reach perp for long enough, go idle // if can't reach perp for long enough, go idle
if (src.frustration >= 8) if (src.frustration >= 8)
// for(var/mob/O in hearers(src, null)) // for(var/mob/O in hearers(src, null))
// to_chat(O, "<span class='game say'><span class='name'>[src]</span> beeps, \"Backup requested! Suspect has evaded arrest.\"") // to_chat(O, "<span class='game say'><span class='name'>[src]</span> beeps, \"Backup requested! Suspect has evaded arrest.\"")
src.target = null src.target = null
src.last_found = world.time src.last_found = world.time
src.frustration = 0 src.frustration = 0
@@ -546,9 +546,9 @@ Auto Patrol: []"},
return return
/* /*
to_chat(world, "rec signal: [signal.source]") to_chat(world, "rec signal: [signal.source]")
for(var/x in signal.data) for(var/x in signal.data)
to_chat(world, "* [x] = [signal.data[x]]") to_chat(world, "* [x] = [signal.data[x]]")
*/ */
var/recv = signal.data["command"] var/recv = signal.data["command"]
@@ -631,7 +631,7 @@ Auto Patrol: []"},
signal.transmission_method = 1 signal.transmission_method = 1
//for(var/key in keyval) //for(var/key in keyval)
// signal.data[key] = keyval[key] // signal.data[key] = keyval[key]
// to_chat(world, "sent [key],[keyval[key]] on [freq]") // to_chat(world, "sent [key],[keyval[key]] on [freq]")
signal.data = keyval signal.data = keyval
if (signal.data["findbeacon"]) if (signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS) frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
@@ -948,17 +948,17 @@ Auto Patrol: []"},
switch(build_step) switch(build_step)
if(0,1) if(0,1)
if( istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg) ) if( istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg) )
user.drop_item(W) if(user.drop_item(W))
qdel(W) qdel(W)
build_step++ build_step++
to_chat(user, "<span class='notice'>You add the robot leg to [src].</span>") to_chat(user, "<span class='notice'>You add the robot leg to [src].</span>")
name = "legs/frame assembly" name = "legs/frame assembly"
if(build_step == 1) if(build_step == 1)
item_state = "ed209_leg" item_state = "ed209_leg"
icon_state = "ed209_leg" icon_state = "ed209_leg"
else else
item_state = "ed209_legs" item_state = "ed209_legs"
icon_state = "ed209_legs" icon_state = "ed209_legs"
if(2) if(2)
if( istype(W, /obj/item/clothing/suit/redtag) ) if( istype(W, /obj/item/clothing/suit/redtag) )
@@ -966,13 +966,13 @@ Auto Patrol: []"},
else if( istype(W, /obj/item/clothing/suit/bluetag) ) else if( istype(W, /obj/item/clothing/suit/bluetag) )
lasercolor = "b" lasercolor = "b"
if( lasercolor || istype(W, /obj/item/clothing/suit/armor/vest) ) if( lasercolor || istype(W, /obj/item/clothing/suit/armor/vest) )
user.drop_item(W) if(user.drop_item(W))
qdel(W) qdel(W)
build_step++ build_step++
to_chat(user, "<span class='notice'>You add the armor to [src].</span>") to_chat(user, "<span class='notice'>You add the armor to [src].</span>")
name = "vest/legs/frame assembly" name = "vest/legs/frame assembly"
item_state = "[lasercolor]ed209_shell" item_state = "[lasercolor]ed209_shell"
icon_state = "[lasercolor]ed209_shell" icon_state = "[lasercolor]ed209_shell"
if(3) if(3)
if( istype(W, /obj/item/weapon/weldingtool) ) if( istype(W, /obj/item/weapon/weldingtool) )
@@ -980,40 +980,43 @@ Auto Patrol: []"},
if(WT.remove_fuel(0,user)) if(WT.remove_fuel(0,user))
build_step++ build_step++
name = "shielded frame assembly" name = "shielded frame assembly"
to_chat(user, "<span class='notice'>You welded the vest to [src].</span>") to_chat(user, "<span class='notice'>You welded the vest to [src].</span>")
if(4) if(4)
if( istype(W, /obj/item/clothing/head/helmet) ) if( istype(W, /obj/item/clothing/head/helmet) )
user.drop_item(W) if(user.drop_item(W))
qdel(W) qdel(W)
build_step++ build_step++
to_chat(user, "<span class='notice'>You add the helmet to [src].</span>") to_chat(user, "<span class='notice'>You add the helmet to [src].</span>")
name = "covered and shielded frame assembly" name = "covered and shielded frame assembly"
item_state = "[lasercolor]ed209_hat" item_state = "[lasercolor]ed209_hat"
icon_state = "[lasercolor]ed209_hat" icon_state = "[lasercolor]ed209_hat"
if(5) if(5)
if( isprox(W) ) if( isprox(W) )
user.drop_item(W) if(user.drop_item(W))
qdel(W) qdel(W)
build_step++ build_step++
to_chat(user, "<span class='notice'>You add the prox sensor to [src].</span>") to_chat(user, "<span class='notice'>You add the prox sensor to [src].</span>")
name = "covered, shielded and sensored frame assembly" name = "covered, shielded and sensored frame assembly"
item_state = "[lasercolor]ed209_prox" item_state = "[lasercolor]ed209_prox"
icon_state = "[lasercolor]ed209_prox" icon_state = "[lasercolor]ed209_prox"
if(6) if(6)
if( istype(W, /obj/item/stack/cable_coil) ) if( istype(W, /obj/item/stack/cable_coil) )
var/obj/item/stack/cable_coil/coil = W var/obj/item/stack/cable_coil/coil = W
var/turf/T = get_turf(user) var/turf/T = get_turf(user)
to_chat(user, "<span class='notice'>You start to wire [src]...</span>") to_chat(user, "<span class='notice'>You start to wire [src]...</span>")
sleep(40) sleep(40)
if(get_turf(user) == T) if(get_turf(user) == T)
coil.use(1) coil.use(1)
build_step++ build_step++
to_chat(user, "<span class='notice'>You wire the ED-209 assembly.</span>") to_chat(user, "<span class='notice'>You wire the ED-209 assembly.</span>")
name = "wired ED-209 assembly" name = "wired ED-209 assembly"
if(7) if(7)
if(!user.drop_item(W))
return
switch(lasercolor) switch(lasercolor)
if("b") if("b")
if( !istype(W, /obj/item/weapon/gun/energy/laser/bluetag) ) if( !istype(W, /obj/item/weapon/gun/energy/laser/bluetag) )
@@ -1030,30 +1033,31 @@ Auto Patrol: []"},
else else
return return
build_step++ build_step++
to_chat(user, "<span class='notice'>You add [W] to [src].</span>") to_chat(user, "<span class='notice'>You add [W] to [src].</span>")
src.item_state = "[lasercolor]ed209_taser" src.item_state = "[lasercolor]ed209_taser"
src.icon_state = "[lasercolor]ed209_taser" src.icon_state = "[lasercolor]ed209_taser"
user.drop_item(W)
qdel(W) qdel(W)
if(8) if(8)
if( istype(W, /obj/item/weapon/screwdriver) ) if( istype(W, /obj/item/weapon/screwdriver) )
playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 100, 1) playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 100, 1)
var/turf/T = get_turf(user) var/turf/T = get_turf(user)
to_chat(user, "<span class='notice'>Now attaching the gun to the frame...</span>") to_chat(user, "<span class='notice'>Now attaching the gun to the frame...</span>")
sleep(40) sleep(40)
if(get_turf(user) == T) if(get_turf(user) == T)
build_step++ build_step++
name = "armed [name]" name = "armed [name]"
to_chat(user, "<span class='notice'>Taser gun attached.</span>") to_chat(user, "<span class='notice'>Taser gun attached.</span>")
if(9) if(9)
if( istype(W, /obj/item/weapon/cell) ) if( istype(W, /obj/item/weapon/cell) )
if(!user.drop_item(W))
return
build_step++ build_step++
to_chat(user, "<span class='notice'>You complete the ED-209.</span>") to_chat(user, "<span class='notice'>You complete the ED-209.</span>")
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
new /obj/machinery/bot/ed209(T,created_name,lasercolor) new /obj/machinery/bot/ed209(T,created_name,lasercolor)
user.drop_item(W)
qdel(W) qdel(W)
user.drop_from_inventory(src) user.drop_from_inventory(src)
qdel(src) qdel(src)

View File

@@ -178,11 +178,11 @@
if ( get_total_ferts() >= Max_Fertilizers ) if ( get_total_ferts() >= Max_Fertilizers )
to_chat(user, "The fertilizer storage is full!") to_chat(user, "The fertilizer storage is full!")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
to_chat(user, "You insert [W].") to_chat(user, "You insert [W].")
flick("farmbot_hatch",src) flick("farmbot_hatch",src)
src.updateUsrDialog() src.updateUsrDialog()
return return
else else
..() ..()

View File

@@ -178,7 +178,7 @@
src.reagent_glass.loc = get_turf(src) src.reagent_glass.loc = get_turf(src)
src.reagent_glass = null src.reagent_glass = null
else else
to_chat(usr, "<span class='notice'>You cannot eject the beaker because the panel is locked.</span>") to_chat(usr, "<span class='notice'>You cannot eject the beaker because the panel is locked.</span>")
else if ((href_list["togglevoice"]) && (!src.locked || issilicon(usr))) else if ((href_list["togglevoice"]) && (!src.locked || issilicon(usr)))
src.shut_up = !src.shut_up src.shut_up = !src.shut_up
@@ -196,29 +196,29 @@
if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if (src.allowed(user) && !open && !emagged) if (src.allowed(user) && !open && !emagged)
src.locked = !src.locked src.locked = !src.locked
to_chat(user, "<span class='notice'>Controls are now [src.locked ? "locked." : "unlocked."]</span>") to_chat(user, "<span class='notice'>Controls are now [src.locked ? "locked." : "unlocked."]</span>")
src.updateUsrDialog() src.updateUsrDialog()
else else
if(emagged) if(emagged)
to_chat(user, "<span class='warning'>ERROR</span>") to_chat(user, "<span class='warning'>ERROR</span>")
if(open) if(open)
to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>") to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>")
else else
to_chat(user, "<span class='warning'>Access denied.</span>") to_chat(user, "<span class='warning'>Access denied.</span>")
else if (istype(W, /obj/item/weapon/reagent_containers/glass)) else if (istype(W, /obj/item/weapon/reagent_containers/glass))
if(src.locked) if(src.locked)
to_chat(user, "<span class='notice'>You cannot insert a beaker because the panel is locked.</span>") to_chat(user, "<span class='notice'>You cannot insert a beaker because the panel is locked.</span>")
return return
if(!isnull(src.reagent_glass)) if(!isnull(src.reagent_glass))
to_chat(user, "<span class='notice'>There is already a beaker loaded.</span>") to_chat(user, "<span class='notice'>There is already a beaker loaded.</span>")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
src.reagent_glass = W src.reagent_glass = W
to_chat(user, "<span class='notice'>You insert [W].</span>") to_chat(user, "<span class='notice'>You insert [W].</span>")
src.updateUsrDialog() src.updateUsrDialog()
return return
else else
..() ..()
@@ -229,7 +229,7 @@
..() ..()
if(open && !locked) if(open && !locked)
declare_crit = 0 declare_crit = 0
if(user) to_chat(user, "<span class='warning'>You short out [src]'s reagent synthesis circuits.</span>") if(user) to_chat(user, "<span class='warning'>You short out [src]'s reagent synthesis circuits.</span>")
spawn(0) spawn(0)
for(var/mob/O in hearers(src, null)) for(var/mob/O in hearers(src, null))
O.show_message("<span class='danger'>[src] buzzes oddly!</span>", 1) O.show_message("<span class='danger'>[src] buzzes oddly!</span>", 1)
@@ -559,7 +559,7 @@
//Making a medibot! //Making a medibot!
if(src.contents.len >= 1) if(src.contents.len >= 1)
to_chat(user, "<span class='notice'>You need to empty [src] out first.</span>") to_chat(user, "<span class='notice'>You need to empty [src] out first.</span>")
return return
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
@@ -573,7 +573,7 @@
qdel(S) qdel(S)
S = null S = null
user.put_in_hands(A) user.put_in_hands(A)
to_chat(user, "<span class='notice'>You add the robot arm to the first aid kit.</span>") to_chat(user, "<span class='notice'>You add the robot arm to the first aid kit.</span>")
user.drop_from_inventory(src) user.drop_from_inventory(src)
qdel(src) qdel(src)
@@ -591,10 +591,11 @@
switch(build_step) switch(build_step)
if(0) if(0)
if(istype(W, /obj/item/device/healthanalyzer)) if(istype(W, /obj/item/device/healthanalyzer))
<<<<<<< 636687c2a83b23b7efc3a052c68c16a6ced66ca8
user.drop_item(W) user.drop_item(W)
qdel(W) qdel(W)
src.build_step++ src.build_step++
to_chat(user, "<span class='notice'>You add the health sensor to [src].</span>") to_chat(user, "<span class='notice'>You add the health sensor to [src].</span>")
src.name = "First aid/robot arm/health analyzer assembly" src.name = "First aid/robot arm/health analyzer assembly"
src.overlays += image('icons/obj/aibots.dmi', "na_scanner") src.overlays += image('icons/obj/aibots.dmi', "na_scanner")
@@ -603,13 +604,34 @@
user.drop_item(W) user.drop_item(W)
qdel(W) qdel(W)
src.build_step++ src.build_step++
to_chat(user, "<span class='notice'>You complete the Medibot! Beep boop.</span>") to_chat(user, "<span class='notice'>You complete the Medibot! Beep boop.</span>")
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T) var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T)
S.skin = src.skin S.skin = src.skin
S.name = src.created_name S.name = src.created_name
user.drop_from_inventory(src) user.drop_from_inventory(src)
qdel(src) qdel(src)
=======
if(user.drop_item(W))
qdel(W)
src.build_step++
user << "<span class='notice'>You add the health sensor to [src].</span>"
src.name = "First aid/robot arm/health analyzer assembly"
src.overlays += image('icons/obj/aibots.dmi', "na_scanner")
if(1)
if(isprox(W))
if(user.drop_item(W))
qdel(W)
src.build_step++
user << "<span class='notice'>You complete the Medibot! Beep boop.</span>"
var/turf/T = get_turf(src)
var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T)
S.skin = src.skin
S.name = src.created_name
user.drop_from_inventory(src)
del(src)
>>>>>>> adds clown glue
/obj/machinery/bot/medbot/declare() /obj/machinery/bot/medbot/declare()

View File

@@ -122,9 +122,9 @@ var/global/mulebot_count = 0
else if(istype(I,/obj/item/weapon/cell) && open && !cell) else if(istype(I,/obj/item/weapon/cell) && open && !cell)
var/obj/item/weapon/cell/C = I var/obj/item/weapon/cell/C = I
user.drop_item(C, src) if(user.drop_item(C, src))
cell = C cell = C
updateDialog() updateDialog()
else if(istype(I,/obj/item/weapon/wirecutters)||istype(I,/obj/item/device/multitool)) else if(istype(I,/obj/item/weapon/wirecutters)||istype(I,/obj/item/device/multitool))
attack_hand(user) attack_hand(user)
else if(istype(I,/obj/item/weapon/screwdriver)) else if(istype(I,/obj/item/weapon/screwdriver))
@@ -304,12 +304,12 @@ var/global/mulebot_count = 0
if(open && !cell) if(open && !cell)
var/obj/item/weapon/cell/C = usr.get_active_hand() var/obj/item/weapon/cell/C = usr.get_active_hand()
if(istype(C)) if(istype(C))
usr.drop_item(C, src) if(usr.drop_item(C, src))
cell = C cell = C
C.add_fingerprint(usr) C.add_fingerprint(usr)
usr.visible_message("<span class='notice'>[usr] inserts a power cell into [src].</span>", "<span class='notice'>You insert the power cell into [src].</span>") usr.visible_message("<span class='notice'>[usr] inserts a power cell into [src].</span>", "<span class='notice'>You insert the power cell into [src].</span>")
updateDialog() updateDialog()
if("stop") if("stop")

View File

@@ -189,14 +189,14 @@ Auto Patrol: []"},
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(src.allowed(user) && !open && !emagged) if(src.allowed(user) && !open && !emagged)
src.locked = !src.locked src.locked = !src.locked
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
else else
if(emagged) if(emagged)
to_chat(user, "<span class='warning'>ERROR</span>") to_chat(user, "<span class='warning'>ERROR</span>")
if(open) if(open)
to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>") to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>")
else else
to_chat(user, "<span class='warning'>Access denied.</span>") to_chat(user, "<span class='warning'>Access denied.</span>")
else else
..() ..()
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry. if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry.
@@ -211,7 +211,7 @@ Auto Patrol: []"},
/obj/machinery/bot/secbot/Emag(mob/user as mob) /obj/machinery/bot/secbot/Emag(mob/user as mob)
..() ..()
if(open && !locked) if(open && !locked)
if(user) to_chat(user, "<span class='warning'>You short out [src]'s target assessment circuits.</span>") if(user) to_chat(user, "<span class='warning'>You short out [src]'s target assessment circuits.</span>")
spawn(0) spawn(0)
for(var/mob/O in hearers(src, null)) for(var/mob/O in hearers(src, null))
O.show_message("<span class='danger'>[src] buzzes oddly!</span>", 1) O.show_message("<span class='danger'>[src] buzzes oddly!</span>", 1)
@@ -244,7 +244,7 @@ Auto Patrol: []"},
// if can't reach perp for long enough, go idle // if can't reach perp for long enough, go idle
if(src.frustration >= 8) if(src.frustration >= 8)
// for(var/mob/O in hearers(src, null)) // for(var/mob/O in hearers(src, null))
// to_chat(O, "<span class='game say'><span class='name'>[src]</span> beeps, \"Backup requested! Suspect has evaded arrest.\"") // to_chat(O, "<span class='game say'><span class='name'>[src]</span> beeps, \"Backup requested! Suspect has evaded arrest.\"")
src.target = null src.target = null
src.last_found = world.time src.last_found = world.time
src.frustration = 0 src.frustration = 0
@@ -519,9 +519,9 @@ Auto Patrol: []"},
return return
/* /*
to_chat(world, "rec signal: [signal.source]") to_chat(world, "rec signal: [signal.source]")
for(var/x in signal.data) for(var/x in signal.data)
to_chat(world, "* [x] = [signal.data[x]]") to_chat(world, "* [x] = [signal.data[x]]")
*/ */
var/recv = signal.data["command"] var/recv = signal.data["command"]
@@ -605,7 +605,7 @@ Auto Patrol: []"},
//for(var/key in keyval) //for(var/key in keyval)
// signal.data[key] = keyval[key] // signal.data[key] = keyval[key]
signal.data = keyval signal.data = keyval
// to_chat(world, "sent [key],[keyval[key]] on [freq]") // to_chat(world, "sent [key],[keyval[key]] on [freq]")
if(signal.data["findbeacon"]) if(signal.data["findbeacon"])
frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS) frequency.post_signal(src, signal, filter = RADIO_NAVBEACONS)
else if(signal.data["type"] == "secbot") else if(signal.data["type"] == "secbot")
@@ -807,7 +807,7 @@ Auto Patrol: []"},
qdel(S) qdel(S)
var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly
user.put_in_hands(A) user.put_in_hands(A)
to_chat(user, "You add the signaler to the helmet.") to_chat(user, "You add the signaler to the helmet.")
user.drop_from_inventory(src) user.drop_from_inventory(src)
qdel(src) qdel(src)
else else
@@ -820,33 +820,33 @@ Auto Patrol: []"},
if(WT.remove_fuel(0,user)) if(WT.remove_fuel(0,user))
src.build_step++ src.build_step++
src.overlays += image('icons/obj/aibots.dmi', "hs_hole") src.overlays += image('icons/obj/aibots.dmi', "hs_hole")
to_chat(user, "You weld a hole in [src]!") to_chat(user, "You weld a hole in [src]!")
else if(isprox(W) && (src.build_step == 1)) else if(isprox(W) && (src.build_step == 1))
user.drop_item(W) if(user.drop_item(W))
src.build_step++ src.build_step++
to_chat(user, "You add the prox sensor to [src]!") to_chat(user, "You add the prox sensor to [src]!")
src.overlays += image('icons/obj/aibots.dmi', "hs_eye") src.overlays += image('icons/obj/aibots.dmi', "hs_eye")
src.name = "helmet/signaler/prox sensor assembly" src.name = "helmet/signaler/prox sensor assembly"
qdel(W) qdel(W)
else if(((istype(W, /obj/item/robot_parts/l_arm)) || (istype(W, /obj/item/robot_parts/r_arm))) && (src.build_step == 2)) else if(((istype(W, /obj/item/robot_parts/l_arm)) || (istype(W, /obj/item/robot_parts/r_arm))) && (src.build_step == 2))
user.drop_item(W) if(user.drop_item(W))
src.build_step++ src.build_step++
to_chat(user, "You add the robot arm to [src]!") to_chat(user, "You add the robot arm to [src]!")
src.name = "helmet/signaler/prox sensor/robot arm assembly" src.name = "helmet/signaler/prox sensor/robot arm assembly"
src.overlays += image('icons/obj/aibots.dmi', "hs_arm") src.overlays += image('icons/obj/aibots.dmi', "hs_arm")
qdel(W) qdel(W)
else if((istype(W, /obj/item/weapon/melee/baton)) && (src.build_step >= 3)) else if((istype(W, /obj/item/weapon/melee/baton)) && (src.build_step >= 3))
user.drop_item(W) if(user.drop_item(W))
src.build_step++ src.build_step++
to_chat(user, "You complete the Securitron! Beep boop.") to_chat(user, "You complete the Securitron! Beep boop.")
var/obj/machinery/bot/secbot/S = new /obj/machinery/bot/secbot var/obj/machinery/bot/secbot/S = new /obj/machinery/bot/secbot
S.loc = get_turf(src) S.loc = get_turf(src)
S.name = src.created_name S.name = src.created_name
qdel(W) qdel(W)
qdel(src) qdel(src)
else if(istype(W, /obj/item/weapon/pen)) else if(istype(W, /obj/item/weapon/pen))
var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN) var/t = copytext(stripped_input(user, "Enter new robot name", src.name, src.created_name),1,MAX_NAME_LEN)

View File

@@ -17,21 +17,21 @@
return ..() return ..()
if (is_type_in_list(O, list(/obj/item/weapon/coin/, /obj/item/weapon/reagent_containers/food/snacks/chococoin))) if (is_type_in_list(O, list(/obj/item/weapon/coin/, /obj/item/weapon/reagent_containers/food/snacks/chococoin)))
if(emagged == 1) if(emagged == 1)
user.drop_item(O, src) if(user.drop_item(O, src))
user.visible_message("<span class='notice'>[user] puts a coin into [src] and turns the knob.", "You put a coin into [src] and turn the knob.</span>") user.visible_message("<span class='notice'>[user] puts a coin into [src] and turns the knob.", "You put a coin into [src] and turn the knob.</span>")
src.visible_message("<span class='notice'>[src] rattles ominously!</span>") src.visible_message("<span class='notice'>[src] rattles ominously!</span>")
sleep(rand(10,15)) sleep(rand(10,15))
src.visible_message("<span class='notice'>[src] dispenses a strange sweet!</span>") src.visible_message("<span class='notice'>[src] dispenses a strange sweet!</span>")
new /obj/item/weapon/reagent_containers/food/snacks/sweet/strange(src.loc) new /obj/item/weapon/reagent_containers/food/snacks/sweet/strange(src.loc)
qdel(O) qdel(O)
else else
user.drop_item(O, src) if(user.drop_item(O, src))
user.visible_message("<span class='notice'>[user] puts a coin into [src] and turns the knob.", "<span class='notice'>You put a coin into [src] and turn the knob.</span>") user.visible_message("<span class='notice'>[user] puts a coin into [src] and turns the knob.", "<span class='notice'>You put a coin into [src] and turn the knob.</span>")
src.visible_message("<span class='notice'>[src] clicks softly.</span>") src.visible_message("<span class='notice'>[src] clicks softly.</span>")
sleep(rand(10,15)) sleep(rand(10,15))
src.visible_message("<span class='notice'>[src] dispenses a sweet!</span>") src.visible_message("<span class='notice'>[src] dispenses a sweet!</span>")
new /obj/item/weapon/reagent_containers/food/snacks/sweet(src.loc) new /obj/item/weapon/reagent_containers/food/snacks/sweet(src.loc)
qdel(O) qdel(O)
else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin)) else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin))
to_chat(user, "<span class='rose'>That coin is smudgy and oddly soft, you don't think that would work.</span>") to_chat(user, "<span class='rose'>That coin is smudgy and oddly soft, you don't think that would work.</span>")
return return

View File

@@ -79,10 +79,10 @@
to_chat(user, "<span class='warning'>[src] blinks red as you try to insert the cell!</span>") to_chat(user, "<span class='warning'>[src] blinks red as you try to insert the cell!</span>")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
charging = W charging = W
user.visible_message("<span class='notice'>[user] inserts a cell into [src].</span>", "<span class='notice'>You insert a cell into [src].</span>") user.visible_message("<span class='notice'>[user] inserts a cell into [src].</span>", "<span class='notice'>You insert a cell into [src].</span>")
chargelevel = -1 chargelevel = -1
updateicon() updateicon()
/obj/machinery/cell_charger/emag(mob/user) /obj/machinery/cell_charger/emag(mob/user)

View File

@@ -516,9 +516,9 @@
qdel(W) qdel(W)
return return
else if (istype(W, /obj/item) && get_dist(src,user)<2) else if (istype(W, /obj/item) && get_dist(src,user)<2)
user.drop_item(W, src.loc) if(user.drop_item(W, src.loc))
visible_message("<span class='notice'>[user] dunks [W] into the [src]!</span>", 3) visible_message("<span class='notice'>[user] dunks [W] into the [src]!</span>", 3)
return return
/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) /obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
if(istype(mover,/obj/item) && mover.throwing) if(istype(mover,/obj/item) && mover.throwing)

View File

@@ -41,11 +41,11 @@
anchored = 0 anchored = 0
state = 0 state = 0
if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit) if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit)
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) if(user.drop_item(P, src))
to_chat(user, "<span class='notice'>You place the circuit board inside the frame.</span>") playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
icon_state = "1" to_chat(user, "<span class='notice'>You place the circuit board inside the frame.</span>")
circuit = P icon_state = "1"
user.drop_item(P, src) circuit = P
if(istype(P, /obj/item/weapon/screwdriver) && circuit) if(istype(P, /obj/item/weapon/screwdriver) && circuit)
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
to_chat(user, "<span class='notice'>You screw the circuit board into place.</span>") to_chat(user, "<span class='notice'>You screw the circuit board into place.</span>")
@@ -135,6 +135,10 @@
to_chat(user, "<span class='warning'>This [P] does not seem to fit.</span>") to_chat(user, "<span class='warning'>This [P] does not seem to fit.</span>")
return return
if(!user.drop_item(P, src))
user << "<span class='warning'>You can't let go of \the [P]!</span>"
return
if(P:brainmob.mind) if(P:brainmob.mind)
ticker.mode.remove_cultist(P:brainmob.mind, 1) ticker.mode.remove_cultist(P:brainmob.mind, 1)
ticker.mode.remove_revolutionary(P:brainmob.mind, 1) ticker.mode.remove_revolutionary(P:brainmob.mind, 1)

View File

@@ -341,11 +341,12 @@
if(istype(P, /obj/item/weapon/circuitboard) && !circuit) if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
var/obj/item/weapon/circuitboard/B = P var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "computer") if(B.board_type == "computer")
if(!user.drop_item(B, src)) return
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
to_chat(user, "<span class='notice'>You place the circuit board inside the frame.</span>") to_chat(user, "<span class='notice'>You place the circuit board inside the frame.</span>")
src.icon_state = "1" src.icon_state = "1"
src.circuit = P src.circuit = P
user.drop_item(B, src)
else else
to_chat(user, "<span class='warning'>This frame does not accept circuit boards of this type!</span>") to_chat(user, "<span class='warning'>This frame does not accept circuit boards of this type!</span>")
return 1 return 1

View File

@@ -105,14 +105,14 @@
return ..() return ..()
if(!is_centcom() && !scan && (access_change_ids in id_card.access)) if(!is_centcom() && !scan && (access_change_ids in id_card.access))
user.drop_item(id_card, src) if(user.drop_item(id_card, src))
scan = id_card scan = id_card
else if(is_centcom() && !scan && ((access_cent_creed in id_card.access) || (access_cent_captain in id_card.access))) else if(is_centcom() && !scan && ((access_cent_creed in id_card.access) || (access_cent_captain in id_card.access)))
user.drop_item(id_card, src) if(user.drop_item(id_card, src))
scan = id_card scan = id_card
else if(!modify) else if(!modify)
user.drop_item(id_card, src) if(user.drop_item(id_card, src))
modify = id_card modify = id_card
nanomanager.update_uis(src) nanomanager.update_uis(src)
attack_hand(user) attack_hand(user)
@@ -215,8 +215,8 @@
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src) if(usr.drop_item(I, src))
modify = I modify = I
if ("scan") if ("scan")
if (scan) if (scan)
@@ -231,8 +231,8 @@
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src) if(usr.drop_item(I, src))
scan = I scan = I
if("access") if("access")
if(href_list["allowed"]) if(href_list["allowed"])

View File

@@ -160,8 +160,8 @@
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src) if(usr.drop_item(I, src))
src.scan = I src.scan = I
else if (href_list["logout"]) else if (href_list["logout"])
src.authenticated = null src.authenticated = null
src.screen = null src.screen = null

View File

@@ -54,9 +54,9 @@
return ..() return ..()
if(!pda_device) if(!pda_device)
user.drop_item(user_pda, src) if(user.drop_item(user_pda, src))
pda_device = user_pda pda_device = user_pda
update_icon() update_icon()
nanomanager.update_uis(src) nanomanager.update_uis(src)
attack_hand(user) attack_hand(user)
@@ -119,8 +119,8 @@
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/device/pda)) if (istype(I, /obj/item/device/pda))
usr.drop_item(I, src) if(usr.drop_item(I, src))
pda_device = I pda_device = I
update_icon() update_icon()
if ("purchase") if ("purchase")

View File

@@ -26,9 +26,9 @@
/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob) /obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob)
if(istype(O, /obj/item/weapon/card/id) && !scan) if(istype(O, /obj/item/weapon/card/id) && !scan)
usr.drop_item(O, src) if(usr.drop_item(O, src))
scan = O scan = O
to_chat(user, "You insert [O].") to_chat(user, "You insert \the [O].")
..() ..()
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob) /obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
@@ -43,7 +43,7 @@
if(..()) if(..())
return return
if (src.z > 6) if (src.z > 6)
to_chat(user, "<span class='danger'>Unable to establish a connection: </span>You're too far away from the station!") to_chat(user, "<span class='danger'>Unable to establish a connection: </span>You're too far away from the station!")
return return
var/dat var/dat
@@ -239,8 +239,8 @@ What a mess.*/
else else
var/obj/item/I = usr.get_active_hand() var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
usr.drop_item(I, src) if(usr.drop_item(I, src))
scan = I scan = I
if("Log Out") if("Log Out")
authenticated = null authenticated = null

View File

@@ -314,11 +314,11 @@
var/obj/item/weapon/spacecash/S = I var/obj/item/weapon/spacecash/S = I
var/money_add = S.amount * S.worth var/money_add = S.amount * S.worth
user.drop_item(I) if(user.drop_item(I))
qdel(I) qdel(I)
src.stored_money += money_add src.stored_money += money_add
src.updateUsrDialog() src.updateUsrDialog()
/obj/machinery/computer/slot_machine/proc/can_play() //If no money in OUR account, return 0 /obj/machinery/computer/slot_machine/proc/can_play() //If no money in OUR account, return 0
if(!our_money_account) if(!our_money_account)

View File

@@ -79,10 +79,13 @@
if(istype(P, /obj/item/weapon/circuitboard)) if(istype(P, /obj/item/weapon/circuitboard))
var/obj/item/weapon/circuitboard/B = P var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "machine") if(B.board_type == "machine")
if(!user.drop_item(B, src))
user << "<span class='warning'>You can't let go of \the [B]!</span>"
return
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
to_chat(user, "<span class='notice'>You add the circuit board to the frame.</span>") to_chat(user, "<span class='notice'>You add the circuit board to the frame.</span>")
circuit = P circuit = P
user.drop_item(B, src)
set_build_state(3) set_build_state(3)
components = list() components = list()
req_components = circuit.req_components.Copy() req_components = circuit.req_components.Copy()
@@ -200,11 +203,11 @@
else else
to_chat(user, "<span class='warning'>You do not have enough [P]!</span>") to_chat(user, "<span class='warning'>You do not have enough [P]!</span>")
user.drop_item(P, src) if(user.drop_item(P, src))
components += P components += P
req_components[I]-- req_components[I]--
update_desc() update_desc()
break break
to_chat(user, desc) to_chat(user, desc)
if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil)) if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil))

View File

@@ -312,9 +312,9 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj
if(beaker) if(beaker)
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine.</span>") to_chat(user, "<span class='warning'>A beaker is already loaded into the machine.</span>")
return return
beaker = G if(user.drop_item(G, src))
user.drop_item(G, src) beaker = G
user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!") user.visible_message("[user] adds \a [G] to \the [src]!", "You add \a [G] to \the [src]!")
if(istype(G, /obj/item/weapon/wrench))//FUCK YOU PARENT, YOU AREN'T MY REAL DAD if(istype(G, /obj/item/weapon/wrench))//FUCK YOU PARENT, YOU AREN'T MY REAL DAD
return return
if(..()) if(..())

View File

@@ -107,7 +107,9 @@ obj/machinery/recharger/defibcharger/wallcharger/attackby(obj/item/weapon/G as o
if(a.power_equip == 0) if(a.power_equip == 0)
to_chat(user, "<span class='warning'>[src] blinks red as you try to insert [D]!</span>") to_chat(user, "<span class='warning'>[src] blinks red as you try to insert [D]!</span>")
return return
user.drop_item(G, src) if(user.drop_item(G, src))
charging = G charging = G
use_power = 2 use_power = 2
update_icon() update_icon()
else
user << "<span class='warning'>You can't let go of \the [G]!</span>"

View File

@@ -38,9 +38,9 @@
switch(build) switch(build)
if(0) // Empty hull if(0) // Empty hull
if(istype(W, /obj/item/weapon/screwdriver)) if(istype(W, /obj/item/weapon/screwdriver))
to_chat(usr, "You begin removing screws from \the [src] backplate...") to_chat(usr, "You begin removing screws from \the [src] backplate...")
if(do_after(user, src, 50)) if(do_after(user, src, 50))
to_chat(usr, "<span class='notice'>You unscrew \the [src] from the wall.</span>") to_chat(usr, "<span class='notice'>You unscrew \the [src] from the wall.</span>")
playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1)
new /obj/item/mounted/frame/airlock_controller(get_turf(src)) new /obj/item/mounted/frame/airlock_controller(get_turf(src))
qdel(src) qdel(src)
@@ -48,20 +48,20 @@
if(istype(W, /obj/item/weapon/circuitboard)) if(istype(W, /obj/item/weapon/circuitboard))
var/obj/item/weapon/circuitboard/C=W var/obj/item/weapon/circuitboard/C=W
if(C.board_type!="embedded controller") if(C.board_type!="embedded controller")
to_chat(user, "<span class='warning'>You cannot install this type of board into an embedded controller.</span>") to_chat(user, "<span class='warning'>You cannot install this type of board into an embedded controller.</span>")
return return
to_chat(usr, "You begin to insert \the [C] into \the [src].") to_chat(usr, "You begin to insert \the [C] into \the [src].")
if(do_after(user, src, 10)) if(do_after(user, src, 10))
to_chat(usr, "<span class='notice'>You secure \the [C]!</span>") if(user.drop_item(C, src))
user.drop_item(C, src) to_chat(usr, "<span class='notice'>You secure \the [C]!</span>")
_circuitboard=C _circuitboard=C
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0) playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
build++ build++
update_icon() update_icon()
return 1 return 1
if(1) // Circuitboard installed if(1) // Circuitboard installed
if(istype(W, /obj/item/weapon/crowbar)) if(istype(W, /obj/item/weapon/crowbar))
to_chat(usr, "You begin to pry out \the [W] into \the [src].") to_chat(usr, "You begin to pry out \the [W] into \the [src].")
if(do_after(user, src, 10)) if(do_after(user, src, 10))
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0) playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
build-- build--
@@ -79,7 +79,7 @@
return 1 return 1
if(istype(W, /obj/item/stack/cable_coil)) if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C=W var/obj/item/stack/cable_coil/C=W
to_chat(user, "You start adding cables to \the [src]...") to_chat(user, "You start adding cables to \the [src]...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 20) && C.amount >= 10) if(do_after(user, src, 20) && C.amount >= 10)
C.use(5) C.use(5)
@@ -90,7 +90,7 @@
"You add cables to \the [src].") "You add cables to \the [src].")
if(2) // Circuitboard installed, wired. if(2) // Circuitboard installed, wired.
if(istype(W, /obj/item/weapon/wirecutters)) if(istype(W, /obj/item/weapon/wirecutters))
to_chat(usr, "You begin to remove the wiring from \the [src].") to_chat(usr, "You begin to remove the wiring from \the [src].")
if(do_after(user, src, 50)) if(do_after(user, src, 50))
new /obj/item/stack/cable_coil(loc,5) new /obj/item/stack/cable_coil(loc,5)
user.visible_message(\ user.visible_message(\
@@ -100,7 +100,7 @@
update_icon() update_icon()
return 1 return 1
if(istype(W, /obj/item/weapon/screwdriver)) if(istype(W, /obj/item/weapon/screwdriver))
to_chat(user, "You begin to complete \the [src]...") to_chat(user, "You begin to complete \the [src]...")
playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, src, 20)) if(do_after(user, src, 20))
if(!_circuitboard) if(!_circuitboard)
@@ -145,7 +145,7 @@
/obj/machinery/embedded_controller/attack_hand(mob/user as mob) /obj/machinery/embedded_controller/attack_hand(mob/user as mob)
if(!user.dexterity_check()) if(!user.dexterity_check())
to_chat(user, "You do not have the dexterity to use this.") to_chat(user, "You do not have the dexterity to use this.")
return return
if(build<2) return 1 if(build<2) return 1
src.ui_interact(user) src.ui_interact(user)
@@ -222,7 +222,7 @@
var/re_init=0 var/re_init=0
if("set_tag" in href_list) if("set_tag" in href_list)
if(!(href_list["set_tag"] in vars)) if(!(href_list["set_tag"] in vars))
to_chat(usr, "<span class='warning'>Something went wrong: Unable to find [href_list["set_tag"]] in vars!</span>") to_chat(usr, "<span class='warning'>Something went wrong: Unable to find [href_list["set_tag"]] in vars!</span>")
return 1 return 1
var/current_tag = src.vars[href_list["set_tag"]] var/current_tag = src.vars[href_list["set_tag"]]
var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag", src, current_tag) as null|text),1,MAX_MESSAGE_LEN) var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag", src, current_tag) as null|text),1,MAX_MESSAGE_LEN)
@@ -239,13 +239,13 @@
if(!O) if(!O)
return 1 return 1
if(!canLink(O)) if(!canLink(O))
to_chat(usr, "<span class='warning'>You can't link with that device.</span>") to_chat(usr, "<span class='warning'>You can't link with that device.</span>")
return 1 return 1
if(unlinkFrom(usr, O)) if(unlinkFrom(usr, O))
to_chat(usr, "<span class='confirm'>A green light flashes on \the [P], confirming the link was removed.</span>") to_chat(usr, "<span class='confirm'>A green light flashes on \the [P], confirming the link was removed.</span>")
else else
to_chat(usr, "<span class='attack'>A red light flashes on \the [P]. It appears something went wrong when unlinking the two devices.</span>") to_chat(usr, "<span class='attack'>A red light flashes on \the [P]. It appears something went wrong when unlinking the two devices.</span>")
update_mt_menu=1 update_mt_menu=1
if("link" in href_list) if("link" in href_list)
@@ -253,33 +253,33 @@
if(!O) if(!O)
return 1 return 1
if(!canLink(O,href_list)) if(!canLink(O,href_list))
to_chat(usr, "<span class='warning'>You can't link with that device.</span>") to_chat(usr, "<span class='warning'>You can't link with that device.</span>")
return 1 return 1
if (isLinkedWith(O)) if (isLinkedWith(O))
to_chat(usr, "<span class='attack'>A red light flashes on \the [P]. The two devices are already linked.</span>") to_chat(usr, "<span class='attack'>A red light flashes on \the [P]. The two devices are already linked.</span>")
return 1 return 1
if(linkWith(usr, O, href_list)) if(linkWith(usr, O, href_list))
to_chat(usr, "<span class='confirm'>A green light flashes on \the [P], confirming the link has been created.</span>") to_chat(usr, "<span class='confirm'>A green light flashes on \the [P], confirming the link has been created.</span>")
re_init = 1//this is the only thing different, crappy, I know re_init = 1//this is the only thing different, crappy, I know
else else
to_chat(usr, "<span class='attack'>A red light flashes on \the [P]. It appears something went wrong when linking the two devices.</span>") to_chat(usr, "<span class='attack'>A red light flashes on \the [P]. It appears something went wrong when linking the two devices.</span>")
update_mt_menu=1 update_mt_menu=1
if("buffer" in href_list) if("buffer" in href_list)
if(istype(src, /obj/machinery/telecomms)) if(istype(src, /obj/machinery/telecomms))
if(!hasvar(src, "id")) if(!hasvar(src, "id"))
to_chat(usr, "<span class='danger'>A red light flashes and nothing changes.</span>") to_chat(usr, "<span class='danger'>A red light flashes and nothing changes.</span>")
return return
else if(!hasvar(src, "id_tag")) else if(!hasvar(src, "id_tag"))
to_chat(usr, "<span class='danger'>A red light flashes and nothing changes.</span>") to_chat(usr, "<span class='danger'>A red light flashes and nothing changes.</span>")
return return
P.buffer = src P.buffer = src
to_chat(usr, "<span class='confirm'>A green light flashes, and the device appears in the multitool buffer.</span>") to_chat(usr, "<span class='confirm'>A green light flashes, and the device appears in the multitool buffer.</span>")
update_mt_menu=1 update_mt_menu=1
if("flush" in href_list) if("flush" in href_list)
to_chat(usr, "<span class='confirm'>A green light flashes, and the device disappears from the multitool buffer.</span>") to_chat(usr, "<span class='confirm'>A green light flashes, and the device disappears from the multitool buffer.</span>")
P.buffer = null P.buffer = null
update_mt_menu=1 update_mt_menu=1

View File

@@ -77,8 +77,8 @@
to_chat(user, "<span class='warning'>There already is a power cell already installed.</span>") to_chat(user, "<span class='warning'>There already is a power cell already installed.</span>")
return return
else else
user.drop_item(W, src) if(user.drop_item(W, src))
cell = W cell = W
user.visible_message("<span class='notice'>[user] inserts \the [src] into \the [src].</span>", \ user.visible_message("<span class='notice'>[user] inserts \the [src] into \the [src].</span>", \
"<span class='notice'>You insert \the [src] into \the [src].</span>") "<span class='notice'>You insert \the [src] into \the [src].</span>")
update_icon() update_icon()

View File

@@ -11,6 +11,7 @@
machine_flags = WRENCHMOVE | FIXED2WORK machine_flags = WRENCHMOVE | FIXED2WORK
/obj/machinery/gashapon/attackby(var/obj/O as obj, var/mob/user as mob) /obj/machinery/gashapon/attackby(var/obj/O as obj, var/mob/user as mob)
<<<<<<< 636687c2a83b23b7efc3a052c68c16a6ced66ca8
if (is_type_in_list(O, list(/obj/item/weapon/coin/, /obj/item/weapon/reagent_containers/food/snacks/chococoin))) if (is_type_in_list(O, list(/obj/item/weapon/coin/, /obj/item/weapon/reagent_containers/food/snacks/chococoin)))
user.drop_item(O, src) user.drop_item(O, src)
user.visible_message("<span class='notice'>[user] puts a coin into [src] and turns the knob.</span>", "<span class='notice'>You put a coin into [src] and turn the knob.</span>") user.visible_message("<span class='notice'>[user] puts a coin into [src] and turns the knob.</span>", "<span class='notice'>You put a coin into [src] and turn the knob.</span>")
@@ -24,6 +25,17 @@
else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin)) else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin))
to_chat(user, "<span class='rose'>That coin is smudgy and oddly soft, you don't think that would work.</span>") to_chat(user, "<span class='rose'>That coin is smudgy and oddly soft, you don't think that would work.</span>")
return return
=======
if (istype(O, /obj/item/weapon/coin/))
if(user.drop_item(O, src))
user.visible_message("[user] puts a coin into [src] and turns the knob.", "You put a coin into [src] and turn the knob.")
src.visible_message("[src] clicks softly.")
sleep(rand(10,15))
src.visible_message("[src] dispenses a capsule!")
var/obj/item/weapon/capsule/b = new(src.loc)
b.icon_state = "capsule[rand(1,12)]"
qdel(O)
>>>>>>> adds clown glue
else else
return ..() return ..()

View File

@@ -75,11 +75,11 @@
to_chat(user, "There is already a reagent container loaded!") to_chat(user, "There is already a reagent container loaded!")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
src.beaker = W src.beaker = W
to_chat(user, "You attach \the [W] to \the [src].") to_chat(user, "You attach \the [W] to \the [src].")
src.update_icon() src.update_icon()
return return
else else
return ..() return ..()

View File

@@ -110,7 +110,7 @@
src.dirty = 0 // just to be sure src.dirty = 0 // just to be sure
src.flags = OPENCONTAINER src.flags = OPENCONTAINER
else else
to_chat(user, "<span class='warning'>It's broken!</span>") to_chat(user, "<span class='warning'>It's broken!</span>")
return 1 return 1
else if(src.dirty==100) // The microwave is all dirty so can't be used! else if(src.dirty==100) // The microwave is all dirty so can't be used!
var/obj/item/weapon/reagent_containers/R = O var/obj/item/weapon/reagent_containers/R = O
@@ -132,29 +132,29 @@
src.flags = OPENCONTAINER src.flags = OPENCONTAINER
return 1 return 1
else //Otherwise bad luck!! else //Otherwise bad luck!!
to_chat(user, "<span class='warning'>It's too dirty!</span>") to_chat(user, "<span class='warning'>It's too dirty!</span>")
return 1 return 1
if(..()) if(..())
return 1 return 1
if(holdingitems && holdingitems.len >= limit) if(holdingitems && holdingitems.len >= limit)
to_chat(usr, "The machine cannot hold anymore items.") to_chat(usr, "The machine cannot hold anymore items.")
return 1 return 1
else if(istype(O, /obj/item/weapon/storage/bag/plants) || istype(O, /obj/item/weapon/storage/bag/food/borg)) else if(istype(O, /obj/item/weapon/storage/bag/plants) || istype(O, /obj/item/weapon/storage/bag/food/borg))
var/obj/item/weapon/storage/bag/B = O var/obj/item/weapon/storage/bag/B = O
for (var/obj/item/weapon/reagent_containers/food/snacks/G in O.contents) for (var/obj/item/weapon/reagent_containers/food/snacks/G in O.contents)
B.remove_from_storage(G,src) B.remove_from_storage(G,src)
if(contents && contents.len >= limit) //Sanity checking so the microwave doesn't overfill if(contents && contents.len >= limit) //Sanity checking so the microwave doesn't overfill
to_chat(user, "You fill the Microwave to the brim.") to_chat(user, "You fill the Microwave to the brim.")
break break
if(!O.contents.len) if(!O.contents.len)
to_chat(user, "You empty \the [O] into the Microwave.") to_chat(user, "You empty \the [O] into the Microwave.")
src.updateUsrDialog() src.updateUsrDialog()
return 0 return 0
if (!is_type_in_list(O.contents)) if (!is_type_in_list(O.contents))
to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>") to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
return 1 return 1
user.before_take_item(O) user.before_take_item(O)
@@ -171,24 +171,24 @@
"<span class='notice'>You add one of [O] to \the [src].</span>") "<span class='notice'>You add one of [O] to \the [src].</span>")
else else
// user.before_take_item(O) //This just causes problems so far as I can tell. -Pete // user.before_take_item(O) //This just causes problems so far as I can tell. -Pete
user.drop_item(O, src) if(user.drop_item(O, src))
user.visible_message( \ user.visible_message( \
"<span class='notice'>[user] has added \the [O] to \the [src].</span>", \ "<span class='notice'>[user] has added \the [O] to \the [src].</span>", \
"<span class='notice'>You add \the [O] to \the [src].</span>") "<span class='notice'>You add \the [O] to \the [src].</span>")
else if(is_type_in_list(O,accepts_reagents_from)) else if(is_type_in_list(O,accepts_reagents_from))
if (!O.reagents) if (!O.reagents)
return 1 return 1
for (var/datum/reagent/R in O.reagents.reagent_list) for (var/datum/reagent/R in O.reagents.reagent_list)
if (!(R.id in acceptable_reagents)) if (!(R.id in acceptable_reagents))
to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>") to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
return 1 return 1
//G.reagents.trans_to(src,G.amount_per_transfer_from_this) //G.reagents.trans_to(src,G.amount_per_transfer_from_this)
else if(istype(O,/obj/item/weapon/grab)) else if(istype(O,/obj/item/weapon/grab))
var/obj/item/weapon/grab/G = O var/obj/item/weapon/grab/G = O
to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>") to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
return 1 return 1
else else
to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>") to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
return 1 return 1
src.updateUsrDialog() src.updateUsrDialog()
@@ -202,7 +202,7 @@
user.set_machine(src) user.set_machine(src)
interact(user) interact(user)
return 1 return 1
to_chat(user, "<span class='warning'>You aren't equipped to interface with technology this old!</span>") to_chat(user, "<span class='warning'>You aren't equipped to interface with technology this old!</span>")
return 0 return 0
/obj/machinery/microwave/attack_hand(mob/user as mob) /obj/machinery/microwave/attack_hand(mob/user as mob)
@@ -386,7 +386,7 @@
if (src.reagents.total_volume) if (src.reagents.total_volume)
src.dirty++ src.dirty++
src.reagents.clear_reagents() src.reagents.clear_reagents()
to_chat(usr, "<span class='notice'>You dispose of the microwave contents.</span>") to_chat(usr, "<span class='notice'>You dispose of the microwave contents.</span>")
src.updateUsrDialog() src.updateUsrDialog()
/obj/machinery/microwave/proc/muck_start() /obj/machinery/microwave/proc/muck_start()

View File

@@ -50,7 +50,7 @@
if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat) if(target.wear_mask || target.l_hand || target.r_hand || target.back || target.uniform || target.hat)
to_chat(user, "<span class='warning'>The monkey may not have abiotic items on.</span>") to_chat(user, "<span class='warning'>The monkey may not have abiotic items on.</span>")
else else
user.drop_item(G) user.drop_item(G, force_drop = 1)
qdel(target) qdel(target)
target = null target = null
to_chat(user, "<span class='notice'>You stuff the monkey in the machine.") to_chat(user, "<span class='notice'>You stuff the monkey in the machine.")

View File

@@ -127,14 +127,14 @@
to_chat(user, "<span class='warning'>\The [src] doesn't have enough metal to complete this task.</span>") to_chat(user, "<span class='warning'>\The [src] doesn't have enough metal to complete this task.</span>")
return TRUE return TRUE
building=1 if(user.drop_item(O, src))
update_icon() building=1
user.drop_item(O, src) update_icon()
mmi.icon = null mmi.icon = null
mmi.invisibility = 101 mmi.invisibility = 101
spawn(50) spawn(50)
makeMoMMI(mmi.brainmob) makeMoMMI(mmi.brainmob)
return TRUE return TRUE
/obj/machinery/mommi_spawner/proc/makeMoMMI(var/mob/user) /obj/machinery/mommi_spawner/proc/makeMoMMI(var/mob/user)
var/turf/T = get_turf(src) var/turf/T = get_turf(src)

View File

@@ -1048,8 +1048,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(photo) if(photo)
return EjectPhoto(user) return EjectPhoto(user)
if(istype(user.get_active_hand(), /obj/item/weapon/photo)) if(istype(user.get_active_hand(), /obj/item/weapon/photo))
photo = user.get_active_hand() if(user.drop_item(photo, src))
user.drop_item(photo, src) photo = user.get_active_hand()
/obj/machinery/newscaster/proc/EjectPhoto(mob/user as mob) /obj/machinery/newscaster/proc/EjectPhoto(mob/user as mob)
if(!photo) return if(!photo) return

View File

@@ -91,10 +91,10 @@ Feel free to do whatever with this if you think it lacks.
else else
var/obj/item/device/pda/P = O var/obj/item/device/pda/P = O
if(istype(P)) if(istype(P))
user.drop_item(P, src) if(user.drop_item(P, src))
storedpda = P storedpda = P
//P.add_fingerprint(usr) //P.add_fingerprint(usr)
update_icon() update_icon()
/obj/machinery/pdapainter/attack_hand(mob/user as mob) /obj/machinery/pdapainter/attack_hand(mob/user as mob)
..() ..()

View File

@@ -56,12 +56,15 @@
if (istype(G, /obj/item/weapon/gun/energy/staff)) if (istype(G, /obj/item/weapon/gun/energy/staff))
to_chat(user, "<span class='notice'>The recharger rejects the magical apparatus.</span>") to_chat(user, "<span class='notice'>The recharger rejects the magical apparatus.</span>")
return return
if(!user.drop_item(G, src))
user << "<span class='warning'>You can't let go of \the [G]!</span>"
return
appearance_backup = G.appearance appearance_backup = G.appearance
var/matrix/M = matrix() var/matrix/M = matrix()
M.Scale(0.625) M.Scale(0.625)
M.Translate(0,6) M.Translate(0,6)
G.transform = M G.transform = M
user.drop_item(G, src)
charging = G charging = G
if(!self_powered) if(!self_powered)
use_power = 2 use_power = 2

View File

@@ -105,10 +105,10 @@
/obj/machinery/recharge_station/attackby(var/obj/item/W, var/mob/living/user) /obj/machinery/recharge_station/attackby(var/obj/item/W, var/mob/living/user)
if(is_type_in_list(W, acceptable_upgradeables)) if(is_type_in_list(W, acceptable_upgradeables))
if(!(locate(W.type) in upgrade_holder)) if(!(locate(W.type) in upgrade_holder))
user.drop_item(W, src) if(user.drop_item(W, src))
upgrade_holder.Add(W) upgrade_holder.Add(W)
to_chat(user, "<span class='notice'>You add \the [W] to \the [src].</span>") to_chat(user, "<span class='notice'>You add \the [W] to \the [src].</span>")
return return
else else
to_chat(user, "<span class='notice'>\The [src] already contains something resembling a [W.name].</span>") to_chat(user, "<span class='notice'>\The [src] already contains something resembling a [W.name].</span>")
return return

View File

@@ -594,11 +594,11 @@
if(src.SUIT) if(src.SUIT)
to_chat(user, "<font color='blue'>The unit already contains a suit.</font>") to_chat(user, "<font color='blue'>The unit already contains a suit.</font>")
return return
to_chat(user, "You load the [S.name] into the storage compartment.") if(user.drop_item(S, src))
user.drop_item(S, src) to_chat(user, "You load the [S.name] into the storage compartment.")
src.SUIT = S src.SUIT = S
src.update_icon() src.update_icon()
src.updateUsrDialog() src.updateUsrDialog()
return return
if( istype(I,/obj/item/clothing/head/helmet) ) if( istype(I,/obj/item/clothing/head/helmet) )
if(!src.isopen) if(!src.isopen)
@@ -607,12 +607,12 @@
if(src.HELMET) if(src.HELMET)
to_chat(user, "<font color='blue'>The unit already contains a helmet.</font>") to_chat(user, "<font color='blue'>The unit already contains a helmet.</font>")
return return
to_chat(user, "You load the [H.name] into the storage compartment.") if(user.drop_item(H, src))
user.drop_item(H, src) to_chat(user, "You load the [H.name] into the storage compartment.")
src.HELMET = H src.HELMET = H
src.update_icon() src.update_icon()
src.updateUsrDialog() src.updateUsrDialog()
return return
if( istype(I,/obj/item/clothing/mask) ) if( istype(I,/obj/item/clothing/mask) )
if(!src.isopen) if(!src.isopen)
return return
@@ -620,11 +620,11 @@
if(src.MASK) if(src.MASK)
to_chat(user, "<font color='blue'>The unit already contains a mask.</font>") to_chat(user, "<font color='blue'>The unit already contains a mask.</font>")
return return
to_chat(user, "You load the [M.name] into the storage compartment.") if(user.drop_item(M, src))
user.drop_item(M, src) to_chat(user, "You load the [M.name] into the storage compartment.")
src.MASK = M src.MASK = M
src.update_icon() src.update_icon()
src.updateUsrDialog() src.updateUsrDialog()
return return
if( istype(I,/obj/item/clothing/shoes) ) if( istype(I,/obj/item/clothing/shoes) )
if(!src.isopen) if(!src.isopen)
@@ -633,11 +633,11 @@
if(src.BOOTS) if(src.BOOTS)
to_chat(user, "<font color='blue'>The unit already contains shoes.</font>") to_chat(user, "<font color='blue'>The unit already contains shoes.</font>")
return return
to_chat(user, "You load \the [M.name] into the storage compartment.") if(user.drop_item(M, src))
user.drop_item(M, src) to_chat(user, "You load \the [M.name] into the storage compartment.")
src.BOOTS = M src.BOOTS = M
src.update_icon() src.update_icon()
src.updateUsrDialog() src.updateUsrDialog()
return return
src.update_icon() src.update_icon()
src.updateUsrDialog() src.updateUsrDialog()

View File

@@ -54,7 +54,7 @@
to_chat(user, "You insert the cables.") to_chat(user, "You insert the cables.")
A.amount -= 5 A.amount -= 5
if(A.amount <= 0) if(A.amount <= 0)
user.drop_item(A) user.drop_item(A, force_drop = 1)
returnToPool(A) returnToPool(A)
construct_op -- construct_op --
stat &= ~BROKEN // the machine's not borked anymore! stat &= ~BROKEN // the machine's not borked anymore!

View File

@@ -185,9 +185,9 @@
var/obj/item/weapon/card/id/I = C.get_active_hand() var/obj/item/weapon/card/id/I = C.get_active_hand()
if(istype(I)) if(istype(I))
if(check_access(I)) if(check_access(I))
C.drop_item(I, src) if(C.drop_item(I, src))
auth = I auth = I
create_log("has logged in.", usr) create_log("has logged in.", usr)
else else
create_log("has logged out.", usr) create_log("has logged out.", usr)
auth.loc = src.loc auth.loc = src.loc

View File

@@ -36,9 +36,12 @@
if(istype(L, /obj/effect/landmark/) && istype(L.loc, /turf)) if(istype(L, /obj/effect/landmark/) && istype(L.loc, /turf))
if(!user.drop_item(I))
user << "<span class='warning'>You can't let go of \the [I]!</span>"
return
to_chat(usr, "You insert the coordinates into the machine.") to_chat(usr, "You insert the coordinates into the machine.")
to_chat(usr, "A message flashes across the screen reminding the traveller that the nuclear authentication disk is to remain on the station at all times.") to_chat(usr, "A message flashes across the screen reminding the traveller that the nuclear authentication disk is to remain on the station at all times.")
user.drop_item(I)
qdel(I) qdel(I)
/* FUCK YOU /* FUCK YOU

View File

@@ -364,10 +364,10 @@ var/global/num_vending_terminals = 1
return return
else if(premium.len > 0 && is_type_in_list(W, list(/obj/item/weapon/coin/, /obj/item/weapon/reagent_containers/food/snacks/chococoin))) else if(premium.len > 0 && is_type_in_list(W, list(/obj/item/weapon/coin/, /obj/item/weapon/reagent_containers/food/snacks/chococoin)))
if (isnull(coin)) if (isnull(coin))
user.drop_item(W, src) if(user.drop_item(W, src))
coin = W coin = W
to_chat(user, "<span class='notice'>You insert a coin into [src].</span>") to_chat(user, "<span class='notice'>You insert a coin into [src].</span>")
src.updateUsrDialog() src.updateUsrDialog()
else else
to_chat(user, "<SPAN CLASS='notice'>There's already a coin in [src].</SPAN>") to_chat(user, "<SPAN CLASS='notice'>There's already a coin in [src].</SPAN>")
return return
@@ -376,10 +376,10 @@ var/global/num_vending_terminals = 1
return return
else if(istype(W, /obj/item/voucher)) else if(istype(W, /obj/item/voucher))
if(can_accept_voucher(W, user)) if(can_accept_voucher(W, user))
user.drop_item(W, src) if(user.drop_item(W, src))
to_chat(user, "<span class='notice'>You insert [W] into [src].</span>") to_chat(user, "<span class='notice'>You insert [W] into [src].</span>")
return voucher_act(W, user) return voucher_act(W, user)
src.updateUsrDialog() src.updateUsrDialog()
else else
to_chat(user, "<span class='notice'>\The [src] refuses to take [W].</span>") to_chat(user, "<span class='notice'>\The [src] refuses to take [W].</span>")
return 1 return 1
@@ -399,9 +399,9 @@ var/global/num_vending_terminals = 1
src.updateUsrDialog() src.updateUsrDialog()
else else
if(is_type_in_list(W, allowed_inputs)) if(is_type_in_list(W, allowed_inputs))
user.drop_item(W, src) if(user.drop_item(W, src))
add_item(W) add_item(W)
src.updateUsrDialog() src.updateUsrDialog()
/*else if(istype(W, /obj/item/weapon/card) && currently_vending) /*else if(istype(W, /obj/item/weapon/card) && currently_vending)
//attempt to connect to a new db, and if that doesn't work then fail //attempt to connect to a new db, and if that doesn't work then fail
if(!linked_db) if(!linked_db)
@@ -1346,12 +1346,12 @@ var/global/num_vending_terminals = 1
return return
to_chat(usr, "You begin to insert \the [C] into \the [src].") to_chat(usr, "You begin to insert \the [C] into \the [src].")
if(do_after(user, src, 10)) if(do_after(user, src, 10))
to_chat(usr, "<span class='notice'>You secure \the [C]!</span>") if(user.drop_item(C, src))
user.drop_item(C, src) to_chat(usr, "<span class='notice'>You secure \the [C]!</span>")
_circuitboard=C _circuitboard=C
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0) playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
build++ build++
update_icon() update_icon()
return 1 return 1
if(1) // Circuitboard installed if(1) // Circuitboard installed
if(istype(W, /obj/item/weapon/crowbar)) if(istype(W, /obj/item/weapon/crowbar))

View File

@@ -245,8 +245,8 @@
else if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp)) else if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp))
if( wash_state in list( 1, 3, 6 ) ) if( wash_state in list( 1, 3, 6 ) )
if(!crayon) if(!crayon)
user.drop_item(W, src) if(user.drop_item(W, src))
crayon = W crayon = W
else if(istype(W,/obj/item/weapon/grab)) else if(istype(W,/obj/item/weapon/grab))
if( (wash_state == 1) && hacked) if( (wash_state == 1) && hacked)
var/obj/item/weapon/grab/G = W var/obj/item/weapon/grab/G = W
@@ -305,8 +305,8 @@
if(contents.len < 5) if(contents.len < 5)
if ( wash_state in list(1, 3) ) if ( wash_state in list(1, 3) )
user.drop_item(W, src) if(user.drop_item(W, src))
wash_state = 3 wash_state = 3
else else
to_chat(user, "<span class='notice'>You can't put the item in right now.</span>") to_chat(user, "<span class='notice'>You can't put the item in right now.</span>")
else else

View File

@@ -726,10 +726,10 @@
var/obj/item/mecha_parts/mecha_equipment/E = W var/obj/item/mecha_parts/mecha_equipment/E = W
spawn() spawn()
if(E.can_attach(src)) if(E.can_attach(src))
user.drop_item(W) if(user.drop_item(W))
E.attach(src) E.attach(src)
user.visible_message("[user] attaches [W] to [src]", "You attach [W] to [src]") user.visible_message("[user] attaches [W] to [src]", "You attach [W] to [src]")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
else else
to_chat(user, "You were unable to attach [W] to [src]") to_chat(user, "You were unable to attach [W] to [src]")
return return
@@ -799,30 +799,30 @@
else if(istype(W, /obj/item/weapon/cell)) else if(istype(W, /obj/item/weapon/cell))
if(state==STATE_BOLTSOPENED) if(state==STATE_BOLTSOPENED)
if(!src.cell) if(!src.cell)
to_chat(user, "You install the powercell.") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(user, "You install the powercell.")
src.cell = W src.cell = W
src.log_message("Powercell installed.") src.log_message("Powercell installed.")
else else
to_chat(user, "There's already a powercell installed.") to_chat(user, "There's already a powercell installed.")
return return
else if(istype(W, /obj/item/mecha_parts/mecha_tracking)) else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
if(state==STATE_BOLTSOPENED) if(state==STATE_BOLTSOPENED)
if(!src.tracking) if(!src.tracking)
to_chat(user, "You install the tracking beacon and safeties.") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(user, "You install the tracking beacon and safeties.")
src.tracking = W src.tracking = W
src.log_message("Exosuit tracking beacon installed.") src.log_message("Exosuit tracking beacon installed.")
else else
to_chat(user, "There's already a tracking beacon installed.") to_chat(user, "There's already a tracking beacon installed.")
return return
else if(istype(W, /obj/item/device/radio/electropack)) else if(istype(W, /obj/item/device/radio/electropack))
if(state==STATE_BOLTSOPENED) if(state==STATE_BOLTSOPENED)
if(!src.electropack) if(!src.electropack)
to_chat(user, "You rig the electropack to the cockpit.") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(user, "You rig the electropack to the cockpit.")
src.electropack = W src.electropack = W
src.log_message("Emergency ejection routines installed.") //not exactly a legitimate upgrade! src.log_message("Emergency ejection routines installed.") //not exactly a legitimate upgrade!
else else
to_chat(user, "There's already an electropack installed.") to_chat(user, "There's already an electropack installed.")
return return

View File

@@ -92,11 +92,11 @@
to_chat(usr, "<spawn class='notice'>The locker is full.") to_chat(usr, "<spawn class='notice'>The locker is full.")
return return
else else
to_chat(usr, "<span class='notice'>You put \the [G] in \the [src].</span>") if(user.drop_item(G, src))
defib = G to_chat(usr, "<span class='notice'>You put \the [G] in \the [src].</span>")
update_icon() defib = G
user.drop_item(G, src) update_icon()
return return
return return

View File

@@ -34,7 +34,10 @@
var/permeability_coefficient = 1 // for chemicals/diseases var/permeability_coefficient = 1 // for chemicals/diseases
siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) - 0 is not conductive, 1 is conductive - this is a range, not binary siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) - 0 is not conductive, 1 is conductive - this is a range, not binary
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N
var/glued = 0 //If 1, can't drop it from hands!
var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
var/list/allowed = null //suit storage stuff. var/list/allowed = null //suit storage stuff.
var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers.

View File

@@ -2143,15 +2143,15 @@ obj/item/device/pda/AltClick()
else else
var/obj/item/I = user.get_active_hand() var/obj/item/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id)) if (istype(I, /obj/item/weapon/card/id))
user.drop_item(I, src) if(user.drop_item(I, src))
id = I id = I
else else
var/obj/item/weapon/card/I = user.get_active_hand() var/obj/item/weapon/card/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && I:registered_name) if (istype(I, /obj/item/weapon/card/id) && I:registered_name)
var/obj/old_id = id var/obj/old_id = id
user.drop_item(I, src) if(user.drop_item(I, src))
id = I id = I
user.put_in_hands(old_id) user.put_in_hands(old_id)
if(id && incoming_transactions.len) if(id && incoming_transactions.len)
receive_incoming_transactions(id) receive_incoming_transactions(id)
return return
@@ -2160,11 +2160,11 @@ obj/item/device/pda/AltClick()
/obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob) /obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob)
..() ..()
if(istype(C, /obj/item/weapon/cartridge) && !cartridge) if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
cartridge = C if(user.drop_item(C, src))
user.drop_item(C, src) cartridge = C
to_chat(user, "<span class='notice'>You insert [cartridge] into [src].</span>") to_chat(user, "<span class='notice'>You insert [cartridge] into [src].</span>")
if(cartridge.radio) if(cartridge.radio)
cartridge.radio.hostpda = src cartridge.radio.hostpda = src
else if(istype(C, /obj/item/weapon/card/id)) else if(istype(C, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/idcard = C var/obj/item/weapon/card/id/idcard = C
@@ -2188,17 +2188,17 @@ obj/item/device/pda/AltClick()
return //Return in case of failed check or when successful. return //Return in case of failed check or when successful.
updateSelfDialog()//For the non-input related code. updateSelfDialog()//For the non-input related code.
else if(istype(C, /obj/item/device/paicard) && !src.pai) else if(istype(C, /obj/item/device/paicard) && !src.pai)
user.drop_item(C, src) if(user.drop_item(C, src))
pai = C pai = C
to_chat(user, "<span class='notice'>You slot \the [C] into [src].</span>") to_chat(user, "<span class='notice'>You slot \the [C] into [src].</span>")
updateUsrDialog() updateUsrDialog()
else if(istype(C, /obj/item/weapon/pen)) else if(istype(C, /obj/item/weapon/pen))
var/obj/item/weapon/pen/O = locate() in src var/obj/item/weapon/pen/O = locate() in src
if(O) if(O)
to_chat(user, "<span class='notice'>There is already a pen in \the [src].</span>") to_chat(user, "<span class='notice'>There is already a pen in \the [src].</span>")
else else
user.drop_item(C, src) if(user.drop_item(C, src))
to_chat(user, "<span class='notice'>You slide \the [C] into \the [src].</span>") to_chat(user, "<span class='notice'>You slide \the [C] into \the [src].</span>")
else if(istype(C,/obj/item/weapon/spacecash)) else if(istype(C,/obj/item/weapon/spacecash))
if(!id) if(!id)
to_chat(user, "\icon[src]<span class='warning'>There is no ID in the PDA!</span>") to_chat(user, "\icon[src]<span class='warning'>There is no ID in the PDA!</span>")

View File

@@ -30,11 +30,11 @@
if(I.w_class < 3) if(I.w_class < 3)
to_chat(user, "<span class='warning'>\The [I] is too small for \the [src]</span>") to_chat(user, "<span class='warning'>\The [I] is too small for \the [src]</span>")
return 0 return 0
to_chat(user, "<span class='notice'>You stealthily place \the [src] onto \the [A]</span>") if(user.drop_item(src, A))
user.drop_item(src, A) to_chat(user, "<span class='notice'>You stealthily place \the [src] onto \the [A]</span>")
active = 1 active = 1
camera_bugs += src camera_bugs += src
return 1 return 1
/obj/item/device/camera_bug/emp_act(severity) /obj/item/device/camera_bug/emp_act(severity)
switch(severity) switch(severity)

View File

@@ -322,18 +322,21 @@
qdel(src) qdel(src)
return return
if(istype(W,/obj/item/device/assembly/signaler) && !has_signaler) if(istype(W,/obj/item/device/assembly/signaler) && !has_signaler)
var/obj/item/device/assembly/signaler/S = W
frequency = S.frequency if(user.drop_item(W))
if(S.code == NOSIGNAL_CODE) //setting a code of "30" guarantees that you'll never be triggering any remote signaling devices.
code = 0 var/obj/item/device/assembly/signaler/S = W
else frequency = S.frequency
code = S.code if(S.code == NOSIGNAL_CODE) //setting a code of "30" guarantees that you'll never be triggering any remote signaling devices.
user.drop_item(W) code = 0
qdel(W) else
W = null code = S.code
has_signaler = 1
update_icon() qdel(W)
return W = null
has_signaler = 1
update_icon()
return
/obj/item/device/deskbell_assembly/attack_self(mob/living/carbon/user) /obj/item/device/deskbell_assembly/attack_self(mob/living/carbon/user)
if(has_signaler) if(has_signaler)

View File

@@ -144,15 +144,15 @@
if(istype(W, /obj/item/weapon/storage/box/lights)) if(istype(W, /obj/item/weapon/storage/box/lights))
if(!supply) if(!supply)
user.drop_item(W, src) if(user.drop_item(W, src))
user.visible_message("[user] inserts \a [W] into \the [src]", "You insert \the [W] into \the [src] to be used as the supply container.") user.visible_message("[user] inserts \a [W] into \the [src]", "You insert \the [W] into \the [src] to be used as the supply container.")
supply = W supply = W
return return
else if(!waste) else if(!waste)
user.drop_item(W, src) if(user.drop_item(W, src))
user.visible_message("[user] inserts \a [W] into \the [src]", "You insert \the [W] into \the [src] to be used as the waste container.") user.visible_message("[user] inserts \a [W] into \the [src]", "You insert \the [W] into \the [src] to be used as the waste container.")
waste = W waste = W
return return
else else
var/obj/item/weapon/storage/box/lights/lsource = W var/obj/item/weapon/storage/box/lights/lsource = W
if(!lsource.contents.len) if(!lsource.contents.len)
@@ -206,7 +206,7 @@
var/list/light_type_cur var/list/light_type_cur
var/list/to_dump_5 //I guess I could do this without this variable, but it would involve more string concatenation, and nobody wants that. var/list/to_dump_5 //I guess I could do this without this variable, but it would involve more string concatenation, and nobody wants that.
var/list/to_dump_all//This too var/list/to_dump_all//This too
for(var/T in light_types) for(var/T in light_types)
light_type_cur = light_types[T] //The way you'd expect to be the good way to do this doesn't work. This is dumb, but necessary. light_type_cur = light_types[T] //The way you'd expect to be the good way to do this doesn't work. This is dumb, but necessary.
to_dump_5 = list() to_dump_5 = list()
@@ -226,7 +226,7 @@
if(waste) if(waste)
dat += {"<br><br><br><h3>Waste Container:</h3> dat += {"<br><br><br><h3>Waste Container:</h3>
<b>Filled: </b>[waste.contents.len]/[waste.storage_slots]<br> <b>Filled: </b>[waste.contents.len]/[waste.storage_slots]<br>
<b><a href='?src=\ref[src];eject=waste'>Eject Waste Container</a></b> <b><a href='?src=\ref[src];eject=waste'>Eject Waste Container</a></b>
"} "}
@@ -276,7 +276,7 @@
var/list/light_type_cur var/list/light_type_cur
var/list/to_dump_5//I guess I could do this without this variable, but it would include more string concatenation, and nobody wants that. var/list/to_dump_5//I guess I could do this without this variable, but it would include more string concatenation, and nobody wants that.
var/list/to_dump_all //This too var/list/to_dump_all //This too
for(var/T in light_types) for(var/T in light_types)
to_dump_5 = list() to_dump_5 = list()
to_dump_all = list() to_dump_all = list()
@@ -294,7 +294,7 @@
if(waste) if(waste)
dat += {"<br><br><br><h3>Waste Container:</h3> dat += {"<br><br><br><h3>Waste Container:</h3>
<b>Filled: </b>[waste.contents.len]/[waste.storage_slots]<br> <b>Filled: </b>[waste.contents.len]/[waste.storage_slots]<br>
<b><a href='?src=\ref[src];recycle=1'>Recycle Contents</a></b> <b><a href='?src=\ref[src];recycle=1'>Recycle Contents</a></b>
"} "}
@@ -378,7 +378,7 @@
//If the light works, attempts to place it in the supply box. Otherwise, attempts to place it in the waste box. //If the light works, attempts to place it in the supply box. Otherwise, attempts to place it in the waste box.
//Fails if the light cannot be placed into the correct box for any reason. //Fails if the light cannot be placed into the correct box for any reason.
//Returns 1 if the light is successfully inserted into the correct box, 0 if the insertion fails, and null if the item to be inserted is not a light or something very strange happens. //Returns 1 if the light is successfully inserted into the correct box, 0 if the insertion fails, and null if the item to be inserted is not a light or something very strange happens.
/obj/item/device/lightreplacer/proc/insert_if_possible(var/obj/item/weapon/light/L) /obj/item/device/lightreplacer/proc/insert_if_possible(var/obj/item/weapon/light/L)
if(!istype(L)) if(!istype(L))
return return
if(L.status == LIGHT_OK) if(L.status == LIGHT_OK)

View File

@@ -42,8 +42,8 @@
if (!isnull(keyslot)) if (!isnull(keyslot))
to_chat(user, "<SPAN CLASS='notice'>The radio can't hold another key!</SPAN>") to_chat(user, "<SPAN CLASS='notice'>The radio can't hold another key!</SPAN>")
else else
user.drop_item(W, src) if(user.drop_item(W, src))
insert_key(W) insert_key(W)
return return

View File

@@ -299,12 +299,12 @@
return return
if(!keyslot1) if(!keyslot1)
user.drop_item(W, src) if(user.drop_item(W, src))
keyslot1 = W keyslot1 = W
else else
user.drop_item(W, src) if(user.drop_item(W, src))
keyslot2 = W keyslot2 = W
recalculateChannels() recalculateChannels()

View File

@@ -30,32 +30,32 @@
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user) /obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
if(istype(item, /obj/item/weapon/tank)) if(istype(item, /obj/item/weapon/tank))
if(tank_one && tank_two) if(tank_one && tank_two)
to_chat(user, "<span class='warning'>There are already two tanks attached, remove one first.</span>") to_chat(user, "<span class='warning'>There are already two tanks attached, remove one first.</span>")
return return
if(!tank_one) if(!tank_one)
tank_one = item if(user.drop_item(item, src))
user.drop_item(item, src) tank_one = item
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>") to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
else if(!tank_two) else if(!tank_two)
tank_two = item if(user.drop_item(item, src))
user.drop_item(item, src) tank_two = item
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>") to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
update_icon() update_icon()
//TODO: Have this take an assemblyholder //TODO: Have this take an assemblyholder
else if(isassembly(item)) else if(isassembly(item))
var/obj/item/device/assembly/A = item var/obj/item/device/assembly/A = item
if(A.secured) if(A.secured)
to_chat(user, "<span class='notice'>The device is secured.</span>") to_chat(user, "<span class='notice'>The device is secured.</span>")
return return
if(attached_device) if(attached_device)
to_chat(user, "<span class='warning'>There is already a device attached to the valve, remove it first.</span>") to_chat(user, "<span class='warning'>There is already a device attached to the valve, remove it first.</span>")
return return
user.remove_from_mob(item) user.remove_from_mob(item)
attached_device = A attached_device = A
A.loc = src A.loc = src
to_chat(user, "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>") to_chat(user, "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>")
A.holder = src A.holder = src
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).

View File

@@ -136,6 +136,10 @@ var/global/list/available_paintings = list(
desc = "a blank painting." desc = "a blank painting."
/obj/item/mounted/frame/painting/do_build(turf/on_wall, mob/user) /obj/item/mounted/frame/painting/do_build(turf/on_wall, mob/user)
if(!user.drop_item(src))
to_chat(user, "<span class='warning'>You can't let go of \the [src]!</span>")
return
to_chat(user, "<span class='notice'>You hang the [src] on \the [on_wall]...</span>") to_chat(user, "<span class='notice'>You hang the [src] on \the [on_wall]...</span>")
add_fingerprint(user) add_fingerprint(user)
@@ -159,7 +163,6 @@ var/global/list/available_paintings = list(
playsound(on_wall, 'sound/items/Deconstruct.ogg', 25, 1) playsound(on_wall, 'sound/items/Deconstruct.ogg', 25, 1)
user.drop_item(src)
qdel(src) qdel(src)
/obj/item/mounted/frame/painting/blank /obj/item/mounted/frame/painting/blank

View File

@@ -129,34 +129,34 @@
qdel(src) qdel(src)
if(istype(W, /obj/item/robot_parts/l_leg)) if(istype(W, /obj/item/robot_parts/l_leg))
if(src.l_leg) return if(src.l_leg) return
user.drop_item(W, src) if(user.drop_item(W, src))
src.l_leg = W src.l_leg = W
src.updateicon() src.updateicon()
if(istype(W, /obj/item/robot_parts/r_leg)) if(istype(W, /obj/item/robot_parts/r_leg))
if(src.r_leg) return if(src.r_leg) return
user.drop_item(W, src) if(user.drop_item(W, src))
src.r_leg = W src.r_leg = W
src.updateicon() src.updateicon()
if(istype(W, /obj/item/robot_parts/l_arm)) if(istype(W, /obj/item/robot_parts/l_arm))
if(src.l_arm) return if(src.l_arm) return
user.drop_item(W, src) if(user.drop_item(W, src))
src.l_arm = W src.l_arm = W
src.updateicon() src.updateicon()
if(istype(W, /obj/item/robot_parts/r_arm)) if(istype(W, /obj/item/robot_parts/r_arm))
if(src.r_arm) return if(src.r_arm) return
user.drop_item(W, src) if(user.drop_item(W, src))
src.r_arm = W src.r_arm = W
src.updateicon() src.updateicon()
if(istype(W, /obj/item/robot_parts/chest)) if(istype(W, /obj/item/robot_parts/chest))
if(src.chest) return if(src.chest) return
if(W:wires && W:cell) if(W:wires && W:cell)
user.drop_item(W, src) if(user.drop_item(W, src))
src.chest = W src.chest = W
src.updateicon() src.updateicon()
else if(!W:wires) else if(!W:wires)
to_chat(user, "<span class='notice'>You need to attach wires to it first!</span>") to_chat(user, "<span class='notice'>You need to attach wires to it first!</span>")
else else
@@ -165,9 +165,9 @@
if(istype(W, /obj/item/robot_parts/head)) if(istype(W, /obj/item/robot_parts/head))
if(src.head) return if(src.head) return
if(W:flash2 && W:flash1) if(W:flash2 && W:flash1)
user.drop_item(W, src) if(user.drop_item(W, src))
src.head = W src.head = W
src.updateicon() src.updateicon()
else else
to_chat(user, "<span class='notice'>You need to attach a flash to it first!</span>") to_chat(user, "<span class='notice'>You need to attach a flash to it first!</span>")
@@ -198,6 +198,9 @@
to_chat(user, "<span class='warning'>This [W] does not seem to fit.</span>") to_chat(user, "<span class='warning'>This [W] does not seem to fit.</span>")
return return
if(!user.drop_item(W))
return
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1) var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1)
for(var/P in M.mommi_assembly_parts) //Let's give back all those mommi creation components for(var/P in M.mommi_assembly_parts) //Let's give back all those mommi creation components
@@ -208,8 +211,6 @@
if(!O) return if(!O) return
user.drop_item(W)
O.mmi = W O.mmi = W
O.invisibility = 0 O.invisibility = 0
O.custom_name = created_name O.custom_name = created_name
@@ -257,9 +258,9 @@
to_chat(user, "<span class='notice'>You have already inserted a cell!</span>") to_chat(user, "<span class='notice'>You have already inserted a cell!</span>")
return return
else else
user.drop_item(W, src) if(user.drop_item(W, src))
src.cell = W src.cell = W
to_chat(user, "<span class='notice'>You insert the cell!</span>") to_chat(user, "<span class='notice'>You insert the cell!</span>")
if(istype(W, /obj/item/stack/cable_coil)) if(istype(W, /obj/item/stack/cable_coil))
if(src.wires) if(src.wires)
to_chat(user, "<span class='notice'>You have already inserted wire!</span>") to_chat(user, "<span class='notice'>You have already inserted wire!</span>")
@@ -278,21 +279,21 @@
to_chat(user, "<span class='notice'>You have already inserted the eyes!</span>") to_chat(user, "<span class='notice'>You have already inserted the eyes!</span>")
return return
else if(src.flash1) else if(src.flash1)
user.drop_item(W, src) if(user.drop_item(W, src))
src.flash2 = W src.flash2 = W
to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>") to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>")
else else
user.drop_item(W, src) if(user.drop_item(W, src))
src.flash1 = W src.flash1 = W
to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>") to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>")
else if(istype(W, /obj/item/weapon/stock_parts/manipulator)) else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
to_chat(user, "<span class='notice'>You install some manipulators and modify the head, creating a functional spider-bot!</span>") if(user.drop_item(W))
new /mob/living/simple_animal/spiderbot(get_turf(loc)) to_chat(user, "<span class='notice'>You install some manipulators and modify the head, creating a functional spider-bot!</span>")
user.drop_item(W) new /mob/living/simple_animal/spiderbot(get_turf(loc))
qdel(W) qdel(W)
W = null W = null
qdel(src) qdel(src)
return return
return return
/obj/item/robot_parts/attackby(obj/item/W as obj, mob/user as mob) /obj/item/robot_parts/attackby(obj/item/W as obj, mob/user as mob)

View File

@@ -66,7 +66,7 @@
var/obj/item/stack/cable_coil/C = W var/obj/item/stack/cable_coil/C = W
if(C.use(5)) if(C.use(5))
user.drop_item(src) user.drop_item(src, force_drop = 1)
var/obj/item/clothing/mask/necklace/xeno_claw/X = new(get_turf(src)) var/obj/item/clothing/mask/necklace/xeno_claw/X = new(get_turf(src))
user.put_in_active_hand(X) user.put_in_active_hand(X)

View File

@@ -35,7 +35,7 @@
return return
if(C.use(5)) if(C.use(5))
user.drop_item(src) user.drop_item(src, force_drop = 1)
var/obj/item/clothing/mask/necklace/teeth/X = new(get_turf(src)) var/obj/item/clothing/mask/necklace/teeth/X = new(get_turf(src))

View File

@@ -225,11 +225,11 @@
/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob) /obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/toy/ammo/crossbow)) if(istype(I, /obj/item/toy/ammo/crossbow))
if(bullets <= 4) if(bullets <= 4)
user.drop_item() if(user.drop_item(I))
qdel(I) qdel(I)
I = null I = null
bullets++ bullets++
to_chat(user, "<span class = 'info'>You load the foam dart into the crossbow.</span>") to_chat(user, "<span class = 'info'>You load the foam dart into the crossbow.</span>")
else else
to_chat(usr, "<span class = 'warning'>It's already fully loaded.</span>") to_chat(usr, "<span class = 'warning'>It's already fully loaded.</span>")

View File

@@ -24,9 +24,9 @@
/obj/item/weapon/rcl/attackby(obj/item/weapon/W, mob/user) /obj/item/weapon/rcl/attackby(obj/item/weapon/W, mob/user)
if(istype(W,/obj/item/stack/cable_coil)) if(istype(W,/obj/item/stack/cable_coil))
if(!loaded) if(!loaded)
loaded = W if(user.drop_item(W,src))
loaded.max_amount = max_amount //We store a lot. loaded = W
user.drop_item(W,src) loaded.max_amount = max_amount //We store a lot.
else else
loaded.preattack(W,user,1) loaded.preattack(W,user,1)
update_icon() update_icon()

View File

@@ -60,11 +60,10 @@
if(ink) if(ink)
to_chat(user, "<span class='notice'>\the [name] already contains \a [ink].</span>") to_chat(user, "<span class='notice'>\the [name] already contains \a [ink].</span>")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
to_chat(user, "<span class='notice'>You install \the [W] into \the [name].</span>") to_chat(user, "<span class='notice'>You install \the [W] into \the [name].</span>")
ink = W ink = W
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
/obj/item/weapon/airlock_painter/attack_self(mob/user) /obj/item/weapon/airlock_painter/attack_self(mob/user)
if(ink) if(ink)

View File

@@ -42,11 +42,11 @@ MATCHBOXES ARE ALSO IN FANCY.DM
..() ..()
switch(lit) switch(lit)
if(1) if(1)
to_chat(user, "The match is lit.") to_chat(user, "The match is lit.")
if(0) if(0)
to_chat(user, "The match is unlit and ready to be used.") to_chat(user, "The match is unlit and ready to be used.")
if(-1) if(-1)
to_chat(user, "The match is burnt.") to_chat(user, "The match is burnt.")
//Also updates the name, the damage and item_state for good measure //Also updates the name, the damage and item_state for good measure
/obj/item/weapon/match/update_icon() /obj/item/weapon/match/update_icon()
@@ -169,7 +169,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
..() ..()
to_chat(user, "\The [src] is [lit ? "":"un"]lit.")//Shared with all cigarette sub-types to_chat(user, "\The [src] is [lit ? "":"un"]lit.")//Shared with all cigarette sub-types
//Also updates the name, the damage and item_state for good measure //Also updates the name, the damage and item_state for good measure
/obj/item/clothing/mask/cigarette/update_icon() /obj/item/clothing/mask/cigarette/update_icon()
@@ -211,7 +211,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
..() ..()
if(lit) //The cigarette is already lit if(lit) //The cigarette is already lit
to_chat(user, "<span class='warning'>\The [src] is already lit.</span>") to_chat(user, "<span class='warning'>\The [src] is already lit.</span>")
return //Don't bother return //Don't bother
//Items with special messages go first //Items with special messages go first
@@ -252,23 +252,23 @@ MATCHBOXES ARE ALSO IN FANCY.DM
if(glass.reagents.has_reagent("sacid") || glass.reagents.has_reagent("pacid")) //Dumping into acid, a dumb idea if(glass.reagents.has_reagent("sacid") || glass.reagents.has_reagent("pacid")) //Dumping into acid, a dumb idea
new type_butt(get_turf(glass)) new type_butt(get_turf(glass))
processing_objects.Remove(src) processing_objects.Remove(src)
to_chat(user, "<span class='warning'>Half of \the [src] dissolves with a nasty fizzle as you dip it into \the [glass].</span>") to_chat(user, "<span class='warning'>Half of \the [src] dissolves with a nasty fizzle as you dip it into \the [glass].</span>")
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return
if(glass.reagents.has_reagent("water") && lit) //Dumping a lit cigarette into water, the result is obvious if(glass.reagents.has_reagent("water") && lit) //Dumping a lit cigarette into water, the result is obvious
new type_butt(get_turf(glass)) new type_butt(get_turf(glass))
processing_objects.Remove(src) processing_objects.Remove(src)
to_chat(user, "<span class='warning'>\The [src] fizzles as you dip it into \the [glass].</span>") to_chat(user, "<span class='warning'>\The [src] fizzles as you dip it into \the [glass].</span>")
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return
var/transfered = glass.reagents.trans_to(src, chem_volume) var/transfered = glass.reagents.trans_to(src, chem_volume)
if(transfered) //If reagents were transfered, show the message if(transfered) //If reagents were transfered, show the message
to_chat(user, "<span class='notice'>You dip \the [src] into \the [glass].</span>") to_chat(user, "<span class='notice'>You dip \the [src] into \the [glass].</span>")
else //If not, either the beaker was empty, or the cigarette was full else //If not, either the beaker was empty, or the cigarette was full
if(!glass.reagents.total_volume) //Only show an explicit message if the beaker was empty, you can't tell a cigarette is "full" if(!glass.reagents.total_volume) //Only show an explicit message if the beaker was empty, you can't tell a cigarette is "full"
to_chat(user, "<span class='warning'>\The [glass] is empty.</span>") to_chat(user, "<span class='warning'>\The [glass] is empty.</span>")
return return
/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights \the [src].") /obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights \the [src].")
@@ -276,7 +276,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
return //"Normal" situations were already handled in attackby, don't show a message return //"Normal" situations were already handled in attackby, don't show a message
if(reagents.get_reagent_amount("water")) //The cigarette was dipped into water, it's useless now if(reagents.get_reagent_amount("water")) //The cigarette was dipped into water, it's useless now
to_chat(usr, "<span class='warning'>You fail to light \the [src]. It appears to be wet.</span>") to_chat(usr, "<span class='warning'>You fail to light \the [src]. It appears to be wet.</span>")
return return
if(reagents.get_reagent_amount("plasma")) //Plasma explodes when exposed to fire if(reagents.get_reagent_amount("plasma")) //Plasma explodes when exposed to fire
@@ -331,7 +331,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
lit = 0 //Actually unlight the cigarette so that the lighting can update correctly lit = 0 //Actually unlight the cigarette so that the lighting can update correctly
update_brightness() update_brightness()
if(ismob(loc)) if(ismob(loc))
to_chat(M, "<span class='notice'>Your [name] goes out.</span>") to_chat(M, "<span class='notice'>Your [name] goes out.</span>")
M.u_equip(src, 0) //Un-equip it so the overlays can update M.u_equip(src, 0) //Un-equip it so the overlays can update
qdel(src) qdel(src)
return return
@@ -431,7 +431,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
if(istype(W, /obj/item/weapon/match)) if(istype(W, /obj/item/weapon/match))
..() ..()
else else
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such uncivilized means.</span>") to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such uncivilized means.</span>")
*/ */
/////////////////// ///////////////////
@@ -554,7 +554,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
if(istype(W, /obj/item/weapon/match)) if(istype(W, /obj/item/weapon/match))
..() ..()
else else
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such means.</span>") to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such means.</span>")
*/ */
/obj/item/clothing/mask/cigarette/pipe/cobpipe /obj/item/clothing/mask/cigarette/pipe/cobpipe
@@ -606,7 +606,7 @@ MATCHBOXES ARE ALSO IN FANCY.DM
/obj/item/weapon/lighter/examine(mob/user) /obj/item/weapon/lighter/examine(mob/user)
..() ..()
to_chat(user, "The lighter is [lit ? "":"un"]lit") to_chat(user, "The lighter is [lit ? "":"un"]lit")
//Also updates the name, the damage and item_state for good measure //Also updates the name, the damage and item_state for good measure
/obj/item/weapon/lighter/update_icon() /obj/item/weapon/lighter/update_icon()

View File

@@ -127,3 +127,38 @@
attack_verb = list("quacked") attack_verb = list("quacked")
hitsound = 'sound/items/quack.ogg' hitsound = 'sound/items/quack.ogg'
honk_delay = 10 honk_delay = 10
/obj/item/weapon/glue
name = "superglue"
desc = "A small plastic bottle full of high quality superglue."
icon = 'icons/obj/items.dmi'
icon_state = "glue0"
var/spent = 0
/obj/item/weapon/glue/examine(mob/user)
..()
if(Adjacent(user))
user.show_message("<span class='info'>The label reads: </span><span class='notice'>Instructions: 1) Gently apply glue to an object 2) Apply object to human flesh.</span>", MESSAGE_SEE)
/obj/item/weapon/glue/update_icon()
..()
icon_state = "glue[spent]"
/obj/item/weapon/glue/afterattack(obj/item/target, mob/user, flag)
if(!flag)
return
if(spent)
user << "<span class='warning'>There's no glue left in the bottle.</span>"
return
if(!istype(target)) //Can only apply to items!
user << "<span class='warning'>That would be a waste of glue.</span>"
return
user << "<span class='info'>You gently apply the whole bottle of [src] to \the [target].</span>"
update_icon()
spent = 1
target.glued = 1

View File

@@ -101,7 +101,7 @@
if(result == 1) if(result == 1)
to_chat(user, "<span class='danger'>Rocks fall, you die.</span>") to_chat(user, "<span class='danger'>Rocks fall, you die.</span>")
user.gib() user.gib()
user.drop_item(src) user.drop_item(src, force_drop = 1)
else else
triggered = 1 triggered = 1
visible_message("<span class='notice'>You hear a quiet click.</span>") visible_message("<span class='notice'>You hear a quiet click.</span>")

View File

@@ -74,13 +74,27 @@
user.visible_message("<span class='warning'>[user.name] is trying to plant some kind of explosive on [target.name]!</span>") user.visible_message("<span class='warning'>[user.name] is trying to plant some kind of explosive on [target.name]!</span>")
if(do_after(user, target, 50) && user.Adjacent(target)) if(do_after(user, target, 50) && user.Adjacent(target))
user.drop_item(src) var/glue_act = 0 //If 1, the C4 is superglued to the guy's hands - produce a funny message
src.target = target
if(user.drop_item(src)) //User can't drop this normally -> stick it to him (but drop it anyways, to prevent unintended features)
src.target = target
user.drop_item(src, force_drop = 1)
else
to_chat(user, "<span class='danger'><h1>\The [src] is glued to your hands!</h1></span>") //Honk
src.target = user
glue_act = 1
loc = null loc = null
if (ismob(target)) if (ismob(target))
var/mob/M=target var/mob/M=target
target:attack_log += "\[[time_stamp()]\]<font color='orange'> Had the [name] planted on them by [user.real_name] ([user.ckey])</font>" target:attack_log += "\[[time_stamp()]\]<font color='orange'> Had the [name] planted on them by [user.real_name] ([user.ckey])</font>"
user.visible_message("<span class='warning'>[user.name] finished planting an explosive on [target.name]!</span>")
if(!glue_act)
user.visible_message("<span class='warning'>[user.name] finished planting an explosive on [target.name]!</span>")
else
user.visible_message("<span class='warning'>[user] found \himself unable to drop \the [src] after setting the timer on it!</span>")
playsound(get_turf(src), 'sound/weapons/c4armed.ogg', 60, 1) playsound(get_turf(src), 'sound/weapons/c4armed.ogg', 60, 1)
if(!iscarbon(user)) if(!iscarbon(user))
M.LAssailant = null M.LAssailant = null

View File

@@ -109,9 +109,9 @@
if(isrobot(user) && !isMoMMI(user)) // MoMMI's can but borgs can't if(isrobot(user) && !isMoMMI(user)) // MoMMI's can but borgs can't
to_chat(user, "You're a robot. No.") to_chat(user, "You're a robot. No.")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
to_chat(user, "You cram \the [W] into the nozzle of \the [src].") to_chat(user, "You cram \the [W] into the nozzle of \the [src].")
message_admins("[user]/[user.ckey] has crammed \a [W] into a [src].") message_admins("[user]/[user.ckey] has crammed \a [W] into a [src].")
/obj/item/weapon/extinguisher/afterattack(atom/target, mob/user, proximity_flag, click_parameters) /obj/item/weapon/extinguisher/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(proximity_flag) if(proximity_flag)

View File

@@ -102,19 +102,19 @@
var/obj/item/device/assembly/igniter/I = W var/obj/item/device/assembly/igniter/I = W
if(I.secured) return if(I.secured) return
if(igniter) return if(igniter) return
user.drop_item(I, src) if(user.drop_item(I, src))
igniter = I igniter = I
update_icon() update_icon()
return return
if(istype(W,/obj/item/weapon/tank/plasma)) if(istype(W,/obj/item/weapon/tank/plasma))
if(ptank) if(ptank)
to_chat(user, "<span class='notice'>There appears to already be a plasma tank loaded in [src]!</span>") to_chat(user, "<span class='notice'>There appears to already be a plasma tank loaded in [src]!</span>")
return return
user.drop_item(W, src) if(user.drop_item(W, src))
ptank = W ptank = W
update_icon() update_icon()
return return
if(istype(W, /obj/item/device/analyzer) && ptank) if(istype(W, /obj/item/device/analyzer) && ptank)
var/obj/item/device/analyzer/analyzer = W var/obj/item/device/analyzer/analyzer = W

View File

@@ -37,7 +37,7 @@
item_state = "gift-large" item_state = "gift-large"
/obj/item/weapon/gift/attack_self(mob/user as mob) /obj/item/weapon/gift/attack_self(mob/user as mob)
user.drop_item(src) user.drop_item(src, force_drop = 1)
if(gift) if(gift)
user.put_in_active_hand(gift) user.put_in_active_hand(gift)
gift.add_fingerprint(user) gift.add_fingerprint(user)

View File

@@ -110,19 +110,17 @@
if (inserted_cores > 0) if (inserted_cores > 0)
to_chat(user, "<span class='warning'> This type of grenade cannot hold more than one slime core.</span>") to_chat(user, "<span class='warning'> This type of grenade cannot hold more than one slime core.</span>")
else else
if(user.drop_item(W, src))
to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>")
beakers += W
stage = 1
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
else if(W.reagents.total_volume)
if(user.drop_item(W, src))
to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>") to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>")
user.drop_item(W, src)
beakers += W beakers += W
E = W
inserted_cores++
stage = 1 stage = 1
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
else if(W.reagents.total_volume)
to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>")
user.drop_item(W, src)
beakers += W
stage = 1
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
else else
to_chat(user, "<span class='warning'> \the [W] is empty.</span>") to_chat(user, "<span class='warning'> \the [W] is empty.</span>")
else if (istype(W,/obj/item/slime_extract)) else if (istype(W,/obj/item/slime_extract))
@@ -313,22 +311,17 @@ obj/item/weapon/grenade/chem_grenade/exgrenade/attackby(obj/item/weapon/W as obj
if (inserted_cores > 1) if (inserted_cores > 1)
to_chat(user, "<span class='warning'> You cannot fit more than two slime cores in this grenade.</span>") to_chat(user, "<span class='warning'> You cannot fit more than two slime cores in this grenade.</span>")
else else
to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>")
beakers += W beakers += W
if (E == null)//E = first slime extract, C = second slime extract stage = 1
E = W name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
else
C = W
inserted_cores++
stage = 1
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
else if(W.reagents.total_volume) else if(W.reagents.total_volume)
to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(user, "<span class='notice'> You add \the [W] to the assembly.</span>")
beakers += W beakers += W
stage = 1 stage = 1
name = "unsecured EX grenade with [beakers.len] containers[detonator?" and detonator":""]" name = "unsecured EX grenade with [beakers.len] containers[detonator?" and detonator":""]"
else else
to_chat(user, "<span class='warning'> \the [W] is empty.</span>") to_chat(user, "<span class='warning'> \the [W] is empty.</span>")

View File

@@ -42,8 +42,8 @@
..() ..()
if(istype(C, /obj/item/weapon/implantcase)) if(istype(C, /obj/item/weapon/implantcase))
if(!( src.case )) if(!( src.case ))
user.drop_item(C, src) if(user.drop_item(C, src))
src.case = C src.case = C
else else
return return
src.update() src.update()

View File

@@ -2,7 +2,7 @@
if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera)) if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera))
user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.") user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.")
if(user && user.get_active_hand() == src) if(user && user.get_active_hand() == src)
user.drop_item(src, M) user.drop_item(src, M, force_drop = 1)
src.machine = M src.machine = M
else else
user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src].") user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src].")

View File

@@ -115,8 +115,11 @@
if(item.w_class > 3.0) if(item.w_class > 3.0)
to_chat(user, "<span class='warning'>\The [item] is too big to fit in the false bottom!</span>") to_chat(user, "<span class='warning'>\The [item] is too big to fit in the false bottom!</span>")
return return
if(!user.drop_item(item))
user << "<span class='warning'>\The [item] is stuck to your hands!</span>"
return
stored_item = item stored_item = item
user.drop_item(item)
max_w_class = 3.0 - stored_item.w_class max_w_class = 3.0 - stored_item.w_class
item.loc = null //null space here we go - to stop it showing up in the briefcase item.loc = null //null space here we go - to stop it showing up in the briefcase
to_chat(user, "You place \the [item] into the false bottom of the briefcase.") to_chat(user, "You place \the [item] into the false bottom of the briefcase.")

View File

@@ -62,10 +62,10 @@
/obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user) /obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user)
if(istype(W, /obj/item/weapon/cell)) if(istype(W, /obj/item/weapon/cell))
if(!bcell) if(!bcell)
user.drop_item(W, src) if(user.drop_item(W, src))
bcell = W bcell = W
to_chat(user, "<span class='notice'>You install a cell in [src].</span>") to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
update_icon() update_icon()
else else
to_chat(user, "<span class='notice'>[src] already has a cell.</span>") to_chat(user, "<span class='notice'>[src] already has a cell.</span>")

View File

@@ -96,10 +96,10 @@
to_chat(user, "\The [src] already has a [get_module_name(module)].") to_chat(user, "\The [src] already has a [get_module_name(module)].")
return return
else else
stored_modules[module] = used_item if(user.drop_item(used_item, src))
user.drop_item(used_item, src) stored_modules[module] = used_item
to_chat(user, "You successfully load \the [used_item] into \the [src]'s [get_module_name(module)] slot.") to_chat(user, "You successfully load \the [used_item] into \the [src]'s [get_module_name(module)] slot.")
return 1 return 1
/obj/item/weapon/switchtool/proc/remove_module(mob/user) /obj/item/weapon/switchtool/proc/remove_module(mob/user)
deployed.loc = get_turf(user) deployed.loc = get_turf(user)

View File

@@ -22,15 +22,15 @@
var/obj/item/stack/rods/rods = W var/obj/item/stack/rods/rods = W
if (rods.amount >= 4) if (rods.amount >= 4)
new /obj/item/weapon/table_parts/reinforced( user.loc ) new /obj/item/weapon/table_parts/reinforced( user.loc )
to_chat(user, "<span class='notice'>You reinforce the [name].</span>") to_chat(user, "<span class='notice'>You reinforce the [name].</span>")
rods.use(4) rods.use(4)
qdel(src) qdel(src)
else if (rods.amount < 4) else if (rods.amount < 4)
to_chat(user, "<span class='warning'>You need at least four rods to do this.</span>") to_chat(user, "<span class='warning'>You need at least four rods to do this.</span>")
/obj/item/weapon/table_parts/attack_self(mob/user as mob) /obj/item/weapon/table_parts/attack_self(mob/user as mob)
new /obj/structure/table( user.loc ) new /obj/structure/table( user.loc )
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return
@@ -47,7 +47,7 @@
/obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob) /obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob)
new /obj/structure/table/reinforced( user.loc ) new /obj/structure/table/reinforced( user.loc )
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return
@@ -71,7 +71,7 @@
/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
new /obj/structure/table/woodentable( user.loc ) new /obj/structure/table/woodentable( user.loc )
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return
@@ -88,7 +88,7 @@
/obj/item/weapon/table_parts/wood/poker/attack_self(mob/user as mob) /obj/item/weapon/table_parts/wood/poker/attack_self(mob/user as mob)
new /obj/structure/table/woodentable/poker( user.loc ) new /obj/structure/table/woodentable/poker( user.loc )
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return
@@ -108,6 +108,6 @@
/obj/item/weapon/rack_parts/attack_self(mob/user as mob) /obj/item/weapon/rack_parts/attack_self(mob/user as mob)
var/obj/structure/rack/R = new /obj/structure/rack( user.loc ) var/obj/structure/rack/R = new /obj/structure/rack( user.loc )
R.add_fingerprint(user) R.add_fingerprint(user)
user.drop_item(src) user.drop_item(src, force_drop = 1)
qdel(src) qdel(src)
return return

View File

@@ -29,10 +29,10 @@ LINEN BINS
else if(istype(I, /obj/item/weapon/kitchen/utensil/knife/plastic)) else if(istype(I, /obj/item/weapon/kitchen/utensil/knife/plastic))
cut_time=160 cut_time=160
if(cut_time) if(cut_time)
to_chat(user, "<span class='notice'>You begin cutting the [src].</span>") to_chat(user, "<span class='notice'>You begin cutting the [src].</span>")
if(do_after(user, src, cut_time)) if(do_after(user, src, cut_time))
if(!src) return if(!src) return
to_chat(user, "<span class='notice'>You have cut the [src] into rags.</span>") to_chat(user, "<span class='notice'>You have cut the [src] into rags.</span>")
var/turf/location = get_turf(src) var/turf/location = get_turf(src)
for(var/x=0; x<=8; x++) for(var/x=0; x<=8; x++)
var/obj/item/weapon/reagent_containers/glass/rag/S = new/obj/item/weapon/reagent_containers/glass/rag/(location) var/obj/item/weapon/reagent_containers/glass/rag/S = new/obj/item/weapon/reagent_containers/glass/rag/(location)
@@ -47,7 +47,7 @@ LINEN BINS
//todo: sharp thing code/game/objects/objs.dm //todo: sharp thing code/game/objects/objs.dm
/obj/item/weapon/bedsheet/attack_self(mob/user as mob) /obj/item/weapon/bedsheet/attack_self(mob/user as mob)
user.drop_item(src) user.drop_item(src, force_drop = 1)
if(layer == initial(layer)) if(layer == initial(layer))
layer = 5 layer = 5
else else
@@ -141,11 +141,11 @@ LINEN BINS
/obj/structure/bedsheetbin/examine(mob/user) /obj/structure/bedsheetbin/examine(mob/user)
..() ..()
if(amount == 0) if(amount == 0)
to_chat(user, "<span class='info'>There are no bed sheets in the bin.</span>") to_chat(user, "<span class='info'>There are no bed sheets in the bin.</span>")
else if(amount == 1) else if(amount == 1)
to_chat(user, "<span class='info'>There is one bed sheet in the bin.</span>") to_chat(user, "<span class='info'>There is one bed sheet in the bin.</span>")
else else
to_chat(user, "<span class='info'>There are [amount] bed sheets in the bin.</span>") to_chat(user, "<span class='info'>There are [amount] bed sheets in the bin.</span>")
/obj/structure/bedsheetbin/update_icon() /obj/structure/bedsheetbin/update_icon()
@@ -157,15 +157,14 @@ LINEN BINS
/obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob) /obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/bedsheet)) if(istype(I, /obj/item/weapon/bedsheet))
user.drop_item(I, src) if(user.drop_item(I, src))
sheets.Add(I) sheets.Add(I)
amount++ amount++
to_chat(user, "<span class='notice'>You put [I] in [src].</span>") to_chat(user, "<span class='notice'>You put \the [I] in \the [src].</span>")
else if(amount && !hidden && I.w_class < 4) //make sure there's sheets to hide it among, make sure nothing else is hidden in there. else if(amount && !hidden && I.w_class < 4) //make sure there's sheets to hide it among, make sure nothing else is hidden in there.
user.drop_item(I, src) if(user.drop_item(I, src))
hidden = I hidden = I
to_chat(user, "<span class='notice'>You hide [I] among the sheets.</span>") to_chat(user, "<span class='notice'>You hide [I] among the sheets.</span>")
/obj/structure/bedsheetbin/attack_paw(mob/user as mob) /obj/structure/bedsheetbin/attack_paw(mob/user as mob)
@@ -186,11 +185,11 @@ LINEN BINS
B.loc = user.loc B.loc = user.loc
user.put_in_hands(B) user.put_in_hands(B)
to_chat(user, "<span class='notice'>You take [B] out of [src].</span>") to_chat(user, "<span class='notice'>You take [B] out of [src].</span>")
if(hidden) if(hidden)
hidden.loc = user.loc hidden.loc = user.loc
to_chat(user, "<span class='notice'>[hidden] falls out of [B]!</span>") to_chat(user, "<span class='notice'>[hidden] falls out of [B]!</span>")
hidden = null hidden = null
@@ -209,7 +208,7 @@ LINEN BINS
B = new /obj/item/weapon/bedsheet(loc) B = new /obj/item/weapon/bedsheet(loc)
B.loc = loc B.loc = loc
to_chat(user, "<span class='notice'>You telekinetically remove [B] from [src].</span>") to_chat(user, "<span class='notice'>You telekinetically remove [B] from [src].</span>")
update_icon() update_icon()
if(hidden) if(hidden)

View File

@@ -35,18 +35,17 @@
/obj/structure/coatrack/attackby(obj/item/clothing/C, mob/user) /obj/structure/coatrack/attackby(obj/item/clothing/C, mob/user)
if (istype(C, /obj/item/clothing/suit/storage/det_suit) && !suit) if (istype(C, /obj/item/clothing/suit/storage/det_suit) && !suit)
to_chat(user, "<span class='notice'>You place your [C] on the [src]</span>") if(user.drop_item(C, src))
playsound(get_turf(src), "rustle", 50, 1, -5) to_chat(user, "<span class='notice'>You place your [C] on the [src]</span>")
user.drop_item(C, src) playsound(get_turf(src), "rustle", 50, 1, -5)
suit = C suit = C
update_icon() update_icon()
else if (istype(C, /obj/item/clothing/head/det_hat) && !hat) else if (istype(C, /obj/item/clothing/head/det_hat) && !hat)
to_chat(user, "<span class='notice'>You place your [C] on the [src]</span>") if(user.drop_item(C, src))
playsound(get_turf(src), "rustle", 50, 1, -5) to_chat(user, "<span class='notice'>You place your [C] on the [src]</span>")
user.drop_item(C, src) playsound(get_turf(src), "rustle", 50, 1, -5)
hat = C hat = C
update_icon() update_icon()
else else
return ..() return ..()

View File

@@ -93,8 +93,8 @@
if(F.wielded) if(F.wielded)
to_chat(user, "<span class='warning'>Unwield [F] first!</span>") to_chat(user, "<span class='warning'>Unwield [F] first!</span>")
return return
user.drop_item(F, src, force_drop = 1)
fireaxe = O fireaxe = O
user.drop_item(F, src)
visible_message("<span class='notice'>[user] places [F] back into [src].</span>", \ visible_message("<span class='notice'>[user] places [F] back into [src].</span>", \
"<span class='notice'>You place [F] back into [src].</span>") "<span class='notice'>You place [F] back into [src].</span>")
update_icon() update_icon()

View File

@@ -432,20 +432,20 @@
return return
if(locked && !broken) if(locked && !broken)
if (allowed(user)) if (allowed(user))
to_chat(user, "<span class='notice'>You unlock [src].</span>") to_chat(user, "<span class='notice'>You unlock [src].</span>")
src.locked = 0 src.locked = 0
overlays.len = 0 overlays.len = 0
overlays += greenlight overlays += greenlight
return return
else else
to_chat(user, "<span class='notice'>[src] is locked.</span>") to_chat(user, "<span class='notice'>[src] is locked.</span>")
return return
else else
..() ..()
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken)
to_chat(user, "<span class='notice'>You lock \the [src].</span>") to_chat(user, "<span class='notice'>You lock \the [src].</span>")
src.locked = 1 src.locked = 1
overlays.len = 0 overlays.len = 0
overlays += redlight overlays += redlight
@@ -458,7 +458,7 @@
playsound(get_turf(src), "sparks", 60, 1) playsound(get_turf(src), "sparks", 60, 1)
src.locked = 0 src.locked = 0
src.broken = 1 src.broken = 1
to_chat(user, "<span class='notice'>You unlock \the [src].</span>") to_chat(user, "<span class='notice'>You unlock \the [src].</span>")
return return
return ..() return ..()
@@ -472,22 +472,23 @@
return return
else if(istype(W, /obj/item/stack/cable_coil)) else if(istype(W, /obj/item/stack/cable_coil))
if(rigged) if(rigged)
to_chat(user, "<span class='notice'>[src] is already rigged!</span>") to_chat(user, "<span class='notice'>[src] is already rigged!</span>")
return return
to_chat(user, "<span class='notice'>You rig [src].</span>")
user.drop_item(W) if(user.drop_item(W))
qdel(W) to_chat(user, "<span class='notice'>You rig [src].</span>")
W = null qdel(W)
rigged = 1 W = null
rigged = 1
return return
else if(istype(W, /obj/item/device/radio/electropack)) else if(istype(W, /obj/item/device/radio/electropack))
if(rigged) if(rigged)
to_chat(user, "<span class='notice'>You attach [W] to [src].</span>") if(user.drop_item(W, src.loc))
user.drop_item(W, src.loc) to_chat(user, "<span class='notice'>You attach [W] to [src].</span>")
return return
else if(istype(W, /obj/item/weapon/wirecutters)) else if(istype(W, /obj/item/weapon/wirecutters))
if(rigged) if(rigged)
to_chat(user, "<span class='notice'>You cut away the wiring.</span>") to_chat(user, "<span class='notice'>You cut away the wiring.</span>")
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
rigged = 0 rigged = 0
return return

View File

@@ -17,10 +17,10 @@
switch(state) switch(state)
if(0) if(0)
if(istype(W, /obj/item/weapon/circuitboard/airlock) && W:icon_state != "door_electronics_smoked") if(istype(W, /obj/item/weapon/circuitboard/airlock) && W:icon_state != "door_electronics_smoked")
user.drop_item(W, src) if(user.drop_item(W, src))
circuit=W circuit=W
state++ state++
playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1)
if(istype(W, /obj/item/weapon/crowbar)) if(istype(W, /obj/item/weapon/crowbar))
var/obj/machinery/constructable_frame/machine_frame/MF = new /obj/machinery/constructable_frame/machine_frame(T) var/obj/machinery/constructable_frame/machine_frame/MF = new /obj/machinery/constructable_frame/machine_frame(T)
MF.state = 1 MF.state = 1
@@ -226,10 +226,10 @@
if(locked) if(locked)
to_chat(user, "<span class='rose'>It's locked, you can't put anything into it.</span>") to_chat(user, "<span class='rose'>It's locked, you can't put anything into it.</span>")
else if(!occupant) else if(!occupant)
to_chat(user, "<span class='notice'>You insert \the [W] into \the [src], and it floats as the hoverfield activates.</span>") if(user.drop_item(W, src))
user.drop_item(W, src) to_chat(user, "<span class='notice'>You insert \the [W] into \the [src], and it floats as the hoverfield activates.</span>")
occupant=W occupant=W
update_icon() update_icon()
/obj/structure/displaycase/attack_paw(mob/user as mob) /obj/structure/displaycase/attack_paw(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)

View File

@@ -246,7 +246,7 @@
busy = 1 busy = 1
playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 100, 1) playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
user.drop_item(W, src) user.drop_item(W, src, force_drop = 1)
if(do_after(user, src, 40)) if(do_after(user, src, 40))
if(!src) return if(!src) return

View File

@@ -14,9 +14,9 @@
return return
if(istype(O, /obj/item/weapon/extinguisher)) if(istype(O, /obj/item/weapon/extinguisher))
if(!has_extinguisher && opened) if(!has_extinguisher && opened)
user.drop_item(O, src) if(user.drop_item(O, src))
has_extinguisher = O has_extinguisher = O
to_chat(user, "<span class='notice'>You place [O] in [src].</span>") to_chat(user, "<span class='notice'>You place [O] in [src].</span>")
else else
opened = !opened opened = !opened
else else

View File

@@ -275,9 +275,9 @@
else if(istype(W, /obj/item/pipe)) else if(istype(W, /obj/item/pipe))
var/obj/item/pipe/P = W var/obj/item/pipe/P = W
if(P.pipe_type in list(0, 1, 5)) //Simple pipes, simple bends, and simple manifolds. if(P.pipe_type in list(0, 1, 5)) //Simple pipes, simple bends, and simple manifolds.
user.drop_item(P, src.loc) if(user.drop_item(P, src.loc))
user.visible_message("<span class='warning'>[user] fits \the [P] into \the [src]</span>", \ user.visible_message("<span class='warning'>[user] fits \the [P] into \the [src]</span>", \
"<span class='notice'>You fit \the [P] into \the [src]</span>") "<span class='notice'>You fit \the [P] into \the [src]</span>")
else else
..() ..()

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