diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm
index dda2565bf1..2857476027 100644
--- a/code/datums/ghost_query.dm
+++ b/code/datums/ghost_query.dm
@@ -126,3 +126,9 @@
question = "A person suspended in cryosleep has been discovered by a crewmember \
and they are attempting to open the cryopod. Would you like to play as the occupant?"
cutoff_number = 1
+
+/datum/ghost_query/corgi_rune
+ role_name = "Dark Creature"
+ question = "A curious explorer has touched a mysterious rune. \
+ Would you like to play as the creature it summons?"
+ cutoff_number = 1
diff --git a/code/game/objects/structures/ghost_pods/ghost_pods.dm b/code/game/objects/structures/ghost_pods/ghost_pods.dm
index 02c5f304f3..03cc4bec3f 100644
--- a/code/game/objects/structures/ghost_pods/ghost_pods.dm
+++ b/code/game/objects/structures/ghost_pods/ghost_pods.dm
@@ -7,6 +7,7 @@
var/icon_state_opened = null // Icon to switch to when 'used'.
var/used = FALSE
var/busy = FALSE // Don't spam ghosts by spamclicking.
+ var/needscharger //For drone pods that want their pod to turn into a charger.
// Call this to get a ghost volunteer.
/obj/structure/ghost_pod/proc/trigger()
@@ -22,8 +23,10 @@
if(winner.len)
var/mob/observer/dead/D = winner[1]
create_occupant(D)
- new /obj/machinery/recharge_station/ghost_pod_recharger(src.loc)
- del(src)
+ icon_state = icon_state_opened
+ if(needscharger)
+ new /obj/machinery/recharge_station/ghost_pod_recharger(src.loc)
+ del(src)
return TRUE
else
return FALSE
diff --git a/code/game/objects/structures/ghost_pods/silicon.dm b/code/game/objects/structures/ghost_pods/silicon.dm
index a204437bc3..4e954afd4e 100644
--- a/code/game/objects/structures/ghost_pods/silicon.dm
+++ b/code/game/objects/structures/ghost_pods/silicon.dm
@@ -10,6 +10,7 @@
density = TRUE
ghost_query_type = /datum/ghost_query/lost_drone
confirm_before_open = TRUE
+ needscharger = TRUE
/obj/structure/ghost_pod/manual/lost_drone/trigger()
..()
@@ -45,6 +46,7 @@
icon_state_opened = "borg_pod_opened"
density = TRUE
ghost_query_type = /datum/ghost_query/gravekeeper_drone
+ needscharger = TRUE
/obj/structure/ghost_pod/automatic/gravekeeper_drone/create_occupant(var/mob/M)
density = FALSE
@@ -58,4 +60,30 @@
R.ckey = M.ckey
visible_message("As \the [src] opens, the eyes of the robot flicker as it is activated.")
R.Namepick()
+ ..()
+
+/obj/structure/ghost_pod/manual/corgi
+ name = "glowing rune"
+ desc = "This rune slowly lights up and goes dim in a repeating pattern, like a slow heartbeat. It's almost as if it's calling out to you to touch it..."
+ description_info = "This will summon some manner of creature through quite dubious means. The creature will be controlled by a player."
+ icon_state = "corgirune"
+ icon_state_opened = "corgirune-inert"
+ density = TRUE
+ ghost_query_type = /datum/ghost_query/corgi_rune
+ confirm_before_open = TRUE
+
+/obj/structure/ghost_pod/manual/corgi/trigger()
+ ..()
+ visible_message("\The [usr] places their hand on the rune!")
+ log_and_message_admins("is attempting to summon a corgi.")
+
+/obj/structure/ghost_pod/manual/corgi/create_occupant(var/mob/M)
+ density = FALSE
+ var/mob/living/simple_animal/corgi/R = new(get_turf(src))
+ if(M.mind)
+ M.mind.transfer_to(R)
+ to_chat(M, "You are a Corgi! Woof!")
+ R.ckey = M.ckey
+ visible_message("With a bright flash of light, \the [src] disappears, and in its place stands a small corgi.")
+ log_and_message_admins("successfully touched \a [src] and summoned a corgi.")
..()
\ No newline at end of file
diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi
index 94d6d1dbb5..230f4f8821 100644
Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ
diff --git a/maps/submaps/surface_submaps/mountains/ritual.dmm b/maps/submaps/surface_submaps/mountains/ritual.dmm
index bf32bc492b..2e93dc0081 100644
--- a/maps/submaps/surface_submaps/mountains/ritual.dmm
+++ b/maps/submaps/surface_submaps/mountains/ritual.dmm
@@ -1,10 +1,10 @@
-"a" = (/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
-"b" = (/obj/structure/plushie/ian,/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
-"c" = (/obj/item/weapon/flame/candle/everburn,/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
-"d" = (/obj/structure/plushie/ian{dir = 8},/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
-"e" = (/obj/structure/plushie/ian{dir = 4},/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
-"f" = (/obj/effect/rune,/obj/item/weapon/deck/tarot,/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
-"g" = (/obj/structure/plushie/ian{dir = 1},/turf/simulated/mineral/floor,/area/submap/CorgiRitual)
+"a" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
+"b" = (/obj/structure/plushie/ian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
+"c" = (/obj/item/weapon/flame/candle/everburn,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
+"d" = (/obj/structure/plushie/ian{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
+"e" = (/obj/structure/plushie/ian{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
+"f" = (/obj/structure/ghost_pod/manual/corgi,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
+"g" = (/obj/structure/plushie/ian{dir = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CorgiRitual)
(1,1,1) = {"
aabaa