PoA_PRC8/_module/nss/savepcinfo.nss
Jaysyn904 3891e0173a Removed depreciated location saving functions.
Removed depreciated location saving functions.  Removed duplicate `prc_combatmove.nss` from top hak.  Full compile.  Updated release archive.
2024-11-07 07:42:00 -05:00

98 lines
2.7 KiB
Plaintext

////////////////////////////////////
//Created by Genisys / Guile 6/14/08
////////////////////////////////////
/*
This script frequently saves the location of all players in the NWN Database
When a playe rest they have thier location saved too, also when they die too..
NOTE: I don't know if it save's DM's location or not..
*/
////////////////////////////////////
//This checks to see if the player is polymorphed...
int IsShifterMorphed(object oPC)
{
effect ef = GetFirstEffect(oPC);
int iShifter = FALSE;
//if (GetLevelByClass(CLASS_TYPE_DRUID,oPC)>0) //Is Shifter, search the PolyEff
while( GetEffectType(ef) != EFFECT_TYPE_INVALIDEFFECT && iShifter == FALSE)
{
if ( GetEffectType(ef) == EFFECT_TYPE_POLYMORPH )
iShifter = TRUE;
ef = GetNextEffect(oPC);
}
return iShifter;
}
void main()
{
/////////SAVE LOCATION TIMER OPTION/////
//Set the Float below (180.0 = 3 minutes) to the amount of seconds
//that you want this script to execute at the designated time count.
DelayCommand(180.0, ExecuteScript("savepcinfo", OBJECT_SELF));
///////////////////////////////////////////////////////////////////////
object oPP;
object oPC;
string sName;
location lSaved;
int MULTI_PLAYER = GetLocalInt(GetModule(), "multi");
oPP = GetFirstPC();
while(GetIsObjectValid(oPP))
{
//Define the variables while in the loop as they will change EACH loop!
//sName = GetStringLeft(GetName(oPC), 20);
//Define the PC another time, this way we are not redefining oPP?
oPC = oPP;
lSaved = GetLocation(oPC);
//If they are in the guild...
/* if(GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID) <- Handled by PRC8 now
{
//Let's make sure their area is valid!
if(GetArea(GetAreaFromLocation(lSaved))!=OBJECT_INVALID)
{
object oGuild = GetItemPossessedBy(oPP, "guildstone");
//Store the PC's location, so they can come back here after relogging
if(oGuild != OBJECT_INVALID)
{
SetCampaignLocation("LOCATIONS", GetName(oGuild), lSaved, oPC);
SendMessageToPC(oPP, "Location Saved");
}
}
else
{
SendMessageToPC(oPC, "Your location was NOT saved, you need to rest to save your location.");
} */
}
//Make their death log empty again if they aren't dead..
if(!GetIsDead(oPC))
{
SetCampaignInt(GetName(GetModule()), "DEATH_LOG", 0, oPC);
}
//If the PC is not polymorphed save their character as well!
if(IsShifterMorphed(oPC)==FALSE)
{
if(GetAreaFromLocation(lSaved)!=OBJECT_INVALID)
{
if(MULTI_PLAYER)
{
ExportSingleCharacter(oPC);
SendMessageToPC(oPC, "Character Saved");
}
}
}
oPP = GetNextPC();
}
//End Script
//}