Skip to content
This repository has been archived by the owner on Sep 8, 2022. It is now read-only.

[MIRROR] [TG PORT] Replaces rust wave with entropic plume #1429

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions beestation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3187,6 +3187,7 @@
#include "code\modules\spells\spell_types\blind.dm"
#include "code\modules\spells\spell_types\bloodcrawl.dm"
#include "code\modules\spells\spell_types\charge.dm"
#include "code\modules\spells\spell_types\cone_spells.dm"
#include "code\modules\spells\spell_types\conjure.dm"
#include "code\modules\spells\spell_types\construct_spells.dm"
#include "code\modules\spells\spell_types\curse.dm"
Expand Down
8 changes: 8 additions & 0 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,14 @@

#define STATUS_EFFECT_IPC_EMP /datum/status_effect/ipc/emp //EMP'd IPC

<<<<<<< HEAD
=======
#define STATUS_EFFECT_SLIMEGRUB /datum/status_effect/slimegrub //infected slime

#define STATUS_EFFECT_AMOK /datum/status_effect/amok //Makes the target automatically strike out at adjecent non-heretics.

#define STATUS_EFFECT_CLOUDSTRUCK /datum/status_effect/cloudstruck //blinds and applies an overlay.
>>>>>>> 11a361a3c0... [TG PORT] Replaces rust wave with entropic plume (#7489)
//---------//
// NEUTRAL //
//---------//
Expand Down
111 changes: 111 additions & 0 deletions code/datums/status_effects/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -944,3 +944,114 @@
name = "Electro-Magnetic Pulse"
desc = "You've been hit with an EMP! You're malfunctioning!"
icon_state = "hypnosis"
<<<<<<< HEAD
=======

/datum/status_effect/slimegrub
id = "grub_infection"
duration = 60 SECONDS //a redgrub infestation in a slime
status_type = STATUS_EFFECT_UNIQUE
tick_interval = 1
alert_type = /atom/movable/screen/alert/status_effect/grub
var/adult = FALSE
var/spawnbonus = 0
var/deathcounter = 300
var/list/diseases = list()

/datum/status_effect/slimegrub/on_apply(mob/living/new_owner, ...)
. = ..()
if(isslime(new_owner))
var/mob/living/simple_animal/slime/S = new_owner
if(S.is_adult)
adult = TRUE
duration = world.time + 120 SECONDS
if(S.amount_grown >= 9)
S.amount_grown = 8 //can't split or evolve
deathcounter = (300 + (300 * adult))

/datum/status_effect/slimegrub/tick()
if(isslime(owner))
var/mob/living/simple_animal/slime/S = owner
if(S.amount_grown >= 9)
S.amount_grown = 8
if((S.reagents.has_reagent(/datum/reagent/consumable/capsaicin) || S.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT)) //redgrubs don't like heat. heating them up for too long kills them
if(prob(10))
qdel(src)
else //don't tick while being cured
deathcounter -= 2
if(deathcounter <= 0)
var/spawns = rand(1, 3 + (adult * 3))
for(var/I in 1 to (spawns + spawnbonus))
var/mob/living/simple_animal/hostile/redgrub/grub = new(S.loc)
grub.grubdisease = diseases
grub.food += 15
playsound(S, 'sound/effects/attackblob.ogg', 60, 1)
S.visible_message("<span class='warning'>[S] is eaten from the inside by [spawns] red grubs, leaving no trace!</span>")
S.gib()
else
qdel(src)//no effect on nonslimes

/atom/movable/screen/alert/status_effect/grub
name = "Infected"
desc = "You have a redgrub infection, and can't reproduce or grow! If you don't find a source of heat, you will die!"
icon_state = "grub"

/datum/status_effect/amok
id = "amok"
status_type = STATUS_EFFECT_REPLACE
alert_type = null
duration = 10 SECONDS
tick_interval = 1 SECONDS

/datum/status_effect/amok/on_apply(mob/living/afflicted)
. = ..()
to_chat(owner, "<span class='boldwarning'>You feel filled with a rage that is not your own!</span>")

/datum/status_effect/amok/tick()
. = ..()
var/prev_intent = owner.a_intent
owner.a_intent = INTENT_HARM

var/list/mob/living/targets = list()
for(var/mob/living/potential_target in oview(owner, 1))
if(IS_HERETIC(potential_target) || potential_target.mind?.has_antag_datum(/datum/antagonist/heretic_monster))
continue
targets += potential_target
if(LAZYLEN(targets))
owner.log_message(" attacked someone due to the amok debuff.", LOG_ATTACK) //the following attack will log itself
owner.ClickOn(pick(targets))
owner.a_intent = prev_intent

/datum/status_effect/cloudstruck
id = "cloudstruck"
status_type = STATUS_EFFECT_REPLACE
duration = 3 SECONDS
on_remove_on_mob_delete = TRUE
///This overlay is applied to the owner for the duration of the effect.
var/mutable_appearance/mob_overlay

/datum/status_effect/cloudstruck/on_creation(mob/living/new_owner, set_duration)
if(isnum(set_duration))
duration = set_duration
. = ..()

/datum/status_effect/cloudstruck/on_apply()
mob_overlay = mutable_appearance('icons/effects/eldritch.dmi', "cloud_swirl", ABOVE_MOB_LAYER)
owner.overlays += mob_overlay
owner.update_icon()
ADD_TRAIT(owner, TRAIT_BLIND, "cloudstruck")
return TRUE

/datum/status_effect/cloudstruck/on_remove()
. = ..()
if(QDELETED(owner))
return
REMOVE_TRAIT(owner, TRAIT_BLIND, "cloudstruck")
if(owner)
owner.overlays -= mob_overlay
owner.update_icon()

/datum/status_effect/cloudstruck/Destroy()
. = ..()
QDEL_NULL(mob_overlay)
>>>>>>> 11a361a3c0... [TG PORT] Replaces rust wave with entropic plume (#7489)
9 changes: 9 additions & 0 deletions code/game/turfs/closed/wall/reinf_walls.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,9 +229,18 @@
/turf/closed/wall/r_wall/rust_heretic_act()
if(prob(50))
return
<<<<<<< HEAD
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
ChangeTurf(/turf/closed/wall/r_wall/rust)
=======
if(HAS_TRAIT(src, TRAIT_RUSTY))
ScrapeAway()
return
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
return ..()
>>>>>>> 11a361a3c0... [TG PORT] Replaces rust wave with entropic plume (#7489)

/turf/closed/wall/r_wall/syndicate
name = "hull"
Expand Down
6 changes: 3 additions & 3 deletions code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@
desc = "Gives AOE spell that causes heavy bleeding and blood loss."
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/pointed/cleave
next_knowledge = list(/datum/eldritch_knowledge/spell/rust_wave,/datum/eldritch_knowledge/spell/flame_birth)
next_knowledge = list(/datum/eldritch_knowledge/spell/entropic_plume,/datum/eldritch_knowledge/spell/flame_birth)

/datum/eldritch_knowledge/spell/blood_siphon
name = "Blood Siphon"
Expand All @@ -480,7 +480,7 @@
cost = 1
required_atoms = list(/obj/effect/decal/cleanable/ash,/obj/item/bodypart/head,/obj/item/book)
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/ash_spirit
next_knowledge = list(/datum/eldritch_knowledge/summon/stalker,/datum/eldritch_knowledge/spell/rust_wave)
next_knowledge = list(/datum/eldritch_knowledge/summon/stalker,/datum/eldritch_knowledge/spell/flame_birth)

/datum/eldritch_knowledge/summon/rusty
name = "Rusted Ritual"
Expand All @@ -489,4 +489,4 @@
cost = 1
required_atoms = list(/obj/effect/decal/cleanable/vomit,/obj/item/bodypart/head,/obj/item/book)
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/rust_spirit
next_knowledge = list(/datum/eldritch_knowledge/summon/stalker,/datum/eldritch_knowledge/spell/flame_birth)
next_knowledge = list(/datum/eldritch_knowledge/summon/stalker,/datum/eldritch_knowledge/spell/entropic_plume)
72 changes: 72 additions & 0 deletions code/modules/antagonists/eldritch_cult/eldritch_magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -631,3 +631,75 @@
range = 10
invocation = "E'E'S"
action_background_icon_state = "bg_ecult"

/obj/effect/temp_visual/dir_setting/entropic
icon = 'icons/effects/160x160.dmi'
icon_state = "entropic_plume"
duration = 3 SECONDS

/obj/effect/temp_visual/dir_setting/entropic/setDir(dir)
. = ..()
switch(dir)
if(NORTH)
pixel_x = -64
if(SOUTH)
pixel_x = -64
pixel_y = -128
if(EAST)
pixel_y = -64
if(WEST)
pixel_y = -64
pixel_x = -128

/obj/effect/temp_visual/glowing_rune
icon = 'icons/effects/eldritch.dmi'
icon_state = "small_rune_1"
duration = 1 MINUTES
layer = LOW_SIGIL_LAYER

/obj/effect/temp_visual/glowing_rune/Initialize()
. = ..()
pixel_y = rand(-6,6)
pixel_x = rand(-6,6)
icon_state = "small_rune_[rand(12)]"
update_icon()

/obj/effect/proc_holder/spell/cone/staggered/entropic_plume
name = "Entropic Plume"
desc = "Spews forth a disorienting plume that causes enemies to strike each other, briefly blinds them(increasing with range) and poisons them(decreasing with range). Also spreads rust in the path of the plume."
school = "illusion"
invocation = "'NTR'P'C PL'M'"
invocation_type = INVOCATION_WHISPER
clothes_req = FALSE
action_background_icon_state = "bg_ecult"
action_icon = 'icons/mob/actions/actions_ecult.dmi'
action_icon_state = "entropic_plume"
charge_max = 300
cone_levels = 5
respect_density = TRUE

/obj/effect/proc_holder/spell/cone/staggered/entropic_plume/cast(list/targets,mob/user = usr)
. = ..()
new /obj/effect/temp_visual/dir_setting/entropic(get_step(user,user.dir), user.dir)

/obj/effect/proc_holder/spell/cone/staggered/entropic_plume/do_turf_cone_effect(turf/target_turf, level)
. = ..()
target_turf.rust_heretic_act()

/obj/effect/proc_holder/spell/cone/staggered/entropic_plume/do_mob_cone_effect(mob/living/victim, level)
. = ..()
if(victim.anti_magic_check() || IS_HERETIC(victim) || victim.mind?.has_antag_datum(/datum/antagonist/heretic_monster))
return
victim.apply_status_effect(STATUS_EFFECT_AMOK)
victim.apply_status_effect(STATUS_EFFECT_CLOUDSTRUCK, (level*10))
if(iscarbon(victim))
var/mob/living/carbon/carbon_victim = victim
carbon_victim.reagents.add_reagent(/datum/reagent/eldritch, min(1, 6-level))

/obj/effect/proc_holder/spell/cone/staggered/entropic_plume/calculate_cone_shape(current_level)
if(current_level == cone_levels)
return 5
else if(current_level == cone_levels-1)
return 3
else
return 2
10 changes: 5 additions & 5 deletions code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
gain_text = "The Blade will guide you through the flesh, should you let it."
desc = "Your blade of choice will now transfer your pain as toxic damage."
cost = 2
next_knowledge = list(/datum/eldritch_knowledge/spell/rust_wave)
next_knowledge = list(/datum/eldritch_knowledge/spell/entropic_plume)
banned_knowledge = list(/datum/eldritch_knowledge/ash_blade_upgrade,/datum/eldritch_knowledge/flesh_blade_upgrade)
route = PATH_RUST

Expand All @@ -94,12 +94,12 @@
if(istype(carbon_user) && istype(carbon_target))
carbon_target.adjustToxLoss((carbon_user.maxHealth - carbon_user.health)/10)

/datum/eldritch_knowledge/spell/rust_wave
name = "Wave of Rust"
desc = "You can now send a projectile that converts an area into rust."
/datum/eldritch_knowledge/spell/entropic_plume
name = "Entropic Plume"
desc = "You can now send a befuddling plume that blinds, poisons and makes enemies strike each other. Also converts the area into rust."
gain_text = "Messenger's of hope fear the rustbringer!"
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/targeted/projectile/dumbfire/rust_wave
spell_to_add = /obj/effect/proc_holder/spell/cone/staggered/entropic_plume
next_knowledge = list(/datum/eldritch_knowledge/final/rust_final,/datum/eldritch_knowledge/spell/cleave,/datum/eldritch_knowledge/summon/rusty)
route = PATH_RUST

Expand Down
Loading