mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Sushi Update
Adds multiple types of sushi, made from various ingredients including rice, egg, fish, and fish eggs. - Most sushi recipes are made via table-crafting, though Tamago Sushi requires a grill to prepare. Adds multiple new types of fish for the fish tanks! Their eggs can be purchased in the CritterCare vendor. - Catfish - Will periodically reduce the filth level of the tank, helping keep it clean while you are busy. - Feederfish - Will sometimes sacrifice itself to add food to the tank for other fish. Will not sacrifice if it is the last fish, or if the food level is sufficiently high - Shrimp - Salmon - Electric Eel - Glofish - Will produce light if the the tank light is off. Adds fish items for each fish you can raise! - Most fish are simply weak weapons you can slap people with. - Sharks and baby carp do slightly higher damage, and make a biting sound on hit - Sharks can have their teeth removed by using a wirecutter on them. - Toothless sharks no longer do more damage than normal fish, nor do they make the bite sound - Shark teeth will be used in some future recipes - Salmon and catfish can be cut into filets with a knife - Shrimp and feederfish can be eaten raw, though they aren't very filling - Glofish, you guessed it, glow! They give off light like a weaker, green-colored flashlight. - Clownfish are slippery like banana peels! HONK! - Electric eels do not zap people, but will be used in a future crafting recipe or two for an improvised stun weapon. Tweaked the rate at which filth will accumulate in a tank, so hopefully it won't be a full time job to maintain a single goldfish. - Tanks with no fish will get dirty at a lower rate than before, and will not continue to get dirty if the filth_level is 7.5 or higher - Previously: 25% chance to increase by 0.1 - Now: 15% chance to increase by 0.05 - Tanks with at least one fish now will get dirty slightly less often - Previously: 25% chance to increase by 0.1 with a 30% chance to increase by 0.1 per fish if they ate that cycle - Now: 10% chance to increase by 0.1 with a 25% chance to increase by 0.1 per fish if they ate that cycle Using a fish net on a fish tank will now let you select a fish to remove, instead of selecting one at random. - Catching a fish with the fish net will now remove it from the tank and drop the appropriate fish item at your feet. Added support for special cooking via cooker machines (deepfryer, cereal maker, old candy maker, old oven) - Only the deepfryer currently utilizes it (as the other machines aren't used currently) - Inserting specific items will cook them into a new item instead of simply frying them! New deepfryer recipes: - Tofu can be deepfried into Fried Tofu! - Raw sticks (from slicing potatoes) can be deepfried into a bag of chips! - Bananas can be deepfried into Fried Bananas! (old recipe still possible) - Corn can be deepfried into a bag of Corn Chips! - This is the same as a bag of chips, except Space Mexican - Shrimp can be deepfried into Fried Shrimp! Began phase 1 of re-organizing/dividing food icons and code into multiple files - The existing icon file was nearing capacity, and the code file was incredibly long - This re-organization will make it easier for coders to find, edit, and group similar/related foods together, without worrying about overfilling the food icon file - This means we can add way more foods in the future without worrying about the icon being full! Sprites courtesy of FullOfSkittles, with a few of my own horrendous recolors/edits. - Not all of the new sprites are currently used, but are planned for use in a near-future PR to further expand the food options available.
This commit is contained in:
@@ -14,7 +14,13 @@ var/global/list/fish_eggs_list = list("dud" = /obj/item/fish_eggs,
|
||||
"goldfish" = /obj/item/fish_eggs/goldfish,
|
||||
"clownfish" = /obj/item/fish_eggs/clownfish,
|
||||
"shark" = /obj/item/fish_eggs/shark,
|
||||
"babycarp" = /obj/item/fish_eggs/babycarp,
|
||||
"baby space carp" = /obj/item/fish_eggs/babycarp,
|
||||
"catfish" = /obj/item/fish_eggs/catfish,
|
||||
"feederfish" = /obj/item/fish_eggs/feederfish,
|
||||
"salmon" = /obj/item/fish_eggs/salmon,
|
||||
"shrimp" = /obj/item/fish_eggs/shrimp,
|
||||
"electric eel" = /obj/item/fish_eggs/electric_eel,
|
||||
"glofish" = /obj/item/fish_eggs/glofish,
|
||||
)
|
||||
|
||||
/obj/item/fish_eggs/goldfish
|
||||
@@ -39,4 +45,41 @@ var/global/list/fish_eggs_list = list("dud" = /obj/item/fish_eggs,
|
||||
name = "baby space carp eggs"
|
||||
desc = "Eggs from the substantially smaller form of the intergalactic terror."
|
||||
icon_state = "babycarp_eggs"
|
||||
fish_type = "babycarp"
|
||||
fish_type = "baby space carp"
|
||||
|
||||
/obj/item/fish_eggs/catfish
|
||||
name = "catfish eggs"
|
||||
desc = "A bottom-feeding species noted for their similarity to cats and Tajaran."
|
||||
icon_state = "catfish_eggs"
|
||||
fish_type = "catfish"
|
||||
|
||||
/obj/item/fish_eggs/feederfish
|
||||
name = "feeder fish eggs"
|
||||
desc = "These generic fish are commonly found being eaten by larger fish."
|
||||
icon_state = "feederfish_eggs"
|
||||
fish_type = "feederfish"
|
||||
|
||||
/obj/item/fish_eggs/salmon
|
||||
name = "salmon eggs"
|
||||
desc = "A collection of salmon eggs."
|
||||
icon_state = "salmon_eggs"
|
||||
fish_type = "salmon"
|
||||
|
||||
/obj/item/fish_eggs/shrimp
|
||||
name = "shrimp eggs"
|
||||
desc = "Eggs for shrimp. You figured they'd be smaller though..."
|
||||
icon_state = "shrimp_eggs"
|
||||
fish_type = "shrimp"
|
||||
|
||||
/obj/item/fish_eggs/electric_eel
|
||||
name = "electric eel eggs"
|
||||
desc = "A pile of eggs for a slimy, shocking, sea-serpent."
|
||||
icon_state = "electric_eel_eggs"
|
||||
fish_type = "electric eel"
|
||||
|
||||
/obj/item/fish_eggs/glofish
|
||||
name = "glofish eggs"
|
||||
desc = "A cluster of bright neon eggs belonging to a bio-luminescent species of fish."
|
||||
icon_state = "glofish_eggs"
|
||||
fish_type = "glofish"
|
||||
|
||||
|
||||
@@ -1,4 +1,21 @@
|
||||
|
||||
var/global/list/fish_items_list = list("goldfish" = /obj/item/weapon/fish/goldfish,
|
||||
"clownfish" = /obj/item/weapon/bananapeel/clownfish,
|
||||
"shark" = /obj/item/weapon/fish/shark,
|
||||
"baby space carp" = /obj/item/weapon/fish/babycarp,
|
||||
"catfish" = /obj/item/weapon/fish/catfish,
|
||||
"feederfish" = /obj/item/weapon/reagent_containers/food/snacks/feederfish,
|
||||
"salmon" = /obj/item/weapon/fish/salmon,
|
||||
"shrimp" = /obj/item/weapon/reagent_containers/food/snacks/shrimp,
|
||||
"electric eel" = /obj/item/weapon/fish/electric_eel,
|
||||
"glofish" = /obj/item/weapon/fish/glofish
|
||||
,
|
||||
)
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Aquarium Supplies //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/egg_scoop
|
||||
name = "fish egg scoop"
|
||||
desc = "A small scoop to collect fish eggs with."
|
||||
@@ -50,3 +67,138 @@
|
||||
suicide_act(mob/user)
|
||||
viewers(user) << "<span class='warning'>[user] is vigorously scrubbing \himself raw with the [src.name]! It looks like \he's trying to commit suicide.</span>"
|
||||
return(BRUTELOSS|FIRELOSS)
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Fish Items //
|
||||
//////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/shrimp
|
||||
name = "shrimp"
|
||||
desc = "A single raw shrimp."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "shrimp_raw"
|
||||
filling_color = "#FF1C1C"
|
||||
|
||||
New()
|
||||
..()
|
||||
desc = pick("Anyway, like I was sayin', shrimp is the fruit of the sea.", "You can barbecue it, boil it, broil it, bake it, saute it.")
|
||||
reagents.add_reagent("protein", 1)
|
||||
src.bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/feederfish
|
||||
name = "shrimp"
|
||||
desc = "A tiny feeder fish. Sure doesn't look very filling..."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "feederfish"
|
||||
filling_color = "#FF1C1C"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("protein", 1)
|
||||
src.bitesize = 1
|
||||
|
||||
/obj/item/weapon/fish
|
||||
name = "fish"
|
||||
desc = "A generic fish"
|
||||
icon = 'icons/obj/fish_items.dmi'
|
||||
icon_state = "fish"
|
||||
throwforce = 1
|
||||
w_class = 2.0
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
force = 1
|
||||
attack_verb = list("slapped", "humiliated", "hit", "rubbed")
|
||||
hitsound = 'sound/effects/snap.ogg'
|
||||
|
||||
/obj/item/weapon/fish/glofish
|
||||
name = "glofish"
|
||||
desc = "A small bio-luminescent fish. Not very bright, but at least it's pretty!"
|
||||
icon_state = "glofish"
|
||||
|
||||
/obj/item/weapon/fish/glofish/New()
|
||||
..()
|
||||
set_light(2,1,"#99FF66")
|
||||
|
||||
/obj/item/weapon/fish/electric_eel
|
||||
name = "electric eel"
|
||||
desc = "An eel capable of producing a mild electric shock. Luckily it's rather weak out of water."
|
||||
icon_state = "electric_eel"
|
||||
|
||||
/obj/item/weapon/fish/shark
|
||||
name = "shark"
|
||||
desc = "Warning: Keep away from tornadoes."
|
||||
icon_state = "shark"
|
||||
hitsound = 'sound/weapons/bite.ogg'
|
||||
force = 3
|
||||
|
||||
/obj/item/weapon/fish/shark/attackby(var/obj/item/O, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/weapon/wirecutters))
|
||||
user << "You rip out the teeth of \the [src.name]!"
|
||||
new /obj/item/weapon/fish/toothless_shark(get_turf(src))
|
||||
new /obj/item/weapon/shard/shark_teeth(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/fish/toothless_shark
|
||||
name = "toothless shark"
|
||||
desc = "Looks like someone ripped it's teeth out!"
|
||||
hitsound = 'sound/effects/snap.ogg'
|
||||
|
||||
/obj/item/weapon/shard/shark_teeth
|
||||
name = "shark teeth"
|
||||
desc = "A number of teeth, supposedly from a shark."
|
||||
icon = 'icons/obj/fish_items.dmi'
|
||||
icon_state = "teeth"
|
||||
force = 2.0
|
||||
throwforce = 5.0
|
||||
g_amt = 0
|
||||
|
||||
/obj/item/weapon/fish/catfish
|
||||
name = "catfish"
|
||||
desc = "Apparently, catfish don't purr like you might have expected them to. Such a confusing name!"
|
||||
icon_state = "catfish"
|
||||
|
||||
/obj/item/weapon/fish/catfish/attackby(var/obj/item/O, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch) || istype(O, /obj/item/weapon/scalpel) || istype(O, /obj/item/weapon/kitchen/utensil/knife))
|
||||
user << "You carefully clean and gut \the [src.name]."
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/catfishmeat(get_turf(src))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/catfishmeat(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/fish/goldfish
|
||||
name = "goldfish"
|
||||
desc = "A goldfish, just like the one you never won at the county fair."
|
||||
icon_state = "goldfish"
|
||||
|
||||
/obj/item/weapon/fish/salmon
|
||||
name = "salmon"
|
||||
desc = "The second-favorite food of Space Bears, right behind crew members."
|
||||
icon_state = "salmon"
|
||||
|
||||
/obj/item/weapon/fish/salmon/attackby(var/obj/item/O, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch) || istype(O, /obj/item/weapon/scalpel) || istype(O, /obj/item/weapon/kitchen/utensil/knife))
|
||||
user << "You carefully clean and gut \the [src.name]."
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/salmonmeat(get_turf(src))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/salmonmeat(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/fish/babycarp
|
||||
name = "baby space carp"
|
||||
desc = "Substantially smaller than the space carp lurking outside the hull, but still unsettling."
|
||||
icon_state = "babycarp"
|
||||
hitsound = 'sound/weapons/bite.ogg'
|
||||
force = 3
|
||||
|
||||
/obj/item/weapon/bananapeel/clownfish
|
||||
name = "clown fish"
|
||||
desc = "Even underwater, you cannot escape HONKing."
|
||||
icon = 'icons/obj/fish_items.dmi'
|
||||
icon_state = "clownfish"
|
||||
throwforce = 1
|
||||
force = 1
|
||||
attack_verb = list("slapped", "humiliated", "hit", "rubbed")
|
||||
|
||||
@@ -212,8 +212,11 @@
|
||||
check_food_level()
|
||||
|
||||
if(water_level > 0) //Don't dirty the tank if it has no water
|
||||
if(filth_level < 10 && prob(25)) //Chance for the tank to get dirtier if the filth_level isn't 10
|
||||
if(ate_food && prob(30)) //If they ate this cycle, there is an additional chance they make a bigger mess
|
||||
if(fish_count == 0) //If the tank has no fish, algae growth can occur
|
||||
if(filth_level < 7.5 && prob(15)) //Algae growth is a low chance and cannot exceed filth_level of 7.5
|
||||
filth_level += 0.05 //Algae growth is slower than fish filth build-up
|
||||
else if(filth_level < 10 && prob(10)) //Chance for the tank to get dirtier if the filth_level isn't 10
|
||||
if(ate_food && prob(25)) //If they ate this cycle, there is an additional chance they make a bigger mess
|
||||
filth_level += fish_count * 0.1
|
||||
else //If they didn't make the big mess, make a little one
|
||||
filth_level += 0.1
|
||||
@@ -235,17 +238,22 @@
|
||||
//////////////////////////////
|
||||
|
||||
/obj/machinery/fishtank/proc/handle_special_interactions()
|
||||
var/glo_light = 0
|
||||
for(var/fish in fish_list)
|
||||
switch(fish)
|
||||
if("catfish") //Catfish have a small chance of cleaning some filth since they are a bottom-feeder
|
||||
if((filth_level > 0) && prob(25))
|
||||
if((filth_level > 0) && prob(30))
|
||||
filth_level -= 0.1
|
||||
if("feederfish") //Feeder fish have a small chance of sacrificing themselves to produce some food
|
||||
if(fish_count < 2) //Don't sacrifice the last fish, there's nothing to eat it
|
||||
continue
|
||||
if(food_level <= 7.5 && prob(25))
|
||||
if(food_level <= 5 && prob(25))
|
||||
kill_fish("feederfish") //Kill the fish to reflect it's sacrifice, but don't increase the filth_level
|
||||
food_level += 1 //The corpse became food for the other fish, ecology at it's finest
|
||||
if("glofish")
|
||||
glo_light++
|
||||
if(!light_switch && (glo_light > 0))
|
||||
set_light(2,glo_light,"#99FF66")
|
||||
check_food_level()
|
||||
check_filth_level()
|
||||
check_water_level()
|
||||
@@ -330,6 +338,22 @@
|
||||
|
||||
egg_list.Cut() //Destroy any excess eggs, clearing the egg_list
|
||||
|
||||
/obj/machinery/fishtank/proc/harvest_fish(var/mob/user)
|
||||
if(!fish_count) //Can't catch non-existant fish!
|
||||
usr << "There are no fish in \the [src] to catch!"
|
||||
return
|
||||
|
||||
var/caught_fish
|
||||
caught_fish = input("Select a fish to catch.", "Fishing", caught_fish) in fish_list //Select a fish from the tank
|
||||
if(caught_fish)
|
||||
var/dead_fish = null
|
||||
dead_fish = fish_items_list[caught_fish] //Locate the appropriate fish_item for the caught fish
|
||||
if(!dead_fish) //No fish_item found, possibly due to typo or not being listed. Do nothing.
|
||||
return
|
||||
kill_fish(caught_fish) //Kill the caught fish from the tank
|
||||
user.visible_message("[user.name] harvests \a [caught_fish] from \the [src].", "You scoop \a [caught_fish] out of \the [src].")
|
||||
new dead_fish(get_turf(user)) //Spawn the appropriate fish_item at the user's feet.
|
||||
|
||||
/obj/machinery/fishtank/proc/destroy(var/deconstruct = 0)
|
||||
var/turf/T = get_turf(src) //Store the tank's turf for atmos updating after deletion of tank
|
||||
if(!deconstruct) //Check if we are deconstructing or breaking the tank
|
||||
@@ -680,13 +704,7 @@
|
||||
return
|
||||
//Fish net
|
||||
if(istype(O, /obj/item/weapon/fish_net))
|
||||
if(fish_count > 0)
|
||||
var/caught_fish = pick(fish_list)
|
||||
usr << "You catch and remove a [caught_fish] from \the [src]."
|
||||
kill_fish(caught_fish)
|
||||
//TODO: Fish object spawning, need to get sprites before I can code the fish objects
|
||||
else
|
||||
usr << "There are no fish in \the [src] to catch!"
|
||||
harvest_fish(user)
|
||||
return
|
||||
//Tank brush
|
||||
if(istype(O, /obj/item/weapon/tank_brush))
|
||||
|
||||
Reference in New Issue
Block a user