From b5629413775eeb041052e62bb73a5ec676aa471b Mon Sep 17 00:00:00 2001 From: Leshana Date: Thu, 30 Mar 2017 13:09:11 -0400 Subject: [PATCH] Added a few fish as simple animals * They are simple non-hostile simple_animal's that wander around a bit. * Wandering code is overriden so they will not leave the water. And they will take damage as an unsuitable atmosphere if they do. * Fish sprites improved and animated by Kligor --- .../mob/living/simple_animal/animals/fish.dm | 73 ++++++++++++++++++ icons/mob/fish.dmi | Bin 0 -> 8029 bytes polaris.dme | 1 + 3 files changed, 74 insertions(+) create mode 100644 code/modules/mob/living/simple_animal/animals/fish.dm create mode 100644 icons/mob/fish.dmi diff --git a/code/modules/mob/living/simple_animal/animals/fish.dm b/code/modules/mob/living/simple_animal/animals/fish.dm new file mode 100644 index 00000000000..88e0dc2e298 --- /dev/null +++ b/code/modules/mob/living/simple_animal/animals/fish.dm @@ -0,0 +1,73 @@ +// Different types of fish! They are all subtypes of this tho +/mob/living/simple_animal/fish + name = "fish" + desc = "Its a fishy. No touchy fishy." + icon = 'icons/mob/fish.dmi' + meat_type = /obj/item/weapon/reagent_containers/food/snacks + + // By defautl they can be in any water turf. Subtypes might restrict to deep/shallow etc + var/global/list/suitable_turf_types = list( + /turf/simulated/floor/beach/water, + /turf/simulated/floor/beach/coastline, + /turf/simulated/floor/holofloor/beach/water, + /turf/simulated/floor/holofloor/beach/coastline, + /turf/simulated/floor/water + ) + +// Don't swim out of the water +/mob/living/simple_animal/fish/handle_wander_movement() + if(isturf(src.loc) && !resting && !buckled && canmove) //Physically capable of moving? + lifes_since_move++ //Increment turns since move (turns are life() cycles) + if(lifes_since_move >= turns_per_move) + if(!(stop_when_pulled && pulledby)) //Some animals don't move when pulled + var/moving_to = 0 // otherwise it always picks 4, fuck if I know. Did I mention fuck BYOND + moving_to = pick(cardinal) + dir = moving_to //How about we turn them the direction they are moving, yay. + var/turf/T = get_step(src,moving_to) + if(T && is_type_in_list(T, suitable_turf_types)) + Move(T) + lifes_since_move = 0 + +// Take damage if we are not in water +/mob/living/simple_animal/fish/handle_breathing() + var/turf/T = get_turf(src) + if(T && !is_type_in_list(T, suitable_turf_types)) + if(prob(50)) + say(pick("Blub", "Glub", "Burble")) + adjustBruteLoss(unsuitable_atoms_damage) + +/mob/living/simple_animal/fish/bass + name = "bass" + icon_state = "bass-swim" + icon_living = "bass-swim" + icon_dead = "bass-dead" + +/mob/living/simple_animal/fish/trout + name = "trout" + icon_state = "trout-swim" + icon_living = "trout-swim" + icon_dead = "trout-dead" + +/mob/living/simple_animal/fish/salmon + name = "salmon" + icon_state = "salmon-swim" + icon_living = "salmon-swim" + icon_dead = "salmon-dead" + +/mob/living/simple_animal/fish/perch + name = "perch" + icon_state = "perch-swim" + icon_living = "perch-swim" + icon_dead = "perch-dead" + +/mob/living/simple_animal/fish/pike + name = "pike" + icon_state = "pike-swim" + icon_living = "pike-swim" + icon_dead = "pike-dead" + +/mob/living/simple_animal/fish/koi + name = "koi" + icon_state = "koi-swim" + icon_living = "koi-swim" + icon_dead = "koi-dead" diff --git a/icons/mob/fish.dmi b/icons/mob/fish.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b665179cfef693d67e857305b56eb4651840a733 GIT binary patch literal 8029 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 inT7bD%Jx8}@%o7A6}2 literal 0 HcmV?d00001 diff --git a/polaris.dme b/polaris.dme index aede069adf8..2fd1022631f 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1695,6 +1695,7 @@ #include "code\modules\mob\living\simple_animal\animals\corgi.dm" #include "code\modules\mob\living\simple_animal\animals\crab.dm" #include "code\modules\mob\living\simple_animal\animals\farm_animals.dm" +#include "code\modules\mob\living\simple_animal\animals\fish.dm" #include "code\modules\mob\living\simple_animal\animals\giant_spider.dm" #include "code\modules\mob\living\simple_animal\animals\goose.dm" #include "code\modules\mob\living\simple_animal\animals\lizard.dm"