Sync with L2JServer Feb 3rd 2015.
This commit is contained in:
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-01.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-01.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Subclass certification occurs at levels 65, 70, 75, and 80. New skills can be learned at each level.<br>
|
||||
You can learn skills regardless of your occupation.<br>
|
||||
Effects of the skills you learn through this certification can stack, even if you use the same skills.<br>
|
||||
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Trandon 33490.html">Back</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-02.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-02.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Dual class certification can be done when <font color="LEVEL">your main and dual class levels both hit 85, 90, 95, and 99</font>. You can get certificates by getting certified for each of them, and with the certificates, you get to learn skills.<br>
|
||||
Remember; <font color="LEVEL">skills you learned through dual certification only apply to main class and dual class</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490.html">"Okay, I see."</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-03.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-03.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
So what do you want to know about subclass certification?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-04.html">"I want to learn skills for certified subclasses."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-05.html">"I want to give up on skills and certification for certified subclasses."</Button>
|
||||
</body></html>
|
8
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-04.html
vendored
Normal file
8
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-04.html
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
If your subclass is strong enough, that class' power can be transferred to your main class.<br>
|
||||
But this is a dangerous feat. Your power must be proven through certification.<br>
|
||||
If you have a certificate, I will do a partial transfer on you.<br>
|
||||
Now, will you learn the subclass skills transferred onto the main class? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon learnSubSkill">"Of course!"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-07.html">"No, I want to give up."</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-05.html
vendored
Normal file
7
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-05.html
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Subclass skill certification and learning actually require tons of effort. Not just effort - it's more fundamental than that. The enormous pressure it puts on your soul... a normal person wouldn't be able to survive it.<br>
|
||||
Not that it's completely impossible if you use special herbs. Except that those herbs cost about <font color="LEVEL">10 million Adena</font> each. But I have the herbs handy, so as long as you pay up, I can cancel that certification for you.<br>
|
||||
If you cancel the certification, <font color="LEVEL">your current certification status disappears, and all the certificates and sealbooks you didn't learn skills with will be deleted</font>. So...what do you want to do?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon deleteSubSkill">"Yeah, I'll go ahead and cancel the certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-06.html">"I want to quit."</Button>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-06.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-06.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Good idea. Those herbs aren't the easiest to come by. And that nasty black wizard in the Dragon Valley is the only one who knows how to formulate the thing, so I wasn't too excited about this either.<br>
|
||||
And everything you got certified for... it's kind of a waste, right?
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-07.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-07.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Well, I guess I'm not one to stop you if you want to give up.<br>
|
||||
After all, it's no easy feat to use the power of a subclass in a main class.
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-08.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-08.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
So what do you want to do about dual class certification?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-09.html">"I want to learn certified dual class skills."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-10.html">"Actually, I'll just give up on the whole certification deal."</Button>
|
||||
</body></html>
|
8
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-09.html
vendored
Normal file
8
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-09.html
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
You can obtain new powers if <font color="LEVEL">your main class and dual class both exceed level 85</font>.<br1>
|
||||
You can't get these powers unless you are certified with your dual class and main class. i<br1>
|
||||
<font color="LEVEL">I'll help you obtain new powers if you have the certificates</font>.<br1>
|
||||
So, will you give me that dual class certificate and acquire the power contained within? <br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon learnDualSkill">"Of course!"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-11.html">"Whoa, wait a minute. Give me some time to get ready."</Button>
|
||||
</body></html>
|
10
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-10.html
vendored
Normal file
10
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-10.html
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Dual class certification and skill learning are actually incredible feats.<br1>
|
||||
As you may know from the subclass experience you had before, but it's not just about effort. The enormous pressure it puts on your soul is beyond your imagination.<br1>
|
||||
I will be usin the special herbs again to seal the certified skills you learned.<br1>
|
||||
This time though, the herb will cost you about <font color="LEVEL">20 million Adena</font>. I have them handy, so just pay up and I can cancel that certification for you. <br1>
|
||||
If you cancel the certification, <font color="LEVEL">your current certification status disappears, and all the certificates and sealbooks you didn't learn skills with will be deleted</font>.<br1>
|
||||
So...what do you want to do?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon deleteDualSkill">"Yeah, I'll go ahead and cancel the certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-06.html">"I want to quit."</Button>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-11.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-11.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Well, if you're not ready...I can't push you.<br1>
|
||||
Come again after you <font color="LEVEL">get your main and dual class levels to 85, 90, 95, and 99 and get certified</font>.
|
||||
</body></html>
|
9
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-12.html
vendored
Normal file
9
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-12.html
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
<html><body>Subclass Skill Certification:<br>
|
||||
Subclass certification is handled at various different levels. If your skills are good enough, I can certify you.<br>
|
||||
When you are ready, bring the certification to me and I will help you learn new skills.<br>
|
||||
Now, what level of certification do you want?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon subCertify 0">"Level 65 Skill Certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon subCertify 1">"Level 70 Skill Certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon subCertify 2">"Level 75 Skill Certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon subCertify 3">"Level 80 Skill Certification."</Button>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-13.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-13.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass Skill Certification:<br>
|
||||
To receive a subclass certification, you must come to me in the subclass state.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-14.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-14.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
I wanted to give you your certificate once your subclass certification was completed, but you don't have sufficient free weight and inventory space. Return to me when 80% of your weight and inventory is free.
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-15.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-15.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass Skill Certification:<br>
|
||||
You have already received the certificate for this occupation.<br>
|
||||
I cannot give you any more certificates for your current occupation. If you wish to obtain another certificate, please come back as an occupation from another slot.<br>
|
||||
However, Ertheia are still connected to gods. So it would be meaningless for them to start a new life as a subclass, which also means that subclass certificates are meaningless for them.<br>
|
||||
(Ertheia cannot add a subclass or get a subclass certificate.)
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-16.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-16.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass Ability Validation:<br>
|
||||
You are not yet ready to receive your level %level% certification. Work hard and come back later.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-17.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-17.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass Ability Validation:<br>
|
||||
You have already received the certificate for this skill.
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-18.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-18.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass Skill Certification:<br>
|
||||
You want to be certified for Level %level%? Once you are certified, you can't be recertified unless you cancel the certification by jumping through some hoops first. Even if you delete the class and build up your skill, it's a no go. You OK with that?<br>
|
||||
Do you still want to receive certification?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon giveSubCertify %index%">"Yes."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-19.html">"Not really."</Button>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-19.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-19.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass Skill Certification:<br>
|
||||
Choose carefully whether or not you decide to obtain certification. Once you have it, it will cost you a tremendous sum to cancel it.
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-20.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-20.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass Skill Certification:<br>
|
||||
This certification is to verify that your subclass has exceeded the required level.<br>
|
||||
When your mind is clear and you've decided how to proceed, come and see me and I'll provide you with an appropriate skill.<br>
|
||||
If you would like to cancel this certification, please let me know and I can cancel it.
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-21.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-21.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
To draw the power of a subclass, you must <font color="LEVEL">set your current class the main class, and bring the certificate to me.</font> Also, if you want to change any subclass certified skill you have acquired, you must abandon the skills and certification of the certified subclass. <font color="LEVEL">To abandon the subclass skills and certification, come and talk to me while you're in your main class.</font>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-22.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-22.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Sorry, but you need 10 million adena. You don't seem to have that much money.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-23.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-23.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Hmm... you have neither a certified certificate, nor any skills you've learned from certification. What are you trying to cancel?<br>
|
||||
This herb is very rare and expensive, you don't want to use it unless it's necessary.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-24.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-24.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
<font color="LEVEL">To get dual class certification, don't you think you should come as a dual class?</font><br>
|
||||
Please come back as a dual class.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-25.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-25.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
Your inventory and weight slots are still full.<br>
|
||||
<font color="LEVEL">Come back when your inventory and weight slots are less than 80% full.</font>
|
||||
</body></html>
|
9
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-26.html
vendored
Normal file
9
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-26.html
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
<html><body>Subclass/Dual Class Skill Certification:<br>
|
||||
You have to be at a <font color="LEVEL">high enough level for both main and subclass.</font> I can give you the certificate if you're strong enough.<br>
|
||||
After I give you the certificate, bring it back to me and I'll tell you about skills you can learn.<br>
|
||||
Now, what level of certification do you want?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon dualCertify 0">"Level 85 Skill Certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon dualCertify 1">"Level 90 Skill Certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon dualCertify 2">"Level 95 Skill Certification."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon dualCertify 3">"Level 99 Skill Certification."</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-27.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-27.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Haven't you already been certified for level <font color="LEVEL">%level%?</font><br1>
|
||||
Young ones these days...listen carefully.<br1>
|
||||
You can get <font color="LEVEL">certified a total of 4 times for the dual class - when your main and dual class levels are at 85, 90, 95, and 99.</font>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-28.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-28.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
It seems <font color="LEVEL">you are not yet qualified to get dual class certification for level %level%</font>.<br>
|
||||
You can get certified only when <font color="LEVEL">both your main class and dual class are level %level% or above</font>. So, come back after leveling up.
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-29.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-29.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
Congratulations.<br1>
|
||||
Let me give you a <font color="LEVEL">dual class certificate for level %level%.<br1>
|
||||
Come back with this certificate when you want to learn a dual certification skill.</font><br1>
|
||||
Keep in mind that <font color="LEVEL">you have to come back as your main class</font> to learn a dual certification skill.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-30.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-30.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
Just like subclass certification skills, you <font color="LEVEL">have to be your main class to learn dual certification skills</font>.<br1>
|
||||
Please come back as your main class.
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-31.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-31.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Hmm... You don't have a dual class certificate.<br1>
|
||||
<font color="LEVEL">To learn a dual certification skill, you need a dual class certificate</font>. Get certified!<br1>
|
||||
Luckily for you, I'm the person to talk to. Would you like to get certified?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-26.html">"Yes, I'll try it."</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-32.html
vendored
Normal file
7
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-32.html
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
To re-seal the power of the dual certification skill you learned, I need herbs.<br1>
|
||||
I need more herbs for this than for sealing subclass certification skills.<br1>
|
||||
Let me see how much it will cost...<br>
|
||||
Hmm... Just the herbs cost <font color="LEVEL">20 million Adena</font>.<br1>
|
||||
Bring me <font color="LEVEL">20 million Adena</font>.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-33.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Trandon/33490-33.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Sub/Dual Class Certificate Manager Trandon:<br>
|
||||
You don't have any unsealed certification skills yet.<br1>
|
||||
Come back when you want to seal the power of unsealed certification skills.
|
||||
</body></html>
|
12
trunk/dist/game/data/scripts/ai/npc/Trandon/33490.html
vendored
Normal file
12
trunk/dist/game/data/scripts/ai/npc/Trandon/33490.html
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<html><body>Subclass/Dual Class Certificate Manager Trandon:<br>
|
||||
Discipline and endless training to bring your subclass up to a certain level open your eyes to new powers.<br1>
|
||||
Now, let's see how much your training has taught you.<br1>
|
||||
By the way, to receive this certification, <font color="LEVEL">your current class must be the class of the subclass or dual class you want to be certified for; you also need to be level 65 or above, and in the case of the dual class, level 85 or above</font>.<br1>
|
||||
So, do you want to be certified? Or do you want to learn skills with the certification you received?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-01.html">"Wait...care to explain more about the subclass certification?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-12.html">"Certify me on the subclass."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-03.html">"I need to learn or forget a subclass skill."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-02.html">"So, uh, about this dual class certification..."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-26.html">"I need a dual class certification, please."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Trandon 33490-08.html">"I need to learn or forget a dual class skill, actually."</Button>
|
||||
</body></html>
|
463
trunk/dist/game/data/scripts/ai/npc/Trandon/Trandon.java
vendored
Normal file
463
trunk/dist/game/data/scripts/ai/npc/Trandon/Trandon.java
vendored
Normal file
@ -0,0 +1,463 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J DataPack
|
||||
*
|
||||
* This file is part of L2J DataPack.
|
||||
*
|
||||
* L2J DataPack 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.
|
||||
*
|
||||
* L2J DataPack 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.npc.Trandon;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.events.EventType;
|
||||
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
|
||||
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
|
||||
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerLogin;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerSubChange;
|
||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.model.variables.PlayerVariables;
|
||||
import com.l2jserver.gameserver.network.clientpackets.RequestAcquireSkill;
|
||||
|
||||
/**
|
||||
* Trandon AI.
|
||||
* @author malyelfik
|
||||
*/
|
||||
public final class Trandon extends AbstractNpcAI
|
||||
{
|
||||
// NPC
|
||||
private static final int NPC_ID = 33490;
|
||||
// Items
|
||||
private static final int SUB_CERTIFICATE = 10280;
|
||||
private static final int DUAL_CERTIFICATE = 36078;
|
||||
// Misc @formatter:off
|
||||
private static final int[] SUB_SKILL_LEVELS = {65, 70, 75, 80};
|
||||
private static final int[] DUAL_SKILL_LEVELS = {85, 90, 95, 99};
|
||||
// @formatter:on
|
||||
|
||||
private Trandon()
|
||||
{
|
||||
super(Trandon.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(NPC_ID);
|
||||
addFirstTalkId(NPC_ID);
|
||||
addTalkId(NPC_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
final String[] substrings = event.split(" ");
|
||||
if (substrings.length < 1)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String htmltext = substrings[0];
|
||||
switch (htmltext)
|
||||
{
|
||||
case "33490.html":
|
||||
case "33490-01.html":
|
||||
case "33490-02.html":
|
||||
case "33490-03.html":
|
||||
case "33490-04.html":
|
||||
case "33490-05.html":
|
||||
case "33490-06.html":
|
||||
case "33490-07.html":
|
||||
case "33490-08.html":
|
||||
case "33490-09.html":
|
||||
case "33490-10.html":
|
||||
case "33490-11.html":
|
||||
case "33490-19.html":
|
||||
break;
|
||||
case "33490-12.html":
|
||||
{
|
||||
if (player.getRace().equals(Race.ERTHEIA) || hasAllSubCertifications(player))
|
||||
{
|
||||
htmltext = "33490-15.html";
|
||||
}
|
||||
else if (!player.isSubClassActive())
|
||||
{
|
||||
htmltext = "33490-13.html";
|
||||
}
|
||||
else if (!player.isInventoryUnder90(false) || (player.getWeightPenalty() >= 2))
|
||||
{
|
||||
htmltext = "33490-14.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "subCertify":
|
||||
{
|
||||
if ((substrings.length < 2) || !player.isSubClassActive())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int index = Integer.parseInt(substrings[1]);
|
||||
if ((index < 0) || (index > 3))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int level = SUB_SKILL_LEVELS[index];
|
||||
if (player.getLevel() < level)
|
||||
{
|
||||
htmltext = getHtm(player.getHtmlPrefix(), "33490-16.html").replace("%level%", String.valueOf(level));
|
||||
}
|
||||
else if (player.getVariables().hasVariable(getSubSkillVariableName(player, level)))
|
||||
{
|
||||
htmltext = "33490-17.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = getHtm(player.getHtmlPrefix(), "33490-18.html");
|
||||
htmltext = htmltext.replace("%level%", String.valueOf(level));
|
||||
htmltext = htmltext.replace("%index%", String.valueOf(index));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "giveSubCertify":
|
||||
{
|
||||
if ((substrings.length < 2) || !player.isSubClassActive() || player.getRace().equals(Race.ERTHEIA))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int index = Integer.parseInt(substrings[1]);
|
||||
if ((index < 0) || (index > 3))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int level = SUB_SKILL_LEVELS[index];
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
if ((player.getLevel() < level) || vars.hasVariable(getSubSkillVariableName(player, level)))
|
||||
{
|
||||
htmltext = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
vars.set(getSubSkillVariableName(player, level), true);
|
||||
giveItems(player, SUB_CERTIFICATE, 1);
|
||||
htmltext = "33490-20.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "learnSubSkill":
|
||||
{
|
||||
if (player.getRace().equals(Race.ERTHEIA))
|
||||
{
|
||||
htmltext = "33490-15.html";
|
||||
}
|
||||
else if (player.isSubClassActive() || !hasQuestItems(player, SUB_CERTIFICATE))
|
||||
{
|
||||
htmltext = "33490-21.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
RequestAcquireSkill.showSubSkillList(player);
|
||||
htmltext = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "deleteSubSkill":
|
||||
{
|
||||
if (player.getRace().equals(Race.ERTHEIA))
|
||||
{
|
||||
htmltext = "33490-15.html";
|
||||
}
|
||||
else if (player.isSubClassActive())
|
||||
{
|
||||
htmltext = "33490-21.html";
|
||||
}
|
||||
else if (player.getAdena() < Config.FEE_DELETE_SUBCLASS_SKILLS)
|
||||
{
|
||||
htmltext = "33490-22.html";
|
||||
}
|
||||
else if (!hasSubCertificate(player))
|
||||
{
|
||||
htmltext = "33490-23.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = null; // TODO: Unknown html
|
||||
takeItems(player, SUB_CERTIFICATE, -1);
|
||||
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_SUBCLASS_SKILLS);
|
||||
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
for (int i = 1; i <= 3; i++)
|
||||
{
|
||||
for (int lv : SUB_SKILL_LEVELS)
|
||||
{
|
||||
vars.remove("SubSkill-" + i + "-" + lv);
|
||||
}
|
||||
}
|
||||
takeSkills(player, "SubSkillList");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "33490-26.html":
|
||||
{
|
||||
// TODO: What happens when you have all dual certificates?
|
||||
if (!player.isDualClassActive())
|
||||
{
|
||||
htmltext = "33490-24.html";
|
||||
}
|
||||
else if (!player.isInventoryUnder90(false) || (player.getWeightPenalty() >= 2))
|
||||
{
|
||||
htmltext = "33490-25.html";
|
||||
}
|
||||
else if ((player.getLevel() < DUAL_SKILL_LEVELS[0]) || (player.getStat().getBaseLevel() < DUAL_SKILL_LEVELS[0])) // Dual or main class level is lower than 85
|
||||
{
|
||||
// TODO: What happens here?
|
||||
player.sendMessage("Your level is too low.");
|
||||
htmltext = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "dualCertify":
|
||||
{
|
||||
if ((substrings.length < 2) || !player.isDualClassActive())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int index = Integer.parseInt(substrings[1]);
|
||||
if ((index < 0) || (index > 3))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
final int level = DUAL_SKILL_LEVELS[index];
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
if (vars.hasVariable(getDualSkillVariableName(level)))
|
||||
{
|
||||
htmltext = getHtm(player.getHtmlPrefix(), "33490-27.html");
|
||||
}
|
||||
else if ((player.getLevel() < level) || (player.getStat().getBaseLevel() < level))
|
||||
{
|
||||
htmltext = getHtm(player.getHtmlPrefix(), "33490-28.html");
|
||||
}
|
||||
else
|
||||
{
|
||||
vars.set(getDualSkillVariableName(level), true);
|
||||
giveItems(player, DUAL_CERTIFICATE, 1);
|
||||
htmltext = getHtm(player.getHtmlPrefix(), "33490-29.html");
|
||||
}
|
||||
htmltext = htmltext.replace("%level%", String.valueOf(level));
|
||||
break;
|
||||
}
|
||||
case "learnDualSkill":
|
||||
{
|
||||
// TODO: What happens when you have all dual-certificates used?
|
||||
if (player.isSubClassActive())
|
||||
{
|
||||
htmltext = "33490-30.html";
|
||||
}
|
||||
else if (!hasQuestItems(player, DUAL_CERTIFICATE))
|
||||
{
|
||||
htmltext = "33490-31.html";
|
||||
}
|
||||
else if ((player.getLevel() < DUAL_SKILL_LEVELS[0]) || (player.getStat().getBaseLevel() < DUAL_SKILL_LEVELS[0]))
|
||||
{
|
||||
// This case should not happen
|
||||
htmltext = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
RequestAcquireSkill.showDualSkillList(player);
|
||||
htmltext = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "deleteDualSkill":
|
||||
{
|
||||
if (player.isSubClassActive())
|
||||
{
|
||||
htmltext = "33490-30.html";
|
||||
}
|
||||
else if (player.getAdena() < Config.FEE_DELETE_DUALCLASS_SKILLS)
|
||||
{
|
||||
htmltext = "33490-32.html";
|
||||
}
|
||||
else if (!hasDualCertificate(player))
|
||||
{
|
||||
htmltext = "33490-33.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = null; // TODO: Unknown html
|
||||
takeItems(player, DUAL_CERTIFICATE, -1);
|
||||
takeItems(player, Inventory.ADENA_ID, Config.FEE_DELETE_DUALCLASS_SKILLS);
|
||||
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
for (int lv : DUAL_SKILL_LEVELS)
|
||||
{
|
||||
vars.remove(getDualSkillVariableName(lv));
|
||||
}
|
||||
takeSkills(player, "DualSkillList");
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
htmltext = null;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
// TODO: Move this to char skills
|
||||
@RegisterEvent(EventType.ON_PLAYER_SUB_CHANGE)
|
||||
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||
public final void onSubChange(OnPlayerSubChange evt)
|
||||
{
|
||||
final L2PcInstance player = evt.getActiveChar();
|
||||
if (player.isDualClassActive() || !player.isSubClassActive())
|
||||
{
|
||||
giveSkills(player, "DualSkillList");
|
||||
}
|
||||
giveSkills(player, "SubSkillList");
|
||||
player.sendSkillList();
|
||||
}
|
||||
|
||||
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
|
||||
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||
public final void onLogin(OnPlayerLogin evt)
|
||||
{
|
||||
final L2PcInstance player = evt.getActiveChar();
|
||||
if (player.isDualClassActive() || !player.isSubClassActive())
|
||||
{
|
||||
giveSkills(player, "DualSkillList");
|
||||
}
|
||||
giveSkills(player, "SubSkillList");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if player has all sub certifications for current subclass
|
||||
* @param player
|
||||
* @return
|
||||
*/
|
||||
private final boolean hasAllSubCertifications(L2PcInstance player)
|
||||
{
|
||||
if (!player.isSubClassActive())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
for (int lv : SUB_SKILL_LEVELS)
|
||||
{
|
||||
if (!vars.hasVariable(getSubSkillVariableName(player, lv)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if player has any sub certification
|
||||
* @param player
|
||||
* @return
|
||||
*/
|
||||
private final boolean hasSubCertificate(L2PcInstance player)
|
||||
{
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
final Set<Integer> subs = player.getSubClasses().keySet();
|
||||
for (int index : subs)
|
||||
{
|
||||
for (int lv : SUB_SKILL_LEVELS)
|
||||
{
|
||||
if (vars.hasVariable("SubSkill-" + index + "-" + lv))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if player has any dual certification
|
||||
* @param player
|
||||
* @return
|
||||
*/
|
||||
private final boolean hasDualCertificate(L2PcInstance player)
|
||||
{
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
for (int lv : DUAL_SKILL_LEVELS)
|
||||
{
|
||||
if (vars.hasVariable(getDualSkillVariableName(lv)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private final String getSubSkillVariableName(L2PcInstance player, int level)
|
||||
{
|
||||
return "SubSkill-" + player.getClassIndex() + "-" + level;
|
||||
}
|
||||
|
||||
private final String getDualSkillVariableName(int level)
|
||||
{
|
||||
return "DualSkill-" + level;
|
||||
}
|
||||
|
||||
private final void takeSkills(L2PcInstance player, String type)
|
||||
{
|
||||
final PlayerVariables vars = player.getVariables();
|
||||
final String list = vars.getString(type, "");
|
||||
if (!list.isEmpty())
|
||||
{
|
||||
final String[] skills = list.split(";");
|
||||
for (String skill : skills)
|
||||
{
|
||||
final String[] str = skill.split("-");
|
||||
final Skill sk = SkillData.getInstance().getSkill(Integer.parseInt(str[0]), Integer.parseInt(str[1]));
|
||||
player.removeSkill(sk);
|
||||
}
|
||||
vars.remove(type);
|
||||
player.sendSkillList();
|
||||
}
|
||||
}
|
||||
|
||||
private final void giveSkills(L2PcInstance player, String type)
|
||||
{
|
||||
final String list = player.getVariables().getString(type, "");
|
||||
if (!list.isEmpty())
|
||||
{
|
||||
final String[] skills = list.split(";");
|
||||
for (String skill : skills)
|
||||
{
|
||||
final String[] str = skill.split("-");
|
||||
final Skill sk = SkillData.getInstance().getSkill(Integer.parseInt(str[0]), Integer.parseInt(str[1]));
|
||||
player.addSkill(sk, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Trandon();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user