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

Queen keres #2712

Merged
merged 2 commits into from
Feb 3, 2025
Merged
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
14 changes: 14 additions & 0 deletions ModularTegustation/!extra_abnos/branch12/records.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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.",
)

158 changes: 158 additions & 0 deletions ModularTegustation/!extra_abnos/branch12/waw/queen_keres.dm
Original file line number Diff line number Diff line change
@@ -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!",
)
Binary file modified ModularTegustation/Teguicons/branch12/48x64.dmi
Binary file not shown.
3 changes: 3 additions & 0 deletions code/datums/ai/sanity/_sanityloss_controller.dm
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@
var/last_known_location = null
var/target_lost = FALSE
var/stat_attack = HARD_CRIT
var/list/blacklist = list() //You DON'T want to attack these

/datum/ai_controller/insane/murder/Destroy()
if(mech_attack_timer_id)
Expand Down Expand Up @@ -633,6 +634,8 @@
return FALSE
if(!isturf(living_thing.loc) && !ismecha(living_thing.loc))
return FALSE
if(living_thing.type in blacklist)
return FALSE
return TRUE
return FALSE

Expand Down
5 changes: 3 additions & 2 deletions lobotomy-corp13.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3957,8 +3957,9 @@
#include "ModularTegustation\!extra_abnos\branch12\!tools\eye.dm"
#include "ModularTegustation\!extra_abnos\branch12\!tools\midnight.dm"
#include "ModularTegustation\!extra_abnos\branch12\he\show_goes_on.dm"
#include "ModularTegustation\!extra_abnos\branch12\teth\rock.dm"
#include "ModularTegustation\!extra_abnos\branch12\zayin\wave.dm"
#include "ModularTegustation\!extra_abnos\branch12\teth\remnant_rock.dm"
#include "ModularTegustation\!extra_abnos\branch12\waw\queen_keres.dm"
#include "ModularTegustation\!extra_abnos\branch12\zayin\full_wave.dm"
#include "ModularTegustation\altjobtitles\altjobtitles.dm"
#include "ModularTegustation\altjobtitles\LC13.dm"
#include "ModularTegustation\altjobtitles\outfits.dm"
Expand Down