diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm
index 64ef285ded8..900bcd828a8 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/green.dm
@@ -16,8 +16,8 @@
icon_state = "terror_green"
icon_living = "terror_green"
icon_dead = "terror_green_dead"
- maxHealth = 120
- health = 120
+ maxHealth = 150
+ health = 150
melee_damage_lower = 10
melee_damage_upper = 20
var/feedings_to_lay = 2
@@ -33,54 +33,46 @@
var/obj/structure/spider/eggcluster/E = locate() in get_turf(src)
if(E)
to_chat(src, "There is already a cluster of eggs here!")
- else if(fed < feedings_to_lay)
+ return
+ if(fed < feedings_to_lay)
to_chat(src, "You must wrap more humanoid prey before you can do this!")
+ return
+ var/list/eggtypes = list(TS_DESC_RED, TS_DESC_GRAY, TS_DESC_GREEN)
+ var/num_brown = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/brown)
+ if(num_brown < 2)
+ eggtypes += TS_DESC_BROWN
+ var/num_black = CountSpidersType(/mob/living/simple_animal/hostile/poison/terror_spider/black)
+ if(num_black < 2)
+ eggtypes += TS_DESC_BLACK
+ var/eggtype = pick(eggtypes)
+ if(client)
+ eggtype = input("What kind of eggs?") as null|anything in eggtypes
+ if(!(eggtype in eggtypes))
+ to_chat(src, "Unrecognized egg type.")
+ return 0
+ visible_message("[src] lays a cluster of eggs.")
+ if(eggtype == TS_DESC_RED)
+ DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 1, 1)
+ else if(eggtype == TS_DESC_GRAY)
+ DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/gray, 1, 1)
+ else if(eggtype == TS_DESC_GREEN)
+ DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 1, 1)
+ else if(eggtype == TS_DESC_BLACK)
+ DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/black, 1, 1)
+ else if(eggtype == TS_DESC_BROWN)
+ DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/brown, 1, 1)
else
- visible_message("[src] begins to lay a cluster of eggs.")
- if(prob(33))
- DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 1, 1)
- else if(prob(50))
- DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/gray, 1, 1)
- else
- DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 1, 1)
- fed -= feedings_to_lay
+ to_chat(src, "Unrecognized egg type!")
+ fed += feedings_to_lay
+ fed -= feedings_to_lay
/mob/living/simple_animal/hostile/poison/terror_spider/green/spider_special_action()
if(cocoon_target)
- if(get_dist(src, cocoon_target) <= 1)
- spider_steps_taken = 0
- DoWrap()
- else
- if(spider_steps_taken > spider_max_steps)
- spider_steps_taken = 0
- cocoon_target = null
- busy = 0
- stop_automated_movement = 0
- else
- spider_steps_taken++
- CreatePath(cocoon_target)
- step_to(src,cocoon_target)
- if(spider_debug)
- visible_message("[src] moves towards [cocoon_target] to cocoon it.")
+ handle_cocoon_target()
else if(fed >= feedings_to_lay)
DoLayGreenEggs()
else if(world.time > (last_cocoon_object + freq_cocoon_object))
- last_cocoon_object = world.time
- var/list/can_see = view(src, 10)
- for(var/mob/living/C in can_see)
- if(C.stat == DEAD && !isterrorspider(C) && !C.anchored)
- spider_steps_taken = 0
- cocoon_target = C
- return
- for(var/obj/O in can_see)
- if(O.anchored)
- continue
- if(istype(O, /obj/item) || istype(O, /obj/structure) || istype(O, /obj/machinery))
- if(!istype(O, /obj/item/paper))
- cocoon_target = O
- stop_automated_movement = 1
- spider_steps_taken = 0
- return
+ seek_cocoon_target()
/mob/living/simple_animal/hostile/poison/terror_spider/green/spider_specialattack(mob/living/carbon/human/L, poisonable)
if(!poisonable)