From 17e58231df3b56a4b9fede585d390ab37c71fc56 Mon Sep 17 00:00:00 2001 From: datlo Date: Sun, 4 Feb 2024 22:47:09 +0100 Subject: [PATCH] Adds the pondering orb to the wizard den (#23861) * Pondering orb * fix * reset map * map merge fix test * Update centcomm.dmm * Revert "Update centcomm.dmm" This reverts commit 1ff1a91c80d5904262615b89a5dd9286898b051c. * Revert "map merge fix test" This reverts commit 0b4a71a365b3d29d08945def80aaf73e2e995c3a. * update map * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * make ghostify more generic * add proximity check --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --- _maps/map_files/generic/centcomm.dmm | 5 +--- code/game/gamemodes/cult/runes.dm | 5 +--- code/game/gamemodes/wizard/artefact.dm | 5 +--- code/game/objects/effects/landmarks.dm | 3 -- code/game/objects/structures/pondering_orb.dm | 29 +++++++++++++++++++ .../mob/dead/observer/observer_base.dm | 7 ++++- paradise.dme | 1 + 7 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 code/game/objects/structures/pondering_orb.dm diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 5fbafaf4035..0b38d3b88db 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -747,7 +747,6 @@ /turf/simulated/floor/carpet/black, /area/ghost_bar) "cS" = ( -/obj/effect/landmark/spawner/teleport_scroll, /obj/structure/table/wood/fancy/black, /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet{ name = "our demands"; @@ -7375,9 +7374,7 @@ /area/wizard_station) "Ak" = ( /obj/structure/table/wood/fancy/royalblack, -/obj/item/radio/phone{ - desc = "How else would the wizards order pizza?" - }, +/obj/structure/pondering_orb, /obj/effect/turf_decal/woodsiding{ dir = 6 }, diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 9611bfcdbe0..c46ab304137 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1001,15 +1001,12 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/manifest/proc/ghostify(mob/living/user, turf/T) ADD_TRAIT(user, SCRYING, CULT_TRAIT) - user.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) user.visible_message("[user] freezes statue-still, glowing an unearthly red.", "You see what lies beyond. All is revealed. In this form you find that your voice booms above all others.") - ghost = user.ghostize(TRUE) + ghost = user.ghostize(TRUE, RUNE_COLOR_DARKRED, "Dark Spirit of [user.name]") var/datum/action/innate/cult/comm/spirit/CM = new var/datum/action/innate/cult/check_progress/V = new //var/datum/action/innate/cult/ghostmark/GM = new - ghost.name = "Dark Spirit of [ghost.name]" - ghost.color = "red" CM.Grant(ghost) V.Grant(ghost) //GM.Grant(ghost) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index f6a00c9cf49..2b50fb1de97 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -293,12 +293,9 @@ return in_use = TRUE ADD_TRAIT(user, SCRYING, SCRYING_ORB) - user.add_atom_colour(COLOR_BLUE, ADMIN_COLOUR_PRIORITY) // stolen spirit rune code user.visible_message("[user] stares into [src], [user.p_their()] eyes glazing over.", " You stare into [src], you can see the entire universe!") - ghost = user.ghostize(TRUE) - ghost.name = "Magic Spirit of [ghost.name]" - ghost.color = COLOR_BLUE + ghost = user.ghostize(TRUE, COLOR_BLUE, "Magic Spirit of [user.name]") while(!QDELETED(user)) if(user.key || QDELETED(src)) user.visible_message("[user] blinks, returning to the world around [user.p_them()].", diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 9482984df03..b08762c94cb 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -223,9 +223,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/newplayer_start) //Without this you sp /obj/effect/landmark/spawner/nuclear_bomb/death_squad name = "Death Squad Nuclear Bomb" -/obj/effect/landmark/spawner/teleport_scroll - name = "Teleport-Scroll" - /obj/effect/landmark/spawner/nuke_code name = "nukecode" diff --git a/code/game/objects/structures/pondering_orb.dm b/code/game/objects/structures/pondering_orb.dm new file mode 100644 index 00000000000..2cfbddc9ef6 --- /dev/null +++ b/code/game/objects/structures/pondering_orb.dm @@ -0,0 +1,29 @@ +/obj/structure/pondering_orb + name = "pondering orb" + desc = "Ponder your plans for the station using this farsight artefact." + icon = 'icons/obj/wizard.dmi' + icon_state = "scrying_orb" //TODO : Placeholder sprite + anchored = TRUE + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF + var/mob/dead/observer/ghost // owners ghost when active + +/obj/structure/pondering_orb/attack_hand(mob/user) + ADD_TRAIT(user, SCRYING, SCRYING_ORB) + user.visible_message("[user] stares into [src], [user.p_their()] eyes glazing over.", + "You stare into [src], you can see the entire universe!") + ghost = user.ghostize(TRUE, COLOR_BLUE, "Magic Spirit of [user.name]") + while(!QDELETED(user)) + if(user.key || QDELETED(src)) + user.visible_message("[user] blinks, returning to the world around [user.p_them()].", + "You look away from [src].") + break + if(!Adjacent(user)) + user.grab_ghost() + user.visible_message("[user]'s focus is forced away from [src].", + "Your vision is ripped away from [src].") + break + sleep(5) + if(QDELETED(user)) + return + user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, COLOR_BLUE) + REMOVE_TRAIT(user, SCRYING, SCRYING_ORB) diff --git a/code/modules/mob/dead/observer/observer_base.dm b/code/modules/mob/dead/observer/observer_base.dm index 9174f40d7ce..57ad0d7dc4a 100644 --- a/code/modules/mob/dead/observer/observer_base.dm +++ b/code/modules/mob/dead/observer/observer_base.dm @@ -174,7 +174,7 @@ Works together with spawning an observer, noted above. C.images += target.hud_list[SPECIALROLE_HUD] return 1 -/mob/proc/ghostize(flags = GHOST_CAN_REENTER) +/mob/proc/ghostize(flags = GHOST_CAN_REENTER, user_color, ghost_name) if(key) if(player_logged) //if they have disconnected we want to remove their SSD overlay overlays -= image('icons/effects/effects.dmi', icon_state = "zzz_glow") @@ -186,6 +186,11 @@ Works together with spawning an observer, noted above. ADD_TRAIT(ghost, TRAIT_RESPAWNABLE, GHOSTED) else GLOB.non_respawnable_keys[ckey] = 1 + if(user_color) + add_atom_colour(user_color, ADMIN_COLOUR_PRIORITY) + ghost.color = user_color + if(ghost_name) + ghost.name = ghost_name ghost.key = key return ghost diff --git a/paradise.dme b/paradise.dme index ea423292a23..2b0bb76d7b1 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1224,6 +1224,7 @@ #include "code\game\objects\structures\nest.dm" #include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\plasticflaps.dm" +#include "code\game\objects\structures\pondering_orb.dm" #include "code\game\objects\structures\railings.dm" #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm"