mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-22 16:12:19 +00:00
350 lines
13 KiB
Plaintext
350 lines
13 KiB
Plaintext
/* 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 = 4.0
|
|
max_shots = 1
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this stave!</span>")
|
|
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("<span class = 'danger'>With a sickening series of crunches, [user]'s body shrinks, and they begin to sprout feathers!</span>")
|
|
user.visible_message("<b>[user]</b> screams!")
|
|
new_mob = new /mob/living/simple_animal/parrot(H.loc)
|
|
new_mob.universal_speak = 1
|
|
new_mob.key = H.key
|
|
new_mob.a_intent = "harm"
|
|
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*", "<span class='danger'>*fizzle*</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this stave!</span>")
|
|
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("<span class = 'danger'> With a sickening crunch, [user]'s hand rips itself off, and begins crawling away!</span>")
|
|
user.visible_message("<b>[user]</b> 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, "<span class='danger'>In your rage you momentarily forget the operation of this stave!</span>")
|
|
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_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, "<span class='warning'>Coruscating waves of energy wreathe around your arm...hot...so <b>hot</b>!</span>")
|
|
user.show_message("<b>[user]</b> 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, "<span class='warning'>The [src.name] will now strike a small area.</span>")
|
|
projectile_type = /obj/item/projectile/forcebolt/strong
|
|
else
|
|
charge_cost = 200
|
|
to_chat(user, "<span class='warning'>The [src.name] will now strike only a single person.</span>")
|
|
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 = 4.0
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this stave!</span>")
|
|
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("<span class='danger'>\The [src] backfires!</span>")
|
|
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 = 3
|
|
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*", "<span class='danger'>*fizzle*</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this wand!</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this wand!</span>")
|
|
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("<span class='danger'>\The [src] explodes in a shower of fire!</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this wand!</span>")
|
|
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("<span class='danger'>\The [H] collapses on the floor, their body shrinking and growing hair!</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this wand!</span>")
|
|
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,"appendix",BP_KIDNEYS,BP_LIVER, BP_HEART, BP_LUNGS, BP_BRAIN)]
|
|
if(O == null)
|
|
to_chat(user, "<span class='notice'>You can't make any sense of the arcane glyphs... maybe you should try again.</span>")
|
|
else
|
|
to_chat(user, "<span class='danger'>As you stumble over the arcane glyphs, you feel a twisting sensation in your [O.name]!</span>")
|
|
user.visible_message("<span class='danger'>\A flash of smoke pours out of [user]'s orifices!</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this wand!</span>")
|
|
return 0
|
|
if(!user.is_wizard())
|
|
if(istype(user, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = user
|
|
H.visible_message("<span class='danger'>\The [src] escapes from [H]'s hand, hitting their face and shattering into pieces!</span>")
|
|
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, "<span class='danger'>In your rage you momentarily forget the operation of this wand!</span>")
|
|
return 0
|
|
if(!user.is_wizard())
|
|
if(istype(user, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = user
|
|
H.visible_message("<span class='danger'>\The [src] jumps from [H]'s hand and swifts into a crate!</span>")
|
|
new /mob/living/simple_animal/hostile/mimic(H.loc)
|
|
H.drop_item()
|
|
qdel(src)
|
|
return 0
|
|
return 1
|