From e2cfcb0bd191af1c205205a955ae1f8f58eda416 Mon Sep 17 00:00:00 2001 From: GunHog Date: Mon, 4 Jul 2016 16:06:01 -0500 Subject: [PATCH] Aimed Fireball Spells! (#19030) * Fireball Spell Changes - Changes the fireball spell to be click-to-fire. - Converted Devil and Wand fireballs as well. - Moved some code to the /proc_holder level to work across the /alien and /spell branches. * Tweaks and Fixes - Infernal Fireball is now a projectile and has the right explosion values. - Removed non-projectile spell versions of fireball, as they are unused - Fixed fireball not seeking adjacent targets. - Fixed incorrect bolding slashes. * Fix Fixes the fireball sometimes missing. * Fixes and tweak - Uses TRUE/FALSE defines instead of 0 and 1 for boolean variables. - Ranged abilities now remove themselves tries to use an ability in a disabled state. (Such as being knocked out) - Define for the click cooldown. --- code/__DEFINES/misc.dm | 1 + code/datums/mind.dm | 2 +- code/game/gamemodes/antag_spawner.dm | 2 +- .../changeling/powers/augmented_eyesight.dm | 2 +- .../changeling/powers/strained_muscles.dm | 2 +- code/game/gamemodes/devil/devilinfo.dm | 6 +- code/game/gamemodes/wizard/spellbook.dm | 4 +- .../awaymissions/mission_code/Academy.dm | 2 +- .../carbon/alien/humanoid/alien_powers.dm | 31 ++++---- .../living/simple_animal/hostile/wizard.dm | 6 +- code/modules/paperwork/contract.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 25 ++++++- code/modules/spells/spell.dm | 36 +++++++++- code/modules/spells/spell_types/devil.dm | 12 +--- code/modules/spells/spell_types/wizard.dm | 67 ++++++++++++------ icons/mob/actions.dmi | Bin 78001 -> 78872 bytes 16 files changed, 132 insertions(+), 68 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index eead73d666b..c6430d4654f 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -152,6 +152,7 @@ #define CLICK_CD_MELEE 8 #define CLICK_CD_RANGE 4 +#define CLICK_CD_CLICK_ABILITY 6 #define CLICK_CD_BREAKOUT 100 #define CLICK_CD_HANDCUFFED 10 #define CLICK_CD_RESIST 20 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index e53f4a1f432..c4e2e6eb515 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1180,7 +1180,7 @@ special_role = null current << "Your infernal link has been severed! You are no longer a devil!" RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt) - RemoveSpell(/obj/effect/proc_holder/spell/dumbfire/fireball/hellish) + RemoveSpell(/obj/effect/proc_holder/spell/fireball/hellish) RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_contract) RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_pitchfork) message_admins("[key_name_admin(usr)] has de-devil'ed [current].") diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index d4a54fb86b3..cbc03db8e52 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -75,7 +75,7 @@ switch(type) if("destruction") M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null)) - M.mind.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball(null)) + M.mind.AddSpell(new /obj/effect/proc_holder/spell/fireball(null)) M << "Your service has not gone unrewarded, however. Studying under [usr.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball." if("bluespace") M.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null)) diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index f5b496cf6a7..ca45e620da4 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -7,7 +7,7 @@ helptext = "Grants us thermal vision or flash protection. We will become a lot more vulnerable to flash-based devices while thermal vision is active." chemical_cost = 0 dna_cost = 2 //Would be 1 without thermal vision - var/active = 0 //Whether or not vision is enhanced + active = 0 //Whether or not vision is enhanced /obj/effect/proc_holder/changeling/augmented_eyesight/sting_action(mob/living/carbon/human/user) if(!istype(user)) diff --git a/code/game/gamemodes/changeling/powers/strained_muscles.dm b/code/game/gamemodes/changeling/powers/strained_muscles.dm index 94c96ad30bc..f2d4d98fccd 100644 --- a/code/game/gamemodes/changeling/powers/strained_muscles.dm +++ b/code/game/gamemodes/changeling/powers/strained_muscles.dm @@ -9,7 +9,7 @@ dna_cost = 1 req_human = 1 var/stacks = 0 //Increments every 5 seconds; damage increases over time - var/active = 0 //Whether or not you are a hedgehog + active = 0 //Whether or not you are a hedgehog /obj/effect/proc_holder/changeling/strained_muscles/sting_action(mob/living/carbon/user) active = !active diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/game/gamemodes/devil/devilinfo.dm index d0d0429d433..b512422ef5c 100644 --- a/code/game/gamemodes/devil/devilinfo.dm +++ b/code/game/gamemodes/devil/devilinfo.dm @@ -297,7 +297,7 @@ var/global/list/lawlorify = list ( /datum/devilinfo/proc/give_base_spells(give_summon_contract = 0) remove_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork(null)) if(give_summon_contract) give_summon_contract() @@ -305,13 +305,13 @@ var/global/list/lawlorify = list ( /datum/devilinfo/proc/give_lizard_spells() remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) /datum/devilinfo/proc/give_true_spells() remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/greater(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index ee3965287d1..2c370f47da9 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -95,7 +95,7 @@ /datum/spellbook_entry/fireball name = "Fireball" - spell_type = /obj/effect/proc_holder/spell/dumbfire/fireball + spell_type = /obj/effect/proc_holder/spell/fireball log_name = "FB" /datum/spellbook_entry/magicm @@ -738,7 +738,7 @@ return /obj/item/weapon/spellbook/oneuse/fireball - spell = /obj/effect/proc_holder/spell/dumbfire/fireball + spell = /obj/effect/proc_holder/spell/fireball spellname = "fireball" icon_state ="bookfireball" desc = "This book feels warm to the touch." diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 0c4ab1dd76a..b4b537285f7 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -121,7 +121,7 @@ wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt) wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile) - wizmind.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball) + wizmind.AddSpell(new /obj/effect/proc_holder/spell/fireball) current_wizard = wizbody diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 7b151fbc73c..5f4d11a7112 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -11,7 +11,6 @@ Doesn't work on other aliens/AI.*/ panel = "Alien" var/plasma_cost = 0 var/check_turf = 0 - var/has_action = 1 var/datum/action/spell_action/alien/action = null var/action_icon = 'icons/mob/actions.dmi' @@ -191,31 +190,29 @@ Doesn't work on other aliens/AI.*/ name = "Spit Neurotoxin" desc = "Spits neurotoxin at someone, paralyzing them for a short time." action_icon_state = "alien_neurotoxin_0" - var/active = 0 + active = FALSE /obj/effect/proc_holder/alien/neurotoxin/fire(mob/living/carbon/user) + var/message if(active) - user.ranged_ability = null - user << "You empty your neurotoxin gland." - active = 0 - else if(user.ranged_ability && user.ranged_ability != src) - user << "You already have another aimed ability readied! Cancel it first." - return + message = "You empty your neurotoxin gland." + remove_ranged_ability(user, message) else - user.ranged_ability = src - active = 1 - user << "You prepare your neurotoxin gland. Left-click to fire at a target!" + message = "You prepare your neurotoxin gland. Left-click to fire at a target!" + add_ranged_ability(user, message) - user.client.click_intercept = user.ranged_ability +/obj/effect/proc_holder/alien/neurotoxin/update_icon() action.button_icon_state = "alien_neurotoxin_[active]" action.UpdateButtonIcon() /obj/effect/proc_holder/alien/neurotoxin/InterceptClickOn(mob/living/carbon/user, params, atom/target) + if(..()) + return var/p_cost = 50 if(!iscarbon(user) || user.lying || user.stat) + remove_ranged_ability(user) return - user.next_click = world.time + 6 - user.face_atom(target) + if(user.getPlasma() < p_cost) user << "You need at least [p_cost] plasma to spit." return @@ -223,7 +220,7 @@ Doesn't work on other aliens/AI.*/ var/turf/T = user.loc var/turf/U = get_step(user, user.dir) // Get the tile infront of the move, based on their direction if(!isturf(U) || !isturf(T)) - return 0 + return FALSE user.visible_message("[user] spits neurotoxin!", "You spit neurotoxin.") var/obj/item/projectile/bullet/neurotoxin/A = new /obj/item/projectile/bullet/neurotoxin(user.loc) @@ -233,7 +230,7 @@ Doesn't work on other aliens/AI.*/ user.newtonian_move(get_dir(U, T)) user.adjustPlasma(-p_cost) - return 1 + return TRUE /obj/effect/proc_holder/alien/neurotoxin/on_lose(mob/living/carbon/user) if(user.ranged_ability == src) @@ -308,7 +305,7 @@ Doesn't work on other aliens/AI.*/ /obj/effect/proc_holder/alien/sneak name = "Sneak" desc = "Blend into the shadows to stalk your prey." - var/active = 0 + active = 0 action_icon_state = "alien_sneak" diff --git a/code/modules/mob/living/simple_animal/hostile/wizard.dm b/code/modules/mob/living/simple_animal/hostile/wizard.dm index df6a4be30be..bf5c614d637 100644 --- a/code/modules/mob/living/simple_animal/hostile/wizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/wizard.dm @@ -29,7 +29,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/wizard, /obj/item/weapon/staff) - var/obj/effect/proc_holder/spell/dumbfire/fireball/fireball = null + var/obj/effect/proc_holder/spell/fireball/fireball = null var/obj/effect/proc_holder/spell/targeted/turf_teleport/blink/blink = null var/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/mm = null @@ -38,7 +38,7 @@ /mob/living/simple_animal/hostile/wizard/New() ..() - fireball = new /obj/effect/proc_holder/spell/dumbfire/fireball + fireball = new /obj/effect/proc_holder/spell/fireball fireball.clothes_req = 0 fireball.human_req = 0 fireball.player_lock = 0 @@ -62,7 +62,7 @@ if(target && next_cast < world.time) if((get_dir(src,target) in list(SOUTH,EAST,WEST,NORTH)) && fireball.cast_check(0,src)) //Lined up for fireball src.setDir(get_dir(src,target)) - fireball.choose_targets(src) + fireball.perform(list(target), user = src) next_cast = world.time + 10 //One spell per second return . if(mm.cast_check(0,src)) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index b45217d6970..df21427279d 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -251,7 +251,7 @@ /obj/item/weapon/paper/contract/infernal/magic/FulfillContract(mob/living/carbon/human/user = target.current) if(!istype(user) || !user.mind) return -1 - user.mind.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball(null)) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/fireball(null)) user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null)) return ..() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 638b38d4faf..a94abf7243c 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -24,27 +24,46 @@ damage_type = BRUTE nodamage = 0 + //explosion values + var/exp_heavy = 0 + var/exp_light = 2 + var/exp_flash = 3 + var/exp_fire = 2 + /obj/item/projectile/magic/fireball/Range() var/turf/T1 = get_step(src,turn(dir, -45)) var/turf/T2 = get_step(src,turn(dir, 45)) + var/turf/T3 = get_step(src,dir) var/mob/living/L = locate(/mob/living) in T1 //if there's a mob alive in our front right diagonal, we hit it. if(L && L.stat != DEAD) - Bump(L) //Magic Bullet #teachthecontroversy + Bump(L,1) //Magic Bullet #teachthecontroversy return L = locate(/mob/living) in T2 if(L && L.stat != DEAD) - Bump(L) + Bump(L,1) + return + L = locate(/mob/living) in T3 + if(L && L.stat != DEAD) + Bump(L,1) return ..() /obj/item/projectile/magic/fireball/on_hit(target) . = ..() var/turf/T = get_turf(target) - explosion(T, -1, 0, 2, 3, 0, flame_range = 2) + explosion(T, -1, exp_heavy, exp_light, exp_flash, 0, flame_range = exp_fire) if(ismob(target)) //multiple flavors of pain var/mob/living/M = target M.take_overall_damage(0,10) //between this 10 burn, the 10 brute, the explosion brute, and the onfire burn, your at about 65 damage if you stop drop and roll immediately +/obj/item/projectile/magic/fireball/infernal + name = "infernal fireball" + exp_heavy = -1 + exp_light = -1 + exp_flash = 4 + exp_fire= 5 + + /obj/item/projectile/magic/resurrection name = "bolt of resurrection" icon_state = "ion" diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index e5b58e577a4..ce77ac1c1ef 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -1,14 +1,44 @@ #define TARGET_CLOSEST 1 #define TARGET_RANDOM 2 + /obj/effect/proc_holder var/panel = "Debug"//What panel the proc holder needs to go on. + var/active = FALSE //Used by toggle based abilities. var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now -/obj/effect/proc_holder/proc/InterceptClickOn(mob/user, params, atom/A) - return +/obj/effect/proc_holder/proc/InterceptClickOn(mob/living/user, params, atom/A) + if(user.ranged_ability && user.ranged_ability != src) + user << "[user.ranged_ability.name] has been disabled." + user.ranged_ability.remove_ranged_ability(user) + return TRUE //TRUE for failed, FALSE for passed. + user.next_click = world.time + CLICK_CD_CLICK_ABILITY + user.face_atom(A) + return FALSE +/obj/effect/proc_holder/proc/add_ranged_ability(mob/living/user, var/msg) + if(!user || !user.client) + return + if(user.ranged_ability && user.ranged_ability != src) + user << "[user.ranged_ability.name] has been replaced by [name]." + user.ranged_ability.remove_ranged_ability(user) + user.ranged_ability = src + user.client.click_intercept = user.ranged_ability + active = TRUE + if(msg) + user << msg + update_icon() + +/obj/effect/proc_holder/proc/remove_ranged_ability(mob/living/user, var/msg) + if(!user || !user.client ||user.ranged_ability != src) //To avoid removing the wrong ability + return + user.ranged_ability = null + user.client.click_intercept = null + active = FALSE + if(msg) + user << msg + update_icon() /obj/effect/proc_holder/spell name = "Spell" @@ -61,10 +91,10 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin var/critfailchance = 0 var/centcom_cancast = 1 //Whether or not the spell should be allowed on z2 - var/datum/action/spell_action/action = null var/action_icon = 'icons/mob/actions.dmi' var/action_icon_state = "spell_default" var/action_background_icon_state = "bg_spell" + var/datum/action/spell_action/action /obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index 2622770da09..90de8e124df 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -75,7 +75,7 @@ user << "[C] seems to not be sentient. You cannot summon a contract for them." -/obj/effect/proc_holder/spell/dumbfire/fireball/hellish +/obj/effect/proc_holder/spell/fireball/hellish name = "Hellfire" desc = "This spell launches hellfire at the target." @@ -86,18 +86,10 @@ invocation_type = "shout" range = 2 - proj_icon_state = "fireball" - proj_name = "a fireball" - proj_type = /obj/effect/proc_holder/spell/turf/fireball/infernal - - proj_lifespan = 200 - proj_step_delay = 1 + fireball_type = /obj/item/projectile/magic/fireball/infernal action_background_icon_state = "bg_demon" -/obj/effect/proc_holder/spell/turf/fireball/infernal/cast(turf/T,mob/user = usr) - explosion(T, -1, -1, 1, 4, 0, flame_range = 5) - /obj/effect/proc_holder/spell/targeted/infernal_jaunt name = "Infernal Jaunt" desc = "Use hellfire to phase out of existence." diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index c24d6b52909..ad4ffe90678 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -250,7 +250,7 @@ duration = 300 sound="sound/magic/Blind.ogg" -/obj/effect/proc_holder/spell/dumbfire/fireball +/obj/effect/proc_holder/spell/fireball name = "Fireball" desc = "This spell fires a fireball at a target and does not require wizard garb." @@ -261,30 +261,55 @@ invocation_type = "shout" range = 20 cooldown_min = 20 //10 deciseconds reduction per rank - - proj_icon_state = "fireball" - proj_name = "a fireball" - proj_type = "/obj/effect/proc_holder/spell/turf/fireball" - - proj_lifespan = 200 - proj_step_delay = 1 - - action_icon_state = "fireball" + var/fireball_type = /obj/item/projectile/magic/fireball + action_icon_state = "fireball0" sound = "sound/magic/Fireball.ogg" -/obj/effect/proc_holder/spell/turf/fireball/cast(turf/T,mob/user = usr) - explosion(T, -1, 0, 2, 3, 0, flame_range = 2) + active = FALSE -/obj/effect/proc_holder/spell/targeted/inflict_handler/fireball - amt_dam_brute = 20 - amt_dam_fire = 25 +/obj/effect/proc_holder/spell/fireball/Click() + var/mob/living/user = usr + if(!istype(user) || !can_cast(user)) + return -/obj/effect/proc_holder/spell/targeted/explosion/fireball - ex_severe = -1 - ex_heavy = -1 - ex_light = 2 - ex_flash = 5 + var/msg + if(active) + msg = "You extinguish your fireball...for now." + remove_ranged_ability(user, msg) + else + msg = "Your prepare to cast your fireball spell! Left-click to cast at a target!" + add_ranged_ability(user, msg) + +/obj/effect/proc_holder/spell/fireball/update_icon() + action.button_icon_state = "fireball[active]" + action.UpdateButtonIcon() + +/obj/effect/proc_holder/spell/fireball/InterceptClickOn(mob/living/user, params, atom/target) + if(..()) + return + + if(!cast_check(0, user)) + remove_ranged_ability(user) + return + + var/list/targets = list(target) + perform(targets,user = user) + +/obj/effect/proc_holder/spell/fireball/cast(list/targets, mob/living/user) + var/target = targets[1] //There is only ever one target for fireball + var/turf/T = user.loc + var/turf/U = get_step(user, user.dir) // Get the tile infront of the move, based on their direction + if(!isturf(U) || !isturf(T)) + return 0 + + var/obj/item/projectile/magic/fireball/FB = new fireball_type(user.loc) + FB.current = get_turf(user) + FB.preparePixelProjectile(target, get_turf(target), user) + FB.fire() + user.newtonian_move(get_dir(U, T)) + + return 1 /obj/effect/proc_holder/spell/aoe_turf/repulse name = "Repulse" @@ -315,7 +340,7 @@ if(AM == user || AM.anchored) continue // created sparkles will disappear on their own - PoolOrNew(sparkle_path, AM) + PoolOrNew(sparkle_path, AM) throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user))) distfromcaster = get_dist(user, AM) if(distfromcaster == 0) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index d41fc220901728d7d44dd4d94c2e2f4480329144..18a190d88d34a41208226d8a1c70707d8425f4c1 100644 GIT binary patch delta 19915 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Ⓢ{#ZJ5$ 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 delta 19038 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