mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
Merge pull request #14000 from Kyep/terror_purple_miniupdate
Purple Terror Fix, Tweak, Status Panel
This commit is contained in:
@@ -99,7 +99,7 @@
|
||||
for(var/thing in GLOB.ts_spiderlist)
|
||||
var/mob/living/simple_animal/hostile/poison/terror_spider/T = thing
|
||||
if(T.spider_tier < spider_tier)
|
||||
T.degenerate = 1
|
||||
T.degenerate = TRUE
|
||||
to_chat(T, "<span class='userdanger'>Through the hivemind, the raw power of [src] floods into your body, burning it from the inside out!</span>")
|
||||
for(var/obj/structure/spider/eggcluster/terror_eggcluster/T in GLOB.ts_egg_list)
|
||||
qdel(T)
|
||||
|
||||
@@ -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("<span class='userdanger'>[src] breaks apart, the many spiders on its back scurrying everywhere!</span>")
|
||||
degenerate = 1
|
||||
degenerate = TRUE
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/mother/Destroy()
|
||||
|
||||
@@ -30,30 +30,26 @@
|
||||
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 = 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(!degenerate && !Q.degenerate)
|
||||
degenerate = 1
|
||||
Q.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1)
|
||||
visible_message("<span class='notice'>[src] chitters in the direction of [Q]!</span>")
|
||||
if(spider_myqueen.stat != DEAD && !spider_myqueen.ckey)
|
||||
if(get_dist(src, spider_myqueen) > max_queen_range)
|
||||
if(!degenerate && !spider_myqueen.degenerate)
|
||||
degenerate = TRUE
|
||||
spider_myqueen.DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/purple, 1)
|
||||
visible_message("<span class='notice'>[src] chitters in the direction of [spider_myqueen]!</span>")
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/terror_spider/purple/Life(seconds, times_fired)
|
||||
. = ..()
|
||||
if(stat != DEAD) // Can't use if(.) for this due to the fact it can sometimes return FALSE even when mob is alive.
|
||||
if(!degenerate && spider_myqueen)
|
||||
if(dcheck_counter >= 10)
|
||||
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)
|
||||
@@ -61,34 +57,56 @@
|
||||
if(Q)
|
||||
if(Q.stat == DEAD)
|
||||
spider_myqueen = null
|
||||
degenerate = 1
|
||||
to_chat(src,"<span class='userdanger'>Your Queen has died! Her power no longer sustains you!</span>")
|
||||
degenerate = TRUE
|
||||
to_chat(src, "<span class='userdanger'>[Q] has died! Her power no longer sustains you!</span>")
|
||||
return
|
||||
queen_visible = 0
|
||||
for(var/mob/living/M in view(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,"<span class='notice'>Queen visible.</span>")
|
||||
to_chat(src, "<span class='notice'>[Q] visible.</span>")
|
||||
else
|
||||
cycles_noqueen++
|
||||
if(spider_debug)
|
||||
to_chat(src,"<span class='danger'>Queen NOT visible. Cycles: [cycles_noqueen].</span>")
|
||||
if(cycles_noqueen == 3)
|
||||
// one minute without queen sighted
|
||||
to_chat(src,"<span class='notice'>You wonder where your Queen is.</span>")
|
||||
else if(cycles_noqueen == 6)
|
||||
// two minutes without queen sighted
|
||||
to_chat(src,"<span class='danger'>Without your Queen in sight, you feel yourself getting weaker...</span>")
|
||||
else if(cycles_noqueen >= 9)
|
||||
// three minutes without queen sighted, kill them.
|
||||
degenerate = 1
|
||||
to_chat(src,"<span class='userdanger'>Your link to your Queen has been broken! Your life force starts to drain away!</span>")
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
to_chat(src, "<span class='danger'>[Q] NOT visible. Cycles: [cycles_noqueen].</span>")
|
||||
var/area/A = get_area(spider_myqueen)
|
||||
switch(cycles_noqueen)
|
||||
if(6)
|
||||
// one minute without queen sighted
|
||||
to_chat(src, "<span class='danger'>You have become separated from [Q]. Return to her in [A].</span>")
|
||||
if(12)
|
||||
// two minutes without queen sighted
|
||||
to_chat(src, "<span class='danger'>Your long separation from [Q] weakens you. Return to her in [A].</span>")
|
||||
if(18)
|
||||
// three minutes without queen sighted, kill them.
|
||||
degenerate = TRUE
|
||||
to_chat(src, "<span class='userdanger'>Your link to [Q] has been broken! Your life force starts to drain away!</span>")
|
||||
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 <font color='#X'> because the status panel does NOT accept <span class='X'>.
|
||||
if(statpanel("Status") && ckey && stat == CONSCIOUS)
|
||||
if(spider_myqueen)
|
||||
var/area/A = get_area(spider_myqueen)
|
||||
if(degenerate)
|
||||
stat(null, "Link: <font color='#eb4034'>BROKEN</font>") // color=red
|
||||
else if(queen_visible)
|
||||
stat(null, "Link: <font color='#32a852'>[spider_myqueen] is near</font>") // color=green
|
||||
else if(cycles_noqueen >= 12)
|
||||
stat(null, "Link: <font color='#eb4034'>Critical - return to [spider_myqueen] in [A]</font>") // color=red
|
||||
else
|
||||
stat(null, "Link: <font color='#fcba03'>Warning - return to [spider_myqueen] in [A]</font>") // color=orange
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/structure/spider/terrorweb/purple
|
||||
name = "thick web"
|
||||
|
||||
@@ -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 = 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/spiderling_type = null
|
||||
var/spiderling_number = 1
|
||||
var/list/enemies = list()
|
||||
|
||||
@@ -86,7 +86,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
|
||||
@@ -137,8 +137,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
|
||||
@@ -305,7 +305,7 @@ GLOBAL_LIST_EMPTY(ts_spiderling_list)
|
||||
visible_message("<span class='notice'>\The dead body of the [src] decomposes!</span>")
|
||||
gib()
|
||||
else
|
||||
if(degenerate > 0)
|
||||
if(degenerate)
|
||||
adjustToxLoss(rand(1,10))
|
||||
if(regen_points < regen_points_max)
|
||||
regen_points += regen_points_per_tick
|
||||
|
||||
Reference in New Issue
Block a user