mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
[MIRROR] Blob: Explosive Lattice now actually works, reactive spines retaliation applies reagent, description consistency (#3458)
* Blob: Explosive Lattice now actually works, reactive spines retaliation applies reagent, description consistency (#56884) Co-authored-by: Ranged <nickvanderkroon@ gmail.com> Co-authored-by: Rohesie <rohesie@ gmail.com> * Blob: Explosive Lattice now actually works, reactive spines retaliation applies reagent, description consistency Co-authored-by: NotRanged <rangedvdk@gmail.com> Co-authored-by: Ranged <nickvanderkroon@ gmail.com> Co-authored-by: Rohesie <rohesie@ gmail.com>
This commit is contained in:
co-authored by
Ranged
Rohesie
NotRanged
parent
0d29bf3c62
commit
eeaa35a8aa
@@ -2,9 +2,9 @@
|
||||
//sets you on fire, does burn damage, explodes into flame when burnt, weak to water
|
||||
/datum/blobstrain/reagent/blazing_oil
|
||||
name = "Blazing Oil"
|
||||
description = "will do medium burn damage and set targets on fire."
|
||||
description = "will do medium-high burn damage ignoring armor, and set targets on fire."
|
||||
effectdesc = "will also release bursts of flame when burnt, but takes damage from water."
|
||||
analyzerdescdamage = "Does medium burn damage and sets targets on fire."
|
||||
analyzerdescdamage = "Does medium-high burn damage and sets targets on fire."
|
||||
analyzerdesceffect = "Releases fire when burnt, but takes damage from water and other extinguishing liquids."
|
||||
color = "#B68D00"
|
||||
complementary_color = "#BE5532"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//does brute, burn, and toxin damage, and cools targets down
|
||||
/datum/blobstrain/reagent/cryogenic_poison
|
||||
name = "Cryogenic Poison"
|
||||
description = "will inject targets with a freezing poison that does high damage over time."
|
||||
description = "will inject targets with a freezing poison, applying little impact damage but dealing high damage over time."
|
||||
analyzerdescdamage = "Injects targets with a freezing poison that will gradually solidify the target's internal organs."
|
||||
color = "#8BA6E9"
|
||||
complementary_color = "#7D6EB4"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
// Accumulates junk liberally
|
||||
/datum/blobstrain/debris_devourer
|
||||
name = "Debris Devourer"
|
||||
description = "will launch accumulated debris into targets."
|
||||
analyzerdescdamage = "Does medium brute damage and may grab onto melee weapons."
|
||||
description = "will launch accumulated debris into targets. Does very low brute damage without debris-launching."
|
||||
analyzerdescdamage = "Does very low brute damage and may grab onto melee weapons."
|
||||
analyzerdesceffect = "Devours loose items left on the station, and releases them when attacking or attacked."
|
||||
color = "#8B1000"
|
||||
complementary_color = "#00558B"
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//kills unconscious targets and turns them into blob zombies, produces fragile spores when killed. Spore produced by factories are sentient.
|
||||
/datum/blobstrain/reagent/distributed_neurons
|
||||
name = "Distributed Neurons"
|
||||
description = "will do very low toxin damage and turns unconscious targets into blob zombies."
|
||||
description = "will do medium-low toxin damage and turns unconscious targets into blob zombies."
|
||||
effectdesc = "will also produce fragile spores when killed. Spores produced by factories are sentient."
|
||||
shortdesc = "will do very low toxin damage and will kill any unconcious targets when attacked. Spores produced by factories are sentient."
|
||||
analyzerdescdamage = "Does very low toxin damage and kills unconscious humans."
|
||||
shortdesc = "will do medium-low toxin damage and will kill any unconcious targets when attacked. Spores produced by factories are sentient."
|
||||
analyzerdescdamage = "Does medium-low toxin damage and kills unconscious humans."
|
||||
analyzerdesceffect = "Produces spores when killed. Spores produced by factories are sentient."
|
||||
color = "#E88D5D"
|
||||
complementary_color = "#823ABB"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//does tons of oxygen damage and a little stamina, immune to tesla bolts, weak to EMP
|
||||
/datum/blobstrain/reagent/energized_jelly
|
||||
name = "Energized Jelly"
|
||||
description = "will cause low stamina and high oxygen damage, and cause targets to be unable to breathe."
|
||||
description = "will cause high stamina and medium oxygen damage, and cause targets to be unable to breathe."
|
||||
effectdesc = "will also conduct electricity, but takes damage from EMPs."
|
||||
analyzerdescdamage = "Does low stamina damage, high oxygen damage, and prevents targets from breathing."
|
||||
analyzerdescdamage = "Does high stamina damage, medium oxygen damage, and prevents targets from breathing."
|
||||
analyzerdesceffect = "Is immune to electricity and will easily conduct it, but is weak to EMPs."
|
||||
color = "#EFD65A"
|
||||
complementary_color = "#00E5B1"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//does aoe brute damage when hitting targets, is immune to explosions
|
||||
/datum/blobstrain/reagent/explosive_lattice
|
||||
name = "Explosive Lattice"
|
||||
description = "will do brute damage in an area around targets."
|
||||
description = "will attack with small explosions, dealing a medium mix of brute and burn damage to everyone nearby. Spores explode on death."
|
||||
effectdesc = "will also resist explosions, but takes increased damage from fire and other energy sources."
|
||||
analyzerdescdamage = "Does medium brute damage and causes damage to everyone near its targets. Spores explode on death."
|
||||
analyzerdescdamage = "Does a medium mix of brute and burn damage in a small explosion around its targets. Spores explode on death."
|
||||
analyzerdesceffect = "Is highly resistant to explosions, but takes increased damage from fire and other energy sources."
|
||||
color = "#8B2500"
|
||||
complementary_color = "#00668B"
|
||||
@@ -22,9 +22,9 @@
|
||||
var/obj/effect/temp_visual/explosion/fast/effect = new /obj/effect/temp_visual/explosion/fast(get_turf(spore))
|
||||
effect.alpha = 150
|
||||
for(var/mob/living/actor in orange(get_turf(spore), 1))
|
||||
if(ROLE_BLOB in actor.faction) //no friendly fire
|
||||
if(ROLE_BLOB in actor.faction) // No friendly fire
|
||||
continue
|
||||
actor.apply_damage(20, BRUTE, wound_bonus=CANT_WOUND)
|
||||
actor.take_overall_damage(10, 10)
|
||||
|
||||
/datum/reagent/blob/explosive_lattice
|
||||
name = "Explosive Lattice"
|
||||
@@ -33,22 +33,42 @@
|
||||
|
||||
/datum/reagent/blob/explosive_lattice/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
. = ..()
|
||||
var/initial_volume = reac_volume
|
||||
var/brute_loss = 0
|
||||
var/burn_loss = 0
|
||||
var/bomb_armor = 0
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
if(reac_volume >= 10) //if it's not a spore cloud, bad time incoming
|
||||
|
||||
if(reac_volume >= 10) // If it's not coming from a sporecloud, AOE 'explosion' damage
|
||||
var/epicenter_turf = get_turf(exposed_mob)
|
||||
var/obj/effect/temp_visual/explosion/fast/ex_effect = new /obj/effect/temp_visual/explosion/fast(get_turf(exposed_mob))
|
||||
ex_effect.alpha = 150
|
||||
for(var/mob/living/nearby_mob in orange(get_turf(exposed_mob), 1))
|
||||
if(ROLE_BLOB in nearby_mob.faction) //no friendly fire
|
||||
|
||||
// Total damage to epicenter mob of 0.7*reac_volume, like a mid-tier strain
|
||||
brute_loss = reac_volume*0.35
|
||||
|
||||
bomb_armor = exposed_mob.getarmor(null, BOMB)
|
||||
if(bomb_armor) // Same calculation and proc that ex_act uses on mobs
|
||||
brute_loss = brute_loss*(2 - round(bomb_armor*0.01, 0.05))
|
||||
|
||||
burn_loss = brute_loss
|
||||
|
||||
exposed_mob.take_overall_damage(brute_loss, burn_loss)
|
||||
|
||||
for(var/mob/living/nearby_mob in orange(epicenter_turf, 1))
|
||||
if(ROLE_BLOB in nearby_mob.faction) // No friendly fire.
|
||||
continue
|
||||
exposed_mob = nearby_mob
|
||||
methods = TOUCH
|
||||
reac_volume = initial_volume
|
||||
show_message = FALSE
|
||||
touch_protection = nearby_mob.get_permeability_protection()
|
||||
var/aoe_volume = ..()
|
||||
nearby_mob.apply_damage(0.4*aoe_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
if(exposed_mob)
|
||||
exposed_mob.apply_damage(0.6*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
if(nearby_mob == exposed_mob) // We've already hit the epicenter mob
|
||||
continue
|
||||
// AoE damage of 0.5*reac_volume to everyone in a 1 tile range
|
||||
brute_loss = reac_volume*0.25
|
||||
burn_loss = brute_loss
|
||||
|
||||
bomb_armor = nearby_mob.getarmor(null, BOMB)
|
||||
if(bomb_armor) // Same calculation and prod that ex_act uses on mobs
|
||||
brute_loss = brute_loss*(2 - round(bomb_armor*0.01, 0.05))
|
||||
burn_loss = brute_loss
|
||||
|
||||
nearby_mob.take_overall_damage(brute_loss, burn_loss)
|
||||
|
||||
else
|
||||
exposed_mob.apply_damage(0.6*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
//does massive brute and burn damage, but can only expand manually
|
||||
/datum/blobstrain/reagent/networked_fibers
|
||||
name = "Networked Fibers"
|
||||
description = "will do high brute and burn damage and will generate resources quicker, but can only expand manually using the core or nodes."
|
||||
shortdesc = "will do high brute and burn damage."
|
||||
description = "will do a high mix of brute and burn damage, and will generate resources quicker, but can only expand manually using the core or nodes."
|
||||
shortdesc = "will do a high mix of brute and burn damage."
|
||||
effectdesc = "will move your core or node when manually expanding near it."
|
||||
analyzerdescdamage = "Does high brute and burn damage."
|
||||
analyzerdesceffect = "Is highly mobile and generates resources rapidly."
|
||||
analyzerdescdamage = "Does a high mix of brute and burn damage."
|
||||
analyzerdesceffect = "Is mobile and generates resources rapidly."
|
||||
color = "#4F4441"
|
||||
complementary_color = "#414C4F"
|
||||
reagent = /datum/reagent/blob/networked_fibers
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged
|
||||
/datum/blobstrain/reagent/pressurized_slime
|
||||
name = "Pressurized Slime"
|
||||
description = "will do low brute, oxygen, and stamina damage, and wet tiles under targets."
|
||||
effectdesc = "will also wet tiles near blobs that are attacked or killed."
|
||||
analyzerdescdamage = "Does low brute damage, low oxygen damage, drains stamina, and wets tiles under targets, extinguishing them. Is resistant to brute attacks."
|
||||
description = "will do low brute and oxygen damage, high stamina damage, and makes tiles under targets very slippery."
|
||||
effectdesc = "will also make tiles slippery near attacked blobs."
|
||||
analyzerdescdamage = "Does low brute and oxygen damage, high stamina damage, and makes tiles under targets very slippery, extinguishing them. Is resistant to brute attacks."
|
||||
analyzerdesceffect = "When attacked or killed, lubricates nearby tiles, extinguishing anything on them."
|
||||
color = "#AAAABB"
|
||||
complementary_color = "#BBBBAA"
|
||||
|
||||
@@ -1,22 +1,30 @@
|
||||
//does brute damage through armor and bio resistance
|
||||
/datum/blobstrain/reagent/reactive_spines
|
||||
name = "Reactive Spines"
|
||||
description = "will do medium brute damage through armor and bio resistance."
|
||||
description = "will do high brute damage through armor and bio resistance."
|
||||
effectdesc = "will also react when attacked with burn or brute damage, attacking everything in melee range."
|
||||
analyzerdescdamage = "Does medium brute damage, ignoring armor and bio resistance."
|
||||
analyzerdescdamage = "Does high brute damage, ignoring armor and bio resistance."
|
||||
analyzerdesceffect = "When attacked with burn or brute damage it violently lashes out, attacking everything nearby."
|
||||
color = "#9ACD32"
|
||||
complementary_color = "#FFA500"
|
||||
blobbernaut_message = "stabs"
|
||||
message = "The blob stabs you"
|
||||
reagent = /datum/reagent/blob/reactive_spines
|
||||
COOLDOWN_DECLARE(retaliate_cooldown)
|
||||
|
||||
/datum/blobstrain/reagent/reactive_spines/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
|
||||
if(damage && ((damage_type == BRUTE) || (damage_type == BURN)) && B.obj_integrity - damage > 0) //is there any damage, is it burn or brute, and will we be alive
|
||||
if(damage_flag == MELEE)
|
||||
B.visible_message("<span class='boldwarning'>The blob retaliates, lashing out!</span>")
|
||||
if(damage && ((damage_type == BRUTE) || (damage_type == BURN)) && B.obj_integrity - damage > 0 && COOLDOWN_FINISHED(src, retaliate_cooldown)) // Is there any damage, is it burn or brute, will we be alive, and has the cooldown finished?
|
||||
COOLDOWN_START(src, retaliate_cooldown, 2.5 SECONDS) // 2.5 seconds before auto-retaliate can whack everything within 1 tile again
|
||||
B.visible_message("<span class='boldwarning'>The blob retaliates, lashing out!</span>")
|
||||
for(var/atom/A in range(1, B))
|
||||
A.blob_act(B)
|
||||
var/attacked_turf = get_turf(A)
|
||||
if(isliving(A) && !isblobmonster(A)) // Make sure to inject strain-reagents with automatic attacks when needed.
|
||||
B.blob_attack_animation(attacked_turf, overmind)
|
||||
attack_living(A)
|
||||
|
||||
else if(A.blob_act(B)) // After checking for mobs, whack everything else with the standard attack
|
||||
B.blob_attack_animation(attacked_turf, overmind) // Only play the animation if the attack did something meaningful
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/reagent/blob/reactive_spines
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
//does toxin damage, hallucination, targets think they're not hurt at all
|
||||
/datum/blobstrain/reagent/regenerative_materia
|
||||
name = "Regenerative Materia"
|
||||
description = "will do toxin damage and cause targets to believe they are fully healed."
|
||||
analyzerdescdamage = "Does toxin damage and injects a toxin that causes the target to believe they are fully healed. Core regenerates much faster."
|
||||
description = "will do medium initial toxin damage, injecting a poison which does more toxin damage and makes targets believe they are fully healed. The core regenerates much faster."
|
||||
analyzerdescdamage = "Does medium initial toxin damage, injecting a poison which does more toxin damage and makes targets believe they are fully healed. Core regenerates much faster."
|
||||
color = "#A88FB7"
|
||||
complementary_color = "#AF7B8D"
|
||||
message_living = ", and you feel <i>alive</i>"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//does brute damage, bonus damage for each nearby blob, and spreads damage out
|
||||
/datum/blobstrain/reagent/synchronous_mesh
|
||||
name = "Synchronous Mesh"
|
||||
description = "will do massively increased brute damage for each blob near the target."
|
||||
description = "will do low brute damage, but each blob nearby attacks the target as well with stacking damage."
|
||||
effectdesc = "will also spread damage between each blob near the attacked blob."
|
||||
analyzerdescdamage = "Does brute damage, increasing for each blob near the target."
|
||||
analyzerdescdamage = "Does low brute damage, increasing for each blob near the target."
|
||||
analyzerdesceffect = "When attacked, spreads damage between all blobs near the attacked blob."
|
||||
color = "#65ADA2"
|
||||
complementary_color = "#AD6570"
|
||||
|
||||
Reference in New Issue
Block a user