/* Staves */ /obj/item/gun/energy/staff name = "staff of change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." icon = 'icons/obj/guns/staffofchange.dmi' icon_state = "staffofchange" item_state = "staffofchange" has_item_ratio = FALSE fire_sound = 'sound/magic/Staff_Change.ogg' flags = CONDUCT slot_flags = SLOT_BACK w_class = ITEMSIZE_LARGE max_shots = 1 displays_maptext = TRUE projectile_type = /obj/item/projectile/change origin_tech = list(TECH_COMBAT = 7, TECH_MAGNET = 5, TECH_BLUESPACE = 7) self_recharge = 1 recharge_time = 15 charge_meter = 0 pin = /obj/item/device/firing_pin/magic has_safety = FALSE /obj/item/gun/energy/staff/emp_act(severity) // to prevent it from breaking. return obj/item/gun/energy/staff/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this stave!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) //Save the users active hand var/mob/living/new_mob var/mob/living/carbon/human/H = user for(var/obj/item/W in H) if(istype(W, /obj/item/implant)) qdel(W) continue H.drop_from_inventory(W) playsound(user, 'sound/weapons/emitter.ogg', 40, 1) var/obj/item/organ/external/LA = H.get_organ(BP_L_ARM) var/obj/item/organ/external/RA = H.get_organ(BP_R_ARM) var/obj/item/organ/external/LL = H.get_organ(BP_L_LEG) var/obj/item/organ/external/RL = H.get_organ(BP_R_LEG) LA.droplimb(0,DROPLIMB_BLUNT) RA.droplimb(0,DROPLIMB_BLUNT) LL.droplimb(0,DROPLIMB_BLUNT) RL.droplimb(0,DROPLIMB_BLUNT) playsound(user, 'sound/effects/splat.ogg', 50, 1) user.visible_message("With a sickening series of crunches, [user]'s body shrinks, and they begin to sprout feathers!") user.visible_message("[user] screams!") new_mob = new /mob/living/simple_animal/parrot(H.loc) new_mob.universal_speak = 1 new_mob.key = H.key new_mob.set_intent(I_HURT) qdel(H) sleep(20) new_mob.say("Poly wanna cracker!") return 0 return 1 /obj/item/gun/energy/staff/handle_click_empty(mob/user = null) if (user) user.visible_message("*fizzle*", "*fizzle*") else src.visible_message("*fizzle*") playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) /obj/item/gun/energy/staff/animate name = "staff of animation" desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." projectile_type = /obj/item/projectile/animate fire_sound = 'sound/magic/wand.ogg' max_shots = 10 obj/item/gun/energy/staff/animate/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this stave!") return 0 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/external/LA = H.get_organ(BP_L_HAND) var/obj/item/organ/external/RA = H.get_organ(BP_R_HAND) var/active_hand = H.hand playsound(user, 'sound/effects/blobattack.ogg', 40, 1) user.visible_message(" With a sickening crunch, [user]'s hand rips itself off, and begins crawling away!") user.visible_message("[user] screams!") user.drop_item() if(active_hand) LA.droplimb(0,DROPLIMB_EDGE) new /mob/living/simple_animal/hostile/mimic/copy(LA.loc, LA) qdel(LA) else RA.droplimb(0,DROPLIMB_EDGE) new /mob/living/simple_animal/hostile/mimic/copy(RA.loc, RA) qdel(RA) return 0 return 1 /obj/item/gun/energy/staff/focus name = "mental focus" desc = "An artefact that channels the will of the user into destructive bolts of force. If you aren't careful with it, you might poke someone's brain out." icon = 'icons/obj/guns/mental_focus.dmi' icon_state = "focus" item_state = "focus" fire_sound = 'sound/magic/wand.ogg' slot_flags = SLOT_BACK projectile_type = /obj/item/projectile/forcebolt obj/item/gun/energy/staff/focus/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this stave!") return 0 if(!user.is_wizard()) if(ishuman(user)) //Save the users active hand var/mob/living/carbon/human/H = user var/obj/item/organ/external/LA = H.get_organ(BP_L_ARM) var/obj/item/organ/external/RA = H.get_organ(BP_R_ARM) var/active_hand = H.hand playsound(user, 'sound/magic/lightningbolt.ogg', 40, 1) to_chat(user, "Coruscating waves of energy wreathe around your arm...hot...so hot!") user.show_message("[user] screams!",2) user.drop_item() if(active_hand) LA.droplimb(0,DROPLIMB_BURN) else RA.droplimb(0,DROPLIMB_BURN) return 0 return 1 obj/item/gun/energy/staff/focus/attack_self(mob/living/user as mob) if(projectile_type == /obj/item/projectile/forcebolt) charge_cost = 400 to_chat(user, "The [src.name] will now strike a small area.") projectile_type = /obj/item/projectile/forcebolt/strong else charge_cost = 200 to_chat(user, "The [src.name] will now strike only a single person.") projectile_type = /obj/item/projectile/forcebolt /obj/item/gun/energy/staff/chaos name = "staff of chaos" desc = "An artefact that spits bolts of chaotic energy, expect anything." icon = 'icons/obj/guns/staff_of_chaos.dmi' icon_state = "staffofchaos" item_state = "staffofchaos" fire_sound = 'sound/magic/Staff_Chaos.ogg' flags = CONDUCT w_class = ITEMSIZE_LARGE max_shots = 5 projectile_type = /obj/item/projectile/magic var/list/possible_projectiles = list(/obj/item/projectile/magic, /obj/item/projectile/change, /obj/item/projectile/forcebolt, /obj/item/gun/energy/staff/animate, /obj/item/projectile/magic/fireball, /obj/item/projectile/magic/teleport, /obj/item/projectile/temp, /obj/item/projectile/ion, /obj/item/projectile/energy/declone, /obj/item/projectile/meteor, /obj/item/projectile/beam/thermaldrill, /obj/item/projectile/beam/energy_net, /obj/item/projectile/energy/bee) /obj/item/gun/energy/staff/chaos/special_check(var/mob/living/user) projectile_type = pick(possible_projectiles) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this stave!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) var/obj/P = consume_next_projectile() if(P) if(process_projectile(P, user, user, pick(BP_HEAD, BP_CHEST))) handle_post_fire(user, user) user.visible_message("\The [src] backfires!") user.drop_item() return 0 return 1 //wands /obj/item/gun/energy/wand name = "wand of nothing" desc = "A magic stick, this one don't do much however." icon = 'icons/obj/wands.dmi' icon_state = "nothingwand" item_state = "wand" has_item_ratio = FALSE fire_sound = 'sound/magic/wand.ogg' slot_flags = SLOT_BELT w_class = ITEMSIZE_NORMAL max_shots = 20 projectile_type = /obj/item/projectile/magic origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_BLUESPACE = 6) charge_meter = 0 pin = /obj/item/device/firing_pin/magic charge_failure_message = null has_safety = FALSE /obj/item/gun/energy/wand/get_cell() return DEVICE_NO_CELL /obj/item/gun/energy/wand/handle_click_empty(mob/user = null) if (user) user.visible_message("*fizzle*", "*fizzle*") else src.visible_message("*fizzle*") playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) /obj/item/gun/energy/wand/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this wand!") return 0 return 1 /obj/item/gun/energy/wand/toy origin_tech = null /obj/item/gun/energy/wand/fire name = "wand of fire" desc = "A wand that can fire destructive flames." icon = 'icons/obj/wands.dmi' icon_state = "firewand" item_state = "firewand" fire_sound = 'sound/magic/Fireball.ogg' max_shots = 5 projectile_type = /obj/item/projectile/magic/fireball /obj/item/gun/energy/wand/fire/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this wand!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user H.IgniteMob(15) H.visible_message("\The [src] explodes in a shower of fire!") H.drop_item() qdel(src) return 0 return 1 /obj/item/gun/energy/wand/polymorph name = "wand of polymorph" desc = "A wand that will change the shape of the its victims." icon = 'icons/obj/wands.dmi' icon_state = "polywand" item_state = "polywand" fire_sound = 'sound/magic/Staff_Change.ogg' max_shots = 10 projectile_type = /obj/item/projectile/change /obj/item/gun/energy/wand/polymorph/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this wand!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user H.drop_item() H.visible_message("\The [H] collapses on the floor, their body shrinking and growing hair!") H.monkeyize() H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/snacks/grown/banana(H), slot_l_hand) qdel(src) return 0 return 1 /obj/item/gun/energy/wand/teleport name = "wand of teleportation" desc = "This wand will send your targets away, or closer, to yourself." icon = 'icons/obj/wands.dmi' icon_state = "telewand" item_state = "telewand" fire_sound = 'sound/magic/Wand_Teleport.ogg' max_shots = 10 projectile_type = /obj/item/projectile/magic/teleport /obj/item/gun/energy/wand/teleport/special_check(var/mob/living/user) //todo: think of something else for this if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this wand!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user var/obj/item/organ/O = H.internal_organs_by_name[pick(H.species.vision_organ || BP_EYES, BP_APPENDIX, BP_KIDNEYS, BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)] if(O == null) to_chat(user, "You can't make any sense of the arcane glyphs... maybe you should try again.") else to_chat(user, "As you stumble over the arcane glyphs, you feel a twisting sensation in your [O.name]!") user.visible_message("\A flash of smoke pours out of [user]'s orifices!") playsound(user, 'sound/magic/lightningshock.ogg', 40, 1) var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread() smoke.set_up(5, 0, user.loc) smoke.attach(user) smoke.start() user.emote("scream") user.drop_item() if(istype(O)) O.removed(user) qdel(src) return 0 return 1 /obj/item/gun/energy/wand/force name = "wand of force" desc = "A more portable version of the mental focus, still deadly." icon = 'icons/obj/wands.dmi' icon_state = "deathwand" item_state = "deathwand" max_shots = 10 projectile_type = /obj/item/projectile/forcebolt /obj/item/gun/energy/wand/force/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this wand!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user H.visible_message("\The [src] escapes from [H]'s hand, hitting their face and shattering into pieces!") H.apply_damage(35, BRUTE, BP_HEAD, 0) H.adjustBrainLoss(50, 55) H.sdisabilities += CLUMSY H.drop_item() qdel(src) return 0 return 1 /obj/item/gun/energy/wand/animation name = "wand of animation" desc = "This wand will create a legion of murderous toilets, for your own leisure." icon = 'icons/obj/wands.dmi' icon_state = "revivewand" item_state = "revivewand" max_shots = 10 projectile_type = /obj/item/projectile/animate /obj/item/gun/energy/wand/animation/special_check(var/mob/living/user) if(HULK in user.mutations) to_chat(user, "In your rage you momentarily forget the operation of this wand!") return 0 if(!user.is_wizard()) if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user H.visible_message("\The [src] jumps from [H]'s hand and swifts into a crate!") new /mob/living/simple_animal/hostile/mimic(H.loc) H.drop_item() qdel(src) return 0 return 1