Ghostrap update and minor fixes (#2019)

-moves skeleton minions,wizard familiars and syndicate borgs to the ghost trap system
-allow syndicate command and deathsquid to deploy their suit fully when equipped
-fix some wrong hardsuit modules names in rd
-fix immortal skeletons being able to spam immortality
-removes the alien death proc
-fix items not dropping when hands, feet or heads are cut off
-removes the paint from cargo spam
This commit is contained in:
Alberyk
2017-04-01 18:10:55 -03:00
committed by skull132
parent 59e7377798
commit ae5ebc19f1
14 changed files with 143 additions and 308 deletions
+19 -3
View File
@@ -29,13 +29,10 @@ var/datum/antagonist/deathsquad/mercenary/commandos
under.attackby(hold, player)
player.equip_to_slot_or_del(under, slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(player), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(player), slot_gloves)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(player), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(player), slot_wear_mask)
player.equip_to_slot_or_del(new /obj/item/ammo_magazine/c45m(player), slot_l_store)
player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_r_store)
player.equip_to_slot_or_del(new /obj/item/weapon/rig/merc(player), slot_back)
player.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/rifle/sts35(player), slot_l_hand)
var/obj/item/weapon/storage/belt/military/syndie_belt = new(player)
@@ -49,6 +46,25 @@ var/datum/antagonist/deathsquad/mercenary/commandos
syndie_belt.contents += new /obj/item/weapon/grenade/frag
syndie_belt.contents += new /obj/item/weapon/plastique
player.equip_to_slot_or_del(syndie_belt, slot_belt)
var/obj/item/weapon/rig/merc/mercrig = new(get_turf(player))
mercrig.seal_delay = 0
player.put_in_hands(mercrig)
player.equip_to_slot_or_del(mercrig,slot_back)
if(mercrig)
mercrig.toggle_seals(src,1)
mercrig.seal_delay = initial(mercrig.seal_delay)
if(istype(player.back,/obj/item/weapon/rig))
var/obj/item/weapon/rig/rig = player.back
if(rig.air_supply)
player.internal = rig.air_supply
spawn(10)
if(player.internal)
player.internals.icon_state = "internal1"
else
player << "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>"
var/obj/item/weapon/card/id/id = create_id("Commando", player)
id.access |= get_all_accesses()
+20 -4
View File
@@ -39,9 +39,7 @@ var/datum/antagonist/deathsquad/deathsquad
under.attackby(hold, player)
player.equip_to_slot_or_del(under, slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(player), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(player), slot_gloves)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(player), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/tactical(player), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(player), slot_wear_mask)
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(player), slot_l_ear)
if (player.mind == leader)
@@ -51,7 +49,6 @@ var/datum/antagonist/deathsquad/deathsquad
player.equip_to_slot_or_del(new /obj/item/weapon/plastique(player), slot_l_store)
player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_r_store)
player.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/rifle/pulse(player), slot_l_hand)
player.equip_to_slot_or_del(new /obj/item/weapon/rig/ert/assetprotection(player), slot_back)
var/obj/item/weapon/storage/belt/security/tactical/commando_belt = new(player)
commando_belt.contents += new /obj/item/ammo_magazine/a357
@@ -65,6 +62,25 @@ var/datum/antagonist/deathsquad/deathsquad
commando_belt.contents += new /obj/item/weapon/grenade/frag
player.equip_to_slot_or_del(commando_belt, slot_belt)
var/obj/item/weapon/rig/ert/assetprotection/mercrig = new(get_turf(player))
mercrig.seal_delay = 0
player.put_in_hands(mercrig)
player.equip_to_slot_or_del(mercrig,slot_back)
if(mercrig)
mercrig.toggle_seals(src,1)
mercrig.seal_delay = initial(mercrig.seal_delay)
if(istype(player.back,/obj/item/weapon/rig))
var/obj/item/weapon/rig/rig = player.back
if(rig.air_supply)
player.internal = rig.air_supply
spawn(10)
if(player.internal)
player.internals.icon_state = "internal1"
else
player << "<span class='danger'>You forgot to turn on your internals! Quickly, toggle the valve!</span>"
var/obj/item/weapon/card/id/id = create_id("Asset Protection", player)
if(id)
id.access |= get_all_station_access()
+18 -53
View File
@@ -10,10 +10,7 @@
throw_speed = 1
throw_range = 5
w_class = 1.0
var/used = 0
/obj/item/weapon/antag_spawner/proc/spawn_antag(var/client/C, var/turf/T, var/type = "")
return
var/uses = 1
/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target as mob)
return
@@ -23,56 +20,24 @@
desc = "A single-use teleporter used to deploy a Syndicate Cyborg on the field. Due to budget restrictions, it is only possible to deploy a single cyborg at time."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
var/searching = 0
var/askDelay = 10 * 60 * 1
/obj/item/weapon/antag_spawner/borg_tele/attack_self(mob/user)
if(uses == 0)
usr << "This teleporter is out of uses."
return
user << "<span class='notice'>The syndicate robot teleporter is attempting to locate an available cyborg.</span>"
searching = 1
for(var/mob/dead/observer/O in player_list)
if(!O.MayRespawn())
continue
if(jobban_isbanned(O, "Antagonist") && jobban_isbanned(O, "Mercenary") && jobban_isbanned(O, "Cyborg"))
continue
if(O.client && O.client.prefs && (MODE_MERCENARY in O.client.prefs.be_special_role))
question(O.client)
var/datum/ghosttrap/ghost = get_ghost_trap("syndicate cyborg")
uses--
var/mob/living/silicon/robot/syndicate/F = new(get_turf(usr))
spark(F, 4, alldirs)
ghost.request_player(F,"An operative is requesting a syndicate cyborg.", 60 SECONDS)
F.faction = usr.faction
spawn(600)
searching = 0
if(!used)
user << "<span class='warning'>Unable to connect to the Syndicate Command. Perhaps you could try again later?</span>"
/obj/item/weapon/antag_spawner/borg_tele/proc/question(var/client/C)
spawn(0)
if(!C)
return
var/response = alert(C, "Someone is requesting a syndicate cyborg Would you like to play as one?",
"Syndicate robot request","Yes", "No", "Never for this round")
if(response == "Yes")
response = alert(C, "Are you sure you want to play as a syndicate cyborg?", "Syndicate cyborg request", "Yes", "No")
if(!C || used || !searching)
return
if(response == "Yes")
spawn_antag(C, get_turf(src))
else if (response == "Never for this round")
C.prefs.be_special_role ^= MODE_MERCENARY
obj/item/weapon/antag_spawner/borg_tele/spawn_antag(client/C, turf/T)
spark(T, 4, alldirs)
var/mob/living/silicon/robot/H = new /mob/living/silicon/robot/syndicate(T)
H.key = C.key
var/newname = sanitizeSafe(input(H,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN)
if (newname != "")
H.real_name = newname
H.name = H.real_name
H << "<b>You are a syndicate cyborg, bound to help and follow the orders of the mercenaries that are deploying you. Remember to speak to the other mercenaries to know more about their plans, you are also able to change your name using the name pick command.</b>"
spawn(1)
used = 1
qdel(src)
H << "<b>You are a syndicate cyborg, bound to help and follow the orders of the mercenaries that are deploying you. Remember to speak to the other mercenaries to know more about their plans, you are also able to change your name using the name pick command.</b>"
spawn(1)
used = 1
qdel(src)
if(F)
if(!F.ckey || !F.client)
F.visible_message("With no working brain to keep \the [F] working, it is teleported back.")
qdel(F)
uses++
+7 -5
View File
@@ -44,13 +44,13 @@
user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
if (!(HULK in user.mutations))
user.mutations.Add(HULK)
user << "\blue Your muscles hurt."
user << "<span class='notice'>Your muscles hurt.</span>"
if (!(LASER in user.mutations))
user.mutations.Add(LASER)
user << "\blue You feel pressure building behind your eyes."
user << "<span class='notice'>You feel pressure building behind your eyes.</span>"
if (!(COLD_RESISTANCE in user.mutations))
user.mutations.Add(COLD_RESISTANCE)
user << "\blue Your body feels warm."
user << "<span class='notice'>Your body feels warm.</span>"
if (!(TK in user.mutations))
user.mutations.Add(TK)
if(!(HEAL in user.mutations))
@@ -59,7 +59,7 @@
user.mutations.Add(XRAY)
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
user << "\blue The walls suddenly disappear."
user << "<span class='notice'>The walls suddenly disappear.</span>"
user.set_species("Shadow")
user.mind.special_role = "Avatar of the Wish Granter"
if("I want to be rich")
@@ -80,7 +80,7 @@
user.mind.special_role = "Avatar of the Wish Granter"
user.hallucination += 10
user.adjustBrainLoss(30)
user.show_message("<b>[user]</b> screams!")
user.emote("screams!")
playsound(user, 'sound/hallucinations/wail.ogg', 40, 1)
sleep(30)
user << "<span class='warning'>Your mind is assaulted by endless horrors, your only desire is to end it, you must fulfill the Wish Granter's desires!</span>"
@@ -114,6 +114,7 @@
C << "<span class='notice'>You're not dead yet!</span>"
return
C << "<span class='notice'>Death is not your end!</span>"
C.verbs -= /mob/living/carbon/proc/immortality
spawn(rand(400,800))
if(C.stat == DEAD)
@@ -125,4 +126,5 @@
C << "<span class='notice'>You have regenerated.</span>"
C.visible_message("<span class='warning'>[usr] appears to wake from the dead, having healed all wounds.</span>")
C.update_canmove()
C.verbs += /mob/living/carbon/proc/immortality
return 1
-13
View File
@@ -134,7 +134,6 @@ var/list/global/random_stock_common = list(
"paicard" = 2,
"phoronsheets" = 2,
"hide" = 1,
"paint" = 0.5,
"nothing" = 0)
var/list/global/random_stock_uncommon = list(
@@ -989,18 +988,6 @@ var/list/global/random_stock_large = list(
if ("hide")
new /obj/item/stack/material/animalhide(L, rand(5,50))
if ("paint")
var/list/paints = list(
/obj/item/weapon/reagent_containers/glass/paint/red,
/obj/item/weapon/reagent_containers/glass/paint/yellow,
/obj/item/weapon/reagent_containers/glass/paint/green,
/obj/item/weapon/reagent_containers/glass/paint/blue,
/obj/item/weapon/reagent_containers/glass/paint/purple,
/obj/item/weapon/reagent_containers/glass/paint/black,
/obj/item/weapon/reagent_containers/glass/paint/white
)
var/type = pick(paints)
new type(L)
//Uncommon items below here
//=============================================================
@@ -50,7 +50,7 @@
/datum/gear/ears/m_skrell/New()
..()
var/m_chains = list()
m_chains["headtail bands"] = /obj/item/clothing/ears/skrell/chain
m_chains["headtail bands"] = /obj/item/clothing/ears/skrell/band
m_chains["headtail cloth"] = /obj/item/clothing/ears/skrell/cloth_male
m_chains["red-jeweled bands"] = /obj/item/clothing/ears/skrell/redjeweled_band
m_chains["ebony bands"] = /obj/item/clothing/ears/skrell/ebony_band
+1 -1
View File
@@ -100,7 +100,7 @@
reagents.splash(A, 1) //get a small amount of liquid on the thing we're wiping.
update_name()
if(do_after(user,30))
user.visible_message("\The [user] finishes wiping off the [A]!")
user.visible_message("\The [user] finishes wiping off \the [A]!")
A.clean_blood()
/obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
+33 -2
View File
@@ -190,7 +190,7 @@ datum/ghosttrap/drone/transfer_personality(var/mob/candidate, var/mob/living/sil
/***********************************
* Syndicate Cyborg *
***********************************/
/*
/datum/ghosttrap/syndicateborg
object = "syndicate cyborg"
ban_checks = list("Antagonist","AI","Cyborg")
@@ -198,7 +198,9 @@ datum/ghosttrap/drone/transfer_personality(var/mob/candidate, var/mob/living/sil
ghost_trap_message = "They are occupying a syndicate cyborg now."
ghost_trap_role = "Syndicate Cyborg"
can_set_own_name = TRUE
*/
/datum/ghosttrap/syndicateborg/welcome_candidate(var/mob/target)
target << "<span class='notice'><B>You are a syndicate cyborg, bound to help and follow the orders of the mercenaries that are deploying you. Remember to speak to the other mercenaries to know more about their plans</B></span>"
/**************
* pAI *
@@ -214,3 +216,32 @@ datum/ghosttrap/pai/assess_candidate(var/mob/observer/ghost/candidate, var/mob/t
datum/ghosttrap/pai/transfer_personality(var/mob/candidate, var/mob/living/silicon/robot/drone/drone)
return 0
/**************
* Wizard Familiar *
**************/
/datum/ghosttrap/familiar
object = "wizard familiar"
pref_check = MODE_WIZARD
ghost_trap_message = "They are occupying a familiar now."
ghost_trap_role = "Wizard Familiar"
ban_checks = list(MODE_WIZARD)
/datum/ghosttrap/familiar/welcome_candidate(var/mob/target)
return 0
/**************
* Skeleton minion *
**************/
/datum/ghosttrap/skeleton
object = "skeleton minion"
pref_check = MODE_WIZARD
ghost_trap_message = "They are occupying a skeleton minion."
ghost_trap_role = "Skeleton Minion"
ban_checks = list(MODE_WIZARD)
can_set_own_name = FALSE
/datum/ghosttrap/skeleton/welcome_candidate(var/mob/target)
return 0
@@ -90,11 +90,6 @@
damage = 30
icon_state = "toxin"
/mob/living/simple_animal/hostile/alien/death()
..()
visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
// Xenoarch aliens.
/mob/living/simple_animal/hostile/samak
name = "samak"
-168
View File
@@ -1122,171 +1122,3 @@ Note that amputating the affected organ does in fact remove the infection from t
if(6 to INFINITY)
flavor_text += "a ton of [wound]\s"
return english_list(flavor_text)
/****************************************************
ORGAN DEFINES
****************************************************/
/obj/item/organ/external/chest
name = "upper body"
limb_name = "chest"
icon_name = "torso"
max_damage = 100
min_broken_damage = 35
w_class = 5
body_part = UPPER_TORSO
vital = 1
amputation_point = "spine"
joint = "neck"
dislocated = -1
gendered_icon = 1
cannot_amputate = 1
parent_organ = null
encased = "ribcage"
/obj/item/organ/external/groin
name = "lower body"
limb_name = "groin"
icon_name = "groin"
max_damage = 100
min_broken_damage = 35
w_class = 5
body_part = LOWER_TORSO
vital = 1
parent_organ = "chest"
amputation_point = "lumbar"
joint = "hip"
dislocated = -1
gendered_icon = 1
/obj/item/organ/external/arm
limb_name = "l_arm"
name = "left arm"
icon_name = "l_arm"
max_damage = 50
min_broken_damage = 30
w_class = 3
body_part = ARM_LEFT
parent_organ = "chest"
joint = "left elbow"
amputation_point = "left shoulder"
can_grasp = 1
/obj/item/organ/external/arm/right
limb_name = "r_arm"
name = "right arm"
icon_name = "r_arm"
body_part = ARM_RIGHT
joint = "right elbow"
amputation_point = "right shoulder"
/obj/item/organ/external/leg
limb_name = "l_leg"
name = "left leg"
icon_name = "l_leg"
max_damage = 50
min_broken_damage = 30
w_class = 3
body_part = LEG_LEFT
icon_position = LEFT
parent_organ = "groin"
joint = "left knee"
amputation_point = "left hip"
can_stand = 1
/obj/item/organ/external/leg/right
limb_name = "r_leg"
name = "right leg"
icon_name = "r_leg"
body_part = LEG_RIGHT
icon_position = RIGHT
joint = "right knee"
amputation_point = "right hip"
/obj/item/organ/external/foot
limb_name = "l_foot"
name = "left foot"
icon_name = "l_foot"
min_broken_damage = 15
w_class = 2
body_part = FOOT_LEFT
icon_position = LEFT
parent_organ = "l_leg"
joint = "left ankle"
amputation_point = "left ankle"
can_stand = 1
/obj/item/organ/external/foot/removed()
if(owner) owner.u_equip(owner.shoes)
..()
/obj/item/organ/external/foot/right
limb_name = "r_foot"
name = "right foot"
icon_name = "r_foot"
body_part = FOOT_RIGHT
icon_position = RIGHT
parent_organ = "r_leg"
joint = "right ankle"
amputation_point = "right ankle"
/obj/item/organ/external/hand
limb_name = "l_hand"
name = "left hand"
icon_name = "l_hand"
min_broken_damage = 15
w_class = 2
body_part = HAND_LEFT
parent_organ = "l_arm"
joint = "left wrist"
amputation_point = "left wrist"
can_grasp = 1
/obj/item/organ/external/hand/removed()
owner.u_equip(owner.gloves)
..()
/obj/item/organ/external/hand/right
limb_name = "r_hand"
name = "right hand"
icon_name = "r_hand"
body_part = HAND_RIGHT
parent_organ = "r_arm"
joint = "right wrist"
amputation_point = "right wrist"
/obj/item/organ/external/head
limb_name = "head"
icon_name = "head"
name = "head"
max_damage = 75
min_broken_damage = 35
w_class = 3
body_part = HEAD
vital = 1
parent_organ = "chest"
joint = "jaw"
amputation_point = "neck"
gendered_icon = 1
encased = "skull"
/obj/item/organ/external/head/removed()
if(owner)
name = "[owner.real_name]'s head"
owner.u_equip(owner.glasses)
owner.u_equip(owner.head)
owner.u_equip(owner.l_ear)
owner.u_equip(owner.r_ear)
owner.u_equip(owner.wear_mask)
spawn(1)
owner.update_hair()
..()
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
..(brute, burn, sharp, edge, used_weapon, forbidden_limbs)
if (!disfigured)
if (brute_dam > 40)
if (prob(50))
disfigure("brute")
if (burn_dam > 40)
disfigure("burn")
+7 -7
View File
@@ -93,7 +93,7 @@
can_stand = 1
/obj/item/organ/external/foot/removed()
if(owner) owner.u_equip(owner.shoes)
if(owner) owner.drop_from_inventory(owner.shoes)
..()
/obj/item/organ/external/foot/right
@@ -120,7 +120,7 @@
can_grasp = 1
/obj/item/organ/external/hand/removed()
owner.u_equip(owner.gloves)
owner.drop_from_inventory(owner.gloves)
..()
/obj/item/organ/external/hand/right
@@ -151,11 +151,11 @@
/obj/item/organ/external/head/removed()
if(owner)
name = "[owner.real_name]'s head"
owner.u_equip(owner.glasses)
owner.u_equip(owner.head)
owner.u_equip(owner.l_ear)
owner.u_equip(owner.r_ear)
owner.u_equip(owner.wear_mask)
owner.drop_from_inventory(owner.glasses)
owner.drop_from_inventory(owner.head)
owner.drop_from_inventory(owner.l_ear)
owner.drop_from_inventory(owner.r_ear)
owner.drop_from_inventory(owner.wear_mask)
spawn(1)
owner.update_hair()
..()
+4 -4
View File
@@ -650,7 +650,7 @@
build_path = /obj/item/rig_module/vision/meson
/datum/design/hardsuitmodules/sechud_module
name = "hardsuit meson scanner"
name = "hardsuit security hud"
desc = "A simple tactical information system for a hardsuit."
id = "sechud_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 2, TECH_MAGNET = 3)
@@ -674,7 +674,7 @@
build_path = /obj/item/rig_module/vision/nvg
/datum/design/hardsuitmodules/healthscanner_module
name = "hardsuit night vision interface"
name = "hardsuit health scanner"
desc = "A hardsuit-mounted health scanner."
id = "healthscanner_module"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2)
@@ -730,9 +730,9 @@
build_path = /obj/item/rig_module/mounted/taser
/datum/design/hardsuitmodules/egun_module
name = "mounted taser"
name = "mounted energy gun"
desc = "A forearm-mounted energy projector."
id = "egun_module"
req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 4, TECH_COMBAT = 4, TECH_MAGNET = 3)
materials = list(DEFAULT_WALL_MATERIAL= 7000, "glass"= 2250, "uranium"= 3250, "gold"= 2500)
build_path = /obj/item/rig_module/mounted/egun
build_path = /obj/item/rig_module/mounted/egun
+21 -27
View File
@@ -59,39 +59,33 @@
if(uses == 0)
usr << "This book is out of uses."
return
var/client/C = get_player()
if(!C)
usr << "There are no souls willing to become a familiar."
return
var/datum/ghosttrap/ghost = get_ghost_trap("wizard familiar")
var path = text2path(href_list["path"])
if(!ispath(path))
usr << "Invalid mob path in [src]. Contact a coder."
return
if(!(path in monster))
return
var/mob/living/simple_animal/familiar/F = new path(get_turf(src))
F.ckey = C.ckey
F.faction = usr.faction
F.add_spell(new /spell/contract/return_master(usr),"const_spell_ready")
if(C.mob && C.mob.mind)
C.mob.mind.transfer_to(F)
F << "<B>You are [F], a familiar to [usr]. He is your master and your friend. Aid him in his wizarding duties to the best of your ability.</B>"
var/newname = input(F,"Please choose a name. Leaving it blank or canceling will choose the default.", "Name",F.name) as null|text
if(newname)
F.name = newname
temp = "You have summoned \the [F]"
var/mob/living/simple_animal/F = new path(get_turf(src))
temp = "You have attempted summoning \the [F]"
ghost.request_player(F,"A wizard is requesting a familiar.", 60 SECONDS)
uses--
spawn(600)
if(F)
if(!F.ckey || !F.client)
F.visible_message("With no soul to keep \the [F] linked to this plane, it fades away.")
qdel(F)
uses++
else
F.faction = usr.faction
F.add_spell(new /spell/contract/return_master(usr), "const_spell_ready")
F << "<B>You are [F], a familiar to [usr]. He is your master and your friend. Aid him in his wizarding duties to the best of your ability.</B>"
if(Adjacent(usr))
src.interact(usr)
if(Adjacent(usr))
src.interact(usr)
else
usr << browse(null,"window=monstermanual")
/obj/item/weapon/monster_manual/proc/get_player()
for(var/mob/O in dead_mob_list)
if(O.client)
var/getResponse = alert(O,"A wizard is requesting a familiar. Would you like to play as one?", "Wizard familiar summons","Yes","No")
if(getResponse == "Yes")
return O.client
return null
else
usr << browse(null,"window=monstermanual")
@@ -106,13 +106,18 @@
var/mob/living/carbon/human/skeleton/F = new(get_turf(target))
target.visible_message("<span class='cult'>\The [target] explodes in a shower of gore, a skeleton emerges from the remains!</span>")
target.gib()
var/client/C = get_player()
F.ckey = C.ckey
F.faction = usr.faction
if(C.mob && C.mob.mind)
C.mob.mind.transfer_to(F)
F << "<B>You are a skeleton minion to [usr], they are your master. Obey and protect your master at all costs, you have no free will.</B>"
var/datum/ghosttrap/ghost = get_ghost_trap("skeleton minion")
ghost.request_player(F,"A wizard is requesting a skeleton minion.", 60 SECONDS)
spawn(600)
if(F)
if(!F.ckey || !F.client)
F.visible_message("With no soul to keep \the [F] linked to this plane, it turns into dust.")
F.dust()
else
F << "<B>You are a skeleton minion to [usr], they are your master. Obey and protect your master at all costs, you have no free will.</B>"
F.faction = usr.faction
//equips the skeleton war gear
F.equip_to_slot_or_del(new /obj/item/clothing/under/gladiator(F), slot_w_uniform)
F.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(F), slot_shoes)
@@ -120,14 +125,6 @@
F.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/bone(F), slot_head)
F.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/bone(F), slot_wear_suit)
/spell/targeted/raise_dead/proc/get_player()
for(var/mob/O in dead_mob_list)
if(O.client)
var/getResponse = alert(O,"A wizard is requesting a skeleton minion. Would you like to play as one?", "Skeleton minion summons","Yes","No")
if(getResponse == "Yes")
return O.client
return null
/spell/targeted/lichdom
name = "Lichdom"
desc = "Trade your life and soul for immortality and power."