Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
charges--
|
||||
user.visible_message("<span class='boldannounce'>[src] hums with power as [user] deals a blow to [activate_descriptor] itself!</span>")
|
||||
else
|
||||
user << "<span class='danger'>The unearthly energies that powered the blade are now dormant.</span>"
|
||||
to_chat(user, "<span class='danger'>The unearthly energies that powered the blade are now dormant.</span>")
|
||||
|
||||
/obj/effect/rend
|
||||
name = "tear in the fabric of reality"
|
||||
@@ -114,7 +114,7 @@
|
||||
hitsound = 'sound/items/welder2.ogg'
|
||||
|
||||
/obj/item/weapon/scrying/attack_self(mob/user)
|
||||
user << "<span class='notice'>You can see...everything!</span>"
|
||||
to_chat(user, "<span class='notice'>You can see...everything!</span>")
|
||||
visible_message("<span class='danger'>[user] stares into [src], their eyes glazing over.</span>")
|
||||
user.ghostize(1)
|
||||
return
|
||||
@@ -143,23 +143,23 @@
|
||||
return
|
||||
|
||||
if(M.stat != DEAD)
|
||||
user << "<span class='warning'>This artifact can only affect the dead!</span>"
|
||||
to_chat(user, "<span class='warning'>This artifact can only affect the dead!</span>")
|
||||
return
|
||||
|
||||
if(!M.mind || !M.client)
|
||||
user << "<span class='warning'>There is no soul connected to this body...</span>"
|
||||
to_chat(user, "<span class='warning'>There is no soul connected to this body...</span>")
|
||||
return
|
||||
|
||||
check_spooky()//clean out/refresh the list
|
||||
if(spooky_scaries.len >= 3 && !unlimited)
|
||||
user << "<span class='warning'>This artifact can only affect three undead at a time!</span>"
|
||||
to_chat(user, "<span class='warning'>This artifact can only affect three undead at a time!</span>")
|
||||
return
|
||||
|
||||
M.set_species(/datum/species/skeleton, icon_update=0)
|
||||
M.revive(full_heal = 1, admin_revive = 1)
|
||||
spooky_scaries |= M
|
||||
M << "<span class='userdanger'>You have been revived by </span><B>[user.real_name]!</B>"
|
||||
M << "<span class='userdanger'>[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!</span>"
|
||||
to_chat(M, "<span class='userdanger'>You have been revived by </span><B>[user.real_name]!</B>")
|
||||
to_chat(M, "<span class='userdanger'>[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!</span>")
|
||||
|
||||
equip_roman_skeleton(M)
|
||||
|
||||
@@ -226,7 +226,7 @@ var/global/list/multiverse = list()
|
||||
|
||||
/obj/item/weapon/multisword/attack_self(mob/user)
|
||||
if(user.mind.special_role == "apprentice")
|
||||
user << "<span class='warning'>You know better than to touch your teacher's stuff.</span>"
|
||||
to_chat(user, "<span class='warning'>You know better than to touch your teacher's stuff.</span>")
|
||||
return
|
||||
if(cooldown < world.time)
|
||||
var/faction_check = 0
|
||||
@@ -238,19 +238,19 @@ var/global/list/multiverse = list()
|
||||
faction = list("[user.real_name]")
|
||||
assigned = "[user.real_name]"
|
||||
user.faction = list("[user.real_name]")
|
||||
user << "You bind the sword to yourself. You can now use it to summon help."
|
||||
to_chat(user, "You bind the sword to yourself. You can now use it to summon help.")
|
||||
if(!is_gangster(user))
|
||||
var/datum/gang/multiverse/G = new(src, "[user.real_name]")
|
||||
ticker.mode.gangs += G
|
||||
G.bosses += user.mind
|
||||
G.add_gang_hud(user.mind)
|
||||
user.mind.gang_datum = G
|
||||
user << "<span class='warning'><B>With your new found power you could easily conquer the station!</B></span>"
|
||||
to_chat(user, "<span class='warning'><B>With your new found power you could easily conquer the station!</B></span>")
|
||||
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
|
||||
hijack_objective.owner = user.mind
|
||||
user.mind.objectives += hijack_objective
|
||||
hijack_objective.explanation_text = "Ensure only [user.real_name] and their copies are on the shuttle!"
|
||||
user << "<B>Objective #[1]</B>: [hijack_objective.explanation_text]"
|
||||
to_chat(user, "<B>Objective #[1]</B>: [hijack_objective.explanation_text]")
|
||||
ticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "[user.real_name] Prime"
|
||||
else
|
||||
@@ -258,16 +258,16 @@ var/global/list/multiverse = list()
|
||||
if(candidates.len)
|
||||
var/client/C = pick(candidates)
|
||||
spawn_copy(C, get_turf(user.loc), user)
|
||||
user << "<span class='warning'><B>The sword flashes, and you find yourself face to face with...you!</B></span>"
|
||||
to_chat(user, "<span class='warning'><B>The sword flashes, and you find yourself face to face with...you!</B></span>")
|
||||
cooldown = world.time + 400
|
||||
for(var/obj/item/weapon/multisword/M in multiverse)
|
||||
if(M.assigned == assigned)
|
||||
M.cooldown = cooldown
|
||||
|
||||
else
|
||||
user << "You fail to summon any copies of yourself. Perhaps you should try again in a bit."
|
||||
to_chat(user, "You fail to summon any copies of yourself. Perhaps you should try again in a bit.")
|
||||
else
|
||||
user << "<span class='warning'><B>[src] is recharging! Keep in mind it shares a cooldown with the swords wielded by your copies.</span>"
|
||||
to_chat(user, "<span class='warning'><B>[src] is recharging! Keep in mind it shares a cooldown with the swords wielded by your copies.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/multisword/proc/spawn_copy(var/client/C, var/turf/T, mob/user)
|
||||
@@ -275,7 +275,7 @@ var/global/list/multiverse = list()
|
||||
C.prefs.copy_to(M, icon_updates=0)
|
||||
M.key = C.key
|
||||
M.mind.name = user.real_name
|
||||
M << "<B>You are an alternate version of [user.real_name] from another universe! Help them accomplish their goals at all costs.</B>"
|
||||
to_chat(M, "<B>You are an alternate version of [user.real_name] from another universe! Help them accomplish their goals at all costs.</B>")
|
||||
ticker.mode.add_gangster(M.mind, user.mind.gang_datum, FALSE)
|
||||
M.real_name = user.real_name
|
||||
M.name = user.real_name
|
||||
@@ -461,15 +461,15 @@ var/global/list/multiverse = list()
|
||||
/obj/item/voodoo/attackby(obj/item/I, mob/user, params)
|
||||
if(target && cooldown < world.time)
|
||||
if(I.is_hot())
|
||||
target << "<span class='userdanger'>You suddenly feel very hot</span>"
|
||||
to_chat(target, "<span class='userdanger'>You suddenly feel very hot</span>")
|
||||
target.bodytemperature += 50
|
||||
GiveHint(target)
|
||||
else if(is_pointed(I))
|
||||
target << "<span class='userdanger'>You feel a stabbing pain in [parse_zone(user.zone_selected)]!</span>"
|
||||
to_chat(target, "<span class='userdanger'>You feel a stabbing pain in [parse_zone(user.zone_selected)]!</span>")
|
||||
target.Weaken(2)
|
||||
GiveHint(target)
|
||||
else if(istype(I,/obj/item/weapon/bikehorn))
|
||||
target << "<span class='userdanger'>HONK</span>"
|
||||
to_chat(target, "<span class='userdanger'>HONK</span>")
|
||||
target << 'sound/items/AirHorn.ogg'
|
||||
target.adjustEarDamage(0,3)
|
||||
GiveHint(target)
|
||||
@@ -481,7 +481,7 @@ var/global/list/multiverse = list()
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
link = I
|
||||
user << "You attach [I] to the doll."
|
||||
to_chat(user, "You attach [I] to the doll.")
|
||||
update_targets()
|
||||
|
||||
/obj/item/voodoo/check_eye(mob/user)
|
||||
@@ -498,7 +498,7 @@ var/global/list/multiverse = list()
|
||||
if(link)
|
||||
target = null
|
||||
link.loc = get_turf(src)
|
||||
user << "<span class='notice'>You remove the [link] from the doll.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the [link] from the doll.</span>")
|
||||
link = null
|
||||
update_targets()
|
||||
return
|
||||
@@ -516,16 +516,16 @@ var/global/list/multiverse = list()
|
||||
user.reset_perspective(null)
|
||||
user.unset_machine()
|
||||
if("r_leg","l_leg")
|
||||
user << "<span class='notice'>You move the doll's legs around.</span>"
|
||||
to_chat(user, "<span class='notice'>You move the doll's legs around.</span>")
|
||||
var/turf/T = get_step(target,pick(cardinal))
|
||||
target.Move(T)
|
||||
if("r_arm","l_arm")
|
||||
target.click_random_mob()
|
||||
GiveHint(target)
|
||||
if("head")
|
||||
user << "<span class='notice'>You smack the doll's head with your hand.</span>"
|
||||
to_chat(user, "<span class='notice'>You smack the doll's head with your hand.</span>")
|
||||
target.Dizzy(10)
|
||||
target << "<span class='warning'>You suddenly feel as if your head was hit with a hammer!</span>"
|
||||
to_chat(target, "<span class='warning'>You suddenly feel as if your head was hit with a hammer!</span>")
|
||||
GiveHint(target,user)
|
||||
cooldown = world.time + cooldown_time
|
||||
|
||||
@@ -540,10 +540,10 @@ var/global/list/multiverse = list()
|
||||
/obj/item/voodoo/proc/GiveHint(mob/victim,force=0)
|
||||
if(prob(50) || force)
|
||||
var/way = dir2text(get_dir(victim,get_turf(src)))
|
||||
victim << "<span class='notice'>You feel a dark presence from [way]</span>"
|
||||
to_chat(victim, "<span class='notice'>You feel a dark presence from [way]</span>")
|
||||
if(prob(20) || force)
|
||||
var/area/A = get_area(src)
|
||||
victim << "<span class='notice'>You feel a dark presence from [A.name]</span>"
|
||||
to_chat(victim, "<span class='notice'>You feel a dark presence from [A.name]</span>")
|
||||
|
||||
/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume)
|
||||
if(target)
|
||||
|
||||
@@ -32,13 +32,13 @@
|
||||
max_mages = INFINITY
|
||||
/datum/game_mode/wizard/raginmages/greet_wizard(datum/mind/wizard, you_are=1)
|
||||
if (you_are)
|
||||
wizard.current << "<B>You are the Space Wizard!</B>"
|
||||
wizard.current << "<B>The Space Wizards Federation has given you the following tasks:</B>"
|
||||
to_chat(wizard.current, "<B>You are the Space Wizard!</B>")
|
||||
to_chat(wizard.current, "<B>The Space Wizards Federation has given you the following tasks:</B>")
|
||||
|
||||
var/obj_count = 1
|
||||
wizard.current << "<b>Objective Alpha</b>: Make sure the station pays for its actions against our diplomats"
|
||||
to_chat(wizard.current, "<b>Objective Alpha</b>: Make sure the station pays for its actions against our diplomats")
|
||||
for(var/datum/objective/objective in wizard.objectives)
|
||||
wizard.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
to_chat(wizard.current, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
|
||||
obj_count++
|
||||
return
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
continue
|
||||
if(wizard.current.stat==UNCONSCIOUS)
|
||||
if(wizard.current.health < 0)
|
||||
wizard.current << "<font size='4'>The Space Wizard Federation is upset with your performance and have terminated your employment.</font>"
|
||||
to_chat(wizard.current, "<font size='4'>The Space Wizard Federation is upset with your performance and have terminated your employment.</font>")
|
||||
wizard.current.death()
|
||||
continue
|
||||
wizards_alive++
|
||||
@@ -133,7 +133,7 @@
|
||||
/datum/game_mode/wizard/raginmages/declare_completion()
|
||||
if(finished)
|
||||
feedback_set_details("round_end_result","loss - wizard killed")
|
||||
world << "<FONT size=3><B>The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!</B></FONT>"
|
||||
to_chat(world, "<FONT size=3><B>The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!</B></FONT>")
|
||||
..(1)
|
||||
|
||||
/datum/game_mode/wizard/raginmages/proc/makeBody(mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character
|
||||
|
||||
@@ -30,33 +30,31 @@
|
||||
/obj/item/device/soulstone/pickup(mob/living/user)
|
||||
..()
|
||||
if(!iscultist(user) && !iswizard(user) && !usability)
|
||||
user << "<span class='danger'>An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly.</span>"
|
||||
to_chat(user, "<span class='danger'>An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly.</span>")
|
||||
user.Dizzy(120)
|
||||
|
||||
/obj/item/device/soulstone/examine(mob/user)
|
||||
..()
|
||||
if(usability || iscultist(user) || iswizard(user) || isobserver(user))
|
||||
user << "<span class='cult'>A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.</span>"
|
||||
user << "<span class='cult'>The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.</span>"
|
||||
to_chat(user, "<span class='cult'>A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.</span>")
|
||||
to_chat(user, "<span class='cult'>The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.</span>")
|
||||
if(spent)
|
||||
user << "<span class='cult'>This shard is spent; it is now just \
|
||||
a creepy rock.</span>"
|
||||
to_chat(user, "<span class='cult'>This shard is spent; it is now just a creepy rock.</span>")
|
||||
|
||||
//////////////////////////////Capturing////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/device/soulstone/attack(mob/living/carbon/human/M, mob/user)
|
||||
if(!iscultist(user) && !iswizard(user) && !usability)
|
||||
user.Paralyse(5)
|
||||
user << "<span class='userdanger'>Your body is wracked with debilitating pain!</span>"
|
||||
to_chat(user, "<span class='userdanger'>Your body is wracked with debilitating pain!</span>")
|
||||
return
|
||||
if(spent)
|
||||
user << "<span class='warning'>There is no power left in the shard.\
|
||||
</span>"
|
||||
to_chat(user, "<span class='warning'>There is no power left in the shard.</span>")
|
||||
return
|
||||
if(!ishuman(M))//If target is not a human.
|
||||
return ..()
|
||||
if(iscultist(M))
|
||||
user << "<span class='cultlarge'>\"Come now, do not capture your fellow's soul.\"</span>"
|
||||
to_chat(user, "<span class='cultlarge'>\"Come now, do not capture your fellow's soul.\"</span>")
|
||||
return
|
||||
add_logs(user, M, "captured [M.name]'s soul", src)
|
||||
|
||||
@@ -69,7 +67,7 @@
|
||||
return
|
||||
if(!iscultist(user) && !iswizard(user) && !usability)
|
||||
user.Paralyse(5)
|
||||
user << "<span class='userdanger'>Your body is wracked with debilitating pain!</span>"
|
||||
to_chat(user, "<span class='userdanger'>Your body is wracked with debilitating pain!</span>")
|
||||
return
|
||||
for(var/mob/living/simple_animal/shade/A in src)
|
||||
A.status_flags &= ~GODMODE
|
||||
@@ -79,9 +77,9 @@
|
||||
icon_state = "soulstone"
|
||||
name = initial(name)
|
||||
if(iswizard(user) || usability)
|
||||
A << "<b>You have been released from your prison, but you are still bound to [user.real_name]'s will. Help them succeed in their goals at all costs.</b>"
|
||||
to_chat(A, "<b>You have been released from your prison, but you are still bound to [user.real_name]'s will. Help them succeed in their goals at all costs.</b>")
|
||||
else if(iscultist(user))
|
||||
A << "<b>You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs.</b>"
|
||||
to_chat(A, "<b>You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs.</b>")
|
||||
was_used()
|
||||
|
||||
///////////////////////////Transferring to constructs/////////////////////////////////////////////////////
|
||||
@@ -94,17 +92,17 @@
|
||||
/obj/structure/constructshell/examine(mob/user)
|
||||
..()
|
||||
if(iscultist(user) || iswizard(user) || user.stat == DEAD)
|
||||
user << "<span class='cult'>A construct shell, used to house bound souls from a soulstone.</span>"
|
||||
user << "<span class='cult'>Placing a soulstone with a soul into this shell allows you to produce your choice of the following:</span>"
|
||||
user << "<span class='cult'>An <b>Artificer</b>, which can produce <b>more shells and soulstones</b>, as well as fortifications.</span>"
|
||||
user << "<span class='cult'>A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.</span>"
|
||||
user << "<span class='cult'>A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.</span>"
|
||||
to_chat(user, "<span class='cult'>A construct shell, used to house bound souls from a soulstone.</span>")
|
||||
to_chat(user, "<span class='cult'>Placing a soulstone with a soul into this shell allows you to produce your choice of the following:</span>")
|
||||
to_chat(user, "<span class='cult'>An <b>Artificer</b>, which can produce <b>more shells and soulstones</b>, as well as fortifications.</span>")
|
||||
to_chat(user, "<span class='cult'>A <b>Wraith</b>, which does high damage and can jaunt through walls, though it is quite fragile.</span>")
|
||||
to_chat(user, "<span class='cult'>A <b>Juggernaut</b>, which is very hard to kill and can produce temporary walls, but is slow.</span>")
|
||||
|
||||
/obj/structure/constructshell/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/device/soulstone))
|
||||
var/obj/item/device/soulstone/SS = O
|
||||
if(!iscultist(user) && !iswizard(user) && !SS.usability)
|
||||
user << "<span class='danger'>An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly.</span>"
|
||||
to_chat(user, "<span class='danger'>An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly.</span>")
|
||||
user.Dizzy(120)
|
||||
return
|
||||
SS.transfer_soul("CONSTRUCT",src,user)
|
||||
@@ -129,23 +127,23 @@
|
||||
init_shade(T, user)
|
||||
return 1
|
||||
else
|
||||
user << "<span class='userdanger'>Capture failed!</span>: The soul has already fled its mortal frame. You attempt to bring it back..."
|
||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soul has already fled its mortal frame. You attempt to bring it back...")
|
||||
return getCultGhost(T,user)
|
||||
|
||||
if("VICTIM")
|
||||
var/mob/living/carbon/human/T = target
|
||||
if(ticker.mode.name == "cult" && T.mind == ticker.mode:sacrifice_target)
|
||||
if(iscultist(user))
|
||||
user << "<span class='cult'><b>\"This soul is mine.</b></span> <span class='cultlarge'>SACRIFICE THEM!\"</span>"
|
||||
to_chat(user, "<span class='cult'><b>\"This soul is mine.</b></span> <span class='cultlarge'>SACRIFICE THEM!\"</span>")
|
||||
else
|
||||
user << "<span class='danger'>The soulstone doesn't work for no apparent reason.</span>"
|
||||
to_chat(user, "<span class='danger'>The soulstone doesn't work for no apparent reason.</span>")
|
||||
return 0
|
||||
if(contents.len)
|
||||
user << "<span class='userdanger'>Capture failed!</span>: The soulstone is full! Free an existing soul to make room."
|
||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soulstone is full! Free an existing soul to make room.")
|
||||
else
|
||||
if(T.stat != CONSCIOUS)
|
||||
if(T.client == null)
|
||||
user << "<span class='userdanger'>Capture failed!</span>: The soul has already fled its mortal frame. You attempt to bring it back..."
|
||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soul has already fled its mortal frame. You attempt to bring it back...")
|
||||
getCultGhost(T,user)
|
||||
else
|
||||
for(var/obj/item/W in T)
|
||||
@@ -153,12 +151,12 @@
|
||||
init_shade(T, user, vic = 1)
|
||||
qdel(T)
|
||||
else
|
||||
user << "<span class='userdanger'>Capture failed!</span>: Kill or maim the victim first!"
|
||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: Kill or maim the victim first!")
|
||||
|
||||
if("SHADE")
|
||||
var/mob/living/simple_animal/shade/T = target
|
||||
if(contents.len)
|
||||
user << "<span class='userdanger'>Capture failed!</span>: The soulstone is full! Free an existing soul to make room."
|
||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soulstone is full! Free an existing soul to make room.")
|
||||
else
|
||||
T.loc = src //put shade in stone
|
||||
T.status_flags |= GODMODE
|
||||
@@ -166,9 +164,9 @@
|
||||
T.health = T.maxHealth
|
||||
icon_state = "soulstone2"
|
||||
name = "soulstone: Shade of [T.real_name]"
|
||||
T << "<span class='notice'>Your soul has been captured by the soulstone. Its arcane energies are reknitting your ethereal form.</span>"
|
||||
to_chat(T, "<span class='notice'>Your soul has been captured by the soulstone. Its arcane energies are reknitting your ethereal form.</span>")
|
||||
if(user != T)
|
||||
user << "<span class='info'><b>Capture successful!</b>:</span> [T.real_name]'s soul has been captured and stored within the soulstone."
|
||||
to_chat(user, "<span class='info'><b>Capture successful!</b>:</span> [T.real_name]'s soul has been captured and stored within the soulstone.")
|
||||
|
||||
if("CONSTRUCT")
|
||||
var/obj/structure/constructshell/T = target
|
||||
@@ -195,7 +193,7 @@
|
||||
user.drop_item()
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='userdanger'>Creation failed!</span>: The soul stone is empty! Go kill someone!"
|
||||
to_chat(user, "<span class='userdanger'>Creation failed!</span>: The soul stone is empty! Go kill someone!")
|
||||
|
||||
|
||||
/proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null)
|
||||
@@ -206,9 +204,9 @@
|
||||
if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && ticker && ticker.mode)
|
||||
ticker.mode.add_cultist(newstruct.mind, 0)
|
||||
if(iscultist(stoner) || cultoverride)
|
||||
newstruct << "<b>You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.</b>"
|
||||
to_chat(newstruct, "<b>You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.</b>")
|
||||
else if(stoner)
|
||||
newstruct << "<b>You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs.</b>"
|
||||
to_chat(newstruct, "<b>You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs.</b>")
|
||||
newstruct.cancel_camera()
|
||||
|
||||
|
||||
@@ -230,11 +228,11 @@
|
||||
name = "soulstone: Shade of [T.real_name]"
|
||||
icon_state = "soulstone2"
|
||||
if(U && (iswizard(U) || usability))
|
||||
S << "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs."
|
||||
to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs.")
|
||||
else if(U && iscultist(U))
|
||||
S << "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs."
|
||||
to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs.")
|
||||
if(vic && U)
|
||||
U << "<span class='info'><b>Capture successful!</b>:</span> [T.real_name]'s soul has been ripped from their body and stored within the soul stone."
|
||||
to_chat(U, "<span class='info'><b>Capture successful!</b>:</span> [T.real_name]'s soul has been ripped from their body and stored within the soul stone.")
|
||||
|
||||
|
||||
/obj/item/device/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U)
|
||||
@@ -252,7 +250,7 @@
|
||||
if(!T)
|
||||
return 0
|
||||
if(!chosen_ghost)
|
||||
U << "<span class='danger'>There were no spirits willing to become a shade.</span>"
|
||||
to_chat(U, "<span class='danger'>There were no spirits willing to become a shade.</span>")
|
||||
return 0
|
||||
if(contents.len) //If they used the soulstone on someone else in the meantime
|
||||
return 0
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list)
|
||||
if(initial(S.name) == initial(aspell.name)) // Not using directly in case it was learned from one spellbook then upgraded in another
|
||||
if(aspell.spell_level >= aspell.level_max)
|
||||
user << "<span class='warning'>This spell cannot be improved further.</span>"
|
||||
to_chat(user, "<span class='warning'>This spell cannot be improved further.</span>")
|
||||
return 0
|
||||
else
|
||||
aspell.name = initial(aspell.name)
|
||||
@@ -45,24 +45,24 @@
|
||||
aspell.charge_counter = aspell.charge_max
|
||||
switch(aspell.spell_level)
|
||||
if(1)
|
||||
user << "<span class='notice'>You have improved [aspell.name] into Efficient [aspell.name].</span>"
|
||||
to_chat(user, "<span class='notice'>You have improved [aspell.name] into Efficient [aspell.name].</span>")
|
||||
aspell.name = "Efficient [aspell.name]"
|
||||
if(2)
|
||||
user << "<span class='notice'>You have further improved [aspell.name] into Quickened [aspell.name].</span>"
|
||||
to_chat(user, "<span class='notice'>You have further improved [aspell.name] into Quickened [aspell.name].</span>")
|
||||
aspell.name = "Quickened [aspell.name]"
|
||||
if(3)
|
||||
user << "<span class='notice'>You have further improved [aspell.name] into Free [aspell.name].</span>"
|
||||
to_chat(user, "<span class='notice'>You have further improved [aspell.name] into Free [aspell.name].</span>")
|
||||
aspell.name = "Free [aspell.name]"
|
||||
if(4)
|
||||
user << "<span class='notice'>You have further improved [aspell.name] into Instant [aspell.name].</span>"
|
||||
to_chat(user, "<span class='notice'>You have further improved [aspell.name] into Instant [aspell.name].</span>")
|
||||
aspell.name = "Instant [aspell.name]"
|
||||
if(aspell.spell_level >= aspell.level_max)
|
||||
user << "<span class='notice'>This spell cannot be strengthened any further.</span>"
|
||||
to_chat(user, "<span class='notice'>This spell cannot be strengthened any further.</span>")
|
||||
return 1
|
||||
//No same spell found - just learn it
|
||||
feedback_add_details("wizard_spell_learned",log_name)
|
||||
user.mind.AddSpell(S)
|
||||
user << "<span class='notice'>You have learned [S.name].</span>"
|
||||
to_chat(user, "<span class='notice'>You have learned [S.name].</span>")
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/proc/CanRefund(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
@@ -78,7 +78,7 @@
|
||||
/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) //return point value or -1 for failure
|
||||
var/area/wizard_station/A = locate()
|
||||
if(!(user in A.contents))
|
||||
user << "<span clas=='warning'>You can only refund spells at the wizard lair</span>"
|
||||
to_chat(user, "<span clas=='warning'>You can only refund spells at the wizard lair</span>")
|
||||
return -1
|
||||
if(!S)
|
||||
S = new spell_type()
|
||||
@@ -277,6 +277,14 @@
|
||||
category = "Defensive"
|
||||
cost = 1
|
||||
|
||||
/datum/spellbook_entry/the_traps
|
||||
name = "The Traps!"
|
||||
spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/the_traps
|
||||
log_name = "TT"
|
||||
category = "Offensive"
|
||||
cost = 1
|
||||
|
||||
|
||||
/datum/spellbook_entry/item
|
||||
name = "Buy Item"
|
||||
refundable = 0
|
||||
@@ -493,6 +501,25 @@
|
||||
dat += "<b>Already cast!</b><br>"
|
||||
return dat
|
||||
|
||||
/datum/spellbook_entry/summon/ghosts
|
||||
name = "Summon Ghosts"
|
||||
desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilties to frustrate you."
|
||||
log_name = "SGH"
|
||||
|
||||
/datum/spellbook_entry/summon/ghosts/IsAvailible()
|
||||
if(!ticker.mode)
|
||||
return FALSE
|
||||
else
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/weapon/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned", log_name)
|
||||
new /datum/round_event/wizard/ghost()
|
||||
active = TRUE
|
||||
to_chat(user, "<span class='notice'>You have cast summon ghosts!</span>")
|
||||
playsound(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1)
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/guns
|
||||
name = "Summon Guns"
|
||||
desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!"
|
||||
@@ -508,7 +535,7 @@
|
||||
rightandwrong(0, user, 25)
|
||||
active = 1
|
||||
playsound(get_turf(user), 'sound/magic/CastSummon.ogg', 50, 1)
|
||||
user << "<span class='notice'>You have cast summon guns!</span>"
|
||||
to_chat(user, "<span class='notice'>You have cast summon guns!</span>")
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/summon/magic
|
||||
@@ -526,7 +553,7 @@
|
||||
rightandwrong(1, user, 25)
|
||||
active = 1
|
||||
playsound(get_turf(user), 'sound/magic/CastSummon.ogg', 50, 1)
|
||||
user << "<span class='notice'>You have cast summon magic!</span>"
|
||||
to_chat(user, "<span class='notice'>You have cast summon magic!</span>")
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/summon/events
|
||||
@@ -546,7 +573,7 @@
|
||||
summonevents()
|
||||
times++
|
||||
playsound(get_turf(user), 'sound/magic/CastSummon.ogg', 50, 1)
|
||||
user << "<span class='notice'>You have cast summon events.</span>"
|
||||
to_chat(user, "<span class='notice'>You have cast summon events.</span>")
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/summon/events/GetInfo()
|
||||
@@ -574,9 +601,9 @@
|
||||
/obj/item/weapon/spellbook/examine(mob/user)
|
||||
..()
|
||||
if(owner)
|
||||
user << "There is a small signature on the front cover: \"[owner]\"."
|
||||
to_chat(user, "There is a small signature on the front cover: \"[owner]\".")
|
||||
else
|
||||
user << "It appears to have no author."
|
||||
to_chat(user, "It appears to have no author.")
|
||||
|
||||
/obj/item/weapon/spellbook/Initialize()
|
||||
..()
|
||||
@@ -594,16 +621,16 @@
|
||||
if(istype(O, /obj/item/weapon/antag_spawner/contract))
|
||||
var/obj/item/weapon/antag_spawner/contract/contract = O
|
||||
if(contract.used)
|
||||
user << "<span class='warning'>The contract has been used, you can't get your points back now!</span>"
|
||||
to_chat(user, "<span class='warning'>The contract has been used, you can't get your points back now!</span>")
|
||||
else
|
||||
user << "<span class='notice'>You feed the contract back into the spellbook, refunding your points.</span>"
|
||||
to_chat(user, "<span class='notice'>You feed the contract back into the spellbook, refunding your points.</span>")
|
||||
uses++
|
||||
for(var/datum/spellbook_entry/item/contract/CT in entries)
|
||||
if(!isnull(CT.limit))
|
||||
CT.limit++
|
||||
qdel(O)
|
||||
else if(istype(O, /obj/item/weapon/antag_spawner/slaughter_demon))
|
||||
user << "<span class='notice'>On second thought, maybe summoning a demon is a bad idea. You refund your points.</span>"
|
||||
to_chat(user, "<span class='notice'>On second thought, maybe summoning a demon is a bad idea. You refund your points.</span>")
|
||||
uses++
|
||||
for(var/datum/spellbook_entry/item/bloodbottle/BB in entries)
|
||||
if(!isnull(BB.limit))
|
||||
@@ -662,11 +689,11 @@
|
||||
|
||||
/obj/item/weapon/spellbook/attack_self(mob/user)
|
||||
if(!owner)
|
||||
user << "<span class='notice'>You bind the spellbook to yourself.</span>"
|
||||
to_chat(user, "<span class='notice'>You bind the spellbook to yourself.</span>")
|
||||
owner = user
|
||||
return
|
||||
if(user != owner)
|
||||
user << "<span class='warning'>The [name] does not recognize you as its owner and refuses to open!</span>"
|
||||
to_chat(user, "<span class='warning'>The [name] does not recognize you as its owner and refuses to open!</span>")
|
||||
return
|
||||
user.set_machine(src)
|
||||
var/dat = ""
|
||||
@@ -773,8 +800,8 @@
|
||||
recoil(user)
|
||||
else
|
||||
user.mind.AddSpell(S)
|
||||
user <<"<span class='notice'>you rapidly read through the arcane book. Suddenly you realize you understand [spellname]!</span>"
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='orange'>[user.real_name] ([user.ckey]) learned the spell [spellname] ([S]).</font>")
|
||||
user <<"<span class='notice'>You rapidly read through the arcane book. Suddenly you realize you understand [spellname]!</span>"
|
||||
user.log_message("<font color='orange'>learned the spell [spellname] ([S]).</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
onlearned(user)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/proc/recoil(mob/user)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
wizard.assigned_role = "Wizard"
|
||||
wizard.special_role = "Wizard"
|
||||
if(wizardstart.len == 0)
|
||||
wizard.current << "<span class='boldannounce'>A starting location for you could not be found, please report this bug!</span>"
|
||||
to_chat(wizard.current, "<span class='boldannounce'>A starting location for you could not be found, please report this bug!</span>")
|
||||
return 0
|
||||
for(var/datum/mind/wiz in wizards)
|
||||
wiz.current.loc = pick(wizardstart)
|
||||
@@ -115,8 +115,8 @@
|
||||
|
||||
/datum/game_mode/proc/greet_wizard(datum/mind/wizard, you_are=1)
|
||||
if (you_are)
|
||||
wizard.current << "<span class='boldannounce'>You are the Space Wizard!</span>"
|
||||
wizard.current << "<B>The Space Wizards Federation has given you the following tasks:</B>"
|
||||
to_chat(wizard.current, "<span class='boldannounce'>You are the Space Wizard!</span>")
|
||||
to_chat(wizard.current, "<B>The Space Wizards Federation has given you the following tasks:</B>")
|
||||
|
||||
wizard.announce_objectives()
|
||||
return
|
||||
@@ -155,9 +155,9 @@
|
||||
spellbook.owner = wizard_mob
|
||||
wizard_mob.put_in_hands_or_del(spellbook)
|
||||
|
||||
wizard_mob << "You will find a list of available spells in your spell book. Choose your magic arsenal carefully."
|
||||
wizard_mob << "The spellbook is bound to you, and others cannot use it."
|
||||
wizard_mob << "In your pockets you will find a teleport scroll. Use it as needed."
|
||||
to_chat(wizard_mob, "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.")
|
||||
to_chat(wizard_mob, "The spellbook is bound to you, and others cannot use it.")
|
||||
to_chat(wizard_mob, "In your pockets you will find a teleport scroll. Use it as needed.")
|
||||
wizard_mob.mind.store_memory("<B>Remember:</B> do not forget to prepare your spells.")
|
||||
return 1
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
/datum/game_mode/wizard/declare_completion()
|
||||
if(finished)
|
||||
feedback_set_details("round_end_result","loss - wizard killed")
|
||||
world << "<span class='userdanger'>The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!</span>"
|
||||
to_chat(world, "<span class='userdanger'>The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!</span>")
|
||||
|
||||
ticker.news_report = WIZARD_KILLED
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
i++
|
||||
text += "<br>"
|
||||
|
||||
world << text
|
||||
to_chat(world, text)
|
||||
return 1
|
||||
|
||||
//OTHER PROCS
|
||||
|
||||
Reference in New Issue
Block a user