mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
Adds some Fish Content (#88213)
## About The Pull Request Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. Aquatic mobs can be hooked by fishing rods, even without a jawed fishing hook installed. The carp and fish infusion sets now give the infusee the aquatic biotype. Added support for infusions adding a biotype. You can check for a fish's pulse with a stethoscope, which will tell you its status even without fishing skill. Refined fish health status checks to be more precise. Added 'Fishy' Reagent, a version of strange reagent that only works for fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin or tetrodotoxin. Added a lifish chemical reaction that creates fish. ## Why It's Good For The Game Fish content fish content fish content > Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. We were really missing this one by now. > Aquatic mobs can be hooked by fishing rods, even without a jawed fishing hook installed. > The carp and fish infusion sets now give the infusee the aquatic biotype. Added support for infusions adding a biotype. I want to reel in fish people. This is going to be hilarious. > You can check for a fish's pulse with a stethoscope, which will tell you its status even without fishing skill. Fish doctor content - also lets you see the exact status of a fish's health even if you haven't interacted w/ fishing that shift. > Added 'Fishy' Reagent, a version of strange reagent that only works for fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin or tetrodotoxin. A somewhat easier to get version of strange reagent, purely for fish, as they die very easily and the road to making SR is a large diversion. I might add this to cargo, maybe? > Added a lifish chemical reaction that creates fish. Fish. fish fish fish fish fish. @Ghommie ## Changelog 🆑 add: Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire sharks. add: Aquatic mobs can be hooked by fishing rods, even without a jawed fishing hook installed. add: The carp and fish infusion sets now give the infusee the aquatic biotype. Added support for infusions adding a biotype. add: You can check for a fish's pulse with a stethoscope, which will tell you its status even without fishing skill. qol: Refined fish health status checks to be more precise. add: Added 'Fishy' Reagent, a version of strange reagent that only works for fish or aquatic biotype mobs. It's made with omnizine, saltwater, and carpotoxin or tetrodotoxin. add: Added a lifish chemical reaction that creates fish. /🆑 --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
@@ -73,6 +73,8 @@
|
||||
#define MOB_PLANT (1 << 10)
|
||||
///The mob is a goopy creature, probably coming from xenobiology.
|
||||
#define MOB_SLIME (1 << 11)
|
||||
/// Mob is fish or water-related.
|
||||
#define MOB_AQUATIC (1 << 12)
|
||||
|
||||
//Lung respiration type flags
|
||||
#define RESPIRATION_OXYGEN (1 << 0)
|
||||
|
||||
@@ -57,6 +57,10 @@
|
||||
var/required_biotype = MOB_ORGANIC
|
||||
/// A list of traits added to the mob upon bonus activation, can be of any length.
|
||||
var/list/bonus_traits = list()
|
||||
/// Bonus biotype to add on bonus activation.
|
||||
var/bonus_biotype
|
||||
/// If the biotype was added - used to check if we should remove the biotype or not, on organ set loss.
|
||||
var/biotype_added = FALSE
|
||||
/// Limb overlay to apply upon activation
|
||||
var/limb_overlay
|
||||
/// Color priority for limb overlay
|
||||
@@ -80,10 +84,20 @@
|
||||
if((required_biotype == MOB_ORGANIC) && !owner.can_mutate())
|
||||
return FALSE
|
||||
bonus_active = TRUE
|
||||
// Add traits
|
||||
if(length(bonus_traits))
|
||||
owner.add_traits(bonus_traits, REF(src))
|
||||
|
||||
// Add biotype
|
||||
if(owner.mob_biotypes & bonus_biotype)
|
||||
biotype_added = FALSE
|
||||
owner.mob_biotypes |= bonus_biotype
|
||||
biotype_added = TRUE
|
||||
|
||||
if(bonus_activate_text)
|
||||
to_chat(owner, bonus_activate_text)
|
||||
|
||||
// Add limb overlay
|
||||
if(!iscarbon(owner) || !limb_overlay)
|
||||
return TRUE
|
||||
var/mob/living/carbon/carbon_owner = owner
|
||||
@@ -96,10 +110,18 @@
|
||||
/datum/status_effect/organ_set_bonus/proc/disable_bonus()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
bonus_active = FALSE
|
||||
|
||||
// Remove traits
|
||||
if(length(bonus_traits))
|
||||
owner.remove_traits(bonus_traits, REF(src))
|
||||
// Remove biotype (if added)
|
||||
if(biotype_added)
|
||||
owner.mob_biotypes &= ~bonus_biotype
|
||||
|
||||
if(bonus_deactivate_text)
|
||||
to_chat(owner, bonus_deactivate_text)
|
||||
|
||||
// Remove limb overlay
|
||||
if(!iscarbon(owner) || QDELETED(owner) || !limb_overlay)
|
||||
return
|
||||
var/mob/living/carbon/carbon_owner = owner
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
bonus_activate_text = span_notice("Carp DNA is deeply infused with you! You've learned how to propel yourself through space!")
|
||||
bonus_deactivate_text = span_notice("Your DNA is once again mostly yours, and so fades your ability to space-swim...")
|
||||
bonus_traits = list(TRAIT_SPACEWALK)
|
||||
bonus_biotype = MOB_AQUATIC
|
||||
limb_overlay = /datum/bodypart_overlay/texture/carpskin
|
||||
color_overlay_priority = LIMB_COLOR_CARP_INFUSION
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
TRAIT_EXPANDED_FOV, //fish vision
|
||||
TRAIT_WATER_ADAPTATION,
|
||||
)
|
||||
bonus_biotype = MOB_AQUATIC
|
||||
|
||||
/datum/status_effect/organ_set_bonus/fish/enable_bonus()
|
||||
. = ..()
|
||||
|
||||
@@ -16,10 +16,9 @@
|
||||
// - Immunity to nuke gibs
|
||||
// - Nukes come with radiation (not actually but yknow)
|
||||
bonus_traits = list(TRAIT_NUKEIMMUNE, TRAIT_RADIMMUNE, TRAIT_VIRUS_RESISTANCE)
|
||||
bonus_biotype = MOB_BUG
|
||||
/// Armor type attached to the owner's physiology
|
||||
var/datum/armor/given_armor = /datum/armor/roach_internal_armor
|
||||
/// Storing biotypes pre-organ bonus applied so we don't remove bug from mobs which should have it.
|
||||
var/old_biotypes = NONE
|
||||
|
||||
/datum/status_effect/organ_set_bonus/roach/enable_bonus()
|
||||
. = ..()
|
||||
@@ -29,9 +28,6 @@
|
||||
var/mob/living/carbon/human/human_owner = owner
|
||||
human_owner.physiology.armor = human_owner.physiology.armor.add_other_armor(given_armor)
|
||||
|
||||
old_biotypes = human_owner.mob_biotypes
|
||||
human_owner.mob_biotypes |= MOB_BUG
|
||||
|
||||
/datum/status_effect/organ_set_bonus/roach/disable_bonus()
|
||||
. = ..()
|
||||
if(!ishuman(owner) || QDELETED(owner))
|
||||
@@ -40,9 +36,6 @@
|
||||
var/mob/living/carbon/human/human_owner = owner
|
||||
human_owner.physiology.armor = human_owner.physiology.armor.subtract_other_armor(given_armor)
|
||||
|
||||
if(!(old_biotypes & MOB_BUG)) // only remove bug if it wasn't there before
|
||||
human_owner.mob_biotypes &= ~MOB_BUG
|
||||
|
||||
/// Roach heart:
|
||||
/// Reduces damage taken from brute attacks from behind,
|
||||
/// but increases duration of knockdowns
|
||||
|
||||
@@ -219,8 +219,26 @@
|
||||
if(istype(held_item, /obj/item/fish_analyzer))
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Scan"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if(istype(held_item, /obj/item/clothing/neck/stethoscope))
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Check Pulse"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
return NONE
|
||||
|
||||
/obj/item/fish/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
if(!istype(tool, /obj/item/clothing/neck/stethoscope))
|
||||
return NONE
|
||||
user.balloon_alert_to_viewers("checking pulse")
|
||||
if(!do_after(user, 2.5 SECONDS, src))
|
||||
return ITEM_INTERACT_FAILURE
|
||||
// Sir... I'm afraid your fish is dying.
|
||||
user.visible_message(span_notice("[user] checks the pulse of [src] with [tool]."), span_notice("You check the pulse of [src] with [tool]."))
|
||||
var/warns = get_health_warnings(user, always_deep = TRUE)
|
||||
if(!warns)
|
||||
to_chat(user, span_notice("[src] appears to be perfectly healthy!"))
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
to_chat(user, warns)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/obj/item/fish/interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
|
||||
if(!HAS_TRAIT(interacting_with, TRAIT_CATCH_AND_RELEASE))
|
||||
return NONE
|
||||
@@ -434,27 +452,46 @@
|
||||
|
||||
/obj/item/fish/examine(mob/user)
|
||||
. = ..()
|
||||
if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH))
|
||||
if(status == FISH_DEAD)
|
||||
. += span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].")
|
||||
else
|
||||
var/list/warnings = list()
|
||||
if(is_starving())
|
||||
warnings += "starving"
|
||||
if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment())
|
||||
warnings += "drowning"
|
||||
if(health < initial(health) * 0.6)
|
||||
warnings += "sick"
|
||||
if(length(warnings))
|
||||
. += span_warning("It's [english_list(warnings)].")
|
||||
if(HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISH))
|
||||
. += span_notice("It's [size] cm long.")
|
||||
. += span_notice("It weighs [weight] g.")
|
||||
if(HAS_TRAIT(src, TRAIT_FISHING_BAIT))
|
||||
. += span_smallnoticeital("It can be used as a fishing bait.")
|
||||
|
||||
. += get_health_warnings(user, always_deep = FALSE)
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_FISHING_BAIT))
|
||||
. += span_smallnoticeital("It can be used as a fishing bait.")
|
||||
|
||||
if(bites_amount)
|
||||
. += span_warning("It's been bitten by someone.")
|
||||
|
||||
/obj/item/fish/proc/get_health_warnings(mob/user, always_deep = FALSE)
|
||||
if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH) && !always_deep)
|
||||
return
|
||||
if(status == FISH_DEAD)
|
||||
return span_deadsay("It's [HAS_MIND_TRAIT(user, TRAIT_NAIVE) ? "taking the big snooze" : "dead"].")
|
||||
|
||||
var/list/warnings = list()
|
||||
if(is_starving())
|
||||
warnings += "starving"
|
||||
if(!HAS_TRAIT(src, TRAIT_FISH_STASIS) && !proper_environment())
|
||||
warnings += "drowning"
|
||||
|
||||
var/health_ratio = health / initial(health)
|
||||
switch(health_ratio)
|
||||
if(0 to 0.25)
|
||||
warnings += "dying"
|
||||
if(0.25 to 0.5)
|
||||
warnings += "very unhealthy"
|
||||
if(0.5 to 0.75)
|
||||
warnings += "unhealthy"
|
||||
if(0.75 to 0.9)
|
||||
warnings += "mostly healthy"
|
||||
|
||||
if(length(warnings))
|
||||
. += span_warning("It's [english_list(warnings)].")
|
||||
|
||||
return .
|
||||
|
||||
/**
|
||||
* This proc takes a base size, base weight and deviation arguments to generate new size and weight through a gaussian distribution (bell curve)
|
||||
* Mainly used to determinate the size and weight of caught fish.
|
||||
@@ -961,7 +998,7 @@
|
||||
var/datum/reagent/medicine/strange_reagent/revival = locate() in reagents
|
||||
if(!revival)
|
||||
return
|
||||
if(reagents[revival] >= 2 * w_class)
|
||||
if(reagents[revival] >= 2 * w_class && revival.pre_rez_check(src))
|
||||
set_status(FISH_ALIVE)
|
||||
else
|
||||
balloon_alert_to_viewers("twitches for a moment!")
|
||||
|
||||
@@ -596,6 +596,7 @@ GLOBAL_LIST_INIT(spontaneous_fish_traits, populate_spontaneous_fish_traits())
|
||||
diff_traits_inheritability = 25
|
||||
catalog_description = "This fish will invert the gravity of the bait at random. May fall upward outside after being caught."
|
||||
added_difficulty = 20
|
||||
reagents_to_add = list(/datum/reagent/gravitum = 2.3)
|
||||
|
||||
/datum/fish_trait/antigrav/minigame_mod(obj/item/fishing_rod/rod, mob/fisherman, datum/fishing_challenge/minigame)
|
||||
minigame.special_effects |= FISHING_MINIGAME_RULE_ANTIGRAV
|
||||
|
||||
@@ -143,6 +143,9 @@
|
||||
/obj/item/fish/boned/make_edible(weight_val)
|
||||
return //it's all bones and no meat.
|
||||
|
||||
/obj/item/fish/boned/get_health_warnings(mob/user, always_deep = FALSE)
|
||||
return list(span_deadsay("It's bones."))
|
||||
|
||||
/obj/item/fish/lavaloop
|
||||
name = "lavaloop fish"
|
||||
fish_id = "lavaloop"
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
/obj/item/fish/mastodon/get_export_price(price, elasticity_percent)
|
||||
return ..() * 1.2 //This should push its soft-capped (it's pretty big) price a bit above the rest
|
||||
|
||||
/obj/item/fish/mastodon/get_health_warnings(mob/user, always_deep = FALSE)
|
||||
return list(span_deadsay("It's bones."))
|
||||
|
||||
///From the cursed spring
|
||||
/obj/item/fish/soul
|
||||
name = "soulfish"
|
||||
|
||||
@@ -174,6 +174,9 @@
|
||||
|
||||
///Check if tha target can be caught by the hook
|
||||
/obj/item/fishing_hook/proc/can_be_hooked(atom/target)
|
||||
if(isliving(target))
|
||||
var/mob/living/mob = target
|
||||
return (mob.mob_biotypes & MOB_AQUATIC)
|
||||
return isitem(target)
|
||||
|
||||
///Any special effect when hooking a target that's not managed by the fishing rod.
|
||||
@@ -430,12 +433,12 @@
|
||||
///From the fishing mystery box. It's basically a lazarus and a few bottles of strange reagents.
|
||||
/obj/item/storage/box/fish_revival_kit
|
||||
name = "fish revival kit"
|
||||
desc = "Become a fish doctor today."
|
||||
desc = "Become a fish doctor today. A label on the side indicates that fish require two to ten reagent units to be splashed onto them for revival, depending on size."
|
||||
illustration = "fish"
|
||||
|
||||
/obj/item/storage/box/fish_revival_kit/PopulateContents()
|
||||
new /obj/item/lazarus_injector(src)
|
||||
new /obj/item/reagent_containers/cup/bottle/strange_reagent(src)
|
||||
new /obj/item/reagent_containers/cup/bottle/fishy_reagent(src)
|
||||
new /obj/item/reagent_containers/cup(src) //to splash the reagents on the fish.
|
||||
new /obj/item/storage/fish_case(src)
|
||||
new /obj/item/storage/fish_case(src)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "fire_shark"
|
||||
icon_living = "fire_shark"
|
||||
pass_flags = PASSTABLE | PASSMOB
|
||||
mob_biotypes = MOB_ORGANIC | MOB_BEAST
|
||||
mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_AQUATIC
|
||||
speed = -0.5
|
||||
health = 16
|
||||
maxHealth = 16
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
maxHealth = 150
|
||||
health = 150
|
||||
obj_damage = 15
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 19
|
||||
attack_verb_continuous = "snips"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
response_harm_simple = "kick"
|
||||
|
||||
faction = list(FACTION_NEUTRAL)
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
|
||||
ai_controller = /datum/ai_controller/basic_controller/penguin
|
||||
///it can lay an egg?
|
||||
var/can_lay_eggs = TRUE
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
icon_dead = "base_dead"
|
||||
icon_gib = "carp_gib"
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
mob_biotypes = MOB_ORGANIC | MOB_BEAST
|
||||
mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_AQUATIC
|
||||
health = 25
|
||||
maxHealth = 25
|
||||
pressure_resistance = 200
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
density = FALSE
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
mob_biotypes = MOB_ORGANIC | MOB_BEAST
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
|
||||
gold_core_spawnable = FRIENDLY_SPAWN
|
||||
|
||||
response_help_continuous = "pets"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "frog"
|
||||
icon_living = "frog"
|
||||
icon_dead = "frog_dead"
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST|MOB_AQUATIC
|
||||
verb_say = "ribbits"
|
||||
verb_ask = "ribbits inquisitively"
|
||||
verb_exclaim = "croaks"
|
||||
|
||||
@@ -921,6 +921,10 @@
|
||||
/// The maximum amount of damage we can revive from, as a ratio of max health
|
||||
var/max_revive_damage_ratio = 2
|
||||
|
||||
// To override for subtypes.
|
||||
/datum/reagent/medicine/strange_reagent/proc/pre_rez_check(atom/thing_to_rez)
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/instant
|
||||
name = "Stranger Reagent"
|
||||
instant = TRUE
|
||||
@@ -980,6 +984,11 @@
|
||||
exposed_mob.do_jitter_animation(10)
|
||||
return
|
||||
|
||||
if(!pre_rez_check(exposed_mob))
|
||||
exposed_mob.visible_message(span_warning("[exposed_mob]'s body twitches slightly."))
|
||||
exposed_mob.do_jitter_animation(1)
|
||||
return
|
||||
|
||||
exposed_mob.visible_message(span_warning("[exposed_mob]'s body starts convulsing!"))
|
||||
exposed_mob.notify_revival("Your body is being revived with Strange Reagent!")
|
||||
exposed_mob.do_jitter_animation(10)
|
||||
@@ -1010,6 +1019,27 @@
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/fishy_reagent
|
||||
name = "Fishy Reagent"
|
||||
description = "This reagent has a chemical composition very similar to that of Strange Reagent, however, it seems to work purely and only on... fish. Or at least, aquatic creatures."
|
||||
reagent_state = LIQUID
|
||||
color = "#5ee8b3"
|
||||
metabolization_rate = 1.25 * REAGENTS_METABOLISM
|
||||
taste_description = "magnetic scales"
|
||||
ph = 0.5
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
// only revives fish.
|
||||
/datum/reagent/medicine/strange_reagent/fishy_reagent/pre_rez_check(atom/thing_to_rez)
|
||||
if(ismob(thing_to_rez))
|
||||
var/mob/living/mob_to_rez = thing_to_rez
|
||||
if(mob_to_rez.mob_biotypes & MOB_AQUATIC)
|
||||
return TRUE
|
||||
return FALSE
|
||||
if(isfish(thing_to_rez))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/reagent/medicine/mannitol
|
||||
name = "Mannitol"
|
||||
description = "Efficiently restores brain damage."
|
||||
|
||||
@@ -208,6 +208,16 @@
|
||||
required_reagents = list(/datum/reagent/medicine/omnizine/protozine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1)
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_PLANT | REACTION_TAG_OTHER
|
||||
|
||||
/datum/chemical_reaction/medicine/fishy_reagent
|
||||
results = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 3)
|
||||
required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/salt = 1, /datum/reagent/toxin/carpotoxin = 1)
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER
|
||||
|
||||
/datum/chemical_reaction/medicine/fishy_reagent/alt
|
||||
results = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 6)
|
||||
required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/salt = 1, /datum/reagent/toxin/tetrodotoxin = 1)
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_OTHER
|
||||
|
||||
/datum/chemical_reaction/medicine/mannitol
|
||||
results = list(/datum/reagent/medicine/mannitol = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1)
|
||||
|
||||
@@ -575,6 +575,29 @@
|
||||
new /mob/living/basic/pet/dog/corgi(location)
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/lifish
|
||||
required_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 1, /datum/reagent/medicine/c2/synthflesh = 1, /datum/reagent/blood = 1)
|
||||
required_temp = 374
|
||||
reaction_flags = REACTION_INSTANT
|
||||
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
|
||||
|
||||
/datum/chemical_reaction/lifish/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
// create fish possibles
|
||||
var/list/fish_types = list()
|
||||
for(var/path in subtypesof(/obj/item/fish))
|
||||
var/obj/item/fish/fake_fish = path
|
||||
if(initial(fake_fish.random_case_rarity) == FISH_RARITY_NOPE) // means they aren't mean to be randomly available
|
||||
continue
|
||||
fish_types |= path
|
||||
|
||||
// spawn from popssible fishes
|
||||
for(var/i in 1 to rand(1, created_volume)) // More flop.
|
||||
var/obj/item/fish/spawned_fish = pick(fish_types)
|
||||
new spawned_fish(location)
|
||||
return ..()
|
||||
|
||||
//monkey powder heehoo
|
||||
/datum/chemical_reaction/monkey_powder
|
||||
results = list(/datum/reagent/monkey_powder = 5)
|
||||
|
||||
@@ -134,6 +134,11 @@
|
||||
desc = "A small bottle. May be used to revive people."
|
||||
list_reagents = list(/datum/reagent/medicine/strange_reagent = 30)
|
||||
|
||||
/obj/item/reagent_containers/cup/bottle/fishy_reagent
|
||||
name = "Fishy Reagent Bottle"
|
||||
desc = "A small bottle. May be used to revive fish."
|
||||
list_reagents = list(/datum/reagent/medicine/strange_reagent/fishy_reagent = 30)
|
||||
|
||||
/obj/item/reagent_containers/cup/bottle/traitor
|
||||
name = "syndicate bottle"
|
||||
desc = "A small bottle. Contains a random nasty chemical."
|
||||
|
||||
Reference in New Issue
Block a user