mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-24 16:41:48 +00:00
* [NO GBP] Patches & renaming for `NO_DECONSTRUCTION` flag (#82547) ## About The Pull Request 1. Renames `NO_DECONSTRUCTION` -> `NO_DEBRIS_AFTER_DECONSTRUCTION`. As the name suggests when the object is deconstructed it won't drop any items/debris. After my last refactor for this flag it now serves a new purpose so its name has been changed to match that 2. Fixes objects that are now using `NO_DECONSTRUCTION` incorrectly. Some of these changes include - Removing the flag in objects where there are no means to deconstruct them (e.g. jukebox, hydroponics soil, flora etc) - Replacing the flags old purpose by overriding its tool procs so that it regains its old behaviour(e.g. You once again cannot deconstruct ctf reinforced tables, survival pods, indestructible windows etc) ## Changelog 🆑 code: renamed `NO_DECONSTRUCTION` to `NO_DEBRIS_AFTER_DECONSTRUCTION` so its name matches its intended purpose fix: fixes some items that incorrectly used `NO_DECONSTRUCTION` prior to its refactor, meaning makes some objects non deconstructable again /🆑 * NO DESTRUCTION * Linter fix * Fixes standard RPEDs not working on machines (#82528) ## About The Pull Request Previously, `exchange_parts(...)` would cancel if both the `NO_DECONSTRUCTION` flag was set and you couldn't use your part replacer from a distance.1583cf0cc9/code/game/machinery/_machinery.dm (L958-L959)Our recent removal of `NO_DECONSTRUCTION`, however, has left this to _only_ be the latter.f0ed4ba4ce/code/game/machinery/_machinery.dm (L956-L957)Buuuuut this makes it unconditionally cancel for normal RPEDs, instead of only blocking them if `NO_DECONSTRUCTION` was set. As `NO_DECONSTRUCTION` is very much no longer relevant for this purpose, we simply remove the ranged RPED check altogether. This fixes our issue. ## Why It's Good For The Game Fixes #82525. ## Changelog 🆑 fix: Standard RPEDs work on machines again. /🆑 * Machinery Destroy() side effect clean up (#82659) ## About The Pull Request I have combed over implementations of `Destroy()` for `obj/machinery`, and noticed quite a few was spawning items or playing sounds. **Slot machines**: Moved payout to on_deconstruction() **Windoors**: Break sound moved to on_deconstruction(). I have also slightly cleaned up Destroy(), the windoor calls air_update_turf directly, as that proc already retrieves the turf it is on. **Atmospheric pipe**: Releases air and deconstructs meter objects on_deconstruction(). **Portable atmospheric devices**: Drop hyper noblium crystal on on_destruction(). **Pump, Scrubbers**: Releases air on_deconstruction(). **PACMAN power generator**: Spawns dropped fuel on_deconstruction(). **Runic vendor**: Moved vanishing effects to on_deconstruction(). I did not change Destroy side effects in the following instances: - side effects are critical for the round (e.g. doomsday device, nuke, blackbox recorder dropping the tape, gulag item reclaimer [less critical but still]) - might spawn messages and noises, but moving them to on_deconstruct would put linked items into an unusable state if deleted directly (e.g. express order console, cyborg lockdown console, tram paired sensors) - would potentially delete mobs we don't want deleted (e.g. disposals, slime camera console) Out of 220 Destroy defines, I found only 8 side effects that could not be moved to other procs, so `machinery\Destroy()` has almost always been used properly! I really hope `structure` will be as well made. Other changes: - Stasis beds had a completely empty destroy, removed - Mass drivers had two destroy procs, merged ## Why It's Good For The Game The Destroy() proc should only contain reference clean ups, barring edge cases that would harm playability. ## Changelog Nothing player facing. * Fix linter * icon fix * icon fix again --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: Profakos <profakos@gmail.com>
72 lines
2.7 KiB
Plaintext
72 lines
2.7 KiB
Plaintext
#define SYNDICATE_CHALLENGE_TIMER (20 MINUTES)
|
|
|
|
/obj/machinery/computer/shuttle/syndicate
|
|
name = "syndicate shuttle terminal"
|
|
desc = "The terminal used to control the syndicate transport shuttle."
|
|
circuit = /obj/item/circuitboard/computer/syndicate_shuttle
|
|
icon_screen = "syndishuttle"
|
|
icon_keyboard = "syndie_key"
|
|
light_color = COLOR_SOFT_RED
|
|
req_access = list(ACCESS_SYNDICATE)
|
|
shuttleId = "syndicate"
|
|
possible_destinations = "syndicate_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_custom"
|
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
|
|
|
/obj/machinery/computer/shuttle/syndicate/screwdriver_act(mob/living/user, obj/item/I)
|
|
return NONE
|
|
|
|
/obj/machinery/computer/shuttle/syndicate/launch_check(mob/user)
|
|
. = ..()
|
|
if(!.)
|
|
return FALSE
|
|
var/obj/item/circuitboard/computer/syndicate_shuttle/board = circuit
|
|
if(board?.challenge && world.time < SYNDICATE_CHALLENGE_TIMER)
|
|
to_chat(user, span_warning("You've issued a combat challenge to the station! You've got to give them at least [DisplayTimeText(SYNDICATE_CHALLENGE_TIMER - world.time)] more to allow them to prepare."))
|
|
return FALSE
|
|
board.moved = TRUE
|
|
return TRUE
|
|
|
|
/obj/machinery/computer/shuttle/syndicate/recall
|
|
name = "syndicate shuttle recall terminal"
|
|
desc = "Use this if your friends left you behind."
|
|
possible_destinations = "syndicate_away"
|
|
|
|
/obj/machinery/computer/shuttle/syndicate/drop_pod
|
|
name = "syndicate assault pod control"
|
|
desc = "Controls the drop pod's launch system."
|
|
icon = 'icons/obj/machines/wallmounts.dmi'
|
|
icon_state = "pod_off"
|
|
icon_keyboard = null
|
|
icon_screen = "pod_on"
|
|
light_color = LIGHT_COLOR_BLUE
|
|
req_access = list(ACCESS_SYNDICATE)
|
|
shuttleId = "steel_rain"
|
|
possible_destinations = null
|
|
|
|
/obj/machinery/computer/shuttle/syndicate/drop_pod/launch_check(mob/user)
|
|
. = ..()
|
|
if(!.)
|
|
return FALSE
|
|
if(!is_reserved_level(z))
|
|
to_chat(user, span_warning("Pods are one way!"))
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate
|
|
name = "syndicate shuttle navigation computer"
|
|
desc = "Used to designate a precise transit location for the syndicate shuttle."
|
|
icon_screen = "syndishuttle"
|
|
icon_keyboard = "syndie_key"
|
|
shuttleId = "syndicate"
|
|
lock_override = CAMERA_LOCK_STATION
|
|
shuttlePortId = "syndicate_custom"
|
|
jump_to_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1)
|
|
view_range = 5.5
|
|
x_offset = -7
|
|
y_offset = -1
|
|
whitelist_turfs = list(/turf/open/space, /turf/open/floor/plating, /turf/open/lava, /turf/closed/mineral, /turf/open/openspace, /turf/open/misc)
|
|
see_hidden = TRUE
|
|
circuit = /obj/item/circuitboard/computer/syndicate_shuttle_docker
|
|
|
|
#undef SYNDICATE_CHALLENGE_TIMER
|