ALMaSS Vole ODDox
1.1
The vole model description following ODdox protocol
|
Go to the documentation of this file.
39 #define _CRT_SECURE_NO_DEPRECATE
43 #include "../Landscape/ls.h"
44 #include "../BatchALMaSS/PopulationManager.h"
45 #include "../BatchALMaSS/BinaryMapBase.h"
46 #include "../BatchALMaSS/MovementMap.h"
47 #include "../Vole/vole_all.h"
48 #include "../Vole/VolePopulationManager.h"
49 #include "../Vole/GeneticMaterial.h"
50 #include "../Vole/Predators.h"
51 #include "../BatchALMaSS/BoostRandomGenerators.h"
53 extern boost::variate_generator<base_generator_type&, boost::uniform_real<> >
g_rand_uni;
60 #ifdef __VOLEPESTICIDEON
61 int Vole_Female::m_EndoCrineDisruptionGestationLength = 5;
220 #ifdef __VoleStarvationDays
221 int Vole_Base::m_MaxStarvationDays = 21;
266 unsigned FatherIdNo = p_aVoleStruct->
FatherId;
268 unsigned MotherIdNo = p_aVoleStruct->
MotherId;
288 #ifdef __VoleStarvationDays
289 m_StarvationDays = 0;
292 #ifdef __VOLEPESTICIDEON
295 SetPesticideInfluenced1(
false);
296 SetPesticideInfluenced2(
false);
297 m_pesticideInfluenced3 = 0.0;
387 int PolyRefData[500][2];
398 int xextent0 = x+range_x;
399 int yextent0 = y+range_y;
400 int xextent1 = (x+range_x)-
SimW;
401 int yextent1 = (y+range_y)-
SimH;
446 for (
int i=0; i<Afinx; i++)
448 for (
int j=y; j<Afiny; j++)
455 for (
int k=0; k<NoPolygons; k++)
457 if (PolyRefData[k][0]==PRef)
468 PolyRefData[NoPolygons][0]=PRef;
469 PolyRefData[NoPolygons][1]=1;
475 for (
int i=x; i<Bfinx; i++)
477 for (
int j=0; j<yextent1; j++)
500 for (
int k=0; k<NoPolygons; k++)
502 if (PolyRefData[k][0]==PRef)
513 PolyRefData[NoPolygons][0]=PRef;
514 PolyRefData[NoPolygons][1]=1;
520 for (
int i=0; i<Cfinx; i++)
522 for (
int j=0; j<yextent1; j++)
545 for (
int k=0; k<NoPolygons; k++)
547 if (PolyRefData[k][0]==PRef)
558 PolyRefData[NoPolygons][0]=PRef;
559 PolyRefData[NoPolygons][1]=1;
567 for (
int i=x; i<Dfinx; i++)
569 for (
int j=y; j<Dfiny; j++)
576 PolyRefData[k_index][1]++;
582 for (
int k=0; k<NoPolygons; k++)
584 if (PolyRefData[k][0]==PRef)
596 PolyRefData[NoPolygons][0]=PRef;
597 PolyRefData[NoPolygons][1]=1;
605 for (
int i=0; i<NoPolygons; i++)
612 if (Voles > a_ddep) quality /= (Voles-a_ddep);
909 int offset=p_Distance*p_iterations;
936 }
while ((
GetLocation(vx,vy)) && (p_iterations-->0));
958 t[1] = (p_Vector+1) & 0x07;
959 t[2] = (p_Vector+7) & 0x07;
960 t[3] = (p_Vector+2) & 0x07;
961 t[4] = (p_Vector+6) & 0x07;
963 for (
int i=0; i<p_Distance; i++)
985 for (
int j=1; j<5; j++) q[j]=-1;
990 for (
int ii=1; ii<5; ii++)
997 else if (q[ii]==best) score++;
1002 if (random(2)) ++p_Vector;
else (--p_Vector);
1006 t[1] = (p_Vector+1) & 0x07;
1007 t[2] = (p_Vector+7) & 0x07;
1008 t[3] = (p_Vector+2) & 0x07;
1009 t[4] = (p_Vector+6) & 0x07;
1015 int scored=random(score);
1017 for (
int ii=0; ii<5; ii++)
1019 if (best==q[ii]) loop++;
1046 t[1] = (p_Vector+1) & 0x07;
1047 t[2] = (p_Vector+7) & 0x07;
1048 t[3] = (p_Vector+2) & 0x07;
1049 t[4] = (p_Vector+6) & 0x07;
1051 for (
int i=0; i<p_Distance; i++)
1071 for (
int j=1; j<5; j++) q[j]=-1;
1076 for (
int ii=1; ii<5; ii++)
1084 if (q[ii]==best) score++;
1089 if (random(2)) ++p_Vector;
else (--p_Vector);
1093 t[1] = (p_Vector+1) & 0x07;
1094 t[2] = (p_Vector+7) & 0x07;
1095 t[3] = (p_Vector+2) & 0x07;
1096 t[4] = (p_Vector+6) & 0x07;
1101 int scored=random(score);
1103 for (
int ii=0; ii<5; ii++)
1105 if (best==q[ii]) loop++;
1137 for (
int i=0; i<p_Distance; i++)
1147 t[1] = (p_Vector+1) & 0x07;
1148 t[2] = (p_Vector+7) & 0x07;
1154 for (
int ii=0; ii<3; ii++)
1164 if (random(2)) p_Vector++;
else p_Vector--;
1175 int which=random(2);
1178 if (q[1]!=-1) loop=1;
else loop=2;
1182 if (q[2]!=-1) loop=2;
else loop=1;
1325 if ((cover>0.80) && (height>40)) score = 3;
1326 if ((cover<0.50) || (height<10)) score = 0;
1333 static char errornum[20];
1357 #ifdef __VOLEPESTICIDEON
1358 m_maturitydelay = 0.0;
1364 Init(p_aVoleStruct);
1371 #ifdef __VOLEPESTICIDEON
1372 m_maturitydelay = 0.0;
1410 #ifdef __VOLEPESTICIDEON
1411 PesticideIngestion();
1412 ActOnPesticideDose();
1447 #ifdef __VOLEPESTICIDEON
1476 #ifdef __VoleStarvationDays
1477 if ( m_StarvationDays > m_MaxStarvationDays)
1697 g_msg->Warn( WARN_FILE,
"Vole_Female::OnFarmEvent(): Unknown event type:",
1762 #ifdef __USINGTRAPLINES
1828 if ( CC <= p_OldQual )
1862 #ifdef __VOLEPESTICIDEON
1864 m_pesticideloadindex = 0;
1865 for (
int i = 0; i<21; i++) m_pesticideloadarray[i] = 0;
1872 Init(p_aVoleStruct);
1881 #ifdef __VOLEPESTICIDEON
1883 m_pesticideloadindex = 0;
1884 for (
int i = 0; i<21; i++) m_pesticideloadarray[i] = 0;
2034 #ifdef __VOLEPESTICIDEON
2038 double survive = 1.0;
2041 for (
int i = 0; i < 21; i++) dose += m_pesticideloadarray[i];
2048 m_pesticideInfluenced3 = 0;
2099 #ifdef __VOLEPESTICIDEON
2104 double survive = 1.0;
2107 for (
int i=0; i<21; i++) dose+=m_pesticideloadarray[i];
2113 m_pesticideInfluenced3=0;
2150 #ifdef __VOLEPESTICIDEON
2156 if ( m_pesticideInfluenced1 )
2163 else if (MatesGenes.GetGeneticFlag())
2179 if ( m_pesticideInfluenced1 )
2201 #ifdef __VOLEPESTICIDEON
2230 #ifdef __USINGTRAPLINES
2246 #ifdef __VoleStarvationDays
2258 #ifdef __VoleStarvationDays
2259 m_StarvationDays = 0;
2278 unsigned coords[9][2];
2279 double qualities[9];
2291 for (
unsigned i=0; i<8; i++)
2305 double best =qualities[8];
2307 for (
unsigned i=0; i<8; i++)
2309 if (qualities[i]>best)
2354 #ifdef __VOLEPESTICIDEON
2425 Init(p_aVoleStruct);
2492 #ifdef __VoleStarvationDays
2494 if ( m_StarvationDays > m_MaxStarvationDays)
2532 else if ((today == 1)) {
2588 unsigned MovementIndex;
2589 if (
m_Age>90) MovementIndex=3;
2590 else if (
m_Age>60) MovementIndex=2;
2591 else if (
m_Age>30) MovementIndex=1;
2592 else MovementIndex=0;
2594 int NoFemales = OldMales;
2601 #ifdef __USINGTRAPLINES
2609 bool NoMates =
false;
2629 }
else NoMates =
true;
2642 #ifdef __USINGTRAPLINES
2651 #ifdef __USINGTRAPLINES
2656 #ifdef __VoleStarvationDays
2701 #ifdef __VOLE_SMALL_LANDSCAPE
2715 NoFemales = OldMales;
2718 if (p_OldQual == -1)
2728 if ((CC < p_OldQual) || (OldMales < 1) || (NoFemales < 1))
2806 for (
int rad = 0; rad <r; rad++) {
2808 for (
int x = vx-rad; x<=vx+rad; x++) {
2811 if (random(1) == 0) {
2822 if (random(1) == 0) {
2832 for (
int y = vy-(rad-1); y<=vy+(rad-1); y++) {
2835 if (random(1) == 0) {
2846 if (random(1) == 0) {
3059 g_msg->Warn( WARN_FILE,
"Vole_JuvenileMale::OnFarmEvent(): Unknown event type:",
3125 #ifdef __VOLEPESTICIDEON
3126 PesticideIngestion();
3127 ActOnPesticideDose();
3211 #ifdef __USINGTRAPLINES
3216 bool NoMates =
false;
3253 if ( CC <= p_OldQual )
3324 Init(p_aVoleStruct);
3338 #ifdef __VOLERODENTICIDEON
3346 if (rodenticide>0) {
3354 #ifdef __VOLEPESTICIDEON
3359 void Vole_Base::PesticideIngestion(
void )
3363 BioDegradePesticide();
3393 m_pesticideload += pest;
3396 void Vole_Base::ActOnPesticideDose()
3407 GeneralEndocrineDisruptor(m_pesticideload);
3410 GeneralOrganophosphate(m_pesticideload);
3413 Vinclozolin(m_pesticideload);
3416 ModelinkPesticide();
3419 GeneticDemoPesticide(m_pesticideload);
3434 void Vole_JuvenileMale::ModelinkPesticide()
3439 void Vole_JuvenileMale::ModelinkPesticide21TWA(
double )
3444 void Vole_JuvenileFemale::ModelinkPesticide()
3449 void Vole_JuvenileFemale::ModelinkPesticide21TWA(
double )
3454 void Vole_Male::ModelinkPesticide()
3459 void Vole_Male::ModelinkPesticide21TWA(
double )
3464 void Vole_Female::ModelinkPesticide()
3469 if (m_pesticideload > m_pesticideInfluenced3)
3471 m_pesticideInfluenced3=m_pesticideload;
3476 void Vole_Female::ModelinkPesticide21TWA(
double )
3478 m_pesticideloadarray[m_pesticideloadindex++]=m_pesticideload;
3479 if (m_pesticideloadindex==21) m_pesticideloadindex=0;
3485 void Vole_JuvenileMale::Vinclozolin(
double )
3490 void Vole_JuvenileFemale::Vinclozolin(
double )
3495 void Vole_Male::Vinclozolin(
double )
3500 void Vole_Female::Vinclozolin(
double )
3505 m_pesticideInfluenced1 =
true;
3513 void Vole_Female::GeneralEndocrineDisruptor(
double )
3518 m_pesticideInfluenced1 =
true;
3522 void Vole_Male::GeneralEndocrineDisruptor(
double )
3527 void Vole_JuvenileMale::GeneralEndocrineDisruptor(
double )
3532 void Vole_JuvenileFemale::GeneralEndocrineDisruptor(
double )
3542 void Vole_JuvenileMale::GeneralOrganophosphate(
double )
3551 void Vole_JuvenileFemale::GeneralOrganophosphate(
double )
3560 void Vole_Male::GeneralOrganophosphate(
double )
3569 void Vole_Female::GeneralOrganophosphate(
double )
3578 void Vole_JuvenileMale::GeneticDemoPesticide(
double )
3596 void Vole_JuvenileFemale::GeneticDemoPesticide(
double )
3610 void Vole_Male::GeneticDemoPesticide(
double )
3624 void Vole_Female::GeneticDemoPesticide(
double )
double SupplyVegCoverVector(unsigned int a_index)
const double growthperdayM
void Set_ElemBorn(int a_Location_x, int a_Location_y)
CfgBool cfg_RipleysOutput_used
virtual void RodenticideIngestion(void)
boost::variate_generator< base_generator_type &, boost::uniform_real<> > g_rand_uni
TTypeOfVoleState
Vole behavioural states.
bool IsTrap(int p_x, int p_y)
static CfgFloat cfg_PesticideAccumulationThreshold2("VOLE_PESTICDEACCUMULATIONTHRESHOLDTWO", CFG_CUSTOM, 44.1)
static CfgFloat cfg_PesticideLitterSizeReduction("VOLE_PCIDE_LITTERSIZEREDUCTION", CFG_CUSTOM, 0.0038)
int SupplyCountFemales(unsigned p_x, unsigned p_y, unsigned p_TerrRange)
TTypeOfVoleState CurrentVState
TTypesOfVegetation SupplyVegType(int a_x, int a_y)
TTypesOfLandscapeElement SupplyElementType(int a_polyref)
unsigned int m_MinTerrRange
Vole_Female * FindClosestFemale(int p_x, int p_y, int p_steps)
CfgInt cfg_productapplicendyear
const int MinReproWeightF
void MoveTo(int p_Vector, int p_Distance, int iterations)
Movement.
double SupplyVegHeightVector(unsigned int a_index)
const unsigned TheGestationPeriod
Base class for voles - all vole objects are descended from this class.
virtual void SetLocation()
Map location function.
static CfgFloat cfg_vole_habqualscaler("VOLE_HABQUALSCALER", CFG_CUSTOM, 2.1)
CfgBool cfg_ResistanceDominant("VOLE_RESISTANCEDOMINANT", CFG_CUSTOM, false)
TTypeOfVoleState st_Eval_n_Explore(void)
JuvenileMale vole main territory assessment behaviour.
GeneticMaterial m_MatesGenes
The DNA passed from the male on mating.
int SupplyGrowthStartDate()
TTypeOfVoleState Dispersal(double p_OldQual, int p_Distance)
JuvenileMale vole dispersal behaviour.
const unsigned MinReproWeightM
CfgBool l_pest_enable_pesticide_engine
virtual void EndStep()
Female vole EndStep.
const double VoleSoilCultivationMort
bool SupplyJustMownVector(unsigned int a_index)
CfgInt cfg_VoleDDepConst("VOLE_DDEPCONST", CFG_CUSTOM, 4)
int SupplyInOlderTerr(unsigned p_x, unsigned p_y, unsigned p_Age, unsigned p_Range)
virtual void ReInit(struct_Vole_Adult *p_aVoleStruct)
void ChangeData(int a_data, int a_value)
Landscape * m_OurLandscape
static CfgFloat cfg_InfanticideRangeRelToTerRange("VOLE_IINFANTICIDERANGE_RELTO_TERRANGE", CFG_CUSTOM, 0.5)
double GetHabitatQuality(int a_index)
static double m_MinJMVoleHabQual
virtual void ReInit(struct_Vole_Adult *p_aVoleStruct)
int st_Evaluate_n_Explore()
Main territory evaluation behaviour.
virtual bool GetLocation(int px, int py)
Location map function.
const unsigned MaleMovement[4]
void AddToNoYoungInfanticideCount(int m_NoOfYoung, int m_YoungAge)
bool GetFertile()
Get the male vole fertility.
A struct for passing data to create a new vole.
const unsigned VoleMoveInterval
GeneticMaterial m_MyGenes
unsigned m_YoungAge
The age of current litter in days.
virtual bool GetLocation(int px, int py)
Map location function.
const double VoleHarvestMort
virtual void ReInit(struct_Vole_Adult *p_aVoleStruct)
double g_SpeedyDivides[2001]
A generally useful array of fast divide calculators by multiplication.
void SendMessage(TTypeOfVoleMessage p_message, unsigned p_x, unsigned p_y, unsigned p_range, bool p_sex, double p_Weight)
int SupplyJustSprayedVector(unsigned int a_index)
void Set_MotherId(unsigned MotherIdNo)
The class for female voles.
void Set_XBorn(int a_Location_x)
virtual bool GetLocation(int, int)
virtual void EndStep()
All voles age at the end of the day.
int g_MaleReproductFinish
static CfgFloat cfg_PesticideAccumulationThreshold("VOLE_PESTICDEACCUMULATIONTHRESHOLD", CFG_CUSTOM, 20.0)
void AddToYoung(int young)
void CreateObjects(VoleObject ob_type, TAnimal *pvo, struct_Vole_Adult *as, int number)
void Set_YBorn(int a_Location_y)
static unsigned int m_MaxFemaleTerritorySize
void Set_VegBorn(int a_Location_x, int a_Location_y)
int st_Evaluate_n_Explore()
Main territory evaluation behaviour.
int m_NoOfYoung
The number of young in the current litter (if one).
The class for female voles.
int st_Maturation(void)
Male vole maturation control.
TTypesOfVegetation SupplyVegTypeVector(unsigned int a_index)
int Dispersal(double p_OldQual, int p_Distance)
Female dispersal.
virtual ~Vole_JuvenileMale()
TTypeOfVoleState st_Lactating()
Lactation.
CfgFloat cfg_VoleResourceRegrowth("VOLE_RESOURCEREGROWTH", CFG_CUSTOM, 0.5)
A parameter determining the density dependence effect. Zero will have no density dependence effect,...
const double InfanticideChanceByAge[9]
bool CanFeed()
Currently not used.
virtual void FreeLocation()
const double VoleStriglingMort
int MoveQuality(int p_x, int p_y)
Test a location for quality while moving.
static double m_MaleTerritoryRangeSlope
int SupplyGrazingPressureVector(unsigned int a_index)
void st_BecomeSubAdult(void)
CfgFloat cfg_extradispmort("VOLEDISPMORT", CFG_CUSTOM, 0.055)
Input parameter for daily extra mortality chance while dispersing.
int st_Special_Explore()
Post weaning territory expansion.
uint32 SupplyMyAllele(int i, int j)
double SupplyPesticide(int a_x, int a_y, PlantProtectionProducts a_ppp)
Gets total pesticide for a location.
CfgBool cfg_RecordVoleMort
CfgFloat l_pest_daily_mort
TTypeOfVoleState st_ReproBehaviour()
Reproductive switch.
const double VoleHerbicicideMort
static CfgInt cfg_VoleEndoCrineDisruptionGestationLength("VOLE_ENDOCRINEDISPRUPTORGESTATION", CFG_CUSTOM, 21)
static CfgInt cfg_vole_LifeMonths("VOLE_LIFEMONTHS", CFG_CUSTOM, 3)
static unsigned int m_MinMaleTerritorySize
The base class for all ALMaSS animal classes.
GeneticMaterial SupplyGenes()
CfgInt cfg_productapplicstartyear
virtual void EndStep()
Male vole EndStep.
const unsigned MinMaleMovement
static CfgInt cfg_MaxMaleTerrSize("VOLE_MAXMALETERRITORYSIZE", CFG_CUSTOM, 23)
Vole_Population_Manager * VPM
A class defining an animals position.
virtual ~Vole_JuvenileFemale()
static CfgFloat cfg_PesticideFemaleMaturityDelay("VOLE_PCIDE_FEMALEMATURITYDELAY", CFG_CUSTOM, 0.0192)
void DoWalking(int p_Distance, int &p_Vector, int &vx, int &vy)
Walking.
bool SupplyOlderFemales(unsigned p_x, unsigned p_y, unsigned p_Age, unsigned p_range)
double SupplyRodenticide(int a_x, int a_y)
Gets total rodenticide for a location.
static double m_MinFVoleHabQual
int SupplyDayInYear(void)
double SupplyVegBiomass(int a_polyref)
virtual bool OnFarmEvent(FarmToDo event)
External event handler.
static CfgInt cfg_MaxStarvationDays("VOLE_MAXSTARVATIONDAYS", CFG_CUSTOM, 29)
void st_Dying()
All voles end here on death.
Vole_Male * FindClosestMale(int p_x, int p_y, int p_steps)
bool m_StepDone
Indicates whether the iterative step code is done for this timestep.
TTypesOfPesticide SupplyPesticideType(void)
AnimalPosition SupplyPosition()
virtual void OnKilled()
Death from external entity.
virtual void OnKilled()
JuvenileMale vole death by external entity.
int SupplyYearNumber(void)
const double VoleInsecticideMort
Vole_Base(struct_Vole_Adult *p_aVoleStruct)
Constructor for Vole_Base.
void st_Infanticide(void)
Male vole infanticide behaviour.
virtual void Step()
Juvenile Male vole Step.
static unsigned int m_MaxMaleTerritorySize
bool m_Pregnant
A flag indicating whether pregnant or not.
TTypesOfLandscapeElement m_EleType
double CalculateCarryingCapacity(int x, int y, int a_ddep)
static CfgFloat cfg_volepcidebiodegredrate("VOLE_PCIDE_BIODEGREDATIONRATE", CFG_CUSTOM, 0.0)
virtual void Step()
JuvenileFemale vole Step.
TTypeOfVoleState st_BecomeReproductive()
Female vole maturation control.
virtual bool OnFarmEvent(FarmToDo event)
JuvenileMale vole exernal event handler.
void DoWalkingCorrect(int p_Distance, int &p_Vector, int &vx, int &vy)
Walking where there is a danger of stepping off the world.
TTypesOfLandscapeElement SupplyElementTypeFromVector(unsigned int a_index)
std::string EventtypeToString(int a_event)
virtual void CopyMyself()
static CfgFloat cfg_InfanticideProbability("INFANTI_PROBA", CFG_CUSTOM, 0.01)
CfgInt cfg_MinReproAgeM("VOLE_MINREPROAGEM", CFG_CUSTOM, 30)
Vole_Male(struct_Vole_Adult *p_aVoleStruct)
Vole_Male constructor.
virtual void FreeLocation()
Map location function.
virtual void FreeLocation()
Location map function.
void DetermineTerritorySize()
Calculates the territory size needed for a vole of his weight.
void Set_PolyRefBorn(int a_Location_x, int a_Location_y)
static CfgBool cfg_VoleMortalityDataUsed("VOLE_MORTALITY_DATA_USED", CFG_CUSTOM, false)
const double growthperdayF
The class for juvenile male voles.
void st_BecomeSubAdult(void)
Vole_JuvenileMale(struct_Vole_Adult *p_aVoleStruct)
Vole_JuvenileMale constructor.
InTrapPosition m_intrappos
virtual void ReInit(struct_Vole_Adult *p_aVoleStruct)
virtual void EndStep()
Juvenile Male vole EndStep.
void Escape(int p_Vector, int p_Distance)
Dispersal - directed movement.
void Set_BirthYear(int BirthYear)
CfgBool cfg_ReallyBigOutputMonthly_used
Vole_Population_Manager * m_OurPopulation
The class for male voles.
Vole_JuvenileFemale(struct_Vole_Adult *p_aVoleStruct)
Vole_JuvenileFemale constructor.
const double VolePigGrazingMort
virtual void Step()
Female vole Step.
void CheckManagement(void)
static double m_MinMVoleHabQual
const double DaysAtMaxGrowth
void Set_FatherId(unsigned FatherIdNo)
CfgBool cfg_AOROutput_used
const double FemaleResourceReq[13]
Vole_Female(struct_Vole_Adult *p_aVoleStruct)
Vole_Female constructor.
virtual void Step()
Male vole Step.
VoleSummaryOutput * m_VoleRecordMort
bool m_BornLastYear
A flag set if the female was born the year before.
virtual void Init(struct_Vole_Adult *p_aVoleStruct)
double MoveToLessFavourable
TTypeOfVoleState st_UpdateGestation()
Gestation control.
static CfgFloat cfg_PesticideWeaningReduction("VOLE_PCIDE_WEANINGREDUCTION", CFG_CUSTOM, 0.0017)
int m_DaysUntilBirth
A counter counting down gestation days.
TTypeOfVoleState st_Mating()
Female mating.
static double m_FemaleTerritoryRangeSlope
TTypeOfVoleState st_GiveBirth()
Litter production.
virtual void BeginStep()
Juvenile Male vole BeginStep.
CfgInt cfg_MinFemaleTerritorySize("VOLE_MINFEMALETERRITORYSIZE", CFG_CUSTOM, 8)
const unsigned MinFemaleMovement
static CfgFloat cfg_PesticideAccumulationThresholdModelink2("VOLE_PESTICDEACCUMULATIONTHRESHOLD_MODELINKTWO", CFG_CUSTOM, 20.0)
int m_CurrentStateNo
The basic state number for all objects - '-1' indicates death.
CfgBool cfg_pest_residue_or_rate
void ReInit(struct_Vole_Adult *p_aVoleStruct)
void OnInfanticideAttempt()
Determines whether an infanticide attempt will succeed.
int SupplyPolyRefIndex(int a_x, int a_y)
double g_DailyMortChanceMaleTerr
virtual void SetLocation()
Location map function.
virtual void BeginStep()
Female vole BeginStep.
int SupplyHowManyVoles(unsigned p_x, unsigned p_y, unsigned p_size)
CfgInt cfg_MinReproAgeF("VOLE_MINREPROAGEF", CFG_CUSTOM, 23)
void Warn(std::string a_msg1, std::string a_msg2)
static unsigned int m_MinFemaleTerritorySize
TTypeOfVoleState st_Eval_n_Explore(void)
Male vole main territory assessment behaviour.
void Recombine(GeneticMaterial *Gen21, GeneticMaterial *Gene2)
virtual bool MortalityTest()
Do a mortality test.
virtual bool MortalityTest()
Do a mortality test.
bool m_fertile
Flag indicating the fertility state (true means fertile)
int SupplyPolyRef(int a_x, int a_y)
VoleDispersalReturns Dispersal(double p_OldQual, int p_Distance)
Male vole dispersal behaviour.
static bool m_BreedingSeason
virtual void SetLocation()
void st_JuvenileExplore(void)
Extra movement on weaning.
IDMap< TAnimal * > * m_VoleMap
const unsigned FemaleMovement
CfgInt cfg_MinMaleTerritorySize("VOLE_MINMALETERRITORYSIZE", CFG_CUSTOM, 9)
TTypesOfVegetation m_VegType
static CfgInt cfg_MaxFemaleTerrSize("VOLE_MAXFEMALETERRITORYSIZE", CFG_CUSTOM, 8)