Hi again, I want to share you a killing spree system I made now, so here is the patch:
### Eclipse Workspace Patch 1.0
#P L2j_Server
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5822)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -221,6 +221,7 @@
import com.l2jserver.gameserver.network.serverpackets.ExGetOnAirShip;
import com.l2jserver.gameserver.network.serverpackets.ExOlympiadMode;
import com.l2jserver.gameserver.network.serverpackets.ExPrivateStoreSetWholeMsg;
+import com.l2jserver.gameserver.network.serverpackets.ExRedSky;
import com.l2jserver.gameserver.network.serverpackets.ExSetCompassZoneCode;
import com.l2jserver.gameserver.network.serverpackets.ExSpawnEmitter;
import com.l2jserver.gameserver.network.serverpackets.ExStartScenePlayer;
@@ -495,7 +496,6 @@
private int _eventEffectId = 0;
private boolean _isInSiege;
private boolean _isInHideoutSiege = false;
-
public enum PunishLevel
{
NONE(0, ""),
@@ -5491,6 +5491,28 @@
public boolean doDie(L2Character killer)
{
// Kill the L2PcInstance
+ if (KILL_STEAK>0)
+ {
+ if (KILL_STEAK>=5&&KILL_STEAK<10)
+ Announcements.getInstance().announceToAll(killer.getName()+" has stopped "+getName()+"'s killing spree of "+KILL_STEAK+" kills!!");
+ else if (KILL_STEAK<20)
+ {
+ sendMessage(killer.getName()+" has stopped "+getName()+"'s killing spree of "+KILL_STEAK+" kills!!");
+ if (!hadHero)
+ setHero(false);
+ }
+ else if (KILL_STEAK<60)
+ {
+ sendMessage(killer.getName()+" has ended "+getName()+"'s rampage of "+KILL_STEAK+" strait kills!");
+ stopAbnormalEffect(AbnormalEffect.VITALITY);
+ if (!hadHero)
+ setHero(false);
+ }
+ else if (KILL_STEAK>60)
+ {
+ sendMessage(killer.getName()+" has given an end to "+getName()+"'s reign of terror of "+KILL_STEAK+" strait kills!!!");
+ stopAbnormalEffect(AbnormalEffect.VITALITY);
+ if (!hadHero)
+ setHero(false);
+ }
+ KILL_STEAK=0;
+ }
if (!super.doDie(killer))
return false;
@@ -5839,7 +5861,8 @@
}
}
}
-
+ private int KILL_STEAK=0;
+ final boolean hadHero=Hero.getInstance().isHero(getObjectId());
/**
* Increase the pvp kills count and send the info to the player
* @param target
@@ -5851,7 +5874,24 @@
{
// Add karma to attacker and increase its PK counter
setPvpKills(getPvpKills() + 1);
-
+ KILL_STEAK++;
+ switch (KILL_STEAK)
+ {
+ case 5:
+ sendMessage("You are almost on a killing spree");
+ break;
+ case 10:
+ Announcements.getInstance().announceToAll(getName()+" is on a killing spree!!");
+ setHero(true);
+ break;
+ case 20:
+ Announcements.getInstance().announceToAll(getName()+" is on a rampage!!");
+ startAbnormalEffect(AbnormalEffect.VITALITY);
+ break;
+ case 60:
+ Announcements.getInstance().announceToAll(getName()+" is legendary!");
+ for (L2PcInstance players : L2World.getInstance().getAllPlayersArray())
+ {
+ players.sendPacket(new ExRedSky(10));
+ }
+ break;
+ }
// Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
sendPacket(new UserInfo(this));
sendPacket(new ExBrExtraUserInfo(this));
I already tested an older version of it witch I made 2 weeks ago and it was working good, this code is not tested but its supposed to be 100% working... It will work on ANY pack of ANY client without adaption, after install and test please provide me with some feedback!! thanks
Ps: After 10 kills you become hero, after 20 you get Vitality effect, on restart or death the effects dissapear
You cant test it with dualbox, you have to remove anti feed system first
Updates:
Fixed some logical probs, thanks to f0zi fixed case collapse bug!