rendered paste bodyIndex: /java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java (revisione 1599)
+++ /java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java (copia locale)
@@ -1801,7 +1801,9 @@
//_decayTask = ClientScheduler.getInstance().scheduleLow(new DecayTask(), 8500);
//SpawnTable.getInstance().addDecayTask(this);
DecayTaskManager.getInstance().addDecayTask(this);
+ ClientScheduler.scheduleEvent(new SpoilStatusDecayTask(this), 8500);
+
super.doDie(killer);
}
@@ -1896,5 +1898,19 @@
_decayTask.cancel(true);
this.onDecay();
}
-
+
+ public class SpoilStatusDecayTask implements Runnable
+ {
+ L2NpcInstance actor;
+
+ public SpoilStatusDecayTask(L2NpcInstance actor)
+ {
+ this.actor = actor;
+ }
+
+ public void run()
+ {
+ actor.setIsSpoiledBy(0);
+ }
+ }
}
Index: /java/net/sf/l2j/gameserver/model/L2Character.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/L2Character.java (revisione 1599)
+++ /java/net/sf/l2j/gameserver/model/L2Character.java (copia locale)
@@ -137,6 +137,7 @@
private boolean _IsSleeping = false; // Cannot move/attack until sleep timed out or monster is attacked
private boolean _IsStunned = false; // Cannot move/attack until stun timed out
private boolean _IsTeleporting = false;
+ private int _isSpoiledBy = 0;
private int _LastAttackChange = 0;
private CharStat _Stat;
private CharStatus _Status;
@@ -1359,6 +1360,9 @@
public final boolean isStunned() { return _IsStunned; }
public final void setIsStunned(boolean value) { _IsStunned = value; }
+ public final int getIsSpoiledBy() { return _isSpoiledBy; }
+ public final void setIsSpoiledBy(int value) { _isSpoiledBy = value; }
+
public final boolean isTeleporting() { return _IsTeleporting; }
public final void setIsTeleporting(boolean value) { _IsTeleporting = value; }
Index: /java/net/sf/l2j/gameserver/handler/skillhandlers/Sweep.java
===================================================================
--- /java/net/sf/l2j/gameserver/handler/skillhandlers/Sweep.java (revisione 1599)
+++ /java/net/sf/l2j/gameserver/handler/skillhandlers/Sweep.java (copia locale)
@@ -55,7 +55,13 @@
{
if (!(targets[index] instanceof L2Attackable)) continue;
L2Attackable target = (L2Attackable)targets[index];
-
+
+ if (activeChar.getObjectId() != target.getIsSpoiledBy())
+ {
+ ((L2PcInstance)activeChar).sendMessage("Cannot use sweeper. Target already spoiled by another person.");
+ return;
+ }
+
if (target.isSweepActive())
{
L2Attackable.RewardItem[] items = target.takeSweep();
@@ -72,9 +78,10 @@
SystemMessage smsg = new SystemMessage(SystemMessage.YOU_PICKED_UP_S1_S2); // you picked up $s1$s2
smsg.addNumber(ritem.getCount());
- smsg.addItemName(item.getItemId());
+ smsg.addItemName(ritem.getItemId());
player.sendPacket(smsg);
}
+ target.setIsSpoiledBy(0);
}
}
target.endDecayTask();
Index: /java/net/sf/l2j/gameserver/handler/skillhandlers/Spoil.java
===================================================================
--- /java/net/sf/l2j/gameserver/handler/skillhandlers/Spoil.java (revisione 1599)
+++ /java/net/sf/l2j/gameserver/handler/skillhandlers/Spoil.java (copia locale)
@@ -133,7 +133,11 @@
// now do randomization
int randomSuccessRate = rand.nextInt(99);
- if ( randomSuccessRate < rateOfSpoil ) spoil = true;
+ if ( randomSuccessRate < rateOfSpoil )
+ {
+ spoil = true;
+ activeChar.setIsSpoiledBy(activeChar.getObjectId());
+ }
}
if (spoil) {