HoS_PRC8/_mod/_module/nss/team_monitor.nss
Jaysyn904 04165202c0 Initial upload
Initial upload
2024-11-25 19:36:07 -05:00

585 lines
21 KiB
Plaintext

// Team monitor - this makes sure there is always a leader
// if one does not exist then it will try to promote a sub-leader
// This also adjusts reputations based on leaders friend, enemy settings
// It also insures units of team not hostile on a sub_leader basis
//////////////////////
#include "header_sounds"
//////////////////////
// PROTOTYPES
//////////////////////
string fnRemParsed(string sO, string sP);
void fnSetFactionToFriendly(object oPC,string sID);
string fnParsePeriod(string sIn);
void fnAnnounce(string sMsg="",int nOption=0);
void fnTeamSelect(object oPC);
string fnGetTeamID(int nC);
void fnRecordInventory(object oPC);
void fnPartyCheck();
void fnMultiTeamCheck(object oPC);
//////////////////////////////////////////////////////////// MAIN
void main()
{
object oMod=GetModule();
object oPC;
string sID;
object oLead;
string sInfo;
int nC=1;
object oH;
int nNum;
int nRep;
object oMyTeam;
float fDist;
SetLocalInt(oMod,"nMonitorOn",TRUE);
sID=fnGetTeamID(nC);
while(sID!="NA")
{ // process team
oLead=GetLocalObject(oMod,"oTeamLead"+sID);
if (GetIsPC(oLead)==TRUE&&GetLocalInt(oLead,"bPermaDead")!=TRUE)
{ // record resources
nNum=GetGold(oLead);
SetLocalInt(oMod,"nGoldStore"+sID,nNum);
nNum=GetLocalInt(oLead,"nManaStore");
SetLocalInt(oMod,"nManaStore"+sID,nNum);
nNum=GetLocalInt(oLead,"nSoulStore");
SetLocalInt(oMod,"nSoulStore"+sID,nNum);
// make sure have tools
if (GetItemPossessedBy(oLead,"RTSCreation_Tool")==OBJECT_INVALID)
{ // create command tool
oH=CreateItemOnObject("rtscreation_tool",oLead);
} // create command tool
if (GetItemPossessedBy(oLead,"RTSUnit_Creation")==OBJECT_INVALID)
{ // create command tool
oH=CreateItemOnObject("rtsunit_creation",oLead);
} // create command too
if (GetItemPossessedBy(oLead,"rts_it_teamwand")==OBJECT_INVALID)
{ // create team wand
oH=CreateItemOnObject("rts_it_teamwand",oLead);
} // create team wand
} // record resources
else if (GetIsPC(oLead)&&GetLocalInt(oLead,"bPermaDead"))
{ // dead
oLead=OBJECT_INVALID;
DeleteLocalObject(oMod,"oTeamLead"+sID);
} // dead
if (GetItemPossessedBy(oLead,"rts_it_vote")==OBJECT_INVALID)
{ // voting tool
oH=CreateItemOnObject("rts_it_vote",oLead);
} // voting tool
if ((oLead==OBJECT_INVALID||GetIsPC(oLead)==FALSE)&&(!GetIsPossessedFamiliar(GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oLead))))
{ // look for PC to promote to leader
nNum=FALSE;
oPC=GetFirstPC();
while(oPC!=OBJECT_INVALID&&nNum==FALSE)
{ // look for promotion
if (GetLocalString(oPC,"sTeamID")==sID&&GetLocalInt(oPC,"bPermaDead")!=TRUE) nNum=TRUE;
if (nNum==FALSE) oPC=GetNextPC();
} // look for promotion
if (nNum==TRUE)
{ // promote oPC to leader
fnTeamSelect(oPC);
oLead=oPC;
} // promote oPC to leader
} // look for PC to promote to leader
/// check reputations
/* oPC=GetFirstPC();
while(oPC!=OBJECT_INVALID&&GetLocalString(oPC,"sTeamID")==GetLocalString(oLead,"sTeamID"))
{ // adjust reputation
oH=GetFirstPC();
while(oH!=OBJECT_INVALID)
{ // set enemies & friends
if (GetIsFriend(oH,oLead)==TRUE||GetIsNeutral(oH,oLead)==TRUE||GetLocalString(oPC,"sTeamID")==GetLocalString(oH,"sTeamID")||oH==oLead)
{ // friend
if (oPC!=oH&&GetIsFriend(oH,oPC)==FALSE)
{ // not yourself
SetPCLike(oPC,oH);
SendMessageToPC(oPC,"Had to make you like '"+GetName(oH)+".'");
} // not yourself
} // friend
else
{ // enemy
if (oH!=oPC&&GetIsEnemy(oH,oPC)==FALSE)
{ // not yourself
SetPCDislike(oPC,oH);
SendMessageToPC(oPC,"Had to make you dislike '"+GetName(oH)+".'");
} // not yourself
} // enemy
oH=GetNextPC();
} // set enemies & friends
fnSetFactionToFriendly(oPC,sID);
oPC=GetNextPC();
} // adjust reputation */
// end of that team
nC++;
sID=fnGetTeamID(nC);
} // process team
/// Record Player Information
oPC=GetFirstPC();
while(oPC!=OBJECT_INVALID)
{ // !OI
if (GetIsDM(oPC)==FALSE)
{ // not DM
nRep=1;
sID=GetLocalString(oPC,"sTeamID");
oMyTeam=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,nRep,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY);
fDist=GetDistanceBetween(oMyTeam,oPC);
while(oMyTeam!=OBJECT_INVALID&&fDist<30.0)
{ // adjust rep if same team
if (sID!=""&&sID==GetLocalString(oMyTeam,"sTeamID"))
{
if (fDist<10.0) AssignCommand(oMyTeam,ClearAllActions(TRUE));
ClearPersonalReputation(oPC,oMyTeam);
AdjustReputation(oPC,oMyTeam,100);
SetIsTemporaryFriend(oPC,oMyTeam);
SetIsTemporaryFriend(oMyTeam,oPC);
if (GetAbilityScore(oMyTeam,ABILITY_INTELLIGENCE)>7)
AssignCommand(oMyTeam,SpeakString("You are forgiven "+GetName(oPC)+"."));
}
nRep++;
oMyTeam=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,nRep,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY);
fDist=GetDistanceBetween(oMyTeam,oPC);
} // adjust rep if same team
sInfo=GetName(oPC)+GetPCPlayerName(oPC);
SetLocalInt(oMod,sInfo,GetXP(oPC));
SetLocalObject(oMod,sInfo+"loc",GetArea(oPC));
fnRecordInventory(oPC);
DelayCommand(2.0,fnMultiTeamCheck(oPC));
} // not DM
oPC=GetNextPC();
} // !OI
DelayCommand(6.0,fnPartyCheck()); // make sure opposing teams not part of a party
DelayCommand(24.0,ExecuteScript("team_monitor",OBJECT_SELF));
}
///////////////////////////////////////////////////////////////// MAIN
///////////////////////
// FUNCTIONS
///////////////////////
void fnMultiTeamCheck(object oPC)
{ // make sure not liked by more than one team
string sID=GetLocalString(oPC,"sTeamID");
object oMod=GetModule();
string sIDO;
object oWP;
object oTemp;
object oCloak=GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC);
string sCTag=GetTag(oCloak);
int bInfiltrate=FALSE;
int nC=1;
if (sCTag=="rts_it_op6"||sCTag=="rts_it_op7"||sCTag=="rts_it_op8"||sCTag=="rts_it_op9")
{ // wearing infiltrator cloak
sCTag=GetStringRight(sCTag,1);
if (sCTag=="6") sCTag="UNC";
else if (sCTag=="7") sCTag="UND";
else if (sCTag=="8") sCTag="SPID";
else if (sCTag=="9") sCTag="DWF";
bInfiltrate=TRUE;
} // wearing infiltrator cloak
sIDO="SPID";
while(nC<5)
{
if (sID!=sIDO)
{ // check
if (!bInfiltrate||(bInfiltrate&&sCTag!=sIDO))
{ // not infiltrating
if (GetLocalObject(oMod,"oTeamLead"+sIDO)==oPC)
{
SendMessageToPC(oPC,"You were set as leader to "+sIDO+" team as well. This has been fixed.");
DeleteLocalObject(oMod,"oTeamLead"+sIDO);
}
oWP=GetWaypointByTag(sIDO+"_RESOURCES");
oTemp=CreateObject(OBJECT_TYPE_CREATURE,sIDO+"0",GetLocation(oWP));
if (GetIsEnemy(oPC,oTemp)==FALSE)
{ // set as enemy
AdjustReputation(oPC,oTemp,0);
SendMessageToPC(oPC,"Fixed reputation with "+sIDO+" team so, they are enemies.");
} // set as enemy
DestroyObject(oTemp);
}// not infiltrating
} // check
// next
nC++;
if (nC==2) sIDO="DWF";
else if (nC==3) sIDO="UNC";
else if (nC==4) sIDO=="UND";
else { sIDO="NA"; }
}
} // fnMultiTeamCheck()
void fnPartyCheck()
{ // don't allow people to join into parties when on opposing teams
object oPC=GetFirstPC();
object oPartyMemb;
string sID;
object oMod=GetModule();
while(oPC!=OBJECT_INVALID)
{ // !OI
if (GetIsDM(oPC)==FALSE)
{ // not DM
sID=GetLocalString(oPC,"sTeamID");
if (GetLocalObject(oMod,"oTeamLead"+sID)==oPC)
{ // this is the leader
oPartyMemb=GetFirstFactionMember(oPC);
while(oPartyMemb!=OBJECT_INVALID)
{ // !OI
if (GetLocalString(oPartyMemb,"sTeamID")!=sID)
{ // kick off party
RemoveFromParty(oPartyMemb); // opposing teams not allowed to be party
} // kick off party
oPartyMemb=GetNextFactionMember(oPC);
} // !OI
} // this is the leader
} // not DM
oPC=GetNextPC();
} // !OI
} // fnPartyCheck
void fnTeamSelect(object oPC)
{ // select team
string sID=GetLocalString(oPC,"sTeamID");
object oMod=GetModule();
object oLead=GetLocalObject(oMod,"oTeamLead"+sID);
int nC;
object oH;
string sS;
string sTeamName;
object oItem;
object oWP=GetWaypointByTag(sID+"_START");
int nMana=GetLocalInt(oMod,"nManaStore"+sID);
int nSouls=GetLocalInt(oMod,"nSoulStore"+sID);
int nStartSouls=GetLocalInt(oMod,"nStartSoul"+sID);
int nGold=GetLocalInt(oMod,"nGoldStore"+sID);
string sResources;
string sParse;
int nTeamN=1;
if (sID=="UND") nTeamN=4;
if (sID=="DWF") nTeamN=2;
if (sID=="UNC") nTeamN=3;
if (sID=="SPID") sTeamName="Spider Cultists.";
else if (sID=="DWF") sTeamName="Dwarves.";
else if (sID=="UND") sTeamName="Undead.";
else if (sID=="UNC") sTeamName="Unclean.";
if (oLead==OBJECT_INVALID||GetIsPC(oLead)!=TRUE)
{ // no leader - assume leadership
sS=GetName(oPC)+" has assumed leadership of the "+sTeamName;
if (GetItemPossessedBy(oPC,"RTSUnit_Creation")==OBJECT_INVALID)
oItem=CreateItemOnObject("rtsunit_creation",oPC);
if (GetItemPossessedBy(oPC,"RTSCreation_Tool")==OBJECT_INVALID)
oItem=CreateItemOnObject("rtscreation_tool",oPC);
if (GetItemPossessedBy(oPC,"rts_it_teamwand")==OBJECT_INVALID)
{ // create team wand
oItem=CreateItemOnObject("rts_it_teamwand",oPC);
} // create team wand
fnAnnounce(sS);
SetLocalObject(oMod,"oTeamLead"+sID,oPC);
if (oLead!=OBJECT_INVALID)
{ // there was an NPC leader
if (nStartSouls!=0)
{ // stored resources
SetLocalInt(oPC,"nManaStore",nMana);
SetLocalInt(oPC,"nSoulStore",nSouls);
SetLocalInt(oPC,"nStartSoul",nStartSouls);
GiveGoldToCreature(oPC,nGold);
} // stored resources
else
{ // parse resources
oItem=GetObjectByTag(sID+"_RESOURCES");
if (oItem!=OBJECT_INVALID)
{ // !OI
sResources=GetName(oItem);
sParse=fnParsePeriod(sResources);
sResources=fnRemParsed(sResources,sParse);
SendMessageToPC(oPC,"You have "+sParse+" mana at your disposal.");
SetLocalInt(oPC,"nManaStore",StringToInt(sParse));
SetLocalInt(oMod,"nManaStore"+sID,StringToInt(sParse));
sParse=fnParsePeriod(sResources);
sResources=fnRemParsed(sResources,sParse);
GiveGoldToCreature(oPC,StringToInt(sParse));
SetLocalInt(oMod,"nGoldStore"+sID,StringToInt(sParse));
SendMessageToPC(oPC,"You have "+sResources+" souls at your disposal.");
SetLocalInt(oPC,"nStartSoul",StringToInt(sResources));
SetLocalInt(oPC,"nSoulStore",StringToInt(sResources));
SetLocalInt(oMod,"nSoulStore"+sID,StringToInt(sResources));
SetLocalInt(oMod,"nStartSoul"+sID,StringToInt(sResources));
} // !OI
} // parse resources
SetLocalString(oMod,"sResNPCLead"+sID,GetResRef(oLead));
if (GetLocalObject(oMod,"oGUARD5"+sID)==OBJECT_INVALID)
{ // set guard markers
oItem=CreateObject(OBJECT_TYPE_PLACEABLE,"rts_marker",GetLocation(oItem));
SetLocalObject(oMod,"oGUARD5"+sID,oItem);
oItem=GetObjectByTag(sID+"_VAULT");
oItem=CreateObject(OBJECT_TYPE_PLACEABLE,"rts_marker",GetLocation(oItem));
SetLocalObject(oMod,"oGUARD4"+sID,oItem);
} // set guard markers
SendMessageToPC(oPC,"You have "+IntToString(nMana)+" mana, "+IntToString(nSouls)+", and "+IntToString(GetGold(oPC))+" gold at your disposal.");
DestroyObject(oLead);
} // there was an NPC leader
else if (nStartSouls!=0)
{ // get stored resources
SetLocalInt(oPC,"nManaStore",nMana);
SetLocalInt(oPC,"nSoulStore",nSouls);
SetLocalInt(oPC,"nStartSoul",nStartSouls);
GiveGoldToCreature(oPC,nGold);
if (GetLocalObject(oMod,"oGUARD5"+sID)==OBJECT_INVALID)
{ // set guard markers
oItem=CreateObject(OBJECT_TYPE_PLACEABLE,"rts_marker",GetLocation(oItem));
SetLocalObject(oMod,"oGUARD5"+sID,oItem);
oItem=GetObjectByTag(sID+"_VAULT");
oItem=CreateObject(OBJECT_TYPE_PLACEABLE,"rts_marker",GetLocation(oItem));
SetLocalObject(oMod,"oGUARD4"+sID,oItem);
} // set guard markers
SendMessageToPC(oPC,"You have "+IntToString(nMana)+" mana, "+IntToString(nSouls)+", and "+IntToString(GetGold(oPC))+" gold at your disposal.");
} // get stored resources
else
{ // parse resources
oItem=GetObjectByTag(sID+"_RESOURCES");
if (oItem!=OBJECT_INVALID)
{ // !OI
sResources=GetName(oItem);
sParse=fnParsePeriod(sResources);
sResources=fnRemParsed(sResources,sParse);
SendMessageToPC(oPC,"You have "+sParse+" mana at your disposal.");
SetLocalInt(oPC,"nManaStore",StringToInt(sParse));
SetLocalInt(oMod,"nManaStore"+sID,StringToInt(sParse));
sParse=fnParsePeriod(sResources);
sResources=fnRemParsed(sResources,sParse);
GiveGoldToCreature(oPC,StringToInt(sParse));
SetLocalInt(oMod,"nGoldStore"+sID,StringToInt(sParse));
SendMessageToPC(oPC,"You have "+sResources+" souls at your disposal.");
SetLocalInt(oPC,"nStartSoul",StringToInt(sResources));
SetLocalInt(oPC,"nSoulStore",StringToInt(sResources));
SetLocalInt(oMod,"nSoulStore"+sID,StringToInt(sResources));
SetLocalInt(oMod,"nStartSoul"+sID,StringToInt(sResources));
oItem=GetObjectByTag(sID+"_START");
if (GetLocalObject(oMod,"oGUARD5"+sID)==OBJECT_INVALID)
{ // set guard markers
oItem=CreateObject(OBJECT_TYPE_PLACEABLE,"rts_marker",GetLocation(oItem));
SetLocalObject(oMod,"oGUARD5"+sID,oItem);
oItem=GetObjectByTag(sID+"_VAULT");
oItem=CreateObject(OBJECT_TYPE_PLACEABLE,"rts_marker",GetLocation(oItem));
SetLocalObject(oMod,"oGUARD4"+sID,oItem);
} // set guard markers
} // !OI
} // parse resources
} // no leader - assume leadership
else
{ // there is a leader
sS=GetName(oPC)+" has joined the "+sTeamName;
fnAnnounce(sS,1);
/*oH=GetFirstPC();
while(oH!=OBJECT_INVALID)
{ // set enemies & friends
if (GetIsFriend(oH,oLead)==TRUE||GetIsNeutral(oH,oLead)==TRUE)
{ // friend
if (oPC!=oH)
{ // not yourself
SetPCLike(oPC,oH);
} // not yourself
} // friend
else
{ // enemy
if (oH!=oPC)
{ // not yourself
SetPCDislike(oPC,oH);
} // not yourself
} // enemy
oH=GetNextPC();
} // set enemies & friends */
} // there is a leader
// set reputation of creatures towards you
SetLocalInt(oPC,"nTeamNum",nTeamN);
SetLocalInt(oMod,"n"+sID+"Num",nTeamN);
fnSetFactionToFriendly(oPC,sID);
} // fnTeamSelect()
string fnGetTeamID(int nC)
{ // return the team ID
string sRet="NA";
if (nC==1) sRet="SPID";
else if (nC==2) sRet="DWF";
else if (nC==3) sRet="UNC";
else if (nC==4) sRet="UND";
return sRet;
} // fnGetTeamID()
void fnAnnounce(string sMsg="",int nOption=0)
{ // announce message to players
object oNext=GetFirstPC();
while(oNext!=OBJECT_INVALID)
{ // announce
SendMessageToPC(oNext,"ANNOUNCEMENT:"+sMsg);
if (nOption==0) AssignCommand(oNext,fnSoundAlert("as_an_owlhoot1"));
else if (nOption==1) AssignCommand(oNext,fnSoundAlert("as_cv_lute1"));
oNext=GetNextPC();
} // announce
} // fnAnnounce()
string fnParsePeriod(string sIn)
{ // Parse period
string sH=sIn;
string sR="";
while (GetStringLength(sH)>0&&GetStringLeft(sH,1)!=".")
{ // build string
sR=sR+GetStringLeft(sH,1);
sH=GetStringRight(sH,GetStringLength(sH)-1);
} // build string
return sR;
} // fnParsePeriod()
string fnRemParsed(string sO, string sP)
{ // Remove parsed portion from sO
string sR="";
if (GetStringLength(sO)>=GetStringLength(sP))
sR=GetStringRight(sO,GetStringLength(sO)-GetStringLength(sP));
if (GetStringLeft(sR,1)==".") sR=GetStringRight(sR,GetStringLength(sR)-1);
return sR;
} // fnRemParsed()
void fnSetFactionToFriendly(object oPC,string sID)
{ // Set faction that you control to friendly
object oMember=GetObjectByTag(sID+"0");
object oWP;
int nCreate=FALSE;
if(oMember==OBJECT_INVALID)
{ // create dummy
nCreate=TRUE;
oWP=GetWaypointByTag(sID+"_START");
oMember=CreateObject(OBJECT_TYPE_CREATURE,sID+"0",GetLocation(oWP));
} // create dummy
if (oMember!=OBJECT_INVALID)
{ // !OI
AdjustReputation(oPC,oMember,100);
} // !OI
else
{
SendMessageToPC(oPC,"CRITICAL AREA: A creature placed with tag "+sID+"0 could not be found and is required to set faction you control to friendly!!!");
}
if (nCreate==TRUE) DestroyObject(oMember);
} // fnSetFactionToFriendly()
void fnRecordInventory(object oPC)
{ // flush old inventory record and record inventory
object oItem;
int nCount;
object oMod=GetModule();
string sPre=GetName(oPC)+GetPCPlayerName(oPC);
string sRes;
nCount=1;
sRes=GetLocalString(oMod,sPre+IntToString(nCount));
while(GetStringLength(sRes)>0)
{ // poll and clear old inventory storage
DeleteLocalString(oMod,sPre+IntToString(nCount));
nCount++;
sRes=GetLocalString(oMod,sPre+IntToString(nCount));
} // poll and clear old inventory storage
// write current inventory
oItem=GetFirstItemInInventory(oPC);
nCount=0;
while(oItem!=OBJECT_INVALID)
{ // store PLOT items
if (GetPlotFlag(oItem)==TRUE)
{ // store this item
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item
oItem=GetNextItemInInventory(oPC);
} // store PLOT items
oItem=GetItemInSlot(INVENTORY_SLOT_ARROWS,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_BELT,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_BOLTS,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_BULLETS,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_HEAD,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_NECK,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC);
if (oItem!=OBJECT_INVALID)
{ // store this item too
sRes=GetResRef(oItem);
nCount++;
SetLocalString(oMod,sPre+IntToString(nCount),sRes);
} // store this item too
SetLocalInt(oMod,sPre+"Gold",GetGold(oPC));
} // fnRecordInventory()