From 6736927ebce74a7950aac0d6ec8497a58c4b87ea Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Wed, 23 Oct 2019 10:17:37 +0000
Subject: [PATCH] Clan Advent skill changes. Contributed by NviX.
---
.../village_master/ClanMaster/ClanMaster.java | 105 ++++++--
.../game/data/stats/skills/19000-19099.xml | 232 ++++++++++++++++--
.../l2jmobius/gameserver/model/clan/Clan.java | 3 +-
.../gameserver/model/skills/CommonSkill.java | 1 -
4 files changed, 307 insertions(+), 34 deletions(-)
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/village_master/ClanMaster/ClanMaster.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/village_master/ClanMaster/ClanMaster.java
index f8a94950e2..33efef1576 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/village_master/ClanMaster/ClanMaster.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/village_master/ClanMaster/ClanMaster.java
@@ -21,6 +21,7 @@ import java.util.Map;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
+import org.l2jmobius.gameserver.model.clan.ClanMember;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
@@ -30,7 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLe
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfessionChange;
-import org.l2jmobius.gameserver.model.skills.CommonSkill;
+import org.l2jmobius.gameserver.model.holders.SkillHolder;
import ai.AbstractNpcAI;
@@ -65,6 +66,25 @@ public class ClanMaster extends AbstractNpcAI
LEADER_REQUIRED.put("9000-07.htm", "9000-07-no.htm");
}
+ private static final SkillHolder[] ADVENTS =
+ {
+ new SkillHolder(19009, 1),
+ new SkillHolder(19009, 2),
+ new SkillHolder(19009, 3),
+ new SkillHolder(19009, 4),
+ new SkillHolder(19009, 5),
+ new SkillHolder(19009, 6),
+ new SkillHolder(19009, 7),
+ new SkillHolder(19009, 8),
+ new SkillHolder(19009, 9),
+ new SkillHolder(19009, 10),
+ new SkillHolder(19009, 11),
+ new SkillHolder(19009, 12),
+ new SkillHolder(19009, 13),
+ new SkillHolder(19009, 14),
+ new SkillHolder(19009, 15)
+ };
+
private ClanMaster()
{
addStartNpc(NPCS);
@@ -95,19 +115,33 @@ public class ClanMaster extends AbstractNpcAI
public void onPlayerLogin(OnPlayerLogin event)
{
final PlayerInstance player = event.getPlayer();
- if (player.isClanLeader())
+ if (player.isClanLeader() || (player.getPledgeType() == 100))
{
player.getClan().getMembers().forEach(member ->
{
if (member.isOnline())
{
- CommonSkill.CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance());
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance());
}
});
}
- else if ((player.getClan() != null) && player.getClan().getLeader().isOnline())
+ else if (player.getClan() != null)
{
- CommonSkill.CLAN_ADVENT.getSkill().applyEffects(player, player);
+ if (player.getClan().getLeader().isOnline())
+ {
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(player, player);
+ }
+ else
+ {
+ for (ClanMember member : player.getClan().getMembers())
+ {
+ if (member.getPledgeType() == 100)
+ {
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(player, player);
+ break;
+ }
+ }
+ }
}
}
@@ -118,17 +152,29 @@ public class ClanMaster extends AbstractNpcAI
final PlayerInstance player = event.getPlayer();
if (player.isClanLeader())
{
- player.getClan().getMembers().forEach(member ->
+ boolean removing = true;
+ for (ClanMember member : player.getClan().getMembers())
{
- if (member.isOnline())
+ if (member.getPledgeType() == 100)
{
- member.getPlayerInstance().getEffectList().stopSkillEffects(true, CommonSkill.CLAN_ADVENT.getId());
+ removing = false;
+ break;
}
- });
- }
- if (player.getClan() != null)
- {
- player.getEffectList().stopSkillEffects(true, CommonSkill.CLAN_ADVENT.getId());
+ }
+ if (removing)
+ {
+ player.getClan().getMembers().forEach(member ->
+ {
+ if (member.isOnline())
+ {
+ member.getPlayerInstance().getEffectList().stopSkillEffects(true, ADVENTS[member.getClan().getLevel() - 1].getSkill());
+ }
+ });
+ if (player.getClan() != null)
+ {
+ player.getEffectList().stopSkillEffects(true, ADVENTS[player.getClan().getLevel() - 1].getSkill());
+ }
+ }
}
}
@@ -137,9 +183,23 @@ public class ClanMaster extends AbstractNpcAI
public void onProfessionChange(OnPlayerProfessionChange event)
{
final PlayerInstance player = event.getPlayer();
- if (player.isClanLeader() || ((player.getClan() != null) && player.getClan().getLeader().isOnline()))
+ if (player.isClanLeader() || (player.getClan() != null))
{
- CommonSkill.CLAN_ADVENT.getSkill().applyEffects(player, player);
+ if (player.getClan().getLeader().isOnline())
+ {
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(player, player);
+ }
+ else
+ {
+ for (ClanMember member : player.getClan().getMembers())
+ {
+ if (member.getPledgeType() == 100)
+ {
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(player, player);
+ break;
+ }
+ }
+ }
}
}
@@ -150,7 +210,18 @@ public class ClanMaster extends AbstractNpcAI
final PlayerInstance player = event.getClanMember().getPlayerInstance();
if (player.getClan().getLeader().isOnline())
{
- CommonSkill.CLAN_ADVENT.getSkill().applyEffects(player, player);
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(player, player);
+ }
+ else
+ {
+ for (ClanMember member : player.getClan().getMembers())
+ {
+ if (member.getPledgeType() == 100)
+ {
+ ADVENTS[player.getClan().getLevel() - 1].getSkill().applyEffects(player, player);
+ break;
+ }
+ }
}
}
@@ -158,7 +229,7 @@ public class ClanMaster extends AbstractNpcAI
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerClanLeft(OnPlayerClanLeft event)
{
- event.getClanMember().getPlayerInstance().getEffectList().stopSkillEffects(true, CommonSkill.CLAN_ADVENT.getId());
+ event.getClanMember().getPlayerInstance().getEffectList().stopSkillEffects(true, ADVENTS[event.getClan().getLevel() - 1].getSkill());
}
public static void main(String[] args)
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/skills/19000-19099.xml b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/skills/19000-19099.xml
index 82b0c60c4a..b0f95b3760 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/skills/19000-19099.xml
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/stats/skills/19000-19099.xml
@@ -276,27 +276,231 @@
PLEDGE
FRIEND
+
+ 10
+
+
+ 10
+
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+
+ PER
+
+
+
+ 50
+ 100
+ 150
+ 200
+ 250
+ 300
+
+ DIFF
+
+
+
+ 50
+ 100
+ 150
+ 200
+ 250
+ 300
+
+ DIFF
+
+
+
+ 50
+ 100
+ 150
+ 200
+ 250
+ 300
+
+ DIFF
+
+
+
+ 5
+ 10
+ 15
+ 20
+ 25
+ 30
+
+ DIFF
+
+
+
+ 5
+ 10
+ 20
+ 30
+ 40
+ 50
+
+ DIFF
+ FIRE
+
+
+
+ 5
+ 10
+ 20
+ 30
+ 40
+ 50
+
+ DIFF
+ WATER
+
+
+
+ 5
+ 10
+ 20
+ 30
+ 40
+ 50
+
+ DIFF
+ WIND
+
+
+
+ 5
+ 10
+ 20
+ 30
+ 40
+ 50
+
+ DIFF
+ EARTH
+
+
+
+ 5
+ 10
+ 20
+ 30
+ 40
+ 50
+
+ DIFF
+ HOLY
+
+
+
+ 5
+ 10
+ 20
+ 30
+ 40
+ 50
+
+ DIFF
+ DARK
+
- 5
- PER
-
-
- 5
- PER
-
-
- 5
- PER
+
+ 2863
+ 2891
+ 2934
+ 2978
+ 3022
+ 3090
+ 3136
+ 3183
+ 3230
+ 3278
+ 3316
+
+ DIFF
- 6
- PER
+
+ 2863
+ 2891
+ 2934
+ 2978
+ 3022
+ 3090
+ 3136
+ 3183
+ 3230
+ 3278
+ 3316
+
+ DIFF
+
+
+
+ 3844
+ 3863
+ 3882
+ 3901
+ 3917
+ 3936
+ 3954
+ 3973
+ 3990
+ 4009
+ 4029
+
+ DIFF
+
+
+
+ 3844
+ 3863
+ 3882
+ 3901
+ 3917
+ 3936
+ 3954
+ 3973
+ 3990
+ 4009
+ 4029
+
+ DIFF
- 5
+
+ 5
+ 6
+ 7
+ 8
+
- 5
+
+ 5
+ 6
+ 7
+ 8
+
+
+
+
+ 1
+ 2
+
+ PER
+
+
+
+ 1
+ 2
+
+ PER
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java
index c43d08ea77..8da37d3fc5 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java
@@ -62,7 +62,6 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable;
import org.l2jmobius.gameserver.model.interfaces.INamable;
import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse;
import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer;
-import org.l2jmobius.gameserver.model.skills.CommonSkill;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.variables.ClanVariables;
import org.l2jmobius.gameserver.model.zone.ZoneId;
@@ -528,7 +527,7 @@ public class Clan implements IIdentifiable, INamable
// remove Clan skills from Player
removeSkillEffects(player);
- player.getEffectList().stopSkillEffects(true, CommonSkill.CLAN_ADVENT.getId());
+ player.getEffectList().stopSkillEffects(true, 19009);
// remove Residential skills
if (player.getClan().getCastleId() > 0)
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/CommonSkill.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/CommonSkill.java
index 674c4577a5..4974256235 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/CommonSkill.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/skills/CommonSkill.java
@@ -53,7 +53,6 @@ public enum CommonSkill
IMPRIT_OF_DARKNESS(19035, 1),
ABILITY_OF_LIGHT(19032, 1),
ABILITY_OF_DARKNESS(19033, 1),
- CLAN_ADVENT(19009, 1),
HAIR_ACCESSORY_SET(17192, 1),
ALCHEMY_CUBE(17943, 1),
ALCHEMY_CUBE_RANDOM_SUCCESS(17966, 1),