diff --git a/ModularTegustation/Teguicons/96x96.dmi b/ModularTegustation/Teguicons/96x96.dmi index c7360340a639..9ab537608e53 100644 Binary files a/ModularTegustation/Teguicons/96x96.dmi and b/ModularTegustation/Teguicons/96x96.dmi differ diff --git a/code/datums/abnormality/_ego_datum/waw.dm b/code/datums/abnormality/_ego_datum/waw.dm index 31b53da48d5f..726f95d74ce2 100644 --- a/code/datums/abnormality/_ego_datum/waw.dm +++ b/code/datums/abnormality/_ego_datum/waw.dm @@ -397,6 +397,15 @@ item_path = /obj/item/ego_weapon/rimeshank cost = 50 +//Burrowing Heaven - Heaven +/datum/ego_datum/armor/heaven + item_path = /obj/item/clothing/suit/armor/ego_gear/waw/heaven + cost = 50 + +/datum/ego_datum/weapon/heaven + item_path = /obj/item/ego_weapon/heaven + cost = 50 + // Parasite Tree - Hypocrisy /datum/ego_datum/armor/hypocrisy item_path = /obj/item/clothing/suit/armor/ego_gear/waw/hypocrisy diff --git a/code/modules/clothing/suits/ego_gear/waw.dm b/code/modules/clothing/suits/ego_gear/waw.dm index 38417e0f4dd4..eeb41002aafb 100644 --- a/code/modules/clothing/suits/ego_gear/waw.dm +++ b/code/modules/clothing/suits/ego_gear/waw.dm @@ -381,6 +381,15 @@ Any attempt to code risk class armor will result in a 10 day Github ban.*/ FORTITUDE_ATTRIBUTE = 80 ) +/obj/item/clothing/suit/armor/ego_gear/waw/heaven + name = "burrowing heaven" + desc = "As it spreads its wings for an old god, a heaven just for you burrows its way." + icon_state = "heaven" + armor = list(RED_DAMAGE = 30, WHITE_DAMAGE = 40, BLACK_DAMAGE = 40, PALE_DAMAGE = 30) // 140 + attribute_requirements = list( + FORTITUDE_ATTRIBUTE = 80 + ) + /obj/item/clothing/suit/armor/ego_gear/waw/faith //pure-hearted believer name = "untainted faith" desc = "To have absolute faith on something that gives you salvation." diff --git a/code/modules/mob/living/simple_animal/abnormality/waw/burrowing_heaven.dm b/code/modules/mob/living/simple_animal/abnormality/waw/burrowing_heaven.dm new file mode 100644 index 000000000000..58a1203d933a --- /dev/null +++ b/code/modules/mob/living/simple_animal/abnormality/waw/burrowing_heaven.dm @@ -0,0 +1,136 @@ +/mob/living/simple_animal/hostile/abnormality/burrowingheaven + name = "Burrowing Heaven" + desc = "A giant, bloody red tree." + icon = 'ModularTegustation/Teguicons/96x96.dmi' + icon_state = "burrowingheaven_contained" + icon_living = "burrowingheaven_contained" + pixel_x = -32 + base_pixel_x = -32 + del_on_death = TRUE + maxHealth = 600 //It normally just counters + health = 600 + move_to_delay = 0 + damage_coeff = list(BRUTE = 1, RED_DAMAGE = 0, WHITE_DAMAGE = 1.2, BLACK_DAMAGE = 0.5, PALE_DAMAGE = 1.5) + stat_attack = HARD_CRIT + melee_damage_lower = 99 + melee_damage_upper = 97 + melee_damage_type = BLACK_DAMAGE + attack_verb_continuous = "stabs" + attack_verb_simple = "stabs" + faction = list("hostile") + can_breach = TRUE + threat_level = WAW_LEVEL + start_qliphoth = 4 + wander = 0 + work_chances = list( + ABNORMALITY_WORK_INSTINCT = 0, + ABNORMALITY_WORK_INSIGHT = list(30, 40, 40, 50, 50), + ABNORMALITY_WORK_ATTACHMENT = list(40, 40, 40, 30, 20), + ABNORMALITY_WORK_REPRESSION = list(40, 45, 50, 55, 60) + ) + work_damage_amount = 10 + work_damage_type = BLACK_DAMAGE + + ego_list = list( + /datum/ego_datum/weapon/heaven, + /datum/ego_datum/armor/heaven + ) +// gift_type = /datum/ego_gifts/heaven + + var/seen //Are you being looked at right now? + var/solo_punish //Are you alone? + var/abno_seen //Is an abnormality in view? + abnormality_origin = ABNORMALITY_ORIGIN_LOBOTOMY + +//Sight Check +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/Life() + . = ..() + solo_punish = FALSE + for(var/mob/living/carbon/human/H in GLOB.player_list) + if(H.stat != DEAD) //Someone else is alive, just not on the Z level. Probably a manager. Thus, someone else COULD see this thing + solo_punish = TRUE + + //Who is watching us + var/people_watching + for(var/mob/living/carbon/human/L in viewers(world.view + 1, src)) + if(L.client && CanAttack(L) && L.stat != DEAD) + if(!L.is_blind()) + people_watching += 1 + + + //Only gets mad if you are NOT alone. + if(people_watching > 1) + seen = TRUE + else + seen = FALSE + + //Checking for abnos. + abno_seen = FALSE + for(var/mob/living/simple_animal/hostile/abnormality/B in view(10)) + abno_seen = TRUE + break + + +//Stuff that needs sight check +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/Move() + return FALSE + +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/AttackingTarget() + return FALSE + + + +//Counter +//Ranged stuff +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/bullet_act(obj/projectile/Proj) + ..() + var/mob/living/carbon/human/H = Proj.firer + if(abno_seen) + Punishment(H) + + +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/attacked_by(obj/item/I, mob/living/user) + ..() + if(!user) + return + if(abno_seen) + Punishment(user) + +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/proc/Punishment(mob/living/sinner) + to_chat(sinner, span_userdanger("Burrowing Heaven sears into your skull!")) + sinner.apply_damage(30, BLACK_DAMAGE, null, sinner.run_armor_check(null, BLACK_DAMAGE), spread_damage = TRUE) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(get_turf(sinner), pick(GLOB.alldirs)) + +//Chufflin around +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/BreachEffect(mob/living/carbon/human/user, breach_type) + . = ..() + teleport() + +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/proc/teleport() + var/turf/T = pick(GLOB.department_centers) + forceMove(T) + addtimer(CALLBACK(src, .proc/aoe), 2 SECONDS) + +//The actual attack +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/proc/aoe() + for(var/mob/living/carbon/human/H in view(7)) + to_chat(H, span_userdanger("Burrowing Heaven burns into your skull!")) + H.apply_damage(70, BLACK_DAMAGE, null, H.run_armor_check(null, BLACK_DAMAGE), spread_damage = TRUE) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(get_turf(H), pick(GLOB.alldirs)) + addtimer(CALLBACK(src, .proc/teleport), 50 SECONDS) + +//Work stuff +//Need 2 people to actually work on it +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/ChanceWorktickOverride(mob/living/carbon/human/user, work_chance, init_work_chance, work_type) + if(!seen) //If you're only considered "seen" because the other living player(s) are all on another Z level, disregard it during work specifically. + to_chat(user, "You are injured by [src]!") // Keeping it clear that the bad work is from being seen and not just luck. + new /obj/effect/temp_visual/dir_setting/bloodsplatter(get_turf(user), pick(GLOB.alldirs)) + datum_reference.qliphoth_change(-1) + return 0 + return init_work_chance + +/mob/living/simple_animal/hostile/abnormality/burrowingheaven/BreachEffect(mob/living/carbon/human/user) + ..() + icon_living = "burrowingheaven_breach" + icon_state = icon_living + GiveTarget(user) diff --git a/code/modules/paperwork/records/info/waw.dm b/code/modules/paperwork/records/info/waw.dm index 22f3fa164557..529d294b633e 100644 --- a/code/modules/paperwork/records/info/waw.dm +++ b/code/modules/paperwork/records/info/waw.dm @@ -422,7 +422,6 @@ "NOTICE: Employees preforming repression work to destroy D-04-108's flowers prevented the transformation of employees who were transforming into D-04-108-1.") //yes i did put this hint in twice. //Dream of Black Swan -//Parasite Tree /obj/item/paper/fluff/info/waw/black_swan abno_type = /mob/living/simple_animal/hostile/abnormality/black_swan abno_code = "F-02-70" @@ -519,3 +518,13 @@ "When the above occurred, F-01-57 entered a state of apparent heightened emotion, attacking more rapidly, dealing and taking more damage, and ignoring other targets.", "When F-01-57 was denied a killing blow to F-02-58, the abnormality went on a rampage." ) + +//Burrowing Heaven +/obj/item/paper/fluff/info/waw/heaven + abno_type = /mob/living/simple_animal/hostile/abnormality/burrowingheaven + abno_code = "O-04-72" + abno_info = list( + "Work with The Burrowing Heaven must proceed while the Containment Unit is viewable by more than two people.", + "Commencing work while in the view of only one person will cause The Burrowing Heaven's counter to decrease.", + "Burrowing Heaven must be attacked with another abnormality in sight.",) + diff --git a/lobotomy-corp13.dme b/lobotomy-corp13.dme index 909fe59c2dab..0c3210cc5791 100644 --- a/lobotomy-corp13.dme +++ b/lobotomy-corp13.dme @@ -2855,6 +2855,7 @@ #include "code\modules\mob\living\simple_animal\abnormality\waw\big_bird.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\big_wolf.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\black_swan.dm" +#include "code\modules\mob\living\simple_animal\abnormality\waw\burrowing_heaven.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\clouded_monk.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\clown_smiling.dm" #include "code\modules\mob\living\simple_animal\abnormality\waw\contract.dm"