mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 06:00:16 +01:00
Damaged window and broken machine helpers (#75132)
## About The Pull Request Added a helper that makes it possible to spawn broken machines without var-editing. Removed the damaged reinforced window spawner and added a general damaged window helper working on any first window found on a tile. <img width="787" alt="2" src="https://user-images.githubusercontent.com/3625094/235808169-c6143606-52e8-4bb7-bab4-e7ce3d359eb2.PNG"> <img width="787" alt="1" src="https://user-images.githubusercontent.com/3625094/235808160-688f56eb-269a-4019-8c1c-2819cc3a4432.PNG"> ## Why It's Good For The Game Less var edits, better tools for mappers, more immersive ruins. ## Changelog 🆑 qol: Mapping: Added broken machine map helper qol: Mapping: Replaced damaged window spawner with a universal helper /🆑
This commit is contained in:
@@ -208,18 +208,6 @@
|
||||
return
|
||||
open_machine()
|
||||
|
||||
/obj/effect/spawner/structure/window/reinforced/damaged
|
||||
name = "damaged reinforced window spawner"
|
||||
spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/fulltile/damaged)
|
||||
|
||||
/obj/structure/window/reinforced/fulltile/damaged
|
||||
var/integrity_min_factor = 0.2
|
||||
var/integrity_max_factor = 0.8
|
||||
|
||||
/obj/structure/window/reinforced/fulltile/damaged/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_integrity = rand(max_integrity * integrity_min_factor, max_integrity * integrity_max_factor)
|
||||
|
||||
/obj/item/petri_dish/oldstation
|
||||
name = "molly's biopsy"
|
||||
desc = "You can see a moldy piece of sandwich inside the dish. Maybe it helped to preserve the bacteria for that long."
|
||||
|
||||
@@ -1137,3 +1137,85 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
|
||||
var/turf/open/floor/floor = get_turf(src)
|
||||
floor.burn_tile()
|
||||
qdel(src)
|
||||
|
||||
///Applies BROKEN flag to the first found machine on a tile
|
||||
/obj/effect/mapping_helpers/broken_machine
|
||||
name = "broken machine helper"
|
||||
icon_state = "broken_machine"
|
||||
layer = ABOVE_OBJ_LAYER
|
||||
late = TRUE
|
||||
|
||||
/obj/effect/mapping_helpers/broken_machine/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
log_mapping("[src] spawned outside of mapload!")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
var/obj/machinery/target = locate(/obj/machinery) in loc
|
||||
if(isnull(target))
|
||||
var/area/target_area = get_area(target)
|
||||
log_mapping("[src] failed to find a machine at [AREACOORD(src)] ([target_area.type]).")
|
||||
else
|
||||
payload(target)
|
||||
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/effect/mapping_helpers/broken_machine/LateInitialize()
|
||||
. = ..()
|
||||
var/obj/machinery/target = locate(/obj/machinery) in loc
|
||||
|
||||
if(isnull(target))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
target.update_appearance()
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mapping_helpers/broken_machine/proc/payload(obj/machinery/airalarm/target)
|
||||
if(target.machine_stat & BROKEN)
|
||||
var/area/area = get_area(target)
|
||||
log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to break [target] but it's already broken!")
|
||||
target.set_machine_stat(target.machine_stat | BROKEN)
|
||||
|
||||
///Deals random damage to the first window found on a tile to appear cracked
|
||||
/obj/effect/mapping_helpers/damaged_window
|
||||
name = "damaged window helper"
|
||||
icon_state = "damaged_window"
|
||||
layer = ABOVE_OBJ_LAYER
|
||||
late = TRUE
|
||||
/// Minimum roll of integrity damage in percents
|
||||
var/integrity_min_factor = 0.2
|
||||
/// Maximum roll of integrity damage in percents
|
||||
var/integrity_max_factor = 0.8
|
||||
|
||||
/obj/effect/mapping_helpers/damaged_window/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!mapload)
|
||||
log_mapping("[src] spawned outside of mapload!")
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
var/obj/structure/window/target = locate(/obj/structure/window) in loc
|
||||
if(isnull(target))
|
||||
var/area/target_area = get_area(target)
|
||||
log_mapping("[src] failed to find a window at [AREACOORD(src)] ([target_area.type]).")
|
||||
else
|
||||
payload(target)
|
||||
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/effect/mapping_helpers/damaged_window/LateInitialize()
|
||||
. = ..()
|
||||
var/obj/structure/window/target = locate(/obj/structure/window) in loc
|
||||
|
||||
if(isnull(target))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
target.update_appearance()
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mapping_helpers/damaged_window/proc/payload(obj/structure/window/target)
|
||||
if(target.get_integrity() < target.max_integrity)
|
||||
var/area/area = get_area(target)
|
||||
log_mapping("[src] at [AREACOORD(src)] [(area.type)] tried to damage [target] but it's already damaged!")
|
||||
target.take_damage(rand(target.max_integrity * integrity_min_factor, target.max_integrity * integrity_max_factor))
|
||||
|
||||
Reference in New Issue
Block a user