Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Weaving Lindworm #2565

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 7 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
Binary file modified ModularTegustation/Teguicons/32x48.dmi
Binary file not shown.
Binary file modified ModularTegustation/Teguicons/64x64.dmi
Binary file not shown.
43 changes: 43 additions & 0 deletions ModularTegustation/ego_weapons/melee/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2319,3 +2319,46 @@
qdel(src)
return TRUE


/obj/item/ego_weapon/vulnerability
name = "Vulnerability"
desc = "The snake leather used in this whip is hardened by the sun"
icon_state = "lindworm"
special = "This weapon lowers red and white damage resistance on hit."
force = 25
reach = 4 //Has 4 Square Reach.
attack_speed = 1.7 //but is slow and stuns you
stuntime = 5 //Longer reach, gives you a short stun.
damtype = RED_DAMAGE
attack_verb_continuous = list("whips", "lashes", "tears")
attack_verb_simple = list("whip", "lash", "tear")
hitsound = 'sound/weapons/whip.ogg'
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 40
)

/obj/item/ego_weapon/vulnerability/attack(mob/living/target, mob/living/user)
..()
if(!CanUseEgo(user))
return
var/userjust = (get_modified_attribute_level(user, JUSTICE_ATTRIBUTE))
var/justicemod = 1 + userjust/100
var/damage = force * justicemod * force_multiplier
target.apply_damage(damage, WHITE_DAMAGE, null, target.run_armor_check(null, WHITE_DAMAGE), spread_damage = TRUE)

var/mob/living/M = target

//Double rend here
if(!ishuman(M) && !M.has_status_effect(/datum/status_effect/rend_white))
new /obj/effect/temp_visual/cult/sparks(get_turf(M))
M.apply_status_effect(/datum/status_effect/rend_white)

if(!ishuman(M) && !M.has_status_effect(/datum/status_effect/rend_red))
new /obj/effect/temp_visual/cult/sparks(get_turf(M))
M.apply_status_effect(/datum/status_effect/rend_red)


/obj/item/ego_weapon/vulnerability/EgoAttackInfo(mob/user)
if(force_multiplier != 1)
return span_notice("It deals [round(force * force_multiplier)] of both red and white damage. (+ [(force_multiplier - 1) * 100]%)")
return span_notice("It deals [force] of both red and white damage.")
10 changes: 10 additions & 0 deletions code/datums/abnormality/_ego_datum/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -506,3 +506,13 @@
/datum/ego_datum/armor/havana
item_path = /obj/item/clothing/suit/armor/ego_gear/waw/havana
cost = 50

// Lindworm - Vulnerability
/datum/ego_datum/weapon/vulnerability
item_path = /obj/item/ego_weapon/vulnerability
cost = 50

/datum/ego_datum/armor/vulnerability
item_path = /obj/item/clothing/suit/armor/ego_gear/waw/vulnerability
cost = 50

11 changes: 10 additions & 1 deletion code/modules/clothing/suits/ego_gear/waw.dm
Kitsunemitsu marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -497,5 +497,14 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/
icon_state = "havana"
armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 20, BLACK_DAMAGE = 30, PALE_DAMAGE = 60) // 140
attribute_requirements = list(
JUSTICE_ATTRIBUTE = 80
JUSTICE_ATTRIBUTE = 80)

/obj/item/clothing/suit/armor/ego_gear/waw/vulnerability
name = "vulnerability"
desc = "Only by becoming weaker can you become stronger."
icon_state = "lindworm"
armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = 50, BLACK_DAMAGE = 20, PALE_DAMAGE = 20) // 140
attribute_requirements = list(
FORTITUDE_ATTRIBUTE = 60,
PRUDENCE_ATTRIBUTE = 60,
)
210 changes: 210 additions & 0 deletions code/modules/mob/living/simple_animal/abnormality/waw/lindworm.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
/mob/living/simple_animal/hostile/abnormality/lindworm
name = "Weaving Lindworm"
desc = "An abnormality taking form of a giant serpent with scales flaking off it."
icon = 'ModularTegustation/Teguicons/64x64.dmi'
icon_state = "lindworm"
icon_living = "lindworm"
icon_dead = "lindworm_dead"
portrait = "lindworm"
del_on_death = FALSE
maxHealth = 700
health = 700
rapid_melee = 1
move_to_delay = 3
damage_coeff = list(RED_DAMAGE = 1, WHITE_DAMAGE = 1, BLACK_DAMAGE = 1, PALE_DAMAGE = 1)
melee_damage_lower = 40
melee_damage_upper = 50
melee_damage_type = RED_DAMAGE
stat_attack = DEAD
attack_sound = 'sound/abnormalities/mountain/bite.ogg'
attack_verb_continuous = "gores"
attack_verb_simple = "gore"
can_breach = TRUE
threat_level = WAW_LEVEL
start_qliphoth = 4
work_chances = list(
ABNORMALITY_WORK_INSTINCT = 60,
ABNORMALITY_WORK_INSIGHT = 60,
ABNORMALITY_WORK_ATTACHMENT = 60,
ABNORMALITY_WORK_REPRESSION = 60,
)
work_damage_amount = 10
work_damage_type = list(WHITE_DAMAGE, RED_DAMAGE)

