Adds the Bluespace Drop Pod upgrade to the cargo express console (#34560)

Researching an upgrade disk from RnD allows you to upgrade the Express Supply Console (#33436).

Instead of normal drop pods, which crash then stick around until you dissassemble them, the console will call down new Bluespace Drop Pods, which will teleport out after crashing (and bring about a slightly smaller crash-explosion too!)

🆑 MrDoomBringer
add: The RnD department can now develop firmware upgrades to the Express Supply Console, unlocking advanced cargo drop pods!
/🆑

why: adds a little bit more techweb-integrated progression to cargo, also part of a compromise from #34374.

oh, also repaths bsdroppod.dm to supplypod.dm
This commit is contained in:
MrDoomBringer
2018-01-23 02:35:59 -05:00
committed by oranges
parent 781a95ddcb
commit 9ec4f2fe3f
8 changed files with 139 additions and 88 deletions
@@ -1,84 +0,0 @@
//The "BDPtarget" temp visual is created by the expressconsole, which in turn makes two things: a falling droppod animation, and the droppod itself.
//------------------------------------BLUESPACE DROP POD-------------------------------------//
/obj/structure/closet/bsdroppod
name = "Supply Drop Pod"
desc = "A Nanotrasen supply drop pod."
icon = 'icons/obj/2x2.dmi'
icon_state = "BDP"
pixel_x = -16//2x2 sprite
pixel_y = -5
layer = TABLE_LAYER//so that the crate inside doesn't appear underneath
allow_objects = TRUE
allow_dense = TRUE
delivery_icon = null
can_weld_shut = FALSE
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
anchored = TRUE
anchorable = FALSE
var/datum/supply_order/SupplyOrder
/obj/structure/closet/bsdroppod/Initialize(mapload, datum/supply_order/so)
. = ..()
SupplyOrder = so//uses Supply Order passed from expressconsole into BDPtarget
addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing
/obj/structure/closet/bsdroppod/update_icon()
cut_overlays()
if (opened)
add_overlay("BDP_open")
else
add_overlay("BDP_door")
/obj/structure/closet/bsdroppod/toggle(mob/living/user)
return
/obj/structure/closet/bsdroppod/open()
var/turf/T = get_turf(src)
opened = TRUE
SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf
update_icon()
playsound(src, open_sound, 15, 1, -3)
/obj/structure/closet/bsdroppod/Destroy()//make some sparks b4 deletion
QDEL_NULL(SupplyOrder)
return ..()
//------------------------------------FALLING BLUESPACE DROP POD-------------------------------------//
/obj/effect/temp_visual/BDPfall
icon = 'icons/obj/2x2.dmi'
icon_state = "BDP_falling"
pixel_x = -16
pixel_y = -5
pixel_z = 200
name = "Bluespace Drop Pod"
desc = "Get out of the way!"
layer = FLY_LAYER//that wasnt flying, that was falling with style!
randomdir = FALSE
//------------------------------------TEMPORARY_VISUAL-------------------------------------//
/obj/effect/BDPtarget
icon = 'icons/mob/actions/actions_items.dmi'
icon_state = "sniper_zoom"
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
light_range = 2
var/obj/effect/temp_visual/fallingPod
/obj/effect/BDPtarget/Initialize(mapload, datum/supply_order/SO)
. = ..()
addtimer(CALLBACK(src, .proc/beginLaunch, SO), 30)//wait 3 seconds
/obj/effect/BDPtarget/proc/beginLaunch(datum/supply_order/SO)
fallingPod = new /obj/effect/temp_visual/BDPfall(drop_location())
animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod
addtimer(CALLBACK(src, .proc/endLaunch, SO), 3, TIMER_CLIENT_TIME)//fall 0.3seconds
/obj/effect/BDPtarget/proc/endLaunch(datum/supply_order/SO)
new /obj/structure/closet/bsdroppod(drop_location(), SO)//pod is created
explosion(src,0,0,2, flame_range = 2) //explosion and camshake (shoutout to @cyberboss)
qdel(src)
/obj/effect/BDPtarget/Destroy()
QDEL_NULL(fallingPod)//delete falling pod after animation's over
return ..()
@@ -0,0 +1,118 @@
//The "BDPtarget" temp visual is created by the expressconsole, which in turn makes two things: a falling droppod animation, and the droppod itself.
//------------------------------------SUPPLY POD-------------------------------------//
/obj/structure/closet/supplypod
name = "Supply Drop Pod"
desc = "A Nanotrasen supply drop pod."
icon = 'icons/obj/2x2.dmi'
icon_state = "supplypod"
pixel_x = -16//2x2 sprite
pixel_y = -5
layer = TABLE_LAYER//so that the crate inside doesn't appear underneath
allow_objects = TRUE
allow_dense = TRUE
delivery_icon = null
can_weld_shut = FALSE
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
anchored = TRUE
anchorable = FALSE
var/datum/supply_order/SupplyOrder
/obj/structure/closet/supplypod/bluespacepod
name = "Bluespace Drop Pod"
desc = "A Nanotrasen Bluespace drop pod. Teleports back to Centcom after delivery."
icon_state = "bluespacepod"
/obj/structure/closet/supplypod/Initialize(mapload, datum/supply_order/so)
. = ..()
SupplyOrder = so//uses Supply Order passed from expressconsole into BDPtarget
addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing
/obj/structure/closet/supplypod/update_icon()
cut_overlays()
if (opened)
add_overlay("[icon_state]_open")
else
add_overlay("[icon_state]_door")
/obj/structure/closet/supplypod/bluespacepod/tool_interact(obj/item/W, mob/user)
return TRUE
/obj/structure/closet/supplypod/toggle(mob/living/user)
return
/obj/structure/closet/supplypod/open()
var/turf/T = get_turf(src)
opened = TRUE
SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf
update_icon()
playsound(src, open_sound, 15, 1, -3)
if(istype(src,/obj/structure/closet/supplypod/bluespacepod))
addtimer(CALLBACK(src, .proc/sparks), 30)//if bluespace, then 3 seconds after opening, make some sparks and delete
/obj/structure/closet/supplypod/proc/sparks()//sparks cant be called from addtimer
do_sparks(5, TRUE, src)
qdel(src)//no need for QDEL_IN if we already have a timer
/obj/structure/closet/supplypod/Destroy()//make some sparks b4 deletion
QDEL_NULL(SupplyOrder)
return ..()
//------------------------------------FALLING SUPPLY POD-------------------------------------//
/obj/effect/temp_visual/DPfall
icon = 'icons/obj/2x2.dmi'
pixel_x = -16
pixel_y = -5
pixel_z = 200
desc = "Get out of the way!"
layer = FLY_LAYER//that wasnt flying, that was falling with style!
randomdir = FALSE
/obj/effect/temp_visual/DPfall/Initialize(var/dropLocation, var/podID)
if (podID == 1)
icon_state = "bluespacepod_falling"
name = "Bluespace Drop Pod"
else
icon_state = "supplypod_falling"
name = "Supply Drop Pod"
. = ..()
//------------------------------------TEMPORARY_VISUAL-------------------------------------//
/obj/effect/DPtarget
icon = 'icons/mob/actions/actions_items.dmi'
icon_state = "sniper_zoom"
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
light_range = 2
var/obj/effect/temp_visual/fallingPod
/obj/effect/DPtarget/Initialize(mapload, datum/supply_order/SO, var/podID)
. = ..()
addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), 30)//wait 3 seconds
/obj/effect/DPtarget/proc/beginLaunch(datum/supply_order/SO, var/podID)
fallingPod = new /obj/effect/temp_visual/DPfall(drop_location(), podID)
animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod
addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds
/obj/effect/DPtarget/proc/endLaunch(datum/supply_order/SO, var/podID)
if (podID == 1)//podID 1 = bluespace supplypod, podID 0 = standard supplypod
new /obj/structure/closet/supplypod/bluespacepod(drop_location(), SO)//pod is created
explosion(src,0,0,2, flame_range = 1) //explosion and camshake (shoutout to @cyberboss)
else
new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created
explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing
qdel(src)
/obj/effect/DPtarget/Destroy()
QDEL_NULL(fallingPod)//delete falling pod after animation's over
return ..()
//------------------------------------UPGRADES-------------------------------------//
/obj/item/disk/cargo/bluespace_pod
name = "Bluespace Drop Pod Upgrade"
desc = "This disk provides a firmware update to the Express Supply Console, granting the use of Nanotrasen's Bluespace Drop Pods to the supply department."
icon = 'icons/obj/module.dmi'
icon_state = "cargodisk"
item_state = "card-id"
w_class = WEIGHT_CLASS_SMALL