From de4462010dff73b8d1dd96229e650c0500c92e51 Mon Sep 17 00:00:00 2001 From: Kirie Saito <77302679+Kitsunemitsu@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:02:15 -0500 Subject: [PATCH 1/2] adds Queen Keres --- .../teth/{rock.dm => remnant_rock.dm} | 0 .../!extra_abnos/branch12/waw/queen_keres.dm | 158 ++++++++++++++++++ .../branch12/zayin/{wave.dm => full_wave.dm} | 0 .../Teguicons/branch12/48x64.dmi | Bin 1492 -> 1804 bytes .../ai/sanity/_sanityloss_controller.dm | 3 + lobotomy-corp13.dme | 5 +- 6 files changed, 164 insertions(+), 2 deletions(-) rename ModularTegustation/!extra_abnos/branch12/teth/{rock.dm => remnant_rock.dm} (100%) create mode 100644 ModularTegustation/!extra_abnos/branch12/waw/queen_keres.dm rename ModularTegustation/!extra_abnos/branch12/zayin/{wave.dm => full_wave.dm} (100%) diff --git a/ModularTegustation/!extra_abnos/branch12/teth/rock.dm b/ModularTegustation/!extra_abnos/branch12/teth/remnant_rock.dm similarity index 100% rename from ModularTegustation/!extra_abnos/branch12/teth/rock.dm rename to ModularTegustation/!extra_abnos/branch12/teth/remnant_rock.dm diff --git a/ModularTegustation/!extra_abnos/branch12/waw/queen_keres.dm b/ModularTegustation/!extra_abnos/branch12/waw/queen_keres.dm new file mode 100644 index 000000000000..da14a22bef0a --- /dev/null +++ b/ModularTegustation/!extra_abnos/branch12/waw/queen_keres.dm @@ -0,0 +1,158 @@ +//Queen Keres +/mob/living/simple_animal/hostile/abnormality/queen_keres + name = "Queen Keres" + desc = "A towering queen in combat dress. She is cloaked in purple." + icon = 'ModularTegustation/Teguicons/branch12/48x64.dmi' + icon_state = "keres" + + /* + icon = 'ModularTegustation/Teguicons/64x48.dmi' + icon_state = "queen_keres" + icon_living = "queen_keres" + icon_dead = "queen_keres_dead"*/ + + maxHealth = 2000 + health = 2000 + pixel_x = -8 + base_pixel_x = -8 + damage_coeff = list(RED_DAMAGE = 0.4, WHITE_DAMAGE = 0.4, BLACK_DAMAGE = 0.4, PALE_DAMAGE = 1.5) + stat_attack = HARD_CRIT + can_breach = TRUE + threat_level = WAW_LEVEL + start_qliphoth = 3 + move_to_delay = 8 + minimum_distance = 2 // Don't move all the way to melee + work_chances = list( + ABNORMALITY_WORK_INSTINCT = list(40, 50, 60, 70, 80), + ABNORMALITY_WORK_INSIGHT = list(50, 45, 45, 40, 40), + ABNORMALITY_WORK_ATTACHMENT = list(35, 40, 50, 60, 65), + ABNORMALITY_WORK_REPRESSION = list(5, 15, 25, 35, 45), + ) + work_damage_amount = 10 + work_damage_type = BLACK_DAMAGE + friendly_verb_continuous = "scorns" + friendly_verb_simple = "scorn" + + ego_list = list( + //datum/ego_datum/weapon/degraded_honor, + //datum/ego_datum/armor/degraded_honor, + ) + //gift_type = /datum/ego_gifts/honor_return + abnormality_origin = ABNORMALITY_ORIGIN_BRANCH12 + + //Pulse stuff + var/pulse_cooldown + var/pulse_cooldown_time = 1.8 SECONDS + var/pulse_damage = 30 + + var/list/knights = list() + var/current_qliphoth + +/mob/living/simple_animal/hostile/abnormality/queen_keres/PostWorkEffect(mob/living/carbon/human/user, work_type, pe, work_time) + if(get_attribute_level(user, TEMPERANCE_ATTRIBUTE) < 60) + datum_reference.qliphoth_change(-1) + KnightAgent() + current_qliphoth = datum_reference.qliphoth_meter + +/mob/living/simple_animal/hostile/abnormality/queen_keres/NeutralEffect(mob/living/carbon/human/user, work_type, pe) + . = ..() + if(prob(80)) + datum_reference.qliphoth_change(-1) + KnightAgent() + current_qliphoth = datum_reference.qliphoth_meter + +/mob/living/simple_animal/hostile/abnormality/queen_keres/PickTarget(list/Targets) + return + +/mob/living/simple_animal/hostile/abnormality/queen_keres/Life() + . = ..() + if(!.) // Dead + return FALSE + + //This is unhinged. I need to check if the counter was lowered. By any means necessary. + if(current_qliphoth != datum_reference.qliphoth_meter_max && datum_reference.qliphoth_meter != current_qliphoth) + KnightAgent() + current_qliphoth = datum_reference.qliphoth_meter + + //Okay if you're not in godmode check if your knights are dead and if they aren't then pulse black + if(!(status_flags & GODMODE)) + CheckKnights() + if((pulse_cooldown < world.time)) + BlackPulse() + +/mob/living/simple_animal/hostile/abnormality/queen_keres/AttackingTarget() + return FALSE + + +/mob/living/simple_animal/hostile/abnormality/queen_keres/BreachEffect(mob/living/carbon/human/user, work_type, pe, work_time) + ..() + //Move to main room + var/turf/T = pick(GLOB.department_centers) + forceMove(T) + + //Grab your knights and make them insane + for(var/mob/living/carbon/human/H in knights) + //Replaces AI with murder one + if(!H.sanity_lost) + H.adjustSanityLoss(500) + QDEL_NULL(H.ai_controller) + H.ai_controller = /datum/ai_controller/insane/murder/queen_keres + H.InitializeAIController() + + //move your knights + var/turf/knight_turf = get_step(src, pick(1,2,4,5,6,8,9,10)) + H.forceMove(knight_turf) + + +/mob/living/simple_animal/hostile/abnormality/queen_keres/proc/BlackPulse() + pulse_cooldown = world.time + pulse_cooldown_time + for(var/mob/living/L in livinginview(10, src)) + if(faction_check_mob(L)) + continue + if(L in knights) + continue + L.deal_damage(pulse_damage, BLACK_DAMAGE) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(get_turf(L), pick(GLOB.alldirs)) + + +/mob/living/simple_animal/hostile/abnormality/queen_keres/proc/KnightAgent() + var/potential_knights = list() + + //Pick a security role to knight. + for(var/mob/living/carbon/human/H in GLOB.player_list) + if(H.stat == DEAD) + continue + if(!(H.mind.assigned_role in GLOB.security_positions)) + continue + potential_knights+=H + + var/mob/living/carbon/human/new_knight = pick(potential_knights) + knights += new_knight + + to_chat(new_knight, span_notice("You heed the call to arms.")) + new_knight.physiology.red_mod *= 0.8 + new_knight.physiology.white_mod *= 0.8 + new_knight.physiology.black_mod *= 0.8 + new_knight.physiology.pale_mod *= 0.8 + +/mob/living/simple_animal/hostile/abnormality/queen_keres/proc/CheckKnights() + for(var/mob/living/carbon/human/H in knights) + if(!H.sanity_lost || H.stat == DEAD) + knights-=H + H.physiology.red_mod /= 0.8 + H.physiology.white_mod /= 0.8 + H.physiology.black_mod /= 0.8 + H.physiology.pale_mod /= 0.8 + + if(length(knights) == 0) + death() + +/datum/ai_controller/insane/murder/queen_keres + lines_type = /datum/ai_behavior/say_line/insanity_keres + blacklist = list(/mob/living/simple_animal/hostile/abnormality/queen_keres) + +/datum/ai_behavior/say_line/insanity_keres + lines = list( + "My Queen, I fight for thee!", + "I fight for Justice!", + ) diff --git a/ModularTegustation/!extra_abnos/branch12/zayin/wave.dm b/ModularTegustation/!extra_abnos/branch12/zayin/full_wave.dm similarity index 100% rename from ModularTegustation/!extra_abnos/branch12/zayin/wave.dm rename to ModularTegustation/!extra_abnos/branch12/zayin/full_wave.dm diff --git a/ModularTegustation/Teguicons/branch12/48x64.dmi b/ModularTegustation/Teguicons/branch12/48x64.dmi index ecf5596da87ea6e164107e45073f71fbafe05fc4..07b8a36dcde355c2c4c211d58d7d51c157a39935 100644 GIT binary patch delta 1596 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 Date: Mon, 3 Feb 2025 04:07:23 -0500 Subject: [PATCH 2/2] records for Queen Keres --- .../!extra_abnos/branch12/records.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ModularTegustation/!extra_abnos/branch12/records.dm b/ModularTegustation/!extra_abnos/branch12/records.dm index 954e948db536..a765cbbe9e69 100644 --- a/ModularTegustation/!extra_abnos/branch12/records.dm +++ b/ModularTegustation/!extra_abnos/branch12/records.dm @@ -78,3 +78,17 @@ "When an employee dies in T-04-93 and they haven’t performed perfectly, the dead body will continue producing E until it they completed their work.", ) + +// -------------WAW------------- +// Queen Keres +/obj/item/paper/fluff/info/branch12/queen_keres + abno_type = /mob/living/simple_animal/hostile/abnormality/queen_keres + abno_code = "T-01-12-233" + abno_info = list( + "When the work result was normal, the Qliphoth counter decreased with a high probability.", + "WWhen the counter decreased, an agent was knighted by T-01-12-233.", + "A knighted employee receives an increase in all resistances for the rest of the shift, or until the death of T-01-12-233.", + "When an employee with level III temperance or below completed their work, the counter lowered.", + "When all knights have been killed, T-01-233 will return to their containment chamber.", + ) +