Files
dsrc/sku.0/sys.server/compiled/game/script/library/player_version.scriptlib
T

150 lines
3.7 KiB
Plaintext

/**********************************************************************
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
* All Rights Reserved
*
* Title: magic_item.scriptlib
* Description: magic item reference
* @author $Author:$
* @version $Revision:$
**********************************************************************/
/***** INCLUDES ********************************************************/
include library.utils;
include java.util.Arrays;
include java.util.Vector;
/***** CONSTANTS *******************************************************/
/***** FUNCTIONS **************************************************/
/***** GENERAL FUNCTION ************************************/
/************************************************************
* @brief attempts to register a planetary map location
*
* @param obj_id self
*
* @return boolean; false on error
************************************************************/
boolean updateSkills(obj_id player)
{
if ( !isIdValid(player) || (!isPlayer(player)) )
{
return false;
}
/*
LOG("playerVersion","* updateSkills: player = " + player + " now = " + getGameTime());
string[] skillList = getSkillListingForPlayer(player);
skillList = orderSkillListForRevoke(skillList);
if ( (skillList != null) && (skillList.length > 0) )
{
for ( int x = 0; x < skillList.length; x++ )
{
//LOG("playerVersion"," attempting to revoke skill: " + skillList[x]);
CustomerServiceLog("Skill","player_version.updateSkills(): ("+self+") "+getName(self)+" has revoked skill '"+params+"' from ("+target+") "+utils.getStringName(target));
revokeSkill(player, skillList[x]);
}
zeroPlayerSkillData(player);
for ( int z = skillList.length - 1; z >= 0; z-- )
{
//LOG("playerVersion"," attempting to regrant skill: " + skillList[z]);
grantSkill(player, skillList[z]);
}
}
*/
return true;
}
void zeroPlayerSkillData(obj_id player)
{
if ( !isIdValid(player) )
{
return;
}
string[] mods = getSkillStatModListingForPlayer(player);
if ( (mods != null) && (mods.length > 0) )
{
for ( int i = 0; i < mods.length; i++ )
{
int val = getSkillStatMod(player, mods[i]);
applySkillStatisticModifier(player, mods[i], -val);
}
}
string[] cmds = getCommandListingForPlayer(player);
if ( (cmds != null) && (cmds.length > 0) )
{
for ( int i = 0; i < cmds.length; i++ )
{
revokeCommand(player, cmds[i]);
}
}
int[] schematics = getSchematicListingForPlayer(player);
if ( (schematics != null) && (schematics.length > 0) )
{
for ( int i = 0; i < schematics.length; i++ )
{
revokeSchematic(player, schematics[i]);
}
}
}
string[] orderSkillListForRevoke(string[] skillList)
{
if ( (skillList == null) || (skillList.length == 0) )
{
return null;
}
Vector ret = new Vector();
for ( int i = 0; i < skillList.length; i++ )
{
LOG("playerVersion","ordering skill = " + skillList[i]);
string[] reqs = getSkillPrerequisiteSkills(skillList[i]);
if ( (reqs == null) || (reqs.length == 0) )
{
LOG("playerVersion"," reqs = null || length = 0... appending...");
ret.add(skillList[i]);
}
else
{
int idx = ret.size();
for ( int n = 0; n < reqs.length; n++ )
{
LOG("playerVersion"," testing ret for: " + reqs[n]);
int pos = ret.indexOf(reqs[n]);
if ( pos > -1 )
{
LOG("playerVersion","** found req(" + reqs[n] + ") at ret idx = " + pos);
if ( pos < idx )
{
LOG("playerVersion","** updating insert idx to " + pos);
idx = pos;
}
}
}
LOG("playerVersion"," - inserting " + skillList[i] + " @ idx = " + idx);
ret.add(idx, skillList[i]);
}
}
if ( (ret == null) || (ret.size() == 0) )
{
return null;
}
string[] retArray = new string[ret.size()];
ret.toArray(retArray);
return retArray;
}