Unhardcoded faction guards, fixed aggro and various improvements.

This commit is contained in:
MobiusDev 2019-02-28 12:02:37 +00:00
parent 945e0d7b50
commit 2b9c79367e
68 changed files with 185 additions and 357 deletions

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1090,7 +1090,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1099,8 +1098,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2467,7 +2464,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2479,8 +2475,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8355,6 +8355,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1097,7 +1097,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1106,8 +1105,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2483,7 +2480,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2495,8 +2491,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8362,6 +8362,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1105,7 +1105,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1114,8 +1113,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2498,7 +2495,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2510,8 +2506,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8364,6 +8364,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1098,7 +1098,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1107,8 +1106,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2484,7 +2481,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2496,8 +2492,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8362,6 +8362,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1098,7 +1098,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1107,8 +1106,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2484,7 +2481,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2496,8 +2492,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8364,6 +8364,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1098,7 +1098,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1107,8 +1106,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2484,7 +2481,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2496,8 +2492,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8364,6 +8364,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -19,7 +19,6 @@ package custom.FactionSystem;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
@ -32,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -49,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addSeeCreatureId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -169,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onSeeCreature(L2Npc npc, L2Character creature, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && creature.isPlayer() && ((creature.getActingPlayer().isGood() && (npc.getId() == EVIL_GUARD)) || (creature.getActingPlayer().isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, creature);
}
return super.onSeeCreature(npc, creature, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1278,7 +1278,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1287,8 +1286,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2798,7 +2795,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2810,8 +2806,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -225,6 +225,11 @@ public class L2AttackableAI extends L2CharacterAI
return false;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && ((L2Npc) _actor).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && ((L2Npc) _actor).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
if (player.isInParty() && player.getParty().isInDimensionalRift())
{
final byte riftType = player.getParty().getDimensionalRift().getType();

View File

@ -51,6 +51,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8469,6 +8469,15 @@ public final class L2PcInstance extends L2Playable
}
}
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getKarma() > 0); // Guards attack only PK players.
}
// Check if the L2PcInstance has Karma
if ((getKarma() > 0) || (_pvpFlag > 0))
{

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -0,0 +1,4 @@
<html><body>Sentinel:<br>
You must use extreme caution, sir! There have been reports of roaming thugs in this area, who think nothing of killing for the sheer pleasure of it. Please let me know if you see any of them. My bow will protect you from these murderers.<br>
May the divine protection of Eva be with you always.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Centurion:<br>
I am sworn by the will of Paagrio to destroy all evildoers! If you see any of them, tell me. My bow will put an end to their treachery!
</body></html>

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/npcs.xsd">
<npc id="500" displayId="34210" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<npc id="500" displayId="9000" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<race>ELF</race>
<sex>FEMALE</sex>
<stats>

View File

@ -1043,7 +1043,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1052,8 +1051,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2379,7 +2376,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2391,8 +2387,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8307,6 +8307,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -0,0 +1,4 @@
<html><body>Sentinel:<br>
You must use extreme caution, sir! There have been reports of roaming thugs in this area, who think nothing of killing for the sheer pleasure of it. Please let me know if you see any of them. My bow will protect you from these murderers.<br>
May the divine protection of Eva be with you always.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Centurion:<br>
I am sworn by the will of Paagrio to destroy all evildoers! If you see any of them, tell me. My bow will put an end to their treachery!
</body></html>

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/npcs.xsd">
<npc id="500" displayId="34210" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<npc id="500" displayId="9000" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<race>ELF</race>
<sex>FEMALE</sex>
<stats>

View File

@ -1047,7 +1047,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1056,8 +1055,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2386,7 +2383,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2398,8 +2394,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8308,6 +8308,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -0,0 +1,4 @@
<html><body>Sentinel:<br>
You must use extreme caution, sir! There have been reports of roaming thugs in this area, who think nothing of killing for the sheer pleasure of it. Please let me know if you see any of them. My bow will protect you from these murderers.<br>
May the divine protection of Eva be with you always.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Centurion:<br>
I am sworn by the will of Paagrio to destroy all evildoers! If you see any of them, tell me. My bow will put an end to their treachery!
</body></html>

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/npcs.xsd">
<npc id="500" displayId="34210" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<npc id="500" displayId="9000" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<race>ELF</race>
<sex>FEMALE</sex>
<stats>

View File

@ -1047,7 +1047,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1056,8 +1055,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2386,7 +2383,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2398,8 +2394,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8310,6 +8310,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}

View File

@ -10,10 +10,6 @@ EnableFactionSystem = False
# Default: 85332,16199,-1252
StartingLocation = 85332,16199,-1252
# Faction manager NPC ID.
# Default: 500
FactionManagerNpcId = 500
# Spawn location for faction manager NPC.
# Default: 85712,15974,-1260,26808
ManagerSpawnLocation = 85712,15974,-1260,26808
@ -47,14 +43,6 @@ EvilNameColor = 0000FF
# Default: True
EnableFactionGuards = True
# Good Guard NPC ID.
# Default: 501
GoodGuardNpcId = 501
# Evil Guard NPC ID.
# Default: 502
EvilGuardNpcId = 502
# Upon death, respawn at faction base.
# Default: True
RespawnAtFactionBase = True

View File

@ -0,0 +1,4 @@
<html><body>Sentinel:<br>
You must use extreme caution, sir! There have been reports of roaming thugs in this area, who think nothing of killing for the sheer pleasure of it. Please let me know if you see any of them. My bow will protect you from these murderers.<br>
May the divine protection of Eva be with you always.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Centurion:<br>
I am sworn by the will of Paagrio to destroy all evildoers! If you see any of them, tell me. My bow will put an end to their treachery!
</body></html>

