Theorn AI.

Contributed by gigilo1968.
This commit is contained in:
MobiusDev 2017-10-29 23:04:28 +00:00
parent 785911f99c
commit 1bc62c8a01
30 changed files with 1350 additions and 87 deletions

View File

@ -0,0 +1,9 @@
<html><body>Theorn:<br>
Hey there! I'm researching the power of Heroes, and boy do I need lots of <font color="LEVEL">Skill Points</font> for it! Do you want to <font color="LEVEL">donate yours</font>? If things go well, <font color="LEVEL">you can earn additional SP!</font> Interested? Here's the trick.<br>
This research requires <font color="LEVEL">100,000 Adena</font> and <font color="LEVEL">500,000 SP</font>. <font color="LEVEL">If my experiment is a success, I can pay you in double the SP</font>! But <font color="LEVEL">if it fails, say goodbye to the SP</font>! Oh, and no refunds for your Adena. It's necessary for my research!<br>
<font color="LEVEL">And don't die! Or else you will lose the buff I give you, and lose out on rewards.</font><br>
And I'm kind of a night-owl, so don't expect me to be around to reward you in the daytime.<br>
Well, what do you say? I'm at the end of my experimental stages, so all that's left to do is to inject some SP into either the Flask of Darkness or Flask of Light. Here, I'll let you pick.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_1">"Let's try the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_1">"Flask of Light, I think."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>
Excellent! Emotions overwhelm me! Since our meeting, you have become even stronger. So until the completion is very little do you want to continue? Can stop here<br>
<font color="LEVEL">But if you want to continue, then I'll understand everything without words ...But think well, because if this attempt turns out you are all SP who were before.</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_4">"I think 16x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_5">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_5">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Theorn:<br>
I knew it! You chose well.<br>
Which leads me to ask... do you want to help again? Come on, it will really help me obtain - I mean, us obtain - the power of Heroes. Ahem.<br>
<font color="LEVEL">But if you fail this time, all of your accumulated SP will kiss you goodbye. What do you think?</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_1">"I think 2x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_2">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_2">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Theorn:<br>
What a surprise! Incredible! Thanks to you I know the power of the hero! By our next meeting myself will become a hero. Ho-ho-ho-ho I will always remember you.<br>
From this benefit not only me! you can get <font color="LEVEL">32 times more SP.</font> Which made at the first study. This is called mutually beneficial cooperation! Ha-ha! Well, see you friend<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_5">"Give 32x SP."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>You are a genius!<br>
I dreamed that you'd succeed last night -- and I was right! What talent. Do you wanna try again? <br>
<font color="LEVEL">If you fail, you'll lose all your SP, but... you don't really need them, do you?</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_2">"I think 4x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_3">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_3">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>
I knew there was something unusual about you. You're a rare genius! Which means you should of course try again. Right? <br>
<font color="LEVEL">If you fail, you lose all your SP, but you don't really care, right?</font>
<br><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_3">"I think 8x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_4">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_4">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,283 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.areas.HellboundIsland.Theron;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import ai.AbstractNpcAI;
/**
* Theorn AI
* @author Gigi, Mobius
* @date 2017-10-26 - [22:17:03]
*/
public class Theorn extends AbstractNpcAI
{
// NPC
private static final int THERON = 33897;
// Skills
private static final int REWARD_BUFF_X2 = 16136;
private static final int REWARD_BUFF_X4 = 16137;
private static final int REWARD_BUFF_X8 = 16138;
private static final int REWARD_BUFF_X16 = 16139;
private static final int REWARD_BUFF_X32 = 16140;
private static final Skill RESEARCH_SUCCESS_1 = SkillData.getInstance().getSkill(16141, 1);
private static final Skill RESEARCH_SUCCESS_2 = SkillData.getInstance().getSkill(16142, 1);
private static final Skill RESEARCH_SUCCESS_3 = SkillData.getInstance().getSkill(16143, 1);
private static final Skill RESEARCH_SUCCESS_4 = SkillData.getInstance().getSkill(16144, 1);
private static final Skill RESEARCH_SUCCESS_5 = SkillData.getInstance().getSkill(16145, 1);
private static final Skill RESEARCH_FAIL = SkillData.getInstance().getSkill(16146, 1);
private Theorn()
{
addStartNpc(THERON);
addTalkId(THERON);
addFirstTalkId(THERON);
addSpawnId(THERON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
switch (event)
{
case "BROADCAST_TEXT":
{
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_WILL_LEAVE_THIS_PLACE_ONCE_DAY_BREAKS_IF_YOU_WANT_A_REWARD_HURRY_UP_AND_GET_IT_BE_CAREFUL_NOT_TO_LOSE_THE_RESEARCH_REWARDS_IN_THE_VOID);
startQuestTimer("BROADCAST_TEXT", (60 + getRandom(10)) * 3000, npc, null);
break;
}
case "light_1":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_1, true);
break;
}
case "darkness_1":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_1, false);
break;
}
case "light_2":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_2, true);
break;
}
case "darkness_2":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_2, false);
break;
}
case "light_3":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_3, true);
break;
}
case "darkness_3":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_3, false);
break;
}
case "light_4":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_4, true);
break;
}
case "darkness_4":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_4, false);
break;
}
case "light_5":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_5, true);
break;
}
case "darkness_5":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_5, false);
break;
}
case "stop_1":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X2) != null))
{
addExpAndSp(player, 0, 1000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_2, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_2":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X4) != null))
{
addExpAndSp(player, 0, 2000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_4, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_3":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X8) != null))
{
addExpAndSp(player, 0, 4000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_8, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_4":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X16) != null))
{
addExpAndSp(player, 0, 8000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_16, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_5":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X32) != null))
{
addExpAndSp(player, 0, 16000000);
showOnScreenMsg(player, NpcStringId.S1_ACQUIRED_32_TIMES_THE_SKILL_POINTS_AS_A_REWARD, ExShowScreenMessage.TOP_CENTER, 5000, player.getName());
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "REMOVE_BUFF":
{
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X2) != null)
{
return "33897_x2.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X4) != null)
{
return "33897_x4.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X8) != null)
{
return "33897_x8.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X16) != null)
{
return "33897_x16.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X32) != null)
{
return "33897_x32.html";
}
return "33897.html";
}
private void tryLuck(L2Npc npc, L2PcInstance player, Skill skill, boolean isLight)
{
takeItems(player, Inventory.ADENA_ID, 100000);
player.setSp(player.getSp() - 500000);
if (isLight ? getRandom(10) > 4 : getRandom(10) < 5)
{
SkillCaster.triggerCast(npc, player, skill);
return;
}
SkillCaster.triggerCast(npc, player, RESEARCH_FAIL);
startQuestTimer("REMOVE_BUFF", 3000, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
startQuestTimer("BROADCAST_TEXT", 3000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new Theorn();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Theorn:<br>
What? You don't even have the basic funding or <font color="LEVEL">Skill Points</font>? What do you think I survive on, grass? Go hunt or something and make ends meet!
</body></html>

View File

@ -270,5 +270,8 @@
<npc id="33903" x="-28385" y="254258" z="-2192" heading="11076" respawnTime="60sec" /> <!-- Philline -->
<npc id="33901" x="-28009" y="253706" z="-2200" respawnTime="60sec" /> <!-- Wormhole -->
</group>
<group name="nightTime" spawnByDefault="false">
<npc id="33897" x="-27838" y="254965" z="-2192" heading="32767" respawnTime="60sec" /> <!-- Theorn -->
</group>
</spawn>
</list>

View File

@ -497,118 +497,207 @@
<reuseDelay>10000</reuseDelay>
</skill>
<skill id="16135" toLevel="1" name="Begin Research">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>4</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_0</abnormalVisualEffect>
<effectRange>900</effectRange>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<reuseDelay>2000</reuseDelay>
<hitTime>4000</hitTime>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16136" toLevel="1" name="Reward x 2">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 2 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_1</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16137" toLevel="1" name="Reward x 4">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 4 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>2</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_2</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16138" toLevel="1" name="Reward x 8">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 8 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>3</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_3</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16139" toLevel="1" name="Reward x 16">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 16 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>4</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_4</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16140" toLevel="1" name="Reward x 32">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 32 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>5</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_5</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16141" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>1</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_0</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16136</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16142" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>2</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_1</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16137</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16143" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>3</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_2</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16138</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16144" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>4</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_3</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16139</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16145" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>5</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_4</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16140</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16146" toLevel="1" name="Research Fail">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>1</abnormalTime>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>500</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16147" toLevel="7" name="Fatal Wave">
<!-- AUTO GENERATED SKILL -->

View File

@ -0,0 +1,9 @@
<html><body>Theorn:<br>
Hey there! I'm researching the power of Heroes, and boy do I need lots of <font color="LEVEL">Skill Points</font> for it! Do you want to <font color="LEVEL">donate yours</font>? If things go well, <font color="LEVEL">you can earn additional SP!</font> Interested? Here's the trick.<br>
This research requires <font color="LEVEL">100,000 Adena</font> and <font color="LEVEL">500,000 SP</font>. <font color="LEVEL">If my experiment is a success, I can pay you in double the SP</font>! But <font color="LEVEL">if it fails, say goodbye to the SP</font>! Oh, and no refunds for your Adena. It's necessary for my research!<br>
<font color="LEVEL">And don't die! Or else you will lose the buff I give you, and lose out on rewards.</font><br>
And I'm kind of a night-owl, so don't expect me to be around to reward you in the daytime.<br>
Well, what do you say? I'm at the end of my experimental stages, so all that's left to do is to inject some SP into either the Flask of Darkness or Flask of Light. Here, I'll let you pick.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_1">"Let's try the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_1">"Flask of Light, I think."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>
Excellent! Emotions overwhelm me! Since our meeting, you have become even stronger. So until the completion is very little do you want to continue? Can stop here<br>
<font color="LEVEL">But if you want to continue, then I'll understand everything without words ...But think well, because if this attempt turns out you are all SP who were before.</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_4">"I think 16x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_5">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_5">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Theorn:<br>
I knew it! You chose well.<br>
Which leads me to ask... do you want to help again? Come on, it will really help me obtain - I mean, us obtain - the power of Heroes. Ahem.<br>
<font color="LEVEL">But if you fail this time, all of your accumulated SP will kiss you goodbye. What do you think?</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_1">"I think 2x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_2">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_2">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Theorn:<br>
What a surprise! Incredible! Thanks to you I know the power of the hero! By our next meeting myself will become a hero. Ho-ho-ho-ho I will always remember you.<br>
From this benefit not only me! you can get <font color="LEVEL">32 times more SP.</font> Which made at the first study. This is called mutually beneficial cooperation! Ha-ha! Well, see you friend<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_5">"Give 32x SP."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>You are a genius!<br>
I dreamed that you'd succeed last night -- and I was right! What talent. Do you wanna try again? <br>
<font color="LEVEL">If you fail, you'll lose all your SP, but... you don't really need them, do you?</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_2">"I think 4x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_3">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_3">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>
I knew there was something unusual about you. You're a rare genius! Which means you should of course try again. Right? <br>
<font color="LEVEL">If you fail, you lose all your SP, but you don't really care, right?</font>
<br><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_3">"I think 8x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_4">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_4">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,283 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.areas.HellboundIsland.Theron;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import ai.AbstractNpcAI;
/**
* Theorn AI
* @author Gigi, Mobius
* @date 2017-10-26 - [22:17:03]
*/
public class Theorn extends AbstractNpcAI
{
// NPC
private static final int THERON = 33897;
// Skills
private static final int REWARD_BUFF_X2 = 16136;
private static final int REWARD_BUFF_X4 = 16137;
private static final int REWARD_BUFF_X8 = 16138;
private static final int REWARD_BUFF_X16 = 16139;
private static final int REWARD_BUFF_X32 = 16140;
private static final Skill RESEARCH_SUCCESS_1 = SkillData.getInstance().getSkill(16141, 1);
private static final Skill RESEARCH_SUCCESS_2 = SkillData.getInstance().getSkill(16142, 1);
private static final Skill RESEARCH_SUCCESS_3 = SkillData.getInstance().getSkill(16143, 1);
private static final Skill RESEARCH_SUCCESS_4 = SkillData.getInstance().getSkill(16144, 1);
private static final Skill RESEARCH_SUCCESS_5 = SkillData.getInstance().getSkill(16145, 1);
private static final Skill RESEARCH_FAIL = SkillData.getInstance().getSkill(16146, 1);
private Theorn()
{
addStartNpc(THERON);
addTalkId(THERON);
addFirstTalkId(THERON);
addSpawnId(THERON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
switch (event)
{
case "BROADCAST_TEXT":
{
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_WILL_LEAVE_THIS_PLACE_ONCE_DAY_BREAKS_IF_YOU_WANT_A_REWARD_HURRY_UP_AND_GET_IT_BE_CAREFUL_NOT_TO_LOSE_THE_RESEARCH_REWARDS_IN_THE_VOID);
startQuestTimer("BROADCAST_TEXT", (60 + getRandom(10)) * 3000, npc, null);
break;
}
case "light_1":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_1, true);
break;
}
case "darkness_1":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_1, false);
break;
}
case "light_2":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_2, true);
break;
}
case "darkness_2":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_2, false);
break;
}
case "light_3":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_3, true);
break;
}
case "darkness_3":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_3, false);
break;
}
case "light_4":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_4, true);
break;
}
case "darkness_4":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_4, false);
break;
}
case "light_5":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_5, true);
break;
}
case "darkness_5":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_5, false);
break;
}
case "stop_1":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X2) != null))
{
addExpAndSp(player, 0, 1000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_2, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_2":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X4) != null))
{
addExpAndSp(player, 0, 2000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_4, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_3":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X8) != null))
{
addExpAndSp(player, 0, 4000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_8, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_4":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X16) != null))
{
addExpAndSp(player, 0, 8000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_16, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_5":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X32) != null))
{
addExpAndSp(player, 0, 16000000);
showOnScreenMsg(player, NpcStringId.S1_ACQUIRED_32_TIMES_THE_SKILL_POINTS_AS_A_REWARD, ExShowScreenMessage.TOP_CENTER, 5000, player.getName());
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "REMOVE_BUFF":
{
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X2) != null)
{
return "33897_x2.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X4) != null)
{
return "33897_x4.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X8) != null)
{
return "33897_x8.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X16) != null)
{
return "33897_x16.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X32) != null)
{
return "33897_x32.html";
}
return "33897.html";
}
private void tryLuck(L2Npc npc, L2PcInstance player, Skill skill, boolean isLight)
{
takeItems(player, Inventory.ADENA_ID, 100000);
player.setSp(player.getSp() - 500000);
if (isLight ? getRandom(10) > 4 : getRandom(10) < 5)
{
SkillCaster.triggerCast(npc, player, skill);
return;
}
SkillCaster.triggerCast(npc, player, RESEARCH_FAIL);
startQuestTimer("REMOVE_BUFF", 3000, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
startQuestTimer("BROADCAST_TEXT", 3000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new Theorn();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Theorn:<br>
What? You don't even have the basic funding or <font color="LEVEL">Skill Points</font>? What do you think I survive on, grass? Go hunt or something and make ends meet!
</body></html>

View File

@ -270,5 +270,8 @@
<npc id="33903" x="-28385" y="254258" z="-2192" heading="11076" respawnTime="60sec" /> <!-- Philline -->
<npc id="33901" x="-28009" y="253706" z="-2200" respawnTime="60sec" /> <!-- Wormhole -->
</group>
<group name="nightTime" spawnByDefault="false">
<npc id="33897" x="-27838" y="254965" z="-2192" heading="32767" respawnTime="60sec" /> <!-- Theorn -->
</group>
</spawn>
</list>

View File

@ -497,118 +497,207 @@
<reuseDelay>10000</reuseDelay>
</skill>
<skill id="16135" toLevel="1" name="Begin Research">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>4</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_0</abnormalVisualEffect>
<effectRange>900</effectRange>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<reuseDelay>2000</reuseDelay>
<hitTime>4000</hitTime>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16136" toLevel="1" name="Reward x 2">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 2 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_1</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16137" toLevel="1" name="Reward x 4">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 4 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>2</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_2</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16138" toLevel="1" name="Reward x 8">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 8 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>3</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_3</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16139" toLevel="1" name="Reward x 16">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 16 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>4</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_4</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16140" toLevel="1" name="Reward x 32">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 32 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>5</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_5</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16141" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>1</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_0</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16136</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16142" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>2</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_1</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16137</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16143" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>3</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_2</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16138</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16144" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>4</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_3</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16139</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16145" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>5</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_4</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16140</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16146" toLevel="1" name="Research Fail">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>1</abnormalTime>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>500</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16147" toLevel="7" name="Fatal Wave">
<!-- AUTO GENERATED SKILL -->

View File

@ -0,0 +1,9 @@
<html><body>Theorn:<br>
Hey there! I'm researching the power of Heroes, and boy do I need lots of <font color="LEVEL">Skill Points</font> for it! Do you want to <font color="LEVEL">donate yours</font>? If things go well, <font color="LEVEL">you can earn additional SP!</font> Interested? Here's the trick.<br>
This research requires <font color="LEVEL">100,000 Adena</font> and <font color="LEVEL">500,000 SP</font>. <font color="LEVEL">If my experiment is a success, I can pay you in double the SP</font>! But <font color="LEVEL">if it fails, say goodbye to the SP</font>! Oh, and no refunds for your Adena. It's necessary for my research!<br>
<font color="LEVEL">And don't die! Or else you will lose the buff I give you, and lose out on rewards.</font><br>
And I'm kind of a night-owl, so don't expect me to be around to reward you in the daytime.<br>
Well, what do you say? I'm at the end of my experimental stages, so all that's left to do is to inject some SP into either the Flask of Darkness or Flask of Light. Here, I'll let you pick.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_1">"Let's try the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_1">"Flask of Light, I think."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>
Excellent! Emotions overwhelm me! Since our meeting, you have become even stronger. So until the completion is very little do you want to continue? Can stop here<br>
<font color="LEVEL">But if you want to continue, then I'll understand everything without words ...But think well, because if this attempt turns out you are all SP who were before.</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_4">"I think 16x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_5">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_5">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Theorn:<br>
I knew it! You chose well.<br>
Which leads me to ask... do you want to help again? Come on, it will really help me obtain - I mean, us obtain - the power of Heroes. Ahem.<br>
<font color="LEVEL">But if you fail this time, all of your accumulated SP will kiss you goodbye. What do you think?</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_1">"I think 2x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_2">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_2">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Theorn:<br>
What a surprise! Incredible! Thanks to you I know the power of the hero! By our next meeting myself will become a hero. Ho-ho-ho-ho I will always remember you.<br>
From this benefit not only me! you can get <font color="LEVEL">32 times more SP.</font> Which made at the first study. This is called mutually beneficial cooperation! Ha-ha! Well, see you friend<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_5">"Give 32x SP."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>You are a genius!<br>
I dreamed that you'd succeed last night -- and I was right! What talent. Do you wanna try again? <br>
<font color="LEVEL">If you fail, you'll lose all your SP, but... you don't really need them, do you?</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_2">"I think 4x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_3">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_3">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Theorn:<br>
I knew there was something unusual about you. You're a rare genius! Which means you should of course try again. Right? <br>
<font color="LEVEL">If you fail, you lose all your SP, but you don't really care, right?</font>
<br><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn stop_3">"I think 8x SP is enough, don't you? I'll stop."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn darkness_4">"Sure, bring me the Flask of Darkness."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Theorn light_4">"I think I'm addicted to this. Give me the Flask of Light."</Button>
</body></html>

View File

@ -0,0 +1,283 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.areas.HellboundIsland.Theron;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.itemcontainer.Inventory;
import com.l2jmobius.gameserver.model.skills.AbnormalType;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import ai.AbstractNpcAI;
/**
* Theorn AI
* @author Gigi, Mobius
* @date 2017-10-26 - [22:17:03]
*/
public class Theorn extends AbstractNpcAI
{
// NPC
private static final int THERON = 33897;
// Skills
private static final int REWARD_BUFF_X2 = 16136;
private static final int REWARD_BUFF_X4 = 16137;
private static final int REWARD_BUFF_X8 = 16138;
private static final int REWARD_BUFF_X16 = 16139;
private static final int REWARD_BUFF_X32 = 16140;
private static final Skill RESEARCH_SUCCESS_1 = SkillData.getInstance().getSkill(16141, 1);
private static final Skill RESEARCH_SUCCESS_2 = SkillData.getInstance().getSkill(16142, 1);
private static final Skill RESEARCH_SUCCESS_3 = SkillData.getInstance().getSkill(16143, 1);
private static final Skill RESEARCH_SUCCESS_4 = SkillData.getInstance().getSkill(16144, 1);
private static final Skill RESEARCH_SUCCESS_5 = SkillData.getInstance().getSkill(16145, 1);
private static final Skill RESEARCH_FAIL = SkillData.getInstance().getSkill(16146, 1);
private Theorn()
{
addStartNpc(THERON);
addTalkId(THERON);
addFirstTalkId(THERON);
addSpawnId(THERON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
switch (event)
{
case "BROADCAST_TEXT":
{
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.I_WILL_LEAVE_THIS_PLACE_ONCE_DAY_BREAKS_IF_YOU_WANT_A_REWARD_HURRY_UP_AND_GET_IT_BE_CAREFUL_NOT_TO_LOSE_THE_RESEARCH_REWARDS_IN_THE_VOID);
startQuestTimer("BROADCAST_TEXT", (60 + getRandom(10)) * 3000, npc, null);
break;
}
case "light_1":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_1, true);
break;
}
case "darkness_1":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_1, false);
break;
}
case "light_2":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_2, true);
break;
}
case "darkness_2":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_2, false);
break;
}
case "light_3":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_3, true);
break;
}
case "darkness_3":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_3, false);
break;
}
case "light_4":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_4, true);
break;
}
case "darkness_4":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_4, false);
break;
}
case "light_5":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_5, true);
break;
}
case "darkness_5":
{
if ((player.getSp() < 500000) || (player.getAdena() < 100000))
{
htmltext = "nosp.html";
break;
}
tryLuck(npc, player, RESEARCH_SUCCESS_5, false);
break;
}
case "stop_1":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X2) != null))
{
addExpAndSp(player, 0, 1000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_2, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_2":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X4) != null))
{
addExpAndSp(player, 0, 2000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_4, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_3":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X8) != null))
{
addExpAndSp(player, 0, 4000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_8, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_4":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X16) != null))
{
addExpAndSp(player, 0, 8000000);
showOnScreenMsg(player, NpcStringId.YOU_HAVE_ACQUIRED_SP_X_16, ExShowScreenMessage.TOP_CENTER, 5000);
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "stop_5":
{
if ((player != null) && !player.isDead() && (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X32) != null))
{
addExpAndSp(player, 0, 16000000);
showOnScreenMsg(player, NpcStringId.S1_ACQUIRED_32_TIMES_THE_SKILL_POINTS_AS_A_REWARD, ExShowScreenMessage.TOP_CENTER, 5000, player.getName());
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
}
break;
}
case "REMOVE_BUFF":
{
player.getEffectList().stopEffects(AbnormalType.STAR_AGATHION_EXP_SP_BUFF1);
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X2) != null)
{
return "33897_x2.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X4) != null)
{
return "33897_x4.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X8) != null)
{
return "33897_x8.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X16) != null)
{
return "33897_x16.html";
}
else if (player.getEffectList().getBuffInfoBySkillId(REWARD_BUFF_X32) != null)
{
return "33897_x32.html";
}
return "33897.html";
}
private void tryLuck(L2Npc npc, L2PcInstance player, Skill skill, boolean isLight)
{
takeItems(player, Inventory.ADENA_ID, 100000);
player.setSp(player.getSp() - 500000);
if (isLight ? getRandom(10) > 4 : getRandom(10) < 5)
{
SkillCaster.triggerCast(npc, player, skill);
return;
}
SkillCaster.triggerCast(npc, player, RESEARCH_FAIL);
startQuestTimer("REMOVE_BUFF", 3000, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
startQuestTimer("BROADCAST_TEXT", 3000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new Theorn();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Theorn:<br>
What? You don't even have the basic funding or <font color="LEVEL">Skill Points</font>? What do you think I survive on, grass? Go hunt or something and make ends meet!
</body></html>

View File

@ -272,5 +272,8 @@
<npc id="33901" x="-28009" y="253706" z="-2200" respawnTime="60sec" /> <!-- Wormhole -->
<npc id="34230" x="-29304" y="257276" z="-2160" heading="59261" respawnTime="60sec" /> <!-- Sporcha -->
</group>
<group name="nightTime" spawnByDefault="false">
<npc id="33897" x="-27838" y="254965" z="-2192" heading="32767" respawnTime="60sec" /> <!-- Theorn -->
</group>
</spawn>
</list>

View File

@ -497,118 +497,207 @@
<reuseDelay>10000</reuseDelay>
</skill>
<skill id="16135" toLevel="1" name="Begin Research">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>4</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_0</abnormalVisualEffect>
<effectRange>900</effectRange>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<reuseDelay>2000</reuseDelay>
<hitTime>4000</hitTime>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16136" toLevel="1" name="Reward x 2">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 2 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_1</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16137" toLevel="1" name="Reward x 4">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 4 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>2</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_2</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16138" toLevel="1" name="Reward x 8">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 8 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>3</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_3</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16139" toLevel="1" name="Reward x 16">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 16 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>4</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_4</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16140" toLevel="1" name="Reward x 32">
<!-- AUTO GENERATED SKILL -->
<!-- Hero's powers give you x 32 the rewards. Disappears upon death or expiration. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalLvl>5</abnormalLvl>
<abnormalTime>300</abnormalTime>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_5</abnormalVisualEffect>
<operateType>A2</operateType>
<hitTime>1000</hitTime>
<hitTime>4000</hitTime>
<reuseDelay>2000</reuseDelay>
<effectPoint>1</effectPoint>
<isMagic>1</isMagic>
<isMagic>4</isMagic>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16141" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>1</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_0</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16136</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16142" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>2</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_1</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16137</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16143" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>3</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_2</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16138</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16144" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>4</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_3</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16139</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16145" toLevel="1" name="Research Success">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>4</abnormalTime>
<abnormalLvl>5</abnormalLvl>
<abnormalType>STAR_AGATHION_EXP_SP_BUFF1</abnormalType>
<abnormalVisualEffect>STARS_4</abnormalVisualEffect>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>4000</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<endEffects>
<effect name="CallSkill">
<skillId>16140</skillId>
<skillLevel>1</skillLevel>
</effect>
</endEffects>
</skill>
<skill id="16146" toLevel="1" name="Research Fail">
<!-- AUTO GENERATED SKILL -->
<!-- Researching the Heroes' Power. -->
<icon>icon.etc_deco_star_i00</icon>
<abnormalTime>1</abnormalTime>
<operateType>A2</operateType>
<castRange>900</castRange>
<effectPoint>1</effectPoint>
<isMagic>4</isMagic>
<hitTime>500</hitTime>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16147" toLevel="7" name="Fatal Wave">
<!-- AUTO GENERATED SKILL -->