From 3c5cf391b306df1ea85994a5cba6938dbe0b473c Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Thu, 27 Jun 2019 08:53:08 +0100 Subject: [PATCH 1/6] Ports false-bottomed briefcase from VG --- .../items/weapons/storage/briefcase.dm | 79 ++++++++++++++++++- code/modules/projectiles/gun.dm | 2 +- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 2450648cded..b378354f0b2 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -20,10 +20,85 @@ force = 10 /obj/item/storage/briefcase/sniperbundle/New() - ..() + ..() new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate(src) new /obj/item/clothing/accessory/red(src) new /obj/item/clothing/under/syndicate/sniper(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/suppressor/specialoffer(src) \ No newline at end of file + new /obj/item/suppressor/specialoffer(src) + +/obj/item/storage/briefcase/false_bottomed + name = "briefcase" + desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. This one feels a bit heavier than normal for how much fits in it." + icon_state = "briefcase" + force = 8.0 + throw_speed = 1 + throw_range = 3 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_SMALL + max_combined_w_class = 10 + + var/busy_hunting = 0 + var/bottom_open = 0 //is the false bottom open? + var/obj/item/stored_item = null //what's in the false bottom. If it's a gun, we can fire it + +/obj/item/storage/briefcase/false_bottomed/Destroy() + if(stored_item)//since the stored_item isn't in the briefcase' contents we gotta remind the game to delete it here. + qdel(stored_item) + stored_item = null + ..() + +/obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params) + ..() + if(stored_item && istype(stored_item, /obj/item/gun) && get_dist(A, user) > 1) + var/obj/item/gun/stored_gun = stored_item + stored_gun.afterattack(A, user, flag, params) + return + +/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/item, mob/user) + if(istype(item, /obj/item/screwdriver)) + if(!bottom_open && !busy_hunting) + to_chat(user, "You begin to hunt around the rim of \the [src]...") + busy_hunting = 1 + if(do_after(user, 20, target = src)) + if(user) + to_chat(user, "You pry open the false bottom!") + bottom_open = 1 + busy_hunting = 0 + else if(bottom_open) + to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with \the [stored_item] snugly inside." : "."]") + bottom_open = 0 + else if(bottom_open) + if(stored_item) + to_chat(user, "There's already something in the false bottom!") + return + if(item.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user, "\The [item] is too big to fit in the false bottom!") + return + if(!user.drop_item(item)) + user << "\The [item] is stuck to your hands!" + return + + stored_item = item + max_w_class = WEIGHT_CLASS_NORMAL - stored_item.w_class + item.forceMove(null) //null space here we go - to stop it showing up in the briefcase + to_chat(user, "You place \the [item] into the false bottom of the briefcase.") + else + return ..() + +/obj/item/storage/briefcase/false_bottomed/attack_hand(mob/user) + if(bottom_open && stored_item) + user.put_in_hands(stored_item) + to_chat(user, "You pull out \the [stored_item] from \the [src]'s false bottom.") + stored_item = null + max_w_class = initial(max_w_class) + else + return ..() + +/obj/item/storage/briefcase/false_bottomed/sniper + +/obj/item/storage/briefcase/false_bottomed/sniper/New() + ..() + var/obj/item/gun/projectile/automatic/sniper_rifle/compact/SNIPER = new + stored_item = SNIPER diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d5dfb454e09..de60cf290b0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -163,7 +163,7 @@ return 0 return 1 -obj/item/gun/proc/newshot() +/obj/item/gun/proc/newshot() return /obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override) From dbed99041228bee60623d4502a43186a39b8a022 Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Sat, 29 Jun 2019 15:10:41 +0100 Subject: [PATCH 2/6] Revert "Ports false-bottomed briefcase from VG" This reverts commit 3c5cf391b306df1ea85994a5cba6938dbe0b473c. --- .../items/weapons/storage/briefcase.dm | 79 +------------------ code/modules/projectiles/gun.dm | 2 +- 2 files changed, 3 insertions(+), 78 deletions(-) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index b378354f0b2..2450648cded 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -20,85 +20,10 @@ force = 10 /obj/item/storage/briefcase/sniperbundle/New() - ..() + ..() new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate(src) new /obj/item/clothing/accessory/red(src) new /obj/item/clothing/under/syndicate/sniper(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/suppressor/specialoffer(src) - -/obj/item/storage/briefcase/false_bottomed - name = "briefcase" - desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. This one feels a bit heavier than normal for how much fits in it." - icon_state = "briefcase" - force = 8.0 - throw_speed = 1 - throw_range = 3 - w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_SMALL - max_combined_w_class = 10 - - var/busy_hunting = 0 - var/bottom_open = 0 //is the false bottom open? - var/obj/item/stored_item = null //what's in the false bottom. If it's a gun, we can fire it - -/obj/item/storage/briefcase/false_bottomed/Destroy() - if(stored_item)//since the stored_item isn't in the briefcase' contents we gotta remind the game to delete it here. - qdel(stored_item) - stored_item = null - ..() - -/obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params) - ..() - if(stored_item && istype(stored_item, /obj/item/gun) && get_dist(A, user) > 1) - var/obj/item/gun/stored_gun = stored_item - stored_gun.afterattack(A, user, flag, params) - return - -/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/item, mob/user) - if(istype(item, /obj/item/screwdriver)) - if(!bottom_open && !busy_hunting) - to_chat(user, "You begin to hunt around the rim of \the [src]...") - busy_hunting = 1 - if(do_after(user, 20, target = src)) - if(user) - to_chat(user, "You pry open the false bottom!") - bottom_open = 1 - busy_hunting = 0 - else if(bottom_open) - to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with \the [stored_item] snugly inside." : "."]") - bottom_open = 0 - else if(bottom_open) - if(stored_item) - to_chat(user, "There's already something in the false bottom!") - return - if(item.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user, "\The [item] is too big to fit in the false bottom!") - return - if(!user.drop_item(item)) - user << "\The [item] is stuck to your hands!" - return - - stored_item = item - max_w_class = WEIGHT_CLASS_NORMAL - stored_item.w_class - item.forceMove(null) //null space here we go - to stop it showing up in the briefcase - to_chat(user, "You place \the [item] into the false bottom of the briefcase.") - else - return ..() - -/obj/item/storage/briefcase/false_bottomed/attack_hand(mob/user) - if(bottom_open && stored_item) - user.put_in_hands(stored_item) - to_chat(user, "You pull out \the [stored_item] from \the [src]'s false bottom.") - stored_item = null - max_w_class = initial(max_w_class) - else - return ..() - -/obj/item/storage/briefcase/false_bottomed/sniper - -/obj/item/storage/briefcase/false_bottomed/sniper/New() - ..() - var/obj/item/gun/projectile/automatic/sniper_rifle/compact/SNIPER = new - stored_item = SNIPER + new /obj/item/suppressor/specialoffer(src) \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index de60cf290b0..d5dfb454e09 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -163,7 +163,7 @@ return 0 return 1 -/obj/item/gun/proc/newshot() +obj/item/gun/proc/newshot() return /obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override) From fa2ca7c87ccf8a0eeaca1ce2f2c85bfd5eab88ed Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Sat, 29 Jun 2019 15:47:26 +0100 Subject: [PATCH 3/6] Ports VG false bottomed briefcase + compact sniper changes --- code/datums/uplink_item.dm | 17 ++-- .../items/weapons/storage/briefcase.dm | 79 ++++++++++++++++++- code/modules/projectiles/gun.dm | 2 +- .../projectiles/guns/projectile/sniper.dm | 2 +- 4 files changed, 86 insertions(+), 14 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index b6167338ad3..bbeaba5d4f7 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -499,15 +499,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 25 gamemodes = list(/datum/game_mode/nuclear) -/datum/uplink_item/dangerous/sniper_compact //For when you really really hate that one guy. - name = "Compact Sniper Rifle" - desc = "A compact, unscoped version of the operative sniper rifle. Packs a powerful punch, but ammo is limited." - reference = "CSR" - item = /obj/item/gun/projectile/automatic/sniper_rifle/compact - cost = 16 - surplus = 0 - cant_discount = TRUE - excludefrom = list(/datum/game_mode/nuclear) +/datum/uplink_item/dangerous/false_briefcase_sniper + name = "False Bottomed Briefcase with Compact Rifle" + desc = "A modified briefcase capable of storing and firing a gun under a false bottom. Comes loaded with a powerful compact rifle and 3 rounds. Use a screwdriver to pry away the false bottom and make modifications. Distinguishable upon close examination due to the added weight." + reference = "FBBC" + item = /obj/item/storage/briefcase/false_bottomed/sniper + cost = 11 /datum/uplink_item/dangerous/crossbow name = "Energy Crossbow" @@ -1627,7 +1624,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CIB" item = /obj/item/storage/box/cyber_implants/bundle cost = 40 - + /datum/uplink_item/bundles_TC/medical name = "Medical Bundle" desc = "The support specialist: Aid your fellow operatives with this medical bundle. Contains a tactical medkit, \ diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 2450648cded..b378354f0b2 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -20,10 +20,85 @@ force = 10 /obj/item/storage/briefcase/sniperbundle/New() - ..() + ..() new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate(src) new /obj/item/clothing/accessory/red(src) new /obj/item/clothing/under/syndicate/sniper(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/suppressor/specialoffer(src) \ No newline at end of file + new /obj/item/suppressor/specialoffer(src) + +/obj/item/storage/briefcase/false_bottomed + name = "briefcase" + desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. This one feels a bit heavier than normal for how much fits in it." + icon_state = "briefcase" + force = 8.0 + throw_speed = 1 + throw_range = 3 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_SMALL + max_combined_w_class = 10 + + var/busy_hunting = 0 + var/bottom_open = 0 //is the false bottom open? + var/obj/item/stored_item = null //what's in the false bottom. If it's a gun, we can fire it + +/obj/item/storage/briefcase/false_bottomed/Destroy() + if(stored_item)//since the stored_item isn't in the briefcase' contents we gotta remind the game to delete it here. + qdel(stored_item) + stored_item = null + ..() + +/obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params) + ..() + if(stored_item && istype(stored_item, /obj/item/gun) && get_dist(A, user) > 1) + var/obj/item/gun/stored_gun = stored_item + stored_gun.afterattack(A, user, flag, params) + return + +/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/item, mob/user) + if(istype(item, /obj/item/screwdriver)) + if(!bottom_open && !busy_hunting) + to_chat(user, "You begin to hunt around the rim of \the [src]...") + busy_hunting = 1 + if(do_after(user, 20, target = src)) + if(user) + to_chat(user, "You pry open the false bottom!") + bottom_open = 1 + busy_hunting = 0 + else if(bottom_open) + to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with \the [stored_item] snugly inside." : "."]") + bottom_open = 0 + else if(bottom_open) + if(stored_item) + to_chat(user, "There's already something in the false bottom!") + return + if(item.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user, "\The [item] is too big to fit in the false bottom!") + return + if(!user.drop_item(item)) + user << "\The [item] is stuck to your hands!" + return + + stored_item = item + max_w_class = WEIGHT_CLASS_NORMAL - stored_item.w_class + item.forceMove(null) //null space here we go - to stop it showing up in the briefcase + to_chat(user, "You place \the [item] into the false bottom of the briefcase.") + else + return ..() + +/obj/item/storage/briefcase/false_bottomed/attack_hand(mob/user) + if(bottom_open && stored_item) + user.put_in_hands(stored_item) + to_chat(user, "You pull out \the [stored_item] from \the [src]'s false bottom.") + stored_item = null + max_w_class = initial(max_w_class) + else + return ..() + +/obj/item/storage/briefcase/false_bottomed/sniper + +/obj/item/storage/briefcase/false_bottomed/sniper/New() + ..() + var/obj/item/gun/projectile/automatic/sniper_rifle/compact/SNIPER = new + stored_item = SNIPER diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d5dfb454e09..de60cf290b0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -163,7 +163,7 @@ return 0 return 1 -obj/item/gun/proc/newshot() +/obj/item/gun/proc/newshot() return /obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index e030c9afb2a..76157b4a95d 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -178,7 +178,7 @@ name = "sniper rounds (compact)" desc = "An extremely powerful round capable of inflicting massive damage on a target." ammo_type = /obj/item/ammo_casing/compact - max_ammo = 4 + max_ammo = 3 /obj/item/ammo_casing/compact desc = "A .50 caliber compact round casing." From ab8c0f5aa54ef1d75c2b3753eed8c427ef39e22f Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Sun, 30 Jun 2019 12:28:23 +0100 Subject: [PATCH 4/6] Reverted compact rifle changes, false bottomed case now starts empty --- code/datums/uplink_item.dm | 22 ++++++++++++++----- .../items/weapons/storage/briefcase.dm | 7 ------ .../projectiles/guns/projectile/sniper.dm | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index bbeaba5d4f7..df1f417305a 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -499,12 +499,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 25 gamemodes = list(/datum/game_mode/nuclear) -/datum/uplink_item/dangerous/false_briefcase_sniper - name = "False Bottomed Briefcase with Compact Rifle" - desc = "A modified briefcase capable of storing and firing a gun under a false bottom. Comes loaded with a powerful compact rifle and 3 rounds. Use a screwdriver to pry away the false bottom and make modifications. Distinguishable upon close examination due to the added weight." - reference = "FBBC" - item = /obj/item/storage/briefcase/false_bottomed/sniper - cost = 11 +/datum/uplink_item/dangerous/sniper_compact //For when you really really hate that one guy. + name = "Compact Sniper Rifle" + desc = "A compact, unscoped version of the operative sniper rifle. Packs a powerful punch, but ammo is limited." + reference = "CSR" + item = /obj/item/gun/projectile/automatic/sniper_rifle/compact + cost = 16 + surplus = 0 + cant_discount = TRUE + excludefrom = list(/datum/game_mode/nuclear) /datum/uplink_item/dangerous/crossbow name = "Energy Crossbow" @@ -889,6 +892,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 3 surplus = 10 +/datum/uplink_item/stealthy_weapons/false_briefcase + name = "False Bottomed Briefcase" + desc = "A modified briefcase capable of storing and firing a gun under a false bottom. Use a screwdriver to pry away the false bottom and make modifications. Distinguishable upon close examination due to the added weight." + reference = "FBBC" + item = /obj/item/storage/briefcase/false_bottomed + cost = 3 + /datum/uplink_item/stealthy_weapons/soap name = "Syndicate Soap" desc = "A sinister-looking surfactant used to clean blood stains to hide murders and prevent DNA analysis. You can also drop it underfoot to slip people." diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index b378354f0b2..ac191b5211f 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -95,10 +95,3 @@ max_w_class = initial(max_w_class) else return ..() - -/obj/item/storage/briefcase/false_bottomed/sniper - -/obj/item/storage/briefcase/false_bottomed/sniper/New() - ..() - var/obj/item/gun/projectile/automatic/sniper_rifle/compact/SNIPER = new - stored_item = SNIPER diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 76157b4a95d..e030c9afb2a 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -178,7 +178,7 @@ name = "sniper rounds (compact)" desc = "An extremely powerful round capable of inflicting massive damage on a target." ammo_type = /obj/item/ammo_casing/compact - max_ammo = 3 + max_ammo = 4 /obj/item/ammo_casing/compact desc = "A .50 caliber compact round casing." From f550b19f8d83b3ee85eecc3da25658028e73086d Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Mon, 12 Aug 2019 19:04:21 +0100 Subject: [PATCH 5/6] conflicts and reviews --- code/datums/uplink_item.dm | 1 + .../objects/items/weapons/storage/briefcase.dm | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index df1f417305a..d4ad57ed855 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1634,6 +1634,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "CIB" item = /obj/item/storage/box/cyber_implants/bundle cost = 40 + gamemodes = list(/datum/game_mode/nuclear) /datum/uplink_item/bundles_TC/medical name = "Medical Bundle" diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index ac191b5211f..28a1c45e27b 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -39,8 +39,8 @@ max_w_class = WEIGHT_CLASS_SMALL max_combined_w_class = 10 - var/busy_hunting = 0 - var/bottom_open = 0 //is the false bottom open? + var/busy_hunting = FALSE + var/bottom_open = FALSE //is the false bottom open? var/obj/item/stored_item = null //what's in the false bottom. If it's a gun, we can fire it /obj/item/storage/briefcase/false_bottomed/Destroy() @@ -57,18 +57,18 @@ return /obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/item, mob/user) - if(istype(item, /obj/item/screwdriver)) + if(isscrewdriver(item)) if(!bottom_open && !busy_hunting) to_chat(user, "You begin to hunt around the rim of \the [src]...") - busy_hunting = 1 + busy_hunting = TRUE if(do_after(user, 20, target = src)) if(user) to_chat(user, "You pry open the false bottom!") - bottom_open = 1 - busy_hunting = 0 + bottom_open = TRUE + busy_hunting = FALSE else if(bottom_open) to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with \the [stored_item] snugly inside." : "."]") - bottom_open = 0 + bottom_open = FALSE else if(bottom_open) if(stored_item) to_chat(user, "There's already something in the false bottom!") From 30b526f40c727321cbe3207d65ba496a4f6174c0 Mon Sep 17 00:00:00 2001 From: AzuleUtama <44248086+AzuleUtama@users.noreply.github.com> Date: Thu, 15 Aug 2019 19:17:24 +0100 Subject: [PATCH 6/6] Update briefcase.dm --- .../items/weapons/storage/briefcase.dm | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 28a1c45e27b..0a2a8bcfbbc 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -5,7 +5,7 @@ item_state = "briefcase" flags = CONDUCT hitsound = "swing_hit" - force = 8.0 + force = 8 throw_speed = 2 throw_range = 4 w_class = WEIGHT_CLASS_BULKY @@ -29,13 +29,6 @@ new /obj/item/suppressor/specialoffer(src) /obj/item/storage/briefcase/false_bottomed - name = "briefcase" - desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. This one feels a bit heavier than normal for how much fits in it." - icon_state = "briefcase" - force = 8.0 - throw_speed = 1 - throw_range = 3 - w_class = WEIGHT_CLASS_BULKY max_w_class = WEIGHT_CLASS_SMALL max_combined_w_class = 10 @@ -45,21 +38,19 @@ /obj/item/storage/briefcase/false_bottomed/Destroy() if(stored_item)//since the stored_item isn't in the briefcase' contents we gotta remind the game to delete it here. - qdel(stored_item) - stored_item = null - ..() + QDEL_NULL(stored_item) + return ..() /obj/item/storage/briefcase/false_bottomed/afterattack(atom/A, mob/user, flag, params) ..() - if(stored_item && istype(stored_item, /obj/item/gun) && get_dist(A, user) > 1) + if(stored_item && istype(stored_item, /obj/item/gun) && !Adjacent(A)) var/obj/item/gun/stored_gun = stored_item stored_gun.afterattack(A, user, flag, params) - return -/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/item, mob/user) - if(isscrewdriver(item)) +/obj/item/storage/briefcase/false_bottomed/attackby(var/obj/item/I, mob/user) + if(isscrewdriver(I)) if(!bottom_open && !busy_hunting) - to_chat(user, "You begin to hunt around the rim of \the [src]...") + to_chat(user, "You begin to hunt around the rim of the [src]...") busy_hunting = TRUE if(do_after(user, 20, target = src)) if(user) @@ -67,30 +58,30 @@ bottom_open = TRUE busy_hunting = FALSE else if(bottom_open) - to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with \the [stored_item] snugly inside." : "."]") + to_chat(user, "You push the false bottom down and close it with a click[stored_item ? ", with the [stored_item] snugly inside." : "."]") bottom_open = FALSE else if(bottom_open) if(stored_item) to_chat(user, "There's already something in the false bottom!") return - if(item.w_class > WEIGHT_CLASS_NORMAL) - to_chat(user, "\The [item] is too big to fit in the false bottom!") + if(I.w_class > WEIGHT_CLASS_NORMAL) + to_chat(user, "The [I] is too big to fit in the false bottom!") return - if(!user.drop_item(item)) - user << "\The [item] is stuck to your hands!" + if(!user.drop_item(I)) + user << "The [I] is stuck to your hands!" return - stored_item = item + stored_item = I max_w_class = WEIGHT_CLASS_NORMAL - stored_item.w_class - item.forceMove(null) //null space here we go - to stop it showing up in the briefcase - to_chat(user, "You place \the [item] into the false bottom of the briefcase.") + I.forceMove(null) //null space here we go - to stop it showing up in the briefcase + to_chat(user, "You place the [I] into the false bottom of the briefcase.") else return ..() /obj/item/storage/briefcase/false_bottomed/attack_hand(mob/user) if(bottom_open && stored_item) user.put_in_hands(stored_item) - to_chat(user, "You pull out \the [stored_item] from \the [src]'s false bottom.") + to_chat(user, "You pull out the [stored_item] from the [src]'s false bottom.") stored_item = null max_w_class = initial(max_w_class) else