Merge pull request #3041 from Citadel-Station-13/upstream-merge-30887
[MIRROR] 2H Sword to the Cult Forge - Robustin's Github Adventure
This commit is contained in:
@@ -591,3 +591,50 @@
|
||||
var/mob/M = owner
|
||||
var/datum/language_holder/H = M.get_language_holder()
|
||||
H.open_language_menu(usr)
|
||||
|
||||
/datum/action/innate/dash
|
||||
name = "Dash"
|
||||
desc = "Teleport to the targeted location."
|
||||
icon_icon = 'icons/mob/actions/actions_items.dmi'
|
||||
button_icon_state = "jetboot"
|
||||
var/charged = TRUE
|
||||
var/charge_rate = 250
|
||||
var/mob/living/carbon/human/holder
|
||||
var/obj/item/dashing_item
|
||||
var/dash_sound = 'sound/magic/blink.ogg'
|
||||
var/recharge_sound = 'sound/magic/charge.ogg'
|
||||
var/beam_effect = "blur"
|
||||
var/phasein = /obj/effect/temp_visual/dir_setting/ninja/phase
|
||||
var/phaseout = /obj/effect/temp_visual/dir_setting/ninja/phase/out
|
||||
|
||||
/datum/action/innate/dash/Grant(mob/user, obj/dasher)
|
||||
. = ..()
|
||||
dashing_item = dasher
|
||||
holder = user
|
||||
|
||||
/datum/action/innate/dash/IsAvailable()
|
||||
if(charged)
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/datum/action/innate/dash/Activate()
|
||||
dashing_item.attack_self(holder) //Used to toggle dash behavior in the dashing item
|
||||
|
||||
/datum/action/innate/dash/proc/Teleport(mob/user, atom/target)
|
||||
var/turf/T = get_turf(target)
|
||||
if(target in view(user.client.view, get_turf(user)))
|
||||
var/obj/spot1 = new phaseout(get_turf(user), user.dir)
|
||||
user.forceMove(T)
|
||||
playsound(T, dash_sound, 25, 1)
|
||||
var/obj/spot2 = new phasein(get_turf(user), user.dir)
|
||||
spot1.Beam(spot2,beam_effect,time=20)
|
||||
charged = FALSE
|
||||
holder.update_action_buttons_icon()
|
||||
addtimer(CALLBACK(src, .proc/charge), charge_rate)
|
||||
|
||||
/datum/action/innate/dash/proc/charge()
|
||||
charged = TRUE
|
||||
holder.update_action_buttons_icon()
|
||||
playsound(dashing_item, recharge_sound, 50, 1)
|
||||
to_chat(holder, "<span class='warning'>[dashing_item] is ready for another jaunt.</span>")
|
||||
@@ -384,3 +384,31 @@
|
||||
if(islist(owner.stun_absorption) && owner.stun_absorption["blooddrunk"])
|
||||
owner.stun_absorption -= "blooddrunk"
|
||||
|
||||
/datum/status_effect/sword_spin
|
||||
id = "Bastard Sword Spin"
|
||||
duration = 50
|
||||
tick_interval = 8
|
||||
alert_type = null
|
||||
|
||||
|
||||
/datum/status_effect/sword_spin/on_apply()
|
||||
owner.visible_message("<span class='danger'>[owner] begins swinging the sword with inhuman strength!</span>")
|
||||
var/oldcolor = owner.color
|
||||
owner.color = "#ff0000"
|
||||
owner.add_stun_absorption("bloody bastard sword", duration, 2, "doesn't even flinch as the sword's power courses through them!", "You shrug off the stun!", " glowing with a blazing red aura!")
|
||||
owner.spin(duration,1)
|
||||
animate(owner, color = oldcolor, time = duration, easing = EASE_IN)
|
||||
addtimer(CALLBACK(owner, /atom/proc/update_atom_colour), duration)
|
||||
playsound(owner, 'sound/weapons/fwoosh.wav', 75, 0)
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/status_effect/sword_spin/tick()
|
||||
playsound(owner, 'sound/weapons/fwoosh.wav', 75, 0)
|
||||
var/obj/item/slashy
|
||||
slashy = owner.get_active_held_item()
|
||||
for(var/mob/living/M in orange(1,owner))
|
||||
slashy.attack(M, owner)
|
||||
|
||||
/datum/status_effect/sword_spin/on_remove()
|
||||
owner.visible_message("<span class='warning'>[owner]'s inhuman strength dissipates and the sword's runes grow cold!</span>")
|
||||
|
||||
Reference in New Issue
Block a user