diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index 361c4d41b81..76ab9ccf841 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -115,6 +115,7 @@ #define span_smallnoticeital(str) ("" + str + "") #define span_spiderbroodmother(str) ("" + str + "") #define span_spiderscout(str) ("" + str + "") +#define span_spiderbreacher(str) ("" + str + "") #define span_suicide(str) ("" + str + "") #define span_suppradio(str) ("" + str + "") #define span_syndradio(str) ("" + str + "") diff --git a/code/game/objects/effects/spiderwebs.dm b/code/game/objects/effects/spiderwebs.dm index 9b44d3507db..9a3d6c9c8e3 100644 --- a/code/game/objects/effects/spiderwebs.dm +++ b/code/game/objects/effects/spiderwebs.dm @@ -194,6 +194,22 @@ . = ..() AddComponent(/datum/component/caltrop, min_damage = 20, max_damage = 30, flags = CALTROP_NOSTUN | CALTROP_BYPASS_SHOES) +/obj/structure/spider/reflector + name = "Reflective silk screen" + icon = 'icons/effects/effects.dmi' + desc = "Made up of an extremly reflective silk material looking at it hurts." + icon_state = "reflector" + max_integrity = 30 + density = TRUE + opacity = TRUE + anchored = TRUE + flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD + receive_ricochet_chance_mod = INFINITY + +/obj/structure/spider/reflector/Initialize(mapload) + . = ..() + air_update_turf(TRUE, TRUE) + /obj/structure/spider/effigy name = "web effigy" icon = 'icons/effects/effects.dmi' diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm index 8cb7d8398bf..5db32316753 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm @@ -37,11 +37,12 @@ maxHealth = 125 health = 125 obj_damage = 45 + melee_damage_lower = 25 melee_damage_upper = 30 speed = 5 player_speed_modifier = -3.1 - menu_description = "Slow spider variant specializing in stalking and ambushing prey, above avarage health and damage with a strong grip." + menu_description = "Slow spider, with a strong disarming pull and above avarage health and damage." /mob/living/basic/spider/giant/ambush/Initialize(mapload) . = ..() @@ -72,7 +73,7 @@ obj_damage = 45 speed = 5 player_speed_modifier = -4 - menu_description = "Tanky and strong for the defense of the nest and other spiders." + menu_description = "Tanky and strong able to shed a carcass for protection." /mob/living/basic/spider/giant/guard/Initialize(mapload) . = ..() @@ -100,7 +101,7 @@ poison_per_bite = 5 speed = 3 player_speed_modifier = -3.1 - menu_description = "Fast spider variant specializing in catching running prey and toxin injection, but has less health and damage." + menu_description = "Fast spider with toxin injection, but has less health and damage." /mob/living/basic/spider/giant/hunter/Initialize(mapload) . = ..() @@ -129,7 +130,7 @@ speed = 2.8 player_speed_modifier = -3.1 sight = SEE_SELF|SEE_MOBS - menu_description = "Fast spider variant specializing in scouting and alerting of prey, with the ability to travel in vents." + menu_description = "Fast spider able to see enemies through walls, send messages to the nest and the ability to travel in vents." /mob/living/basic/spider/giant/scout/Initialize(mapload) . = ..() @@ -162,7 +163,7 @@ player_speed_modifier = -3.1 web_speed = 0.25 web_type = /datum/action/cooldown/mob_cooldown/lay_web/sealer - menu_description = "Support spider variant specializing in healing their brethren and placing webbings very swiftly, but has very low amount of health and deals low damage." + menu_description = "Avarage speed spider able to heal other spiders and itself together with a fast web laying capability, has low damage and health." ///The health HUD applied to the mob. var/health_hud = DATA_HUD_MEDICAL_ADVANCED @@ -209,7 +210,7 @@ speed = 4 player_speed_modifier = -3.1 web_type = /datum/action/cooldown/mob_cooldown/lay_web/sealer - menu_description = "Support spider variant specializing in contruction to protect their brethren, but has very low amount of health and deals low damage." + menu_description = "Avarage speed spider with self healing abilities and multiple web types to reinforce the nest with little to no damage and low health." /mob/living/basic/spider/giant/tangle/Initialize(mapload) . = ..() @@ -246,6 +247,97 @@ return FALSE return TRUE +/** + * ### Spider Tank + * A subtype of the giant spider, specialized in taking damage. + * This spider is only slightly slower than a human. + */ +/mob/living/basic/spider/giant/tank + name = "tank spider" + desc = "Furry and Purple with a white top, it makes you shudder to look at it. This one has bright yellow eyes." + icon_state = "tank" + icon_living = "tank" + icon_dead = "tank_dead" + maxHealth = 500 + health = 500 + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 1, OXY = 1) + melee_damage_lower = 5 + melee_damage_upper = 5 + obj_damage = 15 + speed = 5 + player_speed_modifier = -4 + menu_description = "Extremly tanky with very poor offence. Able to self heal and lay reflective silk screens." + +/mob/living/basic/spider/giant/tank/Initialize(mapload) + . = ..() + var/datum/action/cooldown/mob_cooldown/lay_web/web_reflector/reflector_web = new(src) + reflector_web.Grant(src) + + var/datum/action/cooldown/mob_cooldown/lay_web/web_passage/passage_web = new(src) + passage_web.Grant(src) + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/below_average_web) + + AddComponent(/datum/component/healing_touch,\ + heal_brute = 50,\ + heal_burn = 50,\ + heal_time = 5 SECONDS,\ + self_targetting = HEALING_TOUCH_SELF_ONLY,\ + interaction_key = DOAFTER_SOURCE_SPIDER,\ + valid_targets_typecache = typecacheof(list(/mob/living/basic/spider/growing/young/tank, /mob/living/basic/spider/giant/tank)),\ + extra_checks = CALLBACK(src, PROC_REF(can_mend)),\ + action_text = "%SOURCE% begins mending themselves...",\ + complete_text = "%SOURCE%'s wounds mend together.",\ + ) + +/// Prevent you from healing when on fire +/mob/living/basic/spider/giant/tank/proc/can_mend(mob/living/source, mob/living/target) + if (on_fire) + balloon_alert(src, "on fire!") + return FALSE + return TRUE + +/** + * ### Spider Breacher + * A subtype of the giant spider, specialized in breaching and invasion. + * This spider is only slightly slower than a human. + */ +/mob/living/basic/spider/giant/breacher + name = "breacher spider" + desc = "Furry and light brown with dark brown and red highlights, it makes you shudder to look at it. This one has bright red eyes." + icon_state = "breacher" + icon_living = "breacher" + icon_dead = "breacher_dead" + maxHealth = 120 + health = 120 + melee_damage_lower = 5 + melee_damage_upper = 10 + unsuitable_atmos_damage = 0 + minimum_survivable_temperature = 0 + maximum_survivable_temperature = 700 + unsuitable_cold_damage = 0 + wound_bonus = 25 + bare_wound_bonus = 50 + sharpness = SHARP_EDGED + obj_damage = 60 + web_speed = 0.25 + limb_destroyer = 50 + speed = 5 + player_speed_modifier = -4 + sight = SEE_TURFS + menu_description = "Atmospherically resistant with the ability to destroy walls and limbs, and to send warnings to the nest." + +/mob/living/basic/spider/giant/breacher/Initialize(mapload) + . = ..() + var/datum/action/cooldown/mob_cooldown/lay_web/solid_web/web_solid = new(src) + web_solid.Grant(src) + + var/datum/action/cooldown/mob_cooldown/command_spiders/warning_spiders/spiders_warning = new(src) + spiders_warning.Grant(src) + + AddElement(/datum/element/tear_wall) + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/below_average_web) + /** * ### Tarantula * @@ -259,8 +351,8 @@ icon_state = "tarantula" icon_living = "tarantula" icon_dead = "tarantula_dead" - maxHealth = 360 // woah nelly - health = 360 + maxHealth = 400 // woah nelly + health = 400 melee_damage_lower = 35 melee_damage_upper = 40 obj_damage = 100 @@ -277,16 +369,9 @@ /mob/living/basic/spider/giant/tarantula/Initialize(mapload) . = ..() - var/datum/action/cooldown/mob_cooldown/lay_web/solid_web/web_solid = new(src) - web_solid.Grant(src) - - var/datum/action/cooldown/mob_cooldown/lay_web/web_passage/passage_web = new(src) - passage_web.Grant(src) - charge = new /datum/action/cooldown/mob_cooldown/charge/basic_charge() charge.Grant(src) - AddElement(/datum/element/tear_wall) AddElement(/datum/element/web_walker, /datum/movespeed_modifier/slow_web) /mob/living/basic/spider/giant/tarantula/Destroy() @@ -373,11 +458,14 @@ var/datum/action/cooldown/mob_cooldown/wrap/wrapping = new(src) wrapping.Grant(src) - var/datum/action/cooldown/mob_cooldown/lay_eggs/make_eggs = new(src) - make_eggs.Grant(src) + var/datum/action/cooldown/mob_cooldown/lay_eggs/make_eggs_tier1 = new(src) + make_eggs_tier1.Grant(src) + + var/datum/action/cooldown/mob_cooldown/lay_eggs/abnormal/make_eggs_tier2 = new(src) + make_eggs_tier2.Grant(src) - var/datum/action/cooldown/mob_cooldown/lay_eggs/enriched/make_better_eggs = new(src) - make_better_eggs.Grant(src) + var/datum/action/cooldown/mob_cooldown/lay_eggs/enriched/make_eggs_tier3 = new(src) + make_eggs_tier3.Grant(src) var/datum/action/cooldown/mob_cooldown/set_spider_directive/give_orders = new(src) give_orders.Grant(src) diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider.dm b/code/modules/mob/living/basic/space_fauna/spider/spider.dm index 53b48129e2e..9ce7f50d017 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider.dm @@ -54,6 +54,7 @@ AddElement(/datum/element/nerfed_pulling, GLOB.typecache_general_bad_things_to_easily_move) AddElement(/datum/element/prevent_attacking_of_types, GLOB.typecache_general_bad_hostile_attack_targets, "this tastes awful!") AddElement(/datum/element/cliff_walking) + AddComponent(/datum/component/health_scaling_effects, min_health_slowdown = 1.5) if(poison_per_bite) AddElement(/datum/element/venomous, poison_type, poison_per_bite) diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/hivemind.dm b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/hivemind.dm index bbeb2b28bb5..790879b0de2 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/hivemind.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/hivemind.dm @@ -84,3 +84,16 @@ /datum/action/cooldown/mob_cooldown/command_spiders/communication_spiders/format_message(mob/living/user, message) return span_spiderscout("Report from [user]: [message]") + +/** + * Sends a smaller message to all currently living spiders. + */ +/datum/action/cooldown/mob_cooldown/command_spiders/warning_spiders + name = "Warning" + desc = "Send a warning to all living spiders." + button_icon = 'icons/mob/actions/actions_animal.dmi' + button_icon_state = "warning" + +/datum/action/cooldown/mob_cooldown/command_spiders/warning_spiders/format_message(mob/living/user, message) + return span_spiderbreacher("Warning from [user]: [message]") + diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/lay_eggs.dm b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/lay_eggs.dm index 01477cd8435..5979c98448d 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/lay_eggs.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/lay_eggs.dm @@ -5,8 +5,8 @@ button_icon_state = "lay_eggs" background_icon_state = "bg_alien" overlay_icon_state = "bg_alien_border" - cooldown_time = 0 - melee_cooldown_time = 0 + cooldown_time = 20 SECONDS + melee_cooldown_time = 5 SECONDS shared_cooldown = NONE click_to_activate = FALSE ///How long it takes for a broodmother to lay eggs. @@ -60,10 +60,18 @@ if (spider_directive) new_eggs.directive = spider_directive.current_directive +/datum/action/cooldown/mob_cooldown/lay_eggs/abnormal + name = "Lay Abnormal Eggs" + desc = "Lay a cluster of eggs, which will soon grow into a uncommon spider." + button_icon_state = "lay_abnormal_eggs" + cooldown_time = 180 SECONDS + egg_type = /obj/effect/mob_spawn/ghost_role/spider/abnormal + /datum/action/cooldown/mob_cooldown/lay_eggs/enriched name = "Lay Enriched Eggs" - desc = "Lay a cluster of eggs, which will soon grow into a greater spider. Requires you drain a human per cluster of these eggs." + desc = "Lay a cluster of eggs, which will soon grow into a rare spider. Requires you drain a human per cluster of these eggs." button_icon_state = "lay_enriched_eggs" + cooldown_time = 60 SECONDS egg_type = /obj/effect/mob_spawn/ghost_role/spider/enriched /// How many charges we have to make eggs var/charges = 0 diff --git a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm index d4f587c9386..fa44cb35b2d 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spider_abilities/web.dm @@ -117,7 +117,6 @@ /datum/action/cooldown/mob_cooldown/lay_web/web_passage/plant_web(turf/target_turf, obj/structure/spider/stickyweb/existing_web) new /obj/structure/spider/passage(target_turf) - /datum/action/cooldown/mob_cooldown/lay_web/sticky_web name = "Spin Sticky Web" desc = "Spin a sticky web to trap intruders." @@ -171,3 +170,16 @@ /datum/action/cooldown/mob_cooldown/web_effigy/Activate() new /obj/structure/spider/effigy(get_turf(owner)) return ..() + +/datum/action/cooldown/mob_cooldown/lay_web/web_reflector + name = "Spin reflective silk screen" + desc = "Spin a web to reflect missiles from the nest." + button_icon_state = "lay_web_reflector" + cooldown_time = 30 SECONDS + webbing_time = 4 SECONDS + +/datum/action/cooldown/mob_cooldown/lay_web/web_reflector/obstructed_by_other_web() + return !!(locate(/obj/structure/spider/reflector) in get_turf(owner)) + +/datum/action/cooldown/mob_cooldown/lay_web/web_reflector/plant_web(turf/target_turf, obj/structure/spider/stickyweb/existing_web) + new /obj/structure/spider/reflector(target_turf) diff --git a/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling.dm b/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling.dm index c949b438683..f36b1bc46ba 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling.dm @@ -39,6 +39,7 @@ AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW, volume = 0.2) // they're small but you can hear 'em AddElement(/datum/element/web_walker, /datum/movespeed_modifier/spiderling_web) AddElement(/datum/element/ai_retaliate) + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/fast_web) // keep in mind we have infinite range (the entire pipenet is our playground, it's just a matter of random choice as to where we end up) so lower and upper both have their gives and takes. // but, also remember the more time we aren't in a vent, the more susceptible we are to dying to anything and everything. diff --git a/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling_subtypes.dm b/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling_subtypes.dm index 5d42ca5cb61..06d086d8967 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling_subtypes.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/spiderlings/spiderling_subtypes.dm @@ -1,5 +1,4 @@ -// This whole file is just a container for the spiderling subtypes that actually differentiate into different young spiders. None of them are particularly special as of now. - +/// This whole file is just a container for the spiderling subtypes that actually differentiate into different young spiders. None of them are particularly special as of now. /// Will differentiate into the base young spider (known colloquially as the "guard" spider). /mob/living/basic/spider/growing/spiderling/guard grow_as = /mob/living/basic/spider/growing/young/guard @@ -52,6 +51,24 @@ icon_state = "tangle_spiderling" icon_dead = "tangle_spiderling_dead" +/// Will differentiate into the "tank" young spider. +/mob/living/basic/spider/growing/spiderling/tank + grow_as = /mob/living/basic/spider/growing/young/tank + name = "tank spiderling" + desc = "Furry and purple, it looks defenseless. This one has dim yellow eyes." + icon = 'icons/mob/simple/arachnoid.dmi' + icon_state = "tank_spiderling" + icon_dead = "tank_spiderling_dead" + +/// Will differentiate into the "breacher" young spider. +/mob/living/basic/spider/growing/spiderling/breacher + grow_as = /mob/living/basic/spider/growing/young/breacher + name = "breacher spiderling" + desc = "Furry and baige, it looks defenseless. This one has dim red eyes." + icon = 'icons/mob/simple/arachnoid.dmi' + icon_state = "breacher_spiderling" + icon_dead = "breacher_spiderling_dead" + /// Will differentiate into the "midwife" young spider. /mob/living/basic/spider/growing/spiderling/midwife grow_as = /mob/living/basic/spider/growing/young/midwife diff --git a/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider.dm b/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider.dm index 50ec85e342c..bdaf7d03faa 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider.dm @@ -47,3 +47,6 @@ /datum/ai_planning_subtree/find_unwebbed_turf, /datum/ai_planning_subtree/spin_web, ) + +/mob/living/basic/spider/growing/young/start_pulling(atom/movable/pulled_atom, state, force = move_force, supress_message = FALSE) // we're TOO FUCKING WEAK + return diff --git a/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider_subtypes.dm b/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider_subtypes.dm index f5d128e41b7..de44bc74180 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider_subtypes.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/young_spider/young_spider_subtypes.dm @@ -11,6 +11,11 @@ melee_damage_upper = 15 speed = 0.7 +/mob/living/basic/spider/growing/young/guard/Initialize(mapload) + . = ..() + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/average_web) + /// Will differentiate into the "ambush" giant spider. /mob/living/basic/spider/growing/young/ambush grow_as = /mob/living/basic/spider/giant/ambush @@ -27,6 +32,8 @@ /mob/living/basic/spider/growing/young/ambush/Initialize(mapload) . = ..() + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/slow_web) + var/datum/action/cooldown/mob_cooldown/sneak/spider/sneak_web = new(src) sneak_web.Grant(src) @@ -66,6 +73,11 @@ speed = 0.5 poison_per_bite = 2 +/mob/living/basic/spider/growing/young/Initialize(mapload) + . = ..() + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/fast_web) + /// Will differentiate into the "nurse" giant spider. /mob/living/basic/spider/growing/young/nurse grow_as = /mob/living/basic/spider/giant/nurse @@ -98,6 +110,8 @@ complete_text = "%SOURCE% wraps the wounds of %TARGET%.",\ ) + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/average_web) + /// Will differentiate into the "tangle" giant spider. /mob/living/basic/spider/growing/young/tangle grow_as = /mob/living/basic/spider/giant/tangle @@ -130,6 +144,8 @@ complete_text = "%SOURCE%'s wounds mend together.",\ ) + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/average_web) + /// Prevent you from healing other tangle spiders, or healing when on fire /mob/living/basic/spider/growing/young/tangle/proc/can_mend(mob/living/source, mob/living/target) if (on_fire) @@ -137,6 +153,64 @@ return FALSE return TRUE + +/// Will differentiate into the "tank" giant spider. +/mob/living/basic/spider/growing/young/tank + grow_as = /mob/living/basic/spider/giant/tank + name = "young tank spider" + desc = "Furry and purple, it looks defenseless. This one has dim yellow eyes." + icon = 'icons/mob/simple/arachnoid.dmi' + icon_state = "young_tank" + icon_dead = "young_tank_dead" + maxHealth = 50 + health = 50 + damage_coeff = list(BRUTE = 0.5, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0.5, OXY = 1) + melee_damage_lower = 10 + melee_damage_upper = 15 + speed = 1 + +/mob/living/basic/spider/growing/young/tank/Initialize(mapload) + . = ..() + AddComponent(/datum/component/healing_touch,\ + heal_brute = 5,\ + heal_burn = 5,\ + heal_time = 2 SECONDS,\ + self_targetting = HEALING_TOUCH_SELF_ONLY,\ + interaction_key = DOAFTER_SOURCE_SPIDER,\ + valid_targets_typecache = typecacheof(list(/mob/living/basic/spider/growing/young/tank, /mob/living/basic/spider/giant/tank)),\ + extra_checks = CALLBACK(src, PROC_REF(can_mend)),\ + action_text = "%SOURCE% begins mending themselves...",\ + complete_text = "%SOURCE%'s wounds mend together.",\ + ) + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/below_average_web) + +/// Prevent you from healing when on fire +/mob/living/basic/spider/growing/young/tank/proc/can_mend(mob/living/source, mob/living/target) + if (on_fire) + balloon_alert(src, "on fire!") + return FALSE + return TRUE + +/// Will differentiate into the "breacher" giant spider. +/mob/living/basic/spider/growing/young/breacher + grow_as = /mob/living/basic/spider/giant/breacher + name = "young breacher spider" + desc = "Furry and baige, it looks defenseless. This one has dim red eyes." + icon = 'icons/mob/simple/arachnoid.dmi' + icon_state = "young_breacher" + icon_dead = "young_breacher_dead" + maxHealth = 60 + health = 60 + melee_damage_lower = 5 + melee_damage_upper = 10 + speed = 1 + +/mob/living/basic/spider/growing/young/breacher/Initialize(mapload) + . = ..() + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/below_average_web) + /// Will differentiate into the "midwife" giant spider. /mob/living/basic/spider/growing/young/midwife grow_as = /mob/living/basic/spider/giant/midwife @@ -153,6 +227,11 @@ web_speed = 0.5 web_type = /datum/action/cooldown/mob_cooldown/lay_web/sealer +/mob/living/basic/spider/growing/young/midwife/Initialize(mapload) + . = ..() + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/average_web) + /// Will differentiate into the "viper" giant spider. /mob/living/basic/spider/growing/young/viper grow_as = /mob/living/basic/spider/giant/viper @@ -183,3 +262,8 @@ melee_damage_upper = 25 speed = 1 obj_damage = 40 + +/mob/living/basic/spider/growing/young/tarantula/Initialize(mapload) + . = ..() + + AddElement(/datum/element/web_walker, /datum/movespeed_modifier/slow_web) diff --git a/code/modules/mob_spawn/ghost_roles/spider_roles.dm b/code/modules/mob_spawn/ghost_roles/spider_roles.dm index fb3d470f5aa..e6197df2d71 100644 --- a/code/modules/mob_spawn/ghost_roles/spider_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/spider_roles.dm @@ -36,6 +36,10 @@ if(100 to INFINITY) . += span_info("These eggs are plump, teeming with life. Any moment now...") +/obj/structure/spider/eggcluster/abnormal + name = "abnormal egg cluster" + color = rgb(0, 148, 211) + /obj/structure/spider/eggcluster/enriched name = "enriched egg cluster" color = rgb(148, 0, 211) @@ -134,6 +138,16 @@ var/datum/antagonist/spider/spider_antag = new granted_datum(directive) spawned_mob.mind.add_antag_datum(spider_antag) +/obj/effect/mob_spawn/ghost_role/spider/abnormal + name = "abnormal egg cluster" + color = rgb(0, 148, 211) + cluster_type = /obj/structure/spider/eggcluster/abnormal + potentialspawns = list( + /mob/living/basic/spider/growing/spiderling/tank, + /mob/living/basic/spider/growing/spiderling/breacher, + ) + flash_window = TRUE + /obj/effect/mob_spawn/ghost_role/spider/enriched name = "enriched egg cluster" color = rgb(148, 0, 211) @@ -168,7 +182,7 @@ directive = "Ensure the survival of the spider species and overtake whatever structure you find yourself in." cluster_type = /obj/structure/spider/eggcluster/midwife potentialspawns = list( - /mob/living/basic/spider/giant/midwife, // We don't want the event to end instantly because of a 2 hp spiderling dying + /mob/living/basic/spider/growing/spiderling/midwife, // We don't want the event to end instantly because broodmothers got a bad spawn ) flash_window = TRUE diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index e5f29323223..49358223e35 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -109,6 +109,9 @@ /datum/movespeed_modifier/average_web multiplicative_slowdown = 1.2 +/datum/movespeed_modifier/below_average_web + multiplicative_slowdown = 2.5 + /datum/movespeed_modifier/slow_web multiplicative_slowdown = 5 diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 1859a451270..9828e307431 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/actions/actions_animal.dmi b/icons/mob/actions/actions_animal.dmi index f3f9a667f22..64b1c700f41 100644 Binary files a/icons/mob/actions/actions_animal.dmi and b/icons/mob/actions/actions_animal.dmi differ diff --git a/icons/mob/simple/arachnoid.dmi b/icons/mob/simple/arachnoid.dmi index fca53195d4c..d17297f2ccf 100644 Binary files a/icons/mob/simple/arachnoid.dmi and b/icons/mob/simple/arachnoid.dmi differ diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index 7e0a5830fdc..73e997f0478 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -705,8 +705,14 @@ em { font-size: 185%; } +.spiderbreacher { + color: #e8b670; + font-weight: bold; + font-size: 140%; +} + .spiderscout { - color: #231d99; + color: #231d98; font-weight: bold; font-size: 120%; } diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index 6ee5c6c4ce7..2e7e9c5af0a 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -737,8 +737,14 @@ h2.alert { font-size: 185%; } +.spiderbreacher { + color: #804b02; + font-weight: bold; + font-size: 140%; +} + .spiderscout { - color: #1b10cd; + color: #0c0674; font-weight: bold; font-size: 120%; }