Clan Advent skill changes.

Contributed by NviX.
This commit is contained in:
MobiusDevelopment 2019-10-23 10:17:37 +00:00
parent 23b976528a
commit 6736927ebc
4 changed files with 307 additions and 34 deletions

View File

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

View File

@ -276,27 +276,231 @@
<affectScope>PLEDGE</affectScope>
<affectObject>FRIEND</affectObject>
<effects>
<effect name="ExpModify">
<amount>10</amount>
</effect>
<effect name="SpModify">
<amount>10</amount>
</effect>
<effect name="VitalityExpRate">
<amount>
<value fromLevel="1" toLevel="3">1</value>
<value fromLevel="4" toLevel="6">2</value>
<value fromLevel="7" toLevel="9">3</value>
<value fromLevel="10" toLevel="12">4</value>
<value fromLevel="13" toLevel="15">5</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="AdditionalPotionCp">
<amount>
<value fromLevel="2" toLevel="3">50</value>
<value fromLevel="4" toLevel="6">100</value>
<value fromLevel="7" toLevel="9">150</value>
<value fromLevel="10" toLevel="12">200</value>
<value fromLevel="13" toLevel="14">250</value>
<value level="15">300</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="AdditionalPotionHp">
<amount>
<value fromLevel="2" toLevel="3">50</value>
<value fromLevel="4" toLevel="6">100</value>
<value fromLevel="7" toLevel="9">150</value>
<value fromLevel="10" toLevel="12">200</value>
<value fromLevel="13" toLevel="14">250</value>
<value level="15">300</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="AdditionalPotionMp">
<amount>
<value fromLevel="2" toLevel="3">50</value>
<value fromLevel="4" toLevel="6">100</value>
<value fromLevel="7" toLevel="9">150</value>
<value fromLevel="10" toLevel="12">200</value>
<value fromLevel="13" toLevel="14">250</value>
<value level="15">300</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="AttackAttributeAdd">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">15</value>
<value fromLevel="11" toLevel="12">20</value>
<value fromLevel="13" toLevel="14">25</value>
<value level="15">30</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="DefenceAttribute">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">20</value>
<value fromLevel="11" toLevel="12">30</value>
<value fromLevel="13" toLevel="14">40</value>
<value level="15">50</value>
</amount>
<mode>DIFF</mode>
<attribute>FIRE</attribute>
</effect>
<effect name="DefenceAttribute">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">20</value>
<value fromLevel="11" toLevel="12">30</value>
<value fromLevel="13" toLevel="14">40</value>
<value level="15">50</value>
</amount>
<mode>DIFF</mode>
<attribute>WATER</attribute>
</effect>
<effect name="DefenceAttribute">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">20</value>
<value fromLevel="11" toLevel="12">30</value>
<value fromLevel="13" toLevel="14">40</value>
<value level="15">50</value>
</amount>
<mode>DIFF</mode>
<attribute>WIND</attribute>
</effect>
<effect name="DefenceAttribute">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">20</value>
<value fromLevel="11" toLevel="12">30</value>
<value fromLevel="13" toLevel="14">40</value>
<value level="15">50</value>
</amount>
<mode>DIFF</mode>
<attribute>EARTH</attribute>
</effect>
<effect name="DefenceAttribute">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">20</value>
<value fromLevel="11" toLevel="12">30</value>
<value fromLevel="13" toLevel="14">40</value>
<value level="15">50</value>
</amount>
<mode>DIFF</mode>
<attribute>HOLY</attribute>
</effect>
<effect name="DefenceAttribute">
<amount>
<value fromLevel="3" toLevel="5">5</value>
<value fromLevel="6" toLevel="7">10</value>
<value fromLevel="8" toLevel="10">20</value>
<value fromLevel="11" toLevel="12">30</value>
<value fromLevel="13" toLevel="14">40</value>
<value level="15">50</value>
</amount>
<mode>DIFF</mode>
<attribute>DARK</attribute>
</effect>
<effect name="PAtk">
<amount>5</amount>
<mode>PER</mode>
</effect>
<effect name="PhysicalDefence">
<amount>5</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalDefence">
<amount>5</amount>
<mode>PER</mode>
<amount>
<value level="5">2863</value>
<value level="6">2891</value>
<value level="7">2934</value>
<value level="8">2978</value>
<value level="9">3022</value>
<value level="10">3090</value>
<value level="11">3136</value>
<value level="12">3183</value>
<value level="13">3230</value>
<value level="14">3278</value>
<value level="15">3316</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="MAtk">
<amount>6</amount>
<mode>PER</mode>
<amount>
<value level="5">2863</value>
<value level="6">2891</value>
<value level="7">2934</value>
<value level="8">2978</value>
<value level="9">3022</value>
<value level="10">3090</value>
<value level="11">3136</value>
<value level="12">3183</value>
<value level="13">3230</value>
<value level="14">3278</value>
<value level="15">3316</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="PhysicalDefence">
<amount>
<value level="5">3844</value>
<value level="6">3863</value>
<value level="7">3882</value>
<value level="8">3901</value>
<value level="9">3917</value>
<value level="10">3936</value>
<value level="11">3954</value>
<value level="12">3973</value>
<value level="13">3990</value>
<value level="14">4009</value>
<value level="15">4029</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="MagicalDefence">
<amount>
<value level="5">3844</value>
<value level="6">3863</value>
<value level="7">3882</value>
<value level="8">3901</value>
<value level="9">3917</value>
<value level="10">3936</value>
<value level="11">3954</value>
<value level="12">3973</value>
<value level="13">3990</value>
<value level="14">4009</value>
<value level="15">4029</value>
</amount>
<mode>DIFF</mode>
</effect>
<effect name="HpRegen">
<amount>5</amount>
<amount>
<value fromLevel="5" toLevel="8">5</value>
<value fromLevel="9" toLevel="11">6</value>
<value fromLevel="12" toLevel="14">7</value>
<value level="15">8</value>
</amount>
</effect>
<effect name="MpRegen">
<amount>5</amount>
<amount>
<value fromLevel="5" toLevel="8">5</value>
<value fromLevel="9" toLevel="11">6</value>
<value fromLevel="12" toLevel="14">7</value>
<value level="15">8</value>
</amount>
</effect>
<effect name="PhysicalSkillPower">
<amount>
<value fromLevel="10" toLevel="13">1</value>
<value fromLevel="14" toLevel="15">2</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicalSkillPower">
<amount>
<value fromLevel="10" toLevel="13">1</value>
<value fromLevel="14" toLevel="15">2</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>

View File

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

View File

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