Files
Paradise/code/modules/shuttle/assault_pod.dm
warriorstar-orion 525c68d617 Attack chain, initial setup. (pull *immediately* for *any* TM issues) (#26834)
* refactor: Attack chain, initial setup.

* migrate curtain to make dreamchecker happy

* update thurible

* don't call attacked_by separately for legacy attack chain

* remove duplicate proc

* condense similar code, put allowances for legacy code in new procs

* update docs, include diagram source

* add comment on how to update diagram

* fix admonition

* mindflayer updates

* remove commented out code

* clarify all steps

* after_attack should be overridable

* whoops

* retrofit recent changes

* duh, can't restrict this yet because of tool_acts

* i hate ore bags with the fire of a thousand suns

* return correct value for object attack logic

* Various cleanups.

We don't want to attempt to pull stuff out of `/obj/item/attackby`,
because those pieces are part of the related objects' migrations, not
`/obj/item` itself. Attempting to do this causes knockon effects where
things expected to call e.g. `/obj/item/storage/attackby` in the call
chain were not ferried over to the new item interaction code, because
the related objects hadn't actually been migrated over yet.

I've used refactoring /obj/vehicle as the example for migrating
`attackby` methods instead.

* simplify some argument names

* fuck it

* make it do the thing

* Rename CI module call

* Prove that CI works

* improve test output

* aaand fix it again

* fix curtain tool interactions

* fix compile error

* fix compile error

* Better docs, introduce migration plan tool.
2024-12-02 23:36:36 +00:00

63 lines
1.7 KiB
Plaintext

/obj/docking_port/mobile/assault_pod
name = "assault pod"
id = "steel_rain"
dwidth = 3
width = 7
height = 7
/obj/docking_port/mobile/assault_pod/request()
if(z == initial(src.z)) //No launching pods that have already launched
return ..()
/obj/docking_port/mobile/assault_pod/dock(obj/docking_port/stationary/S1)
..()
if(!istype(S1, /obj/docking_port/stationary/transit))
playsound(get_turf(src.loc), 'sound/effects/explosion1.ogg',50,1)
/obj/item/assault_pod
name = "Assault Pod Targetting Device"
icon = 'icons/obj/device.dmi'
icon_state = "gangtool-red"
item_state = "walkietalkie"
desc = "Used to select a landing zone for assault pods."
var/shuttle_id = "steel_rain"
var/dwidth = 3
var/dheight = 0
var/width = 7
var/height = 7
var/lz_dir = 1
/obj/item/assault_pod/attack_self__legacy__attackchain(mob/living/user)
var/target_area
target_area = tgui_input_list(user, "Area to land", "Select a Landing Zone", SSmapping.teleportlocs)
if(!target_area)
return
var/area/picked_area = SSmapping.teleportlocs[target_area]
if(!src || QDELETED(src))
return
var/turf/T = safepick(get_area_turfs(picked_area))
if(!T)
return
var/obj/docking_port/stationary/landing_zone = new /obj/docking_port/stationary(T)
landing_zone.id = "assault_pod(\ref[src])"
landing_zone.name = "Landing Zone"
landing_zone.dwidth = dwidth
landing_zone.dheight = dheight
landing_zone.width = width
landing_zone.height = height
landing_zone.dir = lz_dir
landing_zone.register() //new docking ports must be registered
for(var/obj/machinery/computer/shuttle/S in GLOB.machines)
if(S.shuttleId == shuttle_id)
S.possible_destinations = "[landing_zone.id]"
to_chat(user, "Landing zone set.")
qdel(src)