other things I missed. oops

This commit is contained in:
Poojawa
2017-02-08 00:38:26 -06:00
parent 883ebad540
commit d0f50d5488
24 changed files with 192 additions and 141 deletions
+105
View File
@@ -0,0 +1,105 @@
/obj/effect/proc_holder/spell/aimed
name = "aimed projectile spell"
var/projectile_type = /obj/item/projectile/magic/teleport
var/deactive_msg = "You discharge your projectile..."
var/active_msg = "You charge your projectile!"
var/base_icon_state = "projectile"
var/active_icon_state = "projectile"
/obj/effect/proc_holder/spell/aimed/Click()
var/mob/living/user = usr
if(!istype(user))
return
var/msg
if(!can_cast(user))
msg = "<span class='warning'>You can no longer cast [name]!</span>"
remove_ranged_ability(msg)
return
if(active)
msg = "<span class='notice'>[deactive_msg]</span>"
remove_ranged_ability(msg)
else
msg = "<span class='notice'>[active_msg]<B>Left-click to shoot it at a target!</B></span>"
add_ranged_ability(user, msg, TRUE)
/obj/effect/proc_holder/spell/aimed/update_icon()
if(!action)
return
action.button_icon_state = "[base_icon_state][active]"
action.UpdateButtonIcon()
/obj/effect/proc_holder/spell/aimed/InterceptClickOn(mob/living/caller, params, atom/target)
if(..())
return FALSE
if(!cast_check(0, ranged_ability_user))
remove_ranged_ability()
return FALSE
var/list/targets = list(target)
perform(targets,user = ranged_ability_user)
return TRUE
/obj/effect/proc_holder/spell/aimed/cast(list/targets, mob/living/user)
var/target = targets[1]
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 FALSE
fire_projectile(user, target)
user.newtonian_move(get_dir(U, T))
remove_ranged_ability() //Auto-disable the ability once successfully performed
return TRUE
/obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target)
var/obj/item/projectile/P = new projectile_type(user.loc)
P.current = get_turf(user)
P.preparePixelProjectile(target, get_turf(target), user)
P.fire()
return TRUE
/obj/effect/proc_holder/spell/aimed/lightningbolt
name = "Lightning Bolt"
desc = "Fire a high powered lightning bolt at your foes!"
school = "evocation"
charge_max = 200
clothes_req = 1
invocation = "UN'LTD P'WAH"
invocation_type = "shout"
cooldown_min = 30
active_icon_state = "lightning"
base_icon_state = "lightning"
sound = 'sound/magic/lightningbolt.ogg'
active = FALSE
var/tesla_range = 15
var/tesla_power = 20000
var/tesla_boom = FALSE
active_msg = "You energize your hand with arcane lightning!"
deactive_msg = "You let the energy flow out of your hands back into yourself..."
/obj/effect/proc_holder/spell/aimed/lightningbolt/fire_projectile(mob/living/user, atom/target)
var/obj/item/projectile/magic/aoe/lightning/P = new /obj/item/projectile/magic/aoe/lightning(user.loc)
P.current = get_turf(user)
P.preparePixelProjectile(target, get_turf(target), user)
P.tesla_power = tesla_power
P.tesla_range = tesla_range
P.tesla_boom = tesla_boom
P.fire()
return TRUE
/obj/effect/proc_holder/spell/aimed/fireball
name = "Fireball"
desc = "This spell fires a fireball at a target and does not require wizard garb."
school = "evocation"
charge_max = 60
clothes_req = 0
invocation = "ONI SOMA"
invocation_type = "shout"
range = 20
cooldown_min = 20 //10 deciseconds reduction per rank
projectile_type = /obj/item/projectile/magic/aoe/fireball
base_icon_state = "fireball"
action_icon_state = "fireball0"
sound = "sound/magic/Fireball.ogg"
active_msg = "You prepare to cast your fireball spell!"
deactive_msg = "You extinguish your fireball... for now."
active = FALSE
+2 -2
View File
@@ -69,7 +69,7 @@
user << "<span class='notice'>[C] seems to not be sentient. You cannot summon a contract for [C.p_them()].</span>"
/obj/effect/proc_holder/spell/fireball/hellish
/obj/effect/proc_holder/spell/aimed/fireball/hellish
name = "Hellfire"
desc = "This spell launches hellfire at the target."
@@ -80,7 +80,7 @@
invocation_type = "shout"
range = 2
fireball_type = /obj/item/projectile/magic/fireball/infernal
projectile_type = /obj/item/projectile/magic/aoe/fireball/infernal
action_background_icon_state = "bg_demon"
+10 -10
View File
@@ -1,6 +1,6 @@
/obj/effect/proc_holder/spell/targeted/lightning
name = "Lightning Bolt"
desc = "Charges up and throws a lightning bolt at nearby enemies. Classic."
/obj/effect/proc_holder/spell/targeted/tesla
name = "Tesla Blast"
desc = "Blast lightning at your foes!"
charge_type = "recharge"
charge_max = 300
clothes_req = 1
@@ -16,12 +16,12 @@
action_icon_state = "lightning"
/obj/effect/proc_holder/spell/targeted/lightning/Click()
/obj/effect/proc_holder/spell/targeted/tesla/Click()
if(!ready && cast_check())
StartChargeup()
return 1
/obj/effect/proc_holder/spell/targeted/lightning/proc/StartChargeup(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/tesla/proc/StartChargeup(mob/user = usr)
ready = 1
user << "<span class='notice'>You start gathering the power.</span>"
Snd = new/sound('sound/magic/lightning_chargeup.ogg',channel = 7)
@@ -36,18 +36,18 @@
else
revert_cast(user, 0)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr)
/obj/effect/proc_holder/spell/targeted/tesla/proc/Reset(mob/user = usr)
ready = 0
if(halo)
user.overlays.Remove(halo)
/obj/effect/proc_holder/spell/targeted/lightning/revert_cast(mob/user = usr, message = 1)
/obj/effect/proc_holder/spell/targeted/tesla/revert_cast(mob/user = usr, message = 1)
if(message)
user << "<span class='notice'>No target found in range.</span>"
Reset(user)
..()
/obj/effect/proc_holder/spell/targeted/lightning/cast(list/targets, mob/user = usr)
/obj/effect/proc_holder/spell/targeted/tesla/cast(list/targets, mob/user = usr)
ready = 0
var/mob/living/carbon/target = targets[1]
Snd=sound(null, repeat = 0, wait = 1, channel = Snd.channel) //byond, why you suck?
@@ -63,7 +63,7 @@
Bolt(user,target,30,5,user)
Reset(user)
/obj/effect/proc_holder/spell/targeted/lightning/proc/Bolt(mob/origin,mob/target,bolt_energy,bounces,mob/user = usr)
/obj/effect/proc_holder/spell/targeted/tesla/proc/Bolt(mob/origin,mob/target,bolt_energy,bounces,mob/user = usr)
origin.Beam(target,icon_state="lightning[rand(1,12)]",time=5)
var/mob/living/carbon/current = target
if(bounces < 1)
@@ -81,4 +81,4 @@
return
var/mob/living/next = pick(possible_targets)
if(next)
Bolt(current,next,max((bolt_energy-5),5),bounces-1,user)
Bolt(current,next,max((bolt_energy-5),5),bounces-1,user)
-72
View File
@@ -227,78 +227,6 @@
mutations = list(BLINDMUT)
duration = 300
sound="sound/magic/Blind.ogg"
/obj/effect/proc_holder/spell/fireball
name = "Fireball"
desc = "This spell fires a fireball at a target and does not require wizard garb."
school = "evocation"
charge_max = 60
clothes_req = 0
invocation = "ONI SOMA"
invocation_type = "shout"
range = 20
cooldown_min = 20 //10 deciseconds reduction per rank
var/fireball_type = /obj/item/projectile/magic/fireball
action_icon_state = "fireball0"
sound = "sound/magic/Fireball.ogg"
active = FALSE
/obj/effect/proc_holder/spell/fireball/Click()
var/mob/living/user = usr
if(!istype(user))
return
var/msg
if(!can_cast(user))
msg = "<span class='warning'>You can no longer cast Fireball.</span>"
remove_ranged_ability(msg)
return
if(active)
msg = "<span class='notice'>You extinguish your fireball...for now.</span>"
remove_ranged_ability(msg)
else
msg = "<span class='notice'>Your prepare to cast your fireball spell! <B>Left-click to cast at a target!</B></span>"
add_ranged_ability(user, msg, TRUE)
/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/caller, params, atom/target)
if(..())
return FALSE
if(!cast_check(0, ranged_ability_user))
remove_ranged_ability()
return FALSE
var/list/targets = list(target)
perform(targets,user = ranged_ability_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
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))
remove_ranged_ability() //Auto-disable the ability once successfully performed
return 1
/obj/effect/proc_holder/spell/aoe_turf/repulse
name = "Repulse"
desc = "This spell throws everything around the user away."