diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
index 8a2cb26bc4c..89fe8e87431 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/actions.dm
@@ -7,7 +7,7 @@
/datum/action/innate/terrorspider/web/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner
- user.Web(0)
+ user.Web()
/datum/action/innate/terrorspider/wrap
name = "Wrap"
@@ -30,16 +30,6 @@
var/mob/living/simple_animal/hostile/poison/terror_spider/green/user = owner
user.DoLayGreenEggs()
-// ---------- PRINCE ACTIONS
-
-/datum/action/innate/terrorspider/thickweb
- name = "Thick Web"
- icon_icon = 'icons/effects/effects.dmi'
- button_icon_state = "stickyweb2"
-
-/datum/action/innate/terrorspider/thickweb/Activate()
- var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner
- user.Web(1)
// ---------- BOSS ACTIONS
@@ -125,7 +115,9 @@
// ---------- WEB
-/mob/living/simple_animal/hostile/poison/terror_spider/proc/Web(var/thick = 0)
+/mob/living/simple_animal/hostile/poison/terror_spider/proc/Web()
+ if(!web_type)
+ return
var/turf/mylocation = loc
visible_message("[src] begins to secrete a sticky substance.")
if(do_after(src, delay_web, target = loc))
@@ -138,15 +130,8 @@
if(T)
to_chat(src, "There is already a web here.")
else
- var/obj/structure/spider/terrorweb/W = new /obj/structure/spider/terrorweb(loc)
+ var/obj/structure/spider/terrorweb/W = new web_type(loc)
W.creator_ckey = ckey
- if(thick)
- W.opacity = 1
- W.name = "thick terror web"
- W.health = W.health * 2
- if(web_infects)
- W.infectious = 1
- W.name = "sharp terror web"
/obj/structure/spider/terrorweb
name = "terror web"
@@ -157,7 +142,6 @@
health = 20 // two welders, or one laser shot (15 for the normal spider webs)
icon_state = "stickyweb1"
var/creator_ckey = null
- var/infectious = 0
/obj/structure/spider/terrorweb/New()
..()
@@ -186,11 +170,7 @@
DeCloakNearby()
if(iscarbon(mover))
var/mob/living/carbon/C = mover
- if(!IsTSInfected(C) && infectious)
- var/inject_target = pick("chest","head")
- if(C.can_inject(null, 0, inject_target, 0))
- to_chat(C, "[src] slices into you!")
- new /obj/item/organ/internal/body_egg/terror_eggs(C)
+ web_special_ability(C)
spawn(70)
if(C.loc == loc)
qdel(src)
@@ -208,6 +188,9 @@
return
..()
+/obj/structure/spider/terrorweb/proc/web_special_ability(var/mob/living/carbon/C)
+ return
+
// ---------- WRAP
/mob/living/simple_animal/hostile/poison/terror_spider/proc/FindWrapTarget()
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm
index 2c30e61969a..1a9d01085b4 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/black.dm
@@ -21,6 +21,7 @@
health = 120
melee_damage_lower = 5
melee_damage_upper = 10
+ web_type = /obj/structure/spider/terrorweb/black
stat_attack = 1 // ensures they will target people in crit, too!
spider_tier = TS_TIER_2
@@ -42,4 +43,16 @@
step_away(src, L)
LoseTarget()
step_away(src, L)
- visible_message("[src] jumps away from [L]!")
\ No newline at end of file
+ visible_message("[src] jumps away from [L]!")
+
+
+/obj/structure/spider/terrorweb/black
+ name = "dark terror web"
+
+/obj/structure/spider/terrorweb/black/web_special_ability(var/mob/living/carbon/C)
+ if(istype(C))
+ if(!C.reagents.has_reagent("terror_black_toxin", 60))
+ var/inject_target = pick("chest","head")
+ if(C.can_inject(null, 0, inject_target, 0))
+ to_chat(C, "[src] slices into you!")
+ C.reagents.add_reagent("terror_black_toxin", 30)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm
index af5bd4495ee..389397da95c 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/brown.dm
@@ -26,6 +26,7 @@
ai_ventbreaker = 1
freq_ventcrawl_combat = 600 // Ventcrawls very frequently, breaking open vents as it goes.
freq_ventcrawl_idle = 1800
+ web_type = null
var/datum/action/innate/terrorspider/ventsmash/ventsmash_action
/mob/living/simple_animal/hostile/poison/terror_spider/brown/New()
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm
index c24a7ef4369..8baafb66aa5 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/gray.dm
@@ -25,6 +25,7 @@
wander = 0 // wandering defeats the purpose of stealth
idle_vision_range = 3 // very low idle vision range
delay_web = 20 // double speed
+ web_type = /obj/structure/spider/terrorweb/gray
/mob/living/simple_animal/hostile/poison/terror_spider/gray/spider_specialattack(mob/living/carbon/human/L, poisonable)
@@ -136,3 +137,7 @@
if(get_dist(src,temp_vent) > 0 && get_dist(src,temp_vent) < 5)
step_to(src,temp_vent)
// if you're bumped off your vent, try to get back to it
+
+/obj/structure/spider/terrorweb/gray
+ alpha = 100
+ name = "stealthy terror web"
\ No newline at end of file
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 a71f656f18e..539c2602f5c 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
@@ -20,6 +20,7 @@
health = 150
melee_damage_lower = 10
melee_damage_upper = 20
+ web_type = /obj/structure/spider/terrorweb/green
var/feedings_to_lay = 2
var/datum/action/innate/terrorspider/greeneggs/greeneggs_action
@@ -86,4 +87,13 @@
visible_message("[src] buries its fangs deep into the [inject_target] of [target]!")
else
visible_message("[src] bites [target], but cannot inject venom into [target.p_their()] [inject_target]!")
- L.attack_animal(src)
\ No newline at end of file
+ L.attack_animal(src)
+
+/obj/structure/spider/terrorweb/green
+ name = "slimy terror web"
+
+/obj/structure/spider/terrorweb/green/web_special_ability(var/mob/living/carbon/C)
+ if(istype(C))
+ if(C.eye_blurry < 60)
+ C.AdjustEyeBlurry(30)
+
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 1a34936ebfb..b952e456137 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
@@ -23,6 +23,7 @@
idle_ventcrawl_chance = 5
spider_tier = TS_TIER_3
spider_opens_doors = 2
+ web_type = null
var/canspawn = TRUE
var/datum/action/innate/terrorspider/ventsmash/ventsmash_action
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm
index e0ac2a54927..d0ddc369517 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/prince.dm
@@ -27,12 +27,8 @@
idle_ventcrawl_chance = 0
spider_tier = TS_TIER_3
spider_opens_doors = 2
- var/datum/action/innate/terrorspider/thickweb/thickweb_action
-
-/mob/living/simple_animal/hostile/poison/terror_spider/prince/New()
- ..()
- thickweb_action = new()
- thickweb_action.Grant(src)
+ web_type = /obj/structure/spider/terrorweb/purple
+ ai_spins_webs = FALSE
/mob/living/simple_animal/hostile/poison/terror_spider/prince/death(gibbed)
if(can_die() && !hasdied && spider_uo71)
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm
index 1b135e44548..0d044374cd5 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm
@@ -6,7 +6,7 @@
// -------------: AI: as green, but will evolve to queen when it can
// -------------: SPECIAL: can evolve into a queen, if fed enough
// -------------: TO FIGHT IT: kill it before it evolves
-// -------------: SPRITES FROM: Chai in the Paradise Discord
+// -------------: SPRITES FROM: FoS, http://nanotrasen.se/phpBB3/memberlist.php?mode=viewprofile&u=386
/mob/living/simple_animal/hostile/poison/terror_spider/princess
name = "Princess of Terror spider"
@@ -25,6 +25,7 @@
idle_ventcrawl_chance = 5
spider_tier = TS_TIER_3
spider_opens_doors = 2
+ web_type = /obj/structure/spider/terrorweb/queen
var/feedings_to_evolve = 3
var/datum/action/innate/terrorspider/ventsmash/ventsmash_action
var/datum/action/innate/terrorspider/evolvequeen/evolvequeen_action
@@ -63,4 +64,5 @@
else if(fed >= feedings_to_evolve)
evolve_to_queen()
else if(world.time > (last_cocoon_object + freq_cocoon_object))
- seek_cocoon_target()
\ No newline at end of file
+ seek_cocoon_target()
+
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 55a15980d64..bd8f50c4be2 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
@@ -28,15 +28,11 @@
ai_ventcrawls = 0
environment_smash = ENVIRONMENT_SMASH_RWALLS
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/cycles_noqueen = 0
- var/datum/action/innate/terrorspider/thickweb/thickweb_action
-
-/mob/living/simple_animal/hostile/poison/terror_spider/purple/New()
- ..()
- thickweb_action = new()
- thickweb_action.Grant(src)
/mob/living/simple_animal/hostile/poison/terror_spider/purple/death(gibbed)
if(can_die() && spider_myqueen)
@@ -93,3 +89,8 @@
to_chat(src,"Your link to your Queen has been broken! Your life force starts to drain away!")
melee_damage_lower = 5
melee_damage_upper = 10
+
+/obj/structure/spider/terrorweb/purple
+ name = "thick terror web"
+ opacity = 1
+ health = 40
\ No newline at end of file
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 d26d928b880..cee5c2bf38e 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
@@ -31,6 +31,7 @@
projectiletype = /obj/item/projectile/terrorqueenspit
spider_tier = TS_TIER_4
spider_opens_doors = 2
+ web_type = /obj/structure/spider/terrorweb/queen
var/spider_spawnfrequency = 1200 // 120 seconds
var/spider_spawnfrequency_stable = 1200 // 120 seconds. Spawnfrequency is set to this on ai spiders once nest setup is complete.
var/spider_lastspawn = 0
@@ -347,3 +348,13 @@
L.Hallucinate(400)
if(!isterrorspider(L))
L.adjustToxLoss(bonus_tox)
+
+/obj/structure/spider/terrorweb/queen
+ name = "toxic terror web"
+
+/obj/structure/spider/terrorweb/queen/web_special_ability(var/mob/living/carbon/C)
+ if(istype(C))
+ var/inject_target = pick("chest","head")
+ if(C.can_inject(null, 0, inject_target, 0))
+ C.Hallucinate(400)
+ C.adjustToxLoss(30)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm
index 5f219f2b3b1..f9a64639687 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/red.dm
@@ -24,6 +24,7 @@
move_to_delay = 10 // at 20ticks/sec, this is 2 tile/sec movespeed
speed = 2 // movement_delay() gives 4.5, or 0.45s between steps, which = about 2.2 tiles/second. Player is slightly faster than AI, but cannot move on diagonals.
spider_opens_doors = 2
+ web_type = /obj/structure/spider/terrorweb/red
var/enrage = 0
var/melee_damage_lower_rage0 = 15
var/melee_damage_upper_rage0 = 20
@@ -57,4 +58,9 @@
visible_message("[src] retracts its fangs a little.")
melee_damage_lower = melee_damage_lower_rage1
melee_damage_upper = melee_damage_upper_rage1
- ..()
\ No newline at end of file
+ ..()
+
+
+/obj/structure/spider/terrorweb/red
+ health = 30
+ name = "strong terror web"
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm
index a0b1a67175a..cded24e3d51 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm
@@ -134,14 +134,11 @@
L.do_attack_animation(src)
visible_message("[src] smashes the [L.name].")
break
- else if(ai_spins_webs && world.time > (last_spins_webs + freq_spins_webs))
+ else if(web_type && ai_spins_webs && world.time > (last_spins_webs + freq_spins_webs))
last_spins_webs = world.time
var/obj/structure/spider/terrorweb/T = locate() in get_turf(src)
if(!T)
- var/obj/structure/spider/terrorweb/W = new /obj/structure/spider/terrorweb(loc)
- if(web_infects)
- W.infectious = 1
- W.name = "sharp terror web"
+ new web_type(loc)
visible_message("[src] puts up some spider webs.")
else if(ai_ventcrawls && world.time > (last_ventcrawl_time + my_ventcrawl_freq))
if(prob(idle_ventcrawl_chance))
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 9abd76d3961..aab5f05d252 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
@@ -148,6 +148,7 @@ var/global/list/ts_spiderling_list = list()
var/web_infects = 0
var/datum/action/innate/terrorspider/web/web_action
+ var/web_type = /obj/structure/spider/terrorweb
var/datum/action/innate/terrorspider/wrap/wrap_action
// Breathing - require some oxygen, and no toxins, but take little damage from this requirement not being met (they can hold their breath)
@@ -255,8 +256,9 @@ var/global/list/ts_spiderling_list = list()
add_language("Galactic Common")
default_language = GLOB.all_languages["Spider Hivemind"]
- web_action = new()
- web_action.Grant(src)
+ if(web_type)
+ web_action = new()
+ web_action.Grant(src)
wrap_action = new()
wrap_action.Grant(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm
index ff2bd5cdfdc..fc52becedad 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/white.dm
@@ -20,7 +20,7 @@
melee_damage_lower = 5
melee_damage_upper = 15
spider_tier = TS_TIER_2
- web_infects = 1
+ web_type = /obj/structure/spider/terrorweb/white
/mob/living/simple_animal/hostile/poison/terror_spider/white/LoseTarget()
@@ -56,3 +56,15 @@
if(C.get_int_organ(/obj/item/organ/internal/body_egg))
return 1
return 0
+
+
+/obj/structure/spider/terrorweb/white
+ name = "sickly terror web"
+
+/obj/structure/spider/terrorweb/white/web_special_ability(var/mob/living/carbon/C)
+ if(istype(C))
+ if(!IsTSInfected(C))
+ var/inject_target = pick("chest","head")
+ if(C.can_inject(null, 0, inject_target, 0))
+ to_chat(C, "[src] slices into you!")
+ new /obj/item/organ/internal/body_egg/terror_eggs(C)
\ No newline at end of file