[MIRROR] Immovable rod meets unstoppable tram [MDB IGNORE] (#23299)

* Immovable rod meets unstoppable tram (#77656)

## About The Pull Request

Adds interaction between immovable rod and the tram for the rare
occasions the rod hits it at the front or back while flying at a
parallel angle.

The rod will push/pull the tram in the direction it's flying until a
short distance past the tram's usual landmark, eventually winning and
carrying on.

- Only applies to random rods, if the rod has a target it will ignore
the tram as usual.
- Looping rod only pushes the tram once.
- As long as the tram has power, can be returned to the rails as usual
by calling it.

## Why It's Good For The Game

When the HoP is having a really unlucky day.

https://github.com/tgstation/tgstation/assets/83487515/2f0393cd-f796-4b00-8674-d97e57358543

https://github.com/tgstation/tgstation/assets/83487515/f74c8497-8d62-4fcf-80a0-da7259160b7f

## Changelog

🆑 LT3
add: Immovable rod will now battle the unstoppable tram should they
cross paths
fix: Birdshot's maint tram doors now work properly
fix: Tramstation's exterior light fixtures no longer get destroyed as
soon as the tram moves
code: Tram landmarks are now all subtyped instead of map varedits
/🆑

* Immovable rod meets unstoppable tram

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-08-25 01:06:58 +02:00
committed by GitHub
parent 3f9fec7b03
commit a4fae9cdb5
13 changed files with 1562 additions and 1352 deletions
@@ -527,22 +527,26 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999))
to_chat(user, "No vacated rooms.")
return .
/obj/effect/landmark/lift_id/hilbert
/obj/effect/landmark/lift_id/hilbert/research
specific_lift_id = HILBERT_TRAM
/obj/effect/landmark/tram/hilbert/left
/obj/effect/landmark/tram/nav/hilbert/research
name = HILBERT_TRAM
specific_lift_id = TRAM_NAV_BEACONS
/obj/effect/landmark/tram/platform/hilbert/left
name = "Port"
specific_lift_id = HILBERT_TRAM
platform_code = HILBERT_PORT
tgui_icons = list("Reception" = "briefcase", "Botany" = "leaf", "Chemistry" = "flask")
/obj/effect/landmark/tram/hilbert/middle
/obj/effect/landmark/tram/platform/hilbert/middle
name = "Central"
specific_lift_id = HILBERT_TRAM
platform_code = HILBERT_CENTRAL
tgui_icons = list("Processing" = "cogs", "Xenobiology" = "paw")
/obj/effect/landmark/tram/hilbert/right
/obj/effect/landmark/tram/platform/hilbert/right
name = "Starboard"
specific_lift_id = HILBERT_TRAM
platform_code = HILBERT_STARBOARD