diff --git a/code/modules/spells/roguetown/arcane_spells.dm b/code/modules/spells/roguetown/arcane_spells.dm deleted file mode 100644 index 03387dd0..00000000 --- a/code/modules/spells/roguetown/arcane_spells.dm +++ /dev/null @@ -1,409 +0,0 @@ -//IGNITE------------------ - -/obj/effect/proc_holder/spell/arcane/ignite - name = "Ignite" - desc = "" - overlay_state = "flame" - sound = 'sound/items/firelight.ogg' - range = 4 - releasedrain = 30 - chargedrain = 0 - chargetime = 0 - charge_max = 10 SECONDS - -/obj/effect/proc_holder/spell/arcane/ignite/cast(list/targets, mob/user = usr) - . = ..() - if(isliving(targets[1])) - var/mob/living/L = targets[1] - user.visible_message("[user] points at [L]!") - if(L.anti_magic_check(TRUE, TRUE)) - return FALSE - L.adjust_fire_stacks(5) - L.IgniteMob() - addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, ExtinguishMob)), 5 SECONDS) - return TRUE - - // Spell interaction with ignitable objects (burn wooden things, light torches up) - else if(isobj(targets[1])) - var/obj/O = targets[1] - if(O.fire_act()) - user.visible_message("[user] points at [O], igniting it in flames!") - return TRUE - else - to_chat(user, span_warning("You point at [O], but it fails to catch fire.")) - return FALSE - return FALSE - -//SMOKESCREEN----------------- - -/obj/effect/proc_holder/spell/arcane/smokescreen - name = "Smoke" - desc = "" - overlay_state = "smoke" - sound = 'sound/items/firesnuff.ogg' - range = 8 - releasedrain = 30 - chargedrain = 0 - chargetime = 0 - charge_max = 10 SECONDS - smoke_spread = 1 - smoke_amt = 2 - -/obj/effect/proc_holder/spell/arcane/smokescreen/cast(list/targets,mob/user = usr) - . = ..() - if(isliving(targets[1])) - return TRUE - else if(isopenturf(targets[1])) - return TRUE - return FALSE - -//SWAP PLACES----------------- - -/obj/effect/proc_holder/spell/arcane/swap - name = "Location Swap" - desc = "" - overlay_state = "swap" - sound = 'sound/magic/magic_nulled.ogg' - range = 8 - releasedrain = 50 - chargedrain = 1 - chargetime = 15 - charge_max = 20 SECONDS - charging_slowdown = 3 - var/include_space = FALSE //whether it includes space tiles in possible teleport locations - var/include_dense = FALSE //whether it includes dense tiles in possible teleport locations - -/obj/effect/temp_visual/swap - icon_state = "anom" - layer = ABOVE_MOB_LAYER - plane = GAME_PLANE_UPPER - -/obj/effect/proc_holder/spell/arcane/swap/cast(list/targets, mob/living/user) - if(isliving(targets[1])) - var/mob/living/target = targets[1] - if(target.anti_magic_check(TRUE, TRUE)) - return FALSE - new /obj/effect/temp_visual/swap(get_turf(user)) - new /obj/effect/temp_visual/swap(get_turf(target)) - var/atom/targl = get_turf(target) - if(do_teleport(target, user, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC)) - do_teleport(user, targl, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC) - if(ismob(target)) - var/mob/M = target - to_chat(M, span_warning("You find myself somewhere else...")) - return TRUE - -//BLINK----------------- - -/obj/effect/proc_holder/spell/arcane/blink - name = "Blink" - desc = "" - overlay_state = "blink" - sound = 'sound/magic/magic_nulled.ogg' - range = 8 - releasedrain = 50 - chargedrain = 0 - chargetime = 0 - charge_max = 15 SECONDS - var/include_space = FALSE //whether it includes space tiles in possible teleport locations - var/include_dense = FALSE //whether it includes dense tiles in possible teleport locations - -/obj/effect/temp_visual/blink - icon_state = "anom" - layer = ABOVE_MOB_LAYER - plane = GAME_PLANE_UPPER - -/obj/effect/proc_holder/spell/arcane/blink/cast(list/targets,mob/user = usr) - . = ..() - if(isopenturf(targets[1])) - var/atom/location = get_turf(targets[1]) - new /obj/effect/temp_visual/swap(get_turf(user)) - new /obj/effect/temp_visual/swap(get_turf(location)) - do_teleport(user, location, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC) - return TRUE - else - return FALSE - - -// BLINDNESS-------------- - -/obj/effect/proc_holder/spell/arcane/blindness - name = "Blindness" - desc = "" - overlay_state = "blindness" - releasedrain = 40 - chargedrain = 0 - chargetime = 0 - charge_max = 10 SECONDS - range = 7 - movement_interrupt = FALSE - sound = 'sound/magic/churn.ogg' - antimagic_allowed = TRUE - -/obj/effect/proc_holder/spell/arcane/blindness/cast(list/targets, mob/user = usr) - if(isliving(targets[1])) - var/mob/living/target = targets[1] - if(target.anti_magic_check(TRUE, TRUE)) - return FALSE - target.visible_message(span_warning("[user] points at [target]'s eyes!"),span_warning("My eyes are covered in darkness!")) - target.blind_eyes(2) - return TRUE - -// INVISIBILITY-------------- - -/obj/effect/proc_holder/spell/arcane/invisibility - name = "Invisibility" - desc = "" - overlay_state = "invisibility" - releasedrain = 50 - chargedrain = 0 - chargetime = 0 - charge_max = 30 SECONDS - range = 3 - movement_interrupt = FALSE - sound = 'sound/misc/area.ogg' //This sound doesnt play for some reason. Fix me. - antimagic_allowed = TRUE - -/obj/effect/proc_holder/spell/arcane/invisibility/cast(list/targets, mob/living/user) - if(isliving(targets[1])) - var/mob/living/target = targets[1] - if(target.anti_magic_check(TRUE, TRUE)) - return FALSE - target.visible_message(span_warning("[target] starts to fade into thin air!"), span_notice("You start to become invisible!")) - animate(target, alpha = 0, time = 1 SECONDS, easing = EASE_IN) - target.mob_timers[MT_INVISIBILITY] = world.time + 15 SECONDS - addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/living, update_sneak_invis), TRUE), 15 SECONDS) - addtimer(CALLBACK(target, TYPE_PROC_REF(/atom/movable, visible_message), span_warning("[target] fades back into view."), span_notice("You become visible again.")), 15 SECONDS) - return FALSE - -//LIGHTNING--------------- - -/obj/effect/proc_holder/spell/arcane/projectile/lightningbolt - name = "Bolt of Lightning" - desc = "" - overlay_state = "lightning" - sound = 'sound/magic/lightning.ogg' - range = 8 - projectile_type = /obj/projectile/magic/lightning - releasedrain = 30 - chargedrain = 1 - chargetime = 15 - charge_max = 10 SECONDS - movement_interrupt = FALSE - charging_slowdown = 3 - -/obj/projectile/magic/lightning - name = "bolt of lightning" - tracer_type = /obj/effect/projectile/tracer/stun - muzzle_type = null - impact_type = null - hitscan = TRUE - movement_type = UNSTOPPABLE - light_color = LIGHT_COLOR_WHITE - damage = 15 - damage_type = BURN - nodamage = FALSE - speed = 0.3 - flag = "magic" - light_color = "#ffffff" - light_range = 7 - -/obj/projectile/magic/lightning/on_hit(target) - . = ..() - if(ismob(target)) - var/mob/M = target - if(M.anti_magic_check()) - visible_message(span_warning("[src] fizzles on contact with [target]!")) - playsound(get_turf(target), 'sound/magic/magic_nulled.ogg', 100) - qdel(src) - return BULLET_ACT_BLOCK - if(isliving(target)) - var/mob/living/L = target -// for(var/obj/item/I in L.get_equipped_items()) //Maybe add 5 damage for each metal gear in the target? -// if(I.smeltresult == /obj/item/ingot/iron) //More damage if the target is on water tuff too? -// damage += 5 //(dont know it that code work tho) - L.electrocute_act(1, src) - qdel(src) - - -//FIREBALL------------------------- - -/obj/effect/proc_holder/spell/arcane/projectile/fireball - name = "Fireball" - desc = "" - clothes_req = FALSE - range = 8 - projectile_type = /obj/projectile/magic/aoe/fireball/rogue - overlay_state = "fireball" - sound = list('sound/magic/fireball.ogg') - active = FALSE - releasedrain = 30 - chargedrain = 1 - chargetime = 15 - charge_max = 10 SECONDS - warnie = "spellwarning" - no_early_release = TRUE - movement_interrupt = FALSE - charging_slowdown = 3 - -/obj/effect/proc_holder/spell/arcane/projectile/fireball/fire_projectile(list/targets, mob/living/user) - projectile_var_overrides = list("range" = 8) - return ..() - -/obj/projectile/magic/aoe/fireball/rogue - name = "fireball" - exp_heavy = 0 - exp_light = 0 - exp_flash = 0 - exp_fire = 1 - damage = 10 - damage_type = BURN - nodamage = FALSE - flag = "magic" - hitsound = 'sound/blank.ogg' - - -/obj/projectile/magic/aoe/fireball/rogue/on_hit(target) - . = ..() - if(ismob(target)) - var/mob/M = target - if(M.anti_magic_check()) - visible_message(span_warning("[src] fizzles on contact with [target]!")) - playsound(get_turf(target), 'sound/magic/magic_nulled.ogg', 100) - qdel(src) - return BULLET_ACT_BLOCK - - - -/obj/effect/proc_holder/spell/arcane/projectile/fireball/greater - name = "Greater Fireball" - desc = "" - clothes_req = FALSE - range = 8 - projectile_type = /obj/projectile/magic/aoe/fireball/rogue/great - overlay_state = "greaterfireball" - sound = list('sound/magic/fireball.ogg') - releasedrain = 50 - chargedrain = 1 - chargetime = 15 - charge_max = 10 SECONDS - warnie = "spellwarning" - no_early_release = TRUE - movement_interrupt = TRUE - chargedloop = /datum/looping_sound/invokegen - -/obj/projectile/magic/aoe/fireball/rogue/great - name = "fireball" - exp_heavy = 0 - exp_light = 1 - exp_flash = 2 - exp_fire = 2 - flag = "magic" - -//FETCH------------------------- - -/obj/effect/proc_holder/spell/arcane/projectile/fetch - name = "Fetch" - desc = "" - range = 15 - projectile_type = /obj/projectile/magic/fetch - overlay_state = "fetch" - sound = list('sound/magic/magnet.ogg') - releasedrain = 5 - chargedrain = 0 - chargetime = 0 - charge_max = 5 SECONDS - warnie = "spellwarning" - no_early_release = TRUE - charging_slowdown = 1 - -/obj/projectile/magic/fetch/on_hit(target) - . = ..() - if(ismob(target)) - var/mob/M = target - if(M.anti_magic_check()) - visible_message(span_warning("[target] repells the fetch!")) - playsound(get_turf(target), 'sound/magic/magic_nulled.ogg', 100) - qdel(src) - return BULLET_ACT_BLOCK - -//TELEPATHY--------------------------- - -/obj/effect/proc_holder/spell/arcane/telepathy - name = "telepathy" - desc = "" - range = 15 - overlay_state = "psy" - sound = list('sound/magic/magnet.ogg') - releasedrain = 20 - chargedrain = 0 - chargetime = 0 - charge_max = 15 SECONDS - warnie = "spellwarning" - no_early_release = TRUE - charging_slowdown = 1 - -/obj/effect/proc_holder/spell/arcane/telepathy/cast(list/targets,mob/user = usr) - . = ..() - if(isliving(targets[1])) - var/mob/living/target = targets[1] - if(target.anti_magic_check(TRUE, TRUE)) - return FALSE - var/input = stripped_input(user, "What message are you sending?", null, "") - if(!input) - return FALSE - to_chat(user, span_warning("I transmit to [target]: " + "[input]")) - to_chat(target, span_warning("You hear a voice in your head saying: ") + span_boldwarning("[input]")) - return TRUE - -//UNLOCK -------------------------- - -/obj/effect/proc_holder/spell/arcane/unlock - name = "unlock" - desc = "" - range = 1 - overlay_state = "lock" - sound = list('sound/magic/magnet.ogg') - releasedrain = 20 - chargedrain = 1 - chargetime = 30 - charge_max = 15 SECONDS - warnie = "spellwarning" - no_early_release = TRUE - charging_slowdown = 1 - -///obj/effect/proc_holder/spell/arcane/unlock/cast(list/targets,mob/user = usr) -// . = ..() -// if(istype(targets[1], (/obj/structure/mineral_door/ | /obj/structure/closet))) -// var/obj/O = targets[1] -// if(O.door_opened || O.isSwitchingStates) -// to_chat(user, "It is already open.") -// return TRUE -// if(!O.keylock) -// to_chat(user, "There's no lock on this.") -// return TRUE -// return -// if(O.lockbroken) -// to_chat(user, "The lock is broken.") -// return TRUE -// else -// var/prob2open = 0 -// var/diceroll = 0 -// if(user && user.mind) -// prob2open = 20 -// diceroll = rand(0,100) -// for(var/i in 1 to user.mind.get_skill_level(/datum/skill/magic/arcane)) -// prob2open += 5 -// if (diceroll <= prob2open) -// if(istype(targets[1], /obj/structure/mineral_door/) -// lock_toggle(O) -// if(istype(targets[1], /obj/structure/closet) -// togglelock(O) -// else -// to_chat(user, "The spell fails to unlock it...") -// -// return TRUE -// else -// return TRUE -//I cant code for shit, will rethink this later. -