/** Method refreshStats. */ @Override protected void refreshStats() { _maxCp = set(SEND_STATUS_INFO, _maxCp, _activeChar.getMaxCp()); super.refreshStats(); _maxLoad = set(SEND_CHAR_INFO | SEND_MAX_LOAD, _maxLoad, _activeChar.getMaxLoad()); _curLoad = set(SEND_CUR_LOAD, _curLoad, _activeChar.getCurrentLoad()); for (Element e : Element.VALUES) { _attackElement[e.getId()] = set(SEND_CHAR_INFO, _attackElement[e.getId()], _activeChar.getAttack(e)); _defenceElement[e.getId()] = set(SEND_CHAR_INFO, _defenceElement[e.getId()], _activeChar.getDefence(e)); } _exp = set(SEND_CHAR_INFO, _exp, _activeChar.getExp()); _sp = set(SEND_CHAR_INFO, _sp, _activeChar.getIntSp()); _pk = set(SEND_CHAR_INFO, _pk, _activeChar.getPkKills()); _pvp = set(SEND_CHAR_INFO, _pvp, _activeChar.getPvpKills()); _fame = set(SEND_CHAR_INFO, _fame, _activeChar.getFame()); _karma = set(BROADCAST_KARMA, _karma, _activeChar.getKarma()); _inventory = set(SEND_STORAGE_INFO, _inventory, _activeChar.getInventoryLimit()); _warehouse = set(SEND_STORAGE_INFO, _warehouse, _activeChar.getWarehouseLimit()); _clan = set(SEND_STORAGE_INFO, _clan, Config.WAREHOUSE_SLOTS_CLAN); _trade = set(SEND_STORAGE_INFO, _trade, _activeChar.getTradeLimit()); _recipeDwarven = set(SEND_STORAGE_INFO, _recipeDwarven, _activeChar.getDwarvenRecipeLimit()); _recipeCommon = set(SEND_STORAGE_INFO, _recipeCommon, _activeChar.getCommonRecipeLimit()); _cubicsHash = set(BROADCAST_CHAR_INFO, _cubicsHash, CollectionUtils.hashCode(_activeChar.getCubics())); _partyRoom = set( BROADCAST_CHAR_INFO, _partyRoom, (_activeChar.getMatchingRoom() != null) && (_activeChar.getMatchingRoom().getType() == MatchingRoom.PARTY_MATCHING) && (_activeChar.getMatchingRoom().getLeader() == _activeChar) ? _activeChar.getMatchingRoom().getId() : 0); _team = set(BROADCAST_CHAR_INFO2, _team, _activeChar.getTeam()); _title = set(BROADCAST_CHAR_INFO, _title, _activeChar.getTitle()); }
/** * Method readData. * * @param rootElement org.dom4j.Element * @throws Exception */ @Override protected void readData(org.dom4j.Element rootElement) throws Exception { for (Iterator<org.dom4j.Element> itemIterator = rootElement.elementIterator(); itemIterator.hasNext(); ) { org.dom4j.Element itemElement = itemIterator.next(); StatsSet set = new StatsSet(); set.set("item_id", itemElement.attributeValue("id")); set.set("name", itemElement.attributeValue("name")); set.set("add_name", itemElement.attributeValue("add_name", StringUtils.EMPTY)); int slot = 0; for (Iterator<org.dom4j.Element> subIterator = itemElement.elementIterator(); subIterator.hasNext(); ) { org.dom4j.Element subElement = subIterator.next(); String subName = subElement.getName(); if (subName.equalsIgnoreCase("set")) { set.set(subElement.attributeValue("name"), subElement.attributeValue("value")); } else if (subName.equalsIgnoreCase("equip")) { for (Iterator<org.dom4j.Element> slotIterator = subElement.elementIterator(); slotIterator.hasNext(); ) { org.dom4j.Element slotElement = slotIterator.next(); Bodypart bodypart = Bodypart.valueOf(slotElement.attributeValue("id")); if (bodypart.getReal() != null) { slot = bodypart.mask(); } else { slot |= bodypart.mask(); } } } } set.set("bodypart", slot); ItemTemplate template = null; try { if (itemElement.getName().equalsIgnoreCase("weapon")) { if (!set.containsKey("class")) { if ((slot & ItemTemplate.SLOT_L_HAND) > 0) { set.set("class", ItemTemplate.ItemClass.ARMOR); } else { set.set("class", ItemTemplate.ItemClass.WEAPON); } } template = new WeaponTemplate(set); } } catch (Exception e) { warn("Fail create item: " + set.get("item_id"), e); continue; } for (Iterator<org.dom4j.Element> subIterator = itemElement.elementIterator(); subIterator.hasNext(); ) { org.dom4j.Element subElement = subIterator.next(); String subName = subElement.getName(); if (subName.equalsIgnoreCase("for")) { parseFor(subElement, template); } else if (subName.equalsIgnoreCase("triggers")) { parseTriggers(subElement, template); } else if (subName.equalsIgnoreCase("skills")) { for (Iterator<org.dom4j.Element> nextIterator = subElement.elementIterator(); nextIterator.hasNext(); ) { org.dom4j.Element nextElement = nextIterator.next(); int id = Integer.parseInt(nextElement.attributeValue("id")); int level = Integer.parseInt(nextElement.attributeValue("level")); Skill skill = SkillTable.getInstance().getInfo(id, level); if (skill != null) { template.attachSkill(skill); } else { info( "Skill not found(" + id + "," + level + ") for item:" + set.getObject("item_id") + "; file:" + getCurrentFileName()); } } } else if (subName.equalsIgnoreCase("enchant4_skill")) { int id = Integer.parseInt(subElement.attributeValue("id")); int level = Integer.parseInt(subElement.attributeValue("level")); Skill skill = SkillTable.getInstance().getInfo(id, level); if (skill != null) { template.setEnchant4Skill(skill); } } else if (subName.equalsIgnoreCase("unequip_skill")) { int id = Integer.parseInt(subElement.attributeValue("id")); int level = Integer.parseInt(subElement.attributeValue("level")); Skill skill = SkillTable.getInstance().getInfo(id, level); if (skill != null) { template.setUnequipeSkill(skill); } } else if (subName.equalsIgnoreCase("cond")) { Condition condition = parseFirstCond(subElement); if (condition != null) { int msgId = parseNumber(subElement.attributeValue("msgId")).intValue(); condition.setSystemMsg(msgId); template.setCondition(condition); } } else if (subName.equalsIgnoreCase("attributes")) { int[] attributes = new int[6]; for (Iterator<org.dom4j.Element> nextIterator = subElement.elementIterator(); nextIterator.hasNext(); ) { org.dom4j.Element nextElement = nextIterator.next(); Element element; if (nextElement.getName().equalsIgnoreCase("attribute")) { element = Element.getElementByName(nextElement.attributeValue("element")); attributes[element.getId()] = Integer.parseInt(nextElement.attributeValue("value")); } } template.setBaseAtributeElements(attributes); } else if (subName.equalsIgnoreCase("enchant_options")) { for (Iterator<org.dom4j.Element> nextIterator = subElement.elementIterator(); nextIterator.hasNext(); ) { org.dom4j.Element nextElement = nextIterator.next(); if (nextElement.getName().equalsIgnoreCase("level")) { int val = Integer.parseInt(nextElement.attributeValue("val")); int i = 0; int[] options = new int[3]; for (org.dom4j.Element optionElement : nextElement.elements()) { OptionDataTemplate optionData = OptionDataHolder.getInstance() .getTemplate(Integer.parseInt(optionElement.attributeValue("id"))); if (optionData == null) { error( "Not found option_data for id: " + optionElement.attributeValue("id") + "; item_id: " + set.get("item_id")); continue; } options[i++] = optionData.getId(); } template.addEnchantOptions(val, options); } } } } getHolder().addItem(template); } }