root/npc/custom/jobs/jobmaster.txt

Revision 1, 7.9 kB (checked in by jinshiro, 17 years ago)
Line 
1//===== eAthena Script =======================================
2//= eAthena Jobchanger AKA Job Master
3//===== By: ==================================================
4//= eAthena Dev Team [Ori:LunatikBunnie] [Cur:Lance]
5//===== Current Version: =====================================
6//= 1.5a
7//===== Compatible With: =====================================
8//= eAthena SVN Trunk 6674
9//===== Description: =========================================
10//= Changes your job without asking too much
11//= For other info, please contact me at Lunatikbunnie@gmail.com
12//= Editted menu to avoid button mashing.
13//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
14//=    script leaves grabage variable: 'lastJob'
15//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants.
16//=    All credits go to pxxx [Skotlex]
17//= 1.5 Rewrite everything from scratch. [Lance]
18//= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus]
19//============================================================
20prontera,153,193,6      script  Job Master      123,{
21        mes "^ff0000[Job Master]^000000";
22        if(Upper == 1 && Class >= Job_Lord_Knight) goto L_noReq;
23        if(SkillPoint != 0){
24                mes "I'm sorry, please use up all your skill points before changing jobs";
25                mes "Please come again soon!";
26                close;
27        }
28        if(JobLevel < 10) goto L_LvError;
29        switch(Class){
30                case Job_Novice_High:
31                case Job_Baby:
32                case Job_Novice:
33                        skill 142,1,0;
34                        skill 143,1,0;
35                        mes "Welcome, please select the job you wish to change into";
36                        if(lastJob != 0 && Class == Job_Novice_High){
37                                switch(lastJob){
38                                        case Job_Knight:
39                                        case Job_Crusader:
40                                                set @target_job, Job_Swordman_High;
41                                                break;
42                                        case Job_Monk:
43                                        case Job_Priest:
44                                                set @target_job, Job_Acolyte_High;
45                                                break;
46                                        case Job_Alchemist:
47                                        case Job_Blacksmith:
48                                                set @target_job, Job_Merchant_High;
49                                                break;
50                                        case Job_Rogue:
51                                        case Job_Assassin:
52                                                set @target_job, Job_Thief_High;
53                                                break;
54                                        case Job_Wizard:
55                                        case Job_Sage:
56                                                set @target_job, Job_Mage_High;
57                                                break;
58                                        case Job_Hunter:
59                                        case Job_Bard:
60                                        case Job_Dancer:
61                                                set @target_job, Job_Archer_High;
62                                                break;
63                                                        }
64                        } else {
65                                switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
66                                        "Super Novice","Taekwon","Gunslinger","Ninja")){
67                                                case 7:
68                                                        if(Class == Job_Novice_High) goto L_noReq;
69                                                        if($@JC_SupNovM > BaseLevel) goto L_BvError;
70                                                        if(Upper == 2)
71                                                                set @target_job, Job_Super_Baby;
72                                                        else
73                                                                set @target_job, Job_SuperNovice;
74                                                        break;
75                                                case 8:
76                                                        if(Class == Job_Novice_High) goto L_noReq;
77                                                        if(Upper == 2) goto L_noReq;
78                                                        set @target_job, Job_Taekwon;
79                                                        break;
80                                                case 9:
81                                                case 10:
82                                                        if(Class == Job_Novice_High || Upper == 2) goto L_noReq;
83                                                        set @target_job, @menu + 15;
84                                                        break;
85                                                default:
86                                                        set @target_job, @menu;
87                                                        if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
88                                                        break;
89                                        }
90                        }
91                        mes "Are you sure you want to change to " + JobName(@target_job) + "?";
92                        if(select("No","Yes") == 2){
93                                callfunc "Job_Change", @target_job;
94                                if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
95                                        callfunc "F_ClearJobVar";
96                                } else {
97                                        if($@JC_Plat) goto L_GivePlat;
98                                }
99                        }
100                        close;
101                        break;
102                default:
103                        if(JobLevel < $@JC_MinimumJB) goto L_LvError;
104                        deletearray @job_opt, getarraysize(@job_opt);
105                        if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
106                                if(lastJob != 0){
107                                        set @target_job, lastJob + 4001;
108                                } else {
109                                        switch(Class){
110                                                case Job_Swordman_High:
111                                                case Job_Baby_Swordman:
112                                                case Job_Swordman:
113                                                        set @job_opt[0], Job_Knight;
114                                                        set @job_opt[1], Job_Crusader;
115                                                        break;
116                                                case Job_Mage_High:
117                                                case Job_Baby_Mage:
118                                                case Job_Mage:
119                                                        set @job_opt[0], Job_Wizard;
120                                                        set @job_opt[1], Job_Sage;
121                                                        break;
122                                                case Job_Archer_High:
123                                                case Job_Baby_Archer:
124                                                case Job_Archer:
125                                                        set @job_opt[0], Job_Hunter;
126                                                        if(Sex == 0)
127                                                                set @job_opt[1], Job_Dancer;
128                                                        else
129                                                                set @job_opt[1], Job_Bard;
130                                                        break;
131                                                case Job_Acolyte_High:
132                                                case Job_Baby_Acolyte:
133                                                case Job_Acolyte:
134                                                        set @job_opt[0], Job_Priest;
135                                                        set @job_opt[1], Job_Monk;
136                                                        break;
137                                                case Job_Merchant_High:
138                                                case Job_Baby_Merchant:
139                                                case Job_Merchant:
140                                                        set @job_opt[0], Job_Blacksmith;
141                                                        set @job_opt[1], Job_Alchemist;
142                                                        break;
143                                                case Job_Thief_High:
144                                                case Job_Baby_Thief:
145                                                case Job_Thief:
146                                                        set @job_opt[0], Job_Assassin;
147                                                        set @job_opt[1], Job_Rogue;
148                                                        break;                                         
149                                                default:
150                                                        set @job_opt[0], Job_Star_Gladiator;
151                                                        set @job_opt[1], Job_Soul_Linker;
152                                                        break;
153                                        }
154                                        mes "Welcome, please select the job you wish to change into";
155                                        set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1];
156                                        if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
157                                }
158                                mes "Are you sure you want to change to " + JobName(@target_job) + "?";
159                                if(select("No","Yes")==2){
160                                        callfunc "Job_Change", @target_job;
161                                        if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
162                                                callfunc "F_ClearJobVar";
163                                        } else {
164                                                if($@JC_Plat) goto L_GivePlat;
165                                        }
166                                }
167                                close;
168                        }
169                        if(checkfalcon() || checkcart() || checkriding()) goto L_remove;
170                        if((Class >=Job_Knight) && (Class <=Job_Crusader2)){
171                                mes "Do you want to reborn?";
172                                if(select("Yes","No")==1){
173                                        if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
174                                        set lastJob, Class;
175                                        if(Class == Job_Knight2){
176                                                set lastJob, Job_Knight;
177                                        } else {
178                                                if(Class == Job_Crusader2){
179                                                        set lastJob, Job_Crusader;
180                                                }
181                                        }
182                                        jobchange Job_Novice_High;
183                                        resetlvl(1);
184                                        skill 142,1,0;
185                                        skill 143,1,0;
186                                }
187                                close;
188                        }
189        }
190        mes "Looks like something has gone wrong. Please report to the eAthena Development Team about this error.";
191        close;
192
193L_GivePlat:
194        if (BaseClass==Job_SuperNovice) goto L_sSuperN;
195        if (BaseClass==Job_Swordman) goto L_sSword;
196        if (BaseClass==Job_Mage) goto L_sMage;
197        if (BaseClass==Job_Archer) goto L_sArcher;
198        if (BaseClass==Job_Acolyte) goto L_sAcolyte;
199        if (BaseClass==Job_Merchant) goto L_sMerchant;
200        if (BaseClass==Job_Thief) goto L_sThief;
201        close;
202L_sSuperN:
203        skill 142,1,0;
204        close;
205L_sSword:
206        skill 142,1,0;
207        skill 144,1,0;
208        skill 145,1,0;
209        skill 146,1,0;
210        close;
211L_sMage:
212        skill 142,1,0;
213        skill 157,1,0;
214        close;
215L_sArcher:
216        skill 142,1,0;
217        skill 147,1,0;
218        skill 148,1,0;
219        close;
220L_sAcolyte:
221        skill 142,1,0;
222        skill 156,1,0;
223        close;
224L_sMerchant:
225        skill 142,1,0;
226        skill 153,1,0;
227        skill 154,1,0;
228        skill 155,1,0;
229        close;
230L_sThief:
231        skill 142,1,0;
232        skill 149,1,0;
233        skill 150,1,0;
234        skill 151,1,0;
235        skill 152,1,0;
236        close;
237
238L_cantCh:
239        mes "I'm sorry, you do not meet the requirements to change";
240        mes "Please come again soon!";
241        close;
242
243L_LvError:
244        mes "I'm sorry, you do not seem to have enough Job Levels";
245        mes "Please come again soon!";
246        close;
247
248L_BvError:
249        mes "I'm sorry, you do not seem to have enough Base Levels";
250        mes "Please come again soon!";
251        close;
252
253L_noReq:
254        mes "I'm sorry, you do not meet the requirements to change";
255        mes "Please come again soon!";
256        close;
257
258L_remove:
259        mes "Please remove your cart,falcon or peco";
260        mes "Please come again soon!";
261        close;
262
263OnInit:
264        // Variable Setup
265        set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40)
266        set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
267        set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
268        end;
269}
Note: See TracBrowser for help on using the browser.