Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

103 lines
3.2 KiB
Plaintext

////////////////////////////////////////////////////////////////////////////////
// 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]////////