diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index ffcb5ac231..ff68f18408 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -188,6 +188,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define islandmine(A) (istype(A, /obj/effect/mine)) +#define issupplypod(A) (istype(A, /obj/structure/closet/supplypod)) + #define isammocasing(A) (istype(A, /obj/item/ammo_casing)) #define isidcard(I) (istype(I, /obj/item/card/id)) diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index cc3cc93028..6404be94c4 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -66,7 +66,7 @@ if(isammocasing(parent)) num_pellets = magnitude - else if(isgrenade(parent) || islandmine(parent)) + else if(isgrenade(parent) || islandmine(parent) || issupplypod(parent)) radius = magnitude /datum/component/pellet_cloud/Destroy(force, silent) @@ -86,9 +86,11 @@ RegisterSignal(parent, COMSIG_GRENADE_PRIME, .proc/create_blast_pellets) else if(islandmine(parent)) RegisterSignal(parent, COMSIG_MINE_TRIGGERED, .proc/create_blast_pellets) + else if(issupplypod(parent)) + RegisterSignal(parent, COMSIG_SUPPLYPOD_LANDED, .proc/create_blast_pellets) /datum/component/pellet_cloud/UnregisterFromParent() - UnregisterSignal(parent, list(COMSIG_PARENT_PREQDELETED, COMSIG_PELLET_CLOUD_INIT, COMSIG_GRENADE_PRIME, COMSIG_GRENADE_ARMED, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UNCROSSED, COMSIG_MINE_TRIGGERED, COMSIG_ITEM_DROPPED)) + UnregisterSignal(parent, list(COMSIG_PARENT_PREQDELETED, COMSIG_PELLET_CLOUD_INIT, COMSIG_GRENADE_PRIME, COMSIG_GRENADE_ARMED, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UNCROSSED, COMSIG_MINE_TRIGGERED, COMSIG_ITEM_DROPPED, COMSIG_SUPPLYPOD_LANDED)) /** * create_casing_pellets() is for directed pellet clouds for ammo casings that have multiple pellets (buckshot and scatter lasers for instance) diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 2d2c0f31b6..913d73bdad 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -52,7 +52,8 @@ /obj/item/choice_beacon/proc/spawn_option(atom/choice,mob/living/M) var/obj/new_item = create_choice_atom(choice, M) - var/obj/structure/closet/supplypod/bluespacepod/pod = new() + var/area/pod_storage_area = locate(/area/centcom/supplypod/podStorage) in GLOB.sortedAreas + var/obj/structure/closet/supplypod/bluespacepod/pod = new(pick(get_area_turfs(pod_storage_area))) //Lets just have it in the pod storage zone for a really short time because we don't want it in nullspace pod.explosionSize = list(0,0,0,0) new_item.forceMove(pod) var/msg = "After making your selection, you notice a strange target on the ground. It might be best to step back!" diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index 500e6d8ffe..77fbd6c6bd 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -72,7 +72,7 @@ holder = user_mob.client //if its a mob, assign the mob's client to holder bay = locate(/area/centcom/supplypod/loading/one) in GLOB.sortedAreas //Locate the default bay (one) from the centcom map bayNumber = bay.loading_id //Used as quick reference to what bay we're taking items from - var/area/pod_storage_area = locate(/area/centcom/supplypod/pod_storage) in GLOB.sortedAreas + var/area/pod_storage_area = locate(/area/centcom/supplypod/podStorage) in GLOB.sortedAreas temp_pod = new(pick(get_area_turfs(pod_storage_area))) //Create a new temp_pod in the podStorage area on centcom (so users are free to look at it and change other variables if needed) orderedArea = createOrderedArea(bay) //Order all the turfs in the selected bay (top left to bottom right) to a single list. Used for the "ordered" mode (launchChoice = 1) selector = new(null, holder.mob) @@ -638,7 +638,7 @@ refreshView() /area/centcom/supplypod/pod_storage/Initialize(mapload) //temp_pod holding area - . = ..() + . = ..() var/obj/imgbound = locate() in locate(200,SUPPLYPOD_X_OFFSET*-4.5, 1) call(GLOB.podlauncher, "RegisterSignal")(imgbound, "ct[GLOB.podstyles[14][9]]", "[GLOB.podstyles[14][10]]dlauncher") @@ -702,10 +702,11 @@ /datum/centcom_podlauncher/proc/launch(turf/target_turf) //Game time started if (isnull(target_turf)) return - var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result + var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod, sameloc = TRUE) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result toLaunch.update_icon()//we update_icon() here so that the door doesnt "flicker on" right after it lands - var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] - toLaunch.forceMove(shippingLane) + //We don't have this area, lets just have it where we had the temp pod + //var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] + //toLaunch.forceMove(shippingLane) if (launchClone) //We arent launching the actual items from the bay, rather we are creating clones and launching those if(launchRandomItem) var/launch_candidate = pick_n_take(launchList) diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index 2a233b9116..efac62c930 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -11,7 +11,7 @@ allow_dense = TRUE delivery_icon = null can_weld_shut = FALSE - armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 100, BIO = 0, RAD = 0, FIRE = 100, ACID = 80) + armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) anchored = TRUE //So it cant slide around after landing anchorable = FALSE flags_1 = PREVENT_CONTENTS_EXPLOSION_1 @@ -167,7 +167,7 @@ . += decal return else if (GLOB.podstyles[style][POD_SHAPE] != POD_SHAPE_NORML) //If we're not a normal pod shape (aka, if we don't have fins), just add the door without masking - . += door + . += door else var/icon/masked_door = new(icon, door) //The door we want to apply var/icon/fin_masker = new(icon, "mask_[fin_mask]") //The fin shape we want to 'cut out' of the door