use of delta.games.lotro.lore.items.Item in project lotro-tools by dmorcellet.
the class TulkasItemsLoader1 method buildItems.
/**
* Inspect loaded data items to fetch possible values in fields.
* @param items Loaded data items.
*/
/*
public void inspectItems(HashMap<Integer,HashMap<Object,Object>> items)
{
Set<String> types=new HashSet<String>();
Set<String> classes=new HashSet<String>();
Set<String> slots=new HashSet<String>();
Set<String> subSlots=new HashSet<String>();
Set<String> colors=new HashSet<String>();
for(HashMap<Object,Object> item:items.values())
{
String c=(String)item.get("Class");
if ((c!=null)&&(c.length()>0)) classes.add(c);
String type=(String)item.get("Type");
if ((type!=null)&&(type.length()>0)) types.add(type);
String slot=(String)item.get("Slot");
if ((slot!=null)&&(slot.length()>0)) slots.add(slot);
String subSlot=(String)item.get("SubSlot");
if ((subSlot!=null)&&(subSlot.length()>0)) subSlots.add(subSlot);
String color=(String)item.get("Color");
if ((color!=null)&&(color.length()>0)) colors.add(color);
}
// Classes: [Champion, LoreMaster, Minstrel, Hunter, RuneKeeper, Burglar,
// Captain, Guardian, Warden]
System.out.println("Classes: "+classes);
// Type: [Cloak, Medium, Heavy, Light]
System.out.println("Type: "+types);
// Slots: [Pocket, Head, Melee Weapon, Wrist, Hand, Ear, Chest, Neck, Back,
// Finger, Leg, Shield, Feet, Ranged Weapon, Shoulder, Rune-stone]
System.out.println("Slots: "+slots);
// SubSlots: [Two-handed Sword, Staff, Halberd, Heavy, Two-handed Hammer, Bow, Javelin, Two-handed Club, One-handed Hammer, Spear, Warden, One-handed Club, One-handed Mace, Crossbow, Dagger, Light, One-handed Axe, One-handed Sword, Two-handed Axe]
System.out.println("SubSlots: "+subSlots);
// Color: [Yellow, Purple, Orange, Teal]
System.out.println("Color: "+colors);
}
*/
/**
* Build items from raw data items.
* @param items Loaded data items.
*/
public void buildItems(HashMap<Integer, HashMap<Object, Object>> items) {
List<Integer> keys = new ArrayList<Integer>(items.keySet());
Collections.sort(keys);
int nbKeys = keys.size();
System.out.println("Min: " + keys.get(0) + ", max: " + keys.get(nbKeys - 1));
List<Item> itemsList = new ArrayList<Item>();
for (int i = 0; i < nbKeys; i++) {
Integer id = keys.get(i);
HashMap<Object, Object> data = items.get(id);
Item item = buildItem(id, data);
item.setIdentifier(id.intValue());
itemsList.add(item);
/*
ItemsManager mgr=ItemsManager.getInstance();
mgr.writeItemFile(item);
System.out.println(item.dump());
*/
// writeItemToDB(item);
}
File toFile = new File("itemsTulkasOld.xml").getAbsoluteFile();
ItemXMLWriter.writeItemsFile(toFile, itemsList);
}
use of delta.games.lotro.lore.items.Item 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.Item in project lotro-tools by dmorcellet.
the class BigBattlesJewelsFinder method findScalableItems.
/**
* Find some scalable items.
* @param items Items to search.
* @return A list of selected items.
*/
public List<Item> findScalableItems(List<Item> items) {
List<Item> ret = new ArrayList<Item>();
Map<String, Item> bbJewels = generateBigBattleJewels();
Map<String, Item> pelargirRings = generatePelargirRings();
for (Item item : items) {
Integer level = item.getItemLevel();
if (ITEM_LEVEL.equals(level)) {
Item bbJewel = bbJewels.get(item.getName());
if (bbJewel != null) {
ret.add(item);
// System.out.println("Added:"+item);
}
Item pelargirRing = pelargirRings.get(item.getName());
if (pelargirRing != null) {
ret.add(item);
// System.out.println("Added:"+item);
}
}
}
return ret;
}
use of delta.games.lotro.lore.items.Item in project lotro-tools by dmorcellet.
the class TulkasItemsIndexLoader method buildItems.
/**
* Build items from raw data items.
* @param items Loaded data items.
*/
public void buildItems(HashMap<Integer, HashMap<Object, Object>> items) {
List<Integer> keys = new ArrayList<Integer>(items.keySet());
Collections.sort(keys);
List<Item> itemsList = new ArrayList<Item>();
int nbKeys = keys.size();
System.out.println("Min: " + keys.get(0) + ", max: " + keys.get(nbKeys - 1));
for (int i = 0; i < nbKeys; i++) {
Integer id = keys.get(i);
HashMap<Object, Object> data = items.get(id);
String name = (String) data.get(Integer.valueOf(1));
if ("GNDN".equals(name)) {
continue;
}
String description = (String) data.get(Integer.valueOf(2));
if (description != null) {
if (description.indexOf("string table error") != -1) {
description = "";
}
// description=description.replace(" ", " ");
}
Integer categoryInt = (Integer) data.get(Integer.valueOf(3));
// 4..5: see below (quality, sturdiness)
// 6: isMagic is always false
Boolean isUnique = (Boolean) data.get(Integer.valueOf(7));
Integer iconID = (Integer) data.get(Integer.valueOf(8));
Integer backgroundIconId = (Integer) data.get(Integer.valueOf(9));
Item item = new Item();
item.setIdentifier(id.intValue());
item.setName(name);
item.setDescription(description);
if (iconID != null) {
item.setProperty(ItemPropertyNames.ICON_ID, iconID.toString());
}
if (backgroundIconId != null) {
item.setProperty(ItemPropertyNames.BACKGROUND_ICON_ID, backgroundIconId.toString());
}
if (isUnique != null) {
item.setUnique(isUnique.booleanValue());
}
if (categoryInt != null) {
item.setSubCategory(String.valueOf(categoryInt));
}
// Quality
{
Integer qualityInt = (Integer) data.get(Integer.valueOf(4));
ItemQuality quality = null;
switch(qualityInt.intValue()) {
// special items
case 0:
quality = null;
break;
case 1:
quality = ItemQuality.LEGENDARY;
break;
case 2:
quality = ItemQuality.RARE;
break;
case 3:
quality = ItemQuality.INCOMPARABLE;
break;
case 4:
quality = ItemQuality.UNCOMMON;
break;
case 5:
quality = ItemQuality.COMMON;
break;
}
item.setQuality(quality);
}
// Sturdiness
{
Integer durabilityInt = (Integer) data.get(Integer.valueOf(5));
ItemSturdiness sturdiness = null;
switch(durabilityInt.intValue()) {
// consumables
case 0:
sturdiness = null;
break;
case 1:
sturdiness = ItemSturdiness.SUBSTANTIAL;
break;
case 2:
sturdiness = ItemSturdiness.BRITTLE;
break;
case 3:
sturdiness = ItemSturdiness.NORMAL;
break;
case 4:
sturdiness = ItemSturdiness.TOUGH;
break;
// cosmetics
case 6:
sturdiness = null;
break;
case 7:
sturdiness = ItemSturdiness.WEAK;
break;
}
item.setSturdiness(sturdiness);
}
itemsList.add(item);
// System.out.println(i);
// System.out.println(item.dump());
// writeItemToDB(item);
}
File toFile = new File("data/items/tmp/itemsTulkasIndex.xml").getAbsoluteFile();
ItemXMLWriter.writeItemsFile(toFile, itemsList);
}
use of delta.games.lotro.lore.items.Item in project lotro-companion by dmorcellet.
the class EssencesSummary method update.
/**
* Update counts.
*/
public void update() {
_count.clear();
_essencesCount = 0;
_slotsCount = 0;
_stats.clear();
CharacterEquipment equipment = _toon.getEquipment();
for (EQUIMENT_SLOT slot : EQUIMENT_SLOT.values()) {
Item item = equipment.getItemForSlot(slot);
if (item != null) {
EssencesSet essences = item.getEssences();
int nbSlots = item.getEssenceSlots();
int nbEssences = (essences != null) ? essences.getSize() : 0;
int slotsCount = Math.max(nbSlots, nbEssences);
// Increment total essence slot count
_slotsCount += slotsCount;
if (essences != null) {
for (int i = 0; i < nbEssences; i++) {
Item essence = essences.getEssence(i);
if (essence != null) {
// Increment by-essence count
Integer essenceId = Integer.valueOf(essence.getIdentifier());
EssenceCount count = _count.get(essenceId);
if (count == null) {
count = new EssenceCount(essence);
_count.put(essenceId, count);
}
count.increment();
// Increment essences count
_essencesCount++;
BasicStatsSet essenceStats = essence.getStats();
_stats.addStats(essenceStats);
}
}
}
}
}
}
Aggregations