ego_list = list(
/datum/ego_datum/weapon/vulnerability,
/datum/ego_datum/weapon/vulnerability,
)
// gift_type = /datum/ego_gifts/harvest
abnormality_origin = ABNORMALITY_ORIGIN_ORIGINAL

color = "#234e99"
var/layers_left = 5
var/mob/living/carbon/human/red_weak
var/mob/living/carbon/human/white_weak
var/mob/living/carbon/human/black_weak
var/mob/living/carbon/human/pale_weak



/mob/living/simple_animal/hostile/abnormality/lindworm/Initialize()
. = ..()
RegisterSignal(SSdcs, COMSIG_GLOB_MOB_DEATH, PROC_REF(on_mob_death)) // Hell

/mob/living/simple_animal/hostile/abnormality/lindworm/Destroy()
if(!layers_left)
UnregisterSignal(SSdcs, COMSIG_GLOB_MOB_DEATH)
return ..()

/mob/living/simple_animal/hostile/abnormality/lindworm/proc/on_mob_death(datum/source, mob/living/died, gibbed)
SIGNAL_HANDLER
if(!IsContained()) // If it's breaching right now
return FALSE
if(!ishuman(died))
return FALSE
if(died.z != z)
return FALSE
if(!died.mind)
return FALSE
datum_reference.qliphoth_change(-1) // One death reduces it
return TRUE

/mob/living/simple_animal/hostile/abnormality/lindworm/death(gibbed)
for(var/turf/open/T in view(5, src))
if(locate(/obj/structure/turf_confetti) in T)
for(var/obj/structure/turf_confetti/floor_fire in T)
qdel(floor_fire)
new /obj/structure/turf_confetti(T)

playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
new /obj/effect/gibspawner/generic/silent(get_turf(src))


if(layers_left)
layers_left-=1
HandleLayers()
revive(full_heal = TRUE, admin_revive = TRUE)
return

CleanupDefense()
density = FALSE
animate(src, alpha = 0, time = 10 SECONDS)
QDEL_IN(src, 10 SECONDS)
..()

/mob/living/simple_animal/hostile/abnormality/lindworm/AttackingTarget()
..()
for(var/turf/open/T in view(1, target))
if(locate(/obj/structure/turf_confetti) in T)
for(var/obj/structure/turf_confetti/floor_fire in T)
qdel(floor_fire)
new /obj/structure/turf_confetti(T)

if(ishuman(target))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your going to want to put a CanTarget override for non humans. Currently the stat attack applies to simplemobs and causes the lindworm to attack ordeal corpses.
Essentially just put in
/mob/living/simple_animal/hostile/abnormality/lindworm/CanAttack(atom/the_target)
if(isliving(the_target))
var/mob/living/carbon/host = the_target
if(host.stat == DEAD && !ishuman(the_target))
return FALSE
return ..()

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually it might be easier to do it backwards and remove the stat_attack and just put in a can_attack override for dead humans.

var/mob/living/H = target
if(H.health < 0)
layers_left+=1
HandleLayers()
H.gib()

/mob/living/simple_animal/hostile/abnormality/lindworm/proc/HandleLayers()
switch(layers_left)
if(0)
color = "#FFFFFF"
if(1)
color = "#a1b9e3"
if(2)
color = "#6e90cc"
if(3)
color = "#4e73b5"
else
color = "#234e99"

//Work shit

/mob/living/simple_animal/hostile/abnormality/lindworm/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time)
switch(work_type)
if(ABNORMALITY_WORK_INSTINCT)
if(!red_weak) //Decrease red mod, store who's being worked on and lower a layer.
red_weak = user
user.physiology.red_mod *= 1.05
layers_left-=1
to_chat(user, span_userdanger("You feel your armor shed; and a layer falls away from the lindworm."))
playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
new /obj/effect/gibspawner/generic/silent(get_turf(src))
HandleLayers()

