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