From 96a679d49a0a7709c3c7fab1806931566bd7859f Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 3 Aug 2020 01:38:49 -0700 Subject: [PATCH 1/6] purple terror mini-update (visibility, timing, statpanel) --- .../hostile/terror_spiders/purple.dm | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index 7e36b411bae..0289affdb05 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -38,7 +38,7 @@ if(can_die() && spider_myqueen) var/mob/living/simple_animal/hostile/poison/terror_spider/queen/Q = spider_myqueen if(Q.stat != DEAD && !Q.ckey) - if(get_dist(src,Q) > 20) + if(get_dist(src, Q) > 20) if(!degenerate && !Q.degenerate) degenerate = 1 Q.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1) @@ -49,7 +49,7 @@ . = ..() if(.) // if mob is NOT dead if(!degenerate && spider_myqueen) - if(dcheck_counter >= 10) + if(dcheck_counter >= 5) dcheck_counter = 0 purple_distance_check() else @@ -62,34 +62,54 @@ if(Q.stat == DEAD) spider_myqueen = null degenerate = 1 - to_chat(src,"Your Queen has died! Her power no longer sustains you!") + to_chat(src,"[Q] has died! Her power no longer sustains you!") return queen_visible = 0 - for(var/mob/living/M in view(src, vision_range)) + for(var/mob/living/M in orange(src, vision_range)) if(M == Q) queen_visible = 1 break if(queen_visible) cycles_noqueen = 0 if(spider_debug) - to_chat(src,"Queen visible.") + to_chat(src,"[Q] visible.") else cycles_noqueen++ if(spider_debug) - to_chat(src,"Queen NOT visible. Cycles: [cycles_noqueen].") - if(cycles_noqueen == 3) + to_chat(src,"[Q] NOT visible. Cycles: [cycles_noqueen].") + var/area/A = get_area(spider_myqueen) + if(cycles_noqueen == 6) // one minute without queen sighted - to_chat(src,"You wonder where your Queen is.") - else if(cycles_noqueen == 6) + to_chat(src,"You have become separated from [Q]. Return to her in [A].") + else if(cycles_noqueen == 12) // two minutes without queen sighted - to_chat(src,"Without your Queen in sight, you feel yourself getting weaker...") - else if(cycles_noqueen >= 9) + to_chat(src,"Your long separation from [Q] weakens you. Return to her in [A].") + else if(cycles_noqueen >= 18) // three minutes without queen sighted, kill them. degenerate = 1 - to_chat(src,"Your link to your Queen has been broken! Your life force starts to drain away!") + to_chat(src,"Your link to [Q] has been broken! Your life force starts to drain away!") melee_damage_lower = 5 melee_damage_upper = 10 +/mob/living/simple_animal/hostile/poison/terror_spider/purple/Stat() + ..() + // Provides a status panel indicator, showing purples how long they can be away from their queen before their hivemind link breaks, and they die. + // Uses because the status panel does NOT accept . + if(statpanel("Status") && ckey && stat == CONSCIOUS) + if(spider_myqueen) + var/area/A = get_area(spider_myqueen) + if(degenerate) + stat(null, "Link: BROKEN") // color=red + else if(queen_visible) + stat(null, "Link: [spider_myqueen] is near") // color=green + else if(cycles_noqueen >= 12) + stat(null, "Link: Critical - return to [spider_myqueen] in [A]") // color=red + else + stat(null, "Link: Warning - return to [spider_myqueen] in [A]") // color=orange + + + + /obj/structure/spider/terrorweb/purple name = "thick web" desc = "This web is so thick, most cannot see beyond it." From eca90536c5a38497b1b7af3dcba400d772c83c50 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 3 Aug 2020 08:58:36 -0700 Subject: [PATCH 2/6] spacing, refactoring --- .../hostile/terror_spiders/purple.dm | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index 0289affdb05..4536b6c78bc 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -31,14 +31,15 @@ web_type = /obj/structure/spider/terrorweb/purple ai_spins_webs = FALSE var/dcheck_counter = 0 - var/queen_visible = 1 + var/queen_visible = TRUE var/cycles_noqueen = 0 + var/max_queen_range = 20 /mob/living/simple_animal/hostile/poison/terror_spider/purple/death(gibbed) if(can_die() && spider_myqueen) var/mob/living/simple_animal/hostile/poison/terror_spider/queen/Q = spider_myqueen if(Q.stat != DEAD && !Q.ckey) - if(get_dist(src, Q) > 20) + if(get_dist(src, Q) > max_queen_range) if(!degenerate && !Q.degenerate) degenerate = 1 Q.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1) @@ -62,34 +63,36 @@ if(Q.stat == DEAD) spider_myqueen = null degenerate = 1 - to_chat(src,"[Q] has died! Her power no longer sustains you!") + to_chat(src, "[Q] has died! Her power no longer sustains you!") return - queen_visible = 0 - for(var/mob/living/M in orange(src, vision_range)) - if(M == Q) - queen_visible = 1 - break + + if(get_dist(src, Q) < vision_range) + queen_visible = TRUE + else + queen_visible = FALSE + if(queen_visible) cycles_noqueen = 0 if(spider_debug) - to_chat(src,"[Q] visible.") + to_chat(src, "[Q] visible.") else cycles_noqueen++ if(spider_debug) - to_chat(src,"[Q] NOT visible. Cycles: [cycles_noqueen].") + to_chat(src, "[Q] NOT visible. Cycles: [cycles_noqueen].") var/area/A = get_area(spider_myqueen) - if(cycles_noqueen == 6) - // one minute without queen sighted - to_chat(src,"You have become separated from [Q]. Return to her in [A].") - else if(cycles_noqueen == 12) - // two minutes without queen sighted - to_chat(src,"Your long separation from [Q] weakens you. Return to her in [A].") - else if(cycles_noqueen >= 18) - // three minutes without queen sighted, kill them. - degenerate = 1 - to_chat(src,"Your link to [Q] has been broken! Your life force starts to drain away!") - melee_damage_lower = 5 - melee_damage_upper = 10 + switch(cycles_noqueen) + if(6) + // one minute without queen sighted + to_chat(src, "You have become separated from [Q]. Return to her in [A].") + if(12) + // two minutes without queen sighted + to_chat(src, "Your long separation from [Q] weakens you. Return to her in [A].") + if(18) + // three minutes without queen sighted, kill them. + degenerate = 1 + to_chat(src, "Your link to [Q] has been broken! Your life force starts to drain away!") + melee_damage_lower = 5 + melee_damage_upper = 10 /mob/living/simple_animal/hostile/poison/terror_spider/purple/Stat() ..() From 40ceb14b028faa7587fc52157bc23746e09a82bc Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 3 Aug 2020 09:01:02 -0700 Subject: [PATCH 3/6] removes dcheck_counter --- .../living/simple_animal/hostile/terror_spiders/purple.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index 4536b6c78bc..68974c2ba0b 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -30,7 +30,6 @@ idle_ventcrawl_chance = 0 // stick to the queen! web_type = /obj/structure/spider/terrorweb/purple ai_spins_webs = FALSE - var/dcheck_counter = 0 var/queen_visible = TRUE var/cycles_noqueen = 0 var/max_queen_range = 20 @@ -50,11 +49,8 @@ . = ..() if(.) // if mob is NOT dead if(!degenerate && spider_myqueen) - if(dcheck_counter >= 5) - dcheck_counter = 0 + if(times_fired % 5 == 0) purple_distance_check() - else - dcheck_counter++ /mob/living/simple_animal/hostile/poison/terror_spider/purple/proc/purple_distance_check() if(spider_myqueen) From ad4c62864b710a58cdb5e0741f8c69696593862b Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 3 Aug 2020 09:13:00 -0700 Subject: [PATCH 4/6] typing for spider_myqueen and spider_mymother --- .../simple_animal/hostile/terror_spiders/reproduction.dm | 8 ++++---- .../hostile/terror_spiders/terror_spiders.dm | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index a889bc6d328..5b42bdf8b46 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -11,8 +11,8 @@ layer = 2.75 max_integrity = 3 var/stillborn = FALSE - var/spider_myqueen = null - var/spider_mymother = null + var/mob/living/simple_animal/hostile/poison/terror_spider/queen/spider_myqueen = null + var/mob/living/simple_animal/hostile/poison/terror_spider/spider_mymother = null var/goto_mother = FALSE var/ventcrawl_chance = 30 // 30% every process(), assuming 33% wander does not trigger var/immediate_ventcrawl = TRUE @@ -197,8 +197,8 @@ desc = "A cluster of tiny spider eggs. They pulse with a strong inner life, and appear to have sharp thorns on the sides." icon_state = "eggs" var/spider_growinstantly = 0 - var/spider_myqueen = null - var/spider_mymother = null + var/mob/living/simple_animal/hostile/poison/terror_spider/queen/spider_myqueen = null + var/mob/living/simple_animal/hostile/poison/terror_spider/spider_mymother = null var/spiderling_type = null var/spiderling_number = 1 var/list/enemies = list() diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 520143d71d0..2b4f3c4cb14 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -136,8 +136,8 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) var/list/spider_special_drops = list() var/attackstep = 0 var/attackcycles = 0 - var/spider_myqueen = null - var/spider_mymother = null + var/mob/living/simple_animal/hostile/poison/terror_spider/queen/spider_myqueen = null + var/mob/living/simple_animal/hostile/poison/terror_spider/spider_mymother = null var/mylocation = null var/chasecycles = 0 var/web_infects = 0 From 507ff2457be72122be1f1dd923c85007ffe058ef Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 3 Aug 2020 09:15:53 -0700 Subject: [PATCH 5/6] spider_myqueen is now typed, remove cast --- .../simple_animal/hostile/terror_spiders/purple.dm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index 68974c2ba0b..a5ad8ca75d6 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -36,13 +36,12 @@ /mob/living/simple_animal/hostile/poison/terror_spider/purple/death(gibbed) if(can_die() && spider_myqueen) - var/mob/living/simple_animal/hostile/poison/terror_spider/queen/Q = spider_myqueen - if(Q.stat != DEAD && !Q.ckey) - if(get_dist(src, Q) > max_queen_range) - if(!degenerate && !Q.degenerate) + if(spider_myqueen.stat != DEAD && !spider_myqueen.ckey) + if(get_dist(src, spider_myqueen) > max_queen_range) + if(!degenerate && !spider_myqueen.degenerate) degenerate = 1 - Q.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1) - visible_message("[src] chitters in the direction of [Q]!") + spider_myqueen.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1) + visible_message("[src] chitters in the direction of [spider_myqueen]!") return ..() /mob/living/simple_animal/hostile/poison/terror_spider/purple/Life(seconds, times_fired) From b670089c3764ea51794e9ac0633f7360ff0bbda2 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 3 Aug 2020 10:47:50 -0700 Subject: [PATCH 6/6] refactor degenerate into a boolean --- .../living/simple_animal/hostile/terror_spiders/empress.dm | 2 +- .../living/simple_animal/hostile/terror_spiders/mother.dm | 2 +- .../living/simple_animal/hostile/terror_spiders/purple.dm | 6 +++--- .../living/simple_animal/hostile/terror_spiders/queen.dm | 2 +- .../simple_animal/hostile/terror_spiders/terror_spiders.dm | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm index 137d6739466..25a431a146a 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/empress.dm @@ -98,7 +98,7 @@ /mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/proc/EraseBrood() for(var/mob/living/simple_animal/hostile/poison/terror_spider/T in GLOB.ts_spiderlist) if(T.spider_tier < spider_tier) - T.degenerate = 1 + T.degenerate = TRUE to_chat(T, "Through the hivemind, the raw power of [src] floods into your body, burning it from the inside out!") for(var/obj/structure/spider/eggcluster/terror_eggcluster/T in GLOB.ts_egg_list) qdel(T) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm index 65a3ff3db47..7135d6e95ab 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/mother.dm @@ -49,7 +49,7 @@ S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray, /mob/living/simple_animal/hostile/poison/terror_spider/green) S.amount_grown = 50 // double speed growth visible_message("[src] breaks apart, the many spiders on its back scurrying everywhere!") - degenerate = 1 + degenerate = TRUE return ..() /mob/living/simple_animal/hostile/poison/terror_spider/mother/Destroy() diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm index a5ad8ca75d6..7f223d88f08 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/purple.dm @@ -39,7 +39,7 @@ if(spider_myqueen.stat != DEAD && !spider_myqueen.ckey) if(get_dist(src, spider_myqueen) > max_queen_range) if(!degenerate && !spider_myqueen.degenerate) - degenerate = 1 + degenerate = TRUE spider_myqueen.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1) visible_message("[src] chitters in the direction of [spider_myqueen]!") return ..() @@ -57,7 +57,7 @@ if(Q) if(Q.stat == DEAD) spider_myqueen = null - degenerate = 1 + degenerate = TRUE to_chat(src, "[Q] has died! Her power no longer sustains you!") return @@ -84,7 +84,7 @@ to_chat(src, "Your long separation from [Q] weakens you. Return to her in [A].") if(18) // three minutes without queen sighted, kill them. - degenerate = 1 + degenerate = TRUE to_chat(src, "Your link to [Q] has been broken! Your life force starts to drain away!") melee_damage_lower = 5 melee_damage_upper = 10 diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index bf3c98bb86a..b8e47d3ddf8 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -92,7 +92,7 @@ if(ckey) P.visible_message("\The [src] writhes in pain!") to_chat(P,"\The [src] has died. Without her hivemind link, purple terrors like yourself cannot survive more than a few minutes!") - P.degenerate = 1 + P.degenerate = TRUE return ..() /mob/living/simple_animal/hostile/poison/terror_spider/queen/Retaliate() diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 2b4f3c4cb14..ba60a09785f 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -85,7 +85,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) // desired: 20hp/minute unmolested, 40hp/min on food boost, assuming one tick every 2 seconds // 90/kill means bonus 30hp/kill regenerated over the next 1-2 minutes - var/degenerate = 0 // if 1, they slowly degen until they all die off. Used by high-level abilities only. + var/degenerate = FALSE // if TRUE, they slowly degen until they all die off. // Vision vision_range = 10 @@ -304,7 +304,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list) visible_message("\The dead body of the [src] decomposes!") gib() else - if(degenerate > 0) + if(degenerate) adjustToxLoss(rand(1,10)) if(regen_points < regen_points_max) regen_points += regen_points_per_tick