diff --git a/app/tables/creatures.json b/app/tables/creatures.json index 78fb2d3..ec7ccfd 100644 --- a/app/tables/creatures.json +++ b/app/tables/creatures.json @@ -1,55 +1,179 @@ { "android": { + "description": "Androids are man-made beings who look exactly like Pure Strain Humans and are often mistaken for them. They usually consider Pure Strain Humans to be enemies. All Androids wear Tech Level III armour. Warriors and Thinkers carry Tech Level III weapons.", "thinker": { - "number": [1, 4, 0], - "morale": [1, 4, 6], + "number": [ + 1, + 4, + 0 + ], + "morale": [ + 1, + 4, + 6 + ], "armour": 9, - "hit dice": [8, 10, 0], - "environ": ["land"], - "land speed": [12, 900, 18], - "ms": [1, 101, 11], - "in": [1, 101, 11], - "dx": [5, 4, 0], - "ch": [1, 10, 11], - "cn": [1, 10, 11], - "ps": [1, 10, 8], - "attacks": null, - "mutations": null, - "description": "Androids are man-made beings who look exactly like Pure Strain Humans and are often mistaken for them. They usually consider Pure Strain Humans to be enemies. All Androids wear Tech Level III armour. Warriors and Thinkers carry Tech Level III weapons." + "hit dice": [ + 8, + 10, + 0 + ], + "environ": [ + "land" + ], + "land speed": [ + 12, + 900, + 18 + ], + "ms": [ + 1, + 101, + 11 + ], + "in": [ + 1, + 101, + 11 + ], + "dx": [ + 5, + 4, + 0 + ], + "ch": [ + 1, + 10, + 11 + ], + "cn": [ + 1, + 10, + 11 + ], + "ps": [ + 1, + 10, + 8 + ], + "attacks": {}, + "mutations": [] }, "worker": { - "number": [1, 6, 2], - "morale": [1, 4, 0], + "number": [ + 1, + 6, + 2 + ], + "morale": [ + 1, + 4, + 0 + ], "armour": 8, - "hit dice": [7, 10, 0], - "environ": ["land"], - "land speed": [12, 900, 18], - "ms": [5, 4, 0], - "in": [1, 10, 2], - "dx": [5, 4, 0], - "ch": [1, 10, 2], - "cn": [1, 10, 11], - "ps": [1, 10, 11], - "attacks": null, - "mutations": null, - "description": "Androids are man-made beings who look exactly like Pure Strain Humans and are often mistaken for them. They usually consider Pure Strain Humans to be enemies. All Androids wear Tech Level III armour. Warriors and Thinkers carry Tech Level III weapons." + "hit dice": [ + 7, + 10, + 0 + ], + "environ": [ + "land" + ], + "land speed": [ + 12, + 900, + 18 + ], + "ms": [ + 5, + 4, + 0 + ], + "in": [ + 1, + 10, + 2 + ], + "dx": [ + 5, + 4, + 0 + ], + "ch": [ + 1, + 10, + 2 + ], + "cn": [ + 1, + 10, + 11 + ], + "ps": [ + 1, + 10, + 11 + ], + "attacks": {}, + "mutations": [] }, "warrior": { - "number": [1, 6, 0], - "morale": [1, 6, 4], + "number": [ + 1, + 6, + 0 + ], + "morale": [ + 1, + 6, + 4 + ], "armour": 7, - "hit dice": [10, 10, 0], - "environ": ["land"], - "land speed": [12, 900, 36], - "ms": [1, 10, 11], - "in": [1, 10, 8], - "dx": [1, 10, 11], - "ch": [1, 10, 11], - "cn": [1, 10, 11], - "ps": [1, 10, 11], - "attacks": null, - "mutations": null, - "description": "Androids are man-made beings who look exactly like Pure Strain Humans and are often mistaken for them. They usually consider Pure Strain Humans to be enemies. All Androids wear Tech Level III armour. Warriors and Thinkers carry Tech Level III weapons." + "hit dice": [ + 10, + 10, + 0 + ], + "environ": [ + "land" + ], + "land speed": [ + 12, + 900, + 36 + ], + "ms": [ + 1, + 10, + 11 + ], + "in": [ + 1, + 10, + 8 + ], + "dx": [ + 1, + 10, + 11 + ], + "ch": [ + 1, + 10, + 11 + ], + "cn": [ + 1, + 10, + 11 + ], + "ps": [ + 1, + 10, + 11 + ], + "attacks": {}, + "mutations": [] } }, "badder": { @@ -101,7 +225,7 @@ "cn": [5, 4, 0], "ps": [1, 12, 4], "attacks": {"bite": [1, 4, 0]}, - "mutations": null, + "mutations": [], "description": "This black predator fish often grows to a length of 1.5 meters. Once per day it can secrete intensity level 18 radioactive oil over an area of 9 meters square. This slick lasts 10 minutes. If killed before it uses the days allotment of oil, the Barl Nep's oil may be extracted and used as a weapon [but will have to be carried in a lead-lined container]. Oil extracted from the Barl Nep will be only intensity level 12." }, "arn": { @@ -119,7 +243,7 @@ "cn": [1, 12, 4], "ps": [1, 8, 2], "attacks": {"bite": [2, 6, 0]}, - "mutations": null, + "mutations": [], "description": "[Dragon Bugs] These 1 to 2-meter long mutated dragonflies can carry loads weighing up to twice their PS in kilograms while airborne, but not while crawling along the ground. They are often captured and domesticated as flying steeds by small Humanoids and Mutated Animals. However, they must be caught young to be trainable." }, "ber lep": { @@ -128,7 +252,7 @@ "hit dice": [15, 4, 0], "armour": 6, "environ": ["water"], - "water speed": null, + "water speed": [0,0,0], "ms": [1, 4, 0], "in": [1, 4, 0], "dx": [1, 4, 0], @@ -136,7 +260,7 @@ "cn": [1, 10, 11], "ps": [1, 12, 4], "attacks": {"acid": [2, 8, 0]}, - "mutations": null, + "mutations": [], "description": "[Sweetpads] This 2-meter diameter, free-floating aquatic plant rests on the surface of the water much like a lily pad [to which it is related]. It will support the weight of a normal human, but pressure on the center of the pad causes it to snap shut around the trespasser. The plant secretes a sweet-smelling acid which attracts and gradually dissolves its prey. [HOUSE NOTE: PLAYERS SHOULD MAKE A DEX CHECK WHEN SNARED, TO SEE IF THEY ESCAPE, AND TAKE DAMAGE FOR EVERY ROUND THE CHECK FAILS - GMG]" }, "blaash": { @@ -154,7 +278,7 @@ "cn": [1, 10, 5], "ps": [1, 6, 4], "attacks": {"radiation": [0, 0, 0]}, - "mutations": null, + "mutations": [], "description": "[Gamma Moths] This mutated gypsy moth often grows to 1 meter in length [with a 2 meter wingspan]. It is fearless and quite carnivorous. When attacking, the intensity 18 radiation it emits from its abdomen causes it to glow brightly. All parties within 6 meters must make a Radiation Check." }, "blood bird": { @@ -171,7 +295,7 @@ "cn": [1, 10, 8], "ps": [1, 10, 5], "attacks": {"bite": [1, 4, 0]}, - "mutations": null, + "mutations": [], "description": "[Red Deaths] Mutated Scarlet Tanager. Emits intensity level 10 radiation. Parties within 6 meters must make a Radiation Check each Action Turn. 100% resistant to mental attacks. 1m tall." }, "blackun": { @@ -241,7 +365,7 @@ "cn": [1, 10, 5], "ps": [1, 10, 8], "attacks": {"bite": [10, 6, 0]}, - "mutations": null, + "mutations": [], "description": "[Flying Rippers] This intelligent mutated insect often reaches a length of 2.5 meters. It is immune to weapons using heat or cold. The Cal Then feeds on bone marrow and will rip through anything [even duralloy, given time] to get at fresh bone." }, "carrin": { @@ -275,7 +399,7 @@ "ch": [1, 4, 0], "cn": [1, 10, 5], "ps": [2, 20, 30], - "attacks": null, + "attacks": [], "mutations": ["Increased Metabolism", "Force Field Generation"], "description": "[Fast Trotters] Centisteeds are mutated horses of insectoid appearance. Each has between 12 and 18 legs and can carry 2 human sized characters. One rider must concentrate at all times on controlling the mount or it will try to throw [and then trample] the riders. [HOUSE NOTE: Mental Strength Ability Check every round. - GMG]" }, @@ -292,12 +416,12 @@ "ch": [1, 8, 1], "cn": [1, 10, 2], "ps": [1, 10, 5], - "attacks": null, + "attacks": [], "mutations": ["Empathy", "Illusion Generation", "Light Generation", "Repulsion Field", "Telekinesis", "Telepathy"], "description": "[Brown Beggars] These highly intelligent 1 meter tall mutated racoons walk upright and have manipulative paws. They are usually found in small family groups and will often have Tech evel III equipment including some weapons but no armour." }, - "cren tosh": { + "cren tosh": { "number": [1, 4, 2], "morale": [1, 4, 0], "hit dice": [16, 6, 0], @@ -312,7 +436,7 @@ "cn": [1, 10, 2], "ps": [1, 10, 8], "attacks": {"bite": [1,4,0]}, - "mutations": null, + "mutations": [], "description": "[Lizard Fish] This mutated lizard-fish prefers to live in water as a 2-meter long fish, but can transform itself into any lizard of about the same size (complete with all lizard characteristics) for up to 24 hours at a time. This power may only be used once per day. In fish form, it lives under overhanging banks and lines its nests with shiny objects. It is a vegetarian." }, "ert": { @@ -329,10 +453,10 @@ "cn": [1, 10, 2], "ps": [1, 10, 2], "attacks": {"poison": [0,0,0]}, - "mutations": null, + "mutations": [], "description": "[Stone Fish] This 1-meter long fish injects a chemical into those it bites, causing them to petrify and turn to stone within 60 seconds. For purposes of deciding if a character suffers this result, treat the chemical as intensity level 12 poison. Characters turn to stone on a 'D' result. Other results are ignored. [HOUSE NOTE: Intensity Level 10. I don't want my players constantly dying - GMG]" }, - "ert telden": { + "ert telden": { "number": [1, 6, 0], "morale": [1, 4, 0], "hit dice": [12, 4, 0], @@ -346,7 +470,7 @@ "cn": [1, 10, 2], "ps": [1, 12, 4], "attacks": {"fireball": [10,6,0]}, - "mutations": null, + "mutations": [], "description": "[Fire Fish] This 1-meter long fish lives in backwaters and marshes. It secretes a substance which makes it burst into flame 5d6 seconds after being removed from water and exposed to air. The super-heated fish does 10d6 damage to those within 30 meters when it bursts into flames" }, "crep plant": { @@ -386,6 +510,300 @@ "attacks": {"Tail Slap": [6,6,0]}, "mutations": ["Shape change"], "description": "[Man Fish] These intelligent Humanoids are adapted for living both on land and in water, having fish-like tails, stubby legs, and both lungs and gills. They can remain out of water for only 24 hours at a time. They are not affected by attacks involving heat or lasers during the first 5 action turns these attacks are used against them in a combat. Fens can shape-change into the form of a bird of their own size. They carry Tech Level I weapons (usually clubs) and wear Fishkin Armour (similar to fiber armour)." + }, + "gren": { + "number": [1, 8, 0], + "morale": [1, 4, 6], + "hit dice": [2, 4, 0], + "armour": 4, + "environ": ["land"], + "land speed": [0, 900, 18], + "ms": [1, 10, 11], + "in": [1, 10, 11], + "dx": [1, 10, 11], + "ch": [1, 10, 8], + "cn": [1, 10, 11], + "ps": [1, 10, 11], + "attacks": {}, + "mutations": [], + "description": "[Green Men] Grens look like Pure Strain Humans except for their deep green skin which provides excellent camouflage in the deep forests where they live. They hate ancient technology and never keep artefacts. Grens carry Tech Level I equipment. They don't wear armour. Grens tend to live in harmony with nature and shun outsiders who might intrude on their peaceful existence. However, they may (30% chance) aid friendly Pure Strain Humans. Gren communities (of 1d4 score inhabitants) are usually guarded by 1d4 domesticated Blackuns, Gators, Kai Lins, or Obbs for every 10 Grens. Grens encountered outside of their community will not be accompanied by these guardians. Grens often keep Ert Teldens as catapult ammunition." + }, + "fleshin": { + "number": [1, 4, -2], + "morale": [1, 4, 3], + "hit dice": [8, 6, 0], + "armour": 8, + "environ": ["water", "air"], + "water speed": [24, 1800, 36], + "air speed": [6, 300, 16], + "ms": [1, 10, 2], + "in": [1, 4, 0], + "dx": [1, 8, 1], + "ch": [1, 4, 0], + "cn": [1, 12, 6], + "ps": [1, 10, 11], + "attacks": {}, + "mutations": ["Shapechange", "Spines"], + "description": "[Flying Fish] These 2-meter long fish are found only in large bodies of water. However, they are able to leap into the air and glide from thermal to thermal using their broad pectoral fins as wings. They can spend an unlimited amount of time gliding. They are carnivorous and will sometimes attack PC parties while hunting. Their Spines contain Intensity Level 15 contact poison (to which they are immune). Fleshins may shapechange, but only into Sleeths. They have the Sleeth's special mutational abilities when transformed." + }, + "hawkoid": { + "number": [1, 4, -1], + "morale": [1, 4, 5], + "hit dice": [8, 4, 0], + "armour": 7, + "environ": ["air"], + "air speed": [36, 1800, 36], + "ms": [1, 10, 8], + "in": [1, 10, 5], + "dx": [1, 10, 11], + "ch": [1, 8, 1], + "cn": [1, 10, 5], + "ps": [1, 10, 5], + "attacks": {"bite": [1,4,0]}, + "mutations": ["Fear Generation", "Levitation", "Repulsion Field"], + "description": "Hawkoids are muted Sparrow Hawks growing to a 1.5 meter height and having a 1-meter wingspan. They have many human elements including legs that end in hands instead of talons. They are also very intelligent and use Tech Level I tools of all types (including specially adapted armour). Hawkoids are both fearless and carnivorous. " + }, + "gator": { + "number": [1, 4, -2], + "morale": [1, 4, 5], + "hit dice": [5, 8, 0], + "armour": 4, + "environ": ["land", "water"], + "land speed": [0, 300, 6], + "water speed": [6, 900, 18], + "ms": [1, 10, 8], + "in": [1, 4, 0], + "dx": [1, 10, 2], + "ch": [1, 4, 0], + "cn": [1, 8, 10], + "ps": [1, 10, 11], + "attacks": {"bite": [1,6,0], "tailsap": [1,8,0], "tentacles": [0,0,0]}, + "mutations": [], + "description": "[Green Hissers] These mutated alligators are only about 1 to 2 meters long from nose to tail. They have a pair of 1-meter long tentacles attached to their forehead which paralyze on contact (treat as a Metal Attack). Gators are immune to radiation. They may use their bit and tailslap at the same time [in the same attack move, I presume? - GMG]. Though solitary by nature, in the spring they congregate in groups of 10 to 60 to spawn." + }, + "herkel": { + "number": [5, 6, 0], + "morale": [1, 4, 6], + "hit dice": [4, 4, 0], + "armour": 9, + "environ": ["water"], + "water speed": [12, 900, 18], + "ms": [1, 8, 1], + "in": [1, 4, 0], + "dx": [1, 4, 0], + "ch": [1, 4, 0], + "cn": [1, 4, 0], + "ps": [1, 4, 0], + "attacks": {"bite": [6,4,0]}, + "mutations": [], + "description": "[Devil Fish] These savage fish hunt in schools and will devour anything edible in the water with them. Although only .5-meters long, their bite is quite dangerous since over a third of their length is taken up with teeth and mouth. Herkels secrete a viscous Intensity Level 18 contact poison which coats their scales, making them dangerous to touch. When aroused by large quantities of blood in the water, there is a 30% chance that a school will go into a 'feeding frenzy' during which they will bite anything (including each other) floating near their jaws and will not have to check Morale." + }, + "herp": { + "number": [1, 4, -1], + "morale": [1, 4, 4], + "hit dice": [20, 4, 0], + "armour": 3, + "environ": ["land"], + "land speed": [9, 600, 12], + "ms": [1, 10, 8], + "in": [1, 4, 2], + "dx": [1, 10, 5], + "ch": [1, 4, 0], + "cn": [1, 10, 11], + "ps": [1, 20, 30], + "attacks": {"squirt": [15,6,0]}, + "mutations": [], + "description": "Herps are 3.5-meter long mutated beetles which have developed a nonfunctional striped wingcase giving them their distinctive appearance and offering total protection against sonic blasts. They can squirt a stream of acid up to 30 meters which will dissolve 1 centimeter of duralloy per minute. Herps are skilled hunters, able to track any prey in any weather." + }, + "hopper": { + "number": [1, 20, 0], + "morale": [1, 4, 6], + "hit dice": [3, 12, 0], + "armour": 9, + "environ": ["land"], + "land speed": [16, 900, 24], + "ms": [1, 10, 2], + "in": [1, 4, 0], + "dx": [1, 10, 2], + "ch": [1, 4, 4], + "cn": [1, 10, 11], + "ps": [1, 20, 30], + "attacks": {}, + "mutations": ["Chameleon Powers", "Horns/Antlers"], + "description": "[Jackalopes] Hoppers are abysmally stupid herd animals sometimes used as mounts. These mutated jackrabbits have such a rough gait that first-time riders have an 80% chance of falling off their Hopper and suffering 1d6 damage. Each Hopper stands 3 meters at the shoulder and can carry 1 man-sized character. An unencumbered Hopper can leap 3 times the distance listed in the Leaping and Jumping rules." + }, + "hisser": { + "number": [1, 10, 0], + "morale": [2, 4, 0], + "hit dice": [18, 4, 0], + "armour": 3, + "environ": ["land"], + "land speed": [6, 30, 12], + "ms": [1, 6, 10], + "in": [1, 10, 5], + "dx": [1, 10, 8], + "ch": [1, 10, 2], + "cn": [1, 10, 11], + "ps": [1, 20, 10], + "attacks": {"bite": [1,6,0]}, + "mutations": ["Mass Mind", "Sonic Blast", "Telepathy"], + "description": "[Man Snakes] These intelligent, 3-meter long, scale-covered Humanoids have a human torso and arms and a snake's lower body and head. They inhabit deserts and ruins and will almost always possess 1 or more artefacts. Hisser societies are matriarchal and each village will have 1 queen and 20d4 male attendants. Hissers are immune to lasers and Sonic Blasts. They have no language (using telepathy among themselves) and will seldom know even Trade Language. In addition to their species mutations, all Hissers will have 1 other randomly-selected Mental Mutation." + }, + "horl choo": { + "number": [1, 4, -1], + "morale": [1, 4, 3], + "hit dice": [18, 4, 0], + "armour": 5, + "environ": ["land"], + "land speed": [2, 300, 6], + "ms": [3, 6, 0], + "in": [1, 10, 2], + "dx": [1, 8, 1], + "ch": [1, 4, 0], + "cn": [3, 6, 0], + "ps": [3, 6, 0], + "attacks": {"poison": [0,0,0]}, + "mutations": ["Dissolving Juices", "Mobility", "Quills/Spines"], + "description": "[Porcupine Plants] This odd, black 3-meter tall plant looks like a lumpy porcupine from a distance. Its spiky appearance stems from its 1-meter long, spear-like quills which it can fling up to 30 meters. Each quill is tipped with Intensity Level 9 poison and is attached to the Plant by a tough, thin vine that the Horl Choo uses to retrieve misses and haul in prey. The quills do 2d6 damage in addition to their poison effect. The plant secretes a digestive fluid that partially dissolves prey (1d6 damage per Action Turn) that is in contact with the Horl Choo's body." + }, + "hoop": { + "number": [1, 20, 0], + "morale": [1, 4, 4], + "hit dice": [15, 6, 0], + "armour": 9, + "environ": ["land"], + "land speed": [12, 900, 18], + "ms": [1, 10, 11], + "in": [3, 6, 0], + "dx": [3, 6, 0], + "ch": [3, 6, 0], + "cn": [3, 6, 0], + "ps": [3, 6, 0], + "attacks": {}, + "mutations": ["Mass Mind", "Telepathy"], + "description": "[Floppsies] These mutated rabbitoid creatures average 2.6 meters in height and walk erect. They are able to leap twice the distances listed under Leaping and Jumping rules. They may will a metal item they are touching to turn to rubber (all attached metal parts within 1 meter are affected). Hoops love artefacts and there is a 30% chance of any Hoop encountered having 1 or more artefacts and a 20% chance of his knowing how to use each artefact he possesses. Hoops carry a mix of Tech Level I and Tech Level II equipment." + }, + "jaget": { + "number": [1, 4, 0], + "morale": [1, 4, 4], + "hit dice": [8, 4, 0], + "armour": 5, + "environ": ["land"], + "land speed": [6, 900, 72], + "ms": [1, 10, 11], + "in": [1, 8, 1], + "dx": [3, 6, 0], + "ch": [1, 4, 0], + "cn": [1, 10, 2], + "ps": [1, 10, 2], + "attacks": {"claw 1": [1,4,0], "claw 2": [1,4,0], "bite": [1,6,0]}, + "mutations": ["Attraction Odor", "Fear Generation", "Fear Impulse (set off by intelligent plants with 4+ intelligence", "Levitation", "Poison Susceptibility", "Precognition", "Telekinesis", "Telepathy"], + "description": "[Savannah Cats] These mutated jaguars prowl the vast grasslands of what was once the Midwest. They use their front paws to manipulate and examine objects, but don't normally carry equipment. Jagets have substantial mental powers and will often be found as followers or hirelings of other species." + }, + "kai lin": { + "number": [1, 4, 0], + "morale": [1, 4, 1], + "hit dice": [12, 6, 0], + "armour": 6, + "environ": ["land"], + "land speed": [12, 600, 12], + "ms": [1, 10, 2], + "in": [1, 4, 0], + "dx": [1, 10, 2], + "ch": [1, 4, 0], + "cn": [1, 12, 9], + "ps": [3, 6, 0], + "attacks": {}, + "mutations": ["Attraction Odor", "Electrical Generation", "Radiation Eyes"], + "description": "[Lizard Bush] This 3-meter tall plant looks like a large reptile from a distance, especially when it runs along the ground on two strong stalks ending in thorny, claw-like pads. It is covered with green, scaly bark that gives complete protection from radiation. It's roots look much like a tail when it is in motion. When it finds carrion, it entwines these roots in the victim and absorbs sustenance. Although it usually eats only carrion, the Kai Lin is capable of hunting live prey if the need arises." + }, + "kep plant": { + "number": [1, 4, 0], + "morale": [1, 4, 3], + "hit dice": [20, 6, 0], + "armour": 2, + "environ": ["land"], + "land speed": [0,0,0], + "ms": [1, 4, 0], + "in": [1, 4, 0], + "dx": [3, 6, 0], + "ch": [1, 4, 0], + "cn": [1, 10, 11], + "ps": [1, 12, 30], + "attacks": {"snare": [5, 6, 0]}, + "mutations": ["Dissolving Juices", "Seed Mobility", "Modified Vines/Roots"], + "description": "[Sand Devil] This hideous carnivorous plant prefers sandy soil and will not allow other plants to occupy the same ground. It grows entirely underground, throwing a network of pressure-sensitive roots below the surface of a 30-meter diameter area. These roots snap out of the ground to entangle and constrict prey unknowingly walking over the plant. Its roots do 5d6 damage per Action Turn and gradually grow into and digest the flesh of dead victims. After feeding, the Kep releases a mobile seed that burrows 60 meters away and begins sending out its own roots. When a Kep fails a Morale Check, it retreats underground." + }, + "kamodo": { + "number": [1, 4, -2], + "morale": [1, 4, 5], + "hit dice": [10, 12, 0], + "armour": 1, + "environ": ["land"], + "land speed": [24,1800,72], + "ms": [1, 10, 8], + "in": [1, 4, 0], + "dx": [1, 10, 2], + "ch": [1, 4, 0], + "cn": [1, 10, 11], + "ps": [4, 20, 80], + "attacks": {"bite": [6, 8, 0], "tailslap": [5,6,0]}, + "mutations": ["Absorption (Heat)", "Intuition", "Mental Shield", "Molecular Disruption", "Reflection", "Sonic Blast (3x Strength)", "Will Force"], + "description": "[Thunder Lizard] This 18-meter tall mutated forest iguana is one of the most fearsome carnivores in the entire Gamma World." + }, + "keeshin": { + "number": [1, 4, 0], + "morale": [1, 4, 4], + "hit dice": [7, 6, 0], + "armour": 3, + "environ": ["land", "water", "air"], + "land speed": [6,600,12], + "water speed": [12, 900, 18], + "air speed": [0, 900, 36], + "ms": [1, 10, 11], + "in": [1, 10, 11], + "dx": [3, 6, 0], + "ch": [1, 4, 0], + "cn": [3, 6, 0], + "ps": [3, 4, 6], + "attacks": {"bite": [1,4,0]}, + "mutations": ["Cryokinesis", "Devolution", "Force Field Generation", "Life Leach", "Mental Blast", "Reflection", "Telekinesis", "Telekinetic Arm", "Telekinetic Flight"], + "description": "[Water Wierds] This 1-meter long, white mutated amphibian lives in small bodies of water. It is a greedy and solitary creature that lines its partially submerged stone dwellings with shiny objects of varying worth. Keeshins can stay submerged for an hour. They die if they are out of the water for more than 24 hours." + }, + "lil": { + "number": [1, 20, 0], + "morale": [1, 4, 1], + "hit dice": [6, 4, 0], + "armour": 6, + "environ": ["land", "air"], + "land speed": [0,120,3], + "air speed": [6, 900, 18], + "ms": [1, 10, 8], + "in": [1, 10, 11], + "dx": [1, 10, 11], + "ch": [1, 10, 11], + "cn": [1, 4, 6], + "ps": [1, 4, 2], + "attacks": {}, + "mutations": ["Anti-Life Leach", "Dual Brain", "Empathy", "Force Field Generation", "Illusion Generation", "Light Generation", "Mass Mind", "Physical Reflection", "Shorter", "Telepathy", "Total Healing", "Wings"], + "description": "[Wee Ones] The grace and beauty of these 20-centimeter tall Humanoid hides an incredible toughness. They live only in jungles and forests where they build mazes of brambles to hide and protect their dwellings. They often possess artefacts of great sophistication, though their ability to use these items is limited due to their size. Non-artefact equipment will invariably be Tech Level I or II. Lil are nocturnal in nature and their bodies give off light sufficient to illuminate a 90-centimeter area around them. They are much like fireflies in that this effect is involuntary and only happens when the Lil are in darkness or very deep shadow. In addition to species mutations, each Lil will have 1 randomly selected Mental Mutation. Unlike most species with Anti-Life Leach, the Lil are not albinos." + }, + "manta": { + "number": [1, 4, -2], + "morale": [1, 4, 4], + "hit dice": [10, 8, 0], + "armour": 3, + "environ": ["land"], + "land speed": [12,600,12], + "ms": [1, 10, 2], + "in": [1, 8, 1], + "dx": [3, 6, 0], + "ch": [1, 4, 0], + "cn": [1, 10, 11], + "ps": [1, 20, 20], + "attacks": {"bite": [5,6,0], "claw 1": [3,6,0], "claw 2": [3,6,0]}, + "mutations": ["Speed Increase"], + "description": "[Green Renders] These mutated Praying Mantises stand 3 meters at the shoulder and are voracious carnivores. They will not attack or keep fighting a party that is clearly stronger, however. Mantas can be recruited with offers of food, but cannot be hired." } diff --git a/app/tables/encounters.py b/app/tables/encounters.py index 69628d1..f1eb0ab 100644 --- a/app/tables/encounters.py +++ b/app/tables/encounters.py @@ -9,14 +9,14 @@ class EncounterTable: 'centisteed', 'rakox', 'rakox', 'brutorz', 'hoop', 'hawkoid', 'hopper', 'hopper', None, None], 'mountains': ['hisser', 'blight', 'parn', 'zarn', 'manta', 'orlen', 'zeethh', 'sep', 'arn', 'yexil', 'herp', 'wardent', 'kep plant', 'crep plant', 'cal then', 'ark', 'hawkoid', 'podog', 'carrin', None], - 'forest': ['hisser', 'sep', 'blaash', 'blackun', 'terl', 'win seen', 'pineto', 'perth', 'obb', 'kailin', + 'forest': ['hisser', 'sep', 'blaash', 'blackun', 'terl', 'win seen', 'pineto', 'perth', 'obb', 'kai lin', 'gren', 'badder', 'arn', 'lil', 'blood bird', 'horl choo', 'soul besh', 'dabber', 'centisteed', None], 'desert': ['serf', 'kamodo', 'blight', 'perth', 'parn', 'zarn', 'yexil', 'hisser', 'sep', 'cal then', 'manta', 'kep plant', 'carrin', 'podog', None, None, None, None, None, None], 'watery': ['win seen', 'crep plant', 'seroon lou', 'terl', 'ert telden', 'barl nep', 'ert', 'fleshin', - 'keeshin', 'narl ep', 'menarl', 'herkel', 'ber lep', 'cren tosh', 'fen', 'gator', None, None, None, - None], + 'keeshin', 'narl ep', 'menarl', 'herkel', 'ber lep', 'cren tosh', 'fen', 'gator', None, None, + None, None], 'ruins': ['arn', 'obb', 'hoop', 'android', 'badder', 'serf', 'blaash', 'yexil', 'manta', 'ark', 'orlen', 'dabber', 'sleeth', 'carrin', 'squeeker', 'squeeker', 'squeeker', None, None, None], 'deathlands': ['android', 'hisser', 'blight', 'zarn', 'perth', 'blaash', 'serf', 'parn', 'squeeker', diff --git a/web/encounter.html b/web/encounter.html index 2338148..c57d936 100644 --- a/web/encounter.html +++ b/web/encounter.html @@ -3,6 +3,33 @@ + Gamma World Encounter Check diff --git a/web/encounter.js b/web/encounter.js index e306b18..5bb41f8 100644 --- a/web/encounter.js +++ b/web/encounter.js @@ -32,11 +32,15 @@ document.getElementById('terrainForm').addEventListener('submit', function (even console.log(name); setResultImage(name); } else { // Long version of the response - setResultTable(json); + if (json.name === 'android') { + androidResultTable(json); + } else { + setCreatureTable(json); + } } }) .catch((err) => { - err.text().then((errorMessage) => { + err.text().then(() => { imgElement.src = 'img/404.jpg'; }); }); @@ -46,79 +50,170 @@ document.getElementById('terrainForm').addEventListener('submit', function (even imgElement.src = 'img/' + name + ".jpg"; console.log(imgElement.src); imgElement.onerror = function () { - this.onerror = null; this.src = 'img/404.jpg'; }; resultSection.appendChild(imgElement); } - function setResultTable(data) { - let table = document.createElement('table'); - table.style.fontSize = '18px'; - table.style.fontFamily = 'Arial'; + function formatDiceMnemonic(data) { + return Array.isArray(data) ? + data[0] + "d" + data[1] + (data[2] === 0 ? "" : "+" + data[2]) : + data.toString(); + } - for (let key in data) { - let tr = document.createElement('tr'); - let tdKey = document.createElement('td'); - let tdValue = document.createElement('td'); + function formatSpeedMnemonic(data){ + return data[0] + '/' + data[1] + '/' + data[2]; + } - tdKey.innerText = key.toUpperCase(); + function androidResultTable(data) { + let container = document.createElement('div'); + container.className = 'container android'; // Added 'android' class - // Make the key names bold: - tdKey.style.fontWeight = 'bold'; + let creatureTitle = document.createElement('h2'); + creatureTitle.textContent = data.name.toUpperCase(); + container.appendChild(creatureTitle) + let image = document.createElement('img'); + image.src = 'img/android.jpg'; + image.onerror = () => { image.src = 'img/404.jpg' }; + image.style.width = '275px'; + image.style.height = '275px'; + container.appendChild(image); + let description = createDescriptionSection(data); + container.appendChild(description); - if (Array.isArray(data[key])) { - if (key === 'environ' || key === 'mutations') { - tdValue.innerText = data[key].join(', '); - } else if (key === 'land speed' || key === 'water speed' || key === 'air speed') { - tdValue.innerText = `${data[key][0]}/${data[key][1]}/${data[key][2]}`; - } else { - tdValue.innerText = `${data[key][0]}d${data[key][1]}${data[key][2] === 0 ? "" : "+" + data[key][2]}`; - } - } else if (key === 'attacks' && typeof data[key] === 'object') { - let attacksTable = document.createElement('table'); - for (let attack in data[key]) { - let tr = document.createElement('tr'); - let tdKey = document.createElement('td'); - let tdValue = document.createElement('td'); - tdKey.innerText = attack; + Object.entries(data).forEach(([key, value]) => { - if (data[key][attack].join() === "0,0,0") { - tdValue.innerText = "See notes below"; - } else { - tdValue.innerText = `${data[key][attack][0]}d${data[key][attack][1]}${data[key][attack][2] === 0 ? "" : "+" + data[key][attack][2]}`; - } + if (key === 'thinker' || key === 'worker' || key === 'warrior') { + let typeTitle = document.createElement('h2'); + typeTitle.textContent = key.toUpperCase(); // Display the type (worker, warrior, thinker) + container.appendChild(typeTitle); + + let profile = createProfileSection(value); + let abilities = createAbilitiesSection(value); + + container.appendChild(profile); + container.appendChild(abilities); - tr.appendChild(tdKey); - tr.appendChild(tdValue); - attacksTable.appendChild(tr); - } - tdValue.appendChild(attacksTable); - } else { - tdValue.innerText = data[key]; } + }); - if (key === 'name') { - let imgURL = "img/" + data[key] + ".jpg"; - tdKey.innerHTML = ` -
-

${data[key].toUpperCase()}

-
`; - tdValue.innerHTML = ` -
- -
`; - console.log(tdValue.innerHTML); - } + resultSection.appendChild(container); + } - - tr.appendChild(tdKey); - tr.appendChild(tdValue); - table.appendChild(tr); + function createProfileSection(data) { + let profile = document.createElement('div'); + profile.className = 'creature_profile'; + let profileHTML = ` +

Profile

+ + + + + + + `; + if(data['land speed']){ + profileHTML += ``; } + if(data['water speed']){ + profileHTML += ``; + } + if(data['air speed']){ + profileHTML += ``; + } + profileHTML += '
NUMBER ${formatDiceMnemonic(data.number)}
MORALE ${formatDiceMnemonic(data.morale)}
HIT DICE ${formatDiceMnemonic(data['hit dice'])}
ARMOUR ${data.armour}
ENVIRON ${data.environ.join(', ')}
LAND SPEED ${formatSpeedMnemonic(data['land speed'])}
WATER SPEED ${formatSpeedMnemonic(data['water speed'])}
AIR SPEED ${formatSpeedMnemonic(data['air speed'])}
'; - resultSection.appendChild(table); + profile.innerHTML = profileHTML; + return profile; + } + + function createAbilitiesSection(data) { + // Abilities section + let abilities = document.createElement('div'); + abilities.className = 'creature_abilities'; + abilities.innerHTML = ` +

Abilities

+ + + + + + + +
MS ${formatDiceMnemonic(data.ms)}
IN ${formatDiceMnemonic(data.in)}
DX ${formatDiceMnemonic(data.dx)}
CH ${formatDiceMnemonic(data.ch)}
CN ${formatDiceMnemonic(data.cn)}
PS ${formatDiceMnemonic(data.ps)}
+ `; + return abilities; + } + + function createAttacksSection(data) { + // Attacks section + let attacks = document.createElement('div'); + attacks.className = 'creature_attacks'; + let attacksHTML = '

Attacks

'; + let attacksTable = ''; + for (let attack in data.attacks) { + let mnemonic_display; + mnemonic_display = formatDiceMnemonic(data.attacks[attack]); + if (mnemonic_display === "0d0") { + mnemonic_display = 'See Description'; + } + attacksTable += `` + } + attacksTable += '
${attack}${mnemonic_display}
'; + attacks.innerHTML = attacksHTML + attacksTable; + return attacks + } + + function createMutationsSection(mutarray) { + // Mutations section + let mutations = document.createElement('div'); + mutations.className = 'creature_mutations'; + let mutationsHTML = '

Mutations

'; + let mutationsList = mutarray.reduce((result, mutation) => result + `
  • ${mutation}
  • `, ''); + mutationsHTML += ``; + mutations.innerHTML = mutationsHTML + return mutations + } + + function createDescriptionSection(data) { + // Description section + let description = document.createElement('div'); + description.className = 'creature_description'; + let descriptionHTML = ` +

    Description

    +

    ${data.description}

    + `; + description.innerHTML = descriptionHTML; + return description + } + + function setCreatureTable(data) { + let container = document.createElement('div'); + container.className = 'container'; + + // Creature ID section + let creatureId = document.createElement('div'); + creatureId.className = 'creature_id'; + creatureId.innerHTML = ` +

    ${data.name.toUpperCase()}

    + + `; + + let profile = createProfileSection(data); + let abilities = createAbilitiesSection(data); + let attacks = createAttacksSection(data); + let mutations = createMutationsSection(data.mutations); // Notice the data difference + let description = createDescriptionSection(data); + + container.appendChild(creatureId); + container.appendChild(profile); + container.appendChild(abilities); + container.appendChild(attacks); + container.appendChild(mutations); + container.appendChild(description); + + resultSection.appendChild(container); } }, 1000); }); \ No newline at end of file diff --git a/web/img/ark.jpg b/web/img/ark.jpg index 526fc6d..be87b46 100644 Binary files a/web/img/ark.jpg and b/web/img/ark.jpg differ diff --git a/web/img/arn.jpg b/web/img/arn.jpg index 90ed2f4..b154bb9 100644 Binary files a/web/img/arn.jpg and b/web/img/arn.jpg differ diff --git a/web/img/badder.jpg b/web/img/badder.jpg index bce8124..7e136ee 100644 Binary files a/web/img/badder.jpg and b/web/img/badder.jpg differ diff --git a/web/img/barl nep.jpg b/web/img/barl nep.jpg index 0b9f74d..58d44ad 100644 Binary files a/web/img/barl nep.jpg and b/web/img/barl nep.jpg differ diff --git a/web/img/blood bird.jpg b/web/img/blood bird.jpg index ee753cd..73d9e0f 100644 Binary files a/web/img/blood bird.jpg and b/web/img/blood bird.jpg differ diff --git a/web/img/brutorz.jpg b/web/img/brutorz.jpg index 8053bcb..9b1b85a 100644 Binary files a/web/img/brutorz.jpg and b/web/img/brutorz.jpg differ diff --git a/web/img/cal then.jpg b/web/img/cal then.jpg index 0c74561..3187c6d 100644 Binary files a/web/img/cal then.jpg and b/web/img/cal then.jpg differ diff --git a/web/img/carrin.jpg b/web/img/carrin.jpg index 2cd4131..7b3329f 100644 Binary files a/web/img/carrin.jpg and b/web/img/carrin.jpg differ diff --git a/web/img/cren tosh.jpg b/web/img/cren tosh.jpg index ec1ac6b..e0360fe 100644 Binary files a/web/img/cren tosh.jpg and b/web/img/cren tosh.jpg differ diff --git a/web/img/crep plant.jpg b/web/img/crep plant.jpg index 699527a..ada7964 100644 Binary files a/web/img/crep plant.jpg and b/web/img/crep plant.jpg differ diff --git a/web/img/ert telden.jpg b/web/img/ert telden.jpg index 3e77ea8..8265d46 100644 Binary files a/web/img/ert telden.jpg and b/web/img/ert telden.jpg differ diff --git a/web/img/fen.jpg b/web/img/fen.jpg index b00d68e..0901bde 100644 Binary files a/web/img/fen.jpg and b/web/img/fen.jpg differ diff --git a/web/img/fleshin.jpg b/web/img/fleshin.jpg index 64cc0ae..f416024 100644 Binary files a/web/img/fleshin.jpg and b/web/img/fleshin.jpg differ diff --git a/web/img/gator.jpg b/web/img/gator.jpg index f893712..a41f4c1 100644 Binary files a/web/img/gator.jpg and b/web/img/gator.jpg differ diff --git a/web/img/gren.jpg b/web/img/gren.jpg index c4cc59a..6c9acca 100644 Binary files a/web/img/gren.jpg and b/web/img/gren.jpg differ diff --git a/web/img/hawkoid.jpg b/web/img/hawkoid.jpg index 7501806..7adaa1d 100644 Binary files a/web/img/hawkoid.jpg and b/web/img/hawkoid.jpg differ diff --git a/web/img/herkel.jpg b/web/img/herkel.jpg index 62caa29..a84bc70 100644 Binary files a/web/img/herkel.jpg and b/web/img/herkel.jpg differ diff --git a/web/img/herp.jpg b/web/img/herp.jpg index fd64d0e..4c8e43c 100644 Binary files a/web/img/herp.jpg and b/web/img/herp.jpg differ diff --git a/web/img/hisser.jpg b/web/img/hisser.jpg index f9d20d5..cde73ca 100644 Binary files a/web/img/hisser.jpg and b/web/img/hisser.jpg differ diff --git a/web/img/hoop.jpg b/web/img/hoop.jpg index ea66641..80f339c 100644 Binary files a/web/img/hoop.jpg and b/web/img/hoop.jpg differ diff --git a/web/img/hopper.jpg b/web/img/hopper.jpg index 7d2f5cf..e6dc09f 100644 Binary files a/web/img/hopper.jpg and b/web/img/hopper.jpg differ diff --git a/web/img/horl choo.jpg b/web/img/horl choo.jpg index 307737c..6eb952c 100644 Binary files a/web/img/horl choo.jpg and b/web/img/horl choo.jpg differ diff --git a/web/img/jaget.jpg b/web/img/jaget.jpg index 795ca60..59d99ee 100644 Binary files a/web/img/jaget.jpg and b/web/img/jaget.jpg differ diff --git a/web/img/kai lin.jpg b/web/img/kai lin.jpg new file mode 100644 index 0000000..91a4180 Binary files /dev/null and b/web/img/kai lin.jpg differ diff --git a/web/img/kailin.jpg b/web/img/kailin.jpg deleted file mode 100644 index e15dcdc..0000000 Binary files a/web/img/kailin.jpg and /dev/null differ diff --git a/web/img/kamodo.jpg b/web/img/kamodo.jpg index ba71fec..c842196 100644 Binary files a/web/img/kamodo.jpg and b/web/img/kamodo.jpg differ diff --git a/web/img/keeshin.jpg b/web/img/keeshin.jpg index 0e5783b..86093c6 100644 Binary files a/web/img/keeshin.jpg and b/web/img/keeshin.jpg differ diff --git a/web/img/kep plant.jpg b/web/img/kep plant.jpg index 0f798a2..e4de60a 100644 Binary files a/web/img/kep plant.jpg and b/web/img/kep plant.jpg differ diff --git a/web/img/lil.jpg b/web/img/lil.jpg index 84986e5..e1b4d31 100644 Binary files a/web/img/lil.jpg and b/web/img/lil.jpg differ diff --git a/web/img/manta.jpg b/web/img/manta.jpg index c4d41b6..dc3735f 100644 Binary files a/web/img/manta.jpg and b/web/img/manta.jpg differ