1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
prontera,155,160,4 script FFXI Jobra 936,{
set .@npcName$,"[^0000FF Master Jobra ^000000]";
set @BC,98; //<--- Change this # to the Max Base Level of your server -1. Example: Max Base Level is 99 so, put 98.
set @JC,69; //<--- Change this # to the Max Job Level of your server -1. Example: Max Job Level is 70 so, put 69.
set @EJC,49; //<--- Dont' Change, unless playing on a highrate with higher joblevels. (Gunslinger,Taekwon,StarGladiator,Soul Linker) Max Job Level -1.
mes .@npcName$;
mes "Welcome, I am the "+.@npcName$+"";
mes "I have the ability to grant you a Sub-Class.";
if (FirstTimeChange==0)
{mes "Are you interested?";
menu "Yes, I'm interested.",iInter,"Nah, just passing by.",cancel;}
mes "What would you like to do?";
menu "Choose Sub-Class Skills",iSS,"Nothing",cancel;
iSS:
if (SkillPoint!=0 || StatusPoint>=10){mes "I'm sorry, but you need to use both, your StatPoints, and Your SkillPoints before using this feature."; close;}
callfunc "Sub_Skill";
end;
iInter:
if (Class==0 || Class==4001 || Class==23){next; mes .@npcName$; mes "Sorry, Novice Type Class' can't use this service"; close;}
if (Baselevel<=@BC){next; mes .@npcName$; mes "Sorry, but you need to be atleast Level ^0000FF"+(@BC+1)+"^000000."; close;}
goto iSelectClass;
iSelectClass:
setarray .@newSub[0],0,4,3,2,5,1,6;
next;
mes "I see, now then, please select the Class you want as your Sub-Class.";
mes "Be warned, that you may have only 1 Sub-Class per Character.";
menu "Acolyte:Archer:Mage:Merchant:Swordsman:Thief",iNewSub;
iNewSub:
set @i,@menu;
next; mes .@npcName$;
mes "Are you sure you want to make your sub-class an "+jobname(.@newSub[@i])+"?";
menu "Yes, I'm Sure.",iYes,"No, I change my mind.",iInter;
iYes:
set FirstTimeChange,1;
set SubClass,.@newSub[@i];
set MainClass,Class;
set skpSet,1;
set skpLeft,5;
mes "All done. Your new obtained Sub-Job is: "+jobname(.@newSub[@i])+"!";
close;
cancel:
close;
}
function script Sub_Skill {
//<--- Swordsman Class --->//
if (SubClass==1)
{if (skpLeft<1 && skpSet==1){set skpLeft,5;}
if (skpSet==2){mes "You've already set your skills"; close;}
callfunc "S_Swordsman_Skills"; end;}
//<--- Mage Class --->//
if (SubClass==2)
{if (skpLeft<1 && skpSet==1){set skpLeft,5;}
if (skpSet==2){mes "You've already set your skills"; close;}
callfunc "S_Mage_Skills"; end;}
//<--- Archer Class --->//
if (SubClass==3)
{if (skpLeft<1 && skpSet==1){set skpLeft,5;}
if (skpSet==2){mes "You've already set your skills"; close;}
callfunc "S_Archer_Skills"; end;}
//<--- Acolyte Class --->//
if (SubClass==4)
{if (skpLeft<1 && skpSet==1){set skpLeft,5;}
if (skpSet==2){mes "You've already set your skills"; close;}
callfunc "S_Acolyte_Skills"; end;}
//<--- Merchant Class --->//
if (SubClass==5)
{if (skpLeft<1 && skpSet==1){set skpLeft,5;}
if (skpSet==2){mes "You've already set your skills"; close;}
callfunc "S_Merchant_Skills"; end;}
//<--- Thief Class --->//
if (SubClass==6)
{if (skpLeft<1 && skpSet==1){set skpLeft,5;}
if (skpSet==2){mes "You've already set your skills"; close;}
callfunc "S_Thief_Skills"; end;}
//<--- Debugging Below --->//
mes "If you can see this then something went wrong.";
close;
}
//----------------------- Swordsman & Mage Class Skills ----------------------//
function script S_Swordsman_Skills {
setarray .@SkillSelect[0],0,5,7,8,6,5,2,3;
menu "Bash:Magnum Break:Endure:Provoke:HP Recovery:One-Hand Sword Mastery",iSkillSelect,
"Two-Hand Sword Master",iSkillSelect;
iSkillSelect:
set skpLeft,skpLeft-1;
skill .@SkillSelect[@menu],5,0; //
if (skpLeft<1)
{set skpSet,2; mes "All Skills have been set."; close;}
callfunc "S_Swordsman_Skills";
end;
}
function script S_Mage_Skills {
setarray .@SkillSelect[0],0,9,10,11,12,13,14,15,16,17,18,19,20,21;
menu "SP Recover:Sight:Napalm Beat:Safety Wall:Soul Strike:Cold Bolt",iSkillSelect,
"Frost Drive:Stone Curse:FireBall:FireWall:Fire Bolt",iSkillSelect,
"Lightning Bolt:ThunderStorm",iSkillSelect;
iSkillSelect:
set skpLeft,skpLeft-1;
skill .@SkillSelect[@menu],5,0; //
if (skpLeft<1)
{set skpSet,2; mes "All Skills have been set."; close;}
callfunc "S_Mage_Skills";
end;
}
//----------------------- Archer & Acolyte Class Skills ----------------------//
function script S_Archer_Skills {
setarray .@SkillSelect[0],0,43,44,45,46,47;
menu "Owl's Eye:Vulture's Eye:Improve Concentration:Double Strafe:Arrow Shower",iSkillSelect;
iSkillSelect:
set skpLeft,skpLeft-1;
skill .@SkillSelect[@menu],5,0; //
if (skpLeft<1)
{set skpSet,2; mes "All Skills have been set."; close;}
callfunc "S_Archer_Skills";
end;
}
function script S_Acolyte_Skills {
setarray .@SkillSelect[0],0,22,23,24,25,26,27,28,29,30,31,32,33,34,35;
menu "Divine Protection:Demon Bane:Ruwatch:Penuma:Teleport:Warp Portal:Heal",iSkillSelect,
"Increase AGI:Decrease AGI:Aqua Benedicta:Signum Crusis:Angelus:Blessing:Cure",iSkillSelect;
iSkillSelect:
set skpLeft,skpLeft-1;
skill .@SkillSelect[@menu],5,0; //
if (skpLeft<1)
{set skpSet,2; mes "All Skills have been set."; close;}
callfunc "S_Acolyte_Skills";
end;
}
//----------------------- Merchant & Thief Class Skills ----------------------//
function script S_Merchant_Skills {
setarray .@SkillSelect[0],0,36,37,38,39,40,41,42;
menu "Enlarge Weight Limit:Discount:OverChange:Push Cart:Item Apprasil:Vending:Mammonite",iSkillSelect;
iSkillSelect:
set skpLeft,skpLeft-1;
skill .@SkillSelect[@menu],5,0; //
if (skpLeft<1)
{set skpSet,2; mes "All Skills have been set."; close;}
callfunc "S_Merchant_Skills";
end;
}
function script S_Thief_Skills {
setarray .@SkillSelect[0],0,48,49,50,51,52,53;
menu "Double Attack:Improve Dodge:Steal:Hide:Envenom:Detoxify",iSkillSelect;
iSkillSelect:
set skpLeft,skpLeft-1;
skill .@SkillSelect[@menu],5,0; //
if (skpLeft<1)
{set skpSet,2; mes "All Skills have been set."; close;}
callfunc "S_Thief_Skills";
end;
} |