Landmark Shuttles (#8512)

The lifeless live again. Or in this case, what never actually lived here.

Ports Baystation12/Baystation12#17460 probably for real this time. What this allows us to do is create shuttles on runtime and make shuttles easier by just making landmarks and a shuttle instead of areas and shuttles. Also allows runtime landmark creation via flares or whatever AND allows shuttles to use different landmarks at will.

I removed most of the overmap stuff, I think. It shouldn't be hard to slam it in whenever we need to.

Changes:

    "Shuttle code has been completely reworked."
    "Shuttles can now be modified to have more than one destination."
    "Shuttles now have a takeoff sound."
    "You can now throw mobs against walls to damage them. A lot."
    "You now need a neckgrab to throw mobs."
    "BEING UNBUCKLED DURING SHUTTLE LAUNCH IS DANGEROUS! Don't do it."
    "Adminghosts can now interact with all shuttles."
This commit is contained in:
Matt Atlas
2020-04-05 21:15:31 +03:00
committed by GitHub
parent cf7fe3eff7
commit 2e5fdf970c
100 changed files with 15780 additions and 16628 deletions
+32 -23
View File
@@ -148,36 +148,45 @@ datum/unit_test/zas_area_test/
// Here we move a shuttle then test it's area once the shuttle has arrived.
datum/unit_test/zas_supply_shuttle_moved
/datum/unit_test/zas_supply_shuttle_moved
name = "ZAS: Supply Shuttle (When Moved)"
async = TRUE // We're moving the shuttle using built in procs.
var/datum/shuttle/ferry/supply/Shuttle = null
var/datum/shuttle/autodock/ferry/supply/shuttle = null
var/testtime = 0 //Used as a timer.
datum/unit_test/zas_supply_shuttle_moved/start_test()
/datum/unit_test/zas_supply_shuttle_moved/start_test()
if(!SSshuttle)
fail("The shuttle controller is not setup at time of test.")
return 1
if(!SSshuttle.shuttles.len)
if(length(current_map.map_shuttles))
fail("This map should have shuttles, but it doesn't!")
return 1
else
pass("This map is not supposed to have any shuttles.")
return 1
if(!shuttle_controller || !shuttle_controller.shuttles.len)
fail("Shuttle Controller not setup at time of test.")
Shuttle = shuttle_controller.shuttles["Supply"]
SScargo.movetime = 5 // Speed up the shuttle movement.
if(isnull(Shuttle))
fail("Unable to locate the supply shuttle")
shuttle = SScargo.shuttle
if(isnull(shuttle))
return 1
// Initiate the Move.
Shuttle.short_jump(Shuttle.area_offsite, Shuttle.area_station)
SScargo.movetime = 5 // Speed up the shuttle movement.
shuttle.short_jump(shuttle.get_location_waypoint(!shuttle.location))
return 1
datum/unit_test/zas_supply_shuttle_moved/check_result()
if(Shuttle.moving_status == SHUTTLE_IDLE && !Shuttle.at_station())
/datum/unit_test/zas_supply_shuttle_moved/check_result()
if(!shuttle)
pass("This map has no supply shuttle.")
return 1
if(shuttle.moving_status == SHUTTLE_IDLE && !shuttle.at_station())
fail("Shuttle Did not Move")
return 1
if(!Shuttle.at_station())
if(!shuttle.at_station())
return 0
if(!testtime)
@@ -187,15 +196,15 @@ datum/unit_test/zas_supply_shuttle_moved/check_result()
return 0
var/list/test = test_air_in_area(/area/supply/station)
if(isnull(test))
fail("Check Runtimed")
return 1
for(var/area/A in shuttle.shuttle_area)
var/list/test = test_air_in_area(A.type)
if(isnull(test))
fail("Check Runtimed")
return 1
if(test["result"] == SUCCESS)
pass(test["msg"])
else
fail(test["msg"])
switch(test["result"])
if(SUCCESS) pass(test["msg"])
else fail(test["msg"])
return 1
#undef UT_NORMAL