Пример #1
0
void game::init_mutations()
{
 int id = 0;
// Set all post-PF_MAX to valid
 for (int i = PF_MAX + 1; i < PF_MAX2; i++)
  mutation_data[i].valid = true;

 mutation_data[PF_MARLOSS].valid = false; // Never valid!

 MUTATION(PF_FLEET);
  CANCELS (PF_PONDEROUS1, PF_PONDEROUS2, PF_PONDEROUS3);
  CHANGES_TO (PF_FLEET2);

 MUTATION(PF_FLEET2);
  PREREQS (PF_FLEET);
  CANCELS (PF_PONDEROUS1, PF_PONDEROUS2, PF_PONDEROUS3);

 MUTATION(PF_FASTHEALER);
  CANCELS (PF_ROT1, PF_ROT2, PF_ROT3);
  CHANGES_TO (PF_FASTHEALER2);

 MUTATION(PF_LIGHTEATER);

 MUTATION(PF_NIGHTVISION);
  CHANGES_TO (PF_NIGHTVISION2);

 MUTATION(PF_POISRESIST);

 MUTATION(PF_THICKSKIN);

 MUTATION(PF_DEFT);

 MUTATION(PF_ANIMALEMPATH);

 MUTATION(PF_TERRIFYING);

 MUTATION(PF_DISRESISTANT);
  CHANGES_TO (PF_DISIMMUNE);

 MUTATION(PF_ROBUST);

 MUTATION(PF_ADRENALINE);

 MUTATION(PF_MYOPIC);

 MUTATION(PF_HEAVYSLEEPER);

 MUTATION(PF_LIGHTWEIGHT);

 MUTATION(PF_SMELLY);
  CHANGES_TO (PF_SMELLY2);

 MUTATION(PF_WEAKSTOMACH);
  CHANGES_TO (PF_NAUSEA);

 MUTATION(PF_UGLY);
  CHANGES_TO (PF_DEFORMED);

 MUTATION(PF_SKIN_SMOOTH);
  CANCELS (PF_SKIN_ROUGH);

// Mutation-only traits start here

 MUTATION(PF_HOOVES);
  CANCELS (PF_PADDED_FEET);

 MUTATION(PF_SKIN_ROUGH);
  CHANGES_TO (PF_SCALES, PF_FEATHERS, PF_LIGHTFUR, PF_CHITIN, PF_PLANTSKIN);
  CANCELS (PF_SKIN_SMOOTH);

 MUTATION(PF_NIGHTVISION2);
  PREREQS (PF_NIGHTVISION);
  CHANGES_TO (PF_NIGHTVISION3);

 MUTATION(PF_NIGHTVISION3);
  PREREQS (PF_NIGHTVISION2);
  LEADS_TO (PF_INFRARED);

 MUTATION(PF_FASTHEALER2);
  CANCELS (PF_ROT1, PF_ROT2, PF_ROT3);
  PREREQS (PF_FASTHEALER);
  CHANGES_TO (PF_REGEN);

 MUTATION(PF_REGEN);
  CANCELS (PF_ROT1, PF_ROT2, PF_ROT3);
  PREREQS (PF_FASTHEALER2);

 MUTATION(PF_FANGS);
  CANCELS (PF_BEAK);
  CHANGES_TO (PF_TUSKS);

 MUTATION(PF_MEMBRANE);
  PREREQS (PF_EYEBULGE);

 MUTATION(PF_SCALES);
  PREREQS (PF_SKIN_ROUGH);
  CHANGES_TO (PF_THICK_SCALES, PF_SLEEK_SCALES, PF_CHAMELEON_SCALES);

 MUTATION(PF_THICK_SCALES);
  PREREQS (PF_SCALES);
  CANCELS (PF_SLEEK_SCALES, PF_CHAMELEON_SCALES, PF_FEATHERS);

 MUTATION(PF_SLEEK_SCALES);
  PREREQS (PF_SCALES);
  CANCELS (PF_THICK_SCALES, PF_CHAMELEON_SCALES, PF_FEATHERS);

 MUTATION(PF_CHAMELEON_SCALES);
  PREREQS (PF_SCALES);
  CANCELS (PF_THICK_SCALES, PF_SLEEK_SCALES, PF_FEATHERS);

 MUTATION(PF_LIGHT_BONES);
  CHANGES_TO (PF_HOLLOW_BONES);

 MUTATION(PF_FEATHERS);
  PREREQS (PF_SKIN_ROUGH);
  CANCELS(PF_THICK_SCALES, PF_SLEEK_SCALES, PF_CHAMELEON_SCALES);

 MUTATION(PF_LIGHTFUR);
  PREREQS (PF_SKIN_ROUGH);
  CHANGES_TO (PF_FUR);

 MUTATION(PF_FUR);
  PREREQS (PF_LIGHTFUR);

 MUTATION(PF_CHITIN);
  CHANGES_TO (PF_CHITIN2);

 MUTATION(PF_CHITIN2);
  PREREQS (PF_CHITIN);
  CHANGES_TO (PF_CHITIN3);

 MUTATION(PF_CHITIN3);
  PREREQS (PF_CHITIN2);

 MUTATION(PF_SPINES);
  PREREQS (PF_SKIN_ROUGH);
  CHANGES_TO (PF_QUILLS);

 MUTATION (PF_QUILLS);
  PREREQS (PF_SPINES);

 MUTATION (PF_PLANTSKIN);
  CHANGES_TO (PF_BARK);
  LEADS_TO (PF_THORNS, PF_LEAVES);

 MUTATION(PF_BARK);
  PREREQS (PF_PLANTSKIN);

 MUTATION(PF_THORNS);
  PREREQS (PF_PLANTSKIN, PF_BARK);

 MUTATION(PF_LEAVES);
  PREREQS (PF_PLANTSKIN, PF_BARK);

 MUTATION(PF_NAILS);
  CHANGES_TO (PF_CLAWS, PF_TALONS);

 MUTATION(PF_CLAWS);
  PREREQS (PF_NAILS);
  CANCELS (PF_TALONS);

 MUTATION(PF_TALONS);
  PREREQS (PF_NAILS);
  CANCELS (PF_CLAWS);

 MUTATION(PF_PHEROMONE_INSECT);
  PREREQS (PF_SMELLY2);
  CANCELS (PF_PHEROMONE_MAMMAL);

 MUTATION(PF_PHEROMONE_MAMMAL);
  PREREQS (PF_SMELLY2);
  CANCELS (PF_PHEROMONE_INSECT);

 MUTATION(PF_DISIMMUNE);
  PREREQS (PF_DISRESISTANT);

 MUTATION(PF_POISONOUS);
  PREREQS (PF_POISRESIST);

 MUTATION(PF_SLIME_HANDS);
  PREREQS (PF_SLIMY);
  LEADS_TO (PF_ACID_RESIST);

 MUTATION(PF_COMPOUND_EYES);
  PREREQS (PF_EYEBULGE);
  CANCELS (PF_CROSSEYED);

 MUTATION(PF_PADDED_FEET);
  CANCELS (PF_HOOVES);

 MUTATION(PF_HOOVES);
  CANCELS (PF_PADDED_FEET);

 MUTATION(PF_SAPROVORE);
  PREREQS (PF_CARNIVORE);
  CANCELS (PF_HERBIVORE, PF_RUMINANT);

 MUTATION(PF_RUMINANT);
  PREREQS (PF_HERBIVORE);
  CANCELS (PF_CARNIVORE, PF_SAPROVORE);

 MUTATION(PF_HORNS);
  PREREQS (PF_HEADBUMPS);
  CANCELS (PF_ANTENNAE);
  CHANGES_TO (PF_HORNS_CURLED, PF_HORNS_POINTED, PF_ANTLERS);

 MUTATION(PF_HORNS_CURLED);
  PREREQS (PF_HORNS);
  CANCELS (PF_ANTENNAE, PF_HORNS_POINTED, PF_ANTLERS);

 MUTATION(PF_HORNS_POINTED);
  PREREQS (PF_HORNS);
  CANCELS (PF_ANTENNAE, PF_HORNS_CURLED, PF_ANTLERS);

 MUTATION(PF_ANTLERS);
  PREREQS (PF_HORNS);
  CANCELS (PF_ANTENNAE, PF_HORNS_CURLED, PF_HORNS_POINTED);

 MUTATION(PF_ANTENNAE);
  PREREQS (PF_HEADBUMPS);
  CANCELS (PF_HORNS, PF_HORNS_CURLED, PF_HORNS_POINTED, PF_ANTLERS);

 MUTATION(PF_TAIL_STUB);
  CHANGES_TO (PF_TAIL_LONG, PF_TAIL_FIN);

 MUTATION(PF_TAIL_FIN);
  PREREQS (PF_TAIL_STUB);
  CANCELS (PF_TAIL_LONG, PF_TAIL_FLUFFY, PF_TAIL_STING, PF_TAIL_CLUB);
  LEADS_TO (PF_FIN_DORSAL);

 MUTATION(PF_TAIL_LONG);
  PREREQS (PF_TAIL_STUB);
  CANCELS (PF_TAIL_FIN);
  CHANGES_TO (PF_TAIL_FLUFFY, PF_TAIL_STING, PF_TAIL_CLUB);

 MUTATION(PF_TAIL_FLUFFY);
  PREREQS (PF_TAIL_LONG);
  CANCELS (PF_TAIL_STING, PF_TAIL_CLUB, PF_TAIL_FIN);

 MUTATION(PF_TAIL_STING);
  PREREQS (PF_TAIL_LONG);
  CANCELS (PF_TAIL_FLUFFY, PF_TAIL_CLUB, PF_TAIL_FIN);

 MUTATION(PF_TAIL_CLUB);
  PREREQS (PF_TAIL_LONG);
  CANCELS (PF_TAIL_FLUFFY, PF_TAIL_STING, PF_TAIL_FIN);

 MUTATION(PF_PAINREC1);
  CHANGES_TO (PF_PAINREC2);

 MUTATION(PF_PAINREC2);
  PREREQS (PF_PAINREC1);
  CHANGES_TO (PF_PAINREC3);

 MUTATION(PF_PAINREC3);
  PREREQS (PF_PAINREC2);

 MUTATION(PF_MOUTH_TENTACLES);
  PREREQS (PF_MOUTH_FLAPS);
  CANCELS (PF_MANDIBLES);

 MUTATION(PF_MANDIBLES);
  PREREQS (PF_MOUTH_FLAPS);
  CANCELS (PF_BEAK, PF_FANGS, PF_MOUTH_TENTACLES);

 MUTATION(PF_WEB_WALKER);
  LEADS_TO (PF_WEB_WEAVER);

 MUTATION(PF_WEB_WEAVER);
  PREREQS (PF_WEB_WALKER);
  CANCELS (PF_SLIMY);

  MUTATION(PF_EYE_STALKS);
  PREREQS (PF_EYEBULGE);

 MUTATION(PF_TUSKS);
  PREREQS (PF_FANGS);
  CANCELS (PF_MANDIBLES, PF_MOUTH_TENTACLES, PF_BEAK);

  MUTATION(PF_EYES_4);
   PREREQS (PF_EYEBULGE);
   CANCELS (PF_CROSSEYED);
   CHANGES_TO (PF_EYES_6);

  MUTATION(PF_EYES_6);
   PREREQS (PF_EYEBULGE, PF_EYES_4);
   CANCELS (PF_CROSSEYED);
   CHANGES_TO (PF_EYES_8);

  MUTATION(PF_EYES_8);
   PREREQS (PF_EYEBULGE, PF_EYES_6);
   CANCELS (PF_CROSSEYED);

  MUTATION(PF_FIN_DORSAL);
   PREREQS (PF_TAIL_FIN);
   CANCELS (PF_SHELL);

  MUTATION(PF_ACID_TRAIL);
   PREREQS (PF_SLIMY, PF_ACID_IMMUNE);

  MUTATION(PF_CANINE_EARS);
   CANCELS (PF_EAR_HOLES);
// Bad mutations below this point

 MUTATION(PF_HEADBUMPS);
  CHANGES_TO (PF_HORNS, PF_ANTENNAE);

 MUTATION(PF_EYEBULGE);
  LEADS_TO (PF_MEMBRANE);
  CHANGES_TO (PF_COMPOUND_EYES ,PF_EYE_STALKS);

 MUTATION(PF_PALE);
  CHANGES_TO (PF_ALBINO);
  LEADS_TO (PF_TROGLO);

 MUTATION(PF_SPOTS);
  CHANGES_TO (PF_SORES);

 MUTATION(PF_SMELLY2);
  PREREQS (PF_SMELLY);
  LEADS_TO (PF_PHEROMONE_INSECT, PF_PHEROMONE_MAMMAL);

 MUTATION(PF_DEFORMED);
  PREREQS (PF_UGLY);
  CHANGES_TO (PF_DEFORMED2);

 MUTATION(PF_DEFORMED2);
  PREREQS (PF_DEFORMED);
  CHANGES_TO (PF_DEFORMED3);

 MUTATION(PF_DEFORMED3);
  PREREQS (PF_DEFORMED2);

 MUTATION(PF_HOLLOW_BONES);
  PREREQS (PF_LIGHT_BONES);

 MUTATION(PF_NAUSEA);
  PREREQS (PF_WEAKSTOMACH);
  CHANGES_TO (PF_VOMITOUS);

 MUTATION(PF_VOMITOUS);
  PREREQS (PF_NAUSEA);

 MUTATION(PF_ROT1);
  CANCELS (PF_FASTHEALER, PF_FASTHEALER2, PF_REGEN);
  CHANGES_TO (PF_ROT2);

 MUTATION(PF_ROT2);
  CANCELS (PF_FASTHEALER, PF_FASTHEALER2, PF_REGEN);
  PREREQS (PF_ROT1);
  CHANGES_TO (PF_ROT3);

 MUTATION(PF_ROT3);
  CANCELS (PF_FASTHEALER, PF_FASTHEALER2, PF_REGEN);
  PREREQS (PF_ROT2);

 MUTATION(PF_ALBINO);
  PREREQS (PF_PALE);

 MUTATION(PF_SORES);
  PREREQS (PF_SPOTS);

 MUTATION(PF_TROGLO);
  CANCELS (PF_SUNLIGHT_DEPENDANT);
  CHANGES_TO (PF_TROGLO2);

 MUTATION(PF_TROGLO2);
  CANCELS (PF_SUNLIGHT_DEPENDANT);
  PREREQS (PF_TROGLO);
  CHANGES_TO (PF_TROGLO3);

 MUTATION(PF_TROGLO3);
  CANCELS (PF_SUNLIGHT_DEPENDANT);
  PREREQS (PF_TROGLO2);

 MUTATION(PF_BEAK);
  CANCELS (PF_FANGS, PF_MANDIBLES);

 MUTATION(PF_RADIOACTIVE1);
  CHANGES_TO (PF_RADIOACTIVE2);

 MUTATION(PF_RADIOACTIVE2);
  PREREQS (PF_RADIOACTIVE1);
  CHANGES_TO (PF_RADIOACTIVE3);

 MUTATION(PF_RADIOACTIVE3);
  PREREQS (PF_RADIOACTIVE2);

 MUTATION(PF_SLIMY);
  LEADS_TO (PF_SLIME_HANDS);

 MUTATION(PF_CARNIVORE);
  CANCELS (PF_HERBIVORE, PF_RUMINANT);
  LEADS_TO (PF_SAPROVORE);

 MUTATION(PF_HERBIVORE);
  CANCELS (PF_CARNIVORE, PF_SAPROVORE);
  LEADS_TO (PF_RUMINANT);

 MUTATION(PF_PONDEROUS1);
  CANCELS (PF_FLEET, PF_FLEET2);
  CHANGES_TO (PF_PONDEROUS2);

 MUTATION(PF_PONDEROUS2);
  CANCELS (PF_FLEET, PF_FLEET2);
  PREREQS (PF_PONDEROUS1);
  CHANGES_TO (PF_PONDEROUS3);

 MUTATION(PF_PONDEROUS3);
  CANCELS (PF_FLEET, PF_FLEET2);
  PREREQS (PF_PONDEROUS2);

 MUTATION(PF_SUNLIGHT_DEPENDANT);
  CANCELS (PF_TROGLO, PF_TROGLO2, PF_TROGLO3);

 MUTATION(PF_GROWL);
  CHANGES_TO (PF_SNARL);

 MUTATION(PF_SNARL);
  PREREQS (PF_GROWL);

 MUTATION(PF_COLDBLOOD);
  CHANGES_TO (PF_COLDBLOOD2);

 MUTATION(PF_COLDBLOOD2);
  PREREQS (PF_COLDBLOOD);
  CHANGES_TO (PF_COLDBLOOD3);

 MUTATION(PF_COLDBLOOD3);
  PREREQS (PF_COLDBLOOD2);

 MUTATION(PF_SHOUT1);
  CHANGES_TO (PF_SHOUT2);

 MUTATION(PF_SHOUT2);
  PREREQS (PF_SHOUT1);
  CHANGES_TO (PF_SHOUT3);

 MUTATION(PF_SHOUT3);
  PREREQS (PF_SHOUT2);

 MUTATION(PF_WINGS_STUB);
  CHANGES_TO (PF_WINGS_BIRD, PF_WINGS_BAT, PF_WINGS_INSECT);

 MUTATION(PF_WINGS_BIRD);
  PREREQS (PF_WINGS_STUB);
  CANCELS (PF_WINGS_BAT, PF_WINGS_INSECT);

 MUTATION(PF_WINGS_BAT);
  PREREQS (PF_WINGS_STUB);
  CANCELS (PF_WINGS_BIRD, PF_WINGS_INSECT);

 MUTATION(PF_WINGS_INSECT);
  PREREQS (PF_WINGS_STUB);
  CANCELS (PF_WINGS_BIRD, PF_WINGS_BAT);

 MUTATION(PF_ARM_TENTACLES);
  CHANGES_TO (PF_ARM_TENTACLES_4);

 MUTATION(PF_ARM_TENTACLES_4);
  PREREQS (PF_ARM_TENTACLES);
  CHANGES_TO (PF_ARM_TENTACLES_8);

 MUTATION(PF_ARM_TENTACLES_8);
  PREREQS (PF_ARM_TENTACLES_4);

 MUTATION(PF_PINCERS);
  PREREQS(PF_CHITIN2);

 MUTATION(PF_SHELL);
  PREREQS (PF_CHITIN);
  CANCELS (PF_CHITIN3);
  CANCELS (PF_FIN_DORSAL);

 MUTATION(PF_CROSSEYED);
  CANCELS (PF_COMPOUND_EYES, PF_EYES_4, PF_EYES_6, PF_EYES_8, PF_EYE_STALKS);

 MUTATION(PF_EAR_HOLES);
  CANCELS (PF_CANINE_EARS);

 MUTATION(PF_ACID_RESIST);
  CHANGES_TO (PF_ACID_IMMUNE);

 MUTATION(PF_ACID_IMMUNE);
  LEADS_TO (PF_ACID_TRAIL);
}
Пример #2
0
void game::init_mutations()
{
 int id = 0;
 
 MUTATION(PF_NULL);
  VALID(false);

 MUTATION(PF_FLEET);
  VALID(true);
  CANCELS (PF_PONDEROUS1, PF_PONDEROUS2, PF_PONDEROUS3);
  CHANGES_TO (PF_FLEET2);
  
 MUTATION(PF_PARKOUR);
  VALID(false);
  
 MUTATION(PF_QUICK);
  VALID(true);
  
 MUTATION(PF_OPTIMISTIC);
  VALID(false);

 MUTATION(PF_FASTHEALER);
  VALID(true);
  CANCELS (PF_ROT1, PF_ROT2, PF_ROT3);
  CHANGES_TO (PF_FASTHEALER2);

 MUTATION(PF_LIGHTEATER);
  VALID(true);
  
 MUTATION(PF_PAINRESIST);
  VALID(false);

 MUTATION(PF_NIGHTVISION);
  VALID(true);
  CHANGES_TO (PF_NIGHTVISION2);

 MUTATION(PF_POISRESIST);
  VALID(true);
  
 MUTATION(PF_FASTREADER);
  VALID(false);
  
 MUTATION(PF_TOUGH);
  VALID(false);

 MUTATION(PF_THICKSKIN);
  VALID(true);
  
 MUTATION(PF_PACKMULE);
  VALID(false);
  
 MUTATION(PF_FASTLEARNER);
  VALID(false);

 MUTATION(PF_DEFT);
  VALID(true);
  
 MUTATION(PF_DRUNKEN);
  VALID(false);
  
 MUTATION(PF_GOURMAND);
  VALID(false);

 MUTATION(PF_ANIMALEMPATH);
  VALID(true);

 MUTATION(PF_TERRIFYING);
  VALID(true);

 MUTATION(PF_DISRESISTANT);
  VALID(true);
  CHANGES_TO (PF_DISIMMUNE);
  
 MUTATION(PF_ADRENALINE);
  VALID(true);
  
 MUTATION(PF_SELFAWARE);
  VALID(false);
  
 MUTATION(PF_INCONSPICUOUS);
  VALID(false);
  
 MUTATION(PF_MASOCHIST);
  VALID(false);
  
 MUTATION(PF_LIGHTSTEP);
  VALID(true);
  
 MUTATION(PF_ANDROID);
  VALID(false);

 MUTATION(PF_ROBUST);
  VALID(true);
  
 MUTATION(PF_CANNIBAL);
  VALID(false);
  
 MUTATION(PF_MARTIAL_ARTS);
  VALID(false);
  
 MUTATION(PF_MARTIAL_ARTS2);
  VALID(false);
    
 MUTATION(PF_MARTIAL_ARTS3);
  VALID(false);
    
 MUTATION(PF_MARTIAL_ARTS4);
  VALID(false);

 MUTATION(PF_LIAR);
  VALID(true);
  CANCELS (PF_TRUTHTELLER);
  
 MUTATION(PF_PRETTY);
  VALID(true);
  CANCELS (PF_UGLY, PF_DEFORMED, PF_DEFORMED2, PF_DEFORMED3);
  CHANGES_TO (PF_BEAUTIFUL);
  
 MUTATION(PF_SPLIT); // Null trait
  VALID(false);
// Negative start traits begin here

 MUTATION(PF_MYOPIC);
  VALID(true);
  
 MUTATION(PF_HYPEROPIC);
  VALID(false);

 MUTATION(PF_HEAVYSLEEPER);
  VALID(true);
  
 MUTATION(PF_ASTHMA);
  VALID(false);
  
 MUTATION(PF_BADBACK);
  VALID(true);
  
 MUTATION(PF_ILLITERATE);
  VALID(false);
  
 MUTATION(PF_BADHEARING);
  VALID(true);
  
 MUTATION(PF_INSOMNIA);
  VALID(false);
  
 MUTATION(PF_VEGETARIAN);
  VALID(false);
  
 MUTATION(PF_GLASSJAW);
  VALID(true);
  
 MUTATION(PF_FORGETFUL);
  VALID(true);

 MUTATION(PF_LIGHTWEIGHT);
  VALID(true);
  
 MUTATION(PF_ADDICTIVE);
  VALID(false);
  
 MUTATION(PF_TRIGGERHAPPY);
  VALID(false);

 MUTATION(PF_SMELLY);
  VALID(true);
  CHANGES_TO (PF_SMELLY2);
  
 MUTATION(PF_CHEMIMBALANCE);
  VALID(true);
  
 MUTATION(PF_SCHIZOPHRENIC);
  VALID(false);
  
 MUTATION(PF_JITTERY);
  VALID(false);
  
 MUTATION(PF_HOARDER);
  VALID(false);
  
 MUTATION(PF_SAVANT);
  VALID(false);
  
 MUTATION(PF_MOODSWINGS);
  VALID(false);

 MUTATION(PF_WEAKSTOMACH);
  VALID(true);
  CHANGES_TO (PF_NAUSEA);
  
 MUTATION(PF_WOOLALLERGY);
  VALID(true);

 MUTATION(PF_TRUTHTELLER);
  VALID(true);
  CANCELS (PF_LIAR);  
  
 MUTATION(PF_UGLY);
  VALID(true);
  CANCELS (PF_PRETTY, PF_BEAUTIFUL, PF_BEAUTIFUL2, PF_BEAUTIFUL3);
  CHANGES_TO (PF_DEFORMED);
  
 MUTATION(PF_HARDCORE);
  VALID(false);

 MUTATION(PF_MAX); //Null trait
  VALID(false);
// Mutation-only traits start here

 MUTATION(PF_SKIN_ROUGH);
  VALID(true);
  CHANGES_TO (PF_SCALES, PF_FEATHERS, PF_LIGHTFUR, PF_CHITIN, PF_PLANTSKIN);

 MUTATION(PF_NIGHTVISION2);
  VALID(true);
  PREREQS (PF_NIGHTVISION);
  CHANGES_TO (PF_NIGHTVISION3);

 MUTATION(PF_NIGHTVISION3);
  VALID(true);
  PREREQS (PF_NIGHTVISION2);
  LEADS_TO (PF_INFRARED);
  
 MUTATION(PF_INFRARED);
  VALID(true);
  PREREQS (PF_NIGHTVISION3);

 MUTATION(PF_FASTHEALER2);
  VALID(true);
  CANCELS (PF_ROT1, PF_ROT2, PF_ROT3);
  PREREQS (PF_FASTHEALER);
  CHANGES_TO (PF_REGEN);

 MUTATION(PF_REGEN);
  VALID(true);
  CANCELS (PF_ROT1, PF_ROT2, PF_ROT3);
  PREREQS (PF_FASTHEALER2);

 MUTATION(PF_FANGS);
  VALID(true);
  CANCELS (PF_BEAK);

 MUTATION(PF_MEMBRANE);
  VALID(true);
  PREREQS (PF_EYEBULGE);
  
 MUTATION(PF_GILLS);
  VALID(true);

 MUTATION(PF_SCALES);
  VALID(true);
  PREREQS (PF_SKIN_ROUGH);
  CHANGES_TO (PF_THICK_SCALES, PF_SLEEK_SCALES);

 MUTATION(PF_THICK_SCALES);
  VALID(true);
  PREREQS (PF_SCALES);
  CANCELS (PF_SLEEK_SCALES, PF_FEATHERS);

 MUTATION(PF_SLEEK_SCALES);
  VALID(true);
  PREREQS (PF_SCALES);
  CANCELS (PF_THICK_SCALES, PF_FEATHERS);

 MUTATION(PF_LIGHT_BONES);
  VALID(true);
  CHANGES_TO (PF_HOLLOW_BONES);

 MUTATION(PF_FEATHERS);
  VALID(true);
  PREREQS (PF_SKIN_ROUGH);
  CANCELS(PF_THICK_SCALES, PF_SLEEK_SCALES);

 MUTATION(PF_LIGHTFUR);
  VALID(true);
  PREREQS (PF_SKIN_ROUGH);
  CANCELS (PF_SCALES, PF_FEATHERS, PF_CHITIN, PF_PLANTSKIN);
  CHANGES_TO (PF_FUR);

 MUTATION(PF_FUR);
  VALID(true);
  CANCELS (PF_SCALES, PF_FEATHERS, PF_CHITIN, PF_PLANTSKIN);
  PREREQS (PF_LIGHTFUR);

 MUTATION(PF_CHITIN);
  VALID(true);
  PREREQS (PF_SKIN_ROUGH);
  CANCELS (PF_SCALES, PF_FEATHERS, PF_LIGHTFUR, PF_PLANTSKIN);
  CHANGES_TO (PF_CHITIN2);

 MUTATION(PF_CHITIN2);
  VALID(true);
  PREREQS (PF_CHITIN);
  CHANGES_TO (PF_CHITIN3);

 MUTATION(PF_CHITIN3);
  VALID(true);
  PREREQS (PF_CHITIN2);

 MUTATION(PF_SPINES);
  VALID(true);
  CHANGES_TO (PF_QUILLS);

 MUTATION (PF_QUILLS);
  VALID(true);
  PREREQS (PF_SPINES);

 MUTATION (PF_PLANTSKIN);
  VALID(true);
  CANCELS (PF_FEATHERS, PF_LIGHTFUR, PF_FUR, PF_CHITIN, PF_CHITIN2, PF_CHITIN3,
           PF_SCALES);
  CHANGES_TO (PF_BARK);
  LEADS_TO (PF_THORNS, PF_LEAVES);

 MUTATION(PF_BARK);
  VALID(true);
  PREREQS (PF_PLANTSKIN);

 MUTATION(PF_THORNS);
  VALID(true);
  PREREQS (PF_PLANTSKIN, PF_BARK);

 MUTATION(PF_LEAVES);
  VALID(true);
  PREREQS (PF_PLANTSKIN, PF_BARK);

 MUTATION(PF_NAILS);
  VALID(true);
  CHANGES_TO (PF_CLAWS, PF_TALONS);

 MUTATION(PF_CLAWS);
  VALID(true);
  PREREQS (PF_NAILS);
  CANCELS (PF_TALONS);

 MUTATION(PF_TALONS);
  VALID(true);
  PREREQS (PF_NAILS);
  CANCELS (PF_CLAWS);
  
 MUTATION(PF_RADIOGENIC);
  VALID(true);
  
 MUTATION(PF_MARLOSS);
  VALID(false);

 MUTATION(PF_PHEROMONE_INSECT);
  VALID(true);
  PREREQS (PF_SMELLY2);
  CANCELS (PF_PHEROMONE_MAMMAL);

 MUTATION(PF_PHEROMONE_MAMMAL);
  VALID(true);
  PREREQS (PF_SMELLY2);
  CANCELS (PF_PHEROMONE_INSECT);

 MUTATION(PF_DISIMMUNE);
  VALID(true);
  PREREQS (PF_DISRESISTANT);

 MUTATION(PF_POISONOUS);
  VALID(true);
  PREREQS (PF_POISRESIST);

 MUTATION(PF_SLIME_HANDS);
  VALID(true);
  PREREQS (PF_SLIMY);

 MUTATION(PF_COMPOUND_EYES);
  VALID(true);
  PREREQS (PF_EYEBULGE);

 MUTATION(PF_PADDED_FEET);
  VALID(true);
  CANCELS (PF_HOOVES, PF_LEG_TENTACLES);

 MUTATION(PF_HOOVES);
  VALID(true);
  CANCELS (PF_PADDED_FEET, PF_LEG_TENTACLES);

 MUTATION(PF_SAPROVORE);
  VALID(true);
  PREREQS (PF_CARNIVORE);
  CANCELS (PF_HERBIVORE, PF_RUMINANT);

 MUTATION(PF_RUMINANT);
  VALID(true);
  PREREQS (PF_HERBIVORE);
  CANCELS (PF_CARNIVORE, PF_SAPROVORE);

 MUTATION(PF_HORNS);
  VALID(true);
  PREREQS (PF_HEADBUMPS);
  CANCELS (PF_ANTENNAE);
  CHANGES_TO (PF_HORNS_CURLED, PF_HORNS_POINTED, PF_ANTLERS);

 MUTATION(PF_HORNS_CURLED);
  VALID(true);
  PREREQS (PF_HORNS);
  CANCELS (PF_ANTENNAE, PF_HORNS_POINTED, PF_ANTLERS);

 MUTATION(PF_HORNS_POINTED);
  VALID(true);
  PREREQS (PF_HORNS);
  CANCELS (PF_ANTENNAE, PF_HORNS_CURLED, PF_ANTLERS);

 MUTATION(PF_ANTLERS);
  VALID(true);
  PREREQS (PF_HORNS);
  CANCELS (PF_ANTENNAE, PF_HORNS_CURLED, PF_HORNS_POINTED);

 MUTATION(PF_ANTENNAE);
  VALID(true);
  PREREQS (PF_HEADBUMPS);
  CANCELS (PF_HORNS, PF_HORNS_CURLED, PF_HORNS_POINTED, PF_ANTLERS);
  
 MUTATION(PF_FLEET2);
  VALID(true);
  PREREQS (PF_FLEET);
  CANCELS (PF_PONDEROUS1, PF_PONDEROUS2, PF_PONDEROUS3);

 MUTATION(PF_TAIL_STUB);
  VALID(true);
  CHANGES_TO (PF_TAIL_LONG, PF_TAIL_FIN);

 MUTATION(PF_TAIL_FIN);
  VALID(true);
  PREREQS (PF_TAIL_STUB);
  CANCELS (PF_TAIL_LONG, PF_TAIL_FLUFFY, PF_TAIL_STING, PF_TAIL_CLUB);

 MUTATION(PF_TAIL_LONG);
  VALID(true);
  PREREQS (PF_TAIL_STUB);
  CANCELS (PF_TAIL_FIN);
  CHANGES_TO (PF_TAIL_FLUFFY, PF_TAIL_STING, PF_TAIL_CLUB);

 MUTATION(PF_TAIL_FLUFFY);
  VALID(true);
  PREREQS (PF_TAIL_LONG);
  CANCELS (PF_TAIL_STING, PF_TAIL_CLUB, PF_TAIL_FIN);

 MUTATION(PF_TAIL_STING);
  VALID(true);
  PREREQS (PF_TAIL_LONG);
  CANCELS (PF_TAIL_FLUFFY, PF_TAIL_CLUB, PF_TAIL_FIN);

 MUTATION(PF_TAIL_CLUB);
  VALID(true);
  PREREQS (PF_TAIL_LONG);
  CANCELS (PF_TAIL_FLUFFY, PF_TAIL_STING, PF_TAIL_FIN);

 MUTATION(PF_PAINREC1);
  VALID(true);
  CHANGES_TO (PF_PAINREC2);

 MUTATION(PF_PAINREC2);
  VALID(true);
  PREREQS (PF_PAINREC1);
  CHANGES_TO (PF_PAINREC3);

 MUTATION(PF_PAINREC3);
  VALID(true);
  PREREQS (PF_PAINREC2);

 MUTATION(PF_WINGS_BIRD);
  VALID(true);
  PREREQS (PF_WINGS_STUB);
  CANCELS (PF_WINGS_BAT, PF_WINGS_INSECT);

 MUTATION(PF_WINGS_INSECT);
  VALID(true);
  PREREQS (PF_WINGS_STUB);
  CANCELS (PF_WINGS_BIRD, PF_WINGS_BAT);

 MUTATION(PF_MOUTH_TENTACLES);
  VALID(true);
  PREREQS (PF_MOUTH_FLAPS);
  CANCELS (PF_MANDIBLES);

 MUTATION(PF_MANDIBLES);
  VALID(true);
  PREREQS (PF_MOUTH_FLAPS);
  CANCELS (PF_BEAK, PF_FANGS, PF_MOUTH_TENTACLES);
  
 MUTATION(PF_CANINE_EARS);
  VALID(true);

 MUTATION(PF_WEB_WALKER);
  VALID(true);
  LEADS_TO (PF_WEB_WEAVER);

 MUTATION(PF_WEB_WEAVER);
  VALID(true);
  PREREQS (PF_WEB_WALKER);
  CANCELS (PF_SLIMY);
  
 MUTATION(PF_WHISKERS);
  VALID(true);

 MUTATION(PF_STR_UP);
  VALID(true);
  CHANGES_TO (PF_STR_UP_2);

 MUTATION(PF_STR_UP_2);
  VALID(true);
  PREREQS (PF_STR_UP);
  CHANGES_TO (PF_STR_UP_3);

 MUTATION(PF_STR_UP_3);
  VALID(true);
  PREREQS (PF_STR_UP_2);
  CHANGES_TO (PF_STR_UP_4);

 MUTATION(PF_STR_UP_4);
  VALID(true);
  PREREQS (PF_STR_UP_3);

 MUTATION(PF_DEX_UP);
  VALID(true);
  CHANGES_TO (PF_DEX_UP_2);

 MUTATION(PF_DEX_UP_2);
  VALID(true);
  PREREQS (PF_DEX_UP);
  CHANGES_TO (PF_DEX_UP_3);

 MUTATION(PF_DEX_UP_3);
  VALID(true);
  PREREQS (PF_DEX_UP_2);
  CHANGES_TO (PF_DEX_UP_4);

 MUTATION(PF_DEX_UP_4);
  VALID(true);
  PREREQS (PF_DEX_UP_3);

 MUTATION(PF_INT_UP);
  VALID(true);
  CHANGES_TO (PF_INT_UP_2);

 MUTATION(PF_INT_UP_2);
  VALID(true);
  PREREQS (PF_INT_UP);
  CHANGES_TO (PF_INT_UP_3);

 MUTATION(PF_INT_UP_3);
  VALID(true);
  PREREQS (PF_INT_UP_2);
  CHANGES_TO (PF_INT_UP_4);

 MUTATION(PF_INT_UP_4);
  VALID(true);
  PREREQS (PF_INT_UP_3);

 MUTATION(PF_PER_UP);
  VALID(true);
  CHANGES_TO (PF_PER_UP_2);

 MUTATION(PF_PER_UP_2);
  VALID(true);
  PREREQS (PF_PER_UP);
  CHANGES_TO (PF_PER_UP_3);

 MUTATION(PF_PER_UP_3);
  VALID(true);
  PREREQS (PF_PER_UP_2);
  CHANGES_TO (PF_PER_UP_4);

 MUTATION(PF_PER_UP_4);
  VALID(true);
  PREREQS (PF_PER_UP_3);

 MUTATION(PF_BEAUTIFUL);
  VALID(true);
  CANCELS (PF_UGLY, PF_DEFORMED, PF_DEFORMED2, PF_DEFORMED3);
  PREREQS (PF_PRETTY);
  CHANGES_TO (PF_BEAUTIFUL2);

 MUTATION(PF_BEAUTIFUL2);
  VALID(true);
  CANCELS (PF_UGLY, PF_DEFORMED, PF_DEFORMED2, PF_DEFORMED3);
  PREREQS (PF_BEAUTIFUL);
  CHANGES_TO (PF_BEAUTIFUL3);

 MUTATION(PF_BEAUTIFUL3);
  VALID(true);
  CANCELS (PF_UGLY, PF_DEFORMED, PF_DEFORMED2, PF_DEFORMED3);
  PREREQS (PF_BEAUTIFUL2);

// Bad mutations below this point

 MUTATION(PF_HEADBUMPS);
  VALID(true);
  CHANGES_TO (PF_HORNS, PF_ANTENNAE);
  
 MUTATION(PF_SLIT_NOSTRILS);
  VALID(true);
  
 MUTATION(PF_FORKED_TONGUE);
  VALID(true);

 MUTATION(PF_EYEBULGE);
  VALID(true);
  LEADS_TO (PF_MEMBRANE);
  CHANGES_TO (PF_COMPOUND_EYES);
  
 MUTATION(PF_MOUTH_FLAPS);
  VALID(true);
  LEADS_TO (PF_MOUTH_TENTACLES, PF_MANDIBLES);
  
 MUTATION(PF_WINGS_STUB);
  VALID(true);
  CHANGES_TO (PF_WINGS_BIRD, PF_WINGS_BAT, PF_WINGS_INSECT);

 MUTATION(PF_WINGS_BAT);
  VALID(true);
  PREREQS (PF_WINGS_STUB);
  CANCELS (PF_WINGS_BIRD, PF_WINGS_INSECT);

 MUTATION(PF_PALE);
  VALID(true);
  CHANGES_TO (PF_ALBINO);
  LEADS_TO (PF_TROGLO);

 MUTATION(PF_SPOTS);
  VALID(true);
  CHANGES_TO (PF_SORES);

 MUTATION(PF_SMELLY2);
  VALID(true);
  PREREQS (PF_SMELLY);
  LEADS_TO (PF_PHEROMONE_INSECT, PF_PHEROMONE_MAMMAL);

 MUTATION(PF_DEFORMED);
  VALID(true);
  CANCELS (PF_PRETTY, PF_BEAUTIFUL, PF_BEAUTIFUL2, PF_BEAUTIFUL3);
  PREREQS (PF_UGLY);
  CHANGES_TO (PF_DEFORMED2);

 MUTATION(PF_DEFORMED2);
  VALID(true);
  CANCELS (PF_PRETTY, PF_BEAUTIFUL, PF_BEAUTIFUL2, PF_BEAUTIFUL3);
  PREREQS (PF_DEFORMED);
  CHANGES_TO (PF_DEFORMED3);

 MUTATION(PF_DEFORMED3);
  VALID(true);
  CANCELS (PF_PRETTY, PF_BEAUTIFUL, PF_BEAUTIFUL2, PF_BEAUTIFUL3);
  PREREQS (PF_DEFORMED2);

 MUTATION(PF_HOLLOW_BONES);
  VALID(true);
  PREREQS (PF_LIGHT_BONES);

 MUTATION(PF_NAUSEA);
  VALID(true);
  PREREQS (PF_WEAKSTOMACH);
  CHANGES_TO (PF_VOMITOUS);

 MUTATION(PF_VOMITOUS);
  VALID(true);
  PREREQS (PF_NAUSEA);
  
 MUTATION(PF_HUNGER);
  VALID(true);
  
 MUTATION(PF_THIRST);
  VALID(true);

 MUTATION(PF_ROT1);
  VALID(true);
  CANCELS (PF_FASTHEALER, PF_FASTHEALER2, PF_REGEN);
  CHANGES_TO (PF_ROT2);

 MUTATION(PF_ROT2);
  VALID(true);
  CANCELS (PF_FASTHEALER, PF_FASTHEALER2, PF_REGEN);
  PREREQS (PF_ROT1);
  CHANGES_TO (PF_ROT3);

 MUTATION(PF_ROT3);
  VALID(true);
  CANCELS (PF_FASTHEALER, PF_FASTHEALER2, PF_REGEN);
  PREREQS (PF_ROT2);

 MUTATION(PF_ALBINO);
  VALID(true);
  PREREQS (PF_PALE);

 MUTATION(PF_SORES);
  VALID(true);
  PREREQS (PF_SPOTS);

 MUTATION(PF_TROGLO);
  VALID(true);
  CANCELS (PF_SUNLIGHT_DEPENDENT);
  CHANGES_TO (PF_TROGLO2);

 MUTATION(PF_TROGLO2);
  VALID(true);
  CANCELS (PF_SUNLIGHT_DEPENDENT);
  PREREQS (PF_TROGLO);
  CHANGES_TO (PF_TROGLO3);

 MUTATION(PF_TROGLO3);
  VALID(true);
  CANCELS (PF_SUNLIGHT_DEPENDENT);
  PREREQS (PF_TROGLO2);
  
 MUTATION(PF_WEBBED);
  VALID(true);

 MUTATION(PF_BEAK);
  VALID(true);
  CANCELS (PF_FANGS, PF_MANDIBLES);
  
 MUTATION(PF_UNSTABLE);
  VALID(true);

 MUTATION(PF_RADIOACTIVE1);
  VALID(true);
  CHANGES_TO (PF_RADIOACTIVE2);

 MUTATION(PF_RADIOACTIVE2);
  VALID(true);
  PREREQS (PF_RADIOACTIVE1);
  CHANGES_TO (PF_RADIOACTIVE3);

 MUTATION(PF_RADIOACTIVE3);
  VALID(true);
  PREREQS (PF_RADIOACTIVE2);

 MUTATION(PF_SLIMY);
  VALID(true);
  LEADS_TO (PF_SLIME_HANDS);

 MUTATION(PF_HERBIVORE);
  VALID(true);
  CANCELS (PF_CARNIVORE, PF_SAPROVORE);
  LEADS_TO (PF_RUMINANT);
  
 MUTATION(PF_CARNIVORE);
  VALID(true);
  CANCELS (PF_HERBIVORE, PF_RUMINANT);
  LEADS_TO (PF_SAPROVORE);

 MUTATION(PF_PONDEROUS1);
  VALID(true);
  CANCELS (PF_FLEET, PF_FLEET2);
  CHANGES_TO (PF_PONDEROUS2);

 MUTATION(PF_PONDEROUS2);
  VALID(true);
  CANCELS (PF_FLEET, PF_FLEET2);
  PREREQS (PF_PONDEROUS1);
  CHANGES_TO (PF_PONDEROUS3);

 MUTATION(PF_PONDEROUS3);
  VALID(true);
  CANCELS (PF_FLEET, PF_FLEET2);
  PREREQS (PF_PONDEROUS2);

 MUTATION(PF_SUNLIGHT_DEPENDENT);
  VALID(true);
  CANCELS (PF_TROGLO, PF_TROGLO2, PF_TROGLO3);

 MUTATION(PF_COLDBLOOD);
  VALID(true);
  CHANGES_TO (PF_COLDBLOOD2);

 MUTATION(PF_COLDBLOOD2);
  VALID(true);
  PREREQS (PF_COLDBLOOD);
  CHANGES_TO (PF_COLDBLOOD3);

 MUTATION(PF_COLDBLOOD3);
  VALID(true);
  PREREQS (PF_COLDBLOOD2);

 MUTATION(PF_GROWL);
  VALID(true);
  CHANGES_TO (PF_SNARL);

 MUTATION(PF_SNARL);
  VALID(true);
  PREREQS (PF_GROWL);

 MUTATION(PF_SHOUT1);
  VALID(true);
  CHANGES_TO (PF_SHOUT2);

 MUTATION(PF_SHOUT2);
  VALID(true);
  PREREQS (PF_SHOUT1);
  CHANGES_TO (PF_SHOUT3);

 MUTATION(PF_SHOUT3);
  VALID(true);
  PREREQS (PF_SHOUT2);

 MUTATION(PF_ARM_TENTACLES);
  VALID(true);
  CHANGES_TO (PF_ARM_TENTACLES_4);

 MUTATION(PF_ARM_TENTACLES_4);
  VALID(true);
  PREREQS (PF_ARM_TENTACLES);
  CHANGES_TO (PF_ARM_TENTACLES_8);

 MUTATION(PF_ARM_TENTACLES_8);
  VALID(true);
  PREREQS (PF_ARM_TENTACLES_4);

 MUTATION(PF_SHELL);
  VALID(true);
  PREREQS (PF_CHITIN);
  CANCELS (PF_CHITIN3);

 MUTATION(PF_LEG_TENTACLES);
  VALID(true);
  CANCELS (PF_PADDED_FEET, PF_HOOVES);
  
 MUTATION(PF_MAX2); //Null trait
  VALID(false);


}