//! **Recetas del bestiario** — las proporciones y la paleta de cada [`Bicho`], en el //! mismo espíritu que [`EstiloSer`](crate::EstiloSer) para la gente: números con //! nombre, no geometría. //! //! Un bicho no se modela: se **describe** (qué tan largo, qué tan alto de patas, qué //! cuello, qué orejas, qué cola, qué patrón) y [`bicho_sdf`](crate::bicho_sdf) lo //! arma. Por eso una especie nueva es una fila de esta tabla y no un archivo nuevo, //! y por eso dos especies parecidas comparten silueta pero no se confunden: cambian //! seis números. //! //! Las fracciones son **relativas a la altura del lomo** (o del cuerpo, según la //! familia) y el ensamble se re-escala al final a la altura pedida — así una jirafa //! y un erizo se escriben con los mismos rangos. use crate::bicho::Bicho; use crate::sdf_kit::{rgb, tono}; /// Cómo se pinta un bicho: cuerpo, vientre, un detalle (melena/ala/caparazón), un /// extra duro (pico/pezuña/cuerno) y el ojo, más un patrón opcional. #[derive(Debug, Clone, Copy)] pub struct Pinta { pub cuerpo: [f32; 3], pub vientre: [f32; 3], pub detalle: [f32; 3], pub extra: [f32; 3], pub ojo: [f32; 3], pub patron: Patron, pub patron_col: [f32; 3], /// `true` = el ojo lleva esclera blanca visible (primates, aves de dibujo); /// `false` = globo oscuro a secas, que es lo que se ve en un ciervo o un perro. pub esclera: bool, } /// Patrón de pelaje/plumaje pintado con decals sobre el cuerpo ya armado. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Patron { /// Sin marcas. Liso, /// Manchas redondas repartidas por el lomo (vaca, jirafa, ciervo, jaguar). Manchas, /// Rayas transversales (cebra, tigre, abeja). Rayas, /// Antifaz oscuro alrededor de los ojos (mapache, panda). Antifaz, /// Montura: el lomo de un color y los flancos del otro (tapir, cerdo pintado). Montura, /// Rombos a lo largo del cuerpo (serpientes). Rombos, /// Anillos a lo largo de la cola/cuerpo (mapache, coral, lémur). Anillos, /// Lunares chicos y densos (huevo, cervatillo, mariquita). Lunares, } impl Pinta { /// Paleta de pelaje a partir del color del cuerpo: vientre aclarado, detalle /// oscurecido, pezuñas grises, ojo casi negro. pub fn pelo(hex: u32) -> Self { let c = rgb(hex); Self { cuerpo: c, vientre: tono(c, 1.28), detalle: tono(c, 0.66), extra: rgb(0x4A4A50), ojo: rgb(0x1A1518), patron: Patron::Liso, patron_col: tono(c, 0.5), esclera: false, } } /// Paleta de plumaje: igual que [`pelo`](Self::pelo) pero con pico/patas cálidos. pub fn pluma(hex: u32) -> Self { let mut p = Self::pelo(hex); p.extra = rgb(0xE0A03C); p } pub fn vientre(mut self, hex: u32) -> Self { self.vientre = rgb(hex); self } pub fn detalle(mut self, hex: u32) -> Self { self.detalle = rgb(hex); self } pub fn extra(mut self, hex: u32) -> Self { self.extra = rgb(hex); self } pub fn ojo(mut self, hex: u32) -> Self { self.ojo = rgb(hex); self } pub fn con_esclera(mut self) -> Self { self.esclera = true; self } pub fn patron(mut self, p: Patron, hex: u32) -> Self { self.patron = p; self.patron_col = rgb(hex); self } } /// Orejas. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Oreja { Ninguna, /// Redondas y pegadas (oso, koala, mono). Redonda, /// Triangulares paradas (gato, zorro, lobo). Punta, /// Largas paradas (conejo, burro, liebre). Larga, /// Caídas a los costados (perro de caza, cabra, cerdo). Caida, /// Abanicos grandes (elefante). Abanico, /// Cuencos laterales de caballo/vaca (cortas, hacia afuera). Lateral, } /// Cuernos, astas y colmillos. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Cuerno { Ninguno, /// Dos cuernitos curvos hacia arriba (cabra, vaca, toro). Cortos, /// Dos cuernos largos en lira (búfalo, íbice). Largos, /// Astas ramificadas (ciervo, alce). Astas, /// Un cuerno recto sobre el hocico (rinoceronte). Nasal, /// Dos colmillos que salen de la boca (elefante, jabalí, morsa). Colmillos, } /// Colas. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Cola { Ninguna, /// Muñón (oso, conejo, cerdo). Muñon, /// Larga y fina, con penacho al final (vaca, león, jirafa). Penacho, /// Larga y tupida (zorro, ardilla, lobo). Tupida, /// Larga y desnuda, prensil (mono, ratón, lagarto). Prensil, /// Enroscada sobre el lomo (cerdo, perro nórdico). Rulo, /// Gruesa en la base, se usa de contrapeso (canguro, cocodrilo, tigre). Gruesa, /// Crin de pelo que cuelga (caballo, burro). Crin, } /// **Cuadrúpedo**: la receta más poblada del bestiario (mamíferos terrestres y el /// grueso de la granja). Todas las fracciones son de la **altura del lomo**. #[derive(Debug, Clone, Copy)] pub struct Cuadrupedo { /// Largo del tronco (sin cuello ni cola). pub largo: f32, /// Alto de la panza = dónde empiezan las patas. pub pata: f32, /// Radio de una pata. pub pata_r: f32, /// Radio del tronco a media eslora. pub cuerpo_r: f32, /// Radio del pecho relativo al tronco (`1` = parejo; oso `1.25`). pub pecho: f32, /// Radio de la grupa relativo al tronco (caballo `1.05`, hiena `0.8`). pub grupa: f32, /// Combado del lomo: `+` arquea hacia arriba (gato, oso), `-` lo hunde (vaca vieja). pub lomo: f32, /// Largo del cuello (`0` = cabeza pegada al tronco). pub cuello: f32, /// Ángulo del cuello desde la horizontal: `0` = adelante, `1.4` = casi vertical. pub cuello_ang: f32, /// Radio del cuello. pub cuello_r: f32, /// Radio de la cabeza. pub cabeza: f32, /// Semiejes de la cabeza relativos a `cabeza` (ancho, alto, largo). pub craneo: [f32; 3], /// Largo del hocico en radios de cabeza (`0` = cara chata: gato, oso panda). pub hocico: f32, /// Radio del hocico relativo a la cabeza. pub hocico_r: f32, pub oreja: Oreja, pub oreja_tam: f32, pub cuerno: Cuerno, pub cola: Cola, /// Largo de la cola en fracciones del tronco. pub cola_len: f32, /// Jorobas sobre el lomo (`1` dromedario, `2` camello bactriano, bisonte `1` alta). pub jorobas: u8, pub joroba_alto: f32, /// Melena alrededor del cuello (león) o crin sobre él (caballo): `0` = sin. pub melena: f32, /// Lana: bultos mullidos sobre el cuerpo (oveja, alpaca). pub lana: f32, /// Púas: conos cortos por el lomo (erizo, puercoespín). pub puas: f32, /// Trompa (elefante, tapir, oso hormiguero): largo en radios de cabeza. pub trompa: f32, /// Radio del ojo relativo a la cabeza. pub ojo: f32, /// Cuánto se separan los ojos del frente (`0` = al frente como un primate, /// `1` = a los costados como una presa). pub ojo_lateral: f32, /// Se para en dos patas (canguro, oso hormiguero erguido, suricata). pub bipedo: bool, pub pinta: Pinta, } impl Default for Cuadrupedo { /// El perro genérico: la silueta media desde la que se escriben las demás. fn default() -> Self { Self { largo: 1.15, pata: 0.46, pata_r: 0.075, cuerpo_r: 0.26, pecho: 1.06, grupa: 1.0, lomo: 0.02, cuello: 0.22, cuello_ang: 0.55, cuello_r: 0.14, cabeza: 0.27, craneo: [0.92, 0.92, 1.06], hocico: 0.85, hocico_r: 0.44, oreja: Oreja::Punta, oreja_tam: 1.0, cuerno: Cuerno::Ninguno, cola: Cola::Tupida, cola_len: 0.55, jorobas: 0, joroba_alto: 0.0, melena: 0.0, lana: 0.0, puas: 0.0, trompa: 0.0, ojo: 0.19, ojo_lateral: 0.45, bipedo: false, pinta: Pinta::pelo(0xB08048), } } } /// Pico de un ave. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Pico { /// Cono corto de granívoro (gorrión, cardenal). Corto, /// Cono largo y recto (garza, cigüeña, martín pescador). Largo, /// Ganchudo (águila, cóndor, loro). Curvo, /// Enorme y liviano (tucán, pelícano). Ancho, /// Aguja (colibrí). Aguja, /// Pala achatada (pato, ganso, cisne). Pala, } /// Copete/cresta. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Cresta { Ninguna, /// Punta de plumas hacia arriba/atrás (cardenal, quetzal). Punta, /// Cresta carnosa roja (gallo). Gallo, /// Penacho largo hacia atrás (cacatúa, pavo real). Penacho, /// Penachos de oreja (búho). Orejas, } /// Cómo llevan las alas. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Ala { /// Plegadas contra el cuerpo (lo normal en el suelo). Plegada, /// Extendidas (planeando). Abierta, /// Batiendo: el ángulo sale de la fase (colibrí, mariposa, ave en vuelo). Bate, /// Aletas: no vuela (pingüino). Aleta, } /// Cola de un ave. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum ColaAve { Corta, /// Dos plumas largas (guacamayo, quetzal, golondrina). Larga, /// Abanico de plumas (gallo, paloma). Abanico, /// La rueda del pavo real (abanico grande con ocelos). Rueda, } /// **Ave**: cuerpo ovoide inclinado + cuello + cabeza + pico, sobre dos patas. /// Fracciones relativas a la **altura total del ave parada**. #[derive(Debug, Clone, Copy)] pub struct Ave { /// Semiejes del cuerpo (ancho, alto, largo). pub cuerpo: [f32; 3], /// Inclinación del eje del cuerpo: `0` = vertical (pingüino), `1.3` = horizontal /// (gorrión posado, gallina). pub inclina: f32, pub cuello: f32, /// Curvatura en S del cuello (cisne, garza). pub cuello_s: f32, pub cuello_r: f32, pub cabeza: f32, pub pico: Pico, pub pico_len: f32, pub pico_r: f32, pub cresta: Cresta, pub ala: Ala, pub cola: ColaAve, pub cola_len: f32, /// Largo de las patas (`0.05` gorrión, `0.55` flamenco). pub pata: f32, pub pata_r: f32, pub ojo: f32, pub pinta: Pinta, } impl Default for Ave { /// El pájaro genérico posado (gorrión). fn default() -> Self { Self { cuerpo: [0.30, 0.32, 0.40], inclina: 1.05, cuello: 0.10, cuello_s: 0.0, cuello_r: 0.14, cabeza: 0.22, pico: Pico::Corto, pico_len: 0.9, pico_r: 0.42, cresta: Cresta::Ninguna, ala: Ala::Plegada, cola: ColaAve::Corta, cola_len: 0.5, pata: 0.14, pata_r: 0.028, ojo: 0.30, pinta: Pinta::pluma(0x8A6A48), } } } /// **Reptante**: lo que va bajo y largo — serpientes (sin patas), lagartos y /// cocodrilos (cuatro patas cortas y abiertas), tortugas (con caparazón), ranas. #[derive(Debug, Clone, Copy)] pub struct Reptante { /// Largo del cuerpo en fracciones de… su propio grosor: acá manda el largo, y la /// escala final la fija la altura pedida. pub largo: f32, pub grosor: f32, /// Cuántas ondas dibuja el cuerpo en el piso (serpiente). pub ondas: f32, pub amplitud: f32, /// Patas (`0` serpiente, `4` lagarto). pub patas: u8, pub pata: f32, /// Cuánto se abren las patas hacia afuera (reptil = mucho). pub abertura: f32, pub cabeza: f32, /// Largo del hocico en radios de cabeza (cocodrilo = 3). pub hocico: f32, /// Capucha desplegada (cobra). pub capucha: f32, /// Cresta dorsal de púas (iguana, dragón). pub cresta: f32, /// Caparazón abovedado (tortuga). pub caparazon: f32, /// Cascabel en la punta de la cola. pub cascabel: bool, /// Lengua bífida asomada. pub lengua: bool, /// Se levanta el tercio delantero (cobra alzada, iguana atenta). pub alza: f32, /// Cuerpo agazapado de anfibio: patas traseras plegadas y ojos arriba. pub anfibio: bool, pub ojo: f32, pub pinta: Pinta, } impl Default for Reptante { /// La serpiente genérica. fn default() -> Self { Self { largo: 6.0, grosor: 0.5, ondas: 1.6, amplitud: 1.1, patas: 0, pata: 0.5, abertura: 0.9, cabeza: 0.72, hocico: 1.0, capucha: 0.0, cresta: 0.0, caparazon: 0.0, cascabel: false, lengua: true, alza: 0.0, anfibio: false, ojo: 0.26, pinta: Pinta::pelo(0x5C8C3E), } } } /// **Nadador**: pez, delfín, ballena, tiburón. Va con el cuerpo horizontal y su /// altura de referencia es la del cuerpo (el catálogo lo posa flotando). #[derive(Debug, Clone, Copy)] pub struct Nadador { /// Semiejes del cuerpo (ancho, alto, largo). pub cuerpo: [f32; 3], /// Aleta caudal vertical (peces) u horizontal (cetáceos). pub caudal_vertical: bool, pub caudal: f32, pub dorsal: f32, pub pectoral: f32, /// Hocico prolongado (delfín, pez espada). pub hocico: f32, /// Boca abierta hacia abajo (tiburón). pub boca: f32, /// Tentáculos (pulpo, medusa): cuántos y qué largo. pub tentaculos: u8, pub tentaculo_len: f32, pub ojo: f32, pub pinta: Pinta, } impl Default for Nadador { fn default() -> Self { Self { cuerpo: [0.26, 0.42, 0.72], caudal_vertical: true, caudal: 0.45, dorsal: 0.35, pectoral: 0.25, hocico: 0.0, boca: 0.0, tentaculos: 0, tentaculo_len: 0.0, ojo: 0.16, pinta: Pinta::pelo(0xE08A3C), } } } /// Alas de un artrópodo. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum AlaBicho { Ninguna, /// Cuatro alas anchas y planas, pintadas (mariposa). Mariposa, /// Membranas finas y alargadas (abeja, libélula, mosca). Membrana, /// Élitros duros que cubren el abdomen (escarabajo, mariquita). Elitros, } /// **Insecto y afines** (artrópodos y caracoles): cadena de segmentos + patas finas. #[derive(Debug, Clone, Copy)] pub struct Insecto { /// Segmentos del cuerpo (cabeza, tórax, abdomen…): radios sucesivos. pub segmentos: [f32; 3], /// Largo total del cuerpo. pub largo: f32, pub patas: u8, pub pata: f32, /// Cuánto se arquean las patas. pub arco: f32, pub alas: AlaBicho, pub ala_len: f32, pub antenas: f32, /// Pinzas delanteras (escorpión, cangrejo). pub pinzas: f32, /// Cola en alto con aguijón (escorpión). pub aguijon: f32, /// Concha en espiral (caracol). pub concha: f32, /// Ojos sobre pedúnculos (caracol, cangrejo). pub pedunculos: bool, pub ojo: f32, pub pinta: Pinta, } impl Default for Insecto { fn default() -> Self { Self { segmentos: [0.30, 0.36, 0.44], largo: 1.0, patas: 6, pata: 0.45, arco: 0.5, alas: AlaBicho::Ninguna, ala_len: 0.9, antenas: 0.4, pinzas: 0.0, aguijon: 0.0, concha: 0.0, pedunculos: false, ojo: 0.22, pinta: Pinta::pelo(0x3A3A42), } } } /// La receta de un bicho, por familia morfológica. #[derive(Debug, Clone, Copy)] pub enum Receta { Cuatro(Cuadrupedo), Ave(Ave), Reptante(Reptante), Nadador(Nadador), Insecto(Insecto), } impl Receta { /// Nombre de la familia (para la UI y los informes). pub fn familia(&self) -> &'static str { match self { Receta::Cuatro(_) => "cuadrúpedo", Receta::Ave(_) => "ave", Receta::Reptante(_) => "reptante", Receta::Nadador(_) => "nadador", Receta::Insecto(_) => "insecto", } } /// La paleta del bicho, sea de la familia que sea. pub fn pinta(&self) -> &Pinta { match self { Receta::Cuatro(c) => &c.pinta, Receta::Ave(a) => &a.pinta, Receta::Reptante(r) => &r.pinta, Receta::Nadador(n) => &n.pinta, Receta::Insecto(i) => &i.pinta, } } } /// **La receta de cada especie.** Una fila por bicho: lo que la distingue, sobre el /// default de su familia. pub fn receta(b: Bicho) -> Receta { match b { // ---------------- Granja ---------------- Bicho::Vaca => Receta::Cuatro(Cuadrupedo { largo: 1.35, pata: 0.50, cuerpo_r: 0.31, grupa: 1.06, cuello: 0.20, cuello_ang: 0.30, cuello_r: 0.19, cabeza: 0.26, craneo: [0.86, 0.92, 1.20], hocico: 1.0, hocico_r: 0.62, oreja: Oreja::Lateral, cuerno: Cuerno::Cortos, cola: Cola::Penacho, cola_len: 0.8, ojo_lateral: 0.8, pinta: Pinta::pelo(0xF2EEE6) .detalle(0x33302E) .extra(0xE8E0CE) .patron(Patron::Manchas, 0x2E2B29), ..Default::default() }), Bicho::Toro => Receta::Cuatro(Cuadrupedo { largo: 1.30, pata: 0.48, cuerpo_r: 0.34, pecho: 1.20, grupa: 0.98, lomo: 0.06, cuello: 0.15, cuello_ang: 0.18, cuello_r: 0.25, cabeza: 0.27, craneo: [0.94, 0.94, 1.10], hocico: 0.85, hocico_r: 0.66, oreja: Oreja::Lateral, cuerno: Cuerno::Largos, cola: Cola::Penacho, cola_len: 0.75, jorobas: 1, joroba_alto: 0.10, ojo_lateral: 0.75, pinta: Pinta::pelo(0x4A3428).extra(0xD8CFC0), ..Default::default() }), Bicho::Oveja => Receta::Cuatro(Cuadrupedo { largo: 1.05, pata: 0.42, pata_r: 0.062, cuerpo_r: 0.33, cuello: 0.10, cuello_ang: 0.35, cuello_r: 0.16, cabeza: 0.22, craneo: [0.86, 0.94, 1.10], hocico: 0.9, hocico_r: 0.52, oreja: Oreja::Caida, oreja_tam: 0.9, cola: Cola::Muñon, lana: 1.0, ojo_lateral: 0.8, pinta: Pinta::pelo(0xF0EAE0).detalle(0x2E2C2E).extra(0x2E2C2E), ..Default::default() }), Bicho::Cabra => Receta::Cuatro(Cuadrupedo { largo: 1.05, pata: 0.50, pata_r: 0.055, cuerpo_r: 0.24, cuello: 0.18, cuello_ang: 0.55, cuello_r: 0.13, cabeza: 0.22, craneo: [0.82, 0.90, 1.16], hocico: 1.0, hocico_r: 0.48, oreja: Oreja::Caida, cuerno: Cuerno::Cortos, cola: Cola::Muñon, ojo_lateral: 0.8, pinta: Pinta::pelo(0xD8CDB6).detalle(0x6A5A46).extra(0xCFC6B0), ..Default::default() }), Bicho::Cerdo => Receta::Cuatro(Cuadrupedo { largo: 1.25, pata: 0.34, pata_r: 0.070, cuerpo_r: 0.36, pecho: 0.98, grupa: 1.05, cuello: 0.05, cuello_ang: 0.20, cuello_r: 0.22, cabeza: 0.24, craneo: [0.90, 0.86, 1.20], hocico: 1.0, hocico_r: 0.60, oreja: Oreja::Caida, oreja_tam: 1.1, cola: Cola::Rulo, cola_len: 0.3, ojo: 0.15, ojo_lateral: 0.8, pinta: Pinta::pelo(0xE8A8A4).detalle(0xC77E80), ..Default::default() }), Bicho::Caballo => Receta::Cuatro(Cuadrupedo { largo: 1.25, pata: 0.58, pata_r: 0.062, cuerpo_r: 0.27, pecho: 1.10, grupa: 1.08, cuello: 0.42, cuello_ang: 0.85, cuello_r: 0.15, cabeza: 0.22, craneo: [0.78, 0.92, 1.32], hocico: 1.1, hocico_r: 0.55, oreja: Oreja::Punta, oreja_tam: 0.8, cola: Cola::Crin, cola_len: 0.9, melena: 0.8, ojo_lateral: 0.85, pinta: Pinta::pelo(0x8A5A32).detalle(0x35281E).extra(0x3A332C), ..Default::default() }), Bicho::Burro => Receta::Cuatro(Cuadrupedo { largo: 1.15, pata: 0.52, pata_r: 0.058, cuerpo_r: 0.26, cuello: 0.30, cuello_ang: 0.80, cuello_r: 0.14, cabeza: 0.23, craneo: [0.80, 0.92, 1.26], hocico: 1.05, hocico_r: 0.55, oreja: Oreja::Larga, oreja_tam: 1.2, cola: Cola::Crin, cola_len: 0.7, melena: 0.3, ojo_lateral: 0.85, pinta: Pinta::pelo(0x9A9490).vientre(0xD6D0C6).detalle(0x4A453F), ..Default::default() }), Bicho::Gallina => Receta::Ave(Ave { cuerpo: [0.32, 0.34, 0.42], inclina: 1.10, cuello: 0.16, cabeza: 0.19, pico: Pico::Corto, pico_len: 0.8, cresta: Cresta::Gallo, cola: ColaAve::Abanico, cola_len: 0.45, pata: 0.16, pinta: Pinta::pluma(0xF0EAE0).detalle(0xD8CEBE).extra(0xE0A03C), ..Default::default() }), Bicho::Gallo => Receta::Ave(Ave { cuerpo: [0.30, 0.36, 0.40], inclina: 0.85, cuello: 0.24, cabeza: 0.19, pico: Pico::Corto, cresta: Cresta::Gallo, cola: ColaAve::Abanico, cola_len: 0.75, pata: 0.20, pinta: Pinta::pluma(0x8A3A2A) .vientre(0x2E2A2E) .detalle(0x1F6B4A) .extra(0xE8B23C), ..Default::default() }), Bicho::Pato => Receta::Ave(Ave { cuerpo: [0.32, 0.30, 0.46], inclina: 1.25, cuello: 0.16, cuello_r: 0.16, cabeza: 0.19, pico: Pico::Pala, pico_len: 1.0, cola: ColaAve::Corta, pata: 0.10, pinta: Pinta::pluma(0xF0EDE6).detalle(0x2E6B4A).extra(0xE8A030), ..Default::default() }), Bicho::Ganso => Receta::Ave(Ave { cuerpo: [0.30, 0.30, 0.44], inclina: 1.15, cuello: 0.34, cuello_s: 0.25, cuello_r: 0.11, cabeza: 0.16, pico: Pico::Pala, pata: 0.14, pinta: Pinta::pluma(0xE8E2D6).detalle(0x8A8276).extra(0xE07A28), ..Default::default() }), // ---------------- Compañía ---------------- Bicho::Perro => Receta::Cuatro(Cuadrupedo { cola: Cola::Tupida, cola_len: 0.6, oreja: Oreja::Caida, pinta: Pinta::pelo(0xB8813E).vientre(0xE6D2B0).detalle(0x6B4A22), ..Default::default() }), Bicho::Gato => Receta::Cuatro(Cuadrupedo { largo: 1.10, pata: 0.44, pata_r: 0.055, cuerpo_r: 0.21, lomo: 0.10, cuello: 0.10, cuello_ang: 0.45, cuello_r: 0.12, cabeza: 0.24, craneo: [1.0, 0.94, 0.92], hocico: 0.35, hocico_r: 0.5, oreja: Oreja::Punta, oreja_tam: 1.2, cola: Cola::Prensil, cola_len: 0.95, ojo: 0.22, ojo_lateral: 0.30, pinta: Pinta::pelo(0x8A8A92) .vientre(0xE0DCD4) .ojo(0x3A8A5A) .patron(Patron::Rayas, 0x55555E), ..Default::default() }), // ---------------- Bosque templado ---------------- Bicho::Ciervo => Receta::Cuatro(Cuadrupedo { largo: 1.10, pata: 0.58, pata_r: 0.048, cuerpo_r: 0.23, cuello: 0.34, cuello_ang: 1.0, cuello_r: 0.12, cabeza: 0.20, craneo: [0.80, 0.90, 1.24], hocico: 1.0, hocico_r: 0.48, oreja: Oreja::Larga, oreja_tam: 0.9, cuerno: Cuerno::Astas, cola: Cola::Muñon, ojo_lateral: 0.85, pinta: Pinta::pelo(0xA9743E) .vientre(0xEADCC4) .extra(0xD8CDB4) .patron(Patron::Lunares, 0xF0E4CE), ..Default::default() }), Bicho::Alce => Receta::Cuatro(Cuadrupedo { largo: 1.25, pata: 0.62, pata_r: 0.062, cuerpo_r: 0.28, pecho: 1.14, jorobas: 1, joroba_alto: 0.13, cuello: 0.22, cuello_ang: 0.62, cuello_r: 0.18, cabeza: 0.23, craneo: [0.80, 0.92, 1.34], hocico: 1.15, hocico_r: 0.62, oreja: Oreja::Larga, cuerno: Cuerno::Astas, cola: Cola::Muñon, ojo_lateral: 0.85, pinta: Pinta::pelo(0x4E3A2A).detalle(0x2E241C).extra(0xC9B189), ..Default::default() }), Bicho::Zorro => Receta::Cuatro(Cuadrupedo { largo: 1.15, pata: 0.42, pata_r: 0.05, cuerpo_r: 0.21, cuello: 0.12, cuello_ang: 0.40, cuello_r: 0.13, cabeza: 0.23, craneo: [0.92, 0.90, 1.14], hocico: 1.15, hocico_r: 0.36, oreja: Oreja::Punta, oreja_tam: 1.25, cola: Cola::Tupida, cola_len: 0.95, ojo_lateral: 0.4, pinta: Pinta::pelo(0xD2712A).vientre(0xF2ECE2).detalle(0x2E2A28), ..Default::default() }), Bicho::Lobo => Receta::Cuatro(Cuadrupedo { largo: 1.25, pata: 0.50, pata_r: 0.062, cuerpo_r: 0.24, pecho: 1.12, cuello: 0.16, cuello_ang: 0.35, cuello_r: 0.17, cabeza: 0.24, craneo: [0.90, 0.90, 1.18], hocico: 1.1, hocico_r: 0.42, oreja: Oreja::Punta, cola: Cola::Tupida, cola_len: 0.7, melena: 0.25, ojo_lateral: 0.35, pinta: Pinta::pelo(0x8A8890).vientre(0xD8D4CC).detalle(0x4A4850).ojo(0xC8A020), ..Default::default() }), Bicho::Oso => Receta::Cuatro(Cuadrupedo { largo: 1.20, pata: 0.40, pata_r: 0.105, cuerpo_r: 0.36, pecho: 1.18, lomo: 0.10, cuello: 0.06, cuello_ang: 0.25, cuello_r: 0.24, cabeza: 0.27, craneo: [0.96, 0.92, 1.06], hocico: 0.75, hocico_r: 0.52, oreja: Oreja::Redonda, cola: Cola::Muñon, ojo: 0.14, ojo_lateral: 0.35, pinta: Pinta::pelo(0x6B4A2E).detalle(0x3E2A1C), ..Default::default() }), Bicho::Panda => Receta::Cuatro(Cuadrupedo { largo: 1.15, pata: 0.36, pata_r: 0.11, cuerpo_r: 0.38, pecho: 1.10, lomo: 0.06, cuello: 0.04, cuello_r: 0.24, cabeza: 0.30, craneo: [1.02, 0.96, 0.96], hocico: 0.45, hocico_r: 0.50, oreja: Oreja::Redonda, oreja_tam: 1.3, cola: Cola::Muñon, ojo: 0.13, ojo_lateral: 0.25, pinta: Pinta::pelo(0xF2EFE8) .detalle(0x24222A) .extra(0x24222A) .patron(Patron::Antifaz, 0x24222A), ..Default::default() }), Bicho::Mapache => Receta::Cuatro(Cuadrupedo { largo: 1.10, pata: 0.36, pata_r: 0.06, cuerpo_r: 0.26, cuello: 0.06, cuello_r: 0.16, cabeza: 0.25, craneo: [0.98, 0.90, 1.02], hocico: 0.95, hocico_r: 0.36, oreja: Oreja::Redonda, oreja_tam: 1.1, cola: Cola::Tupida, cola_len: 0.8, ojo_lateral: 0.3, pinta: Pinta::pelo(0x8E8A88) .vientre(0xC8C4BE) .detalle(0x33313A) .patron(Patron::Antifaz, 0x33313A), ..Default::default() }), Bicho::Conejo => Receta::Cuatro(Cuadrupedo { largo: 0.95, pata: 0.30, pata_r: 0.070, cuerpo_r: 0.30, lomo: 0.12, cuello: 0.04, cuello_r: 0.18, cabeza: 0.26, craneo: [0.92, 0.92, 1.10], hocico: 0.5, hocico_r: 0.44, oreja: Oreja::Larga, oreja_tam: 1.7, cola: Cola::Muñon, ojo: 0.2, ojo_lateral: 0.7, pinta: Pinta::pelo(0xC9BCAA).vientre(0xF2EDE4).detalle(0xE8DED0), ..Default::default() }), Bicho::Ardilla => Receta::Cuatro(Cuadrupedo { largo: 0.85, pata: 0.28, pata_r: 0.055, cuerpo_r: 0.26, lomo: 0.14, cuello: 0.04, cuello_r: 0.16, cabeza: 0.26, craneo: [0.94, 0.94, 1.02], hocico: 0.6, hocico_r: 0.40, oreja: Oreja::Punta, oreja_tam: 0.9, cola: Cola::Tupida, cola_len: 1.35, ojo: 0.24, ojo_lateral: 0.45, pinta: Pinta::pelo(0xB2622C).vientre(0xEEE4D2).detalle(0x8A4A20), ..Default::default() }), Bicho::Raton => Receta::Cuatro(Cuadrupedo { largo: 1.0, pata: 0.26, pata_r: 0.045, cuerpo_r: 0.28, lomo: 0.10, cuello: 0.03, cuello_r: 0.16, cabeza: 0.24, craneo: [0.88, 0.88, 1.16], hocico: 1.1, hocico_r: 0.32, oreja: Oreja::Redonda, oreja_tam: 1.6, cola: Cola::Prensil, cola_len: 1.2, ojo: 0.18, ojo_lateral: 0.6, pinta: Pinta::pelo(0x9A938C).vientre(0xE4DED4).detalle(0xE0AEB0), ..Default::default() }), Bicho::Erizo => Receta::Cuatro(Cuadrupedo { largo: 0.95, pata: 0.22, pata_r: 0.045, cuerpo_r: 0.34, lomo: 0.10, cuello: 0.02, cuello_r: 0.16, cabeza: 0.20, craneo: [0.86, 0.86, 1.22], hocico: 1.1, hocico_r: 0.34, oreja: Oreja::Redonda, oreja_tam: 0.7, cola: Cola::Ninguna, puas: 1.0, ojo: 0.17, ojo_lateral: 0.5, pinta: Pinta::pelo(0xC8AE8A).vientre(0xE0CFB6).detalle(0x4A3A2C), ..Default::default() }), Bicho::Buho => Receta::Ave(Ave { cuerpo: [0.34, 0.42, 0.32], inclina: 0.25, cuello: 0.04, cuello_r: 0.20, cabeza: 0.30, pico: Pico::Curvo, pico_len: 0.5, pico_r: 0.34, cresta: Cresta::Orejas, cola: ColaAve::Corta, pata: 0.10, ojo: 0.40, pinta: Pinta::pluma(0x8A7048) .vientre(0xD8C8A8) .detalle(0x5A4630) .extra(0xE8C24A) .ojo(0xF2C34A), ..Default::default() }), // ---------------- Aves ---------------- Bicho::Pajaro => Receta::Ave(Ave::default()), Bicho::Gorrion => Receta::Ave(Ave { pinta: Pinta::pluma(0x8A6A46) .vientre(0xD8CCBA) .detalle(0x5A4430) .extra(0x3A342E), ..Default::default() }), Bicho::Cardenal => Receta::Ave(Ave { cuerpo: [0.29, 0.32, 0.40], cresta: Cresta::Punta, cola: ColaAve::Larga, cola_len: 0.65, pinta: Pinta::pluma(0xD82E2A) .vientre(0xE85A4A) .detalle(0x8A1E1C) .extra(0xE8A030), ..Default::default() }), Bicho::Cuervo => Receta::Ave(Ave { cuerpo: [0.30, 0.32, 0.46], inclina: 1.15, cuello: 0.12, cabeza: 0.21, pico: Pico::Largo, pico_len: 0.9, pico_r: 0.34, cola: ColaAve::Abanico, pinta: Pinta::pluma(0x24242C).vientre(0x33333C).detalle(0x14141A).extra(0x1A1A20), ..Default::default() }), Bicho::Colibri => Receta::Ave(Ave { cuerpo: [0.24, 0.26, 0.34], inclina: 1.0, cuello: 0.06, cabeza: 0.18, pico: Pico::Aguja, pico_len: 2.4, pico_r: 0.16, ala: Ala::Bate, cola: ColaAve::Corta, pata: 0.04, pinta: Pinta::pluma(0x1EA06A) .vientre(0xE8D8A0) .detalle(0xD03060) .extra(0x2A2A30), ..Default::default() }), Bicho::Loro => Receta::Ave(Ave { cuerpo: [0.28, 0.32, 0.38], inclina: 0.65, cuello: 0.08, cabeza: 0.22, pico: Pico::Curvo, pico_len: 0.7, pico_r: 0.40, cola: ColaAve::Larga, cola_len: 0.8, pata: 0.10, pinta: Pinta::pluma(0x2EA83E) .vientre(0xE8D23A) .detalle(0xD03028) .extra(0x3A3A42), ..Default::default() }), Bicho::Guacamayo => Receta::Ave(Ave { cuerpo: [0.30, 0.34, 0.42], inclina: 0.60, cuello: 0.08, cabeza: 0.24, pico: Pico::Curvo, pico_len: 0.85, pico_r: 0.46, cola: ColaAve::Larga, cola_len: 1.5, pata: 0.10, pinta: Pinta::pluma(0xE02820) .vientre(0xE8A020) .detalle(0x1E6ED8) .extra(0x2A2A30) .patron(Patron::Rayas, 0x1EA84A), ..Default::default() }), Bicho::Tucan => Receta::Ave(Ave { cuerpo: [0.28, 0.32, 0.40], inclina: 0.75, cuello: 0.08, cabeza: 0.22, pico: Pico::Ancho, pico_len: 2.0, pico_r: 0.85, cola: ColaAve::Corta, pata: 0.12, pinta: Pinta::pluma(0x1E1C24) .vientre(0xF2E8C0) .detalle(0xE8A020) .extra(0xE8901E), ..Default::default() }), Bicho::Quetzal => Receta::Ave(Ave { cuerpo: [0.26, 0.30, 0.38], inclina: 0.55, cuello: 0.08, cabeza: 0.20, pico: Pico::Corto, cresta: Cresta::Punta, cola: ColaAve::Larga, cola_len: 2.0, pata: 0.09, pinta: Pinta::pluma(0x1AA07A) .vientre(0xD02A34) .detalle(0x148A6A) .extra(0xE8C040), ..Default::default() }), Bicho::Flamenco => Receta::Ave(Ave { cuerpo: [0.22, 0.22, 0.30], inclina: 1.1, cuello: 0.42, cuello_s: 0.55, cuello_r: 0.055, cabeza: 0.11, pico: Pico::Curvo, pico_len: 1.2, pico_r: 0.5, pata: 0.55, pata_r: 0.018, ojo: 0.28, pinta: Pinta::pluma(0xF090A8) .vientre(0xF8C0CC) .detalle(0xD8607E) .extra(0x2A2A32), ..Default::default() }), Bicho::Garza => Receta::Ave(Ave { cuerpo: [0.20, 0.22, 0.32], inclina: 1.15, cuello: 0.40, cuello_s: 0.40, cuello_r: 0.05, cabeza: 0.11, pico: Pico::Largo, pico_len: 2.2, pico_r: 0.24, cresta: Cresta::Punta, pata: 0.48, pata_r: 0.017, pinta: Pinta::pluma(0xE8E8E2).vientre(0xF2F2EE).detalle(0xC6C6C0).extra(0xE8C020), ..Default::default() }), Bicho::Cisne => Receta::Ave(Ave { cuerpo: [0.32, 0.28, 0.44], inclina: 1.25, cuello: 0.46, cuello_s: 0.75, cuello_r: 0.065, cabeza: 0.13, pico: Pico::Pala, pico_len: 0.9, pata: 0.08, pinta: Pinta::pluma(0xF6F4EE).vientre(0xFFFFFA).detalle(0xDCD8D0).extra(0xE86A20), ..Default::default() }), Bicho::Pelicano => Receta::Ave(Ave { cuerpo: [0.32, 0.32, 0.46], inclina: 1.05, cuello: 0.22, cuello_s: 0.3, cabeza: 0.17, pico: Pico::Ancho, pico_len: 2.4, pico_r: 0.7, pata: 0.12, pinta: Pinta::pluma(0xE4E2DA).vientre(0xF2F0EA).detalle(0xB8B4AC).extra(0xE8B040), ..Default::default() }), Bicho::Aguila => Receta::Ave(Ave { cuerpo: [0.32, 0.38, 0.44], inclina: 0.5, cuello: 0.10, cabeza: 0.22, pico: Pico::Curvo, pico_len: 0.8, pico_r: 0.42, ala: Ala::Abierta, cola: ColaAve::Abanico, cola_len: 0.6, pata: 0.14, pinta: Pinta::pluma(0x5A4030) .vientre(0x8A6848) .detalle(0xF0EDE4) .extra(0xE8B830) .ojo(0xE8C040), ..Default::default() }), Bicho::Condor => Receta::Ave(Ave { cuerpo: [0.36, 0.40, 0.46], inclina: 0.45, cuello: 0.14, cuello_r: 0.10, cabeza: 0.20, pico: Pico::Curvo, pico_len: 0.85, pico_r: 0.44, ala: Ala::Abierta, cola: ColaAve::Abanico, pata: 0.13, pinta: Pinta::pluma(0x24242A) .vientre(0x33333A) .detalle(0xF0EEE8) .extra(0xD8B08A), ..Default::default() }), Bicho::PavoReal => Receta::Ave(Ave { cuerpo: [0.28, 0.32, 0.38], inclina: 0.7, cuello: 0.26, cuello_r: 0.09, cabeza: 0.15, pico: Pico::Corto, cresta: Cresta::Penacho, cola: ColaAve::Rueda, cola_len: 1.6, pata: 0.22, pinta: Pinta::pluma(0x1A6AA8) .vientre(0x2A8AC0) .detalle(0x1E8A6A) .extra(0x3A3A42) .patron(Patron::Lunares, 0xE8C040), ..Default::default() }), Bicho::Avestruz => Receta::Ave(Ave { cuerpo: [0.34, 0.34, 0.42], inclina: 1.0, cuello: 0.50, cuello_s: 0.2, cuello_r: 0.07, cabeza: 0.12, pico: Pico::Corto, cola: ColaAve::Corta, pata: 0.52, pata_r: 0.035, pinta: Pinta::pluma(0x33313A).vientre(0xE8E4DA).detalle(0xF2EFE8).extra(0xD8A8A0), ..Default::default() }), Bicho::Martin => Receta::Ave(Ave { cuerpo: [0.28, 0.30, 0.36], inclina: 0.85, cuello: 0.06, cabeza: 0.22, pico: Pico::Largo, pico_len: 1.8, pico_r: 0.24, cresta: Cresta::Punta, cola: ColaAve::Corta, pata: 0.07, pinta: Pinta::pluma(0x1E7AC8) .vientre(0xE07A30) .detalle(0x145A9A) .extra(0x2A2A32), ..Default::default() }), Bicho::Pinguino => Receta::Ave(Ave { cuerpo: [0.30, 0.46, 0.30], inclina: 0.10, cuello: 0.04, cuello_r: 0.18, cabeza: 0.22, pico: Pico::Corto, pico_len: 1.0, ala: Ala::Aleta, cola: ColaAve::Corta, cola_len: 0.3, pata: 0.07, pinta: Pinta::pluma(0x2A2A34).vientre(0xF2F0EA).detalle(0x1A1A22).extra(0xE8A030), ..Default::default() }), // ---------------- Selva / sabana ---------------- Bicho::Mono => Receta::Cuatro(Cuadrupedo { largo: 0.85, pata: 0.45, pata_r: 0.055, cuerpo_r: 0.24, lomo: 0.08, cuello: 0.08, cuello_ang: 0.9, cuello_r: 0.14, cabeza: 0.26, craneo: [0.96, 0.96, 0.94], hocico: 0.45, hocico_r: 0.5, oreja: Oreja::Redonda, oreja_tam: 1.2, cola: Cola::Prensil, cola_len: 1.5, ojo: 0.17, ojo_lateral: 0.2, pinta: Pinta::pelo(0x8A6440).vientre(0xD8C0A0).detalle(0xE0BCA0).con_esclera(), ..Default::default() }), Bicho::Perezoso => Receta::Cuatro(Cuadrupedo { largo: 0.95, pata: 0.50, pata_r: 0.062, cuerpo_r: 0.27, lomo: -0.06, cuello: 0.06, cuello_ang: 0.7, cuello_r: 0.16, cabeza: 0.25, craneo: [0.98, 0.94, 0.92], hocico: 0.4, hocico_r: 0.46, oreja: Oreja::Ninguna, cola: Cola::Ninguna, ojo: 0.16, ojo_lateral: 0.25, pinta: Pinta::pelo(0x9A8A70) .vientre(0xC8BCA0) .detalle(0x6A5C48) .patron(Patron::Antifaz, 0x6A5C48), ..Default::default() }), Bicho::Tigre => Receta::Cuatro(Cuadrupedo { largo: 1.30, pata: 0.46, pata_r: 0.078, cuerpo_r: 0.26, pecho: 1.12, lomo: 0.04, cuello: 0.10, cuello_ang: 0.30, cuello_r: 0.19, cabeza: 0.26, craneo: [1.0, 0.94, 1.0], hocico: 0.5, hocico_r: 0.54, oreja: Oreja::Redonda, cola: Cola::Gruesa, cola_len: 1.0, ojo: 0.17, ojo_lateral: 0.28, pinta: Pinta::pelo(0xE0801E) .vientre(0xF2EDE2) .detalle(0x22201E) .ojo(0xC8A020) .patron(Patron::Rayas, 0x22201E), ..Default::default() }), Bicho::Jaguar => Receta::Cuatro(Cuadrupedo { largo: 1.25, pata: 0.44, pata_r: 0.080, cuerpo_r: 0.27, pecho: 1.14, cuello: 0.08, cuello_ang: 0.28, cuello_r: 0.20, cabeza: 0.27, craneo: [1.02, 0.94, 0.96], hocico: 0.45, hocico_r: 0.56, oreja: Oreja::Redonda, cola: Cola::Gruesa, cola_len: 0.9, ojo: 0.17, ojo_lateral: 0.28, pinta: Pinta::pelo(0xD8A840) .vientre(0xF0E6CE) .ojo(0x3A7A2A) .patron(Patron::Manchas, 0x2A2620), ..Default::default() }), Bicho::Leon => Receta::Cuatro(Cuadrupedo { largo: 1.28, pata: 0.48, pata_r: 0.078, cuerpo_r: 0.26, pecho: 1.10, cuello: 0.10, cuello_ang: 0.30, cuello_r: 0.19, cabeza: 0.25, craneo: [1.0, 0.94, 1.0], hocico: 0.5, hocico_r: 0.52, oreja: Oreja::Redonda, cola: Cola::Penacho, cola_len: 0.95, melena: 1.0, ojo: 0.16, ojo_lateral: 0.28, pinta: Pinta::pelo(0xD8AA62).vientre(0xEEE0C4).detalle(0x8A5A28).ojo(0xB08820), ..Default::default() }), Bicho::Cebra => Receta::Cuatro(Cuadrupedo { largo: 1.20, pata: 0.56, pata_r: 0.060, cuerpo_r: 0.26, pecho: 1.08, cuello: 0.36, cuello_ang: 0.85, cuello_r: 0.15, cabeza: 0.22, craneo: [0.80, 0.92, 1.28], hocico: 1.05, hocico_r: 0.55, oreja: Oreja::Punta, oreja_tam: 0.9, cola: Cola::Crin, cola_len: 0.8, melena: 0.7, ojo_lateral: 0.85, pinta: Pinta::pelo(0xF2EFE8) .vientre(0xFFFFFA) .detalle(0x24222A) .extra(0x33313A) .patron(Patron::Rayas, 0x24222A), ..Default::default() }), Bicho::Jirafa => Receta::Cuatro(Cuadrupedo { largo: 1.05, pata: 0.62, pata_r: 0.052, cuerpo_r: 0.24, pecho: 1.10, grupa: 0.88, cuello: 1.55, cuello_ang: 1.18, cuello_r: 0.115, cabeza: 0.17, craneo: [0.82, 0.90, 1.22], hocico: 0.9, hocico_r: 0.5, oreja: Oreja::Punta, oreja_tam: 1.0, cuerno: Cuerno::Cortos, cola: Cola::Penacho, cola_len: 0.85, melena: 0.5, ojo: 0.22, ojo_lateral: 0.85, pinta: Pinta::pelo(0xE0B060) .vientre(0xF2E4C4) .detalle(0x8A5A24) .patron(Patron::Manchas, 0x9A6428), ..Default::default() }), Bicho::Elefante => Receta::Cuatro(Cuadrupedo { largo: 1.25, pata: 0.50, pata_r: 0.135, cuerpo_r: 0.42, pecho: 1.02, grupa: 1.02, lomo: 0.05, cuello: 0.05, cuello_ang: 0.2, cuello_r: 0.28, cabeza: 0.30, craneo: [0.94, 0.96, 0.90], hocico: 0.0, hocico_r: 0.5, oreja: Oreja::Abanico, oreja_tam: 1.5, cuerno: Cuerno::Colmillos, cola: Cola::Penacho, cola_len: 0.55, trompa: 3.0, ojo: 0.13, ojo_lateral: 0.7, pinta: Pinta::pelo(0x9A9690).vientre(0xB4B0A8).detalle(0x6E6A66).extra(0xF0EAD8), ..Default::default() }), Bicho::Hipopotamo => Receta::Cuatro(Cuadrupedo { largo: 1.45, pata: 0.34, pata_r: 0.115, cuerpo_r: 0.42, pecho: 1.0, grupa: 1.02, cuello: 0.02, cuello_r: 0.30, cabeza: 0.30, craneo: [1.0, 0.82, 1.20], hocico: 0.85, hocico_r: 0.90, oreja: Oreja::Redonda, oreja_tam: 0.7, cola: Cola::Muñon, ojo: 0.12, ojo_lateral: 0.9, pinta: Pinta::pelo(0x9A7E86).vientre(0xC0A0A4).detalle(0x6E565E), ..Default::default() }), Bicho::Rinoceronte => Receta::Cuatro(Cuadrupedo { largo: 1.40, pata: 0.40, pata_r: 0.115, cuerpo_r: 0.38, pecho: 1.05, lomo: 0.05, cuello: 0.05, cuello_ang: 0.15, cuello_r: 0.28, cabeza: 0.26, craneo: [0.90, 0.86, 1.24], hocico: 1.0, hocico_r: 0.70, oreja: Oreja::Punta, oreja_tam: 0.8, cuerno: Cuerno::Nasal, cola: Cola::Penacho, cola_len: 0.5, ojo: 0.11, ojo_lateral: 0.9, pinta: Pinta::pelo(0x8E8A86).vientre(0xA6A29A).detalle(0x66625E).extra(0xE0DACA), ..Default::default() }), Bicho::Capibara => Receta::Cuatro(Cuadrupedo { largo: 1.20, pata: 0.36, pata_r: 0.070, cuerpo_r: 0.32, cuello: 0.04, cuello_r: 0.22, cabeza: 0.24, craneo: [0.92, 0.86, 1.18], hocico: 0.9, hocico_r: 0.62, oreja: Oreja::Redonda, oreja_tam: 0.7, cola: Cola::Ninguna, ojo: 0.14, ojo_lateral: 0.75, pinta: Pinta::pelo(0x9A7042).vientre(0xC8A276).detalle(0x6A4A28), ..Default::default() }), Bicho::Koala => Receta::Cuatro(Cuadrupedo { largo: 0.85, pata: 0.34, pata_r: 0.075, cuerpo_r: 0.30, lomo: 0.10, cuello: 0.03, cuello_r: 0.20, cabeza: 0.30, craneo: [1.02, 0.96, 0.92], hocico: 0.55, hocico_r: 0.42, oreja: Oreja::Redonda, oreja_tam: 1.7, cola: Cola::Ninguna, lana: 0.4, ojo: 0.15, ojo_lateral: 0.35, pinta: Pinta::pelo(0x9EA0A4).vientre(0xE0E2E2).detalle(0x3A3A40), ..Default::default() }), Bicho::Canguro => Receta::Cuatro(Cuadrupedo { largo: 0.80, pata: 0.52, pata_r: 0.075, cuerpo_r: 0.26, pecho: 0.82, grupa: 1.15, lomo: 0.05, cuello: 0.16, cuello_ang: 1.2, cuello_r: 0.13, cabeza: 0.22, craneo: [0.84, 0.90, 1.18], hocico: 0.9, hocico_r: 0.42, oreja: Oreja::Larga, oreja_tam: 1.3, cola: Cola::Gruesa, cola_len: 1.5, ojo: 0.18, ojo_lateral: 0.5, bipedo: true, pinta: Pinta::pelo(0xA8825E).vientre(0xD8C4A6).detalle(0x6A5238), ..Default::default() }), Bicho::Llama => Receta::Cuatro(Cuadrupedo { largo: 1.0, pata: 0.55, pata_r: 0.052, cuerpo_r: 0.26, cuello: 0.62, cuello_ang: 1.25, cuello_r: 0.11, cabeza: 0.18, craneo: [0.82, 0.90, 1.16], hocico: 0.9, hocico_r: 0.46, oreja: Oreja::Larga, oreja_tam: 1.0, cola: Cola::Muñon, lana: 0.7, ojo: 0.22, ojo_lateral: 0.8, pinta: Pinta::pelo(0xE0D2B8).vientre(0xF2EADA).detalle(0x8A7458), ..Default::default() }), Bicho::Camello => Receta::Cuatro(Cuadrupedo { largo: 1.20, pata: 0.58, pata_r: 0.062, cuerpo_r: 0.28, cuello: 0.55, cuello_ang: 1.05, cuello_r: 0.13, cabeza: 0.19, craneo: [0.82, 0.92, 1.20], hocico: 1.0, hocico_r: 0.5, oreja: Oreja::Redonda, oreja_tam: 0.6, cola: Cola::Penacho, cola_len: 0.6, jorobas: 2, joroba_alto: 0.20, ojo: 0.20, ojo_lateral: 0.8, pinta: Pinta::pelo(0xCFA870).vientre(0xE4CCA0).detalle(0x9A7A48), ..Default::default() }), Bicho::Foca => Receta::Cuatro(Cuadrupedo { largo: 1.55, pata: 0.18, pata_r: 0.09, cuerpo_r: 0.36, pecho: 1.05, grupa: 0.72, cuello: 0.10, cuello_ang: 0.9, cuello_r: 0.24, cabeza: 0.25, craneo: [0.94, 0.92, 1.06], hocico: 0.6, hocico_r: 0.5, oreja: Oreja::Ninguna, cola: Cola::Muñon, ojo: 0.24, ojo_lateral: 0.3, pinta: Pinta::pelo(0x8E9298).vientre(0xC8CCD0).detalle(0x5A5E66), ..Default::default() }), // ---------------- Reptantes ---------------- Bicho::Serpiente => Receta::Reptante(Reptante::default()), Bicho::Boa => Receta::Reptante(Reptante { largo: 7.0, grosor: 0.75, ondas: 1.3, amplitud: 1.3, cabeza: 0.85, pinta: Pinta::pelo(0xB09660) .vientre(0xE0D0A8) .patron(Patron::Rombos, 0x6A4A28), ..Default::default() }), Bicho::Cobra => Receta::Reptante(Reptante { largo: 6.5, grosor: 0.55, ondas: 1.2, amplitud: 0.9, capucha: 1.3, alza: 0.95, cabeza: 0.8, pinta: Pinta::pelo(0x6A6A50) .vientre(0xD8CFA8) .patron(Patron::Anillos, 0x2E2A22), ..Default::default() }), Bicho::Lagarto => Receta::Reptante(Reptante { largo: 4.0, grosor: 0.45, ondas: 0.9, amplitud: 0.6, patas: 4, pata: 0.55, cabeza: 0.75, hocico: 1.4, pinta: Pinta::pelo(0x6E8A3E).vientre(0xC8CE8A).detalle(0x4A6A28), ..Default::default() }), Bicho::Iguana => Receta::Reptante(Reptante { largo: 4.5, grosor: 0.55, ondas: 0.8, amplitud: 0.5, patas: 4, pata: 0.6, cresta: 1.0, alza: 0.2, cabeza: 0.8, hocico: 1.3, pinta: Pinta::pelo(0x4E8A5E) .vientre(0xB8D08A) .detalle(0x2E6A3E) .patron(Patron::Anillos, 0x2A4A2A), ..Default::default() }), Bicho::Camaleon => Receta::Reptante(Reptante { largo: 3.2, grosor: 0.62, ondas: 0.5, amplitud: 0.25, patas: 4, pata: 0.55, cresta: 0.5, cabeza: 1.0, hocico: 0.7, ojo: 0.34, pinta: Pinta::pelo(0x3EA06A) .vientre(0xD8D060) .detalle(0x2A7A4A) .patron(Patron::Rayas, 0xE0C040), ..Default::default() }), Bicho::Cocodrilo => Receta::Reptante(Reptante { largo: 6.5, grosor: 0.62, ondas: 0.6, amplitud: 0.45, patas: 4, pata: 0.42, cresta: 0.7, cabeza: 0.85, hocico: 3.0, lengua: false, ojo: 0.2, pinta: Pinta::pelo(0x4A5E3A).vientre(0xC0C088).detalle(0x2E3E24), ..Default::default() }), Bicho::Salamandra => Receta::Reptante(Reptante { largo: 3.6, grosor: 0.42, ondas: 1.1, amplitud: 0.8, patas: 4, pata: 0.4, cabeza: 0.8, hocico: 0.9, lengua: false, pinta: Pinta::pelo(0x22222A) .vientre(0x3A3A44) .patron(Patron::Manchas, 0xE8C020), ..Default::default() }), Bicho::Tortuga => Receta::Reptante(Reptante { largo: 2.2, grosor: 0.5, ondas: 0.0, amplitud: 0.0, patas: 4, pata: 0.45, abertura: 1.1, caparazon: 1.0, cabeza: 0.6, hocico: 0.9, lengua: false, ojo: 0.22, pinta: Pinta::pelo(0x6A8A4A) .vientre(0xC8B878) .detalle(0x4A5E2E) .patron(Patron::Manchas, 0x8A6A28), ..Default::default() }), Bicho::Rana => Receta::Reptante(Reptante { largo: 1.5, grosor: 0.9, ondas: 0.0, amplitud: 0.0, patas: 4, pata: 0.5, abertura: 1.2, anfibio: true, cabeza: 0.9, hocico: 0.5, lengua: false, ojo: 0.42, pinta: Pinta::pelo(0x5EA83E) .vientre(0xE0E8A0) .detalle(0x3A7A28) .patron(Patron::Manchas, 0x2E5A20), ..Default::default() }), // ---------------- Agua ---------------- Bicho::Pez => Receta::Nadador(Nadador::default()), Bicho::Delfin => Receta::Nadador(Nadador { cuerpo: [0.24, 0.30, 0.90], caudal_vertical: false, caudal: 0.42, dorsal: 0.30, pectoral: 0.28, hocico: 0.45, ojo: 0.09, pinta: Pinta::pelo(0x6A7E92).vientre(0xE4E8EE).detalle(0x4A5A6E), ..Default::default() }), Bicho::Ballena => Receta::Nadador(Nadador { cuerpo: [0.36, 0.42, 1.10], caudal_vertical: false, caudal: 0.55, dorsal: 0.14, pectoral: 0.34, hocico: 0.15, ojo: 0.06, pinta: Pinta::pelo(0x46586E).vientre(0xC8D2DC).detalle(0x32404E), ..Default::default() }), Bicho::Tiburon => Receta::Nadador(Nadador { cuerpo: [0.26, 0.32, 0.95], caudal_vertical: true, caudal: 0.5, dorsal: 0.45, pectoral: 0.34, hocico: 0.35, boca: 1.0, ojo: 0.07, pinta: Pinta::pelo(0x6E7A82).vientre(0xE0E4E4).detalle(0x4E5A62), ..Default::default() }), Bicho::Pulpo => Receta::Nadador(Nadador { cuerpo: [0.42, 0.48, 0.44], caudal: 0.0, dorsal: 0.0, pectoral: 0.0, tentaculos: 8, tentaculo_len: 1.3, ojo: 0.20, pinta: Pinta::pelo(0xC85A6A).vientre(0xE89A9A).detalle(0x9A3A50).con_esclera(), ..Default::default() }), // ---------------- Artrópodos y afines ---------------- Bicho::Mariposa => Receta::Insecto(Insecto { segmentos: [0.22, 0.26, 0.30], largo: 0.9, patas: 6, pata: 0.22, alas: AlaBicho::Mariposa, ala_len: 1.6, antenas: 0.6, pinta: Pinta::pelo(0x2A2630) .detalle(0xE8802A) .extra(0xF0D040) .patron(Patron::Lunares, 0xF2EEE6), ..Default::default() }), Bicho::Abeja => Receta::Insecto(Insecto { segmentos: [0.26, 0.32, 0.36], largo: 0.8, patas: 6, pata: 0.25, alas: AlaBicho::Membrana, ala_len: 0.9, antenas: 0.35, pinta: Pinta::pelo(0xE8B820) .detalle(0x2A2620) .extra(0xE8ECF2) .patron(Patron::Rayas, 0x2A2620), ..Default::default() }), Bicho::Libelula => Receta::Insecto(Insecto { segmentos: [0.24, 0.26, 0.16], largo: 1.6, patas: 6, pata: 0.2, alas: AlaBicho::Membrana, ala_len: 1.5, antenas: 0.15, ojo: 0.34, pinta: Pinta::pelo(0x2A8AA8).detalle(0x1E6A88).extra(0xD8ECF2), ..Default::default() }), Bicho::Escarabajo => Receta::Insecto(Insecto { segmentos: [0.28, 0.36, 0.40], largo: 0.85, patas: 6, pata: 0.3, alas: AlaBicho::Elitros, ala_len: 0.9, antenas: 0.3, pinta: Pinta::pelo(0x2E2A3A) .detalle(0xC82A2A) .patron(Patron::Lunares, 0x1A1820), ..Default::default() }), Bicho::Hormiga => Receta::Insecto(Insecto { segmentos: [0.24, 0.22, 0.30], largo: 1.0, patas: 6, pata: 0.42, arco: 0.7, antenas: 0.45, pinta: Pinta::pelo(0x4A2A20).detalle(0x2E1A14), ..Default::default() }), Bicho::Arana => Receta::Insecto(Insecto { segmentos: [0.26, 0.34, 0.42], largo: 0.7, patas: 8, pata: 0.85, arco: 1.1, antenas: 0.0, ojo: 0.14, pinta: Pinta::pelo(0x33303A).detalle(0x1E1C24).extra(0xC82A3A), ..Default::default() }), Bicho::Escorpion => Receta::Insecto(Insecto { segmentos: [0.22, 0.32, 0.26], largo: 1.1, patas: 8, pata: 0.5, arco: 0.9, antenas: 0.0, pinzas: 1.0, aguijon: 1.2, ojo: 0.10, pinta: Pinta::pelo(0x8A5A2A).detalle(0x5A3818).extra(0x3A2410), ..Default::default() }), Bicho::Cangrejo => Receta::Insecto(Insecto { segmentos: [0.30, 0.46, 0.20], largo: 0.5, patas: 8, pata: 0.6, arco: 1.2, antenas: 0.0, pinzas: 1.2, pedunculos: true, ojo: 0.12, pinta: Pinta::pelo(0xD84A2A).detalle(0xA83218).extra(0xF0C0A0), ..Default::default() }), Bicho::Caracol => Receta::Insecto(Insecto { segmentos: [0.20, 0.24, 0.22], largo: 1.0, patas: 0, pata: 0.0, arco: 0.0, antenas: 0.0, concha: 1.0, pedunculos: true, ojo: 0.10, pinta: Pinta::pelo(0xD8C0A0).detalle(0x8A5A30).extra(0xB88A50), ..Default::default() }), Bicho::Luciernaga => Receta::Insecto(Insecto { segmentos: [0.22, 0.28, 0.34], largo: 0.8, patas: 6, pata: 0.28, alas: AlaBicho::Elitros, ala_len: 0.85, antenas: 0.35, pinta: Pinta::pelo(0x3A3226).detalle(0x2A2418).extra(0xE8F080), ..Default::default() }), } } /// **Altura típica en metros** de cada bicho (la que usa el catálogo y el mundo para /// que un elefante no mida lo mismo que un conejo). Es la altura del **lomo** en los /// cuadrúpedos y la altura **total** en el resto. pub fn alto_tipico(b: Bicho) -> f32 { match b { Bicho::Ballena => 4.0, Bicho::Jirafa => 4.6, Bicho::Elefante => 3.0, Bicho::Avestruz => 2.4, Bicho::Alce => 2.0, Bicho::Camello => 1.9, Bicho::Rinoceronte => 1.7, Bicho::Caballo | Bicho::Cebra | Bicho::Toro => 1.6, Bicho::Condor | Bicho::Canguro | Bicho::Llama => 1.5, Bicho::Vaca | Bicho::Hipopotamo | Bicho::Flamenco => 1.4, Bicho::Oso | Bicho::Tiburon | Bicho::Garza | Bicho::Cisne => 1.3, Bicho::PavoReal | Bicho::Delfin => 1.2, Bicho::Leon | Bicho::Tigre | Bicho::Burro => 1.1, Bicho::Cocodrilo | Bicho::Aguila | Bicho::Pinguino => 1.0, Bicho::Ciervo | Bicho::Jaguar | Bicho::Panda | Bicho::Boa => 0.95, Bicho::Cerdo | Bicho::Cabra | Bicho::Oveja | Bicho::Lobo | Bicho::Foca => 0.85, Bicho::Perro | Bicho::Capibara | Bicho::Mono | Bicho::Cobra | Bicho::Pulpo => 0.7, Bicho::Koala | Bicho::Perezoso | Bicho::Zorro | Bicho::Ganso | Bicho::Pelicano => 0.6, Bicho::Gallo | Bicho::Buho | Bicho::Cuervo | Bicho::Serpiente => 0.5, Bicho::Gato | Bicho::Gallina | Bicho::Pato | Bicho::Conejo | Bicho::Tortuga => 0.4, Bicho::Mapache | Bicho::Guacamayo | Bicho::Tucan | Bicho::Loro | Bicho::Iguana => 0.35, Bicho::Ardilla | Bicho::Erizo | Bicho::Camaleon | Bicho::Lagarto | Bicho::Cardenal => 0.25, Bicho::Martin | Bicho::Quetzal | Bicho::Salamandra | Bicho::Rana | Bicho::Pez => 0.2, Bicho::Gorrion | Bicho::Pajaro | Bicho::Raton | Bicho::Cangrejo => 0.15, Bicho::Colibri | Bicho::Mariposa | Bicho::Escorpion | Bicho::Caracol => 0.1, Bicho::Escarabajo | Bicho::Arana | Bicho::Libelula => 0.08, Bicho::Abeja | Bicho::Hormiga | Bicho::Luciernaga => 0.05, } }