if(ABNORMALITY_WORK_INSIGHT)
if(!white_weak)
white_weak = user
user.physiology.white_mod *= 1.05
layers_left-=1
to_chat(user, span_userdanger("You feel your armor shed; and a layer falls away from the lindworm."))
playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
new /obj/effect/gibspawner/generic/silent(get_turf(src))
HandleLayers()

if(ABNORMALITY_WORK_ATTACHMENT)
if(!black_weak)
black_weak = user
user.physiology.black_mod *= 1.05
layers_left-=1
to_chat(user, span_userdanger("You feel your armor shed; and a layer falls away from the lindworm."))
playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
new /obj/effect/gibspawner/generic/silent(get_turf(src))
HandleLayers()

if(ABNORMALITY_WORK_REPRESSION)
if(!pale_weak)
pale_weak = user
user.physiology.pale_mod *= 1.05
layers_left-=1
to_chat(user, span_userdanger("You feel your armor shed; and a layer falls away from the lindworm."))
playsound(get_turf(src), 'sound/abnormalities/bigbird/bite.ogg', 50, 1, 2)
new /obj/effect/gibspawner/generic/silent(get_turf(src))
HandleLayers()



/mob/living/simple_animal/hostile/abnormality/lindworm/proc/CleanupDefense()
if(red_weak)
red_weak.physiology.red_mod /= 1.05
to_chat(red_weak, span_notice("You feel your natural body hardening again."))

if(white_weak)
white_weak.physiology.white_mod /= 1.05
to_chat(white_weak, span_notice("You feel your natural body hardening again."))

if(black_weak)
black_weak.physiology.black_mod /= 1.05
to_chat(black_weak, span_notice("You feel your natural body hardening again."))

if(pale_weak)
pale_weak.physiology.pale_mod /= 1.05
to_chat(pale_weak, span_notice("You feel your natural body hardening again."))


// Turf effect
/obj/structure/turf_confetti
gender = PLURAL
name = "confetti"
desc = "a burning pyre."
icon = 'icons/effects/effects.dmi'
icon_state = "dancing_lights"
anchored = TRUE
density = FALSE
layer = TURF_LAYER
plane = FLOOR_PLANE
base_icon_state = "dancing_lights"

/obj/structure/turf_confetti/Initialize()
. = ..()
QDEL_IN(src, 15 SECONDS)

//Red and not burn, burn is a special damage type.
/obj/structure/turf_confetti/Crossed(atom/movable/AM)
. = ..()
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
H.apply_damage(15, RED_DAMAGE, null, H.run_armor_check(null, RED_DAMAGE), spread_damage = TRUE)
H.apply_damage(15, WHITE_DAMAGE, null, H.run_armor_check(null, WHITE_DAMAGE), spread_damage = TRUE)
13 changes: 13 additions & 0 deletions code/modules/paperwork/records/info/waw.dm
Original file line number Diff line number Diff line change
Expand Up @@ -569,3 +569,16 @@
)
abno_breach_damage_type = "Pale"
abno_breach_damage_count = "Very High"

//Weaving Lindworm
/obj/item/paper/fluff/info/waw/lindworm
abno_type = /mob/living/simple_animal/hostile/abnormality/lindworm
abno_code = "F-02-194"
abno_info = list(
"Working on F-02-194 with a new work type will reduce it's layers of armor. This also lowered the employee's defenses temporarily.",
"When an employee died in the facility, the Qliphoth counter lowered.",
"As employees assaulted F-02-194, it lost more layers of armor. It was unable to be defeated until all the layers of armor were destroyed.",

)
abno_breach_damage_type = "Red/White"
abno_breach_damage_count = "High"
Binary file modified icons/mob/clothing/ego_gear/abnormality/waw.dmi
Binary file not shown.
Binary file modified icons/obj/clothing/ego_gear/abnormality/waw.dmi
Binary file not shown.
Binary file modified icons/obj/ego_weapons.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions lobotomy-corp13.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2922,6 +2922,7 @@
#include "code\modules\mob\living\simple_animal\abnormality\waw\greed_king.dm"
#include "code\modules\mob\living\simple_animal\abnormality\waw\hatred_queen.dm"
#include "code\modules\mob\living\simple_animal\abnormality\waw\judgement_bird.dm"
#include "code\modules\mob\living\simple_animal\abnormality\waw\lindworm.dm"
#include "code\modules\mob\living\simple_animal\abnormality\waw\little_prince.dm"
#include "code\modules\mob\living\simple_animal\abnormality\waw\luna.dm"
#include "code\modules\mob\living\simple_animal\abnormality\waw\my_form_empties.dm"
Expand Down
Loading