From 8747270265cad45977a611e41591d1caea7c662f Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 22 Apr 2017 10:18:04 +0000 Subject: [PATCH] Clan Advent. Contributed by Mathael. --- .../scripts/village_master/Clan/Clan.java | 78 +++++++- .../game/data/stats/skills/19000-19099.xml | 185 +++++++++++++++++- .../scripts/village_master/Clan/Clan.java | 78 +++++++- .../game/data/stats/skills/19000-19099.xml | 185 +++++++++++++++++- 4 files changed, 504 insertions(+), 22 deletions(-) diff --git a/L2J_Mobius_Helios/dist/game/data/scripts/village_master/Clan/Clan.java b/L2J_Mobius_Helios/dist/game/data/scripts/village_master/Clan/Clan.java index f002d935de..7e30fd3ddf 100644 --- a/L2J_Mobius_Helios/dist/game/data/scripts/village_master/Clan/Clan.java +++ b/L2J_Mobius_Helios/dist/game/data/scripts/village_master/Clan/Clan.java @@ -19,16 +19,26 @@ package village_master.Clan; import java.util.HashMap; import java.util.Map; +import com.l2jmobius.gameserver.model.L2Clan; +import com.l2jmobius.gameserver.model.L2ClanMember; import com.l2jmobius.gameserver.model.actor.L2Npc; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import ai.AbstractNpcAI; +import com.l2jmobius.gameserver.model.events.EventType; +import com.l2jmobius.gameserver.model.events.ListenerRegisterType; +import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent; +import com.l2jmobius.gameserver.model.events.annotations.RegisterType; +import com.l2jmobius.gameserver.model.events.impl.character.player.*; +import com.l2jmobius.gameserver.model.holders.SkillHolder; /** * @author UnAfraid */ public final class Clan extends AbstractNpcAI { + private final SkillHolder CLAN_ADVENT = new SkillHolder(19009, 1); + // @formatter:off private static final int[] NPCS = { @@ -86,7 +96,73 @@ public final class Clan extends AbstractNpcAI { return "9000-01.htm"; } - + + @RegisterEvent(EventType.ON_PLAYER_LOGIN) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerLogin(OnPlayerLogin event) { + if(event.getActiveChar().isClanLeader()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_LOGOUT) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerLogout(OnPlayerLogout event) { + if(event.getActiveChar().isClanLeader()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Remove Clan Advent effect when leader log off + member.getPlayerInstance().getEffectList().stopSkillEffects(true, CLAN_ADVENT.getSkill()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_PROFESSION_CHANGE) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onProfessionChange(OnPlayerProfessionChange event) + { + final L2PcInstance activeChar = event.getActiveChar(); + if(activeChar.isClanLeader() || (activeChar.getClan() != null && activeChar.getClan().getLeader().isOnline())) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_CLAN_JOIN) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerClanJoin(OnPlayerClanJoin event) + { + final L2ClanMember activeChar = event.getActiveChar(); + if(activeChar.getClan() != null && activeChar.getClan().getLeader().isOnline()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_CLAN_LEFT) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerClanLeft(OnPlayerClanLeft event) + { + final L2ClanMember activeChar = event.getActiveChar(); + if(activeChar.getClan() != null && activeChar.getClan().getLeader().isOnline()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + public static void main(String[] args) { new Clan(); diff --git a/L2J_Mobius_Helios/dist/game/data/stats/skills/19000-19099.xml b/L2J_Mobius_Helios/dist/game/data/stats/skills/19000-19099.xml index 11489a8246..29ec51c38e 100644 --- a/L2J_Mobius_Helios/dist/game/data/stats/skills/19000-19099.xml +++ b/L2J_Mobius_Helios/dist/game/data/stats/skills/19000-19099.xml @@ -82,12 +82,67 @@ - icon.skill19004 P 5 1 + + + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + PER + + @@ -126,7 +181,7 @@ - + icon.skill19007 A1 @@ -141,13 +196,18 @@ 1800000 OTHERS SINGLE + 5 + 3031 + + + - + icon.skill19008 A1 @@ -161,12 +221,24 @@ 3600000 SELF SINGLE + 100 + 3031 + + + 100 + + + 100 + + + 100 + + - icon.skill19009 A2 @@ -188,6 +260,30 @@ SELF PLEDGE FRIEND + + + 5 + PER + + + 5 + PER + + + 5 + PER + + + 6 + PER + + + 5 + + + 5 + + @@ -202,6 +298,8 @@ 3600000 SELF SINGLE + 50 + 3031 @@ -212,7 +310,7 @@ 85 - + icon.skill19012 A2 @@ -235,9 +333,18 @@ SELF PLEDGE FRIEND + 150 + 1785 + + + + 0.5 + PER + + - + icon.skill19013 A1 @@ -255,9 +362,16 @@ SELF PLEDGE FRIEND + 30 + 3031 + + DEBUFF + 100 + 100 + - + icon.SKILL19014 A2 @@ -279,10 +393,25 @@ SELF PLEDGE FRIEND + 30 + 3031 + + + BLOCK_HP + + + BLOCK_MP + + + + -100 + ALL + + - + icon.skill19015 A2 2500 @@ -302,10 +431,22 @@ SELF PLEDGE FRIEND + 50 + 3031 + + + 3 + PER + + + 20 + DIFF + + - + icon.skill19016 A2 2500 @@ -325,6 +466,18 @@ SELF PLEDGE FRIEND + 50 + 3031 + + + 3 + PER + + + 3 + PER + + @@ -352,9 +505,10 @@ SELF POINT_BLANK NOT_FRIEND + 30 + 3031 - icon.skill19008 A1 @@ -370,6 +524,17 @@ SELF POINT_BLANK FRIEND + + + 100 + + + 100 + + + 100 + + diff --git a/L2J_Mobius_Underground/dist/game/data/scripts/village_master/Clan/Clan.java b/L2J_Mobius_Underground/dist/game/data/scripts/village_master/Clan/Clan.java index f002d935de..7e30fd3ddf 100644 --- a/L2J_Mobius_Underground/dist/game/data/scripts/village_master/Clan/Clan.java +++ b/L2J_Mobius_Underground/dist/game/data/scripts/village_master/Clan/Clan.java @@ -19,16 +19,26 @@ package village_master.Clan; import java.util.HashMap; import java.util.Map; +import com.l2jmobius.gameserver.model.L2Clan; +import com.l2jmobius.gameserver.model.L2ClanMember; import com.l2jmobius.gameserver.model.actor.L2Npc; import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; import ai.AbstractNpcAI; +import com.l2jmobius.gameserver.model.events.EventType; +import com.l2jmobius.gameserver.model.events.ListenerRegisterType; +import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent; +import com.l2jmobius.gameserver.model.events.annotations.RegisterType; +import com.l2jmobius.gameserver.model.events.impl.character.player.*; +import com.l2jmobius.gameserver.model.holders.SkillHolder; /** * @author UnAfraid */ public final class Clan extends AbstractNpcAI { + private final SkillHolder CLAN_ADVENT = new SkillHolder(19009, 1); + // @formatter:off private static final int[] NPCS = { @@ -86,7 +96,73 @@ public final class Clan extends AbstractNpcAI { return "9000-01.htm"; } - + + @RegisterEvent(EventType.ON_PLAYER_LOGIN) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerLogin(OnPlayerLogin event) { + if(event.getActiveChar().isClanLeader()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_LOGOUT) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerLogout(OnPlayerLogout event) { + if(event.getActiveChar().isClanLeader()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Remove Clan Advent effect when leader log off + member.getPlayerInstance().getEffectList().stopSkillEffects(true, CLAN_ADVENT.getSkill()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_PROFESSION_CHANGE) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onProfessionChange(OnPlayerProfessionChange event) + { + final L2PcInstance activeChar = event.getActiveChar(); + if(activeChar.isClanLeader() || (activeChar.getClan() != null && activeChar.getClan().getLeader().isOnline())) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_CLAN_JOIN) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerClanJoin(OnPlayerClanJoin event) + { + final L2ClanMember activeChar = event.getActiveChar(); + if(activeChar.getClan() != null && activeChar.getClan().getLeader().isOnline()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + + @RegisterEvent(EventType.ON_PLAYER_CLAN_LEFT) + @RegisterType(ListenerRegisterType.GLOBAL_PLAYERS) + public void onPlayerClanLeft(OnPlayerClanLeft event) + { + final L2ClanMember activeChar = event.getActiveChar(); + if(activeChar.getClan() != null && activeChar.getClan().getLeader().isOnline()) { + final L2Clan clan = event.getActiveChar().getClan(); + clan.getMembers().forEach(member -> { + // Starting Clan Advent when leader log on + CLAN_ADVENT.getSkill().applyEffects(member.getPlayerInstance(), member.getPlayerInstance()); + }); + } + } + public static void main(String[] args) { new Clan(); diff --git a/L2J_Mobius_Underground/dist/game/data/stats/skills/19000-19099.xml b/L2J_Mobius_Underground/dist/game/data/stats/skills/19000-19099.xml index 11489a8246..29ec51c38e 100644 --- a/L2J_Mobius_Underground/dist/game/data/stats/skills/19000-19099.xml +++ b/L2J_Mobius_Underground/dist/game/data/stats/skills/19000-19099.xml @@ -82,12 +82,67 @@ - icon.skill19004 P 5 1 + + + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + 3 + 4 + 5 + 6 + 7 + + + PER + + @@ -126,7 +181,7 @@ - + icon.skill19007 A1 @@ -141,13 +196,18 @@ 1800000 OTHERS SINGLE + 5 + 3031 + + + - + icon.skill19008 A1 @@ -161,12 +221,24 @@ 3600000 SELF SINGLE + 100 + 3031 + + + 100 + + + 100 + + + 100 + + - icon.skill19009 A2 @@ -188,6 +260,30 @@ SELF PLEDGE FRIEND + + + 5 + PER + + + 5 + PER + + + 5 + PER + + + 6 + PER + + + 5 + + + 5 + + @@ -202,6 +298,8 @@ 3600000 SELF SINGLE + 50 + 3031 @@ -212,7 +310,7 @@ 85 - + icon.skill19012 A2 @@ -235,9 +333,18 @@ SELF PLEDGE FRIEND + 150 + 1785 + + + + 0.5 + PER + + - + icon.skill19013 A1 @@ -255,9 +362,16 @@ SELF PLEDGE FRIEND + 30 + 3031 + + DEBUFF + 100 + 100 + - + icon.SKILL19014 A2 @@ -279,10 +393,25 @@ SELF PLEDGE FRIEND + 30 + 3031 + + + BLOCK_HP + + + BLOCK_MP + + + + -100 + ALL + + - + icon.skill19015 A2 2500 @@ -302,10 +431,22 @@ SELF PLEDGE FRIEND + 50 + 3031 + + + 3 + PER + + + 20 + DIFF + + - + icon.skill19016 A2 2500 @@ -325,6 +466,18 @@ SELF PLEDGE FRIEND + 50 + 3031 + + + 3 + PER + + + 3 + PER + + @@ -352,9 +505,10 @@ SELF POINT_BLANK NOT_FRIEND + 30 + 3031 - icon.skill19008 A1 @@ -370,6 +524,17 @@ SELF POINT_BLANK FRIEND + + + 100 + + + 100 + + + 100 + +