From 762ed618812feeeb3e6e5753e06c6dc9a8d63d29 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 10 Jul 2016 20:04:17 -0400 Subject: [PATCH] Adds in Rathen's Secret --- code/datums/spells/rathens.dm | 57 +++++++++++++++++++++++++ code/game/gamemodes/wizard/spellbook.dm | 6 +++ paradise.dme | 1 + 3 files changed, 64 insertions(+) create mode 100644 code/datums/spells/rathens.dm diff --git a/code/datums/spells/rathens.dm b/code/datums/spells/rathens.dm new file mode 100644 index 00000000000..d8f7dedc290 --- /dev/null +++ b/code/datums/spells/rathens.dm @@ -0,0 +1,57 @@ +/obj/effect/proc_holder/spell/aoe_turf/rathens + name = "Rathen's Secret" + desc = "Summons a powerful shockwave around you that tears the appendix and limbs off of enemies." + charge_max = 500 + clothes_req = 1 + invocation = "ARSE NATH!" + invocation_type = "shout" + range = 7 + cooldown_min = 200 + selection_type = "view" + action_icon_state = "superfart" + +/obj/effect/proc_holder/spell/aoe_turf/rathens/cast(list/targets) + var/mob/user = usr + var/list/impacted_mobs = list() + for(var/turf/T in targets) + for(var/mob/living/carbon/human/H in T) + if(H == user) + continue + impacted_mobs += H + if(!impacted_mobs.len) + to_chat(user, "There are no targets in range!") + revert_cast() + return 0 + playsound(get_turf(user), 'sound/goonstation/effects/superfart.ogg', 25, 1) + for(var/mob/living/carbon/human/H in impacted_mobs) + var/datum/effect/system/harmless_smoke_spread/s = new /datum/effect/system/harmless_smoke_spread + s.set_up(5, 0, H) + s.start() + var/obj/item/organ/internal/appendix/A = H.get_int_organ(/obj/item/organ/internal/appendix) + if(A) + A.remove(H) + A.forceMove(get_turf(H)) + spawn() + A.throw_at(get_edge_target_turf(H, pick(alldirs)), rand(1, 10), 5) + H.visible_message("[H]'s [A.name] flies out their body in a magical explosion!",\ + "Your [A.name] flies out your body in a magical explosion!") + H.Weaken(2) + else + var/obj/effect/decal/cleanable/blood/gibs/G = new/obj/effect/decal/cleanable/blood/gibs(get_turf(H)) + spawn() + G.throw_at(get_edge_target_turf(H, pick(alldirs)), rand(1, 10), 5) + H.apply_damage(10, BRUTE, "chest") + to_chat(H, "You have no [A.name], but something had to give! Holy shit, what was that?") + H.Weaken(3) + for(var/obj/item/organ/external/E in H.organs) + if(istype(E, /obj/item/organ/external/head)) + continue + if(istype(E, /obj/item/organ/external/chest)) + continue + if(istype(E, /obj/item/organ/external/groin)) + continue + if(prob(7)) + to_chat(H, "Your [E] was severed by the explosion!") + E.droplimb(1, DROPLIMB_EDGE, 0, 1) + + diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index e12d44c46c7..80c03c1453e 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -130,6 +130,12 @@ log_name = "RP" category = "Defensive" +/datum/spellbook_entry/rathens + name = "Rathen's Secret" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/rathens + log_name = "RS" + category = "Defensive" + /datum/spellbook_entry/timestop name = "Time Stop" spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop diff --git a/paradise.dme b/paradise.dme index 9342fc2b09f..c83b6d2def4 100644 --- a/paradise.dme +++ b/paradise.dme @@ -293,6 +293,7 @@ #include "code\datums\spells\mime.dm" #include "code\datums\spells\mind_transfer.dm" #include "code\datums\spells\projectile.dm" +#include "code\datums\spells\rathens.dm" #include "code\datums\spells\summonitem.dm" #include "code\datums\spells\touch_attacks.dm" #include "code\datums\spells\trigger.dm"