Fourth, assign the functions to the function varaibles.....
void init_actions_database()
{
ZeroMemory(action,sizeof(actionrec)*maxactions);
action[DONOTHING].energy=1;
strcpy_s(action[DRINK].msg,100,"Drinking...");
action[DRINK].proceedure=drinkliquid;
action[DRINK].water_disease=1;
strcpy_s(action[MAKEOBJ].msg,100,"Making object...");
action[MAKEOBJ].proceedure=_make_object;
action[SLEEP].energy=1;
strcpy_s(action[SLEEP].msg,100,"Sleeping...");
action[SLEEP].proceedure=sleep;
action[REST].energy=1;
action[REST].proceedure=rest;
strcpy_s(action[REST].msg,100,"Resting...");
action[BATHE].bath_disease=1;
action[BATHE].proceedure=bathe;
strcpy_s(action[BATHE].msg,100,"Bathing...");
action[RESTHEAL].energy=1;
action[RESTHEAL].proceedure=restandheal;
strcpy_s(action[RESTHEAL].msg,100,"Resting and healing...");
action[MAKEFIRE].proceedure=makefire;
strcpy_s(action[MAKEFIRE].msg,100,"Making fire...");
action[MAKEFIRE].numskills=1;
action[MAKEFIRE].skill[0]=FIREMAKING;
action[MAKEFIRE].xp[0]=50;
action[MAKEFIRE].numparts=2;
action[MAKEFIRE].part[0]=WOOD;
action[MAKEFIRE].part[1]=TINDER;
action[MAKEFIRE].partqty[0]=2;
action[MAKEFIRE].partqty[1]=1;
action[MAKEFIRE].numtools=1;
action[MAKEFIRE].tool[0]=FIRESTICKS;
action[MAKEFIRE].toolqty[0]=1;
action[EAT].proceedure=eatfood;
strcpy_s(action[EAT].msg,100,"Eating food...");
action[LEARN].proceedure=research_skill;
action[COOK].proceedure=cook_food;
strcpy_s(action[COOK].msg,100,"Cooking food...");
action[FIND].proceedure=find_object;
strcpy_s(action[FIND].msg,100,"Searching for object...");
action[ADDWOOD].proceedure=addwood2fire;
strcpy_s(action[ADDWOOD].msg,100,"Adding wood to fire...");
action[ADDWOOD].numparts=1;
action[ADDWOOD].part[0]=WOOD;
action[ADDWOOD].partqty[0]=2;
action[ADDWOOD].r.time=900;
action[ADDWOOD].r.chance=10000;
action[ADDWOOD].r.numparts=1;
action[ADDWOOD].r.part[0]=WOOD;
action[ADDWOOD].r.partqty[0]=2;
action[PLAYWITHFIRE].proceedure=play_with_fire;
strcpy_s(action[PLAYWITHFIRE].msg,100,"Playing with fire...");
action[MAKESHELTER].proceedure=make_shelter;
strcpy_s(action[MAKESHELTER].msg,100,"Making shelter...");
action[DEMOLISHSHELTER].proceedure=demolish_shelter;
strcpy_s(action[DEMOLISHSHELTER].msg,100,"Demolishing shelter...");
action[ENTERSHELTER].proceedure=entershelter;
strcpy_s(action[ENTERSHELTER].msg,100,"Entering shelter...");
action[MOVE].proceedure=move;
strcpy_s(action[MOVE].msg,100,"Traveling to new location...");
action[INSPECTSHELTER].proceedure=inspect_shelter;
strcpy_s(action[INSPECTSHELTER].msg,100,"Inspecting shelter...");
action[REPAIRSHELTER].proceedure=repair_shelter;
strcpy_s(action[REPAIRSHELTER].msg,100,"Repairing shelter...");
action[BUTCHER].proceedure=butcher_animal;
strcpy_s(action[BUTCHER].msg,100,"Butchering animal...");
action[DEBONE].proceedure=getbone_animal;
strcpy_s(action[DEBONE].msg,100,"Getting bone from animal...");
action[GETTRINKETS].proceedure=gettrinkets_animal;
strcpy_s(action[GETTRINKETS].msg,100,"Getting trinkets from animal...");
action[SACRIFICE].proceedure=sacrifice_animal;
strcpy_s(action[SACRIFICE].msg,100,"Sacrificing animal...");
action[SKIN].proceedure=skin_animal;
strcpy_s(action[SKIN].msg,100,"Skinning animal...");
action[LEAVESHELTER].proceedure=leaveshelter;
strcpy_s(action[LEAVESHELTER].msg,100,"Leaving shelter...");
action[BATHEWATERSKIN].proceedure=bathewaterskin;
strcpy_s(action[BATHEWATERSKIN].msg,100,"Bathing from waterskins...");
action[BATHEWATERSKIN].numparts=1;
action[BATHEWATERSKIN].part[0]=WATER;
action[BATHEWATERSKIN].partqty[0]=1;
action[BATHEWATERSKIN].numtools=1;
action[BATHEWATERSKIN].tool[0]=WATERSKIN;
action[BATHEWATERSKIN].toolqty[0]=1;
action[FORRAGE].proceedure=forrage;
strcpy_s(action[FORRAGE].msg,100,"Forraging for food...");
action[FILLWATERSKINRAIN].proceedure=fill_waterskins_rain;
strcpy_s(action[FILLWATERSKINRAIN].msg,100,"Filling waterskins with rainwater...");
action[TRAIN].proceedure=train;
strcpy_s(action[STARGAZE].msg,100,"Stargazing...");
action[STARGAZE].proceedure=stargaze;
action[FILLWATERSKIN].proceedure=fill_waterskins;
strcpy_s(action[FILLWATERSKIN].msg,100,"Filling waterskins...");
action[SWIM].proceedure=swim;
strcpy_s(action[SWIM].msg,100,"Swimming...");
action[MAKEBEDDING].proceedure=make_bedding;
strcpy_s(action[MAKEBEDDING].msg,100,"Making bedding...");
action[CLIMBTREE].proceedure=climbtree;
strcpy_s(action[CLIMBTREE].msg,100,"Climbing tree...");
action[CLIMBDOWN].proceedure=climbdownfromtree;
strcpy_s(action[CLIMBDOWN].msg,100,"Climbing down from tree...");
action[MAKEBEDSHELTER].proceedure=makebedshelter;
strcpy_s(action[MAKEBEDSHELTER].msg,100,"Making bedding in shelter...");
strcpy_s(action[CHECKBEDDING].msg,100,"Checking bedding condition...");
action[CHECKBEDDING].proceedure=checkbedding;
strcpy_s(action[FIXBEDDING].msg,100,"Repairing bedding...");
action[FIXBEDDING].proceedure=fixbedding;
strcpy_s(action[DANCE].msg,100,"Dancing...");
action[DANCE].proceedure=dance;
strcpy_s(action[PLAYDRUM].msg,100,"Playing drums...");
action[PLAYDRUM].proceedure=playdrum;
strcpy_s(action[PLAYFLUTE].msg,100,"Playing flute...");
action[PLAYFLUTE].proceedure=playflute;
strcpy_s(action[SING_ACTION].msg,100,"Singing...");
action[SING_ACTION].proceedure=sing;
strcpy_s(action[TELLJOKE].msg,100,"Telling joke...");
action[TELLJOKE].proceedure=telljoke;
strcpy_s(action[TELLSTORY].msg,100,"Telling story...");
action[TELLSTORY].proceedure=tellstory;
action[FISH].proceedure=fish;
strcpy_s(action[CAPTUREANIMAL].msg,100,"Capturing animal...");
action[CAPTUREANIMAL].proceedure=capture_animal;
strcpy_s(action[FREEANIMAL].msg,100,"Freeing animal...");
action[FREEANIMAL].proceedure=free_animal;
strcpy_s(action[TAMEANIMAL].msg,100,"Taming animal...");
action[TAMEANIMAL].proceedure=tame_animal;
strcpy_s(action[WATCHCLOUDS].msg,100,"Watching clouds...");
action[WATCHCLOUDS].proceedure=watchclouds;
strcpy_s(action[FIXOBJECT].msg,100,"Fixing object...");
action[FIXOBJECT].proceedure=fix_object;
strcpy_s(action[GETTENDON].msg,100,"Getting tendon from animal...");
action[GETTENDON].proceedure=get_tendon_animal;
action[GETTENDON].numtools=1;
action[GETTENDON].tool[0]=STONEKNIFE;
action[GETTENDON].toolqty[0]=1;
strcpy_s(action[MAKESTOREPIT].msg,100,"Building storage pit...");
action[MAKESTOREPIT].proceedure=make_storepit;
strcpy_s(action[INSPECTSTOREPIT].msg,100,"Inspecting storage pit...");
action[INSPECTSTOREPIT].proceedure=inspect_storepit;
strcpy_s(action[REPAIRSTOREPIT].msg,100,"Repairing storage pit...");
action[REPAIRSTOREPIT].proceedure=repair_storepit;
strcpy_s(action[EXAMINEMONOLITH].msg,100,"Examinimg monolith...");
//action[EXAMINEMONOLITH].proceedure=examine_monolith;
strcpy_s(action[ENTERCAVE].msg,100,"Entering cave...");
action[ENTERCAVE].proceedure=entercave;
strcpy_s(action[LEAVECAVE].msg,100,"Leaving cave...");
action[LEAVECAVE].proceedure=leavecave;
strcpy_s(action[SEARCHBODY].msg,100,"Searching body...");
action[SEARCHBODY].proceedure=searchbody;
strcpy_s(action[LEARNFROMCAVEMAN].msg,100,"Learning from caveman...");
action[LEARNFROMCAVEMAN].proceedure=learn_from_caveman;
strcpy_s(action[TEACHCAVEMAN].msg,100,"Teaching caveman...");
action[TEACHCAVEMAN].proceedure=teach_caveman;
strcpy_s(action[LISTEN2STORY].msg,100,"Listening to story...");
action[LISTEN2STORY].proceedure=listen2story;
strcpy_s(action[TEACHBANDMEMBER].msg,100,"Teaching bandmember...");
action[TEACHBANDMEMBER].proceedure=teach_bandmember;
strcpy_s(action[TELLJOKECLAN].msg,100,"Telling joke to bandmember...");
action[TELLJOKECLAN].proceedure=telljokeclan;
strcpy_s(action[TELLSTORYCLAN].msg,100,"Telling story to bandmember...");
action[TELLSTORYCLAN].proceedure=tellstoryclan;
strcpy_s(action[LISTEN2JOKE].msg,100,"Listening to joke...");
action[LISTEN2JOKE].proceedure=listen2joke;
strcpy_s(action[ENTERCAVERN].msg,100,"Entering cavern...");
action[ENTERCAVERN].proceedure=entercavern;
strcpy_s(action[LEAVECAVERN].msg,100,"Leaving cavern...");
action[LEAVECAVERN].proceedure=leavecavern;
strcpy_s(action[BUILDPERMSHEL].msg,100,"Building permenant shelter...");
action[BUILDPERMSHEL].proceedure=buildpermshel;
strcpy_s(action[INSPECTPERMSHEL].msg,100,"Inspecting permenant shelter...");
action[INSPECTPERMSHEL].proceedure=inspectpermshel;
strcpy_s(action[REPAIRPERMSHEL].msg,100,"Repairing permenant shelter...");
action[REPAIRPERMSHEL].proceedure=repairpermshel;
strcpy_s(action[DEMOLISHPERMSHEL].msg,100,"Demolishing permenant shelter...");
action[DEMOLISHPERMSHEL].proceedure=demolishpermshel;
strcpy_s(action[CLEARRUBBLE].msg,100,"Clearing rubble...");
action[CLEARRUBBLE].proceedure=NULL;
strcpy_s(action[MAKERAFT].msg,100,"Making raft...");
action[MAKERAFT].proceedure=make_raft;
strcpy_s(action[LEARNSAILING].msg,100,"Learning sailing...");
action[LEARNSAILING].proceedure=learn_sailing;
strcpy_s(action[BOARDRAFT].msg,100,"Boarding raft...");
action[BOARDRAFT].proceedure=board_raft;
strcpy_s(action[INSPECTRAFT].msg,100,"Checking raft...");
action[INSPECTRAFT].proceedure=check_raft;
strcpy_s(action[REPAIRRAFT].msg,100,"Repairing raft...");
action[REPAIRRAFT].proceedure=repair_raft;
strcpy_s(action[PADDLE].msg,100,"Paddling...");
action[PADDLE].proceedure=paddle;
strcpy_s(action[MOVERAFT].msg,100,"Moving on raft...");
action[MOVERAFT].proceedure=move_raft;
strcpy_s(action[DISEMBARK].msg,100,"Disembarking...");
action[DISEMBARK].proceedure=disembark;
strcpy_s(action[PRAY].msg,100,"Making sacrifice...");
action[PRAY].proceedure=pray;
action[PRAYFIRE].proceedure=prayfire;
strcpy_s(action[PRAYFIRE].msg,100,"Making sacrificial fire...");
action[PRAYFIRE].numskills=1;
action[PRAYFIRE].skill[0]=FIREMAKING;
action[PRAYFIRE].xp[0]=50;
action[PRAYFIRE].numparts=2;
action[PRAYFIRE].part[0]=WOOD;
action[PRAYFIRE].part[1]=TINDER;
action[PRAYFIRE].partqty[0]=2;
action[PRAYFIRE].partqty[1]=1;
action[PRAYFIRE].numtools=1;
action[PRAYFIRE].tool[0]=FIRESTICKS;
action[PRAYFIRE].toolqty[0]=1;
action[POISONWPN].proceedure=poison_wpn;
strcpy_s(action[POISONWPN].msg,100,"Poisoning weapon...");
action[APPLYCAMO].proceedure=apply_camo;
strcpy_s(action[APPLYCAMO].msg,100,"Applying camoflage...");
action[APPLYCAMO].r.numskills=1;
action[APPLYCAMO].r.skill[0]=CAMOFLAGE;
action[APPLYCAMO].r.xp[0]=50;
action[APPLYCAMO].r.numparts=1;
action[APPLYCAMO].r.part[0]=CORDAGE;
action[APPLYCAMO].r.partqty[0]=1;
action[APPLYCAMO].r.numtools=1;
action[APPLYCAMO].r.tool[0]=STONEKNIFE;
action[APPLYCAMO].r.toolqty[0]=1;
action[USELODESTONE].proceedure=use_lodestone;
strcpy_s(action[USELODESTONE].msg,100,"Using lodestone...");
action[USELODESTONE].r.numskills=1;
action[USELODESTONE].r.skill[0]=NAVIGATION;
action[USELODESTONE].r.xp[0]=500;
action[USELODESTONE].r.numparts=1;
action[USELODESTONE].r.part[0]=WATER;
action[USELODESTONE].r.partqty[0]=10;
action[USELODESTONE].r.numtools=3;
action[USELODESTONE].r.tool[0]=LODESTONE;
action[USELODESTONE].r.tool[1]=CLAYPOT;
action[USELODESTONE].r.tool[2]=WOOD;
action[USELODESTONE].r.toolqty[0]=1;
action[USELODESTONE].r.toolqty[1]=1;
action[USELODESTONE].r.toolqty[2]=1;
action[USELODESTONE].r.time=4500;
action[USELODESTONE].r.chance=7500;
action[USELODESTONE].r.numbonusskills=1;
action[USELODESTONE].r.bonusskill[0]=NAVIGATION;
action[USELODESTONE].r.numboostedskills=1;
action[USELODESTONE].r.boostedskill[0]=NAVIGATION;
action[PUTOUTFIRE].proceedure=putoutfire;
strcpy_s(action[PUTOUTFIRE].msg,100,"Putting out fire...");
action[KILLCAPTURED].proceedure=kill_captured;
strcpy_s(action[KILLCAPTURED].msg,100,"Killing animal...");
strcpy_s(action[MAKEOBJ2].msg,100,"Making object...");
action[MAKEOBJ2].proceedure=make_object2;
strcpy_s(action[CHECKTRAP].msg,100,"Checking trap...");
action[CHECKTRAP].proceedure=check_trap;
action[CHECKTRAP].r.chance=10000;
action[CHECKTRAP].r.time=50;
strcpy_s(action[CHECKWEATHER].msg,100,"Checking weather...");
action[CHECKWEATHER].proceedure=check_weather;
action[CHECKWEATHER].r.chance=10000;
action[CHECKWEATHER].r.time=50;
strcpy_s(action[CHECKFIRE].msg,100,"Checking fire...");
action[CHECKFIRE].proceedure=check_fire;
action[CHECKFIRE].r.chance=10000;
action[CHECKFIRE].r.time=50;
strcpy_s(action[DEMOLISH_LANDMARK].msg,100,"Demolishing landmark...");
action[DEMOLISH_LANDMARK].proceedure=demolish_landmark;
action[DEMOLISH_LANDMARK].r.chance=10000;
action[DEMOLISH_LANDMARK].r.time=13500;
strcpy_s(action[DEMOLISH_BEDDING].msg,100,"Demolishing bedding...");
action[DEMOLISH_BEDDING].proceedure=demolish_bedding;
action[DEMOLISH_BEDDING].r.chance=10000;
action[DEMOLISH_BEDDING].r.time=4500;
strcpy_s(action[INSPECT_TRAP].msg,100,"Inspecting trap...");
action[INSPECT_TRAP].proceedure=inspect_trap;
action[INSPECT_TRAP].r.chance=10000;
action[INSPECT_TRAP].r.time=4500;
strcpy_s(action[REPAIR_WORLDOBJ].msg,100,"Repairing object...");
action[REPAIR_WORLDOBJ].proceedure=repair_world_object;
action[REPAIR_WORLDOBJ].r.chance=10000;
action[REPAIR_WORLDOBJ].r.time=4500;
strcpy_s(action[DEMOLISH_TRAP].msg,100,"Demolishing trap...");
action[DEMOLISH_TRAP].proceedure=demolish_trap;
action[DEMOLISH_TRAP].r.chance=10000;
action[DEMOLISH_TRAP].r.time=4500;
strcpy_s(action[INSPECT_LANDMARK].msg,100,"Inspecting landmark...");
action[INSPECT_LANDMARK].proceedure=inspect_landmark;
action[INSPECT_LANDMARK].r.chance=10000;
action[INSPECT_LANDMARK].r.time=4500;
strcpy_s(action[REPAIR_TRAP].msg,100,"Repairing trap...");
action[REPAIR_TRAP].proceedure=repair_trap;
action[REPAIR_TRAP].r.chance=10000;
action[REPAIR_TRAP].r.time=4500;
strcpy_s(action[DAYDREAM].msg,100,"Daydreaming...");
action[DAYDREAM].proceedure=daydream;
strcpy_s(action[TALK2FRIENDLY].msg,100,"Talking to friendly caveman...");
action[TALK2FRIENDLY].proceedure=talk2friendly;
strcpy_s(action[TALK2BANDMEMBER].msg,100,"Talking to band member...");
action[TALK2BANDMEMBER].proceedure=talk2bandmember;
strcpy_s(action[LISTEN2BANDMEMBER].msg,100,"Listening to band member...");
action[LISTEN2BANDMEMBER].proceedure=listen2bandmember;
}