Ticket #3424: t3424_cleanup_looting_v2.patch

File t3424_cleanup_looting_v2.patch, 2.9 KB (added by elexis, 9 years ago)

Reverts that ApplyValueModificationsToEntity line and further simplifies those resources[carriedGoods.type] += carriedGoods.amount.traderGain || 0 lines.

  • binaries/data/mods/public/simulation/components/Looter.js

     
    55
    66/**
    77 * Try to collect loot from target entity
    88 */
    99Looter.prototype.Collect = function(targetEntity)
    1010{
    1111    var cmpLoot = Engine.QueryInterface(targetEntity, IID_Loot);
    1212    if (!cmpLoot)
    1313        return;
    1414
     15    // Loot experience points as defined in the template
    1516    var xp = cmpLoot.GetXp();
    1617    if (xp > 0)
    1718    {
    18         var cmpPromotion = Engine.QueryInterface(this.entity, IID_Promotion);
     19        let cmpPromotion = Engine.QueryInterface(this.entity, IID_Promotion);
    1920        if (cmpPromotion)
    2021            cmpPromotion.IncreaseXp(xp);
    2122    }
    22     var cmpPlayer = QueryOwnerInterface(this.entity);
     23
     24    // Loot resources as defined in the templates
    2325    var resources = cmpLoot.GetResources();
    24     for (var type in resources)
    25     {
     26    for (let type in resources)
    2627        resources[type] = ApplyValueModificationsToEntity("Looter/Resource/"+type, resources[type], this.entity);
    27     }
    28     cmpPlayer.AddResources(resources);
    29 
    30     let cmpStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker);
    31     if (cmpStatisticsTracker)
    32         cmpStatisticsTracker.IncreaseLootCollectedCounter(resources);
    3328
    34     // If target entity has trader component, add carried goods to loot too
     29    // Loot resources traders carry
    3530    var cmpTrader = Engine.QueryInterface(targetEntity, IID_Trader);
    3631    if (cmpTrader)
    3732    {
    38         var carriedGoods = cmpTrader.GetGoods();
    39         if (carriedGoods.amount && carriedGoods.amount.traderGain)
     33        let carriedGoods = cmpTrader.GetGoods();
     34        if (carriedGoods.amount)
    4035        {
    41             // Convert from {type:<type>,amount:<amount>} to {<type>:<amount>}
    42             var resourcesToAdd = {};
    43             resourcesToAdd[carriedGoods.type] = carriedGoods.amount.traderGain;
    44             if (carriedGoods.amount.market1Gain)
    45                 resourcesToAdd[carriedGoods.type] += carriedGoods.amount.market1Gain;
    46             if (carriedGoods.amount.market2Gain)
    47                 resourcesToAdd[carriedGoods.type] += carriedGoods.amount.market2Gain;
    48             cmpPlayer.AddResources(resourcesToAdd);
    49 
    50             let cmpStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker);
    51             if (cmpStatisticsTracker)
    52                 cmpStatisticsTracker.IncreaseLootCollectedCounter(resourcesToAdd);
     36            resources[carriedGoods.type] += carriedGoods.amount.traderGain || 0;
     37            resources[carriedGoods.type] += carriedGoods.amount.market1Gain || 0;
     38            resources[carriedGoods.type] += carriedGoods.amount.market2Gain || 0;
    5339        }
    5440    }
     41
     42    // Transfer resources
     43    var cmpPlayer = QueryOwnerInterface(this.entity);
     44    cmpPlayer.AddResources(resources);
     45
     46    // Update statistics
     47    var cmpStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker);
     48    if (cmpStatisticsTracker)
     49        cmpStatisticsTracker.IncreaseLootCollectedCounter(resources);
    5550};
    5651
    5752Engine.RegisterComponentType(IID_Looter, "Looter", Looter);