diff --git a/ModularTegustation/tegu_items/limbus_labs/!abno_overwrites.dm b/ModularTegustation/tegu_items/limbus_labs/!abno_overwrites.dm index 165861e23725..2fa6c1d15589 100644 --- a/ModularTegustation/tegu_items/limbus_labs/!abno_overwrites.dm +++ b/ModularTegustation/tegu_items/limbus_labs/!abno_overwrites.dm @@ -24,3 +24,15 @@ ChangeResistances(0.7, 0.6, 0.8, 1) melee_damage_lower = 35 melee_damage_upper = 47 + +/mob/living/simple_animal/hostile/abnormality/hatred_queen/Initialize() + ..() + if(SSmaptype.maptype == "limbus_labs") + beam_damage = 4 + beats_damage = 80 + faction = list("neutral") + +/mob/living/simple_animal/hostile/abnormality/steam/Initialize() + ..() + if(SSmaptype.maptype == "limbus_labs") + ChangeResistances(1, 1, 2, 1.5) diff --git a/ModularTegustation/tegu_items/limbus_labs/!other_overwrites.dm b/ModularTegustation/tegu_items/limbus_labs/!other_overwrites.dm index 5d696983ce56..5d187129e284 100644 --- a/ModularTegustation/tegu_items/limbus_labs/!other_overwrites.dm +++ b/ModularTegustation/tegu_items/limbus_labs/!other_overwrites.dm @@ -36,7 +36,11 @@ /mob/living/simple_animal/hostile/abnormality/Login() . = ..() if(SSmaptype.maptype == "limbus_labs") - faction = list("hostile") + if(client == /mob/living/simple_animal/hostile/abnormality/hatred_queen) + return + else + faction = list("hostile") + /mob/living/simple_animal/hostile/abnormality/Logout() . = ..() diff --git a/ModularTegustation/tegu_items/limbus_labs/spawners.dm b/ModularTegustation/tegu_items/limbus_labs/spawners.dm index c7bd95a8b3ee..fa094f153f74 100644 --- a/ModularTegustation/tegu_items/limbus_labs/spawners.dm +++ b/ModularTegustation/tegu_items/limbus_labs/spawners.dm @@ -15,18 +15,20 @@ GLOBAL_LIST_INIT(low_security, list( /mob/living/simple_animal/hostile/abnormality/eris, /mob/living/simple_animal/hostile/abnormality/schadenfreude, /mob/living/simple_animal/hostile/abnormality/galaxy_child, - /mob/living/simple_animal/hostile/abnormality/woodsman + /mob/living/simple_animal/hostile/abnormality/woodsman, + /mob/living/simple_animal/hostile/abnormality/steam + )) GLOBAL_LIST_INIT(high_security, list( /mob/living/simple_animal/hostile/abnormality/clouded_monk, /mob/living/simple_animal/hostile/abnormality/clown, /mob/living/simple_animal/hostile/abnormality/nothing_there, - /mob/living/simple_animal/hostile/abnormality/steam, /mob/living/simple_animal/hostile/abnormality/mountain, /mob/living/simple_animal/hostile/abnormality/despair_knight, /mob/living/simple_animal/hostile/abnormality/red_hood, - /mob/living/simple_animal/hostile/abnormality/general_b + /mob/living/simple_animal/hostile/abnormality/general_b, + /mob/living/simple_animal/hostile/abnormality/hatred_queen )) diff --git a/code/modules/mob/living/simple_animal/abnormality/he/steam_transport_machine.dm b/code/modules/mob/living/simple_animal/abnormality/he/steam_transport_machine.dm index 62d7c1e4cc1e..262aebe6df63 100644 --- a/code/modules/mob/living/simple_animal/abnormality/he/steam_transport_machine.dm +++ b/code/modules/mob/living/simple_animal/abnormality/he/steam_transport_machine.dm @@ -84,18 +84,29 @@ /mob/living/simple_animal/hostile/abnormality/steam/proc/UpdateStats() src.set_light(3, (gear * 2), "D4FAF37") - ChangeResistances(list( - RED_DAMAGE = (0.5 - (gear * 0.1)), - WHITE_DAMAGE = (1 - (gear * 0.1)), - BLACK_DAMAGE = (2 - (gear * 0.1)), - PALE_DAMAGE = (1.5 - (gear * 0.1)), - )) + if(SSmaptype.maptype == "limbus_labs") + ChangeResistances(list( + RED_DAMAGE = (1 - (gear * 0.1)), + WHITE_DAMAGE = (1 - (gear * 0.1)), + BLACK_DAMAGE = (2 - (gear * 0.1)), + PALE_DAMAGE = (1.5 - (gear * 0.1)), + )) + melee_damage_lower = (20 + (4 * gear)) + melee_damage_upper = (35 + (4 * gear)) + steam_damage = (5 + (1.5 * gear)) + else + ChangeResistances(list( + RED_DAMAGE = (0.5 - (gear * 0.1)), + WHITE_DAMAGE = (1 - (gear * 0.1)), + BLACK_DAMAGE = (2 - (gear * 0.1)), + PALE_DAMAGE = (1.5 - (gear * 0.1)), + )) + melee_damage_lower = (20 + (10 * gear)) + melee_damage_upper = (35 + (10 * gear)) + steam_damage = (5 + (3 * gear)) var/oldhealth = maxHealth maxHealth = (1600 + (400 * gear)) adjustBruteLoss(oldhealth - maxHealth) //Heals 400 health in a gear shift if it's already breached - melee_damage_lower = (20 + (10 * gear)) - melee_damage_upper = (35 + (10 * gear)) - steam_damage = (5 + (3 * gear)) work_damage_amount = (9 + (2 * gear)) ranged_cooldown_time = (40 - (5 * gear)) start_qliphoth = (max(1,(4 - gear))) diff --git a/code/modules/mob/living/simple_animal/abnormality/waw/despair_knight.dm b/code/modules/mob/living/simple_animal/abnormality/waw/despair_knight.dm index 56cfebd86a46..4eccf2f2a039 100644 --- a/code/modules/mob/living/simple_animal/abnormality/waw/despair_knight.dm +++ b/code/modules/mob/living/simple_animal/abnormality/waw/despair_knight.dm @@ -63,19 +63,17 @@ /datum/action/innate/change_icon_kod name = "Toggle Icon" - desc = "Toggle your icon between breached and contained. (Works only for Limbus Company Labratories)" + desc = "Toggle your icon between breached and friendly. (Works only for Limbus Company Labratories)" /datum/action/innate/change_icon_kod/Activate() . = ..() if(SSmaptype.maptype == "limbus_labs") - owner.icon = 'ModularTegustation/Teguicons/48x48.dmi' - owner.icon_state = "despair" + owner.icon_state = "despair_friendly" active = 1 /datum/action/innate/change_icon_kod/Deactivate() . = ..() if(SSmaptype.maptype == "limbus_labs") - owner.icon = 'ModularTegustation/Teguicons/64x64.dmi' owner.icon_state = "despair_breach" active = 0 diff --git a/code/modules/mob/living/simple_animal/abnormality/waw/hatred_queen.dm b/code/modules/mob/living/simple_animal/abnormality/waw/hatred_queen.dm index 20dca8aceb3a..ca8ce5885559 100644 --- a/code/modules/mob/living/simple_animal/abnormality/waw/hatred_queen.dm +++ b/code/modules/mob/living/simple_animal/abnormality/waw/hatred_queen.dm @@ -1,3 +1,4 @@ +#define HATRED_COOLDOWN (15 SECONDS) /mob/living/simple_animal/hostile/abnormality/hatred_queen name = "Queen of Hatred" desc = "An abnormality resembling pale-skinned girl in a rather bizzare outfit. \ @@ -87,14 +88,63 @@ //Nihil Related var/nihil_present = FALSE + + var/hysteric_ability = 0 + var/hatred_cooldown + var/hatred_cooldown_time = 15 SECONDS + + //PLAYABLES ATTACKS attack_action_types = list( /datum/action/innate/abnormality_attack/qoh_beam, /datum/action/innate/abnormality_attack/qoh_beats, /datum/action/innate/abnormality_attack/qoh_teleport, /datum/action/innate/abnormality_attack/qoh_normal, + /datum/action/cooldown/toggle_hysteria, ) + +/datum/action/cooldown/toggle_hysteria + name = "Toggle Hysteria" + desc = "Toggle your Hysteria with your other forms. (Works only for Limbus Company Labratories)" + check_flags = AB_CHECK_CONSCIOUS + transparent_when_unavailable = TRUE + cooldown_time = HATRED_COOLDOWN + + +/datum/action/cooldown/toggle_hysteria/Trigger() + if(!..()) + return FALSE + if(!istype(owner, /mob/living/simple_animal/hostile/abnormality/hatred_queen)) + return FALSE + if(!SSmaptype.maptype == "limbus_labs") + return FALSE + var/mob/living/simple_animal/hostile/abnormality/hatred_queen/hatred_queen = owner + StartCooldown() + hatred_queen.hysteria_change() + +/mob/living/simple_animal/hostile/abnormality/hatred_queen/proc/hysteria_change() + if(hysteric_ability == 0) + icon = 'ModularTegustation/Teguicons/32x48.dmi' + icon_state = "hatred_psycho" + threat_level = TETH_LEVEL + faction = "netrual" + hysteric_ability = 1 + return + if(hysteric_ability == 1) + var/hysteria_choice = alert(src, "Do you want to change into your friendly or hostile form?", "Choose Form", "Friendly", "Hostile") + if(hysteria_choice == "Friendly") + icon = 'ModularTegustation/Teguicons/32x48.dmi' + icon_state = "hatred" + friendly = TRUE + threat_level = TETH_LEVEL + faction = "neutral" + if(hysteria_choice == "Hostile") + addtimer(CALLBACK(src, PROC_REF(HostileTransform)), 10 SECONDS) + hysteric_ability = 0 + return + + /datum/action/innate/abnormality_attack/qoh_beam name = "Arcana Slave" button_icon_state = "qoh_beam" @@ -239,7 +289,7 @@ return FALSE death_counter += 1 //if BREACHED, check if death_counter over the death limit - if(!IsContained() && breach_max_death && (death_counter >= breach_max_death)) + if(!IsContained() && breach_max_death && (death_counter >= breach_max_death) && !SSmaptype.maptype == "limbus_labs") GoHysteric() //if CONTAINED and lots of death before qliphoth triggers (TEMP) if(IsContained() && (death_counter > 3)) // Omagah a lot of dead people! @@ -377,6 +427,12 @@ beamloop.start() var/beam_stage = 1 var/beam_damage_final = beam_damage + if(SSmaptype.maptype == "limbus_labs") + for(var/turf/TF in hit_line) //checks if that line has anything in the way, resets TT as the new beam end location + if(TF.density) + TT = TF + break + hit_line = getline(my_turf, TT) //old hit_line is discarded with hit_line which respects walls if(friendly) addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, say), "ARCANA SLAVE!")) else @@ -444,6 +500,8 @@ TryTeleport(TRUE) /mob/living/simple_animal/hostile/abnormality/hatred_queen/proc/TryTeleport(forced = FALSE) + if(SSmaptype.maptype == "limbus_labs") + return FALSE if(!forced) if(teleport_cooldown > world.time) return FALSE @@ -698,3 +756,13 @@ death() return FALSE return ..() + + +//LCL stuff +/mob/living/simple_animal/hostile/abnormality/hatred_queen/Login() + . = ..() + if(SSmaptype.maptype == "limbus_labs") + if(friendly == FALSE) + faction = list("hatredqueen") + else + faction = list("neutral")