Skip to content

Commit

Permalink
patch 2
Browse files Browse the repository at this point in the history
Слегка увеличен коэффициент урона у взрывного реагента: 0.35 to 0.4
Шанс излучения при уроне по плиткам радиоактивного блоба заменен константой в 40%
Слегка увеличен шанс расширения репликационной пены при получении урона 45 to 50%
Мелкие правки стиля кода и орфографии
  • Loading branch information
dageavtobusnick committed Dec 24, 2024
1 parent 7550487 commit 1125799
Show file tree
Hide file tree
Showing 13 changed files with 44 additions and 32 deletions.
6 changes: 3 additions & 3 deletions code/__DEFINES/blob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ GLOBAL_LIST_EMPTY(blob_nodes)
#define BLOB_FIRE_RESIST 1 // Burn damage taken gets multiplied by this value
#define BLOB_EXPAND_CHANCE_MULTIPLIER 1 // Increase this value to make blobs naturally expand faster
#define BLOB_REINFORCE_CHANCE 2.5 // The seconds_per_tick chance for cores/nodes to reinforce their surroundings
#define BLOB_REAGENTATK_VOL 25 // Amount of strain-reagents that get injected when the blob attacks: main source of blob damage
#define BLOB_REAGENSPORE_VOL 10
#define BLOB_REAGENT_ATK_VOL 25 // Amount of strain-reagents that get injected when the blob attacks: main source of blob damage
#define BLOB_REAGENT_SPORE_VOL 10
#define BLOB_BONUS_POINTS 60
#define BLOB_REAGENTS_METABOLISM 1

Expand Down Expand Up @@ -182,7 +182,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
#define BLOBMOB_BLOBBERNAUT_DMG_SOLO_UPPER 20
#define BLOBMOB_BLOBBERNAUT_DMG_LOWER 4 // Damage dealt with active overmind (most damage comes from strain chems)
#define BLOBMOB_BLOBBERNAUT_DMG_UPPER 4
#define BLOBMOB_BLOBBERNAUT_REAGENTATK_VOL 20 // Amounts of strain reagents applied on attack -- basically the main damage stat
#define BLOBMOB_BLOBBERNAUT_REAGENT_ATK_VOL 20 // Amounts of strain reagents applied on attack -- basically the main damage stat
#define BLOBMOB_BLOBBERNAUT_DMG_OBJ 60 // Damage dealth to objects/machines
#define BLOBMOB_BLOBBERNAUT_HEALING_CORE 0.05 // Percentage multiplier HP restored on Life() when within 2 tiles of the blob core
#define BLOBMOB_BLOBBERNAUT_HEALING_NODE 0.025 // Same, but for a nearby node
Expand Down
5 changes: 0 additions & 5 deletions code/datums/components/blob_minion.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,15 @@
var/mob/camera/blob/overmind
/// Callback to run if overmind strain changes
var/datum/callback/on_strain_changed
var/datum/action/innate/blob/minion_talk/mob_talk

/datum/component/blob_minion/Initialize(mob/camera/blob/overmind, datum/callback/on_strain_changed)
. = ..()
if(!isminion(parent))
return COMPONENT_INCOMPATIBLE
src.on_strain_changed = on_strain_changed
mob_talk = new()
register_overlord(overmind)

/datum/component/blob_minion/Destroy(force)
qdel(mob_talk)
. = ..()

/datum/component/blob_minion/InheritComponent(datum/component/new_comp, i_am_original, mob/camera/blob/overmind, datum/callback/on_strain_changed)
Expand Down Expand Up @@ -64,7 +61,6 @@
RegisterSignal(parent, COMSIG_MOB_TRY_SPEECH, PROC_REF(on_try_speech))
RegisterSignal(parent, COMSIG_MOB_CHANGED_TYPE, PROC_REF(on_transformed))
living_parent.update_appearance(UPDATE_ICON)
mob_talk.Grant(living_parent)
GLOB.blob_telepathy_mobs |= parent

/datum/component/blob_minion/UnregisterFromParent()
Expand All @@ -85,7 +81,6 @@
COMSIG_MOB_MIND_INITIALIZED,
COMSIG_MOVABLE_SPACEMOVE,
))
mob_talk.Remove(living_parent)
GLOB.blob_telepathy_mobs -= parent

/// Become blobpilled when we gain a mind
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/blob/blob_finish.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
text += "<br/><b>[blob.key]</b> был <b>[blob.name]</b>"

if(minions?.len)
text += "<br/><br/><FONT size = 2><B>Миньен[(minions.len > 1 ? "ами были" : "ом был")]:</B></FONT>"
text += "<br/><br/><FONT size = 2><B>Миньoн[(minions.len > 1 ? "ами были" : "ом был")]:</B></FONT>"
for(var/datum/mind/blob in minions)
text += "<br/><b>[blob.key]</b> был <b>[blob.name]</b>"

