Search in sources :

Example 1 with ReputationItem

use of delta.games.lotro.common.ReputationItem in project lotro-tools by dmorcellet.

the class LotroCompendiumDeedsLoader method handleReputation.

@SuppressWarnings("unchecked")
private void handleReputation(Rewards rewards, List<Object> reputationItems) {
    // reputation={{val="+700 with Iron Garrison Guards"}}
    if (reputationItems == null) {
        return;
    }
    FactionsRegistry registry = FactionsRegistry.getInstance();
    Reputation reputation = rewards.getReputation();
    for (Object reputationItem : reputationItems) {
        Map<String, Object> reputationMap = (Map<String, Object>) reputationItem;
        String reputationStr = (String) reputationMap.get("val");
        int spaceIndex = reputationStr.indexOf(" ");
        Integer value = NumericTools.parseInteger(reputationStr.substring(0, spaceIndex));
        String factionStr = reputationStr.substring(spaceIndex + 1).trim();
        if (factionStr.startsWith("with "))
            factionStr = factionStr.substring(5);
        Faction faction = registry.getByName(factionStr);
        if ((faction != null) && (value != null)) {
            ReputationItem repItem = new ReputationItem(faction);
            repItem.setAmount(value.intValue());
            reputation.add(repItem);
        } else {
            System.out.println("Not handled [" + reputationStr + "]");
        }
    }
}
Also used : FactionsRegistry(delta.games.lotro.lore.reputation.FactionsRegistry) Reputation(delta.games.lotro.common.Reputation) Map(java.util.Map) ReputationItem(delta.games.lotro.common.ReputationItem) Faction(delta.games.lotro.lore.reputation.Faction)

Example 2 with ReputationItem

use of delta.games.lotro.common.ReputationItem in project lotro-tools by dmorcellet.

the class LotroWikiDeedPageParser method parseDeed.

