Fixes Fireball clicking issues (#19423)

* Fixes Fireball clicking issues

- Attempts to fix clicking issues with Fireball during mob changes and
other edge cases.

* Alien spit now turns off when used when out of plasma.
This commit is contained in:
GunHog
2016-07-23 14:28:10 +12:00
committed by oranges
parent 1299758f4a
commit 3a6df6950a
3 changed files with 16 additions and 5 deletions
@@ -215,6 +215,7 @@ Doesn't work on other aliens/AI.*/
if(user.getPlasma() < p_cost)
user << "<span class='warning'>You need at least [p_cost] plasma to spit.</span>"
remove_ranged_ability(user)
return
var/turf/T = user.loc
+2 -2
View File
@@ -9,7 +9,7 @@
var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin verb for now
/obj/effect/proc_holder/proc/InterceptClickOn(mob/living/user, params, atom/A)
if(user.ranged_ability && user.ranged_ability != src)
if(user.ranged_ability != src)
user << "<span class='warning'><b>[user.ranged_ability.name]</b> has been disabled."
user.ranged_ability.remove_ranged_ability(user)
return TRUE //TRUE for failed, FALSE for passed.
@@ -31,7 +31,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
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
if(!user || !user.client || (user.ranged_ability && user.ranged_ability != src)) //To avoid removing the wrong ability
return
user.ranged_ability = null
user.client.click_intercept = null
+13 -3
View File
@@ -270,10 +270,16 @@
/obj/effect/proc_holder/spell/fireball/Click()
var/mob/living/user = usr
if(!istype(user) || !can_cast(user))
if(!istype(user))
return
var/msg
if(!can_cast(user))
msg = "<span class='warning'>You can no longer cast Fireball.</span>"
remove_ranged_ability(user, msg)
return
if(active)
msg = "<span class='notice'>You extinguish your fireball...for now.</span>"
remove_ranged_ability(user, msg)
@@ -282,20 +288,24 @@
add_ranged_ability(user, msg)
/obj/effect/proc_holder/spell/fireball/update_icon()
if(!action)
return
action.button_icon_state = "fireball[active]"
action.UpdateButtonIcon()
/obj/effect/proc_holder/spell/fireball/InterceptClickOn(mob/living/user, params, atom/target)
if(..())
return
return FALSE
if(!cast_check(0, user))
remove_ranged_ability(user)
return
return FALSE
var/list/targets = list(target)
perform(targets,user = user)
return TRUE
/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