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
-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."