diff --git a/bot/NanoTrasenBot.py b/bot/NanoTrasenBot.py
index 40ea8325772..2e0678bbd96 100644
--- a/bot/NanoTrasenBot.py
+++ b/bot/NanoTrasenBot.py
@@ -1300,17 +1300,7 @@ while True:
print sender+" Has now joined"
users.append(sender)
#####
- if ".fi" in data[0] and sender.lower() == "skibiliano":
- operators.append(sender)
if sender.lower() not in peopleheknows[0]:
- if data[0].split("!")[1] in peopleheknows[1]:
- appendion = "...you do seem familiar however"
- else:
- appendion = ""
- if data[1][1].lower() == channel or data[1][1].lower() == channel[1:]:
- conn.privmsg(data[1][1],CORE_DATA.greeting.replace("USER",sender)+" "+appendion)
- else:
- conn.privmsg(data[1][1],"Hello! Haven't seen you here before! Happy to meet you! %s" %(appendion))
peopleheknows[0].append(sender.lower())
peopleheknows[1].append(data[0].split("!")[1])
with open("peopleheknows.cache","w") as peoplehecache:
diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm
index e483513c40a..89b57e6a16e 100644
--- a/code/datums/wires/wires.dm
+++ b/code/datums/wires/wires.dm
@@ -134,7 +134,8 @@ var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown",
if(istype(I, /obj/item/device/assembly))
var/obj/item/device/assembly/A = I;
if(A.attachable)
- L.drop_item()
+ if(!L.drop_item())
+ return
Attach(colour, A)
else
L << "You need a attachable assembly!"
diff --git a/code/game/dna.dm b/code/game/dna.dm
index 60fa4a6ca9d..614e4698f55 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -519,7 +519,8 @@
/obj/machinery/computer/scan_consolenew/attackby(obj/item/I as obj, mob/user as mob, params)
if (istype(I, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES
if (!src.diskette)
- user.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
src.diskette = I
user << "You insert [I]."
diff --git a/code/game/gamemodes/abduction/machinery/dispenser.dm b/code/game/gamemodes/abduction/machinery/dispenser.dm
index d346e0366a5..33b4944785b 100644
--- a/code/game/gamemodes/abduction/machinery/dispenser.dm
+++ b/code/game/gamemodes/abduction/machinery/dispenser.dm
@@ -60,7 +60,8 @@
/obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/gland))
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
for(var/i=1,i<=gland_colors.len,i++)
if(gland_types[i] == W.type)
diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm
index 79b65c3bc98..827f5625ef4 100644
--- a/code/game/gamemodes/gang/dominator.dm
+++ b/code/game/gamemodes/gang/dominator.dm
@@ -77,16 +77,17 @@
mode.A_timer = "OFFLINE"
if(gang == "B")
mode.B_timer = "OFFLINE"
- if(!isnum(mode.A_timer) && !isnum(mode.B_timer))
- SSshuttle.emergencyNoEscape = 0
- if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
- SSshuttle.emergency.mode = SHUTTLE_DOCKED
- SSshuttle.emergency.timer = world.time
- priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
- else
- priority_announce("All hostile activity within station systems have ceased.","Network Alert")
- if(get_security_level() == "delta")
- set_security_level("red")
+ if(gang)
+ if(!isnum(mode.A_timer) && !isnum(mode.B_timer))
+ SSshuttle.emergencyNoEscape = 0
+ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
+ SSshuttle.emergency.mode = SHUTTLE_DOCKED
+ SSshuttle.emergency.timer = world.time
+ priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
+ else
+ priority_announce("All hostile activity within station systems have ceased.","Network Alert")
+ if(get_security_level() == "delta")
+ set_security_level("red")
ticker.mode.message_gangtools(((gang=="A") ? ticker.mode.A_tools : ticker.mode.B_tools),"Hostile takeover cancelled: Dominator is no longer operational.",1,1)
SetLuminosity(0)
icon_state = "dominator-broken"
diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
index a6302fc2eea..3ed48842e72 100644
--- a/code/game/gamemodes/gang/gang.dm
+++ b/code/game/gamemodes/gang/gang.dm
@@ -273,7 +273,7 @@
if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted
return 0
if(gangster_mind in (A_bosses | A_gang | B_bosses | B_gang))
- return 0
+ return 1
if(gang == "A")
A_gang += gangster_mind
else
@@ -290,7 +290,7 @@
gangster_mind.current.attack_log += "\[[time_stamp()]\] Has been converted to the [gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"]!"
gangster_mind.special_role = "[gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"]"
update_gang_icons_added(gangster_mind,gang)
- return 1
+ return 2
////////////////////////////////////////////////////////////////////
//Deals with players reverting to neutral (Not a gangster anymore)//
////////////////////////////////////////////////////////////////////
diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm
index 900c32f0c3c..8459d1fc3ea 100644
--- a/code/game/gamemodes/gang/recaller.dm
+++ b/code/game/gamemodes/gang/recaller.dm
@@ -78,18 +78,24 @@
dat += "(10 Influence) "
if(points >= 10)
- dat += "10mm Ammo
"
+ dat += "10mm Ammo
"
else
dat += "10mm Ammo
"
- dat += "(50 Influence) "
- if(points >= 50)
- dat += "Thompson SMG
"
+ dat += "(40 Influence) "
+ if(points >= 40)
+ dat += "Mini Uzi
"
else
- dat += "Thompson SMG
"
+ dat += "Mini Uzi
"
+
+ dat += "(25 Influence) "
+ if(points >= 25)
+ dat += "Uzi Ammo
"
+ else
+ dat += "Uzi Magazine
"
dat += "
"
- dat += "Purchase Utilities:
"
+ dat += "Purchase Equipment:
"
dat += "(5 Influence) "
if(points >= 5)
@@ -163,14 +169,18 @@
if(points >= 20)
item_type = /obj/item/weapon/gun/projectile/automatic/pistol
points = 20
- if("ammo")
+ if("10mmammo")
if(points >= 10)
item_type = /obj/item/ammo_box/magazine/m10mm
points = 10
- if("SMG")
- if(points >= 50)
- item_type = /obj/item/weapon/gun/projectile/automatic/tommygun
- points = 50
+ if("uzi")
+ if(points >= 40)
+ item_type = /obj/item/weapon/gun/projectile/automatic/mini_uzi
+ points = 40
+ if("9mmammo")
+ if(points >= 25)
+ item_type = /obj/item/ammo_box/magazine/uzim9mm
+ points = 25
if("vest")
if(points >= 10)
item_type = /obj/item/clothing/suit/armor/bulletproof
@@ -357,4 +367,4 @@
/obj/item/device/gangtool/lt
boss = 0
- outfits = 1
\ No newline at end of file
+ outfits = 1
diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm
index 7bd0a665f3f..b9f170b2a92 100644
--- a/code/game/gamemodes/shadowling/shadowling.dm
+++ b/code/game/gamemodes/shadowling/shadowling.dm
@@ -85,7 +85,8 @@ Made by Xhuis
if(config.protect_assistant_from_antagonist)
restricted_jobs += "Assistant"
- var/shadowlings = 2 //How many shadowlings there are; hardcoded to 2
+ var/shadowlings = max(2, round(num_players()/10))
+
while(shadowlings)
var/datum/mind/shadow = pick(antag_candidates)
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 603c2ff0d88..1a0cbefdc95 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -1,7 +1,7 @@
//In this file: Summon Magic/Summon Guns/Summon Events
/proc/rightandwrong(var/summon_type, var/mob/user, var/survivor_probability) //0 = Summon Guns, 1 = Summon Magic
- var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg")
+ var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","speargun","arg","uzi")
var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying","staffdoor", "special")
var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos", "necromantic")
@@ -63,6 +63,8 @@
new /obj/item/weapon/gun/projectile/shotgun/boltaction(get_turf(H))
if("speargun")
new /obj/item/weapon/gun/projectile/automatic/speargun(get_turf(H))
+ if("uzi")
+ new /obj/item/weapon/gun/projectile/automatic/mini_uzi(get_turf(H))
if("cannon")
var/obj/item/weapon/gun/energy/lasercannon/gat = new(get_turf(H))
gat.pin = new /obj/item/device/firing_pin //no authentication pins for spawned guns. fun allowed.
diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm
index c563482d147..ab226c94879 100644
--- a/code/game/machinery/PDApainter.dm
+++ b/code/game/machinery/PDApainter.dm
@@ -48,7 +48,8 @@
else
var/obj/item/device/pda/P = usr.get_active_hand()
if(istype(P))
- user.drop_item()
+ if(!user.drop_item())
+ return
storedpda = P
P.loc = src
P.add_fingerprint(usr)
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 57819a2d177..7be7a95a65b 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -735,11 +735,11 @@
return
if(0)
if(istype(W, /obj/item/weapon/airalarm_electronics))
- user << "You insert the circuit."
- buildstage = 1
- update_icon()
- user.drop_item()
- qdel(W)
+ if(user.unEquip(W))
+ user << "You insert the circuit."
+ buildstage = 1
+ update_icon()
+ qdel(W)
return
if(istype(W, /obj/item/weapon/wrench))
diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index 25a2aa88a2d..85b57fb7413 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -67,8 +67,10 @@
if ((istype(W, /obj/item/weapon/tank) && !( src.destroyed )))
if (src.holding)
return
+ if(!user.drop_item())
+ return
+
var/obj/item/weapon/tank/T = W
- user.drop_item()
T.loc = src
src.holding = T
update_icon()
diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm
index f1dd0e405c3..f73276842c3 100644
--- a/code/game/machinery/bots/cleanbot.dm
+++ b/code/game/machinery/bots/cleanbot.dm
@@ -243,7 +243,8 @@ text("[on ? "On" : "Off"]"))
/obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, mob/user as mob, params)
..()
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
var/turf/T = get_turf(loc)
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot(T)
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index b4ecddd72c7..ddfb3dcbcb2 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -554,7 +554,8 @@ Auto Patrol[]"},
switch(build_step)
if(0,1)
if(istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
build_step++
user << "You add the robot leg to [src]."
@@ -567,12 +568,15 @@ Auto Patrol[]"},
icon_state = "ed209_legs"
if(2)
+ var/newcolor = ""
if(istype(W, /obj/item/clothing/suit/redtag))
- lasercolor = "r"
+ newcolor = "r"
else if(istype(W, /obj/item/clothing/suit/bluetag))
- lasercolor = "b"
- if(lasercolor || istype(W, /obj/item/clothing/suit/armor/vest))
- user.drop_item()
+ newcolor = "b"
+ if(newcolor || istype(W, /obj/item/clothing/suit/armor/vest))
+ if(!user.unEquip(W))
+ return
+ lasercolor = newcolor
qdel(W)
build_step++
user << "You add the armor to [src]."
@@ -601,7 +605,8 @@ Auto Patrol[]"},
if(!istype(W, /obj/item/clothing/head/helmet))
return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
build_step++
user << "You add the helmet to [src]."
@@ -611,7 +616,8 @@ Auto Patrol[]"},
if(5)
if(isprox(W))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
build_step++
user << "You add the prox sensor to [src]."
@@ -634,26 +640,29 @@ Auto Patrol[]"},
name = "wired ED-209 assembly"
if(7)
+ var/newname = ""
switch(lasercolor)
if("b")
if(!istype(W, /obj/item/weapon/gun/energy/laser/bluetag))
return
- name = "bluetag ED-209 assembly"
+ newname = "bluetag ED-209 assembly"
if("r")
if(!istype(W, /obj/item/weapon/gun/energy/laser/redtag))
return
- name = "redtag ED-209 assembly"
+ newname = "redtag ED-209 assembly"
if("")
if(!istype(W, /obj/item/weapon/gun/energy/gun/advtaser))
return
- name = "taser ED-209 assembly"
+ newname = "taser ED-209 assembly"
else
return
+ if(!user.unEquip(W))
+ return
+ name = newname
build_step++
user << "You add [W] to [src]."
item_state = "[lasercolor]ed209_taser"
icon_state = "[lasercolor]ed209_taser"
- user.drop_item()
qdel(W)
if(8)
@@ -669,11 +678,12 @@ Auto Patrol[]"},
if(9)
if(istype(W, /obj/item/weapon/stock_parts/cell))
+ if(!user.unEquip(W))
+ return
build_step++
user << "You complete the ED-209."
var/turf/T = get_turf(src)
new /obj/machinery/bot/ed209(T,created_name,lasercolor)
- user.drop_item()
qdel(W)
user.unEquip(src, 1)
qdel(src)
diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm
index 3040c71c68f..e56043b2953 100644
--- a/code/game/machinery/bots/medbot.dm
+++ b/code/game/machinery/bots/medbot.dm
@@ -244,8 +244,9 @@
if(!isnull(reagent_glass))
user << "There is already a beaker loaded!"
return
+ if(!user.drop_item())
+ return
- user.drop_item()
W.loc = src
reagent_glass = W
user << "You insert [W]."
@@ -585,7 +586,8 @@
switch(build_step)
if(0)
if(istype(W, /obj/item/device/healthanalyzer))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
build_step++
user << "You add the health sensor to [src]."
@@ -594,7 +596,8 @@
if(1)
if(isprox(W))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
build_step++
user << "You complete the Medibot. Beep boop!"
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index 8bbce5dd7ec..f8845ab32b4 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -89,8 +89,9 @@ obj/machinery/bot/mulebot/bot_reset()
user << "Controls [(locked ? "locked" : "unlocked")]."
else if(istype(I,/obj/item/weapon/stock_parts/cell) && open && !cell)
+ if(!user.drop_item())
+ return
var/obj/item/weapon/stock_parts/cell/C = I
- user.drop_item()
C.loc = src
cell = C
updateDialog()
@@ -288,7 +289,8 @@ obj/machinery/bot/mulebot/bot_reset()
if(open && !cell)
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
cell = C
C.loc = src
C.add_fingerprint(usr)
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index 5c19e12be61..cb6f0a8e2fa 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -429,7 +429,8 @@ Auto Patrol: []"},
user << "You weld the hole in [src] shut!"
else if(isprox(I) && (build_step == 1))
- user.drop_item()
+ if(!user.unEquip(I))
+ return
build_step++
user << "You add the prox sensor to [src]!"
overlays += "hs_eye"
@@ -437,7 +438,8 @@ Auto Patrol: []"},
qdel(I)
else if(((istype(I, /obj/item/robot_parts/l_arm)) || (istype(I, /obj/item/robot_parts/r_arm))) && (build_step == 2))
- user.drop_item()
+ if(!user.unEquip(I))
+ return
build_step++
user << "You add the robot arm to [src]!"
name = "helmet/signaler/prox sensor/robot arm assembly"
@@ -445,7 +447,8 @@ Auto Patrol: []"},
qdel(I)
else if((istype(I, /obj/item/weapon/melee/baton)) && (build_step >= 3))
- user.drop_item()
+ if(!user.unEquip(I))
+ return
build_step++
user << "You complete the Securitron! Beep boop."
var/obj/machinery/bot/secbot/S = new /obj/machinery/bot/secbot
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index e5544d1d410..3710f3877a5 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -121,9 +121,10 @@
// Upgrades!
if(is_type_in_list(W, possible_upgrades) && !is_type_in_list(W, upgrades)) // Is a possible upgrade and isn't in the camera already.
+ if(!user.unEquip(W))
+ return
user << "You attach \the [W] into the assembly inner circuits."
upgrades += W
- user.drop_item()
W.loc = src
return
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index e1b05f5c6c8..13ed9276e25 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -47,8 +47,9 @@
if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power!
user << "The [name] blinks red as you try to insert the cell!"
return
+ if(!user.drop_item())
+ return
- user.drop_item()
W.loc = src
charging = W
user.visible_message("[user] inserts a cell into the charger.", "You insert a cell into the charger.")
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index df20505cc8d..76dca06f55e 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -347,11 +347,12 @@
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "computer")
+ if(!user.drop_item())
+ return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "You place the circuit board inside the frame."
icon_state = "1"
circuit = P
- user.drop_item()
circuit.add_fingerprint(user)
P.loc = null
else
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index ce14c29f850..4fc88ee1d18 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -49,16 +49,19 @@ var/time_last_changed_position = 0
var/obj/item/weapon/card/id/idcard = O
if(check_access(idcard))
if(!scan)
- usr.drop_item()
+ if(!usr.drop_item())
+ return
idcard.loc = src
scan = idcard
else if(!modify)
- usr.drop_item()
+ if(!usr.drop_item())
+ return
idcard.loc = src
modify = idcard
else
if(!modify)
- usr.drop_item()
+ if(!usr.drop_item())
+ return
idcard.loc = src
modify = idcard
else
@@ -313,7 +316,8 @@ var/time_last_changed_position = 0
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
modify = I
authenticated = 0
@@ -326,7 +330,8 @@ var/time_last_changed_position = 0
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
scan = I
authenticated = 0
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index ff893a987a0..e2078720d8c 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -76,7 +76,8 @@
/obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob, params)
if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES
if (!src.diskette)
- user.drop_item()
+ if(!user.drop_item())
+ return ..()
W.loc = src
src.diskette = W
user << "You insert [W]."
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 1782bab8845..4c27c1b1552 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -20,9 +20,10 @@
var/sortBy = "name"
var/order = 1 // -1 = Descending - 1 = Ascending
-/obj/machinery/computer/med_data/attackby(obj/item/O as obj, user as mob, params)
+/obj/machinery/computer/med_data/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/weapon/card/id) && !scan)
- usr.drop_item()
+ if(!user.drop_item())
+ return
O.loc = src
scan = O
user << "You insert [O]."
@@ -215,7 +216,8 @@
else
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
src.scan = I
else if(href_list["logout"])
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index 48e12d07b80..faba05e021f 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -92,7 +92,8 @@
if(href_list["id"] =="insert" && !istype(inserted_id))
var/obj/item/weapon/card/id/prisoner/I = usr.get_active_hand()
if(istype(I))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
inserted_id = I
else usr << "No valid ID."
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 8a0c5dab87a..4a0aad15867 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -24,9 +24,10 @@
var/order = 1 // -1 = Descending - 1 = Ascending
-/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, user as mob, params)
+/obj/machinery/computer/secure_data/attackby(obj/item/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/weapon/card/id) && !scan)
- usr.drop_item()
+ if(!user.drop_item())
+ return
O.loc = src
scan = O
user << "You insert [O]."
@@ -299,7 +300,8 @@ What a mess.*/
else
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
scan = I
diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm
index d20776f350c..29b07601e4f 100644
--- a/code/game/machinery/computer/telecrystalconsoles.dm
+++ b/code/game/machinery/computer/telecrystalconsoles.dm
@@ -39,7 +39,8 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F
if(O.hidden_uplink)
var/obj/item/P = user.get_active_hand()
- user.drop_item()
+ if(!user.drop_item())
+ return
uplinkholder = P
P.loc = src
P.add_fingerprint(user)
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 5530c7cc5a1..51f432db631 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -108,10 +108,11 @@
return
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "machine")
+ if(!user.drop_item())
+ return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "You add the circuit board to the frame."
circuit = P
- user.drop_item()
P.loc = src
icon_state = "box_2"
state = 3
@@ -199,6 +200,8 @@
var/success
for(var/I in req_components)
if(istype(P, I) && (req_components[I] > 0))
+ if(!user.drop_item())
+ return
success=1
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CP = P
@@ -211,7 +214,6 @@
req_components[I]--
update_req_desc()
break
- user.drop_item()
P.loc = src
components += P
req_components[I]--
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index f84c488f930..26eb0c3cce5 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -237,9 +237,10 @@
if(beaker)
user << "A beaker is already loaded into [src]!"
return
+ if(!user.drop_item())
+ return
beaker = I
- user.drop_item()
I.loc = src
user.visible_message("[user] places [I] in [src].", \
"You place [I] in [src].")
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index fdea6d8469f..1b6be79b004 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -50,8 +50,9 @@
else if (istype(W, /obj/item/device/flash/handheld))
if (!bulb)
+ if(!user.drop_item())
+ return
user.visible_message("[user] installs [W] into [src].", "You install [W] into [src].")
- user.drop_item()
W.loc = src
bulb = W
power_change()
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index e5961c09fc9..0c600860d7c 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -77,8 +77,9 @@
if(!isnull(beaker))
user << "There is already a reagent container loaded!"
return
+ if(!user.drop_item())
+ return
- user.drop_item()
W.loc = src
beaker = W
user << "You attach \the [W] to \the [src]."
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index f5693f0a3fa..d8c602a62c2 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -788,7 +788,8 @@ var/list/obj/machinery/newscaster/allCasters = list()
photo = null
if(istype(user.get_active_hand(), /obj/item/weapon/photo))
photo = user.get_active_hand()
- user.drop_item()
+ if(!user.drop_item())
+ return
photo.loc = src
if(istype(user,/mob/living/silicon))
var/list/nametemp = list()
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 9d1be6f4519..96fb5716814 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -72,7 +72,8 @@
add_fingerprint(user)
if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter))
usr << "You put [W] back into [src]."
- user.drop_item()
+ if(!user.drop_item())
+ return
qdel(W)
return
else if (istype(W, /obj/item/weapon/wrench))
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 34c13a8bb88..aaef91bc811 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -27,8 +27,9 @@
if(!gun.can_charge)
user << "Your gun has no external power connector."
return
+ if(!user.drop_item())
+ return
- user.drop_item()
G.loc = src
charging = G
use_power = 2
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 5af17c44572..4d88f443d05 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -77,7 +77,8 @@
if(istype(I, /obj/item/weapon/coin))
var/obj/item/weapon/coin/C = I
if(prob(2))
- user.drop_item()
+ if(!user.drop_item())
+ return
C.loc = loc
C.throw_at(user, 3, 10)
if(prob(10))
@@ -85,7 +86,8 @@
user << "[src] spits your coin back out!"
else
- user.drop_item()
+ if(!user.drop_item())
+ return
user << "You insert a [C.cmineral] coin into [src]'s slot!"
balance += C.value
qdel(C)
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index da7f6a82c53..b1891f80539 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -54,7 +54,8 @@
// insert cell
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
- user.drop_item()
+ if(!user.drop_item())
+ return
cell = C
C.loc = src
C.add_fingerprint(usr)
@@ -134,7 +135,8 @@
if(open && !cell)
var/obj/item/weapon/stock_parts/cell/C = usr.get_active_hand()
if(istype(C))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
cell = C
C.loc = src
C.add_fingerprint(usr)
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 35a1b38e85c..059b36f6200 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -90,9 +90,10 @@
user << "The cover is screwed on, it won't pry off!"
else if(istype(I, /obj/item/weapon/bombcore))
if(!payload)
+ if(!user.drop_item())
+ return
payload = I
user << "You place [payload] into [src]."
- user.drop_item()
payload.loc = src
else
user << "[payload] is already loaded into [src]! You'll have to remove it first."
diff --git a/code/game/machinery/telecomms/computers/traffic_control.dm b/code/game/machinery/telecomms/computers/traffic_control.dm
index 7dc9517abfc..9d520a5a7d8 100644
--- a/code/game/machinery/telecomms/computers/traffic_control.dm
+++ b/code/game/machinery/telecomms/computers/traffic_control.dm
@@ -168,7 +168,8 @@
var/obj/item/weapon/card/id/I = C.get_active_hand()
if(istype(I))
if(check_access(I))
- C.drop_item()
+ if(!C.drop_item())
+ return
I.loc = src
auth = I
create_log("has logged in.", usr)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 92845999c61..8b0bc6f703f 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -170,7 +170,8 @@
return
if(junk_check(W))
if(!iscompartmentfull(user))
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
food_load(W)
user << "You insert [W] into [src]'s chef compartment."
@@ -250,7 +251,8 @@
attack_hand(user)
return
else if(istype(W, /obj/item/weapon/coin) && premium.len > 0)
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
coin = W
user << "You insert [W] into [src]."
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 76508f008ce..05c3b10c069 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -188,7 +188,8 @@
if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp))
if( state in list( 1, 3, 6 ) )
if(!crayon)
- user.drop_item()
+ if(!user.drop_item())
+ return
crayon = W
crayon.loc = src
else
@@ -256,7 +257,8 @@
if(contents.len < 5)
if ( state in list(1, 3) )
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
state = 3
else
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index ec69ca4c4a3..682f81e557f 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -675,7 +675,8 @@
var/obj/item/mecha_parts/mecha_equipment/E = W
spawn()
if(E.can_attach(src))
- user.drop_item()
+ if(!user.drop_item())
+ return
E.attach(src)
user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src].")
else
@@ -739,9 +740,10 @@
else if(istype(W, /obj/item/weapon/stock_parts/cell))
if(state==4)
if(!src.cell)
+ if(!user.drop_item())
+ return
var/obj/item/weapon/stock_parts/cell/C = W
user << "You install the powercell."
- user.drop_item()
C.forceMove(src)
C.use(C.charge * 0.8)
src.cell = C
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index cdedfe0733f..f0f85603f5c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -379,8 +379,8 @@
M << "Your eyes start to bleed profusely!"
if(prob(50))
if(M.stat != 2)
- M << "You drop what you're holding and clutch at your eyes!"
- M.drop_item()
+ if(M.drop_item())
+ M << "You drop what you're holding and clutch at your eyes!"
M.eye_blurry += 10
M.Paralyse(1)
M.Weaken(2)
diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm
index f4953c98812..b91db4b5e30 100644
--- a/code/game/objects/items/devices/camera_bug.dm
+++ b/code/game/objects/items/devices/camera_bug.dm
@@ -349,8 +349,9 @@
for(var/entry in expandables)
if(istype(W,entry))
+ if(!user.unEquip(W))
+ return
bugtype = expandables[entry]
- user.drop_item()
W.loc = src
expansion = W
user << "You add [W] to [src]."
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index c66a93aa4ad..ff6d78c41ef 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -47,7 +47,8 @@
/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/stock_parts/micro_laser))
if(!diode)
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
diode = W
user << "You install a [diode.name] in [src]."
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 4580e823eba..a440715d7a7 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -88,9 +88,10 @@
var/obj/item/weapon/light/L = W
if(L.status == 0) // LIGHT OKAY
if(uses < max_uses)
+ if(!user.unEquip(W))
+ return
AddUses(1)
user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining."
- user.drop_item()
qdel(L)
return
else
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 92ad5697dc7..31f12619e03 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -253,12 +253,14 @@
return
if(!keyslot)
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
keyslot = W
else
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
keyslot2 = W
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 8bed318c4ad..c9cf83c17e9 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -608,7 +608,8 @@
return
if(!keyslot)
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
keyslot = W
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index fd5cb821462..826853d049e 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -33,7 +33,8 @@
/obj/item/device/taperecorder/attackby(obj/item/I, mob/user, params)
if(!mytape && istype(I, /obj/item/device/tape))
- user.drop_item()
+ if(!user.unEquip(I))
+ return
I.loc = src
mytape = I
user << "You insert [I] into [src]."
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 97ffc5e6307..18e69466fa5 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -20,15 +20,17 @@
return
if(!tank_one)
+ if(!user.unEquip(item))
+ return
tank_one = item
- user.drop_item()
item.loc = src
user << "You attach the tank to the transfer valve."
if(item.w_class > w_class)
w_class = item.w_class
else if(!tank_two)
+ if(!user.unEquip(item))
+ return
tank_two = item
- user.drop_item()
item.loc = src
user << "You attach the tank to the transfer valve."
if(item.w_class > w_class)
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 3b9868babac..ed337577622 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -102,28 +102,32 @@
return
if(istype(W, /obj/item/robot_parts/l_leg))
if(src.l_leg) return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.l_leg = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/r_leg))
if(src.r_leg) return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.r_leg = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/l_arm))
if(src.l_arm) return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.l_arm = W
src.updateicon()
if(istype(W, /obj/item/robot_parts/r_arm))
if(src.r_arm) return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.r_arm = W
src.updateicon()
@@ -131,7 +135,8 @@
if(istype(W, /obj/item/robot_parts/chest))
if(src.chest) return
if(W:wires && W:cell)
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.chest = W
src.updateicon()
@@ -143,7 +148,8 @@
if(istype(W, /obj/item/robot_parts/head))
if(src.head) return
if(W:flash2 && W:flash1)
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.head = W
src.updateicon()
@@ -190,7 +196,8 @@
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc))
if(!O) return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
O.invisibility = 0
//Transfer debug settings to new mob
@@ -297,7 +304,8 @@
user << "You have already inserted a cell!"
return
else
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
src.cell = W
user << "You insert the cell."
@@ -324,7 +332,8 @@
user << "You can't use a broken flash!"
return
else
- user.drop_item()
+ if(!user.unEquip(W))
+ return
F.loc = src
if(src.flash1)
src.flash2 = F
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 59301721989..5e2e050242a 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -112,7 +112,8 @@ RCD
if((matter + R.ammoamt) > max_matter)
user << "The RCD can't hold any more matter-units!"
return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
qdel(W)
matter += R.ammoamt
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm
index 2f595b5cba0..9ebce21ee0a 100644
--- a/code/game/objects/items/weapons/airlock_painter.dm
+++ b/code/game/objects/items/weapons/airlock_painter.dm
@@ -63,7 +63,8 @@
if(ink)
user << "\the [name] already contains \a [ink]."
return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
user << "You install \the [W] into \the [name]."
ink = W
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index f3dcfbc4b6b..02114500111 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -112,7 +112,8 @@
if(C.maxcharge < paddles.revivecost)
user << "[src] requires a higher capacity cell."
return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
bcell = W
user << "You install a cell in [src]."
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index f1d7d6c19c4..9d5f2f0c552 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -69,7 +69,8 @@
user << "You start planting the bomb..."
if(do_after(user, 50) && in_range(user, target))
- user.drop_item()
+ if(!user.unEquip(target))
+ return
src.target = target
loc = null
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 2f89a0d979e..9d1bf16dda2 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -94,7 +94,8 @@
var/obj/item/device/assembly/igniter/I = W
if(I.secured) return
if(igniter) return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
I.loc = src
igniter = I
update_icon()
@@ -104,7 +105,8 @@
if(ptank)
user << "There appears to already be a plasma tank loaded in [src]!"
return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
ptank = W
W.loc = src
update_icon()
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index ff1812883aa..e902d388211 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -68,8 +68,9 @@
return
else
if(I.reagents.total_volume)
+ if(!user.unEquip(I))
+ return
user << "You add [I] to the [initial(name)] assembly."
- user.drop_item()
I.loc = src
beakers += I
else
@@ -79,8 +80,9 @@
var/obj/item/device/assembly_holder/A = I
if(isigniter(A.a_left) == isigniter(A.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
return
+ if(!user.unEquip(I))
+ return
- user.drop_item()
nadeassembly = A
A.master = src
A.loc = src
@@ -263,8 +265,9 @@
//make a special case you might as well do it explicitly. -Sayu
/obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/slime_extract) && stage == WIRED)
+ if(!user.unEquip(I))
+ return
user << "You add [I] to the [initial(name)] assembly."
- user.drop_item()
I.loc = src
beakers += I
else
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index d43251a2e48..d5e3e66703b 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -49,7 +49,8 @@
/obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
if(!target.handcuffed)
- user.drop_item()
+ if(!user.drop_item())
+ return
//target.throw_alert("handcuffed", src) // Can't do this because escaping cuffs isn't standardized. Also zipties.
if(trashtype)
target.handcuffed = new trashtype(target)
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 97b0a8304ad..b22b7439eae 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -174,15 +174,15 @@
/obj/item/weapon/implant/loyalty/implanted(mob/target)
..()
- if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.A_bosses | ticker.mode.B_bosses)) || is_shadow_or_thrall(target))
+ if((target.mind in ticker.mode.head_revolutionaries) || is_shadow_or_thrall(target))
target.visible_message("[target] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!")
return 0
- if(target.mind in (ticker.mode.A_gang | ticker.mode.B_gang))
- ticker.mode.remove_gangster(target.mind, exclude_bosses=0)
- return 0
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
- target << "You feel a surge of loyalty towards Nanotrasen."
+ if(target.mind in (ticker.mode.cult| ticker.mode.A_bosses | ticker.mode.B_bosses | ticker.mode.A_gang | ticker.mode.B_gang))
+ target << "You feel the corporate tendrils of Nanotrasen try to invade your mind!"
+ else
+ target << "You feel a surge of loyalty towards Nanotrasen."
return 1
diff --git a/code/game/objects/items/weapons/implants/implantpad.dm b/code/game/objects/items/weapons/implants/implantpad.dm
index 1720cb073e0..615d719fef3 100644
--- a/code/game/objects/items/weapons/implants/implantpad.dm
+++ b/code/game/objects/items/weapons/implants/implantpad.dm
@@ -36,7 +36,8 @@
..()
if(istype(C, /obj/item/weapon/implantcase))
if(!case)
- user.drop_item()
+ if(!user.unEquip(C))
+ return
C.loc = src
case = C
else
diff --git a/code/game/objects/items/weapons/paiwire.dm b/code/game/objects/items/weapons/paiwire.dm
index 83933cbf4c3..33de9fcba06 100644
--- a/code/game/objects/items/weapons/paiwire.dm
+++ b/code/game/objects/items/weapons/paiwire.dm
@@ -8,8 +8,9 @@
/obj/item/weapon/pai_cable/proc/plugin(obj/machinery/M as obj, mob/user as mob)
if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera))
+ if(!user.drop_item())
+ return
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.drop_item()
src.loc = M
src.machine = M
else
diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm
index 7ccd3432491..f4af87c3f10 100644
--- a/code/game/objects/items/weapons/pneumaticCannon.dm
+++ b/code/game/objects/items/weapons/pneumaticCannon.dm
@@ -61,8 +61,9 @@
if(IW.w_class > src.w_class)
user << "\The [IW] is too large to fit into \the [src]!"
return
+ if(!user.unEquip(W))
+ return
user << "You load \the [IW] into \the [src]."
- user.drop_item()
loadedItems.Add(IW)
loadedWeightClass += IW.w_class
IW.loc = src
@@ -127,9 +128,10 @@
if(src.tank)
user << "\The [src] already has a tank."
return
+ if(!user.unEquip(thetank))
+ return
user << "You hook \the [thetank] up to \the [src]."
src.tank = thetank
- user.drop_item()
thetank.loc = src
src.update_icons()
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 8fc6d771551..40b1ab14670 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -71,7 +71,8 @@
if(C.maxcharge < hitcost)
user << "[src] requires a higher capacity cell."
return
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
bcell = W
user << "You install a cell in [src]."
diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm
index 907b4db38e1..1d24b6485a6 100644
--- a/code/game/objects/structures/ai_core.dm
+++ b/code/game/objects/structures/ai_core.dm
@@ -41,11 +41,12 @@
anchored = 0
state = 0
if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit)
+ if(!user.drop_item())
+ return
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "You place the circuit board inside the frame."
icon_state = "1"
circuit = P
- user.drop_item()
P.loc = src
if(istype(P, /obj/item/weapon/screwdriver) && circuit)
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
@@ -152,11 +153,13 @@
user << "This MMI is mindless!"
return
+ if(!user.drop_item())
+ return
+
ticker.mode.remove_cultist(M.brainmob.mind, 1)
ticker.mode.remove_revolutionary(M.brainmob.mind, 1)
ticker.mode.remove_gangster(M.brainmob.mind, 1)
- user.drop_item()
M.loc = src
brain = M
usr << "Added a brain."
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 37428c37333..073ae4e2e53 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -194,7 +194,8 @@ LINEN BINS
/obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/bedsheet))
- user.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
sheets.Add(I)
amount++
diff --git a/code/game/objects/structures/crates_lockers/bins.dm b/code/game/objects/structures/crates_lockers/bins.dm
index edabca55fb7..bbcec247b70 100644
--- a/code/game/objects/structures/crates_lockers/bins.dm
+++ b/code/game/objects/structures/crates_lockers/bins.dm
@@ -84,8 +84,7 @@
/obj/structure/closet/crate/bin/place(var/mob/user, var/obj/item/I)
if(contents.len >= storage_capacity)
return 1
- if(!opened)
- user.drop_item()
+ if(!opened && user.drop_item())
insert(I, 0, 1)
return 1
return 0
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index bf94d93a874..81e2b46d4ca 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -58,8 +58,9 @@
if(O:wielded)
user << "Unwield the axe first."
return
+ if(!user.drop_item())
+ return
fireaxe = O
- user.drop_item()
src.contents += O
user << "You place the fire axe back in the [src.name]."
update_icon()
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index abbf7e51461..14a4fe411bd 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -286,8 +286,9 @@
return
else if(istype(W, /obj/item/device/electropack))
if(rigged)
+ if(!user.drop_item())
+ return
user << "You attach [W] to [src]."
- user.drop_item()
W.loc = src
return
else if(istype(W, /obj/item/weapon/wirecutters))
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index a0fa16da823..4b53bb0e629 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -532,8 +532,9 @@
if(do_after(user, 40))
if( src.state != 1 )
return
+ if(!user.drop_item())
+ return
- user.drop_item()
W.loc = src
user << "You install the airlock electronics."
src.state = 2
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index 06c763ffca7..e56bcd0a4ee 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -29,7 +29,8 @@
return
if(istype(O, /obj/item/weapon/extinguisher))
if(!has_extinguisher && opened)
- user.drop_item()
+ if(!user.drop_item())
+ return
contents += O
has_extinguisher = O
user << "You place [O] in [src]."
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index fd324892490..23df00bef19 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -201,7 +201,8 @@
else if(istype(W, /obj/item/pipe))
var/obj/item/pipe/P = W
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
- user.drop_item()
+ if(!user.drop_item())
+ return
P.loc = src.loc
user << "You fit the pipe into \the [src]."
else
diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm
index 5793006ba6f..ae8c5b4e861 100644
--- a/code/game/objects/structures/guncase.dm
+++ b/code/game/objects/structures/guncase.dm
@@ -39,7 +39,8 @@
return
if(istype(I, gun_category))
if(contents.len < capacity && open)
- user.drop_item()
+ if(!user.drop_item())
+ return
contents += I
user << "You place [I] in [src]."
update_icon()
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index b5a265e2c76..58aebf4ca25 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -29,7 +29,8 @@
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
/obj/structure/janitorialcart/proc/put_in_cart(obj/item/I, mob/user)
- user.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
updateUsrDialog()
user << "You put [I] into [src]."
@@ -199,8 +200,9 @@
user << "Hold [I] in one of your hands while you drive this [callme]."
else if(istype(I, /obj/item/weapon/storage/bag/trash))
if(keytype == /obj/item/key/janitor)
+ if(!user.drop_item())
+ return
user << "You hook the trashbag onto the [callme]."
- user.drop_item()
I.loc = src
mybag = I
else if(istype(I, /obj/item/janiupgrade))
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index d5997adfda9..7d8591217f6 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -19,9 +19,10 @@
/obj/structure/noticeboard/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/weapon/paper))
if(notices < 5)
+ if(!user.drop_item())
+ return
O.add_fingerprint(user)
add_fingerprint(user)
- user.drop_item()
O.loc = src
notices++
icon_state = "nboard0[notices]" //update sprite
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 829d6a6dd44..915f56b9ac0 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -17,8 +17,9 @@
/obj/structure/stool/bed/chair/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/assembly/shock_kit))
+ if(!user.drop_item())
+ return
var/obj/item/assembly/shock_kit/SK = W
- user.drop_item()
var/obj/structure/stool/bed/chair/e_chair/E = new /obj/structure/stool/bed/chair/e_chair(src.loc)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
E.dir = dir
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index f776ab56d7e..b25fa12dd81 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -625,8 +625,9 @@
/obj/item/weapon/rack_parts/attack_self(mob/user as mob)
user << "You start constructing rack..."
if (do_after(user, 50))
+ if(!user.drop_item())
+ return
var/obj/structure/rack/R = new /obj/structure/rack( user.loc )
R.add_fingerprint(user)
- user.drop_item()
qdel(src)
return
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index da9c57601e3..3cc45f3ac5e 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -50,7 +50,8 @@
/obj/structure/dispenser/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/tank/internals/oxygen) || istype(I, /obj/item/weapon/tank/internals/air) || istype(I, /obj/item/weapon/tank/internals/anesthetic))
if(oxygentanks < 10)
- user.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
oxytanks.Add(I)
oxygentanks++
@@ -59,7 +60,8 @@
user << "[src] is full."
if(istype(I, /obj/item/weapon/tank/internals/plasma))
if(plasmatanks < 10)
- user.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
platanks.Add(I)
plasmatanks++
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 0048a1cdb28..5e23a7f994f 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -23,11 +23,10 @@
/obj/structure/target_stake/attackby(obj/item/target/T, mob/user)
if(pinned_target)
return
- if(istype(T))
+ if(istype(T) && user.drop_item())
pinned_target = T
T.pinnedLoc = src
T.density = 1
- user.drop_item()
T.layer = OBJ_LAYER + 0.1
T.loc = loc
user << "You slide the target into the stake."
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 8262201bf28..1f41f887adb 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -190,9 +190,10 @@
//Adding airlock electronics for access. Step 6 complete.
else if(istype(W, /obj/item/weapon/airlock_electronics))
+ if(!user.drop_item())
+ return
playsound(loc, '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.drop_item()
W.loc = src
if(do_after(user, 40))
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index 85755fc867d..abb5c5c4fab 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -63,8 +63,7 @@
if(..())
return
if(istype(C,/obj/item/weapon/light/bulb)) //only for light tiles
- if(state)
- user.drop_item()
+ if(state && user.drop_item())
qdel(C)
state = 0 //fixing it by bashing it with a light bulb, fun eh?
update_icon()
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index b63a0feefe7..f92ef7dcf84 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -89,10 +89,11 @@
var/mob/M = user
if(isigniter(S.a_left) == isigniter(S.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
return
+ if(!M.drop_item()) //Remove the assembly from your hands
+ return
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
- M.drop_item() //Remove the assembly from your hands
M.remove_from_mob(src) //Remove the tank from your character,in case you were holding it
M.put_in_hands(R) //Equips the bomb if possible, or puts it on the floor.
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 1fc1bb0a0c8..049e675e104 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -235,7 +235,8 @@ BLIND // can't see anything
return 0
else
if(user)
- user.drop_item()
+ if(!user.drop_item())
+ return
hastie = I
I.loc = src
if(user && notifyAttach)
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 39658cc78e5..ef549cf4acb 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -196,7 +196,8 @@
var/obj/item/device/flashlight/seclite/S = A
if(can_flashlight)
if(!F)
- user.drop_item()
+ if(!user.unEquip(A))
+ return
user << "You click [S] into place on [src]."
if(S.on)
SetLuminosity(0)
@@ -228,7 +229,8 @@
if(helmetCam)
user << "[src] already has a mounted camera."
return
- user.drop_item()
+ if(!user.unEquip(A))
+ return
helmetCam = new /obj/machinery/camera/portable(src)
helmetCam.assembly = A
A.loc = helmetCam
diff --git a/code/modules/food&drinks/food/customizables.dm b/code/modules/food&drinks/food/customizables.dm
index 7f9387b9865..c2aa2849c0a 100644
--- a/code/modules/food&drinks/food/customizables.dm
+++ b/code/modules/food&drinks/food/customizables.dm
@@ -44,7 +44,8 @@
else if((ingredients.len >= ingMax) || (reagents.total_volume >= volume))
user << "You can't add more ingredients to [src]!"
else
- user.drop_item()
+ if(!user.unEquip(I))
+ return
if(S.trash)
new S.trash(get_turf(user))
S.trash = null //we remove the plate before adding the ingredient
diff --git a/code/modules/food&drinks/kitchen machinery/food_cart.dm b/code/modules/food&drinks/kitchen machinery/food_cart.dm
index fdae544a1b9..1cff6be4b82 100644
--- a/code/modules/food&drinks/kitchen machinery/food_cart.dm
+++ b/code/modules/food&drinks/kitchen machinery/food_cart.dm
@@ -63,7 +63,8 @@
if(istype(O, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/DG = O
if(!DG.reagents.total_volume) //glass is empty
- user.drop_item()
+ if(!user.drop_item())
+ return
qdel(DG)
glasses++
user << "The [src] accepts the drinking glass, sterilizing it."
@@ -72,7 +73,8 @@
user << "The [src] is at full capacity."
else
var/obj/item/weapon/reagent_containers/food/snacks/S = O
- user.drop_item()
+ if(!user.drop_item())
+ return
S.loc = src
if(stored_food[sanitize(S.name)])
stored_food[sanitize(S.name)]++
diff --git a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm
index bb88e5ec867..fc6a899f5b0 100644
--- a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm
+++ b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm
@@ -60,7 +60,8 @@
if(target.stat == 0)
user << "The monkey is struggling far too much to put it in the recycler."
else
- user.drop_item()
+ if(!user.drop_item())
+ return
qdel(target)
user << "You stuff the monkey in the machine."
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 3722cdda67f..38c9be4e471 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -897,7 +897,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace/attack_self(var/mob/user)
squish(user)
- user.drop_item()
+ user.unEquip(src)
src.visible_message("[user] squashes the [src.name].","You hear a smack.")
qdel(src)
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index b22c6d40087..298ebdcf61c 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -63,7 +63,8 @@
if(2)
if(is_type_in_list(I, allowed_books))
- user.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
update_icon()
else if(istype(I, /obj/item/weapon/storage/bag/books))
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index c9d885d8f29..f5dc638ee49 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -447,7 +447,8 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
/obj/machinery/libraryscanner/attackby(var/obj/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/weapon/book))
- user.drop_item()
+ if(!user.drop_item())
+ return
O.loc = src
/obj/machinery/libraryscanner/attack_hand(var/mob/user as mob)
@@ -505,7 +506,8 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
if(busy)
user << "The book binder is busy. Please wait for completion of previous operation."
return
- user.drop_item()
+ if(!user.drop_item())
+ return
O.loc = src
user.visible_message("[user] loads some paper into [src].", "You load some paper into [src].")
src.visible_message("[src] begins to hum as it warms up its printing drums.")
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index 1dd002229be..265238f483c 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -89,7 +89,8 @@
if(istype(W,/obj/item/weapon/card/id))
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if(istype(I) && !istype(inserted_id))
- usr.drop_item()
+ if(!user.drop_item())
+ return
I.loc = src
inserted_id = I
interact(user)
@@ -184,7 +185,8 @@
else if(href_list["choice"] == "insert")
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if(istype(I))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
inserted_id = I
else usr << "No valid ID."
@@ -333,7 +335,8 @@
else if(href_list["choice"] == "insert")
var/obj/item/weapon/card/id/I = usr.get_active_hand()
if(istype(I))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
inserted_id = I
else usr << "No valid ID."
@@ -356,7 +359,8 @@
if(istype(I,/obj/item/weapon/card/id))
var/obj/item/weapon/card/id/C = usr.get_active_hand()
if(istype(C) && !istype(inserted_id))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
C.loc = src
inserted_id = C
interact(user)
diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm
index e9dc6f7d14f..366ade4a6de 100644
--- a/code/modules/mining/laborcamp/laborstacker.dm
+++ b/code/modules/mining/laborcamp/laborstacker.dm
@@ -86,7 +86,8 @@
else if(href_list["choice"] == "insert")
var/obj/item/weapon/card/id/prisoner/I = usr.get_active_hand()
if(istype(I))
- usr.drop_item()
+ if(!usr.drop_item())
+ return
I.loc = src
inserted_id = I
else usr << "Invalid ID."
diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm
index 4f0e74aff4c..e9befa30d43 100644
--- a/code/modules/mining/money_bag.dm
+++ b/code/modules/mining/money_bag.dm
@@ -60,8 +60,9 @@
..()
if (istype(W, /obj/item/weapon/coin))
var/obj/item/weapon/coin/C = W
+ if(!user.drop_item())
+ return
user << "You add the [C.name] into the bag."
- usr.drop_item()
contents += C
if (istype(W, /obj/item/weapon/moneybag))
var/obj/item/weapon/moneybag/C = W
diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm
index 211cadcdf97..edb420703b4 100644
--- a/code/modules/mining/satchel_ore_boxdm.dm
+++ b/code/modules/mining/satchel_ore_boxdm.dm
@@ -11,7 +11,8 @@
/obj/structure/ore_box/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if (istype(W, /obj/item/weapon/ore))
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
if (istype(W, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = W
diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm
index 95838e1b90d..ffb73ef359f 100644
--- a/code/modules/mob/living/carbon/brain/MMI.dm
+++ b/code/modules/mob/living/carbon/brain/MMI.dm
@@ -41,6 +41,8 @@
user << "You aren't sure where this brain came from, but you're pretty sure it's a useless brain!"
return
+ if(!user.unEquip(src))
+ return
var/mob/living/carbon/brain/B = newbrain.brainmob
if(!B.key)
var/mob/dead/observer/ghost = B.get_ghost()
@@ -58,7 +60,6 @@
dead_mob_list -= brainmob //Update dem lists
living_mob_list += brainmob
- user.drop_item()
newbrain.loc = src //P-put your brain in it
brain = newbrain
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index a35b0988bca..e37ac76c526 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -450,7 +450,8 @@
else if(cell)
user << "There is a power cell already installed!"
else
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
cell = W
user << "You insert the power cell."
@@ -525,27 +526,29 @@
else if(istype(W, /obj/item/borg/upgrade/))
var/obj/item/borg/upgrade/U = W
if(!opened)
- usr << "You must access the borgs internals!"
+ user << "You must access the borgs internals!"
else if(!src.module && U.require_module)
- usr << "The borg must choose a module before it can be upgraded!"
+ user << "The borg must choose a module before it can be upgraded!"
else if(U.locked)
- usr << "The upgrade is locked and cannot be used yet!"
+ user << "The upgrade is locked and cannot be used yet!"
else
+ if(!user.drop_item())
+ return
if(U.action(src))
- usr << "You apply the upgrade to [src]."
- usr.drop_item()
+ user << "You apply the upgrade to [src]."
U.loc = src
else
- usr << "Upgrade error."
+ user << "Upgrade error."
else if(istype(W, /obj/item/device/toner))
if(toner >= tonermax)
- usr << "The toner level of [src] is at it's highest level possible!"
+ user << "The toner level of [src] is at it's highest level possible!"
else
+ if(!user.drop_item())
+ return
toner = 40
- usr.drop_item()
qdel(W)
- usr << "You fill the toner level of [src] to its max capacity."
+ user << "You fill the toner level of [src] to its max capacity."
else
if(W.force && W.damtype != STAMINA) //only sparks if real damage is dealt.
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index ac8e32ecf63..8ae11c8f83c 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -28,7 +28,8 @@
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/paper))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
toppaper = W
user << "You clip the paper onto \the [src]."
@@ -76,7 +77,8 @@
if(!haspen)
if(istype(usr.get_active_hand(), /obj/item/weapon/pen))
var/obj/item/weapon/pen/W = usr.get_active_hand()
- usr.drop_item()
+ if(!usr.unEquip(W))
+ return
W.loc = src
haspen = W
usr << "You slot [W] into [src]."
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 351443ec5bb..4d071708fb3 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -43,8 +43,9 @@
/obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params)
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/documents))
+ if(!user.drop_item())
+ return
user << "You put [P] in [src]."
- user.drop_item()
P.loc = src
icon_state = "[initial(icon_state)]-open"
sleep(5)
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index b75140b9c43..6f725e04187 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -31,7 +31,8 @@
/obj/item/weapon/folder/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/documents))
- user.drop_item()
+ if(!user.unEquip(W))
+ return
W.loc = src
user << "You put [W] into [src]."
update_icon()
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 96c8f83e2b0..bd947c4b7a3 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -55,8 +55,9 @@
/obj/item/weapon/hand_labeler/attackby(obj/item/I as obj, mob/user as mob, params)
..()
if(istype(I, /obj/item/hand_labeler_refill))
+ if(!user.unEquip(I))
+ return
user << "You insert [I] into [src]."
- user.drop_item()
qdel(I)
labels_left = initial(labels_left)
return
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index fbad5ce1f85..dd672a6d11c 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -71,7 +71,8 @@
if(!istype(i))
return ..()
- user.drop_item()
+ if(!user.unEquip(i))
+ return
i.loc = src
user << "You put [i] in [src]."
papers.Add(i)
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 0554c0ab656..d5efcbe8dd4 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -96,19 +96,25 @@
if(M.client)
M.mind_initialize() //give them a mind datum if they don't have one.
if(user.mind in ticker.mode.A_bosses)
- if(ticker.mode.add_gangster(M.mind,"A"))
- M.Paralyse(5)
- cooldown(max(0,ticker.mode.B_gang.len - ticker.mode.A_gang.len))
- else
- user << "This mind is resistant to recruitment!"
+ var/recruitable = ticker.mode.add_gangster(M.mind,"A")
+ switch(recruitable)
+ if(2)
+ M.Paralyse(5)
+ cooldown(max(0,ticker.mode.B_gang.len - ticker.mode.A_gang.len))
+ if(1)
+ user << "This mind has already been recruited by another gang!"
+ else
+ user << "This mind is resistant to recruitment!"
else if(user.mind in ticker.mode.B_bosses)
- if(ticker.mode.add_gangster(M.mind,"B"))
- M.Paralyse(5)
- cooldown(max(0,ticker.mode.A_gang.len - ticker.mode.B_gang.len))
- else
- user << "This mind is resistant to recruitment!"
- else
- user << "This mind is so vacant that it is not susceptible to influence!"
+ var/recruitable = ticker.mode.add_gangster(M.mind,"B")
+ switch(recruitable)
+ if(2)
+ M.Paralyse(5)
+ cooldown(max(0,ticker.mode.A_gang.len - ticker.mode.B_gang.len))
+ if(1)
+ user << "This mind has already been recruited by another gang!"
+ else
+ user << "This mind is resistant to recruitment!"
/obj/item/weapon/pen/gang/proc/cooldown(modifier)
cooldown = 1
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 92f82705db9..35e87edada7 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -223,7 +223,8 @@
/obj/machinery/photocopier/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/weapon/paper))
if(copier_empty())
- user.drop_item()
+ if(!user.drop_item())
+ return
copy = O
O.loc = src
user << "You insert [O] into [src]."
@@ -234,7 +235,8 @@
else if(istype(O, /obj/item/weapon/photo))
if(copier_empty())
- user.drop_item()
+ if(!user.drop_item())
+ return
photocopy = O
O.loc = src
user << "You insert [O] into [src]."
@@ -245,7 +247,8 @@
else if(istype(O, /obj/item/device/toner))
if(toner <= 0)
- user.drop_item()
+ if(!user.drop_item())
+ return
qdel(O)
toner = 40
user << "You insert [O] into [src]."
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index 378ec945f85..0832ab226f3 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -140,8 +140,9 @@
if(pictures_left)
user << "[src] still has some film in it!"
return
+ if(!user.unEquip(I))
+ return
user << "You insert [I] into [src]."
- user.drop_item()
qdel(I)
pictures_left = pictures_max
return
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 7ddb67eefeb..c57cd9b9875 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -413,7 +413,8 @@
if (stat & MAINT)
user << "There is no connector for your power cell!"
return
- user.drop_item()
+ if(!user.drop_item())
+ return
W.loc = src
cell = W
user.visible_message(\
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 00eb9f8c827..3608dde2b80 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -347,6 +347,8 @@
src.add_fingerprint(user)
var/obj/item/weapon/light/L = W
if(istype(L, light_type))
+ if(!user.drop_item())
+ return
status = L.status
user << "You insert the [L.name]."
switchcount = L.switchcount
@@ -355,7 +357,6 @@
on = has_power()
update()
- user.drop_item() //drop the item to update overlays and such
qdel(L)
if(on && rigged)
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 3202414ffb7..82c2955ad09 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -64,7 +64,8 @@ var/global/list/rad_collectors = list()
if(src.P)
user << "There's already a plasma tank loaded!"
return 1
- user.drop_item()
+ if(!user.drop_item())
+ return 1
src.P = W
W.loc = src
update_icons()
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 1c8838e4311..38bf1d6c869 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -253,8 +253,9 @@
if(!tracker)
if(istype(W, /obj/item/weapon/tracker_electronics))
+ if(!user.drop_item())
+ return
tracker = 1
- user.drop_item()
qdel(W)
user.visible_message("[user] inserts the electronics into the solar assembly.", "You insert the electronics into the solar assembly.")
return 1
diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
index 3e363056825..d89eea7c8fa 100644
--- a/code/modules/projectiles/ammunition/ammo_casings.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -232,7 +232,8 @@
desc = "Its nerf or nothing! ... Although, this one doesn't look too safe."
user << "You pop the safety cap off of [src]."
else if ((istype(A, /obj/item/weapon/pen)) && modified && !BB.contents.len)
- user.drop_item()
+ if(!user.unEquip(A))
+ return
A.loc = BB
BB.damage = 5
BB.nodamage = 0
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index 342f7234c62..22965e03d98 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -134,6 +134,17 @@
..()
icon_state = "45-[ammo_count() ? "8" : "0"]"
+/obj/item/ammo_box/magazine/uzim9mm
+ name = "uzi magazine (9mm)"
+ icon_state = "uzi9mm-32"
+ ammo_type = /obj/item/ammo_casing/c9mm
+ caliber = "9mm"
+ max_ammo = 32
+
+/obj/item/ammo_box/magazine/uzim9mm/update_icon()
+ ..()
+ icon_state = "uzi9mm-[round(ammo_count(),4)]"
+
/obj/item/ammo_box/magazine/smgm9mm
name = "SMG magazine (9mm)"
icon_state = "smg9mm-20"
@@ -157,11 +168,11 @@
..()
icon_state = "c20r45-[round(ammo_count(),2)]"
-obj/item/ammo_box/magazine/tommygunm9mm
- name = "drum magazine (9mm)"
+obj/item/ammo_box/magazine/tommygunm45
+ name = "drum magazine (.45)"
icon_state = "drum45"
- ammo_type = /obj/item/ammo_casing/c9mm
- caliber = "9mm"
+ ammo_type = /obj/item/ammo_casing/c45
+ caliber = ".45"
max_ammo = 50
/obj/item/ammo_box/magazine/m50
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 9b1666fd2f0..dd9c381e2d6 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -98,8 +98,8 @@
if(heavy_weapon)
if(user.get_inactive_hand())
if(prob(15))
- user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!")
- user.drop_item()
+ if(user.drop_item())
+ user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!")
/obj/item/weapon/gun/emp_act(severity)
for(var/obj/O in contents)
@@ -235,7 +235,8 @@
if(user.l_hand != src && user.r_hand != src)
user << "You'll need [src] in your hands to do that!"
return
- user.drop_item()
+ if(!user.unEquip(A))
+ return
user << "You click [S] into place on [src]."
if(S.on)
SetLuminosity(0)
diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm
index 9ae8b1e8c6f..2075ebeaa60 100644
--- a/code/modules/projectiles/guns/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/grenade_launcher.dm
@@ -20,7 +20,8 @@
if((istype(I, /obj/item/weapon/grenade)))
if(grenades.len < max_grenades)
- user.drop_item()
+ if(!user.unEquip(I))
+ return
I.loc = src
grenades += I
user << "You put the grenade in the grenade launcher."
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 66184119b45..7bea46b2f96 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -68,7 +68,8 @@
if(user.l_hand != src && user.r_hand != src)
user << "You'll need [src] in your hands to do that."
return
- user.drop_item()
+ if(!user.unEquip(A))
+ return
user << "You screw [S] onto [src]."
suppressed = A
S.oldsound = fire_sound
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index badf178b878..19545232181 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -106,7 +106,13 @@
icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
return
-
+/obj/item/weapon/gun/projectile/automatic/mini_uzi
+ name = "uzi"
+ desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds."
+ icon_state = "mini-uzi"
+ origin_tech = "combat=5;materials=2;syndicate=8"
+ mag_type = /obj/item/ammo_box/magazine/uzim9mm
+ burst_size = 2
/obj/item/weapon/gun/projectile/automatic/l6_saw
name = "syndicate LMG"
@@ -237,7 +243,7 @@
w_class = 5
slot_flags = 0
origin_tech = "combat=5;materials=1;syndicate=2"
- mag_type = /obj/item/ammo_box/magazine/tommygunm9mm
+ mag_type = /obj/item/ammo_box/magazine/tommygunm45
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
can_suppress = 0
burst_size = 4
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 7178c36469f..9e1dc22e592 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -79,7 +79,7 @@
playsound(user, fire_sound, 50, 1)
user << "[src] blows up in your face!"
user.take_organ_damage(0,20)
- user.drop_item()
+ user.unEquip(src)
qdel(src)
return 0
..()
diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm
index f0a17314848..6ed12b01b64 100644
--- a/code/modules/projectiles/guns/syringe_gun.dm
+++ b/code/modules/projectiles/guns/syringe_gun.dm
@@ -63,7 +63,8 @@
/obj/item/weapon/gun/syringe/attackby(var/obj/item/A as obj, mob/user as mob, params, var/show_msg = 1)
if(istype(A, /obj/item/weapon/reagent_containers/syringe))
if(syringes.len < max_syringes)
- user.drop_item()
+ if(!user.unEquip(A))
+ return
user << "You load [A] into \the [src]."
syringes.Add(A)
A.loc = src
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index acc5f311420..123e35a2fd8 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -30,7 +30,8 @@
user << "You remove [G]'s old pin."
if(!G.pin)
- user.drop_item()
+ if(!user.unEquip(src))
+ return
gun_insert(user, G)
user << "You insert [src] into [G]."
else
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 3dab9a3442a..0fbb8ee12b3 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -155,9 +155,10 @@
if(src.beaker)
user << "A beaker is already loaded into the machine!"
return
+ if(!user.drop_item())
+ return
src.beaker = B
- user.drop_item()
B.loc = src
user << "You add the beaker to the machine."
SSnano.update_uis(src) // update all UIs attached to src
@@ -290,8 +291,10 @@
if(src.beaker)
user << "A beaker is already loaded into the machine!"
return
+ if(!user.drop_item())
+ return
+
src.beaker = B
- user.drop_item()
B.loc = src
user << "You add the beaker to the machine."
src.updateUsrDialog()
@@ -301,8 +304,10 @@
if(src.loaded_pill_bottle)
user << "A pill bottle is already loaded into the machine!"
return
+ if(!user.drop_item())
+ return
+
src.loaded_pill_bottle = B
- user.drop_item()
B.loc = src
user << "You add the pill bottle into the dispenser slot."
src.updateUsrDialog()
@@ -619,8 +624,10 @@
if(src.beaker)
user << "A beaker is already loaded into the machine!"
return
+ if(!user.drop_item())
+ return
+
src.beaker = B
- user.drop_item()
B.loc = src
user << "You add the beaker to the machine."
src.updateUsrDialog()
@@ -630,8 +637,10 @@
if(src.loaded_pill_bottle)
user << "A pill bottle is already loaded into the machine!"
return
+ if(!user.drop_item())
+ return
+
src.loaded_pill_bottle = B
- user.drop_item()
B.loc = src
user << "You add the pill bottle into the dispenser slot."
src.updateUsrDialog()
@@ -919,9 +928,10 @@
if(src.beaker)
user << "A beaker is already loaded into the machine!"
return
+ if(!user.drop_item())
+ return
src.beaker = I
- user.drop_item()
I.loc = src
user << "You add the beaker to the machine."
src.updateUsrDialog()
@@ -1053,8 +1063,9 @@
if (beaker)
return 1
else
+ if(!user.drop_item())
+ return 1
src.beaker = O
- user.drop_item()
O.loc = src
update_icon()
src.updateUsrDialog()
@@ -1548,8 +1559,9 @@
if (beaker)
return 1
else
+ if(!user.drop_item())
+ return 1
src.beaker = O
- user.drop_item()
O.loc = src
update_icon()
src.updateUsrDialog()
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 4ef5f0d72ed..553f6c9cfbc 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -157,7 +157,8 @@
/obj/structure/reagent_dispensers/water_cooler/attackby(var/obj/item/I, var/mob/user, params)
if(istype(I, /obj/item/weapon/paper))
- user.drop_item()
+ if(!user.drop_item())
+ return
qdel(I)
cups++
return
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index d3fa4a658a6..74f51bf24e2 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -123,9 +123,9 @@
stuff_mob_in(G.affecting, user)
return
- if(!I || I.flags & NODROP) return
+ if(!user.drop_item())
+ return
- user.drop_item()
I.loc = src
user.visible_message("[user.name] places \the [I] into \the [src].", \
"You place \the [I] into \the [src].")
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index be722fe8fb0..9663bf9b2cd 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -152,9 +152,10 @@
if(O.reliability < 90 && O.crit_fail == 0)
usr << "Item is neither reliable enough or broken enough to learn from."
return
+ if(!user.drop_item())
+ return
busy = 1
loaded_item = O
- user.drop_item()
O.loc = src
user << "You add the [O.name] to the machine."
flick("h_lathe_load", src)
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 3182c0156d0..a194ed5327f 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -157,7 +157,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
else
user << "Machine cannot accept disks in that format."
return
- user.drop_item()
+ if(!user.drop_item())
+ return
D.loc = src
user << "You add the disk to the machine!"
else
diff --git a/code/modules/surgery/cybernetic_implants.dm b/code/modules/surgery/cybernetic_implants.dm
index 3f4dcb5210c..ced4776f535 100644
--- a/code/modules/surgery/cybernetic_implants.dm
+++ b/code/modules/surgery/cybernetic_implants.dm
@@ -70,9 +70,10 @@
if(full)
user << "You can't seem to implant anything else into the [target]'s [target_zone]!"
else
+ if(!user.drop_item())
+ return
user.visible_message("[user] inserts [implant] into the [target]'s [target_zone == "head" ? "brain" : target_zone]!", "You insert [implant] into the [target]'s [target_zone == "head" ? "brain" : target_zone].")
implant.owner = target
implant.function()
- user.drop_item()
target.internal_organs |= implant
implant.loc = target
\ No newline at end of file
diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm
index 950c4a536b0..22d168044c0 100644
--- a/code/modules/surgery/limb augmentation.dm
+++ b/code/modules/surgery/limb augmentation.dm
@@ -71,6 +71,8 @@
user << "That is the wrong robotic limb for this body part."
return 0
+ if(!user.drop_item())
+ return 0
var/mob/living/carbon/human/H = target
user.visible_message("[user] successfully augments [target]'s [parse_zone(target_zone)]!", "You successfully augment [target]'s [parse_zone(target_zone)].")
L.loc = get_turf(target)
@@ -92,7 +94,6 @@
H.organs += new /obj/item/organ/limb/robot/chest(src)
for(var/datum/disease/appendicitis/A in H.viruses) //If they already have Appendicitis, Remove it
A.cure(1)
- user.drop_item()
qdel(tool)
H.update_damage_overlays(0)
H.update_augments() //Gives them the Cyber limb overlay
diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm
index c006939d876..74b9807dade 100644
--- a/code/modules/telesci/bscrystal.dm
+++ b/code/modules/telesci/bscrystal.dm
@@ -21,7 +21,7 @@
PoolOrNew(/obj/effect/effect/sparks, loc)
playsound(src.loc, "sparks", 50, 1)
blink_mob(user)
- user.drop_item()
+ user.unEquip(src)
qdel(src)
/obj/item/bluespace_crystal/proc/blink_mob(var/mob/living/L)
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index aa0343a1641..0450b8109c1 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -58,7 +58,8 @@
if(crystals.len >= max_crystals)
user << "There are not enough crystal slots."
return
- user.drop_item()
+ if(!user.drop_item())
+ return
crystals += W
W.loc = null
user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.", "You insert [W] into \the [src]'s crystal slot.")
diff --git a/html/changelog.html b/html/changelog.html
index 6845a7e00f6..457de93df40 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,31 @@
-->