/********************************************************************** * 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; }