https://www.youtube.com/watch?v=7gHYOotRBeU
### Eclipse Workspace Patch 1.0
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSoulShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSoulShot.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSoulShot.java (working copy)
@@ -156,7 +156,8 @@
// Pet uses the power of spirit.
activeOwner.sendPacket(new SystemMessage(SystemMessageId.PET_USE_THE_POWER_OF_SPIRIT));
- Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, 2033, 1, 0, 0), 360000/*600*/);
+ if (!activeOwner.isSSDisabled())
+ Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, 2033, 1, 0, 0), 360000/*600*/);
activeOwner = null;
activePet = null;
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/FishShots.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/FishShots.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/FishShots.java (working copy)
@@ -92,7 +92,8 @@
//activeChar.sendPacket(new SystemMessage(SystemMessage.ENABLED_SPIRITSHOT));
MagicSkillUser MSU = new MagicSkillUser(activeChar, SKILL_IDS[grade], 1, 0, 0);
- Broadcast.toSelfAndKnownPlayers(activeChar, MSU);
+ if (!activeChar.isSSDisabled())
+ Broadcast.toSelfAndKnownPlayers(activeChar, MSU);
MSU = null;
activeChar.setTarget(oldTarget);
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -20222,4 +20222,60 @@
}
sendSkillList();
}
+
+ private boolean _cantGainXP = false;
+ private boolean _isPartyInvProt = false;
+ private boolean _isInTradeProt = false;
+ private boolean _isSSDisabled = false;
+ private boolean _isInRefusal = false;
+
+ public boolean isInTradeProt()
+ {
+ return _isInTradeProt;
+ }
+
+ public void setIsInTradeProt(boolean value)
+ {
+ _isInTradeProt = value;
+ }
+
+ public boolean isSSDisabled()
+ {
+ return _isSSDisabled;
+ }
+
+ public void setIsSSDisabled(boolean value)
+ {
+ _isSSDisabled = value;
+ }
+
+ public boolean isPartyInvProt()
+ {
+ return _isPartyInvProt;
+ }
+
+ public void setIsPartyInvProt(boolean value)
+ {
+ _isPartyInvProt = value;
+ }
+
+ public void cantGainXP(boolean b)
+ {
+ _cantGainXP = b;
+ }
+
+ public boolean cantGainXP()
+ {
+ return _cantGainXP;
+ }
+
+ public void setInRefusalMode(boolean b)
+ {
+ _isInRefusal = b;
+ }
+
+ public boolean isInRefusalMode()
+ {
+ return _isInRefusal;
+ }
}
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestJoinParty.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestJoinParty.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestJoinParty.java (working copy)
@@ -78,6 +78,12 @@
return;
}
+ if (target.isPartyInvProt())
+ {
+ requestor.sendMessage("You can't invite that player because he is in party protection.");
+ return;
+ }
+
if (target.isInParty())
{
SystemMessage msg = new SystemMessage(SystemMessageId.S1_IS_ALREADY_IN_PARTY);
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BlessedSpiritShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BlessedSpiritShot.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BlessedSpiritShot.java (working copy)
@@ -137,7 +137,8 @@
// Send message to client
activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SPIRITSHOT));
- Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
+ if (!activeChar.isSSDisabled())
+ Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
activeChar = null;
weaponInst = null;
Index: head-src/com/l2jfrozen/gameserver/handler/VoicedCommandHandler.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/VoicedCommandHandler.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/VoicedCommandHandler.java (working copy)
import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Wedding;
+import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Menu;
+registerVoicedCommandHandler( new Menu());
if (Config.BANKING_SYSTEM_ENABLED)
Index: head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/Menu.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/Menu.java (revision 0)
+++ head-src/com/l2jfrozen/gameserver/handler/voicedcommandhandlers/Menu.java (revision 0)
@@ -0,0 +1,173 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfrozen.gameserver.handler.voicedcommandhandlers;
import javolution.text.TextBuilder;
import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
public class Menu implements IVoicedCommandHandler
{
private final String[] _voicedCommands =
{
"menu"
};
@Override
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
mainHtml(activeChar);
return true;
}
public static void mainHtml(L2PcInstance activeChar)
{
NpcHtmlMessage nhm = new NpcHtmlMessage(5);
TextBuilder tb = new TextBuilder("");
tb.append("<html><head><title>Personal Menu</title></head><body>");
tb.append("<center>");
tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
tb.append("<td valign=\"top\">Players online <font color=\"FF6600\"> "+L2World.getInstance().getAllPlayers().size()+"</font>");
tb.append("<br1><font color=\"00FF00\">"+activeChar.getName()+"</font>, use this menu for everything related to your gameplay.<br1></td>");
tb.append("</tr>");
tb.append("</table>");
tb.append("</center>");
tb.append("<center>");
tb.append("<table border=\"1\" width=\"100\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td width=\"52\">ON</td>");
tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
tb.append("</tr>");
tb.append("<tr>");
tb.append("<td width=\"52\">OFF</td>");
tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
tb.append("</tr>");
tb.append("</table><br>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td align=\"center\" width=\"52\">Buff Protection</td>");
if(activeChar.isBuffProtected())
tb.append("<td width=\"16\"><button action=\"bypass -h buffprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
if(!activeChar.isBuffProtected())
tb.append("<td width=\"16\"><button action=\"bypass -h buffprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("</tr>");
tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY buff from another character.</font></td></tr>");
tb.append("</table>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td align=\"center\" width=\"52\">Personal Message Refusal</td>");
if(activeChar.getMessageRefusal())
tb.append("<td width=\"16\"><button action=\"bypass -h pmref\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
if(!activeChar.getMessageRefusal())
tb.append("<td width=\"16\"><button action=\"bypass -h pmref\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("</tr>");
tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY pm from another character.</font></td></tr>");
tb.append("</table>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td align=\"center\" width=\"52\">Trade Request Protection</td>");
if(activeChar.isInTradeProt())
tb.append("<td width=\"16\"><button action=\"bypass -h tradeprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
if(!activeChar.isInTradeProt())
tb.append("<td width=\"16\"><button action=\"bypass -h tradeprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("</tr>");
tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY trade request from another character.</font></td></tr>");
tb.append("</table>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td align=\"center\" width=\"52\">Soulshot/Spiritshot Effect</td>");
if(activeChar.isSSDisabled())
tb.append("<td width=\"16\"><button action=\"bypass -h ssprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
if(!activeChar.isSSDisabled())
tb.append("<td width=\"16\"><button action=\"bypass -h ssprot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("</tr>");
tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you will enchance your pc's performance by disabling your ss effects.</font></td><td align=\"center\" valign=\"middle\"><button action=\"bypass -h page2\" width=16 height=16 back=\"L2UI_CH3.next1\" fore=\"L2UI_CH3.next1\"></td></tr>");
tb.append("</table>");
tb.append("</center>");
tb.append("</body></html>");
nhm.setHtml(tb.toString());
activeChar.sendPacket(nhm);
}
public static void mainHtml2(L2PcInstance activeChar)
{
NpcHtmlMessage nhm = new NpcHtmlMessage(5);
TextBuilder tb = new TextBuilder("");
tb.append("<html><head><title>Personal Menu</title></head><body>");
tb.append("<center>");
tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
tb.append("<td valign=\"top\">Players online <font color=\"FF6600\"> "+L2World.getInstance().getAllPlayers().size()+"</font>");
tb.append("<br1><font color=\"00FF00\">"+activeChar.getName()+"</font>, use this menu for everything related to your gameplay.<br1></td>");
tb.append("</tr>");
tb.append("</table>");
tb.append("</center>");
tb.append("<center>");
tb.append("<table border=\"1\" width=\"100\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td width=\"52\">ON</td>");
tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
tb.append("</tr>");
tb.append("<tr>");
tb.append("<td width=\"52\">OFF</td>");
tb.append("<td width=\"16\"><button width=16 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("<td><button width=32 height=12 back=\"L2UI_CH3.tutorial_pointer1\" fore=\"L2UI_CH3.tutorial_pointer1\"></td>");
tb.append("</tr>");
tb.append("</table><br>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td align=\"center\" width=\"52\">Party Invite Protection</td>");
if(activeChar.isPartyInvProt())
tb.append("<td width=\"16\"><button action=\"bypass -h partyin\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
if(!activeChar.isPartyInvProt())
tb.append("<td width=\"16\"><button action=\"bypass -h partyin\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("</tr>");
tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve ANY party invite from another character.</font></td></tr>");
tb.append("</table>");
tb.append("<table border=\"1\" width=\"250\" height=\"12\" bgcolor=\"000000\">");
tb.append("<tr>");
tb.append("<td align=\"center\" width=\"52\">Exp Gain Protection</td>");
if(activeChar.cantGainXP())
tb.append("<td width=\"16\"><button action=\"bypass -h xpnot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_hp\" fore=\"L2UI_CH3.br_bar1_hp\"></td>");
if(!activeChar.cantGainXP())
tb.append("<td width=\"16\"><button action=\"bypass -h xpnot\" width=24 height=12 back=\"L2UI_CH3.br_bar1_mp\" fore=\"L2UI_CH3.br_bar1_mp\"></td>");
tb.append("</tr>");
tb.append("<tr><td width=\"250\"><font color=\"00FF00\">By enabling that you won't be able to recieve expirience from killing monsters.</font></td><td align=\"center\" valign=\"middle\"><button action=\"bypass -h page1\" width=16 height=16 back=\"L2UI_CH3.back1\" fore=\"L2UI_CH3.next1\"></td></tr>");
tb.append("</table>");
tb.append("</center>");
tb.append("</body></html>");
nhm.setHtml(tb.toString());
activeChar.sendPacket(nhm);
}
@Override
public String[] getVoicedCommandList()
{
return _voicedCommands;
}
}
\ No newline at end of file
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SpiritShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SpiritShot.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SpiritShot.java (working copy)
@@ -128,7 +128,8 @@
// Send message to client
activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SPIRITSHOT));
- Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
+ if (!activeChar.isSSDisabled())
+ Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
activeChar = null;
}
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/TradeRequest.java (working copy)
@@ -202,7 +202,13 @@
player.sendPacket(new SystemMessage(SystemMessageId.TARGET_TOO_FAR));
return;
}
-
+
+ if (partner.isInTradeProt())
+ {
+ player.sendMessage(partner.getName() + " is in Trade Protection Mode");
+ return;
+ }
+
// Alt game - Karma punishment
if(!Config.ALT_GAME_KARMA_PLAYER_CAN_TRADE && (player.getKarma() > 0 || partner.getKarma() > 0))
{
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SoulShots.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SoulShots.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/SoulShots.java (working copy)
@@ -142,7 +142,8 @@
// Send message to client
activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SOULSHOT));
- Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
+ if (!activeChar.isSSDisabled())
+ Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUser(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
activeChar = null;
}
Index: head-src/com/l2jfrozen/gameserver/model/actor/stat/PcStat.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/stat/PcStat.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/model/actor/stat/PcStat.java (working copy)
@@ -58,6 +58,9 @@
//Player is Gm and access level is below or equal to canGainExp and is in party, don't give Xp
if(!getActiveChar().getAccessLevel().canGainExp() && getActiveChar().isInParty())
return false;
+
+ if (activeChar.cantGainXP())
+ return false;
if(!super.addExp(value))
return false;
@@ -111,6 +114,9 @@
L2PcInstance activeChar = getActiveChar();
if(!activeChar.getAccessLevel().canGainExp() && activeChar.isInParty())
return false;
+
+ if (activeChar.cantGainXP())
+ return false;
// if this player has a pet that takes from the owner's Exp, give the pet Exp now
Index: head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/network/clientpackets/RequestBypassToServer.java (working copy)
@@ -28,6 +28,7 @@
import com.l2jfrozen.gameserver.handler.AdminCommandHandler;
import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
import com.l2jfrozen.gameserver.handler.custom.CustomBypassHandler;
+import com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Menu;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2ClassMasterInstance;
@@ -41,8 +42,10 @@
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.event.VIP;
import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
+import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.util.GMAudit;
public final class RequestBypassToServer extends L2GameClientPacket
@@ -308,7 +311,90 @@
player.processQuestEvent(p.substring(0, idx), p.substring(idx).trim());
}
}
-
+ else if (_command.startsWith("page1"))
+ Menu.mainHtml(activeChar);
+ else if (_command.startsWith("buffprot"))
+ {
+ if (activeChar.isBuffProtected())
+ {
+ +activeChar.setIsBuffProtected(false);
+ +activeChar.sendMessage("Buff protection is disabled.");
+ +Menu.mainHtml(activeChar);
+ }
+ else
+ {
+ activeChar.setIsBuffProtected(true);
+ activeChar.sendMessage("Buff protection is enabled.");
+ Menu.mainHtml(activeChar);
+ }
+ }
+ else if (_command.startsWith("tradeprot"))
+ {
+ if (activeChar.isInTradeProt())
+ {
+ +activeChar.setIsInTradeProt(false);
+ +activeChar.sendMessage("Trade acceptance mode is enabled.");
+ +Menu.mainHtml(activeChar);
+ }
+ else
+ {
+ activeChar.setIsInTradeProt(true);
+ activeChar.sendMessage("Trade refusal mode is enabled.");
+ Menu.mainHtml(activeChar);
+ }
+ }
+ else if (_command.startsWith("ssprot"))
+ {
+ if (activeChar.isSSDisabled())
+ {
+ activeChar.setIsSSDisabled(false);
+ activeChar.sendMessage("Soulshots effects are enabled.");
+ Menu.mainHtml(activeChar);
+ }
+ else
+ {
+ activeChar.setIsSSDisabled(true);
+ activeChar.sendMessage("Soulshots effects are disabled.");
+ Menu.mainHtml(activeChar);
+ }
+ }
+ else if (_command.startsWith("xpnot"))
+ {
+ if (activeChar.cantGainXP())
+ {
+ activeChar.cantGainXP(false);
+ activeChar.sendMessage("Enable Xp");
+ Menu.mainHtml2(activeChar);
+ }
+ else
+ {
+ activeChar.cantGainXP(true);
+ activeChar.sendMessage("Disable Xp");
+ Menu.mainHtml2(activeChar);
+ }
+ }
+ else if (_command.startsWith("pmref"))
+ {
+ if (activeChar.getMessageRefusal())
+ {
+ activeChar.setMessageRefusal(false);
+ activeChar.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_ACCEPTANCE_MODE));
+ Menu.mainHtml(activeChar);
+ }
+ else
+ {
+ activeChar.setMessageRefusal(true);
+ activeChar.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_REFUSAL_MODE));
+ Menu.mainHtml(activeChar);
+ }
+ }
+ else if (_command.startsWith("partyin"))
+ {
+ if (activeChar.isPartyInvProt())
+ {
+ activeChar.setIsPartyInvProt(false);
+ activeChar.sendMessage("Party acceptance mode is enabled.");
+ Menu.mainHtml2(activeChar);
+ }
+ else
+ {
+ activeChar.setIsPartyInvProt(true);
+ activeChar.sendMessage("Party refusal mode is enabled.");
+ Menu.mainHtml2(activeChar);
+ }
+ }
+ else if (_command.startsWith("page2"))
+ Menu.mainHtml2(activeChar);
// Jstar's Custom Bypass Caller!
else if(_command.startsWith("custom_"))
{
Index: head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSpiritShot.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSpiritShot.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/itemhandlers/BeastSpiritShot.java (working copy)
@@ -169,7 +169,8 @@
// Pet uses the power of spirit.
activeOwner.sendPacket(new SystemMessage(SystemMessageId.PET_USE_THE_POWER_OF_SPIRIT));
- Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, isBlessed ? 2009 : 2008, 1, 0, 0), 360000/*600*/);
+ if (!activeOwner.isSSDisabled())
+ Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUser(activePet, activePet, isBlessed ? 2009 : 2008, 1, 0, 0), 360000/*600*/);
activeOwner = null;
activePet = null;
Index: head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java (revision 986)
+++ head-src/com/l2jfrozen/gameserver/handler/skillhandlers/Continuous.java (working copy)
@@ -143,7 +143,16 @@
|| skill.getSkillType() == L2Skill.SkillType.MANAHEAL_PERCENT
|| skill.getSkillType() == L2Skill.SkillType.COMBATPOINTHEAL
|| skill.getSkillType() == L2Skill.SkillType.REFLECT))
- continue;
+ continue;
+
+ if (activeChar instanceof L2PcInstance && target != activeChar && target.isBuffProtected() && !skill.isHeroSkill()
+ && (skill.getSkillType() == L2Skill.SkillType.BUFF
+ || skill.getSkillType() == L2Skill.SkillType.HEAL_PERCENT
+ || skill.getSkillType() == L2Skill.SkillType.FORCE_BUFF
+ || skill.getSkillType() == L2Skill.SkillType.MANAHEAL_PERCENT
+ || skill.getSkillType() == L2Skill.SkillType.COMBATPOINTHEAL
+ || skill.getSkillType() == L2Skill.SkillType.REFLECT))
+ continue;
// Player holding a cursed weapon can't be buffed and can't buff
if(skill.getSkillType() == L2Skill.SkillType.BUFF)