#include "game.h"
#include "setvector.h"

#define MUTATION(mut) id = mut; mutation_data[id].valid = true

#define PREREQS(...) \
	setvector(mutation_data[id].prereqs, __VA_ARGS__, NULL)

#define CANCELS(...) \
	setvector(mutation_data[id].cancels, __VA_ARGS__, NULL)

#define CHANGES_TO(...) \
	setvector(mutation_data[id].replacements, __VA_ARGS__, NULL)

#define LEADS_TO(...) \
	setvector(mutation_data[id].additions, __VA_ARGS__, NULL)

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-only traits start here

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

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

 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);

 MUTATION(PF_MEMBRANE);
  PREREQS (PF_EYEBULGE);

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

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

 MUTATION(PF_SLEEK_SCALES);
  PREREQS (PF_SCALES);
  CANCELS (PF_THICK_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);

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

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

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

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

 MUTATION(PF_CHITIN3);
  PREREQS (PF_CHITIN2);

 MUTATION(PF_SPINES);
  CHANGES_TO (PF_QUILLS);

 MUTATION (PF_QUILLS);
  PREREQS (PF_SPINES);

 MUTATION (PF_PLANTSKIN);
  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);
  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);

 MUTATION(PF_COMPOUND_EYES);
  PREREQS (PF_EYEBULGE);

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

 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);

 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_STR_UP);
  CHANGES_TO (PF_STR_UP_2);

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

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

 MUTATION(PF_STR_UP_4);
  PREREQS (PF_STR_UP_3);

 MUTATION(PF_DEX_UP);
  CHANGES_TO (PF_DEX_UP_2);

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

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

 MUTATION(PF_DEX_UP_4);
  PREREQS (PF_DEX_UP_3);

 MUTATION(PF_INT_UP);
  CHANGES_TO (PF_INT_UP_2);

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

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

 MUTATION(PF_INT_UP_4);
  PREREQS (PF_INT_UP_3);

 MUTATION(PF_PER_UP);
  CHANGES_TO (PF_PER_UP_2);

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

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

 MUTATION(PF_PER_UP_4);
  PREREQS (PF_PER_UP_3);


// 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);

 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_DEPENDENT);
  CHANGES_TO (PF_TROGLO2);

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

 MUTATION(PF_TROGLO3);
  CANCELS (PF_SUNLIGHT_DEPENDENT);
  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_DEPENDENT);
  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_LEG_TENTACLES);
  CANCELS (PF_PADDED_FEET, PF_HOOVES);

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


}