View File

@ -31,9 +31,7 @@ import ai.AbstractNpcAI;
public final class FactionSystem extends AbstractNpcAI
{
// NPCs
private static final int MANAGER = Config.FACTION_MANAGER_NPCID;
private static final int GOOD_GUARD = Config.FACTION_GOOD_GUARD_NPCID;
private static final int EVIL_GUARD = Config.FACTION_EVIL_GUARD_NPCID;
private static final int MANAGER = 500;
// Other
private static final String[] TEXTS =
{
@ -48,7 +46,6 @@ public final class FactionSystem extends AbstractNpcAI
addStartNpc(MANAGER);
addTalkId(MANAGER);
addFirstTalkId(MANAGER);
addAggroRangeEnterId(EVIL_GUARD, GOOD_GUARD);
if (Config.FACTION_SYSTEM_ENABLED)
{
@ -168,16 +165,6 @@ public final class FactionSystem extends AbstractNpcAI
}
}
@Override
public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((player.isGood() && (npc.getId() == EVIL_GUARD)) || (player.isEvil() && (npc.getId() == GOOD_GUARD))))
{
addAttackDesire(npc, player);
}
return super.onAggroRangeEnter(npc, player, isSummon);
}
public static void main(String[] args)
{
new FactionSystem();

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/npcs.xsd">
<npc id="500" displayId="34210" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<npc id="500" displayId="9000" name="Faction Manager" usingServerSideName="true" title=" " usingServerSideTitle="true" type="L2Npc">
<race>ELF</race>
<sex>FEMALE</sex>
<stats>

View File

@ -1047,7 +1047,6 @@ public final class Config
public static Map<String, Location> COMMUNITY_AVAILABLE_TELEPORTS;
public static boolean FACTION_SYSTEM_ENABLED;
public static Location FACTION_STARTING_LOCATION;
public static int FACTION_MANAGER_NPCID;
public static Location FACTION_MANAGER_LOCATION;
public static Location FACTION_GOOD_BASE_LOCATION;
public static Location FACTION_EVIL_BASE_LOCATION;
@ -1056,8 +1055,6 @@ public final class Config
public static int FACTION_GOOD_NAME_COLOR;
public static int FACTION_EVIL_NAME_COLOR;
public static boolean FACTION_GUARDS_ENABLED;
public static int FACTION_GOOD_GUARD_NPCID;
public static int FACTION_EVIL_GUARD_NPCID;
public static boolean FACTION_RESPAWN_AT_BASE;
public static boolean FACTION_AUTO_NOBLESS;
public static boolean FACTION_SPECIFIC_CHAT;
@ -2386,7 +2383,6 @@ public final class Config
FACTION_SYSTEM_ENABLED = Boolean.valueOf(FactionSystem.getBoolean("EnableFactionSystem", false));
tempString = FactionSystem.getString("StartingLocation", "85332,16199,-1252").split(",");
FACTION_STARTING_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]));
FACTION_MANAGER_NPCID = FactionSystem.getInt("FactionManagerNpcId", 500);
tempString = FactionSystem.getString("ManagerSpawnLocation", "85712,15974,-1260,26808").split(",");
FACTION_MANAGER_LOCATION = new Location(Integer.parseInt(tempString[0]), Integer.parseInt(tempString[1]), Integer.parseInt(tempString[2]), tempString[3] != null ? Integer.parseInt(tempString[3]) : 0);
tempString = FactionSystem.getString("GoodBaseLocation", "45306,48878,-3058").split(",");
@ -2398,8 +2394,6 @@ public final class Config
FACTION_GOOD_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("GoodNameColor", "00FF00"));
FACTION_EVIL_NAME_COLOR = Integer.decode("0x" + FactionSystem.getString("EvilNameColor", "0000FF"));
FACTION_GUARDS_ENABLED = FactionSystem.getBoolean("EnableFactionGuards", true);
FACTION_GOOD_GUARD_NPCID = FactionSystem.getInt("GoodGuardNpcId", 501);
FACTION_EVIL_GUARD_NPCID = FactionSystem.getInt("EvilGuardNpcId", 502);
FACTION_RESPAWN_AT_BASE = FactionSystem.getBoolean("RespawnAtFactionBase", true);
FACTION_AUTO_NOBLESS = FactionSystem.getBoolean("FactionAutoNobless", false);
FACTION_SPECIFIC_CHAT = FactionSystem.getBoolean("EnableFactionChat", true);

View File

@ -57,6 +57,14 @@ public class L2GuardInstance extends L2Attackable
{
return true;
}
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && attacker.isPlayable())
{
L2PcInstance player = attacker.getActingPlayer();
if ((player.isGood() && getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (player.isEvil() && getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME)))
{
return true;
}
}
return super.isAutoAttackable(attacker);
}

View File

@ -8310,6 +8310,10 @@ public final class L2PcInstance extends L2Playable
if (attacker instanceof L2GuardInstance)
{
if (Config.FACTION_SYSTEM_ENABLED && Config.FACTION_GUARDS_ENABLED && ((_isGood && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_EVIL_TEAM_NAME)) || (_isEvil && ((L2Npc) attacker).getTemplate().isClan(Config.FACTION_GOOD_TEAM_NAME))))
{
return true;
}
return (getReputation() < 0); // Guards attack only PK players.
}