mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-30 07:27:57 +01:00
Kills mask of Narsie
This commit is contained in:
@@ -10,8 +10,6 @@
|
||||
CRASH("join_hud(): [M] ([M.type]) is not a mob!")
|
||||
if(M.mind.antag_hud && !slave) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged
|
||||
M.mind.antag_hud.leave_hud(M)
|
||||
if(!ismask(M))//FUCK YOU MASK OF NARNAR!
|
||||
add_to_hud(M)
|
||||
if(self_visible)
|
||||
add_hud_to(M)
|
||||
M.mind.antag_hud = src
|
||||
|
||||
@@ -131,8 +131,6 @@
|
||||
to_chat(mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
|
||||
mob.mutations.Remove(CLUMSY)
|
||||
|
||||
add_cult_viewpoint(mob) // give them a viewpoint
|
||||
|
||||
var/obj/item/weapon/paper/talisman/supply/T = new(mob)
|
||||
var/list/slots = list (
|
||||
"backpack" = slot_in_backpack,
|
||||
@@ -167,21 +165,11 @@
|
||||
to_chat(cult_mob, "\red [pick("You remember something from the dark teachings of your master","You hear a dark voice on the wind","Black blood oozes into your vision and forms into symbols","You have a vision of a [pick("crow","raven","vulture","parrot")] it squawks","You catch a brief glimmer of the otherside")]... [wordexp]")
|
||||
cult_mob.mind.store_memory("<B>You remember that</B> [wordexp]", 0, 0)
|
||||
|
||||
|
||||
/datum/game_mode/proc/add_cult_viewpoint(var/mob/target)
|
||||
for(var/obj/cult_viewpoint/viewpoint in target)
|
||||
return
|
||||
var/obj/cult_viewpoint/viewpoint = new(target)
|
||||
viewpoint.loc = target
|
||||
return viewpoint
|
||||
|
||||
|
||||
/datum/game_mode/proc/add_cultist(datum/mind/cult_mind) //BASE
|
||||
if (!istype(cult_mind))
|
||||
return 0
|
||||
if(!(cult_mind in cult) && is_convertable_to_cult(cult_mind))
|
||||
cult += cult_mind
|
||||
add_cult_viewpoint(cult_mind.current)
|
||||
update_cult_icons_added(cult_mind)
|
||||
cult_mind.current.attack_log += "\[[time_stamp()]\] <span class='danger'>Has been converted to the cult!</span>"
|
||||
if(jobban_isbanned(cult_mind.current, ROLE_CULTIST))
|
||||
@@ -201,9 +189,6 @@
|
||||
to_chat(cult_mind.current, "\red <FONT size = 3><B>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</B></FONT>")
|
||||
cult_mind.memory = ""
|
||||
cult_mind.special_role = null
|
||||
// remove the cult viewpoint object
|
||||
var/obj/viewpoint = getCultViewpoint(cult_mind.current)
|
||||
qdel(viewpoint)
|
||||
|
||||
update_cult_icons_removed(cult_mind)
|
||||
if(show_message)
|
||||
@@ -211,27 +196,7 @@
|
||||
to_chat(M, "<FONT size = 3>[cult_mind.current] looks like they just reverted to their old faith!</FONT>")
|
||||
|
||||
|
||||
/datum/game_mode/proc/add_cult_icon_to_spirit(mob/spirit/currentSpirit)
|
||||
if(!istype(currentSpirit))
|
||||
return FALSE
|
||||
if (currentSpirit.client)
|
||||
var/datum/atom_hud/antag/maskhud = huds[ANTAG_HUD_CULT]
|
||||
maskhud.join_hud(currentSpirit)
|
||||
set_antag_hud(currentSpirit,"hudcultist")
|
||||
|
||||
|
||||
/datum/game_mode/proc/remove_cult_icon_from_spirit(mob/spirit/currentSpirit)
|
||||
if(!istype(currentSpirit))
|
||||
return FALSE
|
||||
if (currentSpirit.client)
|
||||
var/datum/atom_hud/antag/maskhud = huds[ANTAG_HUD_CULT]
|
||||
maskhud.leave_hud(currentSpirit)
|
||||
set_antag_hud(currentSpirit, null)
|
||||
|
||||
|
||||
/datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind)
|
||||
for(var/mob/spirit/currentSpirit in spirits)
|
||||
add_cult_icon_to_spirit(currentSpirit,cult_mind)
|
||||
|
||||
var/datum/atom_hud/antag/culthud = huds[ANTAG_HUD_CULT]
|
||||
culthud.join_hud(cult_mind.current)
|
||||
@@ -240,9 +205,6 @@
|
||||
|
||||
/datum/game_mode/proc/update_cult_icons_removed(datum/mind/cult_mind)
|
||||
|
||||
for(var/mob/spirit/currentSpirit in spirits)
|
||||
remove_cult_icon_from_spirit(currentSpirit,cult_mind)
|
||||
|
||||
var/datum/atom_hud/antag/culthud = huds[ANTAG_HUD_CULT]
|
||||
culthud.leave_hud(cult_mind.current)
|
||||
set_antag_hud(cult_mind.current, null)
|
||||
|
||||
@@ -72,10 +72,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
blood.override = 1
|
||||
for(var/mob/living/silicon/ai/AI in player_list)
|
||||
AI.client.images += blood
|
||||
cult_viewpoints += src
|
||||
|
||||
/obj/effect/rune/Destroy()
|
||||
cult_viewpoints -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/rune/examine(mob/user)
|
||||
|
||||
@@ -541,13 +541,6 @@ var/list/sacrificed = list()
|
||||
return 0
|
||||
to_chat(F, "<small>[time2text(world.timeofday,"hh:mm")] \ref[usr] ([usr.x],[usr.y],[usr.z])</small> || [usr] communicates: [input]<br>")
|
||||
|
||||
var/obj/cult_viewpoint/vp = getCultViewpoint(usr)
|
||||
if (!vp)
|
||||
return 0
|
||||
|
||||
var/displayName = vp.get_display_name()
|
||||
var/cultName = vp.get_cult_name()
|
||||
|
||||
if(istype(src,/obj/effect/rune))
|
||||
usr.say("O bidai nabora se[pick("'","`")]sma!")
|
||||
else
|
||||
@@ -561,14 +554,14 @@ var/list/sacrificed = list()
|
||||
log_say("Cult Message: [key_name(usr)]: [input]")
|
||||
for(var/datum/mind/H in ticker.mode.cult)
|
||||
if (H.current)
|
||||
to_chat(H.current, "<span class='cultspeech'><span class='name'>[cultName]: </span><span class='message'>[input]</span></span>")
|
||||
to_chat(H.current, "<span class='cultspeech'><span class='name'>PLACEHOLDER CHANGE ME: </span><span class='message'>[input]</span></span>")
|
||||
|
||||
for(var/mob/spirit/spirit in spirits)
|
||||
to_chat(spirit, "<span class='cultspeech'><span class='name'><a href='byond://?src=\ref[spirit];track2=\ref[spirit];track=\ref[usr]'>[displayName]: </a></span><span class='message'>[input]</span></span>")
|
||||
to_chat(spirit, "<span class='cultspeech'><span class='name'><a href='byond://?src=\ref[spirit];track2=\ref[spirit];track=\ref[usr]'>PLACEHOLDER: </a></span><span class='message'>[input]</span></span>")
|
||||
|
||||
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
G.show_message("<span class='cultspeech'><span class='name'>[displayName] ([cultName]) ([ghost_follow_link(usr, ghost=G)]): </span><span class='message'>[input]</span></span>")
|
||||
G.show_message("<span class='cultspeech'><span class='name'>PLACEHOLDER ([ghost_follow_link(usr, ghost=G)]): </span><span class='message'>[input]</span></span>")
|
||||
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
@@ -249,7 +249,6 @@
|
||||
if(H.mind in ticker.mode.syndicates)
|
||||
ticker.mode.update_synd_icons_added()
|
||||
if (H.mind in ticker.mode.cult)
|
||||
ticker.mode.add_cult_viewpoint(H)
|
||||
ticker.mode.add_cultist(occupant.mind)
|
||||
ticker.mode.update_cult_icons_added() //So the icon actually appears
|
||||
if(("\ref[H.mind]" in ticker.mode.implanter) || (H.mind in ticker.mode.implanted))
|
||||
|
||||
@@ -270,9 +270,6 @@
|
||||
else if(isobserver(M))
|
||||
M_job = "Ghost"
|
||||
|
||||
else if(isSpirit(M))
|
||||
M_job = (ismask(M)) ? "Mask" : "Spirit"
|
||||
|
||||
M_job = replacetext(M_job, "'", "")
|
||||
M_job = replacetext(M_job, "\"", "")
|
||||
M_job = replacetext(M_job, "\\", "")
|
||||
@@ -360,8 +357,6 @@
|
||||
dat += "<td>Ghost</td>"
|
||||
else if(isalien(M))
|
||||
dat += "<td>Alien</td>"
|
||||
else if(ismask(M))
|
||||
dat += "<td>Mask</td>"
|
||||
else if(isSpirit(M))
|
||||
dat += "<td>Spirit</td>"
|
||||
else
|
||||
|
||||
@@ -1385,15 +1385,6 @@
|
||||
log_admin("[key_name(usr)] AIized [key_name(H)]")
|
||||
H.AIize()
|
||||
|
||||
|
||||
else if(href_list["makemask"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
var/mob/currentMob = locate(href_list["makemask"])
|
||||
message_admins("\red Admin [key_name_admin(usr)] made [key_name_admin(currentMob)] into a Mask of Nar'Sie!", 1)
|
||||
log_admin("[key_name(usr)] made [key_name(currentMob)] into a Mask of Nar'Sie!")
|
||||
currentMob.make_into_mask(0,0)
|
||||
|
||||
|
||||
else if(href_list["makealien"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
|
||||
@@ -169,16 +169,11 @@ proc/isembryo(A)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
proc/isovermind(A)
|
||||
/proc/isovermind(A)
|
||||
if(istype(A, /mob/camera/blob))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/ismask(A)
|
||||
if(istype(A, /mob/spirit/mask))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isAutoAnnouncer(A)
|
||||
if(istype(A, /mob/living/automatedannouncer))
|
||||
return 1
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
|
||||
This file contains the code necessary to do the display code for cult spirits.
|
||||
|
||||
It reuses a lot of code from the AIEye cameraNetwork. In order to work properly, some of those files needed to be modified as well.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/proc/isCultRune(var/viewpoint)
|
||||
var/obj/effect/rune/test_rune = viewpoint
|
||||
if (test_rune)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/proc/isCultViewpoint(var/viewpoint)
|
||||
var/obj/cult_viewpoint/vp = viewpoint
|
||||
if (vp)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/*
|
||||
RUNE JUNK
|
||||
*/
|
||||
|
||||
/obj/effect/rune/proc/can_use()
|
||||
return TRUE
|
||||
|
||||
/obj/effect/rune/proc/can_see()
|
||||
return hear(view_range, get_turf(src))
|
||||
|
||||
@@ -1,227 +0,0 @@
|
||||
/mob/spirit/mask
|
||||
icon = 'icons/mob/spirits/mask.dmi'
|
||||
icon_state = "depressurized"
|
||||
|
||||
/mob/spirit/mask/New()
|
||||
..()
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman(src))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/blood_speech(src))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/shatter_lights(src))
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/go_to_follower()
|
||||
set category = "Mask"
|
||||
set name = "Go to follower"
|
||||
set desc = "Select who you would like to go too."
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
follow_cultist(cultist.owner)
|
||||
cult_log("[key_name_admin(src)] started following [key_name_admin(cultist)].")
|
||||
to_chat(src, "You start following [cultist.get_display_name()].")
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/urge_cultist()
|
||||
set category = "Mask"
|
||||
set name = "Urge cultist"
|
||||
set desc = "Push your cultists to do something."
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
if (cultist.owner)
|
||||
var/newUrge = stripped_input(usr, "", "Set Urge", "")
|
||||
cultist.set_urge(newUrge)
|
||||
to_chat(src, "You urge [cultist.owner.name] to [newUrge].")
|
||||
cult_log("controlled by [key_name_admin(src)] has urged [key_name_admin(cultist.owner)] to [newUrge].")
|
||||
|
||||
/mob/spirit/mask/verb/set_cult_name()
|
||||
set category = "Mask"
|
||||
set name = "Set Cult Name"
|
||||
set desc = "Grant a cultist a name."
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
var/newName = stripped_input(usr, "", "Set Cult Name", "")
|
||||
if (!newName)
|
||||
return
|
||||
cultist.set_cult_name(newName)
|
||||
to_chat(src, "You grant [cultist.owner.name] the secret name of [newName].")
|
||||
if (cultist.owner)
|
||||
cult_log("[key_name_admin(src)] has set [key_name_admin(cultist.owner)] to \'[newName]\'")
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/urge_cult()
|
||||
set category = "Mask"
|
||||
set name = "Urge Cult"
|
||||
set desc = "Set urge on the entire cult."
|
||||
|
||||
var/newUrge = stripped_input(usr, "Please choose an urge.", "Set Urge", "")
|
||||
for(var/obj/cult_viewpoint/viewpoint in cult_viewpoints)
|
||||
viewpoint.set_urge(newUrge)
|
||||
to_chat(src, "You urge the entire cult to [newUrge].")
|
||||
cult_log("[key_name_admin(src)] has urged the entire cult to [newUrge]")
|
||||
|
||||
|
||||
/mob/spirit/mask/verb/set_favor_for_cultist()
|
||||
set category = "Mask"
|
||||
set name = "Show your favor"
|
||||
set desc = "Set the favor for a cultist"
|
||||
|
||||
var/obj/cult_viewpoint/cultist = pick_cultist()
|
||||
if (cultist)
|
||||
if (cultist.owner)
|
||||
var/list/favor = list("Pleased", "Displeased", "Indifference")
|
||||
var/emotion = input("Pick your emotion", "Mask", null, null) in favor
|
||||
switch(emotion)
|
||||
if("Pleased")
|
||||
cultist.set_favor(1)
|
||||
cult_log("[key_name_admin(src)] is pleased with [key_name_admin(cultist.owner)]")
|
||||
if("Displeased")
|
||||
cultist.set_favor(-1)
|
||||
cult_log("[key_name_admin(src)] is displeased with [key_name_admin(cultist.owner)]")
|
||||
if("Indifference")
|
||||
cultist.set_favor(0)
|
||||
cult_log("[key_name_admin(src)] is indifferent too [key_name_admin(cultist.owner)]")
|
||||
|
||||
|
||||
/mob/spirit/mask/proc/set_name()
|
||||
spawn(0)
|
||||
var/newName = stripped_input(src, "Please pick a name.", "Pick Name for Mask", "")
|
||||
name = newName ? newName : "Mask of Nar'sie"
|
||||
to_chat(src, "You have set your name to [name].")
|
||||
|
||||
|
||||
/mob/spirit/mask/proc/pick_cultist()
|
||||
var/list/cultists = list()
|
||||
for(var/obj/cult_viewpoint/viewpoint in cult_viewpoints)
|
||||
cultists[viewpoint.get_display_name()]=viewpoint
|
||||
var/input = input("Please, select a cultist!", "Cult", null, null) as null|anything in cultists
|
||||
var/obj/cult_viewpoint/result = cultists[input]
|
||||
return result
|
||||
|
||||
|
||||
// this proc makes the mask visible very briefly
|
||||
/mob/spirit/mask/proc/flicker()
|
||||
spawn(0)
|
||||
alpha = 127
|
||||
invisibility=0
|
||||
sleep(5)
|
||||
invisibility=initial(invisibility)
|
||||
alpha = 255
|
||||
|
||||
/proc/flicker_mask(mob/spirit/mask/target)
|
||||
if(istype(target))
|
||||
target.flicker()
|
||||
|
||||
// SPELLS
|
||||
/obj/effect/proc_holder/spell/aoe_turf/blood_speech
|
||||
name = "Speak to your Acolytes"
|
||||
desc = "This spell allows you to speak to your flock."
|
||||
school = "unknown evil"
|
||||
charge_type = "recharge"
|
||||
charge_max = 2000
|
||||
clothes_req = 0
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/blood_speech/cast(list/targets)
|
||||
var/input = stripped_input(usr, "Please choose a message to tell your acolytes.", "Voice of Blood", "")
|
||||
if(!input)
|
||||
revert_cast(usr)
|
||||
cult_log("[key_name_admin(usr)]says : [input]")
|
||||
flicker_mask(usr)
|
||||
for(var/datum/mind/H in ticker.mode.cult)
|
||||
if (H.current)
|
||||
to_chat(H.current, "<span class='cultspeech'><font size=3><span class='name'>[usr.name]: </span><span class='message'>[input]</span></font></span>")
|
||||
for(var/mob/spirit/spirit in spirits)
|
||||
to_chat(spirit, "<span class='cultspeech'><font size=3><span class='name'>[usr.name]: </span><span class='message'>[input]</span></font></span>")
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/shatter_lights
|
||||
name = "Spread Shadows"
|
||||
desc = "This spell breaks lights near the mask."
|
||||
school = "unknown evil"
|
||||
charge_type = "recharge"
|
||||
charge_max = 1000
|
||||
clothes_req = 0
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/shatter_lights/cast(list/targets)
|
||||
cult_log("[key_name_admin(usr)] used Spread Shadows.")
|
||||
flicker_mask(usr)
|
||||
spawn(0)
|
||||
for(var/area/A in range(3,get_turf(usr)))
|
||||
for(var/obj/machinery/light/L in A)
|
||||
L.on = 1
|
||||
L.broken()
|
||||
sleep(1)
|
||||
for(var/obj/item/device/flashlight/F in A)
|
||||
F.on = 0
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman
|
||||
name = "Create Talisman"
|
||||
desc = "This spell conjures a talisman"
|
||||
|
||||
school = "conjuration"
|
||||
charge_type = "recharge"
|
||||
charge_max = 3000
|
||||
clothes_req = 0
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
range = 0
|
||||
summon_type = list(/obj/item/weapon/paper/talisman)
|
||||
|
||||
var/list/talismans = list( "Armor"="armor",
|
||||
"Blind"="blind",
|
||||
"Conceal"="conceal",
|
||||
"Communicate"="communicate",
|
||||
"Deafen"="deafen",
|
||||
"EMP"="emp",
|
||||
"Teleport"="teleport",
|
||||
"Tome"="newtome",
|
||||
"Reveal Runes",
|
||||
"Stun"="runestun",
|
||||
"Soul Stone"="soulstone",
|
||||
"Construct"="construct")
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aoe_turf/conjure/create_talisman/cast(list/targets)
|
||||
|
||||
var/talisman = input("Pick a talisman type", "Talisman", null, null) as null|anything in talismans
|
||||
var/imbue_value = talismans[talisman]
|
||||
if (!talisman)
|
||||
to_chat(usr, "You choose not to create a talisman.")
|
||||
revert_cast(usr)
|
||||
return
|
||||
|
||||
cult_log("[key_name_admin(usr,0)] created a talisman of type [talisman].")
|
||||
flicker_mask(usr)
|
||||
|
||||
switch(talisman)
|
||||
|
||||
if ("Teleport")
|
||||
var/target_rune = input("Pick a teleport target", "Teleport Rune", null, null) as null|anything in engwords
|
||||
if (!target_rune)
|
||||
to_chat(usr, "You choose not to create a talisman.")
|
||||
revert_cast(usr)
|
||||
return
|
||||
summon_type = list(/obj/item/weapon/paper/talisman)
|
||||
newVars = list("imbue" = "[target_rune]", "info" = "[target_rune]")
|
||||
|
||||
if ("Soul Stone")
|
||||
summon_type = list(/obj/item/device/soulstone)
|
||||
newVars = list()
|
||||
|
||||
if ("Construct")
|
||||
summon_type = list(/obj/structure/constructshell)
|
||||
newVars = list()
|
||||
|
||||
else
|
||||
summon_type = list(/obj/item/weapon/paper/talisman)
|
||||
newVars = list("imbue" = "[imbue_value]")
|
||||
|
||||
..()
|
||||
@@ -1,20 +0,0 @@
|
||||
/proc/there_can_be_only_one_mask(var/mob/spirit/mask/target)
|
||||
if(!istype(target))
|
||||
return
|
||||
for(var/mob/spirit/mask/currentSpirit in spirits)
|
||||
if(currentSpirit)
|
||||
if(currentSpirit!=target)
|
||||
// create the ghost
|
||||
var/mob/dead/observer/ghost = currentSpirit.ghostize(TRUE)
|
||||
// let the deposed mask respawn immediately, the poor dear
|
||||
ghost.timeofdeath = world.time - 20000
|
||||
ghost.newPlayerType = /mob/new_player/cultist
|
||||
// remove old mask body
|
||||
qdel(currentSpirit)
|
||||
|
||||
|
||||
/mob/new_player/cultist/AttemptLateSpawn(rank)
|
||||
var/mob/newCharacter = ..(rank)
|
||||
if(ticker.mode)
|
||||
if(is_convertable_to_cult(newCharacter.mind))
|
||||
ticker.mode.add_cultist(newCharacter.mind)
|
||||
@@ -29,26 +29,6 @@ mob/spirit/proc/Spirit_Move(direct)
|
||||
// if we're trying to move, we want to stop following our target
|
||||
follow_target = null
|
||||
|
||||
|
||||
/mob/spirit/proc/follow_cultist(mob/living/target as mob)
|
||||
if(!istype(target)) return
|
||||
var/obj/cult_viewpoint/currentView = getCultViewpoint(target)
|
||||
var/mob/spirit/U = usr
|
||||
|
||||
if (!currentView)
|
||||
to_chat(U, "As a spirit, you may only track cultists.")
|
||||
|
||||
U.follow_target = target
|
||||
to_chat(U, "Now following [currentView.get_cult_name()].")
|
||||
|
||||
spawn (0)
|
||||
while (U.follow_target == target)
|
||||
if (U.follow_target == null)
|
||||
return
|
||||
U.setLoc(get_turf(target))
|
||||
sleep(10)
|
||||
|
||||
|
||||
mob/spirit/setLoc(var/T)
|
||||
T = get_turf(T)
|
||||
loc = T
|
||||
|
||||
@@ -64,7 +64,5 @@ mob/spirit/Topic(href, href_list)
|
||||
if (href_list["track"])
|
||||
to_chat(usr, "Got to tracking.")
|
||||
var/mob/target = locate(href_list["track"]) in mob_list
|
||||
var/mob/spirit/A = locate(href_list["track2"]) in spirits
|
||||
if(A && target)
|
||||
A.follow_cultist(target)
|
||||
var/mob/spirit/A = locate(href_list["track2"]) in spirits//should i keep this or no?
|
||||
return
|
||||
@@ -1,203 +0,0 @@
|
||||
#define FAVOR_PLEASED 1
|
||||
#define FAVOR_INDIFFERENT 0
|
||||
#define FAVOR_DISPLEASED -1
|
||||
|
||||
|
||||
var/obj/cult_viewpoint/list/cult_viewpoints = list()
|
||||
|
||||
|
||||
/obj/cult_viewpoint
|
||||
var/view_range = 7
|
||||
var/updating = 0
|
||||
var/mob/owner = null
|
||||
var/urge = ""
|
||||
var/favor = FAVOR_INDIFFERENT
|
||||
var/cult_name = null
|
||||
|
||||
|
||||
/obj/cult_viewpoint/New(var/mob/target)
|
||||
owner = target
|
||||
//src.loc = owner
|
||||
cult_viewpoints+=src
|
||||
//handle_missing_mask()
|
||||
..()
|
||||
|
||||
|
||||
/obj/cult_viewpoint/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
cult_viewpoints-=src
|
||||
return ..()
|
||||
|
||||
|
||||
// VERBS
|
||||
/obj/cult_viewpoint/verb/check_urge()
|
||||
set category = "Cult"
|
||||
set desc = "Discover what your god commands of you."
|
||||
set name = "Check Urge"
|
||||
set src in usr
|
||||
if (src.urge)
|
||||
to_chat(owner, "\red \b You feel the urge to [src.urge]")
|
||||
else
|
||||
to_chat(owner, "\b You feel no supernatural compulsions.")
|
||||
|
||||
|
||||
/obj/cult_viewpoint/verb/reach_out()
|
||||
set category = "Cult"
|
||||
set desc = "Reach out for your gods presence."
|
||||
set name = "Reach Out"
|
||||
set src in usr
|
||||
|
||||
for(var/mob/spirit/mask/currentMask in spirits)
|
||||
if (currentMask.is_active())
|
||||
to_chat(owner, "\red \b You feel the reassuring presence of your god.")
|
||||
to_chat(currentMask, "<span class='cultspeech'><span class='name'><a href='byond://?src=\ref[currentMask];track2=\ref[currentMask];track=\ref[usr]'>[get_display_name()]</a></span><span class='message'> has reached out to you.</span></span>")
|
||||
|
||||
return
|
||||
to_chat(owner, "\b You feel a chilling absence.")
|
||||
handle_missing_mask()
|
||||
|
||||
|
||||
/obj/cult_viewpoint/verb/check_favor()
|
||||
set category = "Cult"
|
||||
set desc = "Check your favor with your god."
|
||||
set name = "Check Favor"
|
||||
set src in usr
|
||||
switch(favor)
|
||||
if(FAVOR_PLEASED)
|
||||
to_chat(owner, "\red \b You bask in your gods favor.")
|
||||
if(FAVOR_INDIFFERENT)
|
||||
to_chat(owner, "\red \b You feel nothing.")
|
||||
if(FAVOR_DISPLEASED)
|
||||
to_chat(owner, "\red \b You cringe at your gods displeasure.")
|
||||
|
||||
|
||||
/obj/cult_viewpoint/verb/pray_to_mask()
|
||||
set category = "Cult"
|
||||
set desc = "Pray to your god"
|
||||
set name = "Pray to Nar'Sie"
|
||||
set src in usr
|
||||
|
||||
var/input = stripped_input(usr, "Please choose a message to say to your god.", "Pray to Nar'Sie", "")
|
||||
if(!input)
|
||||
return
|
||||
|
||||
cult_log("[key_name(usr,0)](Pray):[input]")
|
||||
to_chat(owner, "<span class='cultspeech'><b>You pray to Nar'Sie</b>: [input]</span>")
|
||||
|
||||
for(var/mob/spirit/spirit in spirits)
|
||||
to_chat(spirit, "<span class='cultspeech'><span class='name'><a href='byond://?src=\ref[spirit];track2=\ref[spirit];track=\ref[usr]'>[get_display_name()]</a> prays : </span><span class='message'>[input]</span></span>")
|
||||
|
||||
|
||||
// PROCS
|
||||
/obj/cult_viewpoint/proc/set_favor(var/newFavor)
|
||||
favor = newFavor
|
||||
check_favor()
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/set_urge(var/newUrge)
|
||||
if (!newUrge)
|
||||
src.urge = null
|
||||
src.urge = copytext(newUrge, 1, MAX_MESSAGE_LEN)
|
||||
check_urge()
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/can_use()
|
||||
if (owner.stat != DEAD)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/can_see()
|
||||
return hear(view_range, get_turf(owner))
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/get_cult_name()
|
||||
if (cult_name)
|
||||
return cult_name
|
||||
return "An Unknown Servant"
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/set_cult_name(var/newName)
|
||||
if (!owner)
|
||||
return FALSE
|
||||
if (newName)
|
||||
cult_name = newName
|
||||
to_chat(owner, "\red \b You have been blessed with the secret name of '[newName]'.")
|
||||
else
|
||||
cult_name = null
|
||||
to_chat(owner, "\red \b Your god has taken your secret name.")
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/get_display_name()
|
||||
if(istype(src,/obj/effect/rune))
|
||||
return name
|
||||
if (!owner)
|
||||
return
|
||||
if (cult_name)
|
||||
return cult_name
|
||||
return owner.name
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/become_mask()
|
||||
set category = "Cult"
|
||||
set name = "Become Mask"
|
||||
set desc = "Sacrifice your life and become a Mask of Nar'sie."
|
||||
set src in usr
|
||||
|
||||
cult_log("[key_name(usr,0)] has tried to become a Mask of Nar'sie.")
|
||||
|
||||
if (!active_mask())
|
||||
var/confirm = alert(owner.client, "You are about to become a Mask of Nar'sie. This will destroy your body, and you will only be able to guide the other cultists through communication. Are you sure?", "Confirm Your Sacrifice", "Yes", "No")
|
||||
if(confirm == "Yes")
|
||||
var/transformation_type = alert(owner.client, "You are about to become a Mask. Do you want it to be subtle or violent?", "Mask", "Subtle", "Violent")
|
||||
if(!active_mask())
|
||||
cult_log("[key_name(usr,0)] has become a Mask of Nar'sie.")
|
||||
if (transformation_type=="Subtle")
|
||||
log_admin("[key_name_admin(owner)] has subtly become a Mask of Nar'sie")
|
||||
owner.make_into_mask(0,0)
|
||||
else
|
||||
log_admin("[key_name_admin(owner)] has violently become a Mask of Nar'sie")
|
||||
owner.make_into_mask(1,1)
|
||||
else
|
||||
return
|
||||
else
|
||||
to_chat(owner, "\b You cannot become a mask of Nar'Sie because a Mask already exists.")
|
||||
mask_has_been_found()
|
||||
return
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/active_mask()
|
||||
for(var/mob/spirit/mask/currentMask in spirits)
|
||||
if (currentMask.is_active())
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/handle_missing_mask()
|
||||
if (active_mask())
|
||||
mask_has_been_found()
|
||||
else
|
||||
mask_is_missing()
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/mask_has_been_found()
|
||||
for(var/obj/cult_viewpoint/viewpoint in cult_viewpoints)
|
||||
if (viewpoint.verbs.Find(/obj/cult_viewpoint/proc/become_mask))
|
||||
viewpoint.verbs-=/obj/cult_viewpoint/proc/become_mask
|
||||
|
||||
|
||||
/obj/cult_viewpoint/proc/mask_is_missing()
|
||||
for(var/obj/cult_viewpoint/viewpoint in cult_viewpoints)
|
||||
if (!viewpoint.verbs.Find(/obj/cult_viewpoint/proc/become_mask))
|
||||
viewpoint.verbs+=/obj/cult_viewpoint/proc/become_mask
|
||||
|
||||
|
||||
/proc/getCultViewpoint(var/mob/currentMob)
|
||||
for(var/obj/cult_viewpoint/currentView in currentMob)
|
||||
return currentView
|
||||
return FALSE
|
||||
|
||||
|
||||
#undef FAVOR_PLEASED
|
||||
#undef FAVOR_INDIFFERENT
|
||||
#undef FAVOR_DISPLEASED
|
||||
@@ -70,57 +70,6 @@
|
||||
qdel(src)
|
||||
return O
|
||||
|
||||
/mob/living/carbon/human/make_into_mask(var/should_gib = 0)
|
||||
for(var/t in organs)
|
||||
qdel(t)
|
||||
return ..(should_gib)
|
||||
|
||||
|
||||
/mob/proc/make_into_mask(var/should_gib = 0, var/should_remove_items = 0)
|
||||
|
||||
if(!should_gib)
|
||||
icon = null
|
||||
invisibility = 101
|
||||
|
||||
if(!should_remove_items)
|
||||
for(var/obj/item/W in src)
|
||||
unEquip(W)
|
||||
|
||||
var/mob/spirit/mask/new_spirit = new()
|
||||
|
||||
if(mind)
|
||||
new_spirit.mind = mind
|
||||
new_spirit.mind.assigned_role = "Mask"
|
||||
new_spirit.mind.original = new_spirit
|
||||
|
||||
new_spirit.key = key
|
||||
new_spirit.loc=loc
|
||||
|
||||
if (should_gib)
|
||||
spawn(0)
|
||||
src.gib() // gib the body
|
||||
else
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
src.visible_message( \
|
||||
"[src] disappears into the shadows, never to be seen again.", \
|
||||
"You disappear into the shadows, never to be seen again.", \
|
||||
"You hear strange noise, you can't quite place it.")
|
||||
qdel(src)
|
||||
|
||||
to_chat(new_spirit, "<font color=\"purple\"><b><i>You are a Mask of Nar'sie now. You are a tiny fragment of the unknowable entity that is the god.</b></i></font>")
|
||||
to_chat(new_spirit, "<font color=\"purple\"><b><i>Your job is to help your acolytes complete their goals. Be spooky. Do evil.</b></i></font>")
|
||||
|
||||
new_spirit.set_name()
|
||||
|
||||
// let spirits identify cultists
|
||||
if(ticker.mode)
|
||||
ticker.mode.add_cult_icon_to_spirit(new_spirit)
|
||||
|
||||
// highlander test
|
||||
there_can_be_only_one_mask(new_spirit)
|
||||
|
||||
return new_spirit
|
||||
|
||||
|
||||
//human -> robot
|
||||
/mob/living/carbon/human/proc/Robotize()
|
||||
|
||||
@@ -1635,12 +1635,8 @@
|
||||
#include "code\modules\mob\new_player\poll.dm"
|
||||
#include "code\modules\mob\new_player\preferences_setup.dm"
|
||||
#include "code\modules\mob\new_player\sprite_accessories.dm"
|
||||
#include "code\modules\mob\spirit\cultnet.dm"
|
||||
#include "code\modules\mob\spirit\movement.dm"
|
||||
#include "code\modules\mob\spirit\spirit.dm"
|
||||
#include "code\modules\mob\spirit\viewpoint.dm"
|
||||
#include "code\modules\mob\spirit\mask\mask.dm"
|
||||
#include "code\modules\mob\spirit\mask\respawn.dm"
|
||||
#include "code\modules\nano\nanoexternal.dm"
|
||||
#include "code\modules\nano\nanomanager.dm"
|
||||
#include "code\modules\nano\nanomapgen.dm"
|
||||
|
||||
Reference in New Issue
Block a user