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),