//////////////////////Scrying orb////////////////////// /obj/item/weapon/scrying name = "scrying orb" desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." icon = 'icons/obj/projectiles.dmi' icon_state = "bluespace" throw_speed = 3 throw_range = 7 throwforce = 10 damtype = BURN force = 10 hitsound = 'sound/items/welder2.ogg' /obj/item/weapon/scrying/attack_self(mob/living/user as mob) if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) //Save the users active hand var/mob/living/carbon/human/H = user var/obj/item/organ/E = H.get_eyes(no_synthetic = TRUE) if (!E) user << "You stare deep into the abyss... and nothing happens. What a letdown." return user << "You stare deep into the abyss... and the abyss stares back." sleep(10) user << "Your [E.name] fill with painful light, and you feel a sharp burning sensation in your head!" user.custom_emote(2, "screams in horror!") playsound(user, 'sound/hallucinations/far_noise.ogg', 40, 1) user.drop_item() user.visible_message("Ashes pour out of [user]'s eye sockets!") new /obj/effect/decal/cleanable/ash(get_turf(user)) E.removed(user) qdel(E) H.adjustBrainLoss(50, 55) H.hallucination += 20 return else user << "You can see... everything!" visible_message("[user] stares into [src], their eyes glazing over.") user.teleop = user.ghostize(1) announce_ghost_joinleave(user.teleop, 1, "You feel that they used a powerful artifact to [pick("invade","disturb","disrupt","infest","taint","spoil","blight")] this place with their presence.") return /obj/item/weapon/melee/energy/wizard name = "rune sword" desc = "A large sword engraved with arcane markings, it seems to reverberate with unearthly powers." icon = 'icons/obj/sword.dmi' icon_state = "runesword0" item_state = "runesword0" contained_sprite = 1 active_force = 40 active_throwforce = 40 active_w_class = 5 force = 20 throwforce = 30 throw_speed = 5 throw_range = 10 w_class = 5 slot_flags = SLOT_BELT origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 8) attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharp = 1 edge = 1 base_reflectchance = 60 base_block_chance = 60 can_block_bullets = 1 shield_power = 150 /obj/item/weapon/melee/energy/wizard/activate(mob/living/user) ..() icon_state = "runesword1" item_state = "runesword1" user << "\The [src] surges to life!." /obj/item/weapon/melee/energy/wizard/deactivate(mob/living/user) ..() icon_state = "runesword0" item_state = "runesword0" user << "\The [src] slowly dies out." /obj/item/weapon/melee/energy/wizard/attack(mob/living/M, mob/living/user, var/target_zone) if(user.is_wizard()) return ..() var/zone = (user.hand ? "l_arm":"r_arm") if(ishuman(user)) var/mob/living/carbon/human/H = user var/obj/item/organ/external/affecting = H.get_organ(zone) user << "The sword refuses you as its true wielder, slashing your [affecting.name] instead!" user.apply_damage(active_force, BRUTE, zone, 0, sharp=1, edge=1) user.drop_from_inventory(src) return 1 //skeleton weapons and armor /obj/item/clothing/suit/armor/bone name = "bone armor" desc = "A rudimentary armor made of bones of several creatures." icon = 'icons/obj/necromancer.dmi' icon_state = "bonearmor" item_state = "bonearmor" contained_sprite = 1 species_restricted = list("Skeleton") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS armor = list(melee = 50, bullet = 40, laser = 50, energy = 25, bomb = 30, bio = 0, rad = 0) /obj/item/clothing/head/helmet/bone name = "bone helmet" desc = "A rudimentary helmet made of some dead creature." icon = 'icons/obj/necromancer.dmi' icon_state = "skull" item_state = "skull" contained_sprite = 1 species_restricted = list("Skeleton") armor = list(melee = 50, bullet = 40, laser = 50, energy = 25, bomb = 30, bio = 0, rad = 0) /obj/item/weapon/material/twohanded/spear/bone desc = "A spear crafted with bones of some long forgotten creature." default_material = "cursed bone" //lich phylactery /obj/item/phylactery name = "phylactery" desc = "A twisted mummified heart." icon = 'icons/obj/wizard.dmi' icon_state = "cursedheart-off" origin_tech = list(TECH_BLUESPACE = 8, TECH_MATERIAL = 8, TECH_BIO = 8) w_class = 5 light_color = "#6633CC" light_power = 3 light_range = 4 var/lich = null /obj/item/phylactery/Initialize() . = ..() world_phylactery += src create_reagents(120) reagents.add_reagent("undead_ichor", 120) /obj/item/phylactery/Destroy() lich << "Your phylactery was destroyed, your soul is cast into the abyss as your immortality vanishes away!" world_phylactery -= src lich = null return ..() /obj/item/phylactery/examine(mob/user) ..(user) if(!lich) user << "The heart is inert." else user << "The heart is pulsing slowly." /obj/item/phylactery/attackby(var/obj/item/I, var/mob/user) ..() if(istype(I, /obj/item/weapon/nullrod)) src.visible_message("\The [src] twists violently and explodes!") gibs(src.loc) qdel(src) return /obj/item/phylactery/pickup(mob/living/user as mob) if(!user.is_wizard() && src.lich) user << "As you pick up \the [src], you feel a wave of dread wash over you." for(var/obj/machinery/light/P in view(7, user)) P.flicker(1) //magic poppet /obj/item/poppet name = "poppet" desc = "A rustic doll with a vague humanoid shape." icon = 'icons/obj/wizard.dmi' icon_state = "poppet" w_class = 2 var/datum/weakref/target = null var/countenance = null //what species does it looks like? var/cooldown_time = 120 var/cooldown = 0 /obj/item/poppet/Destroy() if(target) to_chat(target, "The strange presence vanishes away...") return ..() /obj/item/poppet/examine(mob/user) ..(user) if(countenance) to_chat(user, "It is modeled after a [countenance].") /obj/item/poppet/afterattack(var/atom/A, var/mob/user, var/proximity) if(!proximity) return if(A.blood_DNA) var/marked = pick(A.blood_DNA) for(var/mob/living/carbon/human/H in mob_list) if(H.dna.unique_enzymes == marked) target = WEAKREF(H) countenance = H.dna.species to_chat(H, "You feel a strange presence looming over you.") /obj/item/poppet/attack_self(mob/user as mob) var/mob/living/carbon/human/H = target.resolve() if(H && cooldown < world.time) var/target_zone = user.zone_sel.selecting if(target_zone == "mouth") var/voice = sanitize(input(user, "What would you like the victim to say", "Poppet", null) as text) H.say(voice) log_and_message_admins("forced [H] to say [voice] with a poppet", user) if(target_zone == "eyes") to_chat(user, "You cover \the [src]'s eyes.") to_chat(H, "Your vision is covered by a shadow!") H.eye_blind = 3 H.eye_blurry = 5 if(target_zone == "r_leg" || target_zone == "l_leg") to_chat(user, "You move \the [src]'s legs around.") if(H.canmove && !H.restrained() && !(istype(H.loc, /turf/space))) step(H, pick(cardinal)) if(target_zone == "l_hand" || target_zone == "l_arm") to_chat(user, "You twist \the [src]'s left arm.") H.drop_l_hand() if(target_zone == "r_hand" || target_zone == "r_arm") to_chat(user, "You twist \the [src]'s right arm..") H.drop_r_hand() if(target_zone == "head") to_chat(user, "You smack \the [src]'s head with your hand.") H.confused += 10 H.stuttering += 5 to_chat(H, "You suddenly feel as if your head was hit by something!") playsound(get_turf(H), "punch", 50, 1, -1) cooldown = world.time + cooldown_time /obj/item/poppet/attackby(obj/item/W as obj, mob/user as mob) var/mob/living/carbon/human/H = target.resolve() if(H && cooldown < world.time) var/target_zone = user.zone_sel.selecting if(isflamesource(W)) fire_act() if(istype(W, /obj/item/weapon/melee/baton)) H.electrocute_act(W.force * 2, W, def_zone = target_zone) playsound(get_turf(H), 'sound/weapons/Egloves.ogg', 50, 1, -1) if(istype(W, /obj/item/device/flashlight)) to_chat(H, "You direct \the [W] towards \the [src]'s eyes!") playsound(get_turf(H), 'sound/items/flashlight.ogg', 50, 1, -1) flick("flash", H.flash) H.eye_blurry = 5 if(iscoil(W)) to_chat(H, "You strangle \the [src] with \the [W]!") H.silent += 10 playsound(get_turf(H), 'sound/effects/noosed.ogg', 50, 1, -1) if(!(H.species.flags & NO_BREATHE)) H.emote("me", 1, "gasps for air!") H.losebreath += 5 if(istype(W, /obj/item/weapon/bikehorn)) playsound(get_turf(H), 'sound/items/bikehorn.ogg', 50, 1, -1) if(W.edge) to_chat(H, "You stab \the [src] with \the [W]!") H.apply_damage(2, BRUTE, target_zone, edge = TRUE) playsound(get_turf(H), 'sound/weapons/bladeslice.ogg', 50, 1, -1) if(!(H.species.flags & NO_PAIN)) var/obj/item/organ/external/organ = H.get_organ(target_zone) to_chat(H, "You feel a stabbing pain in your [organ.name]!") cooldown = world.time + cooldown_time /obj/item/poppet/throw_impact(atom/hit_atom) ..() var/mob/living/carbon/human/H = target.resolve() if(H) H.throw_at(get_edge_target_turf(H,pick(alldirs)), 5, 1) /obj/item/poppet/emp_act(severity) var/mob/living/carbon/human/H = target.resolve() if(H) H.emp_act(severity) playsound(get_turf(H), 'sound/effects/EMPulse.ogg', 50, 1, -1) /obj/item/poppet/ex_act(severity) var/mob/living/carbon/human/H = target.resolve() if(H) H.ex_act(severity) /obj/item/poppet/tesla_act(var/power) var/mob/living/carbon/human/H = target.resolve() if(H) H.electrocute_act(power, src) /obj/item/poppet/bullet_act(var/obj/item/projectile/Proj) var/mob/living/carbon/human/H = target.resolve() if(H) H.apply_damage(Proj.damage, HALLOSS) /obj/item/poppet/fire_act() var/mob/living/carbon/human/H = target.resolve() if(H) H.adjust_fire_stacks(2) H.IgniteMob() to_chat(H, "You suddenly burst into flames!!") /obj/item/poppet/crush_act() var/mob/living/carbon/human/H = target.resolve() if(H) to_chat(H, "You feel an outworldly force crushing you!") H.adjustBruteLoss(35) H.apply_effect(6, WEAKEN) qdel(src)