Revert "12/21 modernizations from TG live"
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
item_state = "render"
|
||||
force = 15
|
||||
throwforce = 10
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = 3
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
var/charges = 1
|
||||
var/spawn_type = /obj/singularity/wizard
|
||||
@@ -34,6 +34,7 @@
|
||||
icon = 'icons/obj/biomass.dmi'
|
||||
icon_state = "rift"
|
||||
density = 1
|
||||
unacidable = 1
|
||||
anchored = 1
|
||||
var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies
|
||||
var/spawn_amt_left = 20
|
||||
@@ -86,6 +87,8 @@
|
||||
/obj/singularity/wizard
|
||||
name = "tear in the fabric of reality"
|
||||
desc = "This isn't right."
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
icon_state = "singularity_s1"
|
||||
icon = 'icons/effects/224x224.dmi'
|
||||
icon_state = "reality"
|
||||
pixel_x = -96
|
||||
@@ -128,7 +131,7 @@
|
||||
icon_state = "necrostone"
|
||||
item_state = "electronic"
|
||||
origin_tech = "bluespace=4;materials=4"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = 1
|
||||
var/list/spooky_scaries = list()
|
||||
var/unlimited = 0
|
||||
|
||||
@@ -159,7 +162,7 @@
|
||||
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>"
|
||||
M << "<span class='userdanger'>They are your master now, assist them even if it costs you your new life!</span>"
|
||||
|
||||
equip_roman_skeleton(M)
|
||||
|
||||
@@ -170,7 +173,7 @@
|
||||
return
|
||||
|
||||
for(var/X in spooky_scaries)
|
||||
if(!ishuman(X))
|
||||
if(!istype(X, /mob/living/carbon/human))
|
||||
spooky_scaries.Remove(X)
|
||||
continue
|
||||
var/mob/living/carbon/human/H = X
|
||||
@@ -188,8 +191,8 @@
|
||||
H.equip_to_slot_or_del(new hat(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes)
|
||||
H.put_in_hands_or_del(new /obj/item/weapon/shield/riot/roman(H))
|
||||
H.put_in_hands_or_del(new /obj/item/weapon/claymore(H))
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/roman(H), slot_l_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/twohanded/spear(H), slot_back)
|
||||
|
||||
|
||||
@@ -206,14 +209,14 @@ var/global/list/multiverse = list()
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
sharpness = IS_SHARP
|
||||
force = 20
|
||||
throwforce = 10
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
w_class = 2
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
var/faction = list("unassigned")
|
||||
var/cooldown = 0
|
||||
var/assigned = "unassigned"
|
||||
var/evil = TRUE
|
||||
|
||||
/obj/item/weapon/multisword/New()
|
||||
..()
|
||||
@@ -239,20 +242,27 @@ var/global/list/multiverse = list()
|
||||
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."
|
||||
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>"
|
||||
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]"
|
||||
ticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "[user.real_name] Prime"
|
||||
if(!usr.mind.special_role)
|
||||
if(prob(30))
|
||||
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 = usr.mind
|
||||
usr.mind.objectives += hijack_objective
|
||||
hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!"
|
||||
usr << "<B>Objective #[1]</B>: [hijack_objective.explanation_text]"
|
||||
ticker.mode.traitors += usr.mind
|
||||
usr.mind.special_role = "[usr.real_name] Prime"
|
||||
evil = TRUE
|
||||
else
|
||||
user << "<span class='warning'><B>With your new found power you could easily defend the station!</B></span>"
|
||||
var/datum/objective/survive/new_objective = new /datum/objective/survive
|
||||
new_objective.owner = usr.mind
|
||||
new_objective.explanation_text = "Survive, and help defend the innocent from the mobs of multiverse clones."
|
||||
usr << "<B>Objective #[1]</B>: [new_objective.explanation_text]"
|
||||
usr.mind.objectives += new_objective
|
||||
ticker.mode.traitors += usr.mind
|
||||
usr.mind.special_role = "[usr.real_name] Prime"
|
||||
evil = FALSE
|
||||
else
|
||||
var/list/candidates = get_candidates(ROLE_WIZARD)
|
||||
if(candidates.len)
|
||||
@@ -270,16 +280,15 @@ var/global/list/multiverse = list()
|
||||
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)
|
||||
/obj/item/weapon/multisword/proc/spawn_copy(var/client/C, var/turf/T)
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
|
||||
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>"
|
||||
ticker.mode.add_gangster(M.mind, user.mind.gang_datum, FALSE)
|
||||
M.real_name = user.real_name
|
||||
M.name = user.real_name
|
||||
M.faction = list("[user.real_name]")
|
||||
M.mind.name = usr.real_name
|
||||
M << "<B>You are an alternate version of [usr.real_name] from another universe! Help them accomplish their goals at all costs.</B>"
|
||||
M.real_name = usr.real_name
|
||||
M.name = usr.real_name
|
||||
M.faction = list("[usr.real_name]")
|
||||
if(prob(50))
|
||||
var/list/all_species = list()
|
||||
for(var/speciestype in subtypesof(/datum/species))
|
||||
@@ -293,11 +302,30 @@ var/global/list/multiverse = list()
|
||||
M.dna.update_dna_identity()
|
||||
equip_copy(M)
|
||||
|
||||
if(evil)
|
||||
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
|
||||
hijack_objective.owner = M.mind
|
||||
M.mind.objectives += hijack_objective
|
||||
hijack_objective.explanation_text = "Ensure only [usr.real_name] and their copies are on the shuttle!"
|
||||
M << "<B>Objective #[1]</B>: [hijack_objective.explanation_text]"
|
||||
M.mind.special_role = "multiverse traveller"
|
||||
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] hijack.")
|
||||
else
|
||||
var/datum/objective/protect/new_objective = new /datum/objective/protect
|
||||
new_objective.owner = M.mind
|
||||
new_objective.target = usr.mind
|
||||
new_objective.explanation_text = "Protect [usr.real_name], your copy, and help them defend the innocent from the mobs of multiverse clones."
|
||||
M.mind.objectives += new_objective
|
||||
M << "<B>Objective #[1]</B>: [new_objective.explanation_text]"
|
||||
M.mind.special_role = "multiverse traveller"
|
||||
log_game("[M.key] was made a multiverse traveller with the objective to help [usr.real_name] protect the station.")
|
||||
|
||||
/obj/item/weapon/multisword/proc/equip_copy(var/mob/living/carbon/human/M)
|
||||
|
||||
var/obj/item/weapon/multisword/sword = new /obj/item/weapon/multisword
|
||||
sword.assigned = assigned
|
||||
sword.faction = list("[assigned]")
|
||||
sword.evil = evil
|
||||
|
||||
var/randomize = pick("mobster","roman","wizard","cyborg","syndicate","assistant", "animu", "cultist", "highlander", "clown", "killer", "pirate", "soviet", "officer", "gladiator")
|
||||
|
||||
@@ -309,29 +337,29 @@ var/global/list/multiverse = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("roman")
|
||||
var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire)
|
||||
M.equip_to_slot_or_del(new hat(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/roman(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(M), slot_shoes)
|
||||
M.put_in_hands_or_del(new /obj/item/weapon/shield/riot/roman(M))
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/roman(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("wizard")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
if("cyborg")
|
||||
for(var/X in M.bodyparts)
|
||||
var/obj/item/bodypart/affecting = X
|
||||
affecting.change_bodypart_status(BODYPART_ROBOTIC)
|
||||
affecting.change_bodypart_status(ORGAN_ROBOTIC)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("syndicate")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
@@ -341,34 +369,34 @@ var/global/list/multiverse = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M),slot_wear_mask)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("assistant")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("animu")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/kitty(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/schoolgirl/red(M), slot_w_uniform)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("cultist")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("highlander")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("clown")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
|
||||
@@ -376,7 +404,7 @@ var/global/list/multiverse = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_l_store)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("killer")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
|
||||
@@ -388,27 +416,27 @@ var/global/list/multiverse = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
|
||||
M.put_in_hands_or_del(sword)
|
||||
for(var/obj/item/carried_item in M.get_equipped_items())
|
||||
carried_item.add_mob_blood(M)
|
||||
for(var/obj/item/I in M.held_items)
|
||||
I.add_mob_blood(M)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
for(var/obj/item/carried_item in M.contents)
|
||||
if(!istype(carried_item, /obj/item/weapon/implant))
|
||||
carried_item.add_mob_blood(M)
|
||||
|
||||
if("pirate")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("soviet")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/pirate/captain(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/pirate/captain(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("officer")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head)
|
||||
@@ -419,19 +447,20 @@ var/global/list/multiverse = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/jacket/miljacket(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
if("gladiator")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/gladiator(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/gladiator(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
|
||||
M.put_in_hands_or_del(sword)
|
||||
M.equip_to_slot_or_del(sword, slot_r_hand)
|
||||
|
||||
|
||||
else
|
||||
return
|
||||
|
||||
M.update_icons()
|
||||
M.update_body_parts()
|
||||
|
||||
var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id
|
||||
@@ -454,9 +483,8 @@ var/global/list/multiverse = list()
|
||||
var/obj/item/link = null
|
||||
var/cooldown_time = 30 //3s
|
||||
var/cooldown = 0
|
||||
obj_integrity = 10
|
||||
max_integrity = 10
|
||||
resistance_flags = FLAMMABLE
|
||||
burntime = 0
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/voodoo/attackby(obj/item/I, mob/user, params)
|
||||
if(target && cooldown < world.time)
|
||||
@@ -477,7 +505,7 @@ var/global/list/multiverse = list()
|
||||
return
|
||||
|
||||
if(!link)
|
||||
if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL)
|
||||
if(I.loc == user && istype(I) && I.w_class <= 2)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
link = I
|
||||
@@ -553,7 +581,7 @@ var/global/list/multiverse = list()
|
||||
var/area/A = get_area(src)
|
||||
victim << "<span class='notice'>You feel a dark presence from [A.name]</span>"
|
||||
|
||||
/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume)
|
||||
/obj/item/voodoo/fire_act()
|
||||
if(target)
|
||||
target.adjust_fire_stacks(20)
|
||||
target.IgniteMob()
|
||||
@@ -568,76 +596,3 @@ var/global/list/multiverse = list()
|
||||
heal_burn = 25
|
||||
heal_oxy = 25
|
||||
|
||||
//Warp Whistle: Provides uncontrolled long distance teleportation.
|
||||
|
||||
/obj/item/warpwhistle
|
||||
name = "warp whistle"
|
||||
desc = "One toot on this whistle will send you to a far away land!"
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "whistle"
|
||||
var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown
|
||||
var/mob/living/carbon/last_user
|
||||
|
||||
/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user)
|
||||
if(!user || qdeleted(src))
|
||||
on_cooldown = FALSE
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/warpwhistle/attack_self(mob/living/carbon/user)
|
||||
if(!istype(user) || on_cooldown)
|
||||
return
|
||||
on_cooldown = TRUE
|
||||
last_user = user
|
||||
var/turf/T = get_turf(user)
|
||||
playsound(T,'sound/magic/WarpWhistle.ogg', 200, 1)
|
||||
user.canmove = 0
|
||||
PoolOrNew(/obj/effect/overlay/temp/tornado,T)
|
||||
sleep(20)
|
||||
if(interrupted(user))
|
||||
return
|
||||
user.invisibility = INVISIBILITY_MAXIMUM
|
||||
user.status_flags |= GODMODE
|
||||
sleep(20)
|
||||
if(interrupted(user))
|
||||
return
|
||||
var/breakout = 0
|
||||
while(breakout < 50)
|
||||
var/turf/potential_T = find_safe_turf()
|
||||
if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout)
|
||||
user.forceMove(potential_T)
|
||||
user.canmove = 0
|
||||
T = potential_T
|
||||
break
|
||||
breakout += 1
|
||||
PoolOrNew(/obj/effect/overlay/temp/tornado,T)
|
||||
sleep(20)
|
||||
if(interrupted(user))
|
||||
return
|
||||
user.invisibility = initial(user.invisibility)
|
||||
user.status_flags &= ~GODMODE
|
||||
user.canmove = 1
|
||||
on_cooldown = 2
|
||||
sleep(40)
|
||||
on_cooldown = 0
|
||||
|
||||
/obj/item/warpwhistle/Destroy()
|
||||
if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport
|
||||
last_user.invisibility = initial(last_user.invisibility)
|
||||
last_user.status_flags &= ~GODMODE
|
||||
last_user.canmove = 1
|
||||
return ..()
|
||||
|
||||
/obj/effect/overlay/temp/tornado
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "tornado"
|
||||
name = "tornado"
|
||||
desc = "This thing sucks!"
|
||||
layer = FLY_LAYER
|
||||
randomdir = 0
|
||||
duration = 40
|
||||
pixel_x = 500
|
||||
|
||||
/obj/effect/overlay/temp/tornado/New(loc)
|
||||
..()
|
||||
animate(src, pixel_x = -500, time = 40)
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
config_tag = "raginmages"
|
||||
required_players = 20
|
||||
use_huds = 1
|
||||
announce_span = "userdanger"
|
||||
announce_text = "There are many, many wizards attacking the station!\n\
|
||||
<span class='danger'>Wizards</span>: Accomplish your objectives and cause utter catastrophe!\n\
|
||||
<span class='notice'>Crew</span>: Try not to die..."
|
||||
var/max_mages = 0
|
||||
var/making_mage = 0
|
||||
var/mages_made = 1
|
||||
@@ -16,6 +12,10 @@
|
||||
var/spawn_delay_min = 500
|
||||
var/spawn_delay_max = 700
|
||||
|
||||
/datum/game_mode/wizard/announce()
|
||||
world << "<B>The current game mode is - Ragin' Mages!</B>"
|
||||
world << "<B>The <span class='warning'>Space Wizard Federation</span> is pissed, help defeat all the space wizards!</B>"
|
||||
|
||||
/datum/game_mode/wizard/raginmages/post_setup()
|
||||
..()
|
||||
var/playercount = 0
|
||||
@@ -47,7 +47,7 @@
|
||||
for(var/datum/mind/wizard in wizards)
|
||||
if(!istype(wizard.current,/mob/living/carbon))
|
||||
continue
|
||||
if(istype(wizard.current,/mob/living/brain))
|
||||
if(istype(wizard.current,/mob/living/carbon/brain))
|
||||
continue
|
||||
if(wizard.current.stat==DEAD)
|
||||
continue
|
||||
@@ -158,5 +158,3 @@
|
||||
time_check = 250
|
||||
spawn_delay_min = 50
|
||||
spawn_delay_max = 150
|
||||
announce_text = "<span class='userdanger'>CRAAAWLING IIIN MY SKIIIN\n\
|
||||
THESE WOOOUNDS THEY WIIIL NOT HEEEAL</span>"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "soulstone"
|
||||
item_state = "electronic"
|
||||
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefact's power."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = 1
|
||||
slot_flags = SLOT_BELT
|
||||
origin_tech = "bluespace=4;materials=5"
|
||||
var/usability = 0
|
||||
@@ -53,7 +53,7 @@
|
||||
user << "<span class='warning'>There is no power left in the shard.\
|
||||
</span>"
|
||||
return
|
||||
if(!ishuman(M))//If target is not a human.
|
||||
if(!istype(M, /mob/living/carbon/human))//If target is not a human.
|
||||
return ..()
|
||||
if(iscultist(M))
|
||||
user << "<span class='cultlarge'>\"Come now, do not capture your fellow's soul.\"</span>"
|
||||
@@ -200,14 +200,19 @@
|
||||
|
||||
/proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null)
|
||||
var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target)))
|
||||
if(stoner)
|
||||
newstruct.faction |= "\ref[stoner]"
|
||||
newstruct.faction |= "\ref[stoner]"
|
||||
newstruct.key = target.key
|
||||
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>"
|
||||
else if(stoner)
|
||||
if(newstruct.mind)
|
||||
if(stoner && iscultist(stoner) || cultoverride)
|
||||
if(ticker.mode.name == "cult")
|
||||
ticker.mode:add_cultist(newstruct.mind, 0)
|
||||
else
|
||||
ticker.mode.cult += newstruct.mind
|
||||
ticker.mode.update_cult_icons_added(newstruct.mind)
|
||||
newstruct << newstruct.playstyle_string
|
||||
if(iscultist(stoner))
|
||||
newstruct << "<b>You are still bound to serve the cult and [stoner], follow their orders and help them complete their goals at all costs.</b>"
|
||||
else
|
||||
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()
|
||||
|
||||
@@ -215,7 +220,12 @@
|
||||
/obj/item/device/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/U, vic = 0)
|
||||
new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton
|
||||
T.invisibility = INVISIBILITY_ABSTRACT
|
||||
T.dust_animation()
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = T
|
||||
flick("dust-h", animation)
|
||||
qdel(animation)
|
||||
var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src)
|
||||
S.status_flags |= GODMODE //So they won't die inside the stone somehow
|
||||
S.canmove = 0//Can't move out of the soul stone
|
||||
@@ -246,7 +256,7 @@
|
||||
break
|
||||
|
||||
if(!chosen_ghost) //Failing that, we grab a ghost
|
||||
var/list/consenting_candidates = pollCandidates("Would you like to play as a Shade?", "Cultist", null, ROLE_CULTIST, poll_time = 50)
|
||||
var/list/consenting_candidates = pollCandidates("Would you like to play as a Shade?", "Cultist", null, ROLE_CULTIST, poll_time = 100)
|
||||
if(consenting_candidates.len)
|
||||
chosen_ghost = pick(consenting_candidates)
|
||||
if(!T)
|
||||
|
||||
@@ -11,26 +11,17 @@
|
||||
var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell
|
||||
var/buy_word = "Learn"
|
||||
var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook
|
||||
var/list/no_coexistance_typecache //Used so you can't have specific spells together
|
||||
|
||||
/datum/spellbook_entry/New()
|
||||
..()
|
||||
no_coexistance_typecache = typecacheof(no_coexistance_typecache)
|
||||
|
||||
/datum/spellbook_entry/proc/IsAvailible() // For config prefs / gamemode restrictions - these are round applied
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) // Specific circumstances
|
||||
if(book.uses<cost || limit == 0)
|
||||
return 0
|
||||
for(var/spell in user.mind.spell_list)
|
||||
if(is_type_in_typecache(spell, no_coexistance_typecache))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/proc/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) //return 1 on success
|
||||
if(!S || qdeleted(S))
|
||||
S = new spell_type()
|
||||
|
||||
//Check if we got the spell already
|
||||
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
|
||||
@@ -104,25 +95,20 @@
|
||||
|
||||
/datum/spellbook_entry/fireball
|
||||
name = "Fireball"
|
||||
spell_type = /obj/effect/proc_holder/spell/fireball
|
||||
spell_type = /obj/effect/proc_holder/spell/dumbfire/fireball
|
||||
log_name = "FB"
|
||||
|
||||
/datum/spellbook_entry/rod_form
|
||||
name = "Rod Form"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/rod_form
|
||||
log_name = "RF"
|
||||
|
||||
/datum/spellbook_entry/magicm
|
||||
name = "Magic Missile"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
|
||||
log_name = "MM"
|
||||
category = "Defensive"
|
||||
|
||||
/*
|
||||
/datum/spellbook_entry/disintegrate
|
||||
name = "Disintegrate"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate
|
||||
log_name = "DG"
|
||||
|
||||
*/
|
||||
/datum/spellbook_entry/disabletech
|
||||
name = "Disable Tech"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
|
||||
@@ -136,12 +122,6 @@
|
||||
log_name = "RP"
|
||||
category = "Defensive"
|
||||
|
||||
/datum/spellbook_entry/lightningPacket
|
||||
name = "Lightning bolt! Lightning bolt!"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket
|
||||
log_name = "LP"
|
||||
category = "Defensive"
|
||||
|
||||
/datum/spellbook_entry/timestop
|
||||
name = "Time Stop"
|
||||
spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop
|
||||
@@ -169,7 +149,7 @@
|
||||
|
||||
/datum/spellbook_entry/forcewall
|
||||
name = "Force Wall"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/forcewall
|
||||
spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
|
||||
log_name = "FW"
|
||||
category = "Defensive"
|
||||
cost = 1
|
||||
@@ -229,17 +209,9 @@
|
||||
|
||||
/datum/spellbook_entry/infinite_guns
|
||||
name = "Lesser Summon Guns"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns
|
||||
log_name = "IG"
|
||||
cost = 3
|
||||
no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage
|
||||
|
||||
/datum/spellbook_entry/arcane_barrage
|
||||
name = "Arcane Barrage"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage
|
||||
log_name = "AB"
|
||||
cost = 3
|
||||
no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun
|
||||
|
||||
/datum/spellbook_entry/barnyard
|
||||
name = "Barnyard Curse"
|
||||
@@ -287,7 +259,7 @@
|
||||
if(surplus>=0)
|
||||
dat += "[surplus] left.<br>"
|
||||
return dat
|
||||
|
||||
/*
|
||||
/datum/spellbook_entry/item/staffchange
|
||||
name = "Staff of Change"
|
||||
desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself."
|
||||
@@ -306,13 +278,7 @@
|
||||
desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended."
|
||||
item_path = /obj/item/weapon/gun/magic/staff/chaos
|
||||
log_name = "SC"
|
||||
|
||||
/datum/spellbook_entry/item/spellblade
|
||||
name = "Spellblade"
|
||||
desc = "A sword capable of firing blasts of energy which rip targets limb from limb."
|
||||
item_path = /obj/item/weapon/gun/magic/staff/spellblade
|
||||
log_name = "SB"
|
||||
|
||||
*/
|
||||
/datum/spellbook_entry/item/staffdoor
|
||||
name = "Staff of Door Creation"
|
||||
desc = "A particular staff that can mold solid metal into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass."
|
||||
@@ -379,7 +345,7 @@
|
||||
/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
. = ..()
|
||||
if(.)
|
||||
new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them.
|
||||
new /obj/item/clothing/shoes/sandal(get_turf(user)) //In case they've lost them.
|
||||
new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit
|
||||
|
||||
/datum/spellbook_entry/item/contract
|
||||
@@ -412,6 +378,20 @@
|
||||
limit = 3
|
||||
category = "Assistance"
|
||||
|
||||
/datum/spellbook_entry/item/hadesstone
|
||||
name = "Dark Seed"
|
||||
desc = "A small, dark stone that whispers to you menacingly.\
|
||||
The seed calls for the corpses of living beings,\
|
||||
in order to summon an ancient, powerful being.\
|
||||
The power and tenacity of the summoned being directly\
|
||||
correlates to the power of the absorbed beings,\
|
||||
so choose your targets wisely."
|
||||
item_path = /obj/item/hades_summoner
|
||||
cost = 2
|
||||
log_name = "DS"
|
||||
limit = 1
|
||||
category = "Assistance"
|
||||
|
||||
/datum/spellbook_entry/item/mjolnir
|
||||
name = "Mjolnir"
|
||||
desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power."
|
||||
@@ -424,29 +404,16 @@
|
||||
item_path = /obj/item/weapon/twohanded/singularityhammer
|
||||
log_name = "SI"
|
||||
|
||||
/datum/spellbook_entry/item/battlemage
|
||||
name = "Battlemage Armour"
|
||||
desc = "An ensorcelled suit of armour, protected by a powerful shield. The shield can completly negate sixteen attacks before being permanently depleted."
|
||||
item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard
|
||||
log_name = "BM"
|
||||
limit = 1
|
||||
category = "Defensive"
|
||||
|
||||
/datum/spellbook_entry/item/battlemage_charge
|
||||
name = "Battlemage Armour Charges"
|
||||
desc = "A powerful defensive rune, it will grant eight additional charges to a suit of battlemage armour."
|
||||
item_path = /obj/item/wizard_armour_charge
|
||||
log_name = "AC"
|
||||
category = "Defensive"
|
||||
cost = 1
|
||||
|
||||
/datum/spellbook_entry/item/warpwhistle
|
||||
name = "Warp Whistle"
|
||||
desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the begining of every use."
|
||||
item_path = /obj/item/warpwhistle
|
||||
log_name = "WW"
|
||||
category = "Mobility"
|
||||
/datum/spellbook_entry/item/cursed_heart
|
||||
name = "Cursed Heart"
|
||||
desc = "A heart that has been revived by dark magicks, the user must \
|
||||
concentrate to ensure the heart beats, but every beat heals them. It \
|
||||
must beat every 6 seconds. The heart is fickle, and will not work for a \
|
||||
lich."
|
||||
item_path = /obj/item/organ/heart/cursed/wizard
|
||||
log_name = "CH"
|
||||
cost = 1
|
||||
category = "Defensive"
|
||||
|
||||
/datum/spellbook_entry/summon
|
||||
name = "Summon Stuff"
|
||||
@@ -472,6 +439,7 @@
|
||||
|
||||
/datum/spellbook_entry/summon/guns
|
||||
name = "Summon Guns"
|
||||
category = "Rituals"
|
||||
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!"
|
||||
log_name = "SG"
|
||||
|
||||
@@ -483,14 +451,15 @@
|
||||
/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned",log_name)
|
||||
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>"
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/summon/magic
|
||||
name = "Summon Magic"
|
||||
category = "Challenges"
|
||||
desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time."
|
||||
cost = 0
|
||||
log_name = "SU"
|
||||
|
||||
/datum/spellbook_entry/summon/magic/IsAvailible()
|
||||
@@ -500,10 +469,11 @@
|
||||
|
||||
/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned",log_name)
|
||||
rightandwrong(1, user, 25)
|
||||
rightandwrong(1, user, 0)
|
||||
book.uses += 1
|
||||
active = 1
|
||||
playsound(get_turf(user),"sound/magic/CastSummon.ogg",50,1)
|
||||
user << "<span class='notice'>You have cast summon magic!</span>"
|
||||
user << "<span class='notice'>You have cast summon magic and gained an extra charge for your spellbook.</span>"
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/summon/events
|
||||
@@ -539,10 +509,10 @@
|
||||
icon_state ="book"
|
||||
throw_speed = 2
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
persistence_replacement = /obj/item/weapon/spellbook/oneuse/random
|
||||
w_class = 1
|
||||
var/uses = 10
|
||||
var/temp = null
|
||||
var/op = 1
|
||||
var/tab = null
|
||||
var/mob/living/carbon/human/owner
|
||||
var/list/datum/spellbook_entry/entries = list()
|
||||
@@ -692,7 +662,7 @@
|
||||
|
||||
if(H.stat || H.restrained())
|
||||
return
|
||||
if(!ishuman(H))
|
||||
if(!istype(H, /mob/living/carbon/human))
|
||||
return 1
|
||||
|
||||
if(H.mind.special_role == "apprentice")
|
||||
@@ -700,7 +670,7 @@
|
||||
return
|
||||
|
||||
var/datum/spellbook_entry/E = null
|
||||
if(loc == H || (in_range(src, H) && isturf(loc)))
|
||||
if(loc == H || (in_range(src, H) && istype(loc, /turf)))
|
||||
H.set_machine(src)
|
||||
if(href_list["buy"])
|
||||
E = entries[text2num(href_list["buy"])]
|
||||
@@ -731,7 +701,6 @@
|
||||
name = "spellbook of "
|
||||
uses = 1
|
||||
desc = "This template spellbook was never meant for the eyes of man..."
|
||||
persistence_replacement = null
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/New()
|
||||
..()
|
||||
@@ -769,7 +738,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/fireball
|
||||
spell = /obj/effect/proc_holder/spell/fireball
|
||||
spell = /obj/effect/proc_holder/spell/dumbfire/fireball
|
||||
spellname = "fireball"
|
||||
icon_state ="bookfireball"
|
||||
desc = "This book feels warm to the touch."
|
||||
@@ -837,7 +806,7 @@
|
||||
stored_swap = null
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/forcewall
|
||||
spell = /obj/effect/proc_holder/spell/targeted/forcewall
|
||||
spell = /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall
|
||||
spellname = "forcewall"
|
||||
icon_state ="bookforcewall"
|
||||
desc = "This book has a dedication to mimes everywhere inside the front cover."
|
||||
@@ -845,8 +814,10 @@
|
||||
/obj/item/weapon/spellbook/oneuse/forcewall/recoil(mob/user)
|
||||
..()
|
||||
user <<"<span class='warning'>You suddenly feel very solid!</span>"
|
||||
user.Stun(2)
|
||||
user.petrify(30)
|
||||
var/obj/structure/closet/statue/S = new /obj/structure/closet/statue(user.loc, user)
|
||||
S.timer = 30
|
||||
user.drop_item()
|
||||
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/knock
|
||||
spell = /obj/effect/proc_holder/spell/aoe_turf/knock
|
||||
@@ -866,7 +837,7 @@
|
||||
desc = "This book is more horse than your mind has room for."
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/barnyard/recoil(mob/living/carbon/user)
|
||||
if(ishuman(user))
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
user <<"<font size='15' color='red'><b>HOR-SIE HAS RISEN</b></font>"
|
||||
var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead
|
||||
magichead.flags |= NODROP //curses!
|
||||
@@ -905,9 +876,3 @@
|
||||
var/real_type = pick(subtypesof(/obj/item/weapon/spellbook/oneuse))
|
||||
new real_type(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/sacredflame
|
||||
spell = /obj/effect/proc_holder/spell/targeted/sacred_flame
|
||||
spellname = "sacred flame"
|
||||
icon_state ="booksacredflame"
|
||||
desc = "Become one with the flames that burn within... and invite others to do so as well."
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
recommended_enemies = 1
|
||||
enemy_minimum_age = 14
|
||||
round_ends_with_antag_death = 1
|
||||
announce_span = "danger"
|
||||
announce_text = "There is a space wizard attacking the station!\n\
|
||||
<span class='danger'>Wizard</span>: Accomplish your objectives and cause mayhem on the station.\n\
|
||||
<span class='notice'>Crew</span>: Eliminate the wizard before they can succeed!"
|
||||
var/use_huds = 0
|
||||
var/finished = 0
|
||||
|
||||
/datum/game_mode/wizard/announce()
|
||||
world << "<B>The current game mode is - Wizard!</B>"
|
||||
world << "<B>There is a <span class='danger'>SPACE WIZARD</span>\black on the station. You can't let him achieve his objective!</B>"
|
||||
|
||||
/datum/game_mode/wizard/pre_setup()
|
||||
|
||||
var/datum/mind/wizard = pick(antag_candidates)
|
||||
@@ -118,7 +118,10 @@
|
||||
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>"
|
||||
|
||||
wizard.announce_objectives()
|
||||
var/obj_count = 1
|
||||
for(var/datum/objective/objective in wizard.objectives)
|
||||
wizard.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
return
|
||||
|
||||
|
||||
@@ -137,16 +140,14 @@
|
||||
qdel(wizard_mob.wear_suit)
|
||||
qdel(wizard_mob.head)
|
||||
qdel(wizard_mob.shoes)
|
||||
for(var/obj/item/I in wizard_mob.held_items)
|
||||
wizard_mob.unEquip(I)
|
||||
qdel(I)
|
||||
qdel(wizard_mob.r_hand)
|
||||
qdel(wizard_mob.r_store)
|
||||
qdel(wizard_mob.l_store)
|
||||
|
||||
wizard_mob.set_species(/datum/species/human)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_ears)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(wizard_mob), slot_w_uniform)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(wizard_mob), slot_shoes)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(wizard_mob), slot_head)
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(wizard_mob), slot_back)
|
||||
@@ -154,12 +155,13 @@
|
||||
wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(wizard_mob), slot_r_store)
|
||||
var/obj/item/weapon/spellbook/spellbook = new /obj/item/weapon/spellbook(wizard_mob)
|
||||
spellbook.owner = wizard_mob
|
||||
wizard_mob.put_in_hands_or_del(spellbook)
|
||||
wizard_mob.equip_to_slot_or_del(spellbook, slot_r_hand)
|
||||
|
||||
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."
|
||||
wizard_mob.mind.store_memory("<B>Remember:</B> do not forget to prepare your spells.")
|
||||
wizard_mob.update_icons()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -179,9 +181,6 @@
|
||||
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>"
|
||||
|
||||
ticker.news_report = WIZARD_KILLED
|
||||
|
||||
..()
|
||||
return 1
|
||||
|
||||
@@ -246,6 +245,22 @@
|
||||
qdel(spell_to_remove)
|
||||
mind.spell_list -= spell_to_remove
|
||||
|
||||
/*Checks if the wizard can cast spells.
|
||||
Made a proc so this is not repeated 14 (or more) times.*/
|
||||
/mob/proc/casting()
|
||||
//Removed the stat check because not all spells require clothing now.
|
||||
if(!istype(usr:wear_suit, /obj/item/clothing/suit/wizrobe))
|
||||
usr << "I don't feel strong enough without my robe."
|
||||
return 0
|
||||
if(!istype(usr:shoes, /obj/item/clothing/shoes/sandal))
|
||||
usr << "I don't feel strong enough without my sandals."
|
||||
return 0
|
||||
if(!istype(usr:head, /obj/item/clothing/head/wizard))
|
||||
usr << "I don't feel strong enough without my hat."
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
|
||||
//returns whether the mob is a wizard (or apprentice)
|
||||
/proc/iswizard(mob/living/M)
|
||||
return istype(M) && M.mind && ticker && ticker.mode && ((M.mind in ticker.mode.wizards) || (M.mind in ticker.mode.apprentices))
|
||||
|
||||
Reference in New Issue
Block a user