use of delta.games.lotro.lore.items.ArmourType in project lotro-tools by dmorcellet.
the class ItemNormalization method normalizeArmours.
private Item normalizeArmours(Item item) {
int id = item.getIdentifier();
String category = item.getSubCategory();
Armour armour = null;
if ("Heavy Armour".equals(category)) {
armour = checkArmour(item);
ArmourType previous = armour.getArmourType();
if ((previous != null) && (previous != ArmourType.HEAVY)) {
System.out.println("ID: " + id + ": armour type conflict: was=" + previous + ", should be=" + ArmourType.HEAVY);
}
armour.setArmourType(ArmourType.HEAVY);
armour.setSubCategory(null);
} else if ("Medium Armour".equals(category)) {
armour = checkArmour(item);
ArmourType previous = armour.getArmourType();
if ((previous != null) && (previous != ArmourType.MEDIUM)) {
System.out.println("ID: " + id + ": armour type conflict: was=" + previous + ", should be=" + ArmourType.MEDIUM);
}
armour.setArmourType(ArmourType.MEDIUM);
armour.setSubCategory(null);
} else if ("Light Armour".equals(category)) {
armour = checkArmour(item);
ArmourType previous = armour.getArmourType();
if ((previous != null) && (previous != ArmourType.LIGHT)) {
System.out.println("ID: " + id + ": armour type conflict: was=" + previous + ", should be=" + ArmourType.LIGHT);
}
armour.setArmourType(ArmourType.LIGHT);
armour.setSubCategory(null);
} else if ("Shield".equals(category)) {
armour = checkArmour(item);
ArmourType previous = armour.getArmourType();
if ((previous == ArmourType.LIGHT) || (previous == null)) {
armour.setArmourType(ArmourType.SHIELD);
}
armour.setSubCategory(null);
armour.setEquipmentLocation(EquipmentLocation.OFF_HAND);
armour.removeProperty(ItemPropertyNames.LEGACY_CATEGORY);
armour.removeProperty(ItemPropertyNames.TULKAS_CATEGORY);
} else if ("Heavy Shield".equals(category)) {
armour = checkArmour(item);
armour.setArmourType(ArmourType.HEAVY_SHIELD);
armour.setSubCategory(null);
armour.setEquipmentLocation(EquipmentLocation.OFF_HAND);
armour.removeProperty(ItemPropertyNames.LEGACY_CATEGORY);
armour.removeProperty(ItemPropertyNames.TULKAS_CATEGORY);
} else if ("Warden's Shield".equals(category)) {
armour = checkArmour(item);
armour.setArmourType(ArmourType.WARDEN_SHIELD);
armour.setSubCategory(null);
armour.setEquipmentLocation(EquipmentLocation.OFF_HAND);
armour.removeProperty(ItemPropertyNames.LEGACY_CATEGORY);
armour.removeProperty(ItemPropertyNames.TULKAS_CATEGORY);
} else if ("33".equals(category)) {
armour = checkArmour(item);
ArmourType type = armour.getArmourType();
if (type == null) {
String name = armour.getName();
if (name.toLowerCase().contains("warden")) {
armour.setArmourType(ArmourType.WARDEN_SHIELD);
} else if ((name.indexOf("Heavy Shield") != -1) || (name.indexOf("Bulwark") != -1) || (name.indexOf("Battle-shield") != -1)) {
armour.setArmourType(ArmourType.HEAVY_SHIELD);
} else {
// Default as shield
armour.setArmourType(ArmourType.SHIELD);
}
}
type = armour.getArmourType();
if (type != null) {
armour.setSubCategory(null);
armour.setEquipmentLocation(EquipmentLocation.OFF_HAND);
armour.removeProperty(ItemPropertyNames.LEGACY_CATEGORY);
armour.removeProperty(ItemPropertyNames.TULKAS_CATEGORY);
if (type == ArmourType.WARDEN_SHIELD) {
armour.setRequiredClass(CharacterClass.WARDEN);
}
}
}
Item ret = (armour != null) ? armour : item;
ret = normalizeArmour(ret, "3", "Chest", EquipmentLocation.CHEST);
ret = normalizeArmour(ret, "5", "Hands", EquipmentLocation.HAND);
ret = normalizeArmour(ret, "6", "Shoulders", EquipmentLocation.SHOULDER);
ret = normalizeArmour(ret, "7", "Head", EquipmentLocation.HEAD);
ret = normalizeArmour(ret, "15", "Leggings", EquipmentLocation.LEGS);
ret = normalizeArmour(ret, "23", "Boots", EquipmentLocation.FEET);
ret = normalizeArmour(ret, "45", "Cloak", EquipmentLocation.BACK);
// => Shield (any type)
return ret;
}
use of delta.games.lotro.lore.items.ArmourType in project lotro-tools by dmorcellet.
the class ItemPageParser method parseItemDescription.
private void parseItemDescription(Element itemTooltip) {
// Name
String name = findName(itemTooltip);
// Find out type of item
Armour armour = null;
// Armor?
// <div class="itemarmor">1130 Armour Value</div>
String armorStr = getTagContent(itemTooltip, "itemarmor");
Weapon weapon = null;
// Weapon?
// <div class="itemdps">126.5 DPS</div>
String dpsStr = getTagContent(itemTooltip, "itemdps");
if (armorStr != null) {
// Armour!
armour = new Armour();
_item = armour;
Integer armourValue = getArmour(armorStr);
if (armourValue != null) {
armour.setArmourValue(armourValue.intValue());
}
String armourTypeStr = getTagContent(itemTooltip, "itemtype");
ArmourType armourType = ArmourType.getArmourTypeByName(armourTypeStr);
if (armourType == null) {
// Assume light armour...
armourType = ArmourType.LIGHT;
_logger.warn("Unknown armour type: " + armourTypeStr + " (name=" + name + ")");
}
armour.setArmourType(armourType);
} else if (dpsStr != null) {
// Weapon!
weapon = new Weapon();
_item = weapon;
Float dpsValue = getDPS(dpsStr);
if (dpsValue != null) {
weapon.setDPS(dpsValue.floatValue());
}
String weaponTypeStr = getTagContent(itemTooltip, "itemtype");
if (weaponTypeStr != null) {
WeaponType type = WeaponType.getWeaponTypeByName(weaponTypeStr);
if (type != null) {
weapon.setWeaponType(type);
} else {
_logger.warn("Unknown weapon type: " + weaponTypeStr + " (name=" + name + ")");
}
}
} else {
_item = new Item();
}
// Icon
// <div class="itemicon"><img src="http://content.turbine.com/sites/lorebook.lotro.com/images/icons/item/tool/eq_c_craft_tool_voc_explorer_tier6.png"></div>
String url = getIconURL(itemTooltip);
// Name
_item.setName(name);
if (url != null) {
_item.setIconURL(url);
}
// Item sub-category
// <div class="itemtype">Craft Tool</div>
// TODO: duplicated with weapon type and armor type...
String subCategory = getTagContent(itemTooltip, "itemtype");
_item.setSubCategory(subCategory);
// Uniqueness
// <div class="itemunique"></div>
String uniqueStr = getTagContent(itemTooltip, "itemunique");
if ("Unique".equalsIgnoreCase(uniqueStr)) {
_item.setUnique(true);
}
// Item bind
// <div class="itembind">Bind on Equip</div>
String itemBindStr = getTagContent(itemTooltip, "itembind");
ItemBinding binding = getBinding(itemBindStr);
_item.setBinding(binding);
// Damage:
// <div class="itemdamage">197 - 359 Common Damage</div>
String damage = getTagContent(itemTooltip, "itemdamage");
if (damage != null) {
try {
if (damage.endsWith("Damage")) {
String tmp = damage.substring(0, damage.length() - 6).trim();
String[] split = tmp.split(" ", 4);
int minDamage = Integer.parseInt(split[0]);
int maxDamage = Integer.parseInt(split[2]);
String typeStr = split[3];
DamageType type = DamageType.getDamageTypeByName(typeStr);
if (type == null) {
type = DamageType.COMMON;
_logger.warn("Unmanaged damage type [" + typeStr + "]");
}
weapon.setMinDamage(minDamage);
weapon.setMaxDamage(maxDamage);
weapon.setDamageType(type);
}
} catch (Exception e) {
_logger.error("Damage parsing exception on [" + damage + "]", e);
}
}
// Bonuses
// <div class="itemes">
// <div class="iteme">
// <div>-3s Forester Chopping Duration</div>
// </div>
// ...
// </div>
List<String> bonuses = new ArrayList<String>();
Element itemsContainer = JerichoHtmlUtils.findElementByTagNameAndAttributeValue(itemTooltip, HTMLElementName.DIV, "class", "itemes");
if (itemsContainer != null) {
List<Element> itemsList = JerichoHtmlUtils.findElementsByTagNameAndAttributeValue(itemsContainer, HTMLElementName.DIV, "class", "iteme");
for (Element item : itemsList) {
List<Element> children = item.getChildElements();
if (children != null) {
for (Element child : children) {
String line = JerichoHtmlUtils.getTagContents(child, HTMLElementName.DIV);
bonuses.add(line);
}
}
}
}
_item.setBonus(bonuses);
// TODO <div class="itemmsi">+5 Damage to The Dead</div>
String msi = getTagContent(itemTooltip, "itemmsi");
if ((msi != null) && (msi.length() > 0)) {
_logger.warn("Unmanaged itemmsi [" + msi + "] for " + _item.getName());
}
// Item set
ItemsSet set = parseItemsSet(itemTooltip);
if (set != null) {
_item.setSetKey(set.getKey());
_item.setItemsSet(set);
}
// Possible legacies TODO
/*
<div class="itemes">Possible Initial Legacies:</div>
<div>Focus Bow Critical Multiplier (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>Focus Bow Power Cost (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>
Induction Bow Critical Multiplier (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>
<div>
Merciful Shot Cooldown (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>
Quick Shot Critical Chance (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>
Ranged Skill Block Chance Modifier (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>
Ranged Skill Evade Chance Modifier (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
<div>
Strength Quick Shot Slow (Tier(s):
<span class="legacytier rare">4</span>
,
<span class="legacytier incomparable">5</span>
,
<span class="legacytier incomparable">6</span>
)
</div>
*
*/
// Item durability:
// - durability
// <div class="itemdurability">Durability 60 / 60</div>
String durabilityStr = getTagContent(itemTooltip, "itemdurability");
Integer durability = getDurability(durabilityStr);
_item.setDurability(durability);
// - sturdiness
// <div class="itemsturdiness">Tough</div>
String sturdinessStr = getTagContent(itemTooltip, "itemsturdiness");
ItemSturdiness sturdiness = getSturdiness(sturdinessStr);
_item.setSturdiness(sturdiness);
// Item requirements
List<Element> requirements = JerichoHtmlUtils.findElementsByTagNameAndAttributeValue(itemTooltip, HTMLElementName.DIV, "class", "itemrequirement");
for (Element requirement : requirements) {
// String contents=getTagContent(requirement,"itemrequirement");
String contents = CharacterReference.decodeCollapseWhiteSpace(requirement.getContent());
if (contents.contains("Minimum Level")) {
// - minimum level
// <div class="itemrequirement">Minimum Level: 55</div>
String minLevelStr = getTagContent(itemTooltip, "itemrequirement");
Integer minLevel = getMinLevel(minLevelStr);
_item.setMinLevel(minLevel);
} else if (contents.contains("Class")) {
// - class
String className = parseClassRequirement(requirement);
if (className != null) {
CharacterClass cClass = CharacterClass.getByName(className);
_item.setRequiredClass(cClass);
}
}
}
// Description
// <div class="itemdescription">A collection of indispensable tools for tailors, foresters, and prospectors.</div>
// String description=getTagContent(itemTooltip,"");
Element element = JerichoHtmlUtils.findElementByTagNameAndAttributeValue(itemTooltip, HTMLElementName.DIV, "class", "itemdescription");
if (element != null) {
String description = JerichoHtmlUtils.getTextFromTag(element);
_item.setDescription(description);
}
// Money
// <div class="itemworth">
Element worth = JerichoHtmlUtils.findElementByTagNameAndAttributeValue(itemTooltip, HTMLElementName.DIV, "class", "itemworth");
if (worth != null) {
Money m = parseMoneyReward(worth);
_item.setValue(m);
}
// Stackability
// <div class="itemstacksize">Stacks to 100</div>
String stackabilityStr = getTagContent(itemTooltip, "itemstacksize");
Integer stackSize = getStackSize(stackabilityStr);
_item.setStackMax(stackSize);
/*
// Item category: Armour, Tool, ...
private ItemCategory _category;
// Item identifier: "Jacket_of_the_Impossible_Shot", ...
private String _id;
*/
}
use of delta.games.lotro.lore.items.ArmourType in project lotro-tools by dmorcellet.
the class TulkasItemsLoader2 method buildItem.
private Item buildItem(Integer id, HashMap<Object, Object> map) {
/*
[1879300219]={
[1]={[1]="Thirteenth Exquisite Captain's Earring of Glittering Caves";[2]="";[3]="";[4]="";};
[2]=85;[3]=136;[4]=5;[5]=1;
[6]={[12]=435;[9]=161;[1]=140;[7]=184;[14]=435;};
[14]=24;
[15]={[1]=
{[1]="Stalwart Captain's Jewelry of Helm's Deep";[2]="";[3]="";[4]="";};
[2]={1879294461,1879295053,1879299996,1879300219};};};
*/
@SuppressWarnings("unchecked") HashMap<Object, Object> map1 = (HashMap<Object, Object>) map.get(Integer.valueOf(1));
// label US
String name = (String) map1.get(Integer.valueOf(1));
WeaponType weaponType = null;
EquipmentLocation loc = null;
// slot
Integer locValue = (Integer) map.get(Integer.valueOf(5));
// 5=armor piece: 12=boots, 11=leggings, 10=gauntlets, 8=cloak, 7=shoulders, 6=Head
if (locValue != null) {
switch(locValue.intValue()) {
// Jewels
case 1:
loc = EquipmentLocation.EAR;
break;
case 2:
loc = EquipmentLocation.NECK;
break;
case 3:
loc = EquipmentLocation.POCKET;
break;
case 4:
loc = EquipmentLocation.WRIST;
break;
case 5:
loc = EquipmentLocation.FINGER;
break;
// Armours
case 6:
loc = EquipmentLocation.HEAD;
break;
case 7:
loc = EquipmentLocation.SHOULDER;
break;
case 8:
loc = EquipmentLocation.BACK;
break;
case 9:
loc = EquipmentLocation.CHEST;
break;
case 10:
loc = EquipmentLocation.HAND;
break;
case 11:
loc = EquipmentLocation.LEGS;
break;
case 12:
loc = EquipmentLocation.FEET;
break;
// Weapons/tools/class items
case 13:
loc = EquipmentLocation.MAIN_HAND;
break;
case 14:
loc = EquipmentLocation.OFF_HAND;
break;
case 15:
loc = EquipmentLocation.RANGED_ITEM;
break;
// Rune-stone
case 16:
{
loc = EquipmentLocation.MAIN_HAND;
weaponType = WeaponType.RUNE_STONE;
}
break;
default:
{
_logger.warn("Unmanaged loc value: " + locValue);
}
}
}
Item ret = null;
if (TulkasConstants.isArmor(loc)) {
Armour a = new Armour();
// 8=armour value
Integer armourValue = (Integer) map.get(Integer.valueOf(8));
if (armourValue != null) {
a.setArmourValue(armourValue.intValue());
} else {
_logger.warn("No armour value!");
}
// 7=armor type: 1=light, 2=medium, 3=heavy
Integer armourTypeInt = (Integer) map.get(Integer.valueOf(7));
ArmourType armourType = null;
if (armourTypeInt != null) {
switch(armourTypeInt.intValue()) {
case 1:
armourType = ArmourType.LIGHT;
break;
case 2:
armourType = ArmourType.MEDIUM;
break;
case 3:
armourType = ArmourType.HEAVY;
break;
default:
{
_logger.warn("Unmanaged armour type : " + armourTypeInt);
}
}
}
armourTypeInt = (Integer) map.get(Integer.valueOf(9));
if (armourTypeInt != null) {
switch(armourTypeInt.intValue()) {
case 14:
armourType = ArmourType.SHIELD;
break;
case 15:
armourType = ArmourType.HEAVY_SHIELD;
break;
case 16:
armourType = ArmourType.WARDEN_SHIELD;
break;
default:
{
_logger.warn("Unmanaged armour type : " + armourTypeInt);
}
}
}
if (loc == EquipmentLocation.BACK) {
armourType = ArmourType.LIGHT;
}
if (armourType == null) {
_logger.warn("Unknown armour type: [" + armourTypeInt + "] (name=" + name + ")");
}
a.setArmourType(armourType);
ret = a;
} else {
Integer weaponTypeInt = (Integer) map.get(Integer.valueOf(9));
if (weaponTypeInt != null) {
switch(weaponTypeInt.intValue()) {
case 1:
weaponType = WeaponType.ONE_HANDED_AXE;
loc = EquipmentLocation.MAIN_HAND;
break;
case 2:
weaponType = WeaponType.TWO_HANDED_AXE;
loc = EquipmentLocation.MAIN_HAND;
break;
case 3:
weaponType = WeaponType.ONE_HANDED_CLUB;
loc = EquipmentLocation.MAIN_HAND;
break;
case 4:
weaponType = WeaponType.TWO_HANDED_CLUB;
loc = EquipmentLocation.MAIN_HAND;
break;
case 5:
weaponType = WeaponType.DAGGER;
loc = EquipmentLocation.MAIN_HAND;
break;
case 6:
weaponType = WeaponType.HALBERD;
loc = EquipmentLocation.MAIN_HAND;
break;
case 7:
weaponType = WeaponType.ONE_HANDED_HAMMER;
loc = EquipmentLocation.MAIN_HAND;
break;
case 8:
weaponType = WeaponType.TWO_HANDED_HAMMER;
loc = EquipmentLocation.MAIN_HAND;
break;
case 9:
weaponType = WeaponType.ONE_HANDED_MACE;
loc = EquipmentLocation.MAIN_HAND;
break;
case 10:
weaponType = WeaponType.SPEAR;
loc = EquipmentLocation.MAIN_HAND;
break;
case 11:
weaponType = WeaponType.STAFF;
loc = EquipmentLocation.MAIN_HAND;
break;
case 12:
weaponType = WeaponType.ONE_HANDED_SWORD;
loc = EquipmentLocation.MAIN_HAND;
break;
case 13:
weaponType = WeaponType.TWO_HANDED_SWORD;
loc = EquipmentLocation.MAIN_HAND;
break;
case 17:
weaponType = WeaponType.BOW;
loc = EquipmentLocation.RANGED_ITEM;
break;
case 18:
weaponType = WeaponType.CROSSBOW;
loc = EquipmentLocation.RANGED_ITEM;
break;
case 19:
weaponType = WeaponType.JAVELIN;
loc = EquipmentLocation.RANGED_ITEM;
break;
// Instrument
case 20:
weaponType = null;
loc = EquipmentLocation.RANGED_ITEM;
break;
// Chisel
case 21:
weaponType = null;
loc = EquipmentLocation.RANGED_ITEM;
break;
// Riffler
case 22:
weaponType = null;
loc = EquipmentLocation.RANGED_ITEM;
break;
default:
_logger.warn("ID=" + id + ": unmanaged weapon type: " + weaponTypeInt.intValue());
}
}
if (weaponType != null) {
// weapon:
Weapon w = new Weapon();
w.setWeaponType(weaponType);
// [10]=Min damage;
Integer minDMG = (Integer) map.get(Integer.valueOf(10));
if (minDMG != null) {
w.setMinDamage(minDMG.intValue());
}
// [11]=Max damage;
Integer maxDMG = (Integer) map.get(Integer.valueOf(11));
if (maxDMG != null) {
w.setMaxDamage(maxDMG.intValue());
}
// [12]=DPS;
Object dpsValue = map.get(Integer.valueOf(12));
if (dpsValue instanceof Float) {
w.setDPS(((Float) dpsValue).floatValue());
} else if (dpsValue instanceof Integer) {
w.setDPS(((Integer) dpsValue).floatValue());
}
// Damage type
DamageType type = null;
Integer damageTypeInt = (Integer) map.get(Integer.valueOf(13));
if (damageTypeInt != null) {
switch(damageTypeInt.intValue()) {
case 1:
type = DamageType.COMMON;
break;
case 2:
type = DamageType.BELERIAND;
break;
case 3:
type = DamageType.WESTERNESSE;
break;
case 4:
type = DamageType.ANCIENT_DWARF;
break;
case 5:
type = DamageType.FIRE;
break;
case 6:
type = DamageType.LIGHT;
break;
case 7:
type = DamageType.LIGHTNING;
break;
case 8:
type = DamageType.FROST;
break;
}
}
if (type == null) {
type = DamageType.COMMON;
_logger.warn("Unmanaged damage type [" + damageTypeInt + "]");
}
w.setDamageType(type);
ret = w;
}
if (ret == null) {
ret = new Item();
}
}
// Name
ret.setName(name);
// Slot
ret.setEquipmentLocation(loc);
// Required level
Integer requiredLevel = (Integer) map.get(Integer.valueOf(2));
if ((requiredLevel != null) && (requiredLevel.intValue() > 0)) {
ret.setMinLevel(requiredLevel);
}
// Item level
Integer itemLevel = (Integer) map.get(Integer.valueOf(3));
if ((itemLevel != null) && (itemLevel.intValue() > 0)) {
ret.setItemLevel(itemLevel);
}
// Class
CharacterClass cClass = null;
Integer classInt = (Integer) map.get(Integer.valueOf(14));
if (classInt != null) {
switch(classInt.intValue()) {
case 40:
cClass = CharacterClass.BURGLAR;
break;
case 24:
cClass = CharacterClass.CAPTAIN;
break;
case 172:
cClass = CharacterClass.CHAMPION;
break;
case 23:
cClass = CharacterClass.GUARDIAN;
break;
case 162:
cClass = CharacterClass.HUNTER;
break;
case 185:
cClass = CharacterClass.LORE_MASTER;
break;
case 31:
cClass = CharacterClass.MINSTREL;
break;
case 193:
cClass = CharacterClass.RUNE_KEEPER;
break;
case 194:
cClass = CharacterClass.WARDEN;
break;
default:
{
_logger.warn("Unmanaged class [" + classInt + "]");
}
}
}
if (cClass != null) {
ret.setRequiredClass(cClass);
}
// Quality
ItemQuality quality = ItemQuality.COMMON;
Integer qualityInt = (Integer) map.get(Integer.valueOf(4));
if (qualityInt != null) {
switch(qualityInt.intValue()) {
case 1:
quality = ItemQuality.COMMON;
break;
case 2:
quality = ItemQuality.UNCOMMON;
break;
case 3:
quality = ItemQuality.RARE;
break;
case 4:
quality = ItemQuality.INCOMPARABLE;
break;
case 5:
quality = ItemQuality.LEGENDARY;
break;
default:
{
_logger.warn("ID: " + id + ": unmanaged quality [" + qualityInt + "]");
}
}
} else {
_logger.warn("ID: " + id + ": no quality!");
}
ret.setQuality(quality);
// Bonus
@SuppressWarnings("unchecked") HashMap<Integer, Object> bonuses = (HashMap<Integer, Object>) map.get(Integer.valueOf(6));
if (bonuses != null) {
BasicStatsSet stats = ret.getStats();
List<Integer> keys = new ArrayList<Integer>(bonuses.keySet());
Collections.sort(keys);
for (Integer key : keys) {
int index = key.intValue();
if ((index >= 0) && (index < TulkasConstants.BONUS_NAMES.length)) {
String bonusName = TulkasConstants.BONUS_NAMES[index];
Object bonusValue = bonuses.get(key);
STAT stat = TulkasConstants.STATS[index];
if (stat != null) {
FixedDecimalsInteger value = TulkasValuesUtils.fromObjectValue(bonusValue);
stats.setStat(stat, value);
} else {
_logger.warn("No stat associated to bonus: " + bonusName);
/*
BonusType type=BonusType.getByName(bonusName);
Bonus bonus=new Bonus(type,BONUS_OCCURRENCE.ALWAYS);
Object value=type.buildValue(bonusValue);
bonus.setValue(value);
bonusMgr.add(bonus);
ret.getBonus().add(bonusName+" : "+bonuses.get(key));
*/
}
bonuses.remove(key);
} else {
_logger.warn("Unmanaged index: " + index);
}
}
if (bonuses.size() > 0) {
_logger.warn("Unmanaged bonuses: " + bonuses);
}
}
return ret;
}
use of delta.games.lotro.lore.items.ArmourType in project lotro-tools by dmorcellet.
the class ItemStatistics method showStatistics.
private void showStatistics() {
// Items
System.out.println("Items: " + _itemsCount);
// - qualities
System.out.println("- by quality:");
List<ItemQuality> itemQualities = new ArrayList<ItemQuality>(_itemsByQuality.keySet());
Collections.sort(itemQualities, new ItemQualityComparator());
for (ItemQuality itemQuality : itemQualities) {
IntegerHolder count = _itemsByQuality.get(itemQuality);
System.out.println("\t" + itemQuality + ": " + count);
}
// - sub-categories
System.out.println("- by sub-category:");
List<String> itemSubCategories = new ArrayList<String>(_itemsBySubCategory.keySet());
Collections.sort(itemSubCategories);
for (String itemSubCategory : itemSubCategories) {
IntegerHolder count = _itemsBySubCategory.get(itemSubCategory);
System.out.println("\t" + itemSubCategory + ": " + count);
}
// - slot
System.out.println("- by slot:");
List<EquipmentLocation> locations = new ArrayList<EquipmentLocation>(_itemsBySlot.keySet());
Collections.sort(locations, new EquipmentLocationComparator());
for (EquipmentLocation location : locations) {
IntegerHolder count = _itemsBySlot.get(location);
System.out.println("\t" + location + ": " + count);
List<String> names = _itemNamesBySlot.get(location);
if (location != null) {
Collections.sort(names);
for (String name : names) {
System.out.println("\t\t" + name);
}
}
}
// - scaling rules
System.out.println("- by scaling rules:");
List<String> scalingRules = new ArrayList<String>(_scalingRules.keySet());
Collections.sort(scalingRules);
for (String scalingRule : scalingRules) {
List<String> names = _scalingRules.get(scalingRule);
System.out.println("\t" + scalingRule + ": " + names.size());
if (names.size() < 300) {
Collections.sort(names);
for (String name : names) {
System.out.println("\t\t" + name);
}
}
}
// Armours
System.out.println("Armours: " + _armoursCount);
List<ArmourType> armourTypes = new ArrayList<ArmourType>(_armoursByType.keySet());
Collections.sort(armourTypes, new ArmourTypeComparator());
for (ArmourType armourType : armourTypes) {
IntegerHolder count = _armoursByType.get(armourType);
System.out.println("\t" + armourType + ": " + count);
}
// Weapons
System.out.println("Weapons: " + _weaponsCount);
List<WeaponType> weaponTypes = new ArrayList<WeaponType>(_weaponsByType.keySet());
Collections.sort(weaponTypes, new WeaponTypeComparator());
for (WeaponType weaponType : weaponTypes) {
IntegerHolder count = _weaponsByType.get(weaponType);
System.out.println("\t" + weaponType + ": " + count);
}
}
use of delta.games.lotro.lore.items.ArmourType in project lotro-tools by dmorcellet.
the class ScalingParametersFinder method findScalingParameters.
private void findScalingParameters(Item item) {
BasicStatsSet stats = item.getStats();
if (stats.getStatsCount() == 0) {
System.err.println("Cannot manage item: " + item + ": no stats");
return;
}
Integer itemLevel = item.getItemLevel();
if (itemLevel == null) {
System.err.println("Cannot manage item: " + item + ": no item level");
return;
}
SliceCountFinder converter = _converters.get(itemLevel);
if (converter == null) {
converter = new SliceCountFinder(itemLevel.intValue());
_converters.put(itemLevel, converter);
}
if (item instanceof Armour) {
Armour armour = (Armour) item;
int armourValue = armour.getArmourValue();
stats.setStat(STAT.ARMOUR, new FixedDecimalsInteger(armourValue));
}
SlicesBasedItemStatsProvider provider = new SlicesBasedItemStatsProvider();
for (STAT stat : stats.getStats()) {
FixedDecimalsInteger value = stats.getStat(stat);
int statValue = value.getInternalValue();
ItemStatSliceData slice = null;
// Specific case for armour
if (stat == STAT.ARMOUR) {
ArmourDescriptionFinder armourConverter = _armourConverters.get(itemLevel);
if (armourConverter == null) {
armourConverter = new ArmourDescriptionFinder(itemLevel.intValue(), false);
_armourConverters.put(itemLevel, armourConverter);
}
ArmourType armourType = ((Armour) item).getArmourType();
EquipmentLocation location = item.getEquipmentLocation();
ItemQuality quality = item.getQuality();
String label = armourConverter.getArmourDescription(statValue, armourType, location, quality);
if (label != null) {
slice = new ItemStatSliceData(stat, null, label);
} else {
System.err.println("Armour not found: " + statValue + " for item " + item + ", quality=" + item.getQuality() + ", slot=" + item.getEquipmentLocation() + ", type=" + armourType);
}
} else if ((stat == STAT.PARRY_PERCENTAGE) || (stat == STAT.RANGED_DEFENCE_PERCENTAGE)) {
// Skip... will be put as raw stats
} else // Other stats
{
Float sliceCount = converter.getSliceCount(stat, statValue);
if (sliceCount != null) {
slice = new ItemStatSliceData(stat, sliceCount, null);
} else {
System.err.println("Stat not found: " + stat + "=" + statValue + " for item " + item + ", quality=" + item.getQuality() + ", slot=" + item.getEquipmentLocation());
}
}
if (slice != null) {
provider.addSlice(slice);
} else {
provider.setStat(stat, value);
}
}
stats.removeStat(STAT.ARMOUR);
String slices = provider.toPersistableString();
item.setProperty(ItemPropertyNames.FORMULAS, slices);
item.setProperty(ItemPropertyNames.SCALING, _scalingId);
}
Aggregations