mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 19:11:52 +00:00
## About The Pull Request Adds rift fishing to the game.  Drained and undrained influences can be fished in, the latter only by heretics. Fishing in an undrained influence shows a bobber floating over nothing to other people, so don't be stupid! The loot pool includes the following: - Knowledge. Great for heretics, bad for crew. Only actually gives knowledge if fished up in an unopened rift, opening it. One of each heretic potion type. - A wild Fire Shark, hostile to all. - One of each heretic potion, and two flasks of eldritch essence. - Several new fish:  In order: 1. Chrystarfish Cosmostarfishe that snuck into the bluespace compartment of a shuttle engine. Teleports around when eaten. Can be cut into bluespace crystals. Very pointy. 2. Flumpulus Probably not an actual fish. Contains flumpuline, which is in many ways an upgrade to oculine. Except for it occasionally popping your eyes out and replacing them with fungus. It also gets flattened if you land on it, cushioning your fall.  3. Gullion This fish can be cut into two diamonds, and needs no mate to reproduce, making it an excellent way to replenish the station's diamond supply! However, it needs silicon in the fish tank to survive. 4. Walro-Dolphish Weird, amphibious creature. Amazing weapon - high damage, strong piercing wounds, decent block chances. However, it will bite you if you hold it for too long, so be careful! More fish are planned to be added. The PR was split in two to reduce review complexity as the latter half of the fish were increasingly convoluted. Any fishing rod will do for fishing, but heretics are now able to infuse their fishing rod with a grasp:  Infusing the rod will temporarily improve its fishing modifier and give it a unique trait that lets heretics gather 2 influence, rather than 1, from a fished-up rift. If crew fish up a glimpse of the Mansus, they will recieve the same effects as if they examined the rift, and a curse hand will shoot out at them. influences cannot be bombed for fish. ## Why It's Good For The Game Rifts are _extremely_ close to basically just being eldritch pools of liquid that some heretic spilled over the station. It's always stuck out like a sore thumb that we can't fish in them, but now we _can_. (Also, someone needs to PR fishing in a bucket for clowns and mimes.) Fishing in a rift is just one of those things you see some random, innocent assistant do while doing an errand, passively enhancing the round with the sheer ridiculousness of it. Coming back, it's likely you'll see them running from a wild Fire Shark they unwisely dug up from messing with eldritch influences. For Heretics, this is for the most part actively a worse alternative than just doing things normally. But sometimes you don't want to be optimal. Infusing their fishing rod is almost entirely an amusing twist on the blade infusion that blade path has, and they can even infuse other people's rods - make fish not war. Ghommie gave me the fish sprites, and I interpreted them the silliest and most interesting ways I could think of. > Chrystarfish Bluespace's technobabble has finally reached fish. Much like the Gullion, the intention here was primarily some additional, risky way to procure some amount of bluespace crystals and dust that doesn't depend on Mining to do their job, either for the station or for your own stupid plans. (Obviously mining is still the best way to get it, but it's not healthy for the game for them to be the ONLY way to do so!) >Flumpulus  Imagine taking a pill of 'Super oculine!' and suddenly your eyes pop out and are replaced with fungeyes. 10/10 >Gullion Diamonds are extremely scarce on the station and the only way to get more is by mining. I thought adding some rare, restricted way of getting more would be fun for the game, and encourage fish breeding. Parthenogenesis may be a bit much admittedly, but let's just see what happens > Walro-Dolphish The name for this thing kinda sucks. I like the idea of an amphibious fish-weapon like the pikes that actually kinda just hates being wielded around like a stick. It's also piercing to differentiate.  ## Changelog 🆑 Carlarc, Ghommie add: Adds rift fishing to the game. Includes new wacky fish! add: Drained and undrained influences can be fished in, the latter only by heretics. Fishing in an undrained influence shows a bobber floating over nothing to other people, so don't be stupid! add: influences cannot be bombed for fish. add: Heretics can now infuse their fishing rod, and fish for knowledge. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
59 lines
3.1 KiB
Plaintext
59 lines
3.1 KiB
Plaintext
/// Assosciative list of type -> embed data.
|
|
GLOBAL_LIST_INIT(embed_by_type, generate_embed_type_cache())
|
|
|
|
/proc/generate_embed_type_cache()
|
|
var/list/embed_cache = list()
|
|
for(var/datum/embed_data/embed_type as anything in subtypesof(/datum/embed_data))
|
|
var/datum/embed_data/embed = new embed_type
|
|
embed_cache[embed_type] = embed
|
|
return embed_cache
|
|
|
|
/proc/get_embed_by_type(embed_type)
|
|
var/datum/embed_data/embed = GLOB.embed_by_type[embed_type]
|
|
if(embed)
|
|
return embed
|
|
CRASH("Attempted to get an embed type that did not exist! '[embed_type]'")
|
|
|
|
/datum/embed_data
|
|
/// Chance for an object to embed into somebody when thrown
|
|
var/embed_chance = 45
|
|
/// Chance for embedded object to fall out (causing pain but removing the object)
|
|
var/fall_chance = 5
|
|
/// Chance for embedded objects to cause pain (damage user)
|
|
var/pain_chance = 15
|
|
/// Coefficient of multiplication for the damage the item does while embedded (this*item.w_class)
|
|
var/pain_mult = 2
|
|
/// Coefficient of multiplication for the damage the item does when it first embeds (this*item.w_class)
|
|
var/impact_pain_mult = 4
|
|
/// Coefficient of multiplication for the damage the item does when it falls out or is removed without a surgery (this*item.w_class)
|
|
var/remove_pain_mult = 6
|
|
/// Time in ticks, total removal time = (this*item.w_class)
|
|
var/rip_time = 30
|
|
/// If this should ignore throw speed threshold of 4
|
|
var/ignore_throwspeed_threshold = FALSE
|
|
/// Chance for embedded objects to cause pain every time they move (jostle)
|
|
var/jostle_chance = 5
|
|
/// Coefficient of multiplication for the damage the item does while
|
|
var/jostle_pain_mult = 1
|
|
/// Call this proc on jostling, if it exists!
|
|
var/datum/callback/jostle_callback
|
|
/// This percentage of all pain will be dealt as stam damage rather than brute (0-1)
|
|
var/pain_stam_pct = 0
|
|
|
|
/datum/embed_data/proc/generate_with_values(embed_chance, fall_chance, pain_chance, pain_mult, impact_pain_mult, remove_pain_mult, rip_time, ignore_throwspeed_threshold, jostle_chance, jostle_pain_mult, pain_stam_pct, force_new = FALSE)
|
|
var/datum/embed_data/data = isnull(GLOB.embed_by_type[type]) && !force_new ? src : new()
|
|
|
|
data.embed_chance = !isnull(embed_chance) ? embed_chance : src.embed_chance
|
|
data.fall_chance = !isnull(fall_chance) ? fall_chance : src.fall_chance
|
|
data.pain_chance = !isnull(pain_chance) ? pain_chance : src.pain_chance
|
|
data.pain_mult = !isnull(pain_mult) ? pain_mult : src.pain_mult
|
|
data.impact_pain_mult = !isnull(impact_pain_mult) ? impact_pain_mult : src.impact_pain_mult
|
|
data.remove_pain_mult = !isnull(remove_pain_mult) ? remove_pain_mult : src.remove_pain_mult
|
|
data.rip_time = !isnull(rip_time) ? rip_time : src.rip_time
|
|
data.ignore_throwspeed_threshold = !isnull(ignore_throwspeed_threshold) ? ignore_throwspeed_threshold : src.ignore_throwspeed_threshold
|
|
data.jostle_chance = !isnull(jostle_chance) ? jostle_chance : src.jostle_chance
|
|
data.jostle_pain_mult = !isnull(jostle_pain_mult) ? jostle_pain_mult : src.jostle_pain_mult
|
|
data.jostle_callback = !isnull(jostle_callback) ? jostle_callback : src.jostle_callback
|
|
data.pain_stam_pct = !isnull(pain_stam_pct) ? pain_stam_pct : src.pain_stam_pct
|
|
return data
|