//////////////////////////////////////////////////////////////////////////////// // cv_sr_dopower - Do the Sub-Race Ability // By Deva B. Winblood. December 19th, 2008. //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////// // FUNCTIONS ////////////////////////////////// #include "prc_inc_racial" void fnSummonHenchman(object oPC,string sResRef) { // PURPOSE: Summon the henchman object oWP; object oHench; int nN; float fLast=0.0; object oLWP; nN=1; oWP=GetNearestObject(OBJECT_TYPE_WAYPOINT,oPC,nN); while(GetIsObjectValid(oWP)&&GetDistanceBetween(oPC,oWP)<40.0) { // find a semi-distant waypoint if (GetDistanceBetween(oPC,oWP)>fLast) { // remember oLWP=oWP; fLast=GetDistanceBetween(oPC,oWP); } // remember nN++; oWP=GetNearestObject(OBJECT_TYPE_WAYPOINT,oPC,nN); } // find a semi-distant waypoint oHench=CreateObject(OBJECT_TYPE_CREATURE,sResRef,GetLocation(oLWP)); AssignCommand(oHench,ActionMoveToObject(oPC,TRUE,3.0)); AddHenchman(oPC,oHench); AssignCommand(oHench,SetIsDestroyable(TRUE,FALSE)); } // fnSummonHenchman() void fnCreateItem(object oPC,string sResRef) { // PURPOSE: Create Item on object object oItem=CreateItemOnObject(sResRef,oPC); } // fnCreateItem() /////////////////////////////////////////////////////////////////[ MAIN]//////// void main() { object oPC=GetPCSpeaker(); int nParm=GetLocalInt(oPC,"nParm"); string sRace=GetSubRace(oPC); int nRace = MyPRCGetRacialType(oPC); int nDay=GetCalendarDay(); string sResRef; int bItem=FALSE; SetLocalInt(oPC,"nSubRaceLastUsed"+IntToString(nParm),nDay); sRace=GetStringUpperCase(sRace); //if (sRace=="KOBOLD") if (nRace == RACIAL_TYPE_KOBOLD) { // Kobold Sub-Race sResRef="srkohench"+IntToString(nParm); } // Kobold Sub-Race //else if (sRace=="GOBLIN") else if (nRace == RACIAL_TYPE_HUMANOID_GOBLINOID) { // Goblin Sub-Race sResRef="srgohench"+IntToString(nParm); } // Goblin Sub-Race else if (sRace=="SKELETON") { // Skeleton Sub-Race sResRef="srskhench"+IntToString(nParm); } // Skeleton Sub-Race //else if (sRace=="BROWNIE") else if (nRace == RACIAL_TYPE_BROWNIE) { // Brownie Sub-Race if (nParm<4) { // items bItem=TRUE; sResRef="rts_srbr"+IntToString(nParm); } // items else { sResRef="srbrhench"; } } // Brownie Sub-Race //else if (sRace=="DROW") else if (nRace == RACIAL_TYPE_DROW_MALE || nRace == RACIAL_TYPE_DROW_FEMALE) { // Drow Sub-Race if (nParm<3) { // items bItem=TRUE; sResRef="rts_srdr"+IntToString(nParm); } // items else if (nParm==3) sResRef="srdrhench1"; else { sResRef="srdrhench2"; } } // Drow Sub-Race //else if (sRace=="WEMIC") else if (nRace == RACIAL_TYPE_WEMIC) { // Wemic Sub-Race bItem=TRUE; sResRef="rts_srwm"+IntToString(nParm); } // Wemic Sub-Race if (!bItem) fnSummonHenchman(oPC,sResRef); else { fnCreateItem(oPC,sResRef); } } /////////////////////////////////////////////////////////////////[ MAIN]////////