std::vector<pl_flag> mutations_from_category(mutation_category cat)
{
 std::vector<pl_flag> ret;
 switch (cat) {

 case MUTCAT_LIZARD:
  setvector(ret,
PF_THICKSKIN, PF_INFRARED, PF_FANGS, PF_MEMBRANE, PF_SCALES, PF_TALONS,
PF_SLIT_NOSTRILS, PF_FORKED_TONGUE, PF_TROGLO, PF_WEBBED, PF_CARNIVORE,
PF_COLDBLOOD2, PF_STR_UP_2, PF_DEX_UP_2, NULL);
  break;

 case MUTCAT_BIRD:
  setvector(ret,
PF_QUICK, PF_LIGHTEATER, PF_DEFT, PF_LIGHTSTEP, PF_BADBACK, PF_GLASSJAW,
PF_NIGHTVISION, PF_HOLLOW_BONES, PF_FEATHERS, PF_TALONS, PF_BEAK, PF_FLEET2,
PF_WINGS_BIRD, PF_COLDBLOOD, PF_DEX_UP_3, NULL);
  break;

 case MUTCAT_FISH:
  setvector(ret,
PF_SMELLY2, PF_NIGHTVISION2, PF_FANGS, PF_MEMBRANE, PF_GILLS, PF_SLEEK_SCALES,
PF_TAIL_FIN, PF_DEFORMED, PF_THIRST, PF_WEBBED, PF_SLIMY, PF_COLDBLOOD2, NULL);
  break;

 case MUTCAT_BEAST:
  setvector(ret,
PF_DEFT, PF_ANIMALEMPATH, PF_TERRIFYING, PF_ADRENALINE, PF_MYOPIC, PF_FORGETFUL,
PF_NIGHTVISION2, PF_FANGS, PF_FUR, PF_CLAWS, PF_PHEROMONE_MAMMAL,
PF_PADDED_FEET, PF_TAIL_FLUFFY, PF_SMELLY2, PF_DEFORMED2, PF_HUNGER, PF_TROGLO,
PF_CARNIVORE, PF_SNARL, PF_SHOUT3, PF_CANINE_EARS, PF_STR_UP_4, NULL);
  break;

 case MUTCAT_CATTLE:
  setvector(ret,
PF_THICKSKIN, PF_DISRESISTANT, PF_NIGHTVISION, PF_FUR, PF_PHEROMONE_MAMMAL,
PF_HOOVES, PF_RUMINANT, PF_HORNS, PF_TAIL_LONG, PF_DEFORMED, PF_PONDEROUS2,
PF_CANINE_EARS, PF_STR_UP_2, NULL);

 case MUTCAT_INSECT:
  setvector(ret,
PF_QUICK, PF_LIGHTEATER, PF_POISRESIST, PF_NIGHTVISION, PF_TERRIFYING,
PF_HEAVYSLEEPER, PF_NIGHTVISION2, PF_INFRARED, PF_CHITIN2, PF_PHEROMONE_INSECT,
PF_ANTENNAE, PF_WINGS_INSECT, PF_TAIL_STING, PF_MANDIBLES, PF_DEFORMED,
PF_TROGLO, PF_COLDBLOOD3, PF_STR_UP, PF_DEX_UP, NULL);
  break;

 case MUTCAT_PLANT:
  setvector(ret,
PF_DISIMMUNE, PF_HEAVYSLEEPER, PF_BADHEARING, PF_FASTHEALER2, PF_BARK,
PF_THORNS, PF_LEAVES, PF_DEFORMED2, PF_PONDEROUS3, PF_STR_UP_2, NULL);
  break;

 case MUTCAT_SLIME:
  setvector(ret,
PF_POISRESIST, PF_ROBUST, PF_CHEMIMBALANCE, PF_REGEN, PF_RADIOGENIC,
PF_DISIMMUNE, PF_POISONOUS, PF_SLIME_HANDS, PF_SMELLY2, PF_DEFORMED3,
PF_HOLLOW_BONES, PF_VOMITOUS, PF_HUNGER, PF_THIRST, PF_SORES, PF_TROGLO,
PF_WEBBED, PF_UNSTABLE, PF_RADIOACTIVE1, PF_SLIMY, PF_DEX_UP, PF_INT_UP, NULL);
  break;

 case MUTCAT_TROGLO:
  setvector(ret,
PF_QUICK, PF_LIGHTEATER, PF_MYOPIC, PF_NIGHTVISION3, PF_INFRARED, PF_REGEN,
PF_DISIMMUNE, PF_POISONOUS, PF_SAPROVORE, PF_SLIT_NOSTRILS, PF_ALBINO,
PF_TROGLO3, PF_SLIMY, NULL);
  break;

 case MUTCAT_CEPHALOPOD:
  setvector(ret,
PF_GILLS, PF_MOUTH_TENTACLES, PF_SLIT_NOSTRILS, PF_DEFORMED, PF_THIRST,
PF_BEAK, PF_SLIMY, PF_COLDBLOOD, PF_ARM_TENTACLES_8, PF_SHELL, PF_LEG_TENTACLES,
NULL);
  break;

 case MUTCAT_SPIDER:
  setvector(ret,
PF_FLEET, PF_POISRESIST, PF_NIGHTVISION3, PF_INFRARED, PF_FUR, PF_CHITIN3,
PF_POISONOUS, PF_COMPOUND_EYES, PF_MANDIBLES, PF_WEB_WEAVER, PF_TROGLO,
PF_CARNIVORE, PF_COLDBLOOD, PF_DEX_UP_2, NULL);
  break;

 case MUTCAT_RAT:
  setvector(ret,
PF_DISRESISTANT, PF_NIGHTVISION2, PF_FANGS, PF_FUR, PF_CLAWS, PF_TAIL_LONG,
PF_WHISKERS, PF_DEFORMED3, PF_VOMITOUS, PF_HUNGER, PF_TROGLO2, PF_GROWL, NULL);
  break;

 }

 return ret;
}