1 | //===== eAthena Script ======================================= |
---|
2 | //= Global Functions |
---|
3 | //===== By: ================================================== |
---|
4 | //= Lupus, kobra_k88 |
---|
5 | //===== Current Version: ===================================== |
---|
6 | //= 2.13 |
---|
7 | //===== Compatible With: ===================================== |
---|
8 | //= eAthena 1.0 |
---|
9 | //===== Description: ========================================= |
---|
10 | //= <Description> |
---|
11 | //===== Additional Comments: ================================= |
---|
12 | //= Added F_ClearJobVar - on getting a new job it clears all Job Quest variables |
---|
13 | //= Removed individual job check functions as they were redundant [kobra_k88] |
---|
14 | //= 1.3 Added Job Change Function for Baby/Normal Classes |
---|
15 | //= 1.3b a fix, due to const.txt change [Lupus] |
---|
16 | //= 1.4 Added Is_Taekwon_Class: Taekwondo, Star Knight(Gladiator),Soul Linker [Lupus] |
---|
17 | //= 1.5 Added clear of Bard Quest variables. 1.5a updated [Lupus] |
---|
18 | //= 1.6 Added F_RandMes, F_SexMes, F_Hi, F_Bye functions [Lupus] |
---|
19 | //= Moved here useful function 'getJobName' |
---|
20 | //= 1.7 Added "F_ItemName" function, added a great sample for "F_ItemName" |
---|
21 | //= 1.8 Added Job Vars clear for Extended classes: TK,SL,SG [Lupus] |
---|
22 | //= 1.9 Added "F_ClearGarbage" func that clears outdated, wasted variables [Lupus] |
---|
23 | //= 1.91 Added "F_SaveQuestSkills","F_Load?Skills" functions [Lupus] |
---|
24 | //= 2.0 Fixed F_Save/LoadQuestSkills functions. Had to split in into 2 vars [Lupus] |
---|
25 | //= 2.01 Added $talk to F_ClearGarbage [Evera] |
---|
26 | //= 2.02 Added $dtsglobalelig and $dts|(1<<6) to F_ClearGarbage [Evera] |
---|
27 | //= 2.03 Added Gunslinger vars to F_ClearJobVar [Lupus] |
---|
28 | //= 2.04 Added dtseligible 2 (becomes MISC_QUEST|128) to F_ClearGarbage [Evera] |
---|
29 | //= 2.05 Book of Devil -> MISC_QUEST|256, clear other Niflheim garbage vars [Lupus] |
---|
30 | //= +more garbage clean |
---|
31 | //= 2.06 Pass to Bio-Lab -> MISC_QUEST|512 [Lupus] |
---|
32 | //= 2.07 Added TK_Q variable clear. 2.08 Added NINJ_Q variable clear [Lupus] |
---|
33 | //= 2.09 Cleared F_ClearGarbage [Lupus] |
---|
34 | //= 2.10 Added F_CheckMaxCount to check count of carrid items. [L0ne_w0lf] |
---|
35 | //= 2.10a Removed function F_CheckMaxCount. Not needed. [L0ne_W0lf] |
---|
36 | //= 2.11 Updated function Job_Change to jobchange based on Upper value. [Paradox924X] |
---|
37 | //= 2.12 Added more unused vars to F_ClearGarbage [Lupus] |
---|
38 | //= 2.13 Added more unused vars to F_ClearGarbage [Lupus] |
---|
39 | //= 2,14 Added old novice variables to F_ClearGarbage. [L0ne_W0lf] |
---|
40 | //============================================================ |
---|
41 | |
---|
42 | |
---|
43 | ////////////////////////////////////////////////////////////////////////////////// |
---|
44 | // Function that clears job quest variables |
---|
45 | ////////////////////////////////////////////////////////////////////////////////// |
---|
46 | |
---|
47 | function script F_ClearJobVar { |
---|
48 | // Misc --------------------------------- |
---|
49 | set JBLVL,0; |
---|
50 | set FIRSTAID,0; |
---|
51 | set PLAYDEAD,0; |
---|
52 | set got_bandage,0; |
---|
53 | set got_novnametag,0; |
---|
54 | // First Class Jobs --------------------- |
---|
55 | set job_acolyte_q,0; set job_acolyte_q2,0; |
---|
56 | set job_archer_q,0; |
---|
57 | set job_magician_q,0; |
---|
58 | set job_merchant_q,0; set job_merchant_q2,0; set job_merchant_q3,0; |
---|
59 | set job_sword_q,0; set SWTEST, 0; |
---|
60 | set job_thief_q,0; |
---|
61 | // Super Novice |
---|
62 | set SUPNOV_Q,0; |
---|
63 | // 2-1 Jobs ------------------------------ |
---|
64 | set ASSIN_Q,0; set ASSIN_Q2,0; set ASSIN_Q3,0; |
---|
65 | set BSMITH_Q,0; set BSMITH_Q2,0; |
---|
66 | set HNTR_Q,0; set HNTR_Q2,0; |
---|
67 | set KNIGHT_Q,0; set KNIGHT_Q2,0; |
---|
68 | set PRIEST_Q,0; set PRIEST_Q2,0; set PRIEST_Q3,0; |
---|
69 | set WIZ_Q,0; set WIZ_Q2,0; |
---|
70 | // 2-2 Jobs ------------------------------ |
---|
71 | set ROGUE_Q,0; set ROGUE_Q2,0; |
---|
72 | set ALCH_Q,0; set ALCH_Q2,0; |
---|
73 | set CRUS_Q,0; |
---|
74 | set MONK_Q,0; set JOB_MONK_C,0; |
---|
75 | set SAGE_Q,0; set SAGE_Q2,0; |
---|
76 | set DANC_Q,0; |
---|
77 | set BARD_Q,0; |
---|
78 | // Extended Classes |
---|
79 | set TAEK_Q,0; set TK_Q,0; |
---|
80 | set STGL_Q,0; |
---|
81 | set SOUL_Q,0; |
---|
82 | set GUNS_Q,0; |
---|
83 | set NINJ_Q,0; |
---|
84 | return; |
---|
85 | } |
---|
86 | |
---|
87 | function script F_ClearGarbage { |
---|
88 | // Clear outdated global VARS |
---|
89 | //Clear TURTLE var if the Turtle Islans Quest is already done |
---|
90 | if(TURTLE==20) set MISC_QUEST,MISC_QUEST | 65536; |
---|
91 | if(MISC_QUEST & 65536) set TURTLE,0; //now clear the var if the quest is over |
---|
92 | //Clear previously saved Quest Skills (now it isn't used) |
---|
93 | set ADV_QSK,0; |
---|
94 | set ADV_QSK2,0; |
---|
95 | //Old Seset Skill Event used to use RES_SKILL var |
---|
96 | set RES_SKILL,0; |
---|
97 | //Here you put outdated variables from your outdated EVENTS |
---|
98 | //e.g. Is XMAS done? Add the EVENT var clearing code here. |
---|
99 | |
---|
100 | //due to bugs in BS quest: |
---|
101 | set wizard_m2,0; |
---|
102 | |
---|
103 | // Old Novice Ground Variables. |
---|
104 | set NEW_MES_FLAG0,0; |
---|
105 | set NEW_MES_FLAG1,0; |
---|
106 | set NEW_MES_FLAG2,0; |
---|
107 | set NEW_MES_FLAG3,0; |
---|
108 | set NEW_MES_FLAG4,0; |
---|
109 | set NEW_MES_FLAG5,0; |
---|
110 | set NEW_LVUP0,0; |
---|
111 | set NEW_LVUP1,0; |
---|
112 | set NEW_JOBLVUP,0; |
---|
113 | |
---|
114 | return; |
---|
115 | } |
---|
116 | |
---|
117 | ////////////////////////////////////////////////////////////////////////////////// |
---|
118 | // Used in REBIRTH scripts |
---|
119 | // Class = Internal Class ID |
---|
120 | // BaseJob = Base Job (0..23) |
---|
121 | // Upper : 0 - Default, 1 - Advanced, 2 - Baby |
---|
122 | ////////////////////////////////////////////////////////////////////////////////// |
---|
123 | |
---|
124 | function script Job_Change { |
---|
125 | jobchange getarg(0),Upper; //Jobchange based on Upper |
---|
126 | logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class); |
---|
127 | return; |
---|
128 | } |
---|
129 | |
---|
130 | |
---|
131 | ////////////////////////////////////////////////////////////////////////////////// |
---|
132 | // Functions used to spiff up dialoges [Lupus] |
---|
133 | ////////////////////////////////////////////////////////////////////////////////// |
---|
134 | |
---|
135 | ////////////////////////////////////////////////////////////////////////////////// |
---|
136 | // *** Function "F_RandMes" |
---|
137 | ////////////////////////////////////////////////////////////////////////////////// |
---|
138 | //returns random string |
---|
139 | // Example: check F_Bye or F_Hi functions |
---|
140 | // READ AND THINK: You can use it to pick a random number form list: |
---|
141 | // set @itemIDfromList, callfunc("F_RandMes",8,1129,1222,1163,1357,1360,1522,1811,1410); |
---|
142 | |
---|
143 | function script F_RandMes { |
---|
144 | return getarg(rand(1,getarg(0))); |
---|
145 | } |
---|
146 | |
---|
147 | |
---|
148 | ////////////////////////////////////////////////////////////////////////////////// |
---|
149 | // *** Function "F_Sex" |
---|
150 | ////////////////////////////////////////////////////////////////////////////////// |
---|
151 | //returns 1st string if female, 2nd string otherwise |
---|
152 | // Example: mes callfunc("F_Sex","What a beautiful lady!","What a handsome man!"); |
---|
153 | |
---|
154 | function script F_SexMes { |
---|
155 | return getarg(Sex); |
---|
156 | } |
---|
157 | |
---|
158 | |
---|
159 | ////////////////////////////////////////////////////////////////////////////////// |
---|
160 | // *** Function "F_Hi" |
---|
161 | ////////////////////////////////////////////////////////////////////////////////// |
---|
162 | //returns random HELLO message |
---|
163 | |
---|
164 | function script F_Hi { |
---|
165 | return callfunc("F_RandMes",5,"Hi!","Hello!","Good day!","How are you?","Hello there."); |
---|
166 | } |
---|
167 | |
---|
168 | |
---|
169 | ////////////////////////////////////////////////////////////////////////////////// |
---|
170 | // *** Function "F_Bye" |
---|
171 | ////////////////////////////////////////////////////////////////////////////////// |
---|
172 | //returns random BYE message |
---|
173 | |
---|
174 | function script F_Bye { |
---|
175 | return callfunc("F_RandMes",6,"Bye. See you again.","Later.","Goodbye.","Good luck!","Have a nice day!","Byebye!!!"); |
---|
176 | } |
---|
177 | |
---|
178 | |
---|
179 | ////////////////////////////////////////////////////////////////////////////////// |
---|
180 | // *** Function "F_ItemName" |
---|
181 | ////////////////////////////////////////////////////////////////////////////////// |
---|
182 | // Returns expanded item name string |
---|
183 | //Argumentss |
---|
184 | // 0 - Item ID |
---|
185 | // 1 - Element N (0=none,1=Ice,2=Earth,3=Fire,4=Wind) |
---|
186 | // 2 - VVS meter 0..3 |
---|
187 | // 3 - Refine |
---|
188 | // Example: mes "Show me your "+callfunc("F_ItemName",1201,1,2,5)+"..."; |
---|
189 | // is equal to: mes "Show me your ^000090 +5 VVS Fire Knife ^000000..." |
---|
190 | |
---|
191 | function script F_ItemName { |
---|
192 | set @t$,"^000090"; |
---|
193 | if(getarg(3)) set @t$,@t$+"+"+getarg(3)+" "; |
---|
194 | if(getarg(2)==1) set @t$,@t$+"VS "; |
---|
195 | if(getarg(2)==2) set @t$,@t$+"VVS "; |
---|
196 | if(getarg(2)==3) set @t$,@t$+"VVVS "; |
---|
197 | if(getarg(2)>3) set @t$,@t$+getarg(2)+"xVS "; |
---|
198 | if(getarg(1)==1) set @t$,@t$+"Ice "; |
---|
199 | if(getarg(1)==2) set @t$,@t$+"Earth "; |
---|
200 | if(getarg(1)==3) set @t$,@t$+"Fire "; |
---|
201 | if(getarg(1)==4) set @t$,@t$+"Wind "; |
---|
202 | if(getarg(1)>4) set @t$,@t$+"Strange "; |
---|
203 | return @t$+getitemname(getarg(0))+"^000000"; |
---|
204 | } |
---|
205 | |
---|
206 | |
---|
207 | ////////////////////////////////////////////////////////////////////////////////// |
---|
208 | // *** Function "getJobName" // |
---|
209 | // [Usage] : callfunc("getJobName",Class); // |
---|
210 | ////////////////////////////////////////////////////////////////////////////////// |
---|
211 | |
---|
212 | function script getJobName { |
---|
213 | return jobname(getarg(0)); |
---|
214 | } |
---|
215 | |
---|
216 | ////////////////////////////////////////////////////////////////////////////////// |
---|
217 | // *** Function "F_SaveQuestSkills": Store learnt quest skills |
---|
218 | ////////////////////////////////////////////////////////////////////////////////// |
---|
219 | function script F_SaveQuestSkills { |
---|
220 | set ADV_QSK,0; set ADV_QSK2,0; |
---|
221 | //1st classes quest skills |
---|
222 | for(set @i, 0; @i < 14; set @i, @i + 1){ |
---|
223 | if(getskilllv(144+@i)) set ADV_QSK,ADV_QSK|pow(2,@i); |
---|
224 | } |
---|
225 | //2nd classes quest skills |
---|
226 | for(set @i, 0; @i < 19; set @i, @i + 1){ |
---|
227 | if(getskilllv(1001+@i)) set ADV_QSK2,ADV_QSK2|pow(2,@i); |
---|
228 | } |
---|
229 | return; |
---|
230 | } |
---|
231 | |
---|
232 | ////////////////////////////////////////////////////////////////////////////////// |
---|
233 | // *** Function "F_Load1Skills": Restore learnt 1st class quest skills |
---|
234 | ////////////////////////////////////////////////////////////////////////////////// |
---|
235 | function script F_Load1Skills { |
---|
236 | //1st classes quest skills |
---|
237 | for(set @i, 0; @i < 14; set @i, @i + 1){ |
---|
238 | if(ADV_QSK|pow(2,@i) == ADV_QSK) skill 144+@i,1,0; |
---|
239 | } |
---|
240 | set ADV_QSK,0; //Clear var |
---|
241 | return; |
---|
242 | } |
---|
243 | |
---|
244 | ////////////////////////////////////////////////////////////////////////////////// |
---|
245 | // *** Function "F_Load2Skills": Restore learnt 2nd class quest skills |
---|
246 | ////////////////////////////////////////////////////////////////////////////////// |
---|
247 | function script F_Load2Skills { |
---|
248 | //2nd classes quest skills |
---|
249 | for(set @i, 0; @i < 19; set @i, @i + 1){ |
---|
250 | if(ADV_QSK2|pow(2,@i) == ADV_QSK2) skill 1001+@i,1,0; |
---|
251 | } |
---|
252 | set ADV_QSK2,0; //Clear var |
---|
253 | return; |
---|
254 | } |
---|