mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 07:46:20 +00:00
This PR makes a number of changes focusing on improving the blob minions, spores, nauts, zombies and their associated component. The blob spore, blob zombie and blobbernaut has been resprited. The spore and zombie have been lightly touched to preserve the most of the original characteristics while given a cleaner look. The spore and zombie have a partially desaturated version used to let more of the strain colour through instead of them all ending up dark brown. The blobbernaut has been reshaded and the side sprite has been made coherent with the front state, I made decided how the front state was shaded should be the "canon" one (this might be a bit controversial but the wild inconsistency was bugging me.) The blobbernaut is a bit less veiny, but the veins look more natural and use the strain complementary colour. Many combinations are cool, some are a bit lacking due to the weird choices of complementary colour.   Blob mobs can now have strains independently of an overmind. The 15% mutation chance of vat grown creatures causes a spore or blobbernaut to get a random strain. When I first added the blob spore cell line, ghosts could click on cyto blob spores to posses them, they would then presumably(?) but not explicitly be free antags. This ability was lost when the blob spore code was modernised. Very few people knew about this, and no one grew blob spores anyway. This feature is coming back in a big way, vat grown blob spores present a new unique job hazard, they are automatically offered to ghost as an extremely shitty, but free antag. I have tested spawning like 15 antag pre-buff blob spores in a live round and they failed completely to antagonise the crew effectively, hopefully these buffed spores won't present too much of an issue to our great administration team, if that ends up being the case, there are many levers to pull to tone them down. Blob spores prior to this PR were almost completely useless. The main cause of this was the extremely dilute reagent smoke reaction; 10u divided over 20 seconds. This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely negligible and useless amount. The smoke reagent concentration has been massively increased(10u -> 40u) and the smoke duration has been reduced(20s -> 8s). The result of this is that blob spore clouds are something you want to avoid standing in, but they provide less smoke cover for the blob and nauts. Blob spores have also gained the ability to vent crawl. Simple mobs that can't either open doors or vent crawl feel super bad to play. They also deal a little more melee damage, but this is still pathetically low on account of their low attack speed. I have adjusted their supplementary reagents and reduced the amounts of spores produced per cycle(2 -> 1) to make them a bit harder to mass produce. I have not made this PR with the goal of buffing any particular strain, but some changes have affected blob strain balance: This was the only strain that was strongly mechanically tied to the core. In order to allow for independent debris devourer mobs, they can now eat trash(or any item really), they are independent, they store these items inside their mob, and use these for the debris devourer reactions. If they have an overmind, the item gets sent to the core. This should result in a nice buff to the strain, which I've been told is one of the bad ones. 5 years back another contributor removed the ability of blobs and blobbernauts to transfer reagents with their attacks(as their expose method is vapour). This was a completely undocumented change and possibly unintentional, so I am reverting it by giving blob reagents penetrates_skin = VAPOR again. This only really affects these two strains. It makes regenerative materia much stronger, while barely having any effect on cryogenic poison, because temperature normalisation changes has made it completely ineffective even with much more reagent applied. The spore reagent cloud buff might also give a boost to some strains with good expose effects, like electromagnetic web. Blob spores now drop spore sacks, they can be ground for spore toxin, or cracked on a griddle to create an egg-like treat! I also added a detoxification reaction to reduce the amount of toxin when cooked, might not work yet because I think griddles may not actually heat the food? Blob spores bursting and blobbernauts dying have sound effects. level 5 biohazard 🆑 image: blob mobs have been respectfully resprited. add: vat grown blob mobs can sometimes get born with a blob strain. add: blob spores drop spore sacks, crack them on the griddle. add: debris devourer mobs can now eat trash, sending it to the core, if there is one. add: vat grown blob spores are now sentient and evil. balance: blob spores now have much more concentrated smoke. balance: blob spores can ventcrawl. fix: regenerative materia and cryogenic poison strain blob tiles & nauts now inject chems again. sound: blob spores & blobbernaut now have death sound effects. /🆑
119 lines
6.2 KiB
Plaintext
119 lines
6.2 KiB
Plaintext
// Overmind defines
|
|
|
|
#define OVERMIND_MAX_POINTS_DEFAULT 100 // Max point storage
|
|
#define OVERMIND_STARTING_POINTS 60 // Points granted upon start
|
|
#define OVERMIND_STARTING_REROLLS 1 // Free strain rerolls at the start
|
|
#define OVERMIND_STARTING_MIN_PLACE_TIME (1 MINUTES) // Minimum time before the core can be placed
|
|
#define OVERMIND_STARTING_AUTO_PLACE_TIME (6 MINUTES) // After this time, randomly place the core somewhere viable
|
|
#define OVERMIND_WIN_CONDITION_AMOUNT 400 // Blob structures required to win
|
|
#define OVERMIND_ANNOUNCEMENT_MIN_SIZE 75 // Once the blob has this many structures, announce their presence
|
|
#define OVERMIND_ANNOUNCEMENT_MAX_TIME (10 MINUTES) // If the blob hasn't reached the minimum size before this time, announce their presence
|
|
#define OVERMIND_MAX_CAMERA_STRAY "3x3" // How far the overmind camera is allowed to stray from blob tiles. 3x3 is 1 tile away, 5x5 2 tiles etc
|
|
|
|
|
|
// Generic blob defines
|
|
|
|
//#define BLOB_BASE_POINT_RATE 2 // Base amount of points per process()
|
|
#define BLOB_BASE_POINT_RATE 2.5 // SKYRAT EDIT CHANGE
|
|
#define BLOB_EXPAND_COST 4 // Price to expand onto a new tile
|
|
#define BLOB_ATTACK_REFUND 2 // Points 'refunded' when the expand attempt actually attacks something instead
|
|
#define BLOB_BRUTE_RESIST 0.5 // Brute damage taken gets multiplied by this value
|
|
#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
|
|
|
|
|
|
// Structure properties
|
|
|
|
#define BLOB_CORE_MAX_HP 400
|
|
#define BLOB_CORE_HP_REGEN 2 // Bases health regeneration rate every process(), can be added on by strains
|
|
#define BLOB_CORE_CLAIM_RANGE 12 // Range in which blob tiles are 'claimed' (converted from dead to alive, rarely useful)
|
|
#define BLOB_CORE_PULSE_RANGE 4 // The radius up to which the core activates structures, and up to which structures can be built
|
|
#define BLOB_CORE_EXPAND_RANGE 3 // Radius of automatic expansion
|
|
#define BLOB_CORE_STRONG_REINFORCE_RANGE 1 // The radius of tiles surrounding the core that get upgraded
|
|
#define BLOB_CORE_REFLECTOR_REINFORCE_RANGE 0
|
|
|
|
#define BLOB_NODE_MAX_HP 200
|
|
#define BLOB_NODE_HP_REGEN 3
|
|
#define BLOB_NODE_MIN_DISTANCE 5 // Minimum distance between nodes
|
|
#define BLOB_NODE_CLAIM_RANGE 10
|
|
#define BLOB_NODE_PULSE_RANGE 3 // The radius up to which the core activates structures, and up to which structures can be built
|
|
#define BLOB_NODE_EXPAND_RANGE 2 // Radius of automatic expansion
|
|
#define BLOB_NODE_STRONG_REINFORCE_RANGE 0 // The radius of tiles surrounding the node that get upgraded
|
|
#define BLOB_NODE_REFLECTOR_REINFORCE_RANGE 0
|
|
|
|
#define BLOB_FACTORY_MAX_HP 200
|
|
#define BLOB_FACTORY_HP_REGEN 1
|
|
#define BLOB_FACTORY_MIN_DISTANCE 7 // Minimum distance between factories
|
|
#define BLOB_FACTORY_MAX_SPORES 3
|
|
|
|
#define BLOB_RESOURCE_MAX_HP 60
|
|
#define BLOB_RESOURCE_HP_REGEN 15
|
|
#define BLOB_RESOURCE_MIN_DISTANCE 4 // Minimum distance between resource blobs
|
|
#define BLOB_RESOURCE_GATHER_DELAY (4 SECONDS) // Gather points when pulsed outside this interval
|
|
#define BLOB_RESOURCE_GATHER_ADDED_DELAY (0.25 SECONDS) // Every additional resource blob adds this amount to the gather delay
|
|
#define BLOB_RESOURCE_GATHER_AMOUNT 1 // The amount of points added to the overmind
|
|
|
|
#define BLOB_REGULAR_MAX_HP 25
|
|
#define BLOB_REGULAR_HP_INIT 21 // The starting HP of a normal blob tile
|
|
#define BLOB_REGULAR_HP_REGEN 1 // Health regenerated when pulsed by a node/core
|
|
|
|
#define BLOB_STRONG_MAX_HP 150
|
|
#define BLOB_STRONG_HP_REGEN 2
|
|
|
|
#define BLOB_REFLECTOR_MAX_HP 150
|
|
#define BLOB_REFLECTOR_HP_REGEN 2
|
|
|
|
|
|
// Structure purchasing
|
|
|
|
#define BLOB_UPGRADE_STRONG_COST 15 // Upgrade and build costs here
|
|
#define BLOB_UPGRADE_REFLECTOR_COST 15
|
|
#define BLOB_STRUCTURE_RESOURCE_COST 40
|
|
#define BLOB_STRUCTURE_FACTORY_COST 60
|
|
#define BLOB_STRUCTURE_NODE_COST 50
|
|
|
|
#define BLOB_REFUND_STRONG_COST 4 // Points refunded when destroying the structure
|
|
#define BLOB_REFUND_REFLECTOR_COST 8
|
|
#define BLOB_REFUND_RESOURCE_COST 15
|
|
#define BLOB_REFUND_FACTORY_COST 25
|
|
#define BLOB_REFUND_NODE_COST 25
|
|
|
|
// Blob power properties
|
|
|
|
#define BLOB_POWER_RELOCATE_COST 80 // Resource cost to move your core to a different node
|
|
#define BLOB_POWER_REROLL_COST 40 // Strain reroll
|
|
#define BLOB_POWER_REROLL_FREE_TIME (4 MINUTES) // Gain a free strain reroll every x minutes
|
|
#define BLOB_POWER_REROLL_CHOICES 6 // Possibilities to choose from; keep in mind increasing this might fuck with the radial menu
|
|
|
|
|
|
// Mob defines
|
|
|
|
#define BLOBMOB_HEALING_MULTIPLIER 0.0125 // Multiplies by -maxHealth and heals the blob by this amount every blob_act
|
|
#define BLOBMOB_SPORE_HEALTH 30 // Base spore health
|
|
#define BLOBMOB_SPORE_SPAWN_COOLDOWN (8 SECONDS)
|
|
#define BLOBMOB_SPORE_DMG_LOWER 4
|
|
#define BLOBMOB_SPORE_DMG_UPPER 8
|
|
#define BLOBMOB_BLOBBERNAUT_RESOURCE_COST 40 // Purchase price for making a blobbernaut
|
|
#define BLOBMOB_BLOBBERNAUT_HEALTH 200 // Base blobbernaut health
|
|
#define BLOBMOB_BLOBBERNAUT_DMG_SOLO_LOWER 20 // Damage without active overmind (core dead or xenobio mob)
|
|
#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_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
|
|
#define BLOBMOB_BLOBBERNAUT_HEALTH_DECAY 0.0125 // Percentage multiplier HP lost when not near blob tiles or without factory
|
|
|
|
/// For blobmobs that you don't want to have a deathburst effect. (radius)
|
|
#define BLOBMOB_CLOUD_NONE -1
|
|
/// For blobmobs with small single tile clouds
|
|
#define BLOBMOB_CLOUD_SMALL 0
|
|
/// For normal 3x3 sized clouds
|
|
#define BLOBMOB_CLOUD_NORMAL 1
|
|
|
|
/// How much reagents we put into the spore death clouds in units.
|
|
#define BLOBMOB_CLOUD_REAGENT_VOLUME 40
|