From afc368e66c5a7f73e661960081494dd72bcc1615 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sat, 13 Jun 2015 01:31:53 -0400 Subject: [PATCH 01/12] Adds some basic scaling, ~10% of crew, to shadowlings. --- code/game/gamemodes/shadowling/shadowling.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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) From b2e84a0d3c6210032af28a4b1c21eb324b93b393 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Sun, 14 Jun 2015 20:11:40 +0100 Subject: [PATCH 02/12] Put drop_item() calls inside ifs. Replaced some drop_item() with unEquip( --- code/datums/wires/wires.dm | 3 +- code/game/dna.dm | 3 +- .../abduction/machinery/dispenser.dm | 3 +- code/game/machinery/PDApainter.dm | 3 +- code/game/machinery/alarm.dm | 2 +- .../atmoalter/portable_atmospherics.dm | 4 ++- code/game/machinery/bots/cleanbot.dm | 3 +- code/game/machinery/bots/ed209bot.dm | 18 ++++++++---- code/game/machinery/bots/medbot.dm | 9 ++++-- code/game/machinery/bots/mulebot.dm | 6 ++-- code/game/machinery/bots/secbot.dm | 9 ++++-- code/game/machinery/camera/camera_assembly.dm | 3 +- code/game/machinery/cell_charger.dm | 3 +- .../game/machinery/computer/buildandrepair.dm | 3 +- code/game/machinery/computer/card.dm | 15 ++++++---- code/game/machinery/computer/cloning.dm | 3 +- code/game/machinery/computer/medical.dm | 8 ++++-- code/game/machinery/computer/prisoner.dm | 3 +- code/game/machinery/computer/security.dm | 8 ++++-- .../machinery/computer/telecrystalconsoles.dm | 3 +- code/game/machinery/constructable_frame.dm | 6 ++-- code/game/machinery/cryo.dm | 3 +- code/game/machinery/flasher.dm | 3 +- code/game/machinery/iv_drip.dm | 3 +- code/game/machinery/newscaster.dm | 3 +- code/game/machinery/pipe/pipe_dispenser.dm | 3 +- code/game/machinery/recharger.dm | 3 +- code/game/machinery/slotmachine.dm | 6 ++-- code/game/machinery/spaceheater.dm | 6 ++-- code/game/machinery/syndicatebomb.dm | 3 +- .../telecomms/computers/traffic_control.dm | 3 +- code/game/machinery/vending.dm | 6 ++-- code/game/machinery/washing_machine.dm | 6 ++-- code/game/mecha/mecha.dm | 6 ++-- code/game/objects/items.dm | 4 +-- code/game/objects/items/devices/camera_bug.dm | 3 +- .../objects/items/devices/laserpointer.dm | 3 +- .../objects/items/devices/lightreplacer.dm | 3 +- .../objects/items/devices/radio/headset.dm | 6 ++-- .../game/objects/items/devices/radio/radio.dm | 3 +- .../objects/items/devices/taperecorder.dm | 3 +- .../objects/items/devices/transfer_valve.dm | 6 ++-- code/game/objects/items/robot/robot_parts.dm | 27 ++++++++++++------ code/game/objects/items/weapons/RCD.dm | 3 +- .../objects/items/weapons/airlock_painter.dm | 3 +- code/game/objects/items/weapons/defib.dm | 3 +- code/game/objects/items/weapons/explosives.dm | 3 +- .../objects/items/weapons/flamethrower.dm | 6 ++-- .../items/weapons/grenades/chem_grenade.dm | 9 ++++-- code/game/objects/items/weapons/handcuffs.dm | 3 +- .../items/weapons/implants/implantpad.dm | 3 +- code/game/objects/items/weapons/paiwire.dm | 3 +- .../objects/items/weapons/pneumaticCannon.dm | 6 ++-- code/game/objects/items/weapons/stunbaton.dm | 3 +- code/game/objects/structures/ai_core.dm | 7 +++-- code/game/objects/structures/bedsheet_bin.dm | 3 +- .../objects/structures/crates_lockers/bins.dm | 3 +- .../crates_lockers/closets/fireaxe.dm | 3 +- .../structures/crates_lockers/crates.dm | 3 +- code/game/objects/structures/door_assembly.dm | 3 +- code/game/objects/structures/extinguisher.dm | 3 +- code/game/objects/structures/girders.dm | 3 +- code/game/objects/structures/guncase.dm | 3 +- code/game/objects/structures/janicart.dm | 6 ++-- code/game/objects/structures/noticeboard.dm | 3 +- .../structures/stool_bed_chair_nest/chairs.dm | 3 +- code/game/objects/structures/tables_racks.dm | 3 +- .../game/objects/structures/tank_dispenser.dm | 6 ++-- code/game/objects/structures/target_stake.dm | 3 +- .../objects/structures/windoor_assembly.dm | 3 +- .../game/turfs/simulated/floor/light_floor.dm | 3 +- code/modules/assembly/bomb.dm | 3 +- code/modules/clothing/clothing.dm | 3 +- code/modules/clothing/head/helmet.dm | 6 ++-- .../modules/food&drinks/food/customizables.dm | 3 +- .../kitchen machinery/food_cart.dm | 6 ++-- .../kitchen machinery/monkeyrecycler.dm | 3 +- code/modules/hydroponics/grown.dm | 2 +- code/modules/library/lib_items.dm | 3 +- code/modules/library/lib_machines.dm | 6 ++-- code/modules/mining/equipment_locker.dm | 12 +++++--- code/modules/mining/laborcamp/laborstacker.dm | 3 +- code/modules/mining/money_bag.dm | 3 +- code/modules/mining/satchel_ore_boxdm.dm | 3 +- code/modules/mob/living/carbon/brain/MMI.dm | 3 +- .../modules/mob/living/silicon/robot/robot.dm | 23 ++++++++------- code/modules/paperwork/clipboard.dm | 6 ++-- code/modules/paperwork/filingcabinet.dm | 3 +- code/modules/paperwork/folders.dm | 3 +- code/modules/paperwork/handlabeler.dm | 3 +- code/modules/paperwork/paperbin.dm | 3 +- code/modules/paperwork/photocopier.dm | 9 ++++-- code/modules/paperwork/photography.dm | 3 +- code/modules/power/apc.dm | 3 +- code/modules/power/lighting.dm | 3 +- code/modules/power/singularity/collector.dm | 3 +- code/modules/power/solar.dm | 3 +- .../projectiles/ammunition/ammo_casings.dm | 3 +- code/modules/projectiles/gun.dm | 7 +++-- .../projectiles/guns/grenade_launcher.dm | 3 +- code/modules/projectiles/guns/projectile.dm | 3 +- .../projectiles/guns/projectile/revolver.dm | 2 +- code/modules/projectiles/guns/syringe_gun.dm | 3 +- code/modules/projectiles/pins.dm | 3 +- code/modules/reagents/Chemistry-Machinery.dm | 28 +++++++++++++------ code/modules/reagents/reagent_dispenser.dm | 3 +- code/modules/recycling/disposal.dm | 4 +-- code/modules/research/experimentor.dm | 3 +- code/modules/research/rdconsole.dm | 3 +- code/modules/surgery/cybernetic_implants.dm | 3 +- code/modules/surgery/limb augmentation.dm | 3 +- code/modules/telesci/bscrystal.dm | 2 +- code/modules/telesci/telesci_computer.dm | 3 +- 113 files changed, 350 insertions(+), 186 deletions(-) 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 7645552a3b8..bc2e4db2244 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -518,7 +518,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/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..1c5d7e3a0a9 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -738,7 +738,7 @@ user << "You insert the circuit." buildstage = 1 update_icon() - user.drop_item() + user.unEquip(W) qdel(W) return 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..a3269800aee 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]." @@ -572,7 +573,8 @@ Auto Patrol[]"}, else if(istype(W, /obj/item/clothing/suit/bluetag)) lasercolor = "b" if(lasercolor || istype(W, /obj/item/clothing/suit/armor/vest)) - user.drop_item() + if(!user.unEquip(W)) + return qdel(W) build_step++ user << "You add the armor to [src]." @@ -601,7 +603,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 +614,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]." @@ -649,11 +653,12 @@ Auto Patrol[]"}, name = "taser ED-209 assembly" else return + if(!user.unEquip(W)) + return 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 +674,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 843cd92cc57..d4aaa380e8e 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 d45db2442fe..6e0a51839f5 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 be509355564..080a7517802 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -336,11 +336,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 7c682ce9607..b8c91e2ab87 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -48,16 +48,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 @@ -311,7 +314,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 @@ -324,7 +328,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 68e5b03f423..2958fff5910 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 ef0345be0e5..28ff4f73765 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 ef936af78b5..55f6799f14f 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 5c3e80e238d..da70f5b285a 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 0bc33615834..c5d49ba9f7d 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 a2d76e96a5a..43820a99b5e 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 a098fc0bf08..92e07a0f3c8 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 07ea6047cde..052497752ac 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/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 801e2f82332..31dc4e41f6f 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) @@ -150,11 +151,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 41786c4b092..e8d7724814e 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 dcffa3e0891..3b3d18c6210 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 ae08ac4b5ce..b509c744000 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -234,7 +234,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 16e472094d2..7dd577b5f82 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..d8f50e8a2eb 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -61,7 +61,8 @@ if (istype(W, /obj/item/weapon/coin)) var/obj/item/weapon/coin/C = W user << "You add the [C.name] into the bag." - usr.drop_item() + if(!user.drop_item()) + return 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 c016f818fbd..cf03d9a5176 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(U.action(src)) - usr << "You apply the upgrade to [src]." - usr.drop_item() + if(!user.drop_item()) + return + 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..c0492b8207c 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -44,7 +44,8 @@ /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)) user << "You put [P] in [src]." - user.drop_item() + if(!user.drop_item()) + return 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..a24db48e8f1 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -56,7 +56,8 @@ ..() if(istype(I, /obj/item/hand_labeler_refill)) user << "You insert [I] into [src]." - user.drop_item() + if(!user.unEquip(I)) + return 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/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 de17516ede9..c1e7e5bf243 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 48f4b74cd9c..17bfe9554f2 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -233,7 +233,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/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/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 471b5401196..17ff72ac5c1 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 2fb641d6c56..e30ae48c7bd 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 c17ab572aca..fb6fce7df5f 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 23f0a5f48c8..fd6202edf48 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 6d602467fa1..01cb11b5cb6 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.") From 5fe8c0ba4d94677fba46fa96ffa523a7d77fac8d Mon Sep 17 00:00:00 2001 From: xxalpha Date: Mon, 15 Jun 2015 19:13:25 +0100 Subject: [PATCH 03/12] Ifed an unEquip --- code/game/machinery/alarm.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 1c5d7e3a0a9..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.unEquip(W) - 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)) From 210cc17d5ce4d491709ac54a56a420d8f11b735f Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Mon, 15 Jun 2015 21:39:21 -0600 Subject: [PATCH 04/12] Loyalty Implants and Gang Mode Security treating gangs like revs has had a very negative impact on the experience of gang rounds. With an easy and convenient deconversion method, gangs are easily stomped as they rapidly run out of members to convert. So I'm going to try something different and see how things go if implants in gang mode acted as they are in cult. - Implants can still prevent conversion, but can no longer deconvert or identify gangsters - If a recruitment pen fails, the error message the gang boss receives will distinct loyalty implanted individuals from enemy gangsters. --- code/game/gamemodes/gang/gang.dm | 4 +-- .../objects/items/weapons/implants/implant.dm | 10 +++---- code/modules/paperwork/pen.dm | 30 +++++++++++-------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 2b448e0b833..77bc23d5e46 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -258,7 +258,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 @@ -275,7 +275,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/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/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 9159c1a6e6a..d784411d6e0 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -93,19 +93,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 From bd14e72dcaadbf83d691d1095ca2532c5ddc41f6 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Mon, 15 Jun 2015 22:11:15 -0600 Subject: [PATCH 05/12] - Fixed a bug where announcements were being made for destroying dominators that haven't been turned on - Added a changelog --- code/game/gamemodes/gang/dominator.dm | 3 +- html/changelogs/Ikarrus-gangimplants.yml | 36 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 html/changelogs/Ikarrus-gangimplants.yml diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index 0bb8c7b21de..eb92b465a43 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -77,7 +77,7 @@ mode.A_timer = "OFFLINE" if(gang == "B") mode.B_timer = "OFFLINE" - if(!isnum(mode.A_timer) && !isnum(mode.B_timer)) + if(gang && !isnum(mode.A_timer) && !isnum(mode.B_timer)) SSshuttle.emergencyNoEscape = 0 if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED @@ -85,7 +85,6 @@ 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(gang) 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/html/changelogs/Ikarrus-gangimplants.yml b/html/changelogs/Ikarrus-gangimplants.yml new file mode 100644 index 00000000000..729e8edffb7 --- /dev/null +++ b/html/changelogs/Ikarrus-gangimplants.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: Ikarrus + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscdel: "Loyalty implants now treat gangs as it treats cultis. Implants can no longer deconvert gangsters, but it can still prevent recruitments." \ No newline at end of file From 8ebdcd91267fb8ddae82d5573d325c32b00bf546 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Mon, 15 Jun 2015 23:29:37 -0600 Subject: [PATCH 06/12] Removed tommy guns from gang --- code/game/gamemodes/gang/recaller.dm | 10 ---------- html/changelogs/Ikarrus-gangimplants.yml | 3 ++- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index b081a80686e..01c5b87d865 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -82,12 +82,6 @@ else dat += "10mm Ammo
" - dat += "(50 Influence) " - if(points >= 50) - dat += "Thompson SMG
" - else - dat += "Thompson SMG
" - dat += "
" dat += "Purchase Utilities:
" @@ -167,10 +161,6 @@ 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("vest") if(points >= 10) item_type = /obj/item/clothing/suit/armor/bulletproof diff --git a/html/changelogs/Ikarrus-gangimplants.yml b/html/changelogs/Ikarrus-gangimplants.yml index 729e8edffb7..4d1954d381c 100644 --- a/html/changelogs/Ikarrus-gangimplants.yml +++ b/html/changelogs/Ikarrus-gangimplants.yml @@ -33,4 +33,5 @@ delete-after: True # Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. # Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. changes: - - rscdel: "Loyalty implants now treat gangs as it treats cultis. Implants can no longer deconvert gangsters, but it can still prevent recruitments." \ No newline at end of file + - rscdel: "Loyalty implants now treat gangs as it treats cultis. Implants can no longer deconvert gangsters, but it can still prevent recruitments." + - rscdel: "Removed tommy guns from gang mode." \ No newline at end of file From 0b643da232775606f02414bafe41684da9a9f811 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Mon, 15 Jun 2015 23:46:29 -0600 Subject: [PATCH 07/12] Re-organizes recaller purchase menu --- code/game/gamemodes/gang/recaller.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 01c5b87d865..51fdc8da932 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -62,7 +62,7 @@ dat += "Influence: [points]
" dat += "Time until Influence grows: [(points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
" dat += "
" - dat += "Purchase Weapons:
" + dat += "Purchase Combat Equipment:
" dat += "(10 Influence) " if(points >= 10) @@ -82,8 +82,14 @@ else dat += "10mm Ammo
" + dat += "(10 Influence) " + if(points >= 10) + dat += "Bulletproof Vest
" + else + dat += "Bulletproof Vest
" + dat += "
" - dat += "Purchase Utilities:
" + dat += "Purchase Support Equipment:
" dat += "(5 Influence) " if(points >= 5) @@ -91,12 +97,6 @@ else dat += "Territory Spraycan
" - dat += "(10 Influence) " - if(points >= 10) - dat += "Bulletproof Vest
" - else - dat += "Bulletproof Vest
" - dat += "(30 Influence) " if(points >= 30) dat += "Recruitment Pen
" From 0d69975c68af0b14d72809cd25c2fd4e0b6b7af2 Mon Sep 17 00:00:00 2001 From: Orange Borg Date: Wed, 17 Jun 2015 09:38:24 +1200 Subject: [PATCH 08/12] Shut the goddamn bots the hell up Please god merge this --- bot/NanoTrasenBot.py | 10 ---------- 1 file changed, 10 deletions(-) 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: From 556b25aec3ef663892790b8e68a54d8141c0aaaf Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Wed, 17 Jun 2015 09:36:15 -0600 Subject: [PATCH 09/12] Added 9mm 2-burst 32 mag uzis that costs 40 influence. Unlike tommy guns gangs will be able to purchase ammo for uzis. --- code/game/gamemodes/gang/recaller.dm | 36 ++++++++++++++---- .../projectiles/ammunition/magazines.dm | 19 +++++++-- .../projectiles/guns/projectile/automatic.dm | 10 ++++- html/changelogs/Ikarrus-gangimplants.yml | 2 +- icons/obj/ammo.dmi | Bin 16560 -> 17253 bytes icons/obj/guns/projectile.dmi | Bin 21255 -> 23529 bytes 6 files changed, 52 insertions(+), 15 deletions(-) diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 51fdc8da932..2764cb533e0 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -62,7 +62,7 @@ dat += "Influence: [points]
" dat += "Time until Influence grows: [(points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
" dat += "
" - dat += "Purchase Combat Equipment:
" + dat += "Purchase Weapons:
" dat += "(10 Influence) " if(points >= 10) @@ -78,18 +78,24 @@ dat += "(10 Influence) " if(points >= 10) - dat += "10mm Ammo
" + dat += "10mm Ammo
" else dat += "10mm Ammo
" - dat += "(10 Influence) " - if(points >= 10) - dat += "Bulletproof Vest
" + dat += "(40 Influence) " + if(points >= 40) + dat += "Mini Uzi
" else - dat += "Bulletproof Vest
" + dat += "Mini Uzi
" + + dat += "(30 Influence) " + if(points >= 30) + dat += "Uzi Ammo
" + else + dat += "Uzi Magazine
" dat += "
" - dat += "Purchase Support Equipment:
" + dat += "Purchase Equipment:
" dat += "(5 Influence) " if(points >= 5) @@ -97,6 +103,12 @@ else dat += "Territory Spraycan
" + dat += "(10 Influence) " + if(points >= 10) + dat += "Bulletproof Vest
" + else + dat += "Bulletproof Vest
" + dat += "(30 Influence) " if(points >= 30) dat += "Recruitment Pen
" @@ -157,10 +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("uzi") + if(points >= 40) + item_type = /obj/item/weapon/gun/projectile/automatic/mini_uzi + points = 40 + if("9mmammo") + if(points >= 30) + item_type = /obj/item/ammo_box/magazine/uzim9mm + points = 30 if("vest") if(points >= 10) item_type = /obj/item/clothing/suit/armor/bulletproof diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 342f7234c62..6de3faee410 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/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index badf178b878..c905430fb61 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/html/changelogs/Ikarrus-gangimplants.yml b/html/changelogs/Ikarrus-gangimplants.yml index 4d1954d381c..000f9bd487f 100644 --- a/html/changelogs/Ikarrus-gangimplants.yml +++ b/html/changelogs/Ikarrus-gangimplants.yml @@ -34,4 +34,4 @@ delete-after: True # Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. changes: - rscdel: "Loyalty implants now treat gangs as it treats cultis. Implants can no longer deconvert gangsters, but it can still prevent recruitments." - - rscdel: "Removed tommy guns from gang mode." \ No newline at end of file + - tweak: "Replaced tommy guns with 9mm 2-burst 32 mag uzis that costs 40 influence. Unlike tommy guns gangs will be able to purchase ammo for uzis." \ No newline at end of file diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 3258cb936d181abea0d7a7ee080052cd20705e01..a0f217d1887e788525fada02b6471e647dc5a3b9 100644 GIT binary patch literal 17253 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 literal 16560 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 F{{<;n^RWN` diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index c613bee4949ba84d0acae36ea483fa0a0f94a28d..26e097b66bf13b490b72980a1fa46c35c0852f9f 100644 GIT binary patch literal 23529 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 literal 21255 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 From ab103b54dc33f2899c0ebae684d5a1ec78deddf0 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Wed, 17 Jun 2015 20:56:49 +0100 Subject: [PATCH 10/12] Righted some checks. If newcolor --- code/game/machinery/bots/ed209bot.dm | 16 ++++++++++------ code/modules/mining/money_bag.dm | 2 +- code/modules/mob/living/silicon/robot/robot.dm | 4 ++-- code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/handlabeler.dm | 2 +- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index a3269800aee..ddfb3dcbcb2 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -568,13 +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)) + 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]." @@ -638,23 +640,25 @@ 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" diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index d8f50e8a2eb..e9befa30d43 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -60,9 +60,9 @@ ..() if (istype(W, /obj/item/weapon/coin)) var/obj/item/weapon/coin/C = W - user << "You add the [C.name] into the bag." if(!user.drop_item()) return + user << "You add the [C.name] into the bag." contents += C if (istype(W, /obj/item/weapon/moneybag)) var/obj/item/weapon/moneybag/C = W diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index cf03d9a5176..b12fd29f66d 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -532,9 +532,9 @@ else if(U.locked) user << "The upgrade is locked and cannot be used yet!" else + if(!user.drop_item()) + return if(U.action(src)) - if(!user.drop_item()) - return user << "You apply the upgrade to [src]." U.loc = src else diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index c0492b8207c..4d071708fb3 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -43,9 +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)) - user << "You put [P] in [src]." if(!user.drop_item()) return + user << "You put [P] in [src]." P.loc = src icon_state = "[initial(icon_state)]-open" sleep(5) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index a24db48e8f1..bd947c4b7a3 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -55,9 +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)) - user << "You insert [I] into [src]." if(!user.unEquip(I)) return + user << "You insert [I] into [src]." qdel(I) labels_left = initial(labels_left) return From fe14ff46ee147746a6e44e3094a8263907428d59 Mon Sep 17 00:00:00 2001 From: Ikarrus Date: Wed, 17 Jun 2015 19:26:02 -0600 Subject: [PATCH 11/12] - Reduced uzi ammo to 25 influence cost - Added uzis to summon guns - uncapitalized uzi names --- code/game/gamemodes/gang/recaller.dm | 8 ++++---- code/game/gamemodes/wizard/rightandwrong.dm | 4 +++- code/modules/projectiles/ammunition/magazines.dm | 2 +- code/modules/projectiles/guns/projectile/automatic.dm | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 2764cb533e0..15ef02f0c58 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -88,8 +88,8 @@ else dat += "Mini Uzi
" - dat += "(30 Influence) " - if(points >= 30) + dat += "(25 Influence) " + if(points >= 25) dat += "
Uzi Ammo
" else dat += "Uzi Magazine
" @@ -178,9 +178,9 @@ item_type = /obj/item/weapon/gun/projectile/automatic/mini_uzi points = 40 if("9mmammo") - if(points >= 30) + if(points >= 25) item_type = /obj/item/ammo_box/magazine/uzim9mm - points = 30 + points = 25 if("vest") if(points >= 10) item_type = /obj/item/clothing/suit/armor/bulletproof 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/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 6de3faee410..22965e03d98 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -135,7 +135,7 @@ icon_state = "45-[ammo_count() ? "8" : "0"]" /obj/item/ammo_box/magazine/uzim9mm - name = "Uzi magazine (9mm)" + name = "uzi magazine (9mm)" icon_state = "uzi9mm-32" ammo_type = /obj/item/ammo_casing/c9mm caliber = "9mm" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index c905430fb61..19545232181 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -107,7 +107,7 @@ return /obj/item/weapon/gun/projectile/automatic/mini_uzi - name = "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" From ebe9ff4afc2ec13b349fba093de26eaf5c5536c8 Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Thu, 18 Jun 2015 08:54:20 -0400 Subject: [PATCH 12/12] Automatic changelog compile --- html/changelog.html | 25 +++++++++++++++ html/changelogs/.all_changelog.yml | 22 +++++++++++++ html/changelogs/AnturK-pda.yml | 36 ---------------------- html/changelogs/Ikarrus-deptmanagement.yml | 36 ---------------------- html/changelogs/Miauw-AINerfTweaks.yml | 7 ----- html/changelogs/Xhuis-Superlarity.yml | 5 --- html/changelogs/phil235-XrayGunNerf.yml | 6 ---- 7 files changed, 47 insertions(+), 90 deletions(-) delete mode 100644 html/changelogs/AnturK-pda.yml delete mode 100644 html/changelogs/Ikarrus-deptmanagement.yml delete mode 100644 html/changelogs/Miauw-AINerfTweaks.yml delete mode 100644 html/changelogs/Xhuis-Superlarity.yml delete mode 100644 html/changelogs/phil235-XrayGunNerf.yml 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 @@ -->
+

18 June 2015

+

AnturK updated:

+
    +
  • Added new photo-over-pda function. Apply the photo to PDA to send it with your next message!
  • +
+

Ikarrus updated:

+
    +
  • Department Management consoles have been added to Head of Staff offices. These will enable heads to modify ID's access to their department, as well as preform demotions.
  • +
+

Miauw updated:

+
    +
  • Bullets can now damage cameras.
  • +
  • Camera alarms now trigger 90 seconds after the first EMP pulse, instead of when all EMP pulses run out.
  • +
  • Makes the force required to damage cameras greater than or equal to ten instead of greater than ten.
  • +
  • Camera alarms now trigger when cameras are disabled with brute force or bullets.
  • +
+

Xhuis updated:

+
    +
  • Nanotrasen scientists have determined that a delaminating supermatter shard combining with a gravitational singularity is an extremely bad idea. They advise keeping the two as far apart as possible.
  • +
+

phil235 updated:

+
    +
  • Nerfed the xray gun. Its range is now 15 tiles.
  • +
+

15 June 2015

Incoming5643 updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index a366f49f229..bd40cc75ed7 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -2774,3 +2774,25 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: Added a new sepia slime plasma reaction. Try it out! spasticVerbalizer: - rscfix: Drones can now properly quick-equip. +2015-06-18: + AnturK: + - rscadd: Added new photo-over-pda function. Apply the photo to PDA to send it with + your next message! + Ikarrus: + - rscadd: Department Management consoles have been added to Head of Staff offices. + These will enable heads to modify ID's access to their department, as well as + preform demotions. + Miauw: + - tweak: Bullets can now damage cameras. + - tweak: Camera alarms now trigger 90 seconds after the first EMP pulse, instead + of when all EMP pulses run out. + - tweak: Makes the force required to damage cameras greater than or equal to ten + instead of greater than ten. + - tweak: Camera alarms now trigger when cameras are disabled with brute force or + bullets. + Xhuis: + - rscadd: Nanotrasen scientists have determined that a delaminating supermatter + shard combining with a gravitational singularity is an extremely bad idea. They + advise keeping the two as far apart as possible. + phil235: + - rscdel: Nerfed the xray gun. Its range is now 15 tiles. diff --git a/html/changelogs/AnturK-pda.yml b/html/changelogs/AnturK-pda.yml deleted file mode 100644 index ea5c073af7c..00000000000 --- a/html/changelogs/AnturK-pda.yml +++ /dev/null @@ -1,36 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -# tgs (TG-ported fixes?) -################################# - -# Your name. -author: AnturK - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. -# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. -changes: - - rscadd: "Added new photo-over-pda function. Apply the photo to PDA to send it with your next message!" diff --git a/html/changelogs/Ikarrus-deptmanagement.yml b/html/changelogs/Ikarrus-deptmanagement.yml deleted file mode 100644 index 7cbd7300139..00000000000 --- a/html/changelogs/Ikarrus-deptmanagement.yml +++ /dev/null @@ -1,36 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -# tgs (TG-ported fixes?) -################################# - -# Your name. -author: Ikarrus - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. -# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. -changes: - - rscadd: "Department Management consoles have been added to Head of Staff offices. These will enable heads to modify ID's access to their department, as well as preform demotions." \ No newline at end of file diff --git a/html/changelogs/Miauw-AINerfTweaks.yml b/html/changelogs/Miauw-AINerfTweaks.yml deleted file mode 100644 index 02b290595d3..00000000000 --- a/html/changelogs/Miauw-AINerfTweaks.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Miauw -delete-after: True -changes: - - tweak: "Bullets can now damage cameras." - - tweak: "Camera alarms now trigger 90 seconds after the first EMP pulse, instead of when all EMP pulses run out." - - tweak: "Makes the force required to damage cameras greater than or equal to ten instead of greater than ten." - - tweak: "Camera alarms now trigger when cameras are disabled with brute force or bullets." \ No newline at end of file diff --git a/html/changelogs/Xhuis-Superlarity.yml b/html/changelogs/Xhuis-Superlarity.yml deleted file mode 100644 index 79559c527c3..00000000000 --- a/html/changelogs/Xhuis-Superlarity.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Xhuis -delete-after: True - -changes: - - rscadd: "Nanotrasen scientists have determined that a delaminating supermatter shard combining with a gravitational singularity is an extremely bad idea. They advise keeping the two as far apart as possible." diff --git a/html/changelogs/phil235-XrayGunNerf.yml b/html/changelogs/phil235-XrayGunNerf.yml deleted file mode 100644 index 0cdfb5b9318..00000000000 --- a/html/changelogs/phil235-XrayGunNerf.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: phil235 - -delete-after: True - -changes: - - rscdel: "Nerfed the xray gun. Its range is now 15 tiles."