mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
per-spider web types
This commit is contained in:
@@ -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("<span class='notice'>[src] begins to secrete a sticky substance.</span>")
|
||||
if(do_after(src, delay_web, target = loc))
|
||||
@@ -138,15 +130,8 @@
|
||||
if(T)
|
||||
to_chat(src, "<span class='danger'>There is already a web here.</span>")
|
||||
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, "<span class='danger'>[src] slices into you!</span>")
|
||||
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()
|
||||
|
||||
@@ -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("<span class='notice'>[src] jumps away from [L]!</span>")
|
||||
visible_message("<span class='notice'>[src] jumps away from [L]!</span>")
|
||||
|
||||
|
||||
/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, "<span class='danger'>[src] slices into you!</span>")
|
||||
C.reagents.add_reagent("terror_black_toxin", 30)
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
@@ -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("<span class='danger'>[src] buries its fangs deep into the [inject_target] of [target]!</span>")
|
||||
else
|
||||
visible_message("<span class='danger'>[src] bites [target], but cannot inject venom into [target.p_their()] [inject_target]!</span>")
|
||||
L.attack_animal(src)
|
||||
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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
seek_cocoon_target()
|
||||
|
||||
|
||||
@@ -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,"<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
|
||||
|
||||
/obj/structure/spider/terrorweb/purple
|
||||
name = "thick terror web"
|
||||
opacity = 1
|
||||
health = 40
|
||||
@@ -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)
|
||||
@@ -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("<span class='notice'>[src] retracts its fangs a little.</span>")
|
||||
melee_damage_lower = melee_damage_lower_rage1
|
||||
melee_damage_upper = melee_damage_upper_rage1
|
||||
..()
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/spider/terrorweb/red
|
||||
health = 30
|
||||
name = "strong terror web"
|
||||
|
||||
@@ -134,14 +134,11 @@
|
||||
L.do_attack_animation(src)
|
||||
visible_message("<span class='danger'>[src] smashes the [L.name].</span>")
|
||||
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("<span class='notice'>[src] puts up some spider webs.</span>")
|
||||
else if(ai_ventcrawls && world.time > (last_ventcrawl_time + my_ventcrawl_freq))
|
||||
if(prob(idle_ventcrawl_chance))
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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, "<span class='danger'>[src] slices into you!</span>")
|
||||
new /obj/item/organ/internal/body_egg/terror_eggs(C)
|
||||
Reference in New Issue
Block a user