From 5cf2065432e9f7f7cca9bfbe39ad0efeb2f3f5b3 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 26 Jun 2017 08:57:46 -0500 Subject: [PATCH] Ninja Dash --- code/datums/antagonists/ninja.dm | 2 +- code/modules/mining/equipment/survival_pod.dm | 2 +- code/modules/ninja/energy_katana.dm | 100 ++++++++++++++---- code/modules/ninja/suit/suit.dm | 7 +- .../modules/ninja/suit/suit_initialisation.dm | 1 - .../modules/ninja/suit/suit_verbs_handlers.dm | 8 +- icons/effects/beam.dmi | Bin 60278 -> 61385 bytes tgstation.dme | 1 - 8 files changed, 86 insertions(+), 35 deletions(-) diff --git a/code/datums/antagonists/ninja.dm b/code/datums/antagonists/ninja.dm index d3b6da5b19..6948740687 100644 --- a/code/datums/antagonists/ninja.dm +++ b/code/datums/antagonists/ninja.dm @@ -29,7 +29,7 @@ qdel(H.gloves) var/obj/item/clothing/suit/space/space_ninja/theSuit = new(H) - var/obj/item/weapon/katana/energy/EK = new(H) + var/obj/item/weapon/dash/energy_katana/EK = new(H) theSuit.energyKatana = EK H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears) diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 7ccea4078e..a3ed4909d0 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -309,7 +309,7 @@ /obj/item/weapon/melee/supermatter_sword, /obj/item/weapon/shield/changeling, /obj/item/weapon/lava_staff, - /obj/item/weapon/katana/energy, + /obj/item/weapon/dash/energy_katana, /obj/item/weapon/hierophant_club, /obj/item/weapon/his_grace, /obj/item/weapon/gun/ballistic/minigun, diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index 6d522c5f54..951a0d6353 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -1,30 +1,93 @@ -/obj/item/weapon/katana/energy +/obj/item/weapon/dash + name = "abstract dash weapon" + var/max_charges = 3 + var/current_charges = 3 + var/charge_rate = 30 //In deciseconds + var/dash_toggled = TRUE + + var/bypass_density = FALSE //Can we beam past windows/airlocks/etc + + var/start_effect_type = /obj/effect/temp_visual/dir_setting/ninja/phase/out + var/end_effect_type = /obj/effect/temp_visual/dir_setting/ninja/phase + var/beam_icon_state = "blur" + var/dash_beam_type = /obj/effect/ebeam + +/obj/item/weapon/dash/proc/charge() + current_charges = Clamp(current_charges + 1, 0, max_charges) + if(istype(loc, /mob/living)) + to_chat(loc, "[src] now has [current_charges]/[max_charges] charges.") + +/obj/item/weapon/dash/attack_self(mob/user) + dash_toggled = !dash_toggled + to_chat(user, "You [dash_toggled ? "enable" : "disable"] the dash function on [src].") + +/obj/item/weapon/dash/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(dash_toggled) + dash(user, target) + return + +/obj/item/weapon/dash/proc/dash(mob/user, atom/target) + if(!current_charges) + return + + if(Adjacent(target)) + return + + if(target.density) + return + + var/turf/T = get_turf(target) + + if(!bypass_density) + for(var/turf/turf in getline(get_turf(user),T)) + for(var/atom/A in turf) + if(A.density) + return + + if(target in view(user.client.view, get_turf(user))) + var/obj/spot1 = new start_effect_type(T, user.dir) + user.forceMove(T) + playsound(T, 'sound/magic/blink.ogg', 25, 1) + playsound(T, "sparks", 50, 1) + var/obj/spot2 = new end_effect_type(get_turf(user), user.dir) + spot1.Beam(spot2, beam_icon_state,time = 2, maxdistance = 20, beam_type = dash_beam_type) + current_charges-- + addtimer(CALLBACK(src, .proc/charge), charge_rate) + +/obj/item/weapon/dash/energy_katana name = "energy katana" desc = "A katana infused with strong energy." icon_state = "energy_katana" item_state = "energy_katana" force = 40 throwforce = 20 + block_chance = 50 armour_penetration = 50 + w_class = WEIGHT_CLASS_NORMAL + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + block_chance = 50 + sharpness = IS_SHARP + obj_integrity = 200 + max_integrity = 200 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + bypass_density = TRUE var/datum/effect_system/spark_spread/spark_system -/obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if(!user || !target) - return - - if(proximity_flag) - if(isobj(target) || issilicon(target)) - spark_system.start() - playsound(user, "sparks", 50, 1) - playsound(user, 'sound/weapons/blade1.ogg', 50, 1) - target.emag_act(user) +/obj/item/weapon/dash/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(dash_toggled) + return ..() + if(proximity_flag && (isobj(target) || issilicon(target))) + spark_system.start() + playsound(user, "sparks", 50, 1) + playsound(user, 'sound/weapons/blade1.ogg', 50, 1) + target.emag_act(user) //If we hit the Ninja who owns this Katana, they catch it. //Works for if the Ninja throws it or it throws itself or someone tries //To throw it at the ninja -/obj/item/weapon/katana/energy/throw_impact(atom/hit_atom) +/obj/item/weapon/dash/energy_katana/throw_impact(atom/hit_atom) if(ishuman(hit_atom)) var/mob/living/carbon/human/H = hit_atom if(istype(H.wear_suit, /obj/item/clothing/suit/space/space_ninja)) @@ -35,7 +98,7 @@ ..() -/obj/item/weapon/katana/energy/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0) +/obj/item/weapon/dash/energy_katana/proc/returnToOwner(mob/living/carbon/human/user, doSpark = 1, caught = 0) if(!istype(user)) return forceMove(get_turf(user)) @@ -62,13 +125,12 @@ if(msg) to_chat(user, "[msg]") -/obj/item/weapon/katana/energy/New() - ..() +/obj/item/weapon/dash/energy_katana/Initialize() + . = ..() spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) -/obj/item/weapon/katana/energy/Destroy() - qdel(spark_system) - spark_system = null - return ..() \ No newline at end of file +/obj/item/weapon/dash/energy_katana/Destroy() + QDEL_NULL(spark_system) + return ..() diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index b304b3c530..8e2c66fcbb 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -22,7 +22,7 @@ Contents: armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100) strip_delay = 12 - actions_types = list(/datum/action/item_action/initialize_ninja_suit, /datum/action/item_action/ninjajaunt, /datum/action/item_action/ninjasmoke, /datum/action/item_action/ninjaboost, /datum/action/item_action/ninjapulse, /datum/action/item_action/ninjastar, /datum/action/item_action/ninjanet, /datum/action/item_action/ninja_sword_recall, /datum/action/item_action/ninja_stealth, /datum/action/item_action/toggle_glove) + actions_types = list(/datum/action/item_action/initialize_ninja_suit, /datum/action/item_action/ninjasmoke, /datum/action/item_action/ninjaboost, /datum/action/item_action/ninjapulse, /datum/action/item_action/ninjastar, /datum/action/item_action/ninjanet, /datum/action/item_action/ninja_sword_recall, /datum/action/item_action/ninja_stealth, /datum/action/item_action/toggle_glove) //Important parts of the suit. var/mob/living/carbon/human/affecting = null @@ -31,7 +31,7 @@ Contents: var/list/reagent_list = list("omnizine","salbutamol","spaceacillin","charcoal","nutriment","radium","potass_iodide")//The reagents ids which are added to the suit at New(). var/list/stored_research = list()//For stealing station research. var/obj/item/weapon/disk/tech_disk/t_disk//To copy design onto disk. - var/obj/item/weapon/katana/energy/energyKatana //For teleporting the katana back to the ninja (It's an ability) + var/obj/item/weapon/dash/energy_katana/energyKatana //For teleporting the katana back to the ninja (It's an ability) //Other articles of ninja gear worn together, used to easily reference them after initializing. var/obj/item/clothing/head/helmet/space/space_ninja/n_hood @@ -181,9 +181,6 @@ Contents: if(!s_initialized) to_chat(user, "ERROR: suit offline. Please activate suit.") return FALSE - if(istype(action, /datum/action/item_action/ninjajaunt)) - ninjajaunt() - return TRUE if(istype(action, /datum/action/item_action/ninjasmoke)) ninjasmoke() return TRUE diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm index f26912df24..b723ade381 100644 --- a/code/modules/ninja/suit/suit_initialisation.dm +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -71,7 +71,6 @@ /obj/item/clothing/suit/space/space_ninja/proc/deinitialize_three(delay, mob/living/carbon/human/U) to_chat(U, "Logging off, [U:real_name]. Shutting down SpiderOS.") - remove_ninja_verbs() addtimer(CALLBACK(src, .proc/deinitialize_four, delay, U), delay) /obj/item/clothing/suit/space/space_ninja/proc/deinitialize_four(delay, mob/living/carbon/human/U) diff --git a/code/modules/ninja/suit/suit_verbs_handlers.dm b/code/modules/ninja/suit/suit_verbs_handlers.dm index 7c887da1d2..35070a52dd 100644 --- a/code/modules/ninja/suit/suit_verbs_handlers.dm +++ b/code/modules/ninja/suit/suit_verbs_handlers.dm @@ -22,11 +22,5 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/grant_ninja_verbs() - verbs += /obj/item/clothing/suit/space/space_ninja/proc/ninjashift - s_initialized=1 - slowdown=0 - - -/obj/item/clothing/suit/space/space_ninja/proc/remove_ninja_verbs() - verbs -= /obj/item/clothing/suit/space/space_ninja/proc/ninjashift + slowdown=0 \ No newline at end of file diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 98bb0c7395e31a60125e1bf4688d1063d99a4164..2ae375b9270dcffdaf9b7ea19297a2de8a9369e4 100644 GIT binary patch delta 10609 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 b21PN@#uu4F-1x-+^y8(%>*tlvU_t*ERWW-` delta 9493 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 diff --git a/tgstation.dme b/tgstation.dme index a60e705a1f..1d854c8f5c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1875,7 +1875,6 @@ #include "code\modules\ninja\suit\n_suit_verbs\ninja_stars.dm" #include "code\modules\ninja\suit\n_suit_verbs\ninja_stealth.dm" #include "code\modules\ninja\suit\n_suit_verbs\ninja_sword_recall.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_teleporting.dm" #include "code\modules\orbit\orbit.dm" #include "code\modules\paperwork\clipboard.dm" #include "code\modules\paperwork\contract.dm"