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
+
+