mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge pull request #2626 from CHOMPStationBot/upstream-merge-11197
[MIRROR] Expands spider features
This commit is contained in:
@@ -93,6 +93,7 @@
|
|||||||
var/spiders_min = 6
|
var/spiders_min = 6
|
||||||
var/spiders_max = 24
|
var/spiders_max = 24
|
||||||
var/spider_type = /obj/effect/spider/spiderling
|
var/spider_type = /obj/effect/spider/spiderling
|
||||||
|
var/faction = "spiders"
|
||||||
|
|
||||||
/obj/effect/spider/eggcluster/Initialize()
|
/obj/effect/spider/eggcluster/Initialize()
|
||||||
pixel_x = rand(3,-3)
|
pixel_x = rand(3,-3)
|
||||||
@@ -121,9 +122,10 @@
|
|||||||
O = loc
|
O = loc
|
||||||
|
|
||||||
for(var/i=0, i<num, i++)
|
for(var/i=0, i<num, i++)
|
||||||
var/spiderling = new spider_type(src.loc, src)
|
var/obj/effect/spider/spiderling/spiderling = new spider_type(src.loc, src)
|
||||||
if(O)
|
if(O)
|
||||||
O.implants += spiderling
|
O.implants += spiderling
|
||||||
|
spiderling.faction = faction
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/effect/spider/eggcluster/small
|
/obj/effect/spider/eggcluster/small
|
||||||
@@ -133,6 +135,11 @@
|
|||||||
/obj/effect/spider/eggcluster/small/frost
|
/obj/effect/spider/eggcluster/small/frost
|
||||||
spider_type = /obj/effect/spider/spiderling/frost
|
spider_type = /obj/effect/spider/spiderling/frost
|
||||||
|
|
||||||
|
/obj/effect/spider/eggcluster/royal
|
||||||
|
spiders_min = 2
|
||||||
|
spiders_max = 5
|
||||||
|
spider_type = /obj/effect/spider/spiderling/varied
|
||||||
|
|
||||||
/obj/effect/spider/spiderling
|
/obj/effect/spider/spiderling
|
||||||
name = "spiderling"
|
name = "spiderling"
|
||||||
desc = "It never stays still for long."
|
desc = "It never stays still for long."
|
||||||
@@ -145,12 +152,20 @@
|
|||||||
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
|
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
|
||||||
var/travelling_in_vent = 0
|
var/travelling_in_vent = 0
|
||||||
var/list/grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter)
|
var/list/grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter)
|
||||||
|
var/faction = "spiders"
|
||||||
|
|
||||||
var/stunted = FALSE
|
var/stunted = FALSE
|
||||||
|
|
||||||
/obj/effect/spider/spiderling/frost
|
/obj/effect/spider/spiderling/frost
|
||||||
grow_as = list(/mob/living/simple_mob/animal/giant_spider/frost)
|
grow_as = list(/mob/living/simple_mob/animal/giant_spider/frost)
|
||||||
|
|
||||||
|
/obj/effect/spider/spiderling/varied
|
||||||
|
grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/frost, /mob/living/simple_mob/animal/giant_spider/electric, /mob/living/simple_mob/animal/giant_spider/lurker,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/pepper, /mob/living/simple_mob/animal/giant_spider/thermic, /mob/living/simple_mob/animal/giant_spider/tunneler,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/webslinger, /mob/living/simple_mob/animal/giant_spider/phorogenic, /mob/living/simple_mob/animal/giant_spider/carrier,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/ion)
|
||||||
|
|
||||||
/obj/effect/spider/spiderling/New(var/location, var/atom/parent)
|
/obj/effect/spider/spiderling/New(var/location, var/atom/parent)
|
||||||
pixel_x = rand(6,-6)
|
pixel_x = rand(6,-6)
|
||||||
pixel_y = rand(6,-6)
|
pixel_y = rand(6,-6)
|
||||||
@@ -260,6 +275,7 @@
|
|||||||
if(amount_grown >= 100)
|
if(amount_grown >= 100)
|
||||||
var/spawn_type = pick(grow_as)
|
var/spawn_type = pick(grow_as)
|
||||||
var/mob/living/simple_mob/animal/giant_spider/GS = new spawn_type(src.loc, src)
|
var/mob/living/simple_mob/animal/giant_spider/GS = new spawn_type(src.loc, src)
|
||||||
|
GS.faction = faction
|
||||||
if(stunted)
|
if(stunted)
|
||||||
spawn(2)
|
spawn(2)
|
||||||
GS.make_spiderling()
|
GS.make_spiderling()
|
||||||
@@ -273,6 +289,15 @@
|
|||||||
/obj/effect/spider/spiderling/non_growing
|
/obj/effect/spider/spiderling/non_growing
|
||||||
amount_grown = -1
|
amount_grown = -1
|
||||||
|
|
||||||
|
/obj/effect/spider/spiderling/princess
|
||||||
|
name = "royal spiderling"
|
||||||
|
desc = "There's a special aura about this one."
|
||||||
|
grow_as = list(/mob/living/simple_mob/animal/giant_spider/nurse/queen)
|
||||||
|
|
||||||
|
/obj/effect/spider/spiderling/princess/New(var/location, var/atom/parent)
|
||||||
|
..()
|
||||||
|
amount_grown = 50
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/spiderling_remains
|
/obj/effect/decal/cleanable/spiderling_remains
|
||||||
name = "spiderling remains"
|
name = "spiderling remains"
|
||||||
desc = "Green squishy mess."
|
desc = "Green squishy mess."
|
||||||
|
|||||||
@@ -0,0 +1,189 @@
|
|||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother
|
||||||
|
name = "giant spider broodmother"
|
||||||
|
desc = "Absolutely gigantic, this creature is horror itself. This one seems to have weaponized childbirth!"
|
||||||
|
tt_desc = "X Atrax robustus gigantus maximus"
|
||||||
|
icon = 'icons/mob/64x64.dmi'
|
||||||
|
vis_height = 64
|
||||||
|
icon_state = "spider_queen"
|
||||||
|
icon_living = "spider_queen"
|
||||||
|
icon_dead = "spider_queen_dead"
|
||||||
|
|
||||||
|
maxHealth = 800
|
||||||
|
health = 800
|
||||||
|
|
||||||
|
melee_damage_lower = 25
|
||||||
|
melee_damage_upper = 40
|
||||||
|
attack_armor_pen = 15
|
||||||
|
|
||||||
|
pixel_x = -16
|
||||||
|
pixel_y = 0
|
||||||
|
default_pixel_x = -16
|
||||||
|
old_x = -16
|
||||||
|
old_y = 0
|
||||||
|
|
||||||
|
projectiletype = /obj/item/projectile/energy/spidertoxin
|
||||||
|
projectilesound = 'sound/weapons/pierce.ogg'
|
||||||
|
|
||||||
|
var/list/possible_brood_types = list(
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/frost/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/electric/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/hunter/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/lurker/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/nurse/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/pepper/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/thermic/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/tunneler/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/webslinger/broodling,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodling)
|
||||||
|
|
||||||
|
var/list/possible_death_brood_types = list(
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/frost,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/electric,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/hunter,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/lurker,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/pepper,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/thermic,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/tunneler,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/webslinger,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/phorogenic,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/carrier,
|
||||||
|
/mob/living/simple_mob/animal/giant_spider)
|
||||||
|
var/max_brood = 8
|
||||||
|
var/death_brood = 8
|
||||||
|
var/brood_per_spawn = 4
|
||||||
|
var/brood_per_launch = 2
|
||||||
|
special_attack_min_range = 0
|
||||||
|
special_attack_max_range = 10
|
||||||
|
special_attack_cooldown = 6 SECONDS
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/intentional/giant_spider_broodmother
|
||||||
|
poison_per_bite = 2
|
||||||
|
poison_type = "cyanide"
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/spidertoxin
|
||||||
|
name = "concentrated spidertoxin"
|
||||||
|
icon_state = "neurotoxin"
|
||||||
|
damage = 35
|
||||||
|
damage_type = BIOACID
|
||||||
|
agony = 15
|
||||||
|
check_armour = "bio"
|
||||||
|
armor_penetration = 40
|
||||||
|
|
||||||
|
combustion = FALSE
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother/death()
|
||||||
|
..()
|
||||||
|
|
||||||
|
new /obj/item/royal_spider_egg(src.loc)
|
||||||
|
|
||||||
|
var/count = 0
|
||||||
|
while(count < death_brood)
|
||||||
|
var/broodling_type = pick(possible_death_brood_types)
|
||||||
|
var/mob/living/simple_mob/animal/giant_spider/broodling = new broodling_type(src.loc)
|
||||||
|
broodling.faction = faction
|
||||||
|
step_away(broodling, src)
|
||||||
|
count++
|
||||||
|
|
||||||
|
visible_message(span("critical", "\The [src]'s birthing sack bursts!"))
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother/proc/spawn_brood(atom/A)
|
||||||
|
set waitfor = FALSE
|
||||||
|
|
||||||
|
var/count = 0
|
||||||
|
while(count < brood_per_spawn)
|
||||||
|
var/broodling_type = pick(possible_brood_types)
|
||||||
|
var/mob/living/simple_mob/animal/giant_spider/broodling = new broodling_type(src.loc)
|
||||||
|
broodling.faction = faction
|
||||||
|
step_away(broodling, src)
|
||||||
|
count++
|
||||||
|
|
||||||
|
visible_message(span("danger", "\The [src] releases brood from its birthing sack!"))
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother/proc/launch_brood(atom/A)
|
||||||
|
set waitfor = FALSE
|
||||||
|
|
||||||
|
var/count = 0
|
||||||
|
while(count < brood_per_launch)
|
||||||
|
var/broodling_type = pick(possible_brood_types)
|
||||||
|
var/mob/living/simple_mob/animal/giant_spider/broodling = new broodling_type(src.loc)
|
||||||
|
broodling.faction = faction
|
||||||
|
step_away(broodling, src)
|
||||||
|
broodling.throw_at(A, 10)
|
||||||
|
count++
|
||||||
|
|
||||||
|
visible_message(span("danger", "\The [src] launches brood from the distance!"))
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother/proc/can_spawn_brood()
|
||||||
|
var/brood_amount = 0
|
||||||
|
for(var/mob/living/simple_mob/mob in view(7, src))
|
||||||
|
if(mob.type in possible_brood_types)
|
||||||
|
brood_amount++
|
||||||
|
if(brood_amount >= max_brood)
|
||||||
|
return FALSE
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother/should_special_attack(atom/A)
|
||||||
|
if(!can_spawn_brood())
|
||||||
|
return FALSE
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodmother/do_special_attack(atom/A)
|
||||||
|
. = TRUE
|
||||||
|
switch(a_intent)
|
||||||
|
if(I_DISARM)
|
||||||
|
spawn_brood(A)
|
||||||
|
if(I_HURT)
|
||||||
|
launch_brood(A)
|
||||||
|
|
||||||
|
/datum/ai_holder/simple_mob/intentional/giant_spider_broodmother
|
||||||
|
wander = TRUE
|
||||||
|
intelligence_level = AI_SMART
|
||||||
|
pointblank = FALSE
|
||||||
|
firing_lanes = TRUE
|
||||||
|
vision_range = 8
|
||||||
|
|
||||||
|
/datum/ai_holder/simple_mob/intentional/giant_spider_broodmother/pre_special_attack(atom/A)
|
||||||
|
if(isliving(A))
|
||||||
|
var/mob/living/target = A
|
||||||
|
|
||||||
|
var/tally = 0
|
||||||
|
var/list/potential_targets = list_targets() // Returns list of mobs and certain objects like mechs and turrets.
|
||||||
|
for(var/atom/movable/AM in potential_targets)
|
||||||
|
if(get_dist(holder, AM) > 4)
|
||||||
|
continue
|
||||||
|
if(!can_attack(AM))
|
||||||
|
continue
|
||||||
|
tally++
|
||||||
|
if(tally > 1)
|
||||||
|
holder.a_intent = I_DISARM
|
||||||
|
else if(get_dist(holder, target) > 4)
|
||||||
|
holder.a_intent = I_HURT
|
||||||
|
else
|
||||||
|
holder.a_intent = I_DISARM
|
||||||
|
|
||||||
|
else
|
||||||
|
holder.a_intent = I_DISARM
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/royal_spider_egg
|
||||||
|
name = "royal spider egg"
|
||||||
|
desc = "This one is yet to be imprinted!"
|
||||||
|
icon = 'icons/obj/egg_new_vr.dmi' //VOREStation Edit
|
||||||
|
icon_state = "egg_slimeglob"
|
||||||
|
|
||||||
|
origin_tech = list(TECH_BIO = 10)
|
||||||
|
|
||||||
|
/obj/item/royal_spider_egg/attack_self(mob/user as mob)
|
||||||
|
var/response = tgui_alert(user, "Are you sure you want to release the royal spiderling right now? It appears ready to imprint the moment its born.", "Royal Spider Egg", list("Yes", "No"))
|
||||||
|
|
||||||
|
if(response == "Yes")
|
||||||
|
|
||||||
|
var/turf/drop_loc = user.loc
|
||||||
|
if(istype(drop_loc))
|
||||||
|
var/obj/effect/spider/spiderling/princess/royalty = new(drop_loc)
|
||||||
|
royalty.faction = user.faction
|
||||||
|
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
else
|
||||||
|
to_chat(user, "You need more space to release the egg!")
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
/mob/living/simple_mob/animal/giant_spider/frost/broodling
|
||||||
|
maxHealth = 40
|
||||||
|
health = 40
|
||||||
|
|
||||||
|
melee_damage_lower = 10
|
||||||
|
melee_damage_upper = 15
|
||||||
|
|
||||||
|
movement_cooldown = 4
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/frost/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/frost/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/electric/broodling
|
||||||
|
maxHealth = 30
|
||||||
|
health = 30
|
||||||
|
|
||||||
|
taser_kill = TRUE
|
||||||
|
base_attack_cooldown = 20
|
||||||
|
|
||||||
|
movement_cooldown = 5
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/electric/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/electric/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/hunter/broodling
|
||||||
|
maxHealth = 40
|
||||||
|
health = 40
|
||||||
|
|
||||||
|
movement_cooldown = 3
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/hunter/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/hunter/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/lurker/broodling
|
||||||
|
maxHealth = 40
|
||||||
|
health = 40
|
||||||
|
|
||||||
|
movement_cooldown = 3
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/lurker/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/lurker/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/nurse/broodling
|
||||||
|
maxHealth = 60
|
||||||
|
health = 60
|
||||||
|
|
||||||
|
movement_cooldown = 8
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/nurse/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/nurse/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/pepper/broodling
|
||||||
|
maxHealth = 40
|
||||||
|
health = 40
|
||||||
|
|
||||||
|
movement_cooldown = 4
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/pepper/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/pepper/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/thermic/broodling
|
||||||
|
maxHealth = 40
|
||||||
|
health = 40
|
||||||
|
|
||||||
|
melee_damage_lower = 10
|
||||||
|
melee_damage_upper = 15
|
||||||
|
|
||||||
|
movement_cooldown = 4
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/thermic/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/thermic/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/tunneler/broodling
|
||||||
|
maxHealth = 40
|
||||||
|
health = 40
|
||||||
|
|
||||||
|
movement_cooldown = 4
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/tunneler/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/tunneler/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/webslinger/broodling
|
||||||
|
maxHealth = 30
|
||||||
|
health = 30
|
||||||
|
|
||||||
|
base_attack_cooldown = 20
|
||||||
|
|
||||||
|
movement_cooldown = 5
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/webslinger/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/webslinger/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodling
|
||||||
|
maxHealth = 60
|
||||||
|
health = 60
|
||||||
|
|
||||||
|
melee_damage_lower = 10
|
||||||
|
melee_damage_upper = 20
|
||||||
|
|
||||||
|
movement_cooldown = 8
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodling/Initialize()
|
||||||
|
. = ..()
|
||||||
|
adjust_scale(0.75)
|
||||||
|
addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/giant_spider/broodling/death()
|
||||||
|
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
|
||||||
|
qdel(src)
|
||||||
@@ -37,7 +37,6 @@
|
|||||||
var/spiderling_count = 0
|
var/spiderling_count = 0
|
||||||
var/spiderling_type = /obj/effect/spider/spiderling
|
var/spiderling_type = /obj/effect/spider/spiderling
|
||||||
var/swarmling_type = /mob/living/simple_mob/animal/giant_spider/hunter
|
var/swarmling_type = /mob/living/simple_mob/animal/giant_spider/hunter
|
||||||
var/swarmling_faction = "spiders"
|
|
||||||
var/swarmling_prob = 10 // Odds that a spiderling will be a swarmling instead.
|
var/swarmling_prob = 10 // Odds that a spiderling will be a swarmling instead.
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/giant_spider/carrier/Initialize()
|
/mob/living/simple_mob/animal/giant_spider/carrier/Initialize()
|
||||||
@@ -60,7 +59,7 @@
|
|||||||
swarmling.health = swarm_health
|
swarmling.health = swarm_health
|
||||||
swarmling.melee_damage_lower = swarm_dam_lower
|
swarmling.melee_damage_lower = swarm_dam_lower
|
||||||
swarmling.melee_damage_upper = swarm_dam_upper
|
swarmling.melee_damage_upper = swarm_dam_upper
|
||||||
swarmling.faction = swarmling_faction
|
swarmling.faction = faction
|
||||||
swarmling.adjust_scale(0.75)
|
swarmling.adjust_scale(0.75)
|
||||||
new_spiders += swarmling
|
new_spiders += swarmling
|
||||||
else if(src)
|
else if(src)
|
||||||
|
|||||||
@@ -51,6 +51,8 @@
|
|||||||
default_pixel_x = -16
|
default_pixel_x = -16
|
||||||
old_x = -16
|
old_x = -16
|
||||||
old_y = 0
|
old_y = 0
|
||||||
|
|
||||||
|
egg_type = /obj/effect/spider/eggcluster/royal
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/giant_spider/webslinger/event // YW CHANGE
|
/mob/living/simple_mob/animal/giant_spider/webslinger/event // YW CHANGE
|
||||||
ai_holder_type = /datum/ai_holder/simple_mob/event
|
ai_holder_type = /datum/ai_holder/simple_mob/event
|
||||||
|
|||||||
@@ -65,8 +65,9 @@
|
|||||||
for(var/obj/effect/spider/eggcluster/E in O.implants)
|
for(var/obj/effect/spider/eggcluster/E in O.implants)
|
||||||
eggcount++
|
eggcount++
|
||||||
if(!eggcount)
|
if(!eggcount)
|
||||||
var/eggs = new egg_type(O, src)
|
var/obj/effect/spider/eggcluster/eggs = new egg_type(O, src)
|
||||||
O.implants += eggs
|
O.implants += eggs
|
||||||
|
eggs.faction = faction
|
||||||
to_chat(H, span("critical", "\The [src] injects something into your [O.name]!") ) // Oh god its laying eggs in me!
|
to_chat(H, span("critical", "\The [src] injects something into your [O.name]!") ) // Oh god its laying eggs in me!
|
||||||
|
|
||||||
// Webs target in a web if able to.
|
// Webs target in a web if able to.
|
||||||
@@ -205,7 +206,8 @@
|
|||||||
return FALSE // Spamclick protection.
|
return FALSE // Spamclick protection.
|
||||||
|
|
||||||
set_AI_busy(FALSE)
|
set_AI_busy(FALSE)
|
||||||
new egg_type(T)
|
var/obj/effect/spider/eggcluster/eggs = new egg_type(T)
|
||||||
|
eggs.faction = faction
|
||||||
fed--
|
fed--
|
||||||
laying_eggs = FALSE
|
laying_eggs = FALSE
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|||||||
@@ -3100,6 +3100,8 @@
|
|||||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\broodmother.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\broodmother_spawn.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\carrier.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\carrier.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\electric.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\electric.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user