root/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt @ 1

Revision 1, 15.9 kB (checked in by jinshiro, 17 years ago)
Line 
1//===== eAthena Script =======================================
2//= Kafra Express - Warping Town Module
3//===== By: ==================================================
4//= Skotlex
5//===== Current Version: =====================================
6//= 2.2
7//===== Compatible With: =====================================
8//= eAthena SVN R3424+, RO Episode 8+ (Hugel)
9//===== Description: =========================================
10//= Part of the Kafra Express Script Package.
11//= Offers warp services to towns.
12//===== Additional Comments: =================================
13//= See config.txt for configuration.
14//= Flag values used for towns:
15//= 0x00000001 Alberta
16//= 0x00000002 AlDeBaran
17//= 0x00000004 Amatsu
18//= 0x00000008 Ayothaya
19//= 0x00000010 Comodo
20//= 0x00000020 Einbech
21//= 0x00000040 Einbroch
22//= 0x00000080 Geffen
23//= 0x00000100 Gon Ryun
24//= 0x00000200 Hugel
25//= 0x00000400 Izlude
26//= 0x00000800 Jawaii
27//= 0x00001000 LightHalzen
28//= 0x00002000 Lou Yang
29//= 0x00004000 Lutie
30//= 0x00008000 Morocc
31//= 0x00010000 Niflheim
32//= 0x00020000 Payon
33//= 0x00040000 Prontera
34//= 0x00080000 Umbala
35//= 0x00100000 Yuno
36//= 0x00200000 Rachel
37//============================================================
38
39-       script  keInit_warpTown -1,{
40OnInit: //Load Config
41        donpcevent "keConfig::OnLoadWarpTown";
42        end;
43}
44
45function        script  F_keWarpTown    {
46
47        function SF_check;
48        function SF_warp;
49
50        set @cost,callfunc("F_keCost",$@kewt_cost,$@kewt_discount);
51        set @niflcost,callfunc("F_keCost",$@kewt_niflCost,$@kewd_discount);
52        if (@cost > Zeny && $@kewt_free)
53                set @cost, Zeny;
54        do {
55                if ($@kewt_showOnline) {
56                        set @kmenu, select(
57                                "- Cancel",
58                                "- Alberta ("+@cost+"z/"+(getmapusers("alberta")+getmapusers("alberta_in"))+" "+$@ked_users$+")",
59                                "- Al De Baran ("+@cost+"z/"+(getmapusers("aldebaran")+getmapusers("aldeba_in"))+" "+$@ked_users$+")",
60                                "- Amatsu ("+@cost+"z/"+(getmapusers("amatsu")+getmapusers("ama_in01")+getmapusers("ama_in02"))
61                                        +" "+$@ked_users$+")",
62                                "- Ayothaya ("+@cost+"z/"+(getmapusers("ayothaya")+getmapusers("ayo_in01")+getmapusers("ayo_in02"))
63                                        +" "+$@ked_users$+")",
64                                "- Comodo ("+@cost+"z/"+(getmapusers("comodo")+getmapusers("cmd_in01")+getmapusers("cmd_in02"))
65                                        +" "+$@ked_users$+")",
66                                "- Einbech ("+@cost+"z/"+(getmapusers("einbech"))+" "+$@ked_users$+")",
67                                "- Einbroch ("+@cost+"z/"+(getmapusers("einbroch")+getmapusers("ein_in01"))+" "+$@ked_users$+")",
68                                "- Geffen ("+@cost+"z/"+(getmapusers("geffen")+getmapusers("geffen_in")+getmapusers("gef_tower"))
69                                        +" "+$@ked_users$+")",
70                                "- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun")+getmapusers("gon_in"))+" "+$@ked_users$+")",
71                                "- Hugel ("+@cost+"z/"+(getmapusers("hugel")+getmapusers("hu_in01"))+" "+$@ked_users$+")",
72                                "- Izlude ("+@cost+"z/"+(getmapusers("izlude")+getmapusers("izlude_in"))+" "+$@ked_users$+")",
73                                "- Jawaii ("+@cost+"z/"+(getmapusers("jawaii")+getmapusers("jawaii_in"))+" "+$@ked_users$+")",
74                                "- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen")+getmapusers("lhz_in01")
75                                        +getmapusers("lhz_in02")+getmapusers("lhz_in03"))+" "+$@ked_users$+")",
76                                "- Lou Yang ("+@cost+"z/"+(getmapusers("louyang")+getmapusers("lou_in01")+getmapusers("lou_in02"))
77                                        +" "+$@ked_users$+")",
78                                "- Lutie ("+@cost+"z/"+(getmapusers("xmas")+getmapusers("xmas_in"))+" "+$@ked_users$+")",
79                                "- Morocc ("+@cost+"z/"+(getmapusers("morocc")+getmapusers("morocc_in")+getmapusers("moc_castle"))
80                                        +" "+$@ked_users$+")",
81                                "- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim")+getmapusers("nif_in"))+" "+$@ked_users$+")",
82                                "- Payon ("+@cost+"z/"+(getmapusers("payon")+getmapusers("payon_in01")+getmapusers("payon_in02"))
83                                        +" "+$@ked_users$+")",
84                                "- Prontera ("+@cost+"z/"+(getmapusers("prontera")+getmapusers("prt_castle")
85                                        +getmapusers("prt_church")+getmapusers("prt_in"))+" "+$@ked_users$+")",
86                                "- Rachel ("+@cost+"z/"+(getmapusers("rachel")+getmapusers("ra_in01")
87                                        +getmapusers("ra_temple")+getmapusers("ra_temin")+getmapusers("ra_temsky")
88                                        +getmapusers("que_rachel"))+" "+$@ked_users$+")",
89                                "- Umbala ("+@cost+"z/"+(getmapusers("umbala")+getmapusers("um_in"))+" "+$@ked_users$+")",
90                                "- Yuno ("+@cost+"z/"+(getmapusers("yuno")+getmapusers("yuno_in01")+getmapusers("yuno_in02")
91                                        +getmapusers("yuno_in03")+getmapusers("yuno_in04")+getmapusers("yuno_in05"))+" "+$@ked_users$+")"
92                        );
93                } else {
94                        set @kmenu, select(
95                                "- Cancel",
96                                "- Alberta ("+@cost+"z)",
97                                "- Al De Baran ("+@cost+"z)",
98                                "- Amatsu ("+@cost+"z)",
99                                "- Ayothaya ("+@cost+"z)",
100                                "- Comodo ("+@cost+"z)",
101                                "- Einbech ("+@cost+"z)",
102                                "- Einbroch ("+@cost+"z)",
103                                "- Geffen ("+@cost+"z)",
104                                "- Gon Ryun ("+@cost+"z)",
105                                "- Hugel ("+@cost+"z)",
106                                "- Izlude ("+@cost+"z)",
107                                "- Jawaii ("+@cost+"z)",
108                                "- LightHalzen ("+@cost+"z)",
109                                "- Lou Yang ("+@cost+"z)",
110                                "- Lutie ("+@cost+"z)",
111                                "- Morocc ("+@cost+"z)",
112                                "- Niflheim ("+@niflcost+"z)",
113                                "- Payon ("+@cost+"z)",
114                                "- Prontera ("+@cost+"z)",
115                                "- Rachel ("+@cost+"z)",
116                                "- Umbala ("+@cost+"z)",
117                                "- Yuno ("+@cost+"z)"
118                        );
119                }
120                switch (@kmenu) {
121                case 2: //Alberta
122                        if (SF_check(0x1))
123                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta",117,56;
124                        break;
125                case 3: //AlDeBaran
126                        if (SF_check(0x2))
127                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran",139,124;
128                        break;
129                case 4: //Amatsu
130                        if (SF_check(0x4))
131                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu",197,88;
132                        break;
133                case 5: //Ayathoya
134                        if (SF_check(0x8))
135                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya",202,174;
136                        break;
137                case 6: //Comodo
138                        if (SF_check(0x10))
139                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo",189,150;
140                        break;
141                case 7: //Einbech
142                        if (SF_check(0x20))
143                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech",137,220;
144                        break;
145                case 8: //Einbroch
146                        if (SF_check(0x40))
147                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch",64,199;
148                        break;
149                case 9: //Geffen
150                        if (SF_check(0x80))
151                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen",120,66;
152                        break;
153                case 10: //GonRyun
154                        if (SF_check(0x100))
155                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun",160,180;
156                        break;
157                case 11: //Hugel
158                        if (SF_check(0x200))
159                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel",96,105;
160                        break;
161                case 12: //Izlude
162                        if (SF_check(0x400))
163                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude",127,97;
164                        break;
165                case 13: //Jawaii
166                        if (SF_check(0x800))
167                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii",214,223;
168                        break;
169                case 14: //LightHalzen
170                        if (SF_check(0x1000))
171                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen",158,92;
172                        break;
173                case 15: //LouYang
174                        if (SF_check(0x2000))
175                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang",218,118;
176                        break;
177                case 16: //Lutie
178                        if (SF_check(0x4000))
179                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas",148,133;
180                        break;
181                case 17: //Morocc
182                        if (SF_check(0x8000))
183                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc",162,91;
184                        break;
185                case 18: //Niflheim
186                        if (SF_check(0x10000)) {
187                                if (nif_q_done != 1) {
188                                        mes "...?";
189                                        callfunc "F_keIntro", e_no, "For some reason I can't warp you there!";
190                                } else
191                                        callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim",194,185;
192                        }
193                        break;
194                case 19: //Payon
195                        if (SF_check(0x20000))
196                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon",159,181;
197                        break;
198                case 20: //Prontera
199                        if (SF_check(0x40000))
200                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera",156,175;
201                        break;
202                case 21: //Rachel
203                        if (SF_check(0x200000))
204                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"rachel",137,133;
205                        break;
206                case 22: //Umbala
207                        if (SF_check(0x80000))
208                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala",88,153;
209                        break;
210                case 23: //Yuno
211                        if (SF_check(0x100000))
212                                SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno",158,77;
213                        break;
214                }
215        } while (@kmenu > 1);
216        return;
217       
218//SubFunction SF_check(flag)
219//Checks if the character can warp to that town taking into consideration
220//traveller's mode.
221function SF_check {
222        if ($@kewt_travel && !((kewt_travel|#kewt_travel)&getarg(0))) {
223                callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to towns you have saved in at least once.";
224                return 0;
225        }
226        return 1;
227}
228
229//SubFunction SF_warp (int cost, int discount, int emotion, String map, int x, int y)
230//Modded from F_keWarp to allow free warping to towns when not enough zeny.
231function SF_warp {
232        set @cost, getarg(0);
233        if (@cost > Zeny && $@kewt_free)
234                set @cost, Zeny;
235        if (!(callfunc("F_keCharge",@cost,getarg(1),1))) {
236                callfunc "F_keIntro", e_an, "You don't have enough Zeny...";
237                return;
238        }
239        emotion getarg(2);
240        warp getarg(3),getarg(4),getarg(5);
241        end;
242}
243
244}
245
246//Invoked when we want to add a map to the list of travelled-to towns
247function        script  F_keAddTravelTown       {
248        set @map$, getarg(0);
249// Temporary code to update variables from old format to new.
250        if(ketw_alberta) {
251                set kewt_travel,kewt_travel|0x1;
252                set ketw_alberta,0;
253        }
254        if(ketw_aldebaran) {
255                set kewt_travel,kewt_travel|0x2;
256                set ketw_aldebaran,0;
257        }
258        if(ketw_amatsu) {
259                set kewt_travel,kewt_travel|0x4;
260                set ketw_amatsu,0;
261        }
262        if(ketw_ayothaya) {
263                set kewt_travel,kewt_travel|0x8;
264                set ketw_ayothaya,0;
265        }
266        if(ketw_comodo) {
267                set kewt_travel,kewt_travel|0x10;
268                set ketw_comodo,0;
269        }
270        if(ketw_einbech) {
271                set kewt_travel,kewt_travel|0x20;
272                set ketw_einbech,0;
273        }
274        if(ketw_einbroch) {
275                set kewt_travel,kewt_travel|0x40;
276                set ketw_einbroch,0;
277        }
278        if(ketw_geffen) {
279                set kewt_travel,kewt_travel|0x80;
280                set ketw_geffen,0;
281        }
282        if(ketw_gonryun) {
283                set kewt_travel,kewt_travel|0x100;
284                set ketw_gonryun,0;
285        }
286        if(ketw_hugel) {
287                set kewt_travel,kewt_travel|0x200;
288                set ketw_hugel,0;
289        }
290        if(ketw_izlude) {
291                set kewt_travel,kewt_travel|0x400;
292                set ketw_izlude,0;
293        }
294        if(ketw_jawaii) {
295                set kewt_travel,kewt_travel|0x800;
296                set ketw_jawaii,0;
297        }
298        if(ketw_lighthalzen) {
299                set kewt_travel,kewt_travel|0x1000;
300                set ketw_lighthalzen,0;
301        }
302        if(ketw_louyang) {
303                set kewt_travel,kewt_travel|0x2000;
304                set ketw_louyang,0;
305        }
306        if(ketw_lutie) {
307                set kewt_travel,kewt_travel|0x4000;
308                set ketw_lutie,0;
309        }
310        if(ketw_morroc) {
311                set kewt_travel,kewt_travel|0x8000;
312                set ketw_morroc,0;
313        }
314        if(ketw_niflheim) {
315                set kewt_travel,kewt_travel|0x10000;
316                set ketw_niflheim,0;
317        }
318        if(ketw_payon) {
319                set kewt_travel,kewt_travel|0x20000;
320                set ketw_payon,0;
321        }
322        if(ketw_prontera) {
323                set kewt_travel,kewt_travel|0x40000;
324                set ketw_prontera,0;
325        }
326        if(ketw_umbala) {
327                set kewt_travel,kewt_travel|0x80000;
328                set ketw_umbala,0;
329        }
330        if(ketw_yuno) {
331                set kewt_travel,kewt_travel|0x100000;
332                set ketw_yuno,0;
333        }
334
335        if(#ketw_alberta) {
336                set #kewt_travel,#kewt_travel|0x1;
337                set #ketw_alberta,0;
338        }
339        if(#ketw_aldebaran) {
340                set #kewt_travel,#kewt_travel|0x2;
341                set #ketw_aldebaran,0;
342        }
343        if(#ketw_amatsu) {
344                set #kewt_travel,#kewt_travel|0x4;
345                set #ketw_amatsu,0;
346        }
347        if(#ketw_ayothaya) {
348                set #kewt_travel,#kewt_travel|0x8;
349                set #ketw_ayothaya,0;
350        }
351        if(#ketw_comodo) {
352                set #kewt_travel,#kewt_travel|0x10;
353                set #ketw_comodo,0;
354        }
355        if(#ketw_einbech) {
356                set #kewt_travel,#kewt_travel|0x20;
357                set #ketw_einbech,0;
358        }
359        if(#ketw_einbroch) {
360                set #kewt_travel,#kewt_travel|0x40;
361                set #ketw_einbroch,0;
362        }
363        if(#ketw_geffen) {
364                set #kewt_travel,#kewt_travel|0x80;
365                set #ketw_geffen,0;
366        }
367        if(#ketw_gonryun) {
368                set #kewt_travel,#kewt_travel|0x100;
369                set #ketw_gonryun,0;
370        }
371        if(#ketw_hugel) {
372                set #kewt_travel,#kewt_travel|0x200;
373                set #ketw_hugel,0;
374        }
375        if(#ketw_izlude) {
376                set #kewt_travel,#kewt_travel|0x400;
377                set #ketw_izlude,0;
378        }
379        if(#ketw_jawaii) {
380                set #kewt_travel,#kewt_travel|0x800;
381                set #ketw_jawaii,0;
382        }
383        if(#ketw_lighthalzen) {
384                set #kewt_travel,#kewt_travel|0x1000;
385                set #ketw_lighthalzen,0;
386        }
387        if(#ketw_louyang) {
388                set #kewt_travel,#kewt_travel|0x2000;
389                set #ketw_louyang,0;
390        }
391        if(#ketw_lutie) {
392                set #kewt_travel,#kewt_travel|0x4000;
393                set #ketw_lutie,0;
394        }
395        if(#ketw_morroc) {
396                set #kewt_travel,#kewt_travel|0x8000;
397                set #ketw_morroc,0;
398        }
399        if(#ketw_niflheim) {
400                set #kewt_travel,#kewt_travel|0x10000;
401                set #ketw_niflheim,0;
402        }
403        if(#ketw_payon) {
404                set #kewt_travel,#kewt_travel|0x20000;
405                set #ketw_payon,0;
406        }
407        if(#ketw_prontera) {
408                set #kewt_travel,#kewt_travel|0x40000;
409                set #ketw_prontera,0;
410        }
411        if(#ketw_umbala) {
412                set #kewt_travel,#kewt_travel|0x80000;
413                set #ketw_umbala,0;
414        }
415        if(#ketw_yuno) {
416                set #kewt_travel,#kewt_travel|0x100000;
417                set #ketw_yuno,0;
418        }
419// End update code.
420
421        if ($@kewt_travel > 1) {
422                if (@map$ == "alberta" || kewt_travel&0x1)
423                        set #kewt_travel,#kewt_travel|0x1;
424                if (@map$ == "aldebaran" || kewt_travel&0x2)
425                        set #kewt_travel,#kewt_travel|0x2;
426                if (@map$ == "amatsu" || kewt_travel&0x4)
427                        set #kewt_travel,#kewt_travel|0x4;
428                if (@map$ == "ayothaya" || kewt_travel&0x8)
429                        set #kewt_travel,#kewt_travel|0x8;
430                if (@map$ == "comodo" || kewt_travel&0x10)
431                        set #kewt_travel,#kewt_travel|0x10;
432                if (@map$ == "einbech" || kewt_travel&0x20)
433                        set #kewt_travel,#kewt_travel|0x20;
434                if (@map$ == "einbroch" || kewt_travel&0x40)
435                        set #kewt_travel,#kewt_travel|0x40;
436                if (@map$ == "geffen" || kewt_travel&0x80)
437                        set #kewt_travel,#kewt_travel|0x80;
438                if (@map$ == "gonryun" || kewt_travel&0x100)
439                        set #kewt_travel,#kewt_travel|0x100;
440                if (@map$ == "hugel" || kewt_travel&0x200)
441                        set #kewt_travel,#kewt_travel|0x200;
442                if (@map$ == "izlude" || kewt_travel&0x400)
443                        set #kewt_travel,#kewt_travel|0x400;
444                if (@map$ == "jawaii" || kewt_travel&0x800)
445                        set #kewt_travel,#kewt_travel|0x800;
446                if (@map$ == "lighthalzen" || kewt_travel&1000)
447                        set #kewt_travel,#kewt_travel|0x1000;
448                if (@map$ == "louyang" || kewt_travel&0x2000)
449                        set #kewt_travel,#kewt_travel|0x2000;
450                if (@map$ == "xmas" || kewt_travel&0x4000)
451                        set #kewt_travel,#kewt_travel|0x4000;
452                if (@map$ == "morocc" || kewt_travel&0x8000)
453                        set #kewt_travel,#kewt_travel|0x8000;
454                if (@map$ == "niflheim" || kewt_travel&0x10000)
455                        set #kewt_travel,#kewt_travel|0x10000;
456                if (@map$ == "payon" || kewt_travel&0x20000)
457                        set #kewt_travel,#kewt_travel|0x20000;
458                if (@map$ == "prontera" || kewt_travel&0x40000)
459                        set #kewt_travel,#kewt_travel|0x40000;
460                if (@map$ == "umbala" || kewt_travel&0x80000)
461                        set #kewt_travel,#kewt_travel|0x80000;
462                if (@map$ == "yuno" || kewt_travel&0x100000)
463                        set #kewt_travel,#kewt_travel|0x100000;
464                if (@map$ == "rachel" || kewt_travel&0x200000)
465                        set #kewt_travel,#kewt_travel|0x200000;
466        } else {
467                if (@map$ == "alberta")
468                        set kewt_travel,kewt_travel|0x1;
469                if (@map$ == "aldebaran")
470                        set kewt_travel,kewt_travel|0x2;
471                if (@map$ == "amatsu")
472                        set kewt_travel,kewt_travel|0x4;
473                if (@map$ == "ayothaya")
474                        set kewt_travel,kewt_travel|0x8;
475                if (@map$ == "comodo")
476                        set kewt_travel,kewt_travel|0x10;
477                if (@map$ == "einbech")
478                        set kewt_travel,kewt_travel|0x20;
479                if (@map$ == "einbroch")
480                        set kewt_travel,kewt_travel|0x40;
481                if (@map$ == "geffen")
482                        set kewt_travel,kewt_travel|0x80;
483                if (@map$ == "gonryun")
484                        set kewt_travel,kewt_travel|0x100;
485                if (@map$ == "hugel")
486                        set kewt_travel,kewt_travel|0x200;
487                if (@map$ == "izlude")
488                        set kewt_travel,kewt_travel|0x400;
489                if (@map$ == "jawaii")
490                        set kewt_travel,kewt_travel|0x800;
491                if (@map$ == "lighthalzen")
492                        set kewt_travel,kewt_travel|0x1000;
493                if (@map$ == "louyang")
494                        set kewt_travel,kewt_travel|0x2000;
495                if (@map$ == "xmas")
496                        set kewt_travel,kewt_travel|0x4000;
497                if (@map$ == "morocc")
498                        set kewt_travel,kewt_travel|0x8000;
499                if (@map$ == "niflheim")
500                        set kewt_travel,kewt_travel|0x10000;
501                if (@map$ == "payon")
502                        set kewt_travel,kewt_travel|0x20000;
503                if (@map$ == "prontera")
504                        set kewt_travel,kewt_travel|0x40000;
505                if (@map$ == "umbala")
506                        set kewt_travel,kewt_travel|0x80000;
507                if (@map$ == "yuno")
508                        set kewt_travel,kewt_travel|0x100000;
509                if (@map$ == "rachel")
510                        set kewt_travel,kewt_travel|0x200000;
511        }
512        return;
513}
Note: See TracBrowser for help on using the browser.