private DeedDescription parseDeed(int startIndex, String[] lines, String deedName) {
    DeedDescription deed = new DeedDescription();
    deed.setName(deedName);
    deed.setType(null);
    Rewards rewards = deed.getRewards();
    // Reputation
    Faction faction = null;
    Integer reputation = null;
    // Virtues
    VirtueId virtueId = null;
    Integer virtueCount = null;
    // Item rewards
    String[] itemRewards = null;
    Integer[] itemRewardCounts = null;
    // Categories
    String deedType = null;
    String deedSubtype = null;
    String regionalSub = null;
    // Deeds chain
    List<String> deedsChain = new ArrayList<String>();
    for (int index = startIndex + 1; index < lines.length; index++) {
        String line = lines[index].trim();
        if (line.contains("{{Deed"))
            break;
        String lineKey = fetchLineKey(line);
        // System.out.println(line);
        if ("name".equals(lineKey)) {
        // String name=getLineValue(line);
        // deed.setName(name);
        } else if ("Lore-text".equals(lineKey)) {
            String description = getLineValue(line);
            description = normalize(description);
            deed.setDescription(description);
        } else if ("Objective".equals(lineKey)) {
            StringBuilder sb = new StringBuilder();
            String firstLine = getLineValue(line);
            sb.append(firstLine);
            while (true) {
                String nextLine = lines[index + 1].trim();
                if (nextLine.startsWith("|")) {
                    break;
                }
                sb.append('\n').append(nextLine);
                index++;
            }
            String objectives = sb.toString().trim();
            objectives = normalize(objectives);
            deed.setObjectives(objectives);
        } else if ("Faction".equals(lineKey)) {
            faction = extractFaction(line);
        } else if ("Reputation".equals(lineKey)) {
            String repValue = getLineValue(line).replace(",", "");
            reputation = NumericTools.parseInteger(repValue);
        } else if ("Title".equals(lineKey)) {
            Title title = extractTitle(line);
            if (title != null) {
                rewards.addTitle(title);
            }
        } else if ("Virtue".equals(lineKey)) {
            virtueId = extractVirtue(line);
        } else if ("Virtue-value".equals(lineKey)) {
            virtueCount = NumericTools.parseInteger(getLineValue(line));
        } else if ("TP-reward".equals(lineKey)) {
            String tpStr = getLineValue(line);
            if ((!tpStr.isEmpty()) && (!"???".equals(tpStr))) {
                Integer tp = NumericTools.parseInteger(tpStr, false);
                if (tp != null) {
                    rewards.setLotroPoints(tp.intValue());
                } else {
                    _logger.warn("Bad LOTRO points value in file " + _currentFile + ": [" + tpStr + "]");
                }
            }
        } else if ("SM-reward".equals(lineKey)) {
            String smStr = getLineValue(line);
            if (!smStr.isEmpty()) {
                Integer marks = NumericTools.parseInteger(smStr, false);
                if (marks != null) {
                    ObjectsSet objects = deed.getRewards().getObjects();
                    ObjectItem item = new ObjectItem("Mark");
                    item.setItemId(1879224343);
                    objects.addObject(item, marks.intValue());
                } else {
                    _logger.warn("Bad SM value in file " + _currentFile + ": [" + smStr + "]");
                }
            }
        } else if ("CTP-reward".equals(lineKey)) {
            String value = getLineValue(line);
            if ("Y".equals(value)) {
            // TODO Class Trait Point
            }
        } else if ("Trait-reward".equals(lineKey)) {
            String traitStr = getLineValue(line);
            if (!traitStr.isEmpty()) {
                handleTraitReward(rewards, traitStr);
            }
        } else if ("Emote-reward".equals(lineKey)) {
            String emoteStr = getLineValue(line);
            if (!emoteStr.isEmpty()) {
                handleEmoteReward(rewards, emoteStr);
            }
        } else if ("Skill-reward".equals(lineKey)) {
            String skillStr = getLineValue(line);
            if (!skillStr.isEmpty()) {
                handleSkillReward(rewards, skillStr);
            }
        } else if ("Level".equals(lineKey)) {
            String levelStr = getLineValue(line);
            if ("?".equals(levelStr))
                levelStr = "";
            if ("???".equals(levelStr))
                levelStr = "";
            if (!levelStr.isEmpty()) {
                levelStr = levelStr.replace("&lt;", "<");
                if (levelStr.startsWith("<="))
                    levelStr = levelStr.substring(2);
                if (levelStr.equals("{{Level Cap}}"))
                    levelStr = "1000";
                if (levelStr.endsWith("+"))
                    levelStr = levelStr.substring(0, levelStr.length() - 1);
                levelStr = removeXmlComments(levelStr);
                Integer level = NumericTools.parseInteger(levelStr, false);
                if (level != null) {
                    deed.setMinLevel(level);
                } else {
                    _logger.warn("Bad level value in file " + _currentFile + ": [" + levelStr + "]");
                }
            }
        } else if ("Deed-type".equals(lineKey)) {
            deedType = getLineValue(line);
        } else if ("Deed-subtype".equals(lineKey)) {
            deedSubtype = getLineValue(line);
        } else if ("Regional-sub".equals(lineKey)) {
            regionalSub = getLineValue(line);
        } else if ((lineKey != null) && (lineKey.startsWith(DEED_CHAIN_SEED))) {
            Integer deedIndex = NumericTools.parseInteger(lineKey.substring(DEED_CHAIN_SEED.length()));
            if (deedIndex != null) {
                // Add missing entries
                int nbMissingEntries = deedIndex.intValue() - deedsChain.size();
                for (int i = 0; i < nbMissingEntries; i++) {
                    deedsChain.add(null);
                }
                // Set deed name in chain
                String deedNameInChain = getLineValue(line);
                deedsChain.set(deedIndex.intValue() - 1, deedNameInChain);
            }
        } else if ("Parent-deed".equals(lineKey)) {
            String parentDeed = getLineValue(line);
            if (!parentDeed.isEmpty()) {
                if (useParentDeedInfo(parentDeed, deedName)) {
                    parentDeed = fixParentDeedInfo(parentDeed, deedName);
                    DeedProxy parentProxy = new DeedProxy();
                    parentProxy.setName(parentDeed);
                    deed.getParentDeedProxies().add(parentProxy);
                }
            }
        }
        for (int i = 1; i <= 3; i++) {
            String suffix = (i != 1) ? String.valueOf(i) : "";
            if (("Item-reward" + suffix).equals(lineKey)) {
                String itemName = getLineValue(line);
                if (!itemName.isEmpty()) {
                    if (itemRewards == null) {
                        itemRewards = new String[3];
                    }
                    itemRewards[i - 1] = itemName;
                }
            }
            if (("Item-amount" + suffix).equals(lineKey)) {
                String itemCountStr = getLineValue(line);
                if (!itemCountStr.isEmpty()) {
                    if (itemRewardCounts == null) {
                        itemRewardCounts = new Integer[3];
                    }
                    itemRewardCounts[i - 1] = NumericTools.parseInteger(itemCountStr);
                }
            }
        }
    /*
| DP-reward    = 
| Hidden       = 
| Meta-deed     = 
| Extra         = 
       */
    }
    if ((faction != null) && (reputation != null)) {
        ReputationItem item = new ReputationItem(faction);
        item.setAmount(reputation.intValue());
        rewards.getReputation().add(item);
    }
    if (virtueId != null) {
        int count = (virtueCount != null) ? virtueCount.intValue() : 1;
        Virtue virtue = new Virtue(virtueId, count);
        rewards.addVirtue(virtue);
    }
    if (itemRewards != null) {
        handleItemRewards(deed, itemRewards, itemRewardCounts);
    }
    // Categories
    handleCategories(deed, deedType, deedSubtype, regionalSub);
    // Deeds chain
    handleDeedsChain(deed, deedsChain);
    return deed;
}
Also used : DeedDescription(delta.games.lotro.lore.deeds.DeedDescription) ArrayList(java.util.ArrayList) Title(delta.games.lotro.common.Title) ReputationItem(delta.games.lotro.common.ReputationItem) ObjectItem(delta.games.lotro.common.objects.ObjectItem) VirtueId(delta.games.lotro.common.VirtueId) DeedProxy(delta.games.lotro.lore.deeds.DeedProxy) Rewards(delta.games.lotro.common.Rewards) ObjectsSet(delta.games.lotro.common.objects.ObjectsSet) Virtue(delta.games.lotro.common.Virtue) Faction(delta.games.lotro.lore.reputation.Faction)