Expand Down
19 changes: 19 additions & 0 deletions code/modules/antagonists/blob/blob_minion.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
show_in_orbit = FALSE
/// The blob core that this minion is attached to
var/datum/weakref/overmind
/// Action to talk with nearby mobs
var/datum/action/innate/blob/minion_talk/mob_talk

/datum/antagonist/blob_minion/can_be_owned(datum/mind/new_owner)
. = ..() && isminion(new_owner?.current)
Expand All @@ -28,6 +30,23 @@
mode.blobs["minions"] -= owner


/datum/antagonist/blob_minion/apply_innate_effects(mob/living/mob_override)
var/mob/living/user = ..(mob_override)
if(!user)
return
if(!mob_talk)
mob_talk = new
mob_talk.Grant(user)
return user


/datum/antagonist/blob_minion/remove_innate_effects(mob/living/mob_override)
var/mob/living/user = ..(mob_override)
if(!user)
return
mob_talk?.Remove(user)
return user

/datum/antagonist/blob_minion/roundend_report_header()
return

Expand Down
2 changes: 1 addition & 1 deletion code/modules/antagonists/blob/blob_minions/blob_spore.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@

/// Create an explosion of spores on death
/mob/living/simple_animal/hostile/blob_minion/spore/proc/death_burst()
do_blob_chem_smoke(range = death_cloud_size, reagent_volume = BLOB_REAGENSPORE_VOL, holder = src, location = get_turf(src), reagent_type = /datum/reagent/toxin/spore)
do_blob_chem_smoke(range = death_cloud_size, reagent_volume = BLOB_REAGENT_SPORE_VOL, holder = src, location = get_turf(src), reagent_type = /datum/reagent/toxin/spore)

/mob/living/simple_animal/hostile/blob_minion/spore/CanAllowThrough(atom/movable/mover, border_dir)
. = ..()
Expand Down
6 changes: 2 additions & 4 deletions code/modules/antagonists/blob/blob_minions/blob_zombie.dm
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@

/// Create an explosion of spores on death
/mob/living/simple_animal/hostile/blob_minion/zombie/proc/death_burst()
do_blob_chem_smoke(range = 1, holder = src, reagent_volume = BLOB_REAGENSPORE_VOL, location = get_turf(src), reagent_type = /datum/reagent/toxin/spore)
do_blob_chem_smoke(range = 1, holder = src, reagent_volume = BLOB_REAGENT_SPORE_VOL, location = get_turf(src), reagent_type = /datum/reagent/toxin/spore)

/// Store a body so that we can drop it on death
/mob/living/simple_animal/hostile/blob_minion/zombie/proc/consume_corpse(mob/living/carbon/human/new_corpse)
Expand All @@ -84,9 +84,7 @@
new_corpse.change_hair("Bald")
new_corpse.forceMove(src)
corpse = new_corpse
update_appearance(UPDATE_ICON)
overlays += new_corpse.overlays
set_up_zombie_appearance()
update_icon(UPDATE_OVERLAYS)
RegisterSignal(corpse, COMSIG_LIVING_REVIVE, PROC_REF(on_corpse_revived))

/// Dynamic changeling reentry
Expand Down
2 changes: 1 addition & 1 deletion code/modules/antagonists/blob/blobstrains/_blobstrain.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ GLOBAL_LIST_INIT(valid_blobstrains, subtypesof(/datum/blobstrain) - list(/datum/
for(var/mob/living/blob_mob as anything in overmind.blob_mobs)
blob_mob.maxHealth *= max_mob_health_multiplier
blob_mob.health *= max_mob_health_multiplier
blob_mob.update_icons() // If it's getting a new strain, tell it what it does!
blob_mob.update_icon() // If it's getting a new strain, tell it what it does!
var/list/messages = list()
messages += "Штамм вашего надразума: <b><font color=\"[color]\">[name]</b></font>!"
messages += "Штамм <b><font color=\"[color]\">[name]</b></font> [shortdesc ? "[shortdesc]" : "[description]"]"
Expand Down
8 changes: 4 additions & 4 deletions code/modules/antagonists/blob/blobstrains/_reagent.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@

/datum/blobstrain/reagent/attack_living(mob/living/L)
var/mob_protection = L.getarmor(null, BIO) * 0.01
reagent.reaction_mob(L, REAGENT_TOUCH, BLOB_REAGENTATK_VOL, TRUE, mob_protection, overmind)
send_message(L)
reagent.reaction_mob(L, REAGENT_TOUCH, BLOB_REAGENT_ATK_VOL, TRUE, mob_protection, overmind)
send_message(L)

/datum/blobstrain/reagent/blobbernaut_attack(atom/attacking, mob/living/simple_animal/hostile/blobbernaut)
if(!isliving(attacking))
return

var/mob/living/living_attacking = attacking
var/mob_protection = living_attacking.getarmor(null, BIO) * 0.01
reagent.reaction_mob(living_attacking, REAGENT_TOUCH, BLOBMOB_BLOBBERNAUT_REAGENTATK_VOL + blobbernaut_reagentatk_bonus, FALSE, mob_protection, overmind)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage.
reagent.reaction_mob(living_attacking, REAGENT_TOUCH, BLOBMOB_BLOBBERNAUT_REAGENT_ATK_VOL + blobbernaut_reagentatk_bonus, FALSE, mob_protection, overmind)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage.

/datum/blobstrain/reagent/on_sporedeath(mob/living/simple_animal/hostile/blob_minion/spore/spore)
var/burst_range = (istype(spore)) ? spore.death_cloud_size : 1
do_blob_chem_smoke(range = burst_range, holder = spore, reagent_volume = BLOB_REAGENSPORE_VOL, location = get_turf(spore), reagent_type = reagent.type)
do_blob_chem_smoke(range = burst_range, holder = spore, reagent_volume = BLOB_REAGENT_SPORE_VOL, location = get_turf(spore), reagent_type = reagent.type)


/proc/do_blob_chem_smoke(range = 0, amount = DIAMOND_AREA(range), atom/holder = null, location = null, reagent_type = /datum/reagent/water, reagent_volume = 10, log = FALSE)
Expand Down
10 changes: 5 additions & 5 deletions code/modules/antagonists/blob/blobstrains/explosive_lattice.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
for(var/mob/living/actor in orange(get_turf(spore), 1))
if(ROLE_BLOB in actor.faction) // No friendly fire
continue
actor.take_overall_damage(10, 10)
actor.take_overall_damage(BLOB_REAGENT_SPORE_VOL, BLOB_REAGENT_SPORE_VOL)

/datum/reagent/blob/explosive_lattice
name = "Взрывная решетка"
Expand All @@ -45,14 +45,14 @@
ex_effect.alpha = 150

// Total damage to epicenter mob of 0.7*reac_volume, like a mid-tier strain
brute_loss = reac_volume*0.35
brute_loss = reac_volume*0.4

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))
Expand All @@ -61,7 +61,7 @@
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
brute_loss = reac_volume * 0.25
burn_loss = brute_loss

