diff --git a/ModularTegustation/Teguicons/32x48.dmi b/ModularTegustation/Teguicons/32x48.dmi index afbf107c1e3f..281bbd7fb110 100644 Binary files a/ModularTegustation/Teguicons/32x48.dmi and b/ModularTegustation/Teguicons/32x48.dmi differ diff --git a/ModularTegustation/Teguicons/64x64.dmi b/ModularTegustation/Teguicons/64x64.dmi index 2597e812bdad..e3c54aa5fc6a 100644 Binary files a/ModularTegustation/Teguicons/64x64.dmi and b/ModularTegustation/Teguicons/64x64.dmi differ diff --git a/ModularTegustation/ego_weapons/melee/waw.dm b/ModularTegustation/ego_weapons/melee/waw.dm index 0006b7a80031..47dac9086961 100644 --- a/ModularTegustation/ego_weapons/melee/waw.dm +++ b/ModularTegustation/ego_weapons/melee/waw.dm @@ -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.") diff --git a/code/datums/abnormality/_ego_datum/waw.dm b/code/datums/abnormality/_ego_datum/waw.dm index ac49651affd4..04c1e7127d59 100644 --- a/code/datums/abnormality/_ego_datum/waw.dm +++ b/code/datums/abnormality/_ego_datum/waw.dm @@ -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 + diff --git a/code/modules/clothing/suits/ego_gear/waw.dm b/code/modules/clothing/suits/ego_gear/waw.dm index fccfe70ce785..0ce0fd1c8fbf 100644 --- a/code/modules/clothing/suits/ego_gear/waw.dm +++ b/code/modules/clothing/suits/ego_gear/waw.dm @@ -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 be becoming weaker can you become stronger." + icon_state = "lindworm" + armor = list(RED_DAMAGE = 50, WHITE_DAMAGE = 20, BLACK_DAMAGE = 20, PALE_DAMAGE = 20) // 140 + attribute_requirements = list( + FORTITUDE_ATTRIBUTE = 60, + PRUDENCE_ATTRIBUTE = 60, ) diff --git a/code/modules/mob/living/simple_animal/abnormality/waw/lindworm.dm b/code/modules/mob/living/simple_animal/abnormality/waw/lindworm.dm new file mode 100644 index 000000000000..2047803a9d62 --- /dev/null +++ b/code/modules/mob/living/simple_animal/abnormality/waw/lindworm.dm @@ -0,0 +1,186 @@ +/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 = 60 + melee_damage_upper = 70 + 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 = 2 + 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/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)) + 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.3 + 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.3 + 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.3 + 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.3 + 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.3 + to_chat(red_weak, span_notice("You feel your natural body hardening again.")) + + if(white_weak) + white_weak.physiology.white_mod /= 1.3 + to_chat(white_weak, span_notice("You feel your natural body hardening again.")) + + if(black_weak) + black_weak.physiology.black_mod /= 1.3 + to_chat(black_weak, span_notice("You feel your natural body hardening again.")) + + if(pale_weak) + pale_weak.physiology.pale_mod /= 1.3 + 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) diff --git a/icons/mob/clothing/ego_gear/abnormality/waw.dmi b/icons/mob/clothing/ego_gear/abnormality/waw.dmi index ca99729e0334..7e9d3fdd2d1f 100644 Binary files a/icons/mob/clothing/ego_gear/abnormality/waw.dmi and b/icons/mob/clothing/ego_gear/abnormality/waw.dmi differ diff --git a/icons/obj/clothing/ego_gear/abnormality/waw.dmi b/icons/obj/clothing/ego_gear/abnormality/waw.dmi index a4d5159bd244..573dda93b110 100644 Binary files a/icons/obj/clothing/ego_gear/abnormality/waw.dmi and b/icons/obj/clothing/ego_gear/abnormality/waw.dmi differ diff --git a/icons/obj/ego_weapons.dmi b/icons/obj/ego_weapons.dmi index 79cd28bc800d..9a4cebac6d18 100644 Binary files a/icons/obj/ego_weapons.dmi and b/icons/obj/ego_weapons.dmi differ diff --git a/lobotomy-corp13.dme b/lobotomy-corp13.dme index a7eb33437f05..a982c365a7fc 100644 --- a/lobotomy-corp13.dme +++ b/lobotomy-corp13.dme @@ -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"