diff --git a/code/game/antagonist/outsider/commando.dm b/code/game/antagonist/outsider/commando.dm index 58125b66fd4..4b8b983e14b 100644 --- a/code/game/antagonist/outsider/commando.dm +++ b/code/game/antagonist/outsider/commando.dm @@ -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 << "You forgot to turn on your internals! Quickly, toggle the valve!" var/obj/item/weapon/card/id/id = create_id("Commando", player) id.access |= get_all_accesses() diff --git a/code/game/antagonist/outsider/deathsquad.dm b/code/game/antagonist/outsider/deathsquad.dm index 31343c34cfe..79c62bab0e5 100644 --- a/code/game/antagonist/outsider/deathsquad.dm +++ b/code/game/antagonist/outsider/deathsquad.dm @@ -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 << "You forgot to turn on your internals! Quickly, toggle the valve!" + var/obj/item/weapon/card/id/id = create_id("Asset Protection", player) if(id) id.access |= get_all_station_access() diff --git a/code/game/gamemodes/antagspawner.dm b/code/game/gamemodes/antagspawner.dm index 5dca539d33b..61efb6111d9 100644 --- a/code/game/gamemodes/antagspawner.dm +++ b/code/game/gamemodes/antagspawner.dm @@ -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 << "The syndicate robot teleporter is attempting to locate an available cyborg." - 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 << "Unable to connect to the Syndicate Command. Perhaps you could try again later?" - - -/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 << "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." - - spawn(1) - used = 1 - qdel(src) - H << "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." - - 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++ diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 698c1cc7646..9a23cc92d23 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -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 << "Your muscles hurt." if (!(LASER in user.mutations)) user.mutations.Add(LASER) - user << "\blue You feel pressure building behind your eyes." + user << "You feel pressure building behind your eyes." if (!(COLD_RESISTANCE in user.mutations)) user.mutations.Add(COLD_RESISTANCE) - user << "\blue Your body feels warm." + user << "Your body feels warm." 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 << "The walls suddenly disappear." 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("[user] screams!") + user.emote("screams!") playsound(user, 'sound/hallucinations/wail.ogg', 40, 1) sleep(30) user << "Your mind is assaulted by endless horrors, your only desire is to end it, you must fulfill the Wish Granter's desires!" @@ -114,6 +114,7 @@ C << "You're not dead yet!" return C << "Death is not your end!" + C.verbs -= /mob/living/carbon/proc/immortality spawn(rand(400,800)) if(C.stat == DEAD) @@ -125,4 +126,5 @@ C << "You have regenerated." C.visible_message("[usr] appears to wake from the dead, having healed all wounds.") C.update_canmove() + C.verbs += /mob/living/carbon/proc/immortality return 1 diff --git a/code/modules/cargo/randomstock.dm b/code/modules/cargo/randomstock.dm index bb970735e15..73d1eb4e04a 100644 --- a/code/modules/cargo/randomstock.dm +++ b/code/modules/cargo/randomstock.dm @@ -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 //============================================================= diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm index 6bd887c8fbb..29ccdbbf1f8 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm @@ -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 diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm index 872140bdd6f..480cb22092d 100644 --- a/code/modules/detectivework/tools/rag.dm +++ b/code/modules/detectivework/tools/rag.dm @@ -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) diff --git a/code/modules/ghosttrap/trap.dm b/code/modules/ghosttrap/trap.dm index 3b60a140f19..71e6f6f44e9 100644 --- a/code/modules/ghosttrap/trap.dm +++ b/code/modules/ghosttrap/trap.dm @@ -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 << "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" /************** * 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 diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 3308e635310..480ea54e6b2 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -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" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c8ccfd068bc..2b1f0b1c397 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -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") diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 54ec34ae70c..8571dbfba22 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -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() ..() diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index 16ceb35bfc9..e1a77f6bcc1 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -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 \ No newline at end of file + build_path = /obj/item/rig_module/mounted/egun diff --git a/code/modules/spells/monster_manual.dm b/code/modules/spells/monster_manual.dm index 59c53d1d6b1..ffc66703675 100644 --- a/code/modules/spells/monster_manual.dm +++ b/code/modules/spells/monster_manual.dm @@ -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 << "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." - 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 << "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." + + 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") diff --git a/code/modules/spells/targeted/necromancer_spells.dm b/code/modules/spells/targeted/necromancer_spells.dm index ab807ed024c..ba7adc89754 100644 --- a/code/modules/spells/targeted/necromancer_spells.dm +++ b/code/modules/spells/targeted/necromancer_spells.dm @@ -106,13 +106,18 @@ var/mob/living/carbon/human/skeleton/F = new(get_turf(target)) target.visible_message("\The [target] explodes in a shower of gore, a skeleton emerges from the remains!") 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 << "You are a skeleton minion to [usr], they are your master. Obey and protect your master at all costs, you have no free will." - + 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 << "You are a skeleton minion to [usr], they are your master. Obey and protect your master at all costs, you have no free will." + 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."