Example 3 with ReputationItem

use of delta.games.lotro.common.ReputationItem in project lotro-tools by dmorcellet.

the class RewardsHTMLParser method parseReputationReward.

private Reputation parseReputationReward(Element rewardDiv) {
    // System.out.println("Reputation reward!");
    Reputation r = new Reputation();
    List<Element> elements = rewardDiv.getChildElements();
    if ((elements != null) && (elements.size() == 2)) {
        Element reputationNode = elements.get(1);
        List<Segment> nodes = JerichoHtmlUtils.getChildNodes(reputationNode);
        int nbNodes = nodes.size();
        int nbItems = nbNodes / 4;
        for (int i = 0; i < nbItems; i++) {
            Segment valueNode = nodes.get(i * 4 + 1);
            Segment factionNode = nodes.get(i * 4 + 3);
            if ((valueNode.getClass() == Segment.class) && (factionNode.getClass() == Segment.class)) {
                String valueStr = valueNode.toString();
                valueStr = valueStr.replace("with", "").trim();
                valueStr = valueStr.replace("+", "").trim();
                int reputation = NumericTools.parseInt(valueStr, 0);
                String factionName = factionNode.toString().trim();
                Faction faction = FactionsRegistry.getInstance().getByName(factionName);
                if (faction != null) {
                    ReputationItem item = new ReputationItem(faction);
                    item.setAmount(reputation);
                    r.add(item);
                } else {
                    _logger.error("Cannot get faction [" + factionName + "]!");
                }
            }
        }
    }
    return r;
/*
<div class="questReward">
<div>
<strong>Reputation:</strong>
</div>
<div>
<img class="icon" src="http://content.turbine.com/sites/lorebook.lotro.com/images/icons/reputation_increase.gif">
+700 with
<a href="/wiki/Faction:Malledhrim">Malledhrim</a>
</div>
</div>
     */
}
Also used : Element(net.htmlparser.jericho.Element) Reputation(delta.games.lotro.common.Reputation) ReputationItem(delta.games.lotro.common.ReputationItem) Segment(net.htmlparser.jericho.Segment) Faction(delta.games.lotro.lore.reputation.Faction)

Aggregations

ReputationItem (delta.games.lotro.common.ReputationItem)3 Faction (delta.games.lotro.lore.reputation.Faction)3 Reputation (delta.games.lotro.common.Reputation)2 Rewards (delta.games.lotro.common.Rewards)1 Title (delta.games.lotro.common.Title)1 Virtue (delta.games.lotro.common.Virtue)1 VirtueId (delta.games.lotro.common.VirtueId)1 ObjectItem (delta.games.lotro.common.objects.ObjectItem)1 ObjectsSet (delta.games.lotro.common.objects.ObjectsSet)1 DeedDescription (delta.games.lotro.lore.deeds.DeedDescription)1 DeedProxy (delta.games.lotro.lore.deeds.DeedProxy)1 FactionsRegistry (delta.games.lotro.lore.reputation.FactionsRegistry)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 Element (net.htmlparser.jericho.Element)1 Segment (net.htmlparser.jericho.Segment)1