diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 67da8a999ff..6bdd16357cc 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -818,23 +818,6 @@ var/global/list/common_tools = list( return 1 return 0 -//Returns 1 if the given item is capable of popping things like balloons, inflatable barriers, or cutting police tape. -/proc/can_puncture(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT? - if(!W) - return 0 - if(W.sharp) - return 1 - return ( \ - W.sharp || \ - W.isscrewdriver() || \ - W.ispen() || \ - W.iswelder() || \ - istype(W, /obj/item/flame/lighter/zippo) || \ - istype(W, /obj/item/flame/match) || \ - istype(W, /obj/item/clothing/mask/smokable/cigarette) || \ - istype(W, /obj/item/shovel) \ - ) - /proc/is_surgery_tool(obj/item/W) return istype(W, /obj/item/surgery) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9962fc95f85..47c8d508711 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -911,4 +911,12 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. /obj/item/dropped() ..() if(flags & HELDMAPTEXT) - check_maptext() \ No newline at end of file + check_maptext() + +// used to check whether the item is capable of popping things like balloons, inflatable barriers, or cutting police tape. +/obj/item/proc/can_puncture() + if(sharp || edge) + return TRUE + if(isFlameSource()) + return TRUE + return FALSE diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 10ef0df8ecf..0a5470bf408 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -174,7 +174,7 @@ return /obj/item/toy/balloon/attackby(obj/item/W as obj, mob/user as mob) - if(can_puncture(W)) + if(W.can_puncture()) burst() /obj/item/toy/balloon/latex diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index 85c82f9e2fb..dd843e0ea4f 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -214,7 +214,7 @@ var/list/tape_roll_applications = list() breaktape(null, user) /obj/item/tape/proc/breaktape(obj/item/W as obj, mob/user as mob) - if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user)))) + if(user.a_intent == I_HELP && ((!W.can_puncture() && src.allowed(user)))) to_chat(user, SPAN_NOTICE("You can't break \the [src] with that!")) return user.visible_message(SPAN_NOTICE("[user] breaks \the [src]!")) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 800d751b448..af920ce7269 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -22,6 +22,7 @@ var/max_w_class = ITEMSIZE_NORMAL //Max size of objects that this object can store (in effect only if can_hold isn't set) var/max_storage_space = 8 //The sum of the storage costs of all the items in this storage item. var/storage_slots //The number of storage slots in this container. + var/force_column_number // the number of columns the storage item will appear to have var/obj/screen/storage/boxes var/obj/screen/storage/storage_start //storage UI var/obj/screen/storage/storage_continue @@ -294,7 +295,7 @@ space_orient_objs(numbered_contents, defer_overlays) else var/row_num = 0 - var/col_count = min(7,storage_slots) -1 + var/col_count = force_column_number ? force_column_number : min(7, storage_slots) - 1 if (adjusted_contents > 7) row_num = round((adjusted_contents-1) / 7) // 7 is the maximum allowed width. src.slot_orient_objs(row_num, col_count, numbered_contents) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 3b9f1c6f209..a36a37bb7c8 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -55,9 +55,7 @@ new /obj/item/clothing/suit/space/emergency(src) new /obj/item/clothing/head/helmet/space/emergency(src) new /obj/item/device/oxycandle(src) - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/wall(src) - new /obj/item/inflatable/wall(src) + new /obj/item/storage/bag/inflatable/emergency(src) if ("all") new /obj/item/storage/toolbox/emergency(src) new /obj/item/tank/emergency_oxygen/engi(src) @@ -74,9 +72,7 @@ new /obj/item/device/oxycandle(src) new /obj/item/airbubble(src) new /obj/item/airbubble(src) - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/wall(src) - new /obj/item/inflatable/wall(src) + new /obj/item/storage/bag/inflatable/emergency(src) /obj/structure/closet/emcloset/legacy/fill() ..() diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 099f4a7f467..f5a1b7fe7ff 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -1,17 +1,20 @@ +#define STATE_CLOSED 0 +#define STATE_OPEN 1 + /obj/item/inflatable name = "inflatable" desc_info = "Inflate by using it in your hand. The inflatable barrier will inflate on your tile. To deflate it, use the 'deflate' verb." w_class = ITEMSIZE_SMALL - icon = 'icons/obj/inflatable.dmi' + icon = 'icons/obj/contained_items/tools/inflatables.dmi' var/deploy_path = null /obj/item/inflatable/attack_self(mob/user) if(!deploy_path) return - playsound(loc, 'sound/items/zip.ogg', 75, 1) - to_chat(user, "You inflate \the [src].") + playsound(loc, 'sound/items/zip.ogg', 75, TRUE) + to_chat(user, SPAN_NOTICE("You inflate \the [src].")) var/obj/structure/inflatable/R = new deploy_path(user.loc) - src.transfer_fingerprints_to(R) + transfer_fingerprints_to(R) R.add_fingerprint(user) qdel(src) @@ -21,7 +24,7 @@ icon_state = "folded_wall" deploy_path = /obj/structure/inflatable/wall -/obj/item/inflatable/door/ +/obj/item/inflatable/door name = "inflatable door" desc = "A folded membrane which rapidly expands into a simple door on activation." icon_state = "folded_door" @@ -31,40 +34,43 @@ name = "inflatable" desc = "An inflated membrane. Do not puncture." desc_info = "To remove these safely, use the 'deflate' verb. Hitting these with any objects will probably puncture and break it forever." - density = 1 - anchored = 1 - opacity = 0 - icon = 'icons/obj/inflatable.dmi' + icon = 'icons/obj/contained_items/tools/inflatables.dmi' icon_state = "wall" + density = TRUE + anchored = TRUE atmos_canpass = CANPASS_DENSITY + var/deflating = FALSE var/undeploy_path = null + var/torn_path = null var/health = 50.0 /obj/structure/inflatable/wall name = "inflatable wall" undeploy_path = /obj/item/inflatable/wall + torn_path = /obj/item/inflatable/torn -/obj/structure/inflatable/New(location) - ..() - update_nearby_tiles(need_rebuild=1) +/obj/structure/inflatable/Initialize(mapload) + . = ..() + update_nearby_tiles(need_rebuild = TRUE) /obj/structure/inflatable/Destroy() update_nearby_tiles() return ..() /obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - return 0 + return FALSE /obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj) var/proj_damage = Proj.get_structure_damage() - if(!proj_damage) return + if(!proj_damage) + return health -= proj_damage ..() if(health <= 0) - deflate(1) + deflate(TRUE) return /obj/structure/inflatable/ex_act(severity) @@ -73,54 +79,72 @@ qdel(src) return if(2.0) - deflate(1) + deflate(TRUE) return if(3.0) if(prob(50)) - deflate(1) + deflate(TRUE) return -/obj/structure/inflatable/attack_hand(mob/user as mob) +/obj/structure/inflatable/attack_hand(mob/user) add_fingerprint(user) return -/obj/structure/inflatable/attackby(obj/item/W as obj, mob/user as mob) - if(!istype(W) || istype(W, /obj/item/inflatable_dispenser)) return +/obj/structure/inflatable/attackby(obj/item/W, mob/user) + if(!istype(W) || istype(W, /obj/item/inflatable_dispenser)) + return + if(deflating) + return - if (can_puncture(W)) - visible_message("[user] pierces [src] with [W]!") - deflate(1) - if(W.damtype == BRUTE || W.damtype == BURN) + if(W.can_puncture()) + user.visible_message(SPAN_DANGER("[user] pierces \the [src] with \the [W]!"), SPAN_WARNING("You pierce \the [src] with \the [W]!")) + deflate(TRUE) + else if(W.damtype == BRUTE || W.damtype == BURN) hit(W.force) ..() - return -/obj/structure/inflatable/proc/hit(var/damage, var/sound_effect = 1) +/obj/structure/inflatable/proc/hit(var/damage, var/sound_effect = TRUE) health = max(0, health - damage) if(sound_effect) playsound(loc, 'sound/effects/glass_hit.ogg', 75, 1) if(health <= 0) - deflate(1) + deflate(TRUE) /obj/structure/inflatable/CtrlClick() hand_deflate() -/obj/structure/inflatable/proc/deflate(var/violent=0) - playsound(loc, 'sound/machines/hiss.ogg', 75, 1) +/obj/structure/inflatable/proc/deflate(var/violent = FALSE) + if(deflating) + return + playsound(loc, 'sound/machines/hiss.ogg', 75, TRUE) if(violent) - visible_message("[src] rapidly deflates!") - var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc) - src.transfer_fingerprints_to(R) - qdel(src) + if(!torn_path) + return + deflating = TRUE + visible_message(SPAN_WARNING("\The [src] rapidly deflates!")) + var/matrix/M = new + M.Scale(0.6) + M.Turn(pick(-40, 40)) + animate(src, 0.2 SECONDS, transform = M) + addtimer(CALLBACK(src, .proc/post_tear), 0.2 SECONDS) else if(!undeploy_path) return - visible_message("\The [src] slowly deflates.") - addtimer(CALLBACK(src, .proc/post_deflate), 26) + deflating = TRUE + visible_message(SPAN_NOTICE("\The [src] slowly deflates.")) + var/matrix/M = new + M.Scale(0.6) + animate(src, 2.6 SECONDS, transform = M) + addtimer(CALLBACK(src, .proc/post_deflate), 2.6 SECONDS) /obj/structure/inflatable/proc/post_deflate() - var/obj/item/inflatable/R = new undeploy_path(src.loc) - src.transfer_fingerprints_to(R) + var/obj/item/inflatable/R = new undeploy_path(loc) + transfer_fingerprints_to(R) + qdel(src) + +/obj/structure/inflatable/proc/post_tear() + var/obj/item/inflatable/torn/R = new torn_path(loc) + transfer_fingerprints_to(R) qdel(src) /obj/structure/inflatable/verb/hand_deflate() @@ -138,11 +162,11 @@ health -= damage user.do_attack_animation(src) if(health <= 0) - user.visible_message("[user] [attack_verb] open the [src]!") - addtimer(CALLBACK(src, .proc/deflate, 1), 1) + user.visible_message(SPAN_DANGER("[user] [attack_verb] open the [src]!")) + INVOKE_ASYNC(src, .proc/deflate, TRUE) else - user.visible_message("[user] [attack_verb] at [src]!") - return 1 + user.visible_message(SPAN_DANGER("[user] [attack_verb] at [src]!")) + return TRUE /obj/structure/inflatable/door //Based on mineral door code name = "inflatable door" @@ -154,17 +178,18 @@ icon_state = "door_closed" undeploy_path = /obj/item/inflatable/door + torn_path = /obj/item/inflatable/door/torn - var/state = 0 //closed, 1 == open - var/isSwitchingStates = 0 + var/state = STATE_CLOSED + var/isSwitchingStates = FALSE -/obj/structure/inflatable/door/attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral +/obj/structure/inflatable/door/attack_ai(mob/user) if(isAI(user)) //so the AI can't open it return else if(isrobot(user) && Adjacent(user)) //but cyborgs can return TryToSwitchState(user) -/obj/structure/inflatable/door/attack_hand(mob/user as mob) +/obj/structure/inflatable/door/attack_hand(mob/user) return TryToSwitchState(user) /obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -174,17 +199,12 @@ return !opacity return !density -/obj/structure/inflatable/door/proc/TryToSwitchState(atom/user) - if(isSwitchingStates) return - if(ismob(user)) - var/mob/M = user - if(M.client) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.handcuffed) - SwitchState() - else - SwitchState() +/obj/structure/inflatable/door/proc/TryToSwitchState(mob/user) + if(isSwitchingStates) + return + if(use_check_and_message(user)) + return + SwitchState() /obj/structure/inflatable/door/proc/SwitchState() if(state) @@ -195,29 +215,33 @@ /obj/structure/inflatable/door/proc/Open() set waitfor = FALSE + if(isSwitchingStates) return - isSwitchingStates = 1 + isSwitchingStates = TRUE + density = FALSE + state = STATE_OPEN flick("door_opening",src) - sleep(10) - density = 0 - opacity = 0 - state = 1 + addtimer(CALLBACK(src, .proc/ResetOpen), 1 SECOND) + +/obj/structure/inflatable/door/proc/ResetOpen() update_icon() - isSwitchingStates = 0 + isSwitchingStates = FALSE /obj/structure/inflatable/door/proc/Close() set waitfor = FALSE + if(isSwitchingStates) return - isSwitchingStates = 1 - flick("door_closing",src) - sleep(10) - density = 1 - opacity = 0 - state = 0 + isSwitchingStates = TRUE + flick("door_closing", src) + addtimer(CALLBACK(src, .proc/ResetClose), 1 SECOND) + +/obj/structure/inflatable/door/proc/ResetClose() + density = TRUE + state = STATE_CLOSED update_icon() - isSwitchingStates = 0 + isSwitchingStates = FALSE /obj/structure/inflatable/door/update_icon() if(state) @@ -225,52 +249,45 @@ else icon_state = "door_closed" -/obj/structure/inflatable/door/deflate(var/violent=0) - playsound(loc, 'sound/machines/hiss.ogg', 75, 1) - if(violent) - visible_message("[src] rapidly deflates!") - var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) - src.transfer_fingerprints_to(R) - qdel(src) - else - visible_message("[src] slowly deflates.") - addtimer(CALLBACK(src, .proc/post_deflate), 26) - /obj/item/inflatable/torn name = "torn inflatable wall" desc = "A folded membrane which rapidly expands into a large cubical shape on activation. It is too torn to be usable." - icon = 'icons/obj/inflatable.dmi' icon_state = "folded_wall_torn" - attack_self(mob/user) - to_chat(user, "The inflatable wall is too torn to be inflated!") - add_fingerprint(user) +/obj/item/inflatable/torn/attack_self(mob/user) + to_chat(user, SPAN_NOTICE("The inflatable wall is too torn to be inflated!")) + add_fingerprint(user) /obj/item/inflatable/door/torn name = "torn inflatable door" desc = "A folded membrane which rapidly expands into a simple door on activation. It is too torn to be usable." - icon = 'icons/obj/inflatable.dmi' icon_state = "folded_door_torn" - attack_self(mob/user) - to_chat(user, "The inflatable door is too torn to be inflated!") - add_fingerprint(user) +/obj/item/inflatable/door/torn/attack_self(mob/user) + to_chat(user, SPAN_NOTICE("The inflatable door is too torn to be inflated!")) + add_fingerprint(user) -/obj/item/storage/briefcase/inflatable +/obj/item/storage/bag/inflatable name = "inflatable barrier box" desc = "Contains inflatable walls and doors." + icon = 'icons/obj/contained_items/tools/inflatables.dmi' icon_state = "inf_box" - item_state = "box" + item_state = "inf_box" + contained_sprite = TRUE w_class = ITEMSIZE_NORMAL + display_contents_with_number = TRUE max_storage_space = 28 + force_column_number = 3 // we want 4 slots to appear, so 3 columns + 1 free (to insert stuff) + storage_slots = 14 can_hold = list(/obj/item/inflatable) + starts_with = list(/obj/item/inflatable/door = 5, /obj/item/inflatable/wall = 7) - New() - ..() - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/wall(src) - new /obj/item/inflatable/wall(src) - new /obj/item/inflatable/wall(src) - new /obj/item/inflatable/wall(src) + use_sound = 'sound/items/storage/briefcase.ogg' + drop_sound = 'sound/items/drop/backpack.ogg' + pickup_sound = 'sound/items/pickup/backpack.ogg' + +/obj/item/storage/bag/inflatable/emergency + starts_with = list(/obj/item/inflatable/door = 2, /obj/item/inflatable/wall = 3) + +#undef STATE_CLOSED +#undef STATE_OPEN \ No newline at end of file diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index c4dcf074f69..52af12ab11f 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -6,7 +6,7 @@ required_count = 4 random_count = 1 wanted_types = list(/obj/item/storage/briefcase) - exclude_types = list(/obj/item/storage/briefcase/inflatable, /obj/item/storage/briefcase/crimekit) + exclude_types = list(/obj/item/storage/briefcase/crimekit) /datum/bounty/item/assistant/lung name = "Lungs" diff --git a/code/modules/cargo/random_stock/t1_common.dm b/code/modules/cargo/random_stock/t1_common.dm index b00692985c2..8b541fe6b17 100644 --- a/code/modules/cargo/random_stock/t1_common.dm +++ b/code/modules/cargo/random_stock/t1_common.dm @@ -171,7 +171,7 @@ STOCK_ITEM_COMMON(weldgear, 2) new /obj/item/reagent_containers/weldpack(L) STOCK_ITEM_COMMON(inflatable, 3) - new /obj/item/storage/briefcase/inflatable(L) + new /obj/item/storage/bag/inflatable(L) STOCK_ITEM_COMMON(wheelchair, 1) //Wheelchair is not dense so it doesnt NEED a clear tile, but it looks a little silly to diff --git a/code/modules/clothing/spacesuits/rig/suits/ert.dm b/code/modules/clothing/spacesuits/rig/suits/ert.dm index ad1e7b181de..483fa5af7a1 100644 --- a/code/modules/clothing/spacesuits/rig/suits/ert.dm +++ b/code/modules/clothing/spacesuits/rig/suits/ert.dm @@ -24,7 +24,7 @@ allowed = list( /obj/item/device/flashlight, /obj/item/tank, /obj/item/device/t_scanner, /obj/item/rfd/construction, /obj/item/crowbar, \ /obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/device/multitool, \ - /obj/item/device/radio, /obj/item/device/analyzer,/obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, \ + /obj/item/device/radio, /obj/item/device/analyzer, /obj/item/storage/bag/inflatable, /obj/item/melee/baton, /obj/item/gun, \ /obj/item/storage/firstaid, /obj/item/reagent_containers/hypospray, /obj/item/roller,/obj/item/material/twohanded/fireaxe) initial_modules = list( /obj/item/rig_module/ai_container, diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index 9a98955e3d9..7a7fd7b9311 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -128,7 +128,7 @@ helm_type = /obj/item/clothing/head/helmet/space/rig/eva glove_type = /obj/item/clothing/gloves/rig/eva - allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/rfd/construction,/obj/item/material/twohanded/fireaxe,/obj/item/storage/backpack/cell) + allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/inflatable,/obj/item/device/t_scanner,/obj/item/rfd/construction,/obj/item/material/twohanded/fireaxe,/obj/item/storage/backpack/cell) req_access = list() req_one_access = list() @@ -177,7 +177,7 @@ helm_type = /obj/item/clothing/head/helmet/space/rig/ce glove_type = /obj/item/clothing/gloves/rig/ce - allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction,/obj/item/storage/backpack/cell,/obj/item/storage/toolbox) + allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction,/obj/item/storage/backpack/cell,/obj/item/storage/toolbox,/obj/item/storage/bag/inflatable) req_access = list() req_one_access = list() @@ -338,7 +338,7 @@ offline_slowdown = 4 offline_vision_restriction = TINT_HEAVY - allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/rfd/construction) + allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/inflatable,/obj/item/device/t_scanner,/obj/item/rfd/construction) req_access = list() req_one_access = list() diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 3a46a27e672..8538f7eee0f 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -37,7 +37,7 @@ bio = ARMOR_BIO_SHIELDED, rad = ARMOR_RAD_RESISTANT ) - allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction) + allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction,/obj/item/storage/bag/inflatable) //Mining rig /obj/item/clothing/head/helmet/space/void/mining @@ -192,7 +192,7 @@ bio = ARMOR_BIO_SHIELDED, rad = ARMOR_RAD_SMALL ) - allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction) + allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction,/obj/item/storage/bag/inflatable) max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + 10000 // It is a suit designed for fire, enclosed //Head of Security diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index aaf22fef08d..9711f0592eb 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -182,7 +182,7 @@ obj/item/clothing/suit/apron/overalls/blue blood_overlay_type = "armor" allowed = list (/obj/item/device/analyzer, /obj/item/device/flashlight, /obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner, \ /obj/item/crowbar, /obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/tank/emergency_oxygen, \ - /obj/item/clothing/mask/gas, /obj/item/taperoll/engineering) + /obj/item/clothing/mask/gas, /obj/item/taperoll/engineering, /obj/item/storage/bag/inflatable) body_parts_covered = UPPER_TORSO var/opened diff --git a/html/changelogs/geeves-inflatables_buff.yml b/html/changelogs/geeves-inflatables_buff.yml new file mode 100644 index 00000000000..d702b2b092c --- /dev/null +++ b/html/changelogs/geeves-inflatables_buff.yml @@ -0,0 +1,14 @@ +author: Geeves + +delete-after: True + +changes: + - tweak: "Inflatable boxes can now pick up uninflated inflatables by clicking on them, similar to ore satchels." + - tweak: "Inflatable boxes now use simple storage slots with a number next to the item to show how much it has." + - rscadd: "Inflatable boxes now have in-hand sprites." + - tweak: "Tweaked the code for what can puncture inflatables, any sharp, edged, or lit object can now puncture inflatables." + - rscadd: "Deflating an inflatable now plays an animation." + - tweak: "Tweaked the order of operations when you open in inflatable door. You should now be able to pass through it easier." + - tweak: "Inflatables boxes now spawn with more inflatables." + - rscadd: "Emergency closets that used to spawn loose inflatables will now instead spawn a less filled inflatables box." + - rscadd: "Various engineering suits now let you hold inflatable boxes in suit slots, including hazard vests." \ No newline at end of file diff --git a/icons/obj/contained_items/tools/inflatables.dmi b/icons/obj/contained_items/tools/inflatables.dmi new file mode 100644 index 00000000000..1648890f270 Binary files /dev/null and b/icons/obj/contained_items/tools/inflatables.dmi differ diff --git a/icons/obj/inflatable.dmi b/icons/obj/inflatable.dmi deleted file mode 100644 index 403e39c6378..00000000000 Binary files a/icons/obj/inflatable.dmi and /dev/null differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 9b043ce7d6b..6bf6ed125f0 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/maps/aurora/aurora-1_centcomm.dmm b/maps/aurora/aurora-1_centcomm.dmm index 13831d95ab0..42c36927541 100644 --- a/maps/aurora/aurora-1_centcomm.dmm +++ b/maps/aurora/aurora-1_centcomm.dmm @@ -7481,16 +7481,16 @@ }, /area/centcom/legion/hangar5) "bir" = ( -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 8 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 8 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 8 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 8 }, /obj/item/grenade/chem_grenade/metalfoam{ @@ -8301,8 +8301,8 @@ }, /area/shuttle/administration) "bHu" = ( -/obj/item/storage/briefcase/inflatable, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, +/obj/item/storage/bag/inflatable, /obj/structure/closet/l3closet, /obj/item/clothing/suit/bio_suit/virology, /obj/item/clothing/head/bio_hood/virology, @@ -8378,8 +8378,8 @@ }, /area/centcom/bar) "bJW" = ( -/obj/item/storage/briefcase/inflatable, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, +/obj/item/storage/bag/inflatable, /obj/structure/closet/l3closet, /obj/item/clothing/suit/bio_suit/virology, /obj/item/clothing/head/bio_hood/virology, @@ -9944,7 +9944,7 @@ /obj/item/storage/firstaid/o2{ pixel_y = 2 }, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/item/device/flashlight/flare/glowstick/red, /obj/item/device/flashlight/flare/glowstick/red, /obj/effect/floor_decal/industrial/outline/yellow, @@ -16277,7 +16277,7 @@ amount = 50; pixel_x = 1 }, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/effect/floor_decal/corner/red{ dir = 6 }, @@ -22422,7 +22422,7 @@ /obj/item/storage/firstaid/o2{ pixel_y = 2 }, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/item/device/flashlight/flare, /obj/item/device/flashlight/flare, /obj/machinery/light{ @@ -28069,13 +28069,13 @@ /turf/unsimulated/floor, /area/antag/mercenary) "nTr" = ( -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 2 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 2 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 2 }, /obj/structure/table/steel, diff --git a/maps/aurora/aurora-2_under-station.dmm b/maps/aurora/aurora-2_under-station.dmm index 889445490be..3cd4667d637 100644 --- a/maps/aurora/aurora-2_under-station.dmm +++ b/maps/aurora/aurora-2_under-station.dmm @@ -38,7 +38,7 @@ /area/engineering/cooling) "eu" = ( /obj/structure/table/standard, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /turf/simulated/floor/carpet/rubber, /area/engineering/cooling) "gY" = ( diff --git a/maps/aurora/aurora-3_sublevel.dmm b/maps/aurora/aurora-3_sublevel.dmm index 647875f390c..2fac414c909 100644 --- a/maps/aurora/aurora-3_sublevel.dmm +++ b/maps/aurora/aurora-3_sublevel.dmm @@ -1639,8 +1639,8 @@ /area/rnd/xenoarch_atrium) "adR" = ( /obj/structure/table/rack, -/obj/item/storage/briefcase/inflatable, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, +/obj/item/storage/bag/inflatable, /turf/simulated/floor/tiled, /area/rnd/xenoarch_atrium) "adS" = ( @@ -2638,7 +2638,7 @@ /area/engineering/storage_sublevel) "agu" = ( /obj/structure/table/rack, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/random/tech_supply, /obj/random/tech_supply, /turf/simulated/floor/tiled, @@ -14980,7 +14980,7 @@ /area/maintenance/medsublevel_port) "aDh" = ( /obj/structure/table/steel, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /turf/simulated/floor/plating, /area/maintenance/medsublevel_port) "aDi" = ( @@ -27871,7 +27871,7 @@ /obj/structure/closet/crate, /obj/item/storage/box/lights/coloredmixed, /obj/item/storage/box/lights/mixed, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/item/device/floor_painter, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/airless, diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm index ef0571151de..2f4493bb9bf 100644 --- a/maps/aurora/aurora-4_mainlevel.dmm +++ b/maps/aurora/aurora-4_mainlevel.dmm @@ -5365,11 +5365,11 @@ /area/engineering/atmos/storage) "akE" = ( /obj/structure/table/standard, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/effect/floor_decal/corner/blue{ dir = 1 }, @@ -20190,13 +20190,13 @@ /area/engineering/engineering_hallway_main) "aIZ" = ( /obj/structure/table/standard, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = -3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 3 }, /obj/machinery/light{ @@ -22581,14 +22581,14 @@ /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) "aNa" = ( -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 6 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = -3 }, /obj/structure/table/reinforced, diff --git a/maps/aurora/aurora-5_interstitial.dmm b/maps/aurora/aurora-5_interstitial.dmm index 6dc82f2cad6..fde7a6de7db 100644 --- a/maps/aurora/aurora-5_interstitial.dmm +++ b/maps/aurora/aurora-5_interstitial.dmm @@ -5177,7 +5177,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/storage/box/lights/coloredmixed, /obj/item/storage/box/lights/mixed, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/item/device/floor_painter, /obj/structure/closet/crate, /turf/simulated/floor/airless, @@ -6563,7 +6563,7 @@ }, /area/mine/unexplored) "wd" = ( -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/structure/table/rack{ dir = 1 }, diff --git a/maps/aurora/aurora-6_surface.dmm b/maps/aurora/aurora-6_surface.dmm index 9445a09064e..fda0d6aae9f 100644 --- a/maps/aurora/aurora-6_surface.dmm +++ b/maps/aurora/aurora-6_surface.dmm @@ -5284,7 +5284,7 @@ }, /obj/item/airbubble, /obj/item/airbubble, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/effect/floor_decal/industrial/outline/yellow, /obj/item/device/flashlight/flare, /obj/item/device/flashlight/flare, diff --git a/maps/exodus/exodus-1_station.dmm b/maps/exodus/exodus-1_station.dmm index 04502f6a902..bd00a80bdba 100644 --- a/maps/exodus/exodus-1_station.dmm +++ b/maps/exodus/exodus-1_station.dmm @@ -59482,11 +59482,11 @@ /turf/simulated/wall/r_wall, /area/engineering/engine_eva) "ciR" = ( -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/machinery/power/apc{ dir = 8; name = "west bump"; @@ -60017,14 +60017,14 @@ dir = 1; pixel_y = -22 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 6 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = -3 }, /obj/structure/table/reinforced/steel, @@ -76853,14 +76853,14 @@ /turf/simulated/floor/tiled, /area/hallway/secondary/exit) "xJl" = ( -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 6 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = -3 }, /obj/structure/table/reinforced, diff --git a/maps/exodus/exodus-2_centcomm.dmm b/maps/exodus/exodus-2_centcomm.dmm index e635afc730d..65a6d81f1db 100644 --- a/maps/exodus/exodus-2_centcomm.dmm +++ b/maps/exodus/exodus-2_centcomm.dmm @@ -5313,19 +5313,19 @@ /obj/item/stack/material/glass/reinforced{ amount = 50 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, @@ -20754,19 +20754,19 @@ /obj/item/stack/material/glass/reinforced{ amount = 50 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, -/obj/item/storage/briefcase/inflatable{ +/obj/item/storage/bag/inflatable{ pixel_x = 3; pixel_y = 3 }, diff --git a/maps/exodus/exodus-5_asteroid.dmm b/maps/exodus/exodus-5_asteroid.dmm index 5e13e357c82..0e932484cd6 100644 --- a/maps/exodus/exodus-5_asteroid.dmm +++ b/maps/exodus/exodus-5_asteroid.dmm @@ -9403,7 +9403,7 @@ /obj/item/clothing/suit/space/void/engineering, /obj/item/clothing/shoes/magboots, /obj/item/clothing/gloves/yellow, -/obj/item/storage/briefcase/inflatable, +/obj/item/storage/bag/inflatable, /obj/machinery/camera/network/engineering_outpost{ c_tag = "Engineering Outpost Storage"; dir = 1