bomb_armor = nearby_mob.getarmor(null, BOMB)
Expand All @@ -70,6 +70,6 @@
burn_loss = brute_loss

nearby_mob.take_overall_damage(brute_loss, burn_loss)

else
exposed_mob.apply_damage(0.6*reac_volume, BRUTE, forced = TRUE)
4 changes: 2 additions & 2 deletions code/modules/antagonists/blob/blobstrains/radioactive_gel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@


/datum/blobstrain/reagent/radioactive_gel/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
if((damage_flag == ENERGY || damage_flag == LASER) && prob(damage))
if((damage_flag == ENERGY || damage_flag == LASER) && prob(40))
for(var/mob/living/l in range(5, B))
l.apply_effect(damage, IRRADIATE)
return ..()
Expand All @@ -31,4 +31,4 @@
exposed_mob.apply_damage(0.3 * reac_volume, TOX)
exposed_mob.apply_damage(0.2 * reac_volume, BRUTE) // lets not have IPC / plasmaman only take 7.5 damage from this
if(exposed_mob.reagents)
exposed_mob.reagents.add_reagent("uranium", 0.3 * reac_volume)
exposed_mob.reagents.add_reagent("uranium", 0.35 * reac_volume)
4 changes: 2 additions & 2 deletions code/modules/antagonists/blob/blobstrains/replicating_foam.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
/datum/blobstrain/reagent/replicating_foam/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
if(damage_type == BRUTE)
damage = damage * 2
else if(damage_type == BURN && damage > 0 && B.get_integrity() - damage > 0 && prob(45))
else if(damage_type == BURN && damage > 0 && B.get_integrity() - damage > 0 && prob(50))
var/obj/structure/blob/newB = B.expand(null, null, 0)
if(newB)
newB.update_integrity(B.get_integrity() - damage)
newB.update_appearance()
newB.update_blob()
return ..()


Expand Down
4 changes: 2 additions & 2 deletions code/modules/antagonists/blob/structures/_blob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@
T = null
if(!T)
return

if(!is_location_within_transition_boundaries(T))
return
var/make_blob = TRUE //can we make a blob?
Expand Down Expand Up @@ -246,7 +246,7 @@
/obj/structure/blob/emp_act(severity)
. = ..()
// tgstation emp protection
//if(. & EMP_PROTECT_SELF)
//if(. & EMP_PROTECT_SELF)
//return
if(severity > 0)
if(overmind)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/antagonists/blob/structures/factory.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
blobbernaut = new_naut
blobbernaut.link_to_factory(src)
RegisterSignal(new_naut, list(COMSIG_QDELETING, COMSIG_LIVING_DEATH), PROC_REF(on_blobbernaut_death))
update_appearance(UPDATE_ICON)
update_blob()

/// When our brave soldier dies, reset our max integrity
/obj/structure/blob/special/factory/proc/on_blobbernaut_death(mob/living/death_naut)
Expand All @@ -100,4 +100,4 @@
return
blobbernaut = null
max_integrity = initial(max_integrity)
update_appearance(UPDATE_ICON)
update_blob()

0 comments on commit 1125799

Please sign in to comment.