include library.factions; include library.utils; trigger OnAttach() { sendSystemMessageTestingOnly(self, "PvP debug script attached."); return SCRIPT_CONTINUE; } trigger OnSpeaking(string text) { if ( text.startsWith("pvp ") ) { java.util.StringTokenizer st = new java.util.StringTokenizer(toLower(text)); string arg = st.nextToken(); //skip first token obj_id target = getLookAtTarget(self); if ( target == null || target == obj_id.NULL_ID) { sendSystemMessageTestingOnly(self, "PVP_STATUS: no target designated. assuming target = self"); target = self; } /* if ( !isPlayer(target) ) { sendSystemMessageTestingOnly(self, "PVP_STATUS: target (" + target + " - " + getName(target) + ") is not a player. aborting..."); return SCRIPT_CONTINUE; } */ if ( st.hasMoreTokens() ) { do { arg = st.nextToken(); if ( arg.equals("status") ) { int type = pvpGetType(target); int faction = pvpGetAlignedFaction(target); string sType = "neutral"; string sFaction = "mercenary"; switch (type) { case PVPTYPE_NEUTRAL: break; case PVPTYPE_COVERT: sType = "covert"; break; case PVPTYPE_DECLARED: sType = "declared"; break; default: sType = "type_other"; break; } switch (faction) { case 0: sFaction = "mercenary"; break; case ##"rebel": sFaction = "rebel"; break; case ##"imperial": sFaction = "imperial"; break; default: sFaction = "faction_other"; break; } /*if ( (sType.equals("hosed")) || (sFaction.equals("hosed")) ) { sendSystemMessageTestingOnly(self, "pvp type/faction hosed for obj_id " + target); } else if ( type == PVPTYPE_NEUTRAL ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + ") is pvp neutral."); } else {*/ sendSystemMessageTestingOnly(self, getName(target) + "(" + target + ") is a " + sType + " " + sFaction); /*}*/ displayEnemyFlags(self, target); } else if ( arg.equals("enemyTo") ) { displayEnemyFlags(self, target); } else if ( arg.equals("unalign") || arg.equals("mercenary") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): faction set UNALIGNED"); pvpSetAlignedFaction(target, 0); } else if ( arg.equals("rebel") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): faction set REBEL"); pvpSetAlignedFaction(target, ##"rebel"); } else if ( arg.equals("imperial") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): faction set IMPERIAL"); pvpSetAlignedFaction(target, ##"imperial"); } else if ( arg.equals("neutral") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): type set NEUTRAL"); pvpMakeNeutral(target); } else if ( arg.equals("covert") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): type set COVERT"); pvpMakeCovert(target); } else if ( arg.equals("declared") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): type set DECLARED"); pvpMakeDeclared(target); } else if ( arg.equals("clear") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): clearing temp enemy flags"); pvpRemoveAllTempEnemyFlags(target); } else if ( arg.equals("faction") ) { sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): " + factions.getFaction(target)); } else if ( arg.equals("nonaggressive") ) { pvpMakeNeutral(target); pvpSetAlignedFaction(target, ##"nonaggressive"); pvpMakeDeclared(target); sendSystemMessageTestingOnly(self, getName(target) + "(" + target + "): " + factions.getFaction(target)); } } while (st.hasMoreTokens()); } } return SCRIPT_CONTINUE; } boolean displayEnemyFlags(obj_id player, obj_id target) { if (!isIdValid(target)) return false; String[] enemies = pvpGetEnemyFlags(target); if (enemies != null) { for (int i = 0; i < enemies.length; ++i) { java.util.StringTokenizer st = new java.util.StringTokenizer(enemies[i]); string sTarget = st.nextToken(); string sTargetName = getPlayerName(utils.stringToObjId(sTarget)); string sTefFac = st.nextToken(); int iTefFac = utils.stringToInt(sTefFac); string sTefFacName = ""; if (iTefFac == ##"battlefield") sTefFacName = "battlefield"; else if (iTefFac == ##"duel") sTefFacName = "duel"; else if (iTefFac == ##"bountyduel") sTefFacName = "bountyduel"; else if (iTefFac == ##"nonaggressive") sTefFacName = "nonaggressive"; else if (iTefFac == ##"unattackable") sTefFacName = "unattackable"; else if (iTefFac == ##"bountytarget") sTefFacName = "bountytarget"; else if (iTefFac == ##"guildwarcooldownperiod") sTefFacName = "guildwarcooldownperiod"; else if (iTefFac == ##"imperial") sTefFacName = "imperial"; else if (iTefFac == ##"rebel") sTefFacName = "rebel"; else if (iTefFac == ##"bubblecombat") sTefFacName = "bubblecombat"; string sExpiration = st.nextToken(); sendSystemMessageTestingOnly(player, "(" + player + " " + getName(player) + ") Enemy Flag: [" + sTarget + " (" + sTargetName + "), " + sTefFac + " (" + sTefFacName + "), " + sExpiration + "ms" + "]"); } } return true; }