Fixed Plunder effect.
This commit is contained in:
parent
7ca4b242c5
commit
3c6ad12888
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -100,6 +100,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1028,7 +1029,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1484,6 +1485,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1566,6 +1568,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1430,6 +1431,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1512,6 +1514,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1430,6 +1431,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1512,6 +1514,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1430,6 +1431,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1512,6 +1514,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1430,6 +1431,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1512,6 +1514,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1430,6 +1431,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1512,6 +1514,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,32 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
final boolean lucky = player.tryLuck();
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount() * (lucky ? 1 : 2));
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1430,6 +1431,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1512,6 +1514,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,31 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount());
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1420,6 +1421,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1502,6 +1504,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,31 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount());
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1420,6 +1421,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1502,6 +1504,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,31 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount());
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1420,6 +1421,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1502,6 +1504,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
@ -90,32 +90,31 @@ public final class Plunder extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setPlundered(player);
|
||||
|
||||
if (!player.getInventory().checkInventorySlotsAndWeight(monster.getSpoilLootItems(), false, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
monster.setSpoilerObjectId(effector.getObjectId());
|
||||
|
||||
if (monster.isSweepActive())
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
{
|
||||
final Collection<ItemHolder> items = monster.takeSweep();
|
||||
if (items != null)
|
||||
for (ItemHolder sweepedItem : items)
|
||||
{
|
||||
for (ItemHolder sweepedItem : items)
|
||||
final ItemHolder rewardedItem = new ItemHolder(sweepedItem.getId(), sweepedItem.getCount());
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
final L2Party party = effector.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
party.distributeItem(player, sweepedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", sweepedItem, effected, true);
|
||||
}
|
||||
party.distributeItem(player, rewardedItem, true, monster);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.addItem("Plunder", rewardedItem, effected, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
monster.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector);
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,7 @@ public class L2Attackable extends L2Npc
|
||||
private final AtomicReference<ItemHolder> _harvestItem = new AtomicReference<>();
|
||||
// Spoil
|
||||
private int _spoilerObjectId;
|
||||
private boolean _plundered = false;
|
||||
private final AtomicReference<Collection<ItemHolder>> _sweepItems = new AtomicReference<>();
|
||||
// Over-hit
|
||||
private boolean _overhit;
|
||||
@ -1024,7 +1025,7 @@ public class L2Attackable extends L2Npc
|
||||
|
||||
npcTemplate.getExtendDrop().stream().map(ExtendDropData.getInstance()::getExtendDropById).filter(Objects::nonNull).forEach(e -> e.reward(player, this));
|
||||
|
||||
if (isSpoiled())
|
||||
if (isSpoiled() && !_plundered)
|
||||
{
|
||||
_sweepItems.set(npcTemplate.calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
@ -1420,6 +1421,7 @@ public class L2Attackable extends L2Npc
|
||||
// Clear Harvester reward
|
||||
_harvestItem.set(null);
|
||||
_sweepItems.set(null);
|
||||
_plundered = false;
|
||||
|
||||
// fake players
|
||||
if (isFakePlayer())
|
||||
@ -1502,6 +1504,17 @@ public class L2Attackable extends L2Npc
|
||||
_spoilerObjectId = spoilerObjectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to plundered.
|
||||
* @param player
|
||||
*/
|
||||
public void setPlundered(L2PcInstance player)
|
||||
{
|
||||
_plundered = true;
|
||||
_spoilerObjectId = player.getObjectId();
|
||||
_sweepItems.set(getTemplate().calculateDrops(DropType.SPOIL, this, player));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets state of the mob to seeded. Parameters needed to be set before.
|
||||
* @param seeder
|
||||
|
Loading…
Reference in New Issue
Block a user