summaryrefslogtreecommitdiff
path: root/npc/other/Global_Functions.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/other/Global_Functions.txt')
-rw-r--r--npc/other/Global_Functions.txt970
1 files changed, 485 insertions, 485 deletions
diff --git a/npc/other/Global_Functions.txt b/npc/other/Global_Functions.txt
index 6d2d145c4..d8a8f4d93 100644
--- a/npc/other/Global_Functions.txt
+++ b/npc/other/Global_Functions.txt
@@ -1,486 +1,486 @@
-//===== eAthena Script =======================================
-//= Global Functions
-//===== By: ==================================================
-//= Lupus, kobra_k88
-//===== Current Version: =====================================
-//= 2.08
-//===== Compatible With: =====================================
-//= eAthena 1.0
-//===== Description: =========================================
-//= <Description>
-//===== Additional Comments: =================================
-//= Added F_ClearJobVar - on getting a new job it clears all Job Quest variables
-//= Removed individual job check functions as they were redundant [kobra_k88]
-//= 1.3 Added Job Change Function for Baby/Normal Classes
-//= 1.3b a fix, due to const.txt change [Lupus]
-//= 1.4 Added Is_Taekwon_Class: Taekwondo, Star Knight(Gladiator),Soul Linker [Lupus]
-//= 1.5 Added clear of Bard Quest variables. 1.5a updated [Lupus]
-//= 1.6 Added F_RandMes, F_SexMes, F_Hi, F_Bye functions [Lupus]
-//= Moved here useful function 'getJobName'
-//= 1.7 Added "F_ItemName" function, added a great sample for "F_ItemName"
-//= 1.8 Added Job Vars clear for Extended classes: TK,SL,SG [Lupus]
-//= 1.9 Added "F_ClearGarbage" func that clears outdated, wasted variables [Lupus]
-//= 1.91 Added "F_SaveQuestSkills","F_Load?Skills" functions [Lupus]
-//= 2.0 Fixed F_Save/LoadQuestSkills functions. Had to split in into 2 vars [Lupus]
-//= 2.01 Added $talk to F_ClearGarbage [Evera]
-//= 2.02 Added $dtsglobalelig and $dts|(1<<6) to F_ClearGarbage [Evera]
-//= 2.03 Added Gunslinger vars to F_ClearJobVar [Lupus]
-//= 2.04 Added dtseligible 2 (becomes MISC_QUEST|128) to F_ClearGarbage [Evera]
-//= 2.05 Book of Devil -> MISC_QUEST|256, clear other Niflheim garbage vars [Lupus]
-//= +more garbage clean
-//= 2.06 Pass to Bio-Lab -> MISC_QUEST|512 [Lupus]
-//= 2.07 Added TK_Q variable clear [Lupus]
-//- 2.08 Added NINJ_Q variable clear [Lupus]
-//============================================================
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// Function that clears job quest variables
-//////////////////////////////////////////////////////////////////////////////////
-
-function script F_ClearJobVar {
- // Misc ---------------------------------
- set JBLVL,0;
- set FIRSTAID,0;
- set PLAYDEAD,0;
- set got_bandage,0;
- set got_novnametag,0;
- // First Class Jobs ---------------------
- set job_acolyte_q,0; set job_acolyte_q2,0;
- set job_archer_q,0;
- set job_magician_q,0;
- set job_merchant_q,0; set job_merchant_q2,0; set job_merchant_q3,0;
- set job_sword_q,0; set SWTEST, 0;
- set job_thief_q,0;
- // Super Novice
- set SUPNOV_Q,0;
- // 2-1 Jobs ------------------------------
- set ASSIN_Q,0; set ASSIN_Q2,0;
- set BSMITH_Q,0; set BSMITH_Q2,0;
- set HNTR_Q,0; set HNTR_Q2,0;
- set KNIGHT_Q,0; set KNIGHT_Q2,0;
- set PRIEST_Q,0; set PRIEST_Q2,0; set PRIEST_Q3,0;
- set WIZ_Q,0; set WIZ_Q2,0;
- // 2-2 Jobs ------------------------------
- set ROGUE_Q,0; set ROGUE_Q2,0;
- set ALCH_Q,0; set ALCH_Q2,0;
- set CRUS_Q,0;
- set MONK_Q,0; set JOB_MONK_C,0;
- set SAGE_Q,0; set SAGE_Q2,0;
- set DANC_Q,0;
- set BARD_Q,0;
- // Extended Classes
- set TAEK_Q,0; set TK_Q,0;
- set STGL_Q,0;
- set SOUL_Q,0;
- set GUNS_Q,0;
- set NINJ_Q,0;
- return;
-}
-
-function script F_ClearGarbage {
- // Clear outdated global VARS
- //DTS Vote System
- if($dtsglobalelig) set $dtsglobalelig,0;
- if($dts&(1<<6)) set $dts,$dts&~(1<<6);
- //Cube Room
- if(hzdun) {
- set MISC_QUEST,MISC_QUEST|512;
- set num1,0; set num2,0; set num3,0; set num4,0; set num5,0;
- set num6,0; set num7,0; set num8,0; set num9,0;
- set hzdun,0; set cubekey,0; set piciburn,0;
- }
- //Airship
- if($lengths){
- cleararray $textstringsa$[0],"",getarraysize($textstringsa$);
- cleararray $textstringsb$[0],"",getarraysize($textstringsb$);
- cleararray $textstringsc$[0],"",getarraysize($textstringsc$);
- cleararray $compstring$[0],"",getarraysize($compstring$);
- cleararray $lengths[0],0,getarraysize($lengths);
- }
- //Shinkskas Quest garbage
- if(Shinokas_Quest > 7){
- set ein_scientist,0;
- set ein_stuff,0;
- }
- return;
-}
-
-//////////////////////////////////////////////////////////////////////////////////
-// Used in REBIRTH scripts
-// Class = Internal Class ID
-// BaseJob = Base Job (0..23)
-// Upper : 0 - Default, 1 - Advanced, 2 - Baby
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Job_Change {
- if (Upper<2)
- jobchange getarg(0); // Common jobchange
- else
- jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
- logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
- return;
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// FOT BACKWISE COMPATIBILITY: Functions used to check a players job class
-// HOW TO USE:
-// i.e. We need all holy classes but monks
-// if ( callfunc("Is_Holy_Class") && callfunc("Is_Monk")==0 ) goto L_Start;
-//////////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Aco,Monk,Priest,Aco High,High Priest,
-// Champion, 0 otherwise
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Holy_Class {
- return ( BaseJob==Job_Acolyte || BaseJob==Job_Priest || BaseJob==Job_Monk );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Archer,Hunter,Bard,Dancer,Archer High,Sniper,
-// Clown,Gypsy, 0 otherwise
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Bow_Class {
- return ( BaseJob==Job_Archer || BaseJob==Job_Hunter || BaseJob==Job_Bard || BaseJob==Job_Dancer );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Mage,Wizard,Sage,Mage High,High Wizard,
-// Professor, 0 otherwise
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Magic_Class {
- return ( BaseJob==Job_Mage || BaseJob==Job_Wizard || BaseJob==Job_Sage );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Merc,Blacksmith,Alchemist,Merc High,
-// Whitesmith,Creator, 0 otherwise
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Merc_Class {
- return ( BaseJob==Job_Merchant || BaseJob==Job_Blacksmith || BaseJob==Job_Alchem );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Thief,Assassin,Rogue,Thief High, Assassin Cross
-// Stalker, 0 otherwise
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Thief_Class {
- return ( BaseJob==Job_Thief || BaseJob==Job_Assassin || BaseJob==Job_Rogue );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Swordy,Knight,Crusader,Swordy High,
-// Lord Knight,Paladin, 0 otherwise
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Sword_Class {
- return ( BaseJob==Job_Swordman || BaseJob==Job_Knight || BaseJob==Job_Knight2 || BaseJob==Job_Crusader || BaseJob==Job_Crusader2 );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// returns 1 if the player is either Taekwon, Star Gladiator,Soul Linker, 0 otherwise
-// these classes can't be adopted nor reborn ()
-//////////////////////////////////////////////////////////////////////////////////
-
-function script Is_Taekwon_Class {
- return ( Class==Job_Taekwon || Class==Job_Star_Gladiator || Class==Job_Star_Gladiator2 || Class==Job_Soul_Linker );
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// Functions used to spiff up dialoges [Lupus]
-//////////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_RandMes"
-//////////////////////////////////////////////////////////////////////////////////
-//returns random string
-// Example: check F_Bye or F_Hi functions
-// READ AND THINK: You can use it to pick a random number form list:
-// set @itemIDfromList, callfunc("F_RandMes",8,1129,1222,1163,1357,1360,1522,1811,1410);
-
-function script F_RandMes {
- return getarg(rand(1,getarg(0)));
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Sex"
-//////////////////////////////////////////////////////////////////////////////////
-//returns 1st string if female, 2nd string otherwise
-// Example: mes callfunc("F_Sex","What a beautiful lady!","What a handsom man!");
-
-function script F_SexMes {
- return getarg(Sex);
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Hi"
-//////////////////////////////////////////////////////////////////////////////////
-//returns random HELLO message
-
-function script F_Hi {
- return callfunc("F_RandMes",5,"Hi!","Hello!","Good day!","How are you?","Hello there.");
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Bye"
-//////////////////////////////////////////////////////////////////////////////////
-//returns random BYE message
-
-function script F_Bye {
- return callfunc("F_RandMes",6,"Bye. See you again.","Later.","Goodbye.","Good luck!","Have a nice day!","Byebye!!!");
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_ItemName"
-//////////////////////////////////////////////////////////////////////////////////
-// Returns expanded item name string
-//Argumentss
-// 0 - Item ID
-// 1 - Element N (0=none,1=Ice,2=Earth,3=Fire,4=Wind)
-// 2 - VVS meter 0..3
-// 3 - Refine
-// Example: mes "Show me your "+callfunc("F_ItemName",1201,1,2,5)+"...";
-// is equal to: mes "Show me your ^000090 +5 VVS Fire Knife ^000000..."
-
-function script F_ItemName {
- set @t$,"^000090";
- if(getarg(3)) set @t$,@t$+"+"+getarg(3)+" ";
- if(getarg(2)==1) set @t$,@t$+"VS ";
- if(getarg(2)==2) set @t$,@t$+"VVS ";
- if(getarg(2)==3) set @t$,@t$+"VVVS ";
- if(getarg(2)>3) set @t$,@t$+getarg(2)+"xVS ";
- if(getarg(1)==1) set @t$,@t$+"Ice ";
- if(getarg(1)==2) set @t$,@t$+"Earth ";
- if(getarg(1)==3) set @t$,@t$+"Fire ";
- if(getarg(1)==4) set @t$,@t$+"Wind ";
- if(getarg(1)>4) set @t$,@t$+"Strange ";
- return @t$+getitemname(getarg(0))+"^000000";
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "getJobName" //
-// [Usage] : callfunc("getJobName",Class); //
-//////////////////////////////////////////////////////////////////////////////////
-
-function script getJobName {
- switch(getarg(0)){
- case Job_Novice:
- return "Novice";
- case Job_Swordman:
- return "Swordman";
- case Job_Mage:
- return "Magician";
- case Job_Archer:
- return "Archer";
- case Job_Acolyte:
- return "Acolyte";
- case Job_Merchant:
- return "Merchant";
- case Job_Thief:
- return "Thief";
- case Job_Knight:
- case Job_Knight2:
- return "Knight";
- case Job_Priest:
- return "Priest";
- case Job_Wizard:
- return "Wizard";
- case Job_Blacksmith:
- return "Blacksmith";
- case Job_Hunter:
- return "Hunter";
- case Job_Assassin:
- return "Assassin";
- case Job_Crusader:
- case Job_Crusader2:
- return "Crusader";
- case Job_Monk:
- return "Monk";
- case Job_Sage:
- return "Sage";
- case Job_Rogue:
- return "Rogue";
- case Job_Alchem:
- return "Alchemist";
- case Job_Bard:
- return "Bard";
- case Job_Dancer:
- return "Dancer";
- case Job_SuperNovice:
- return "Super Novice";
- case Job_Gunslinger:
- return "Gunsligner";
- case Job_Ninja:
- return "Ninja";
- case Job_Xmas:
- return "Xmas";
- case Job_Novice_High:
- return "Novice High";
- case Job_Swordman_High:
- return "Swordman High";
- case Job_Mage_High:
- return "Magician High";
- case Job_Archer_High:
- return "Archer High";
- case Job_Acolyte_High:
- return "Acolyte High";
- case Job_Merchant_High:
- return "Merchant High";
- case Job_Thief_High:
- return "Thief High";
- case Job_Lord_Knight:
- case Job_Lord_Knight2:
- return "Lord Knight";
- case Job_High_Priest:
- return "High Priest";
- case Job_High_Wizard:
- return "High Wizard";
- case Job_Whitesmith:
- return "Whitesmith";
- case Job_Sniper:
- return "Sniper";
- case Job_Assassin_Cross:
- return "Assassin Cross";
- case Job_Paladin:
- case Job_Paladin2:
- return "Paladin";
- case Job_Champion:
- return "Champion";
- case Job_Professor:
- return "Professor";
- case Job_Stalker:
- return "Stalker";
- case Job_Creator:
- return "Creator";
- case Job_Clown:
- return "Clown";
- case Job_Gypsy:
- return "Gypsy";
- case Job_Baby:
- return "Baby";
- case Job_Baby_Swordman:
- return "Baby Swordman";
- case Job_Baby_Mage:
- return "Baby Magician";
- case Job_Baby_Archer:
- return "Baby Archer";
- case Job_Baby_Acolyte:
- return "Baby Acolyte";
- case Job_Baby_Merchant:
- return "Baby Merchant";
- case Job_Baby_Thief:
- return "Baby Thief";
- case Job_Baby_Knight:
- case Job_Baby_Knight2:
- return "Baby Knight";
- case Job_Baby_Priest:
- return "Baby Priest";
- case Job_Baby_Wizard:
- return "Baby Wizard";
- case Job_Baby_Blacksmith:
- return "Baby Blacksmith";
- case Job_Baby_Hunter:
- return "Baby Hunter";
- case Job_Baby_Assassin:
- return "Baby Assassin";
- case Job_Baby_Crusader:
- case Job_Baby_Crusader2:
- return "Baby Crusader";
- case Job_Baby_Monk:
- return "Baby Monk";
- case Job_Baby_Sage:
- return "Baby Sage";
- case Job_Baby_Rogue:
- return "Baby Rogue";
- case Job_Baby_Alchem:
- return "Baby Alchemist";
- case Job_Baby_Bard:
- return "Baby Bard";
- case Job_Baby_Dancer:
- return "Baby Dancer";
- case Job_Super_Baby:
- return "Super Baby";
- case Job_Taekwon:
- if(Sex == 0)
- return "Taekwon Girl";
- else
- return "Taekwon Boy";
- case Job_Star_Gladiator:
- case Job_Star_Gladiator2:
- return "Star Gladiator";
- case Job_Soul_Linker:
- return "Soul Linker";
- case Job_Ninja:
- return "Ninja";
- case Job_Gunslinger:
- return "Gunslinger";
- case Job_Xmas:
- return "Christmas";
- case Option_Wedding:
- if(Sex == 0)
- return "Bride";
- else
- return "Bridegroom";
- default:
- return "omghaxor";
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_SaveQuestSkills": Store learnt quest skills
-//////////////////////////////////////////////////////////////////////////////////
-function script F_SaveQuestSkills {
- set ADV_QSK,0; set ADV_QSK2,0;
- //1st classes quest skills
- for(set @i, 0; @i < 14; set @i, @i + 1){
- if(getskilllv(144+@i)) set ADV_QSK,ADV_QSK|pow(2,@i);
- }
- //2nd classes quest skills
- for(set @i, 0; @i < 19; set @i, @i + 1){
- if(getskilllv(1001+@i)) set ADV_QSK2,ADV_QSK2|pow(2,@i);
- }
- return;
-}
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Load1Skills": Restore learnt 1st class quest skills
-//////////////////////////////////////////////////////////////////////////////////
-function script F_Load1Skills {
- //1st classes quest skills
- for(set @i, 0; @i < 14; set @i, @i + 1){
- if(ADV_QSK|pow(2,@i) == ADV_QSK) skill 144+@i,1,0;
- }
- set ADV_QSK,0; //Clear var
- return;
-}
-
-//////////////////////////////////////////////////////////////////////////////////
-// *** Function "F_Load2Skills": Restore learnt 2nd class quest skills
-//////////////////////////////////////////////////////////////////////////////////
-function script F_Load2Skills {
- //2nd classes quest skills
- for(set @i, 0; @i < 19; set @i, @i + 1){
- if(ADV_QSK2|pow(2,@i) == ADV_QSK2) skill 1001+@i,1,0;
- }
- set ADV_QSK2,0; //Clear var
- return;
+//===== eAthena Script =======================================
+//= Global Functions
+//===== By: ==================================================
+//= Lupus, kobra_k88
+//===== Current Version: =====================================
+//= 2.08
+//===== Compatible With: =====================================
+//= eAthena 1.0
+//===== Description: =========================================
+//= <Description>
+//===== Additional Comments: =================================
+//= Added F_ClearJobVar - on getting a new job it clears all Job Quest variables
+//= Removed individual job check functions as they were redundant [kobra_k88]
+//= 1.3 Added Job Change Function for Baby/Normal Classes
+//= 1.3b a fix, due to const.txt change [Lupus]
+//= 1.4 Added Is_Taekwon_Class: Taekwondo, Star Knight(Gladiator),Soul Linker [Lupus]
+//= 1.5 Added clear of Bard Quest variables. 1.5a updated [Lupus]
+//= 1.6 Added F_RandMes, F_SexMes, F_Hi, F_Bye functions [Lupus]
+//= Moved here useful function 'getJobName'
+//= 1.7 Added "F_ItemName" function, added a great sample for "F_ItemName"
+//= 1.8 Added Job Vars clear for Extended classes: TK,SL,SG [Lupus]
+//= 1.9 Added "F_ClearGarbage" func that clears outdated, wasted variables [Lupus]
+//= 1.91 Added "F_SaveQuestSkills","F_Load?Skills" functions [Lupus]
+//= 2.0 Fixed F_Save/LoadQuestSkills functions. Had to split in into 2 vars [Lupus]
+//= 2.01 Added $talk to F_ClearGarbage [Evera]
+//= 2.02 Added $dtsglobalelig and $dts|(1<<6) to F_ClearGarbage [Evera]
+//= 2.03 Added Gunslinger vars to F_ClearJobVar [Lupus]
+//= 2.04 Added dtseligible 2 (becomes MISC_QUEST|128) to F_ClearGarbage [Evera]
+//= 2.05 Book of Devil -> MISC_QUEST|256, clear other Niflheim garbage vars [Lupus]
+//= +more garbage clean
+//= 2.06 Pass to Bio-Lab -> MISC_QUEST|512 [Lupus]
+//= 2.07 Added TK_Q variable clear [Lupus]
+//- 2.08 Added NINJ_Q variable clear [Lupus]
+//============================================================
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// Function that clears job quest variables
+//////////////////////////////////////////////////////////////////////////////////
+
+function script F_ClearJobVar {
+ // Misc ---------------------------------
+ set JBLVL,0;
+ set FIRSTAID,0;
+ set PLAYDEAD,0;
+ set got_bandage,0;
+ set got_novnametag,0;
+ // First Class Jobs ---------------------
+ set job_acolyte_q,0; set job_acolyte_q2,0;
+ set job_archer_q,0;
+ set job_magician_q,0;
+ set job_merchant_q,0; set job_merchant_q2,0; set job_merchant_q3,0;
+ set job_sword_q,0; set SWTEST, 0;
+ set job_thief_q,0;
+ // Super Novice
+ set SUPNOV_Q,0;
+ // 2-1 Jobs ------------------------------
+ set ASSIN_Q,0; set ASSIN_Q2,0;
+ set BSMITH_Q,0; set BSMITH_Q2,0;
+ set HNTR_Q,0; set HNTR_Q2,0;
+ set KNIGHT_Q,0; set KNIGHT_Q2,0;
+ set PRIEST_Q,0; set PRIEST_Q2,0; set PRIEST_Q3,0;
+ set WIZ_Q,0; set WIZ_Q2,0;
+ // 2-2 Jobs ------------------------------
+ set ROGUE_Q,0; set ROGUE_Q2,0;
+ set ALCH_Q,0; set ALCH_Q2,0;
+ set CRUS_Q,0;
+ set MONK_Q,0; set JOB_MONK_C,0;
+ set SAGE_Q,0; set SAGE_Q2,0;
+ set DANC_Q,0;
+ set BARD_Q,0;
+ // Extended Classes
+ set TAEK_Q,0; set TK_Q,0;
+ set STGL_Q,0;
+ set SOUL_Q,0;
+ set GUNS_Q,0;
+ set NINJ_Q,0;
+ return;
+}
+
+function script F_ClearGarbage {
+ // Clear outdated global VARS
+ //DTS Vote System
+ if($dtsglobalelig) set $dtsglobalelig,0;
+ if($dts&(1<<6)) set $dts,$dts&~(1<<6);
+ //Cube Room
+ if(hzdun) {
+ set MISC_QUEST,MISC_QUEST|512;
+ set num1,0; set num2,0; set num3,0; set num4,0; set num5,0;
+ set num6,0; set num7,0; set num8,0; set num9,0;
+ set hzdun,0; set cubekey,0; set piciburn,0;
+ }
+ //Airship
+ if($lengths){
+ cleararray $textstringsa$[0],"",getarraysize($textstringsa$);
+ cleararray $textstringsb$[0],"",getarraysize($textstringsb$);
+ cleararray $textstringsc$[0],"",getarraysize($textstringsc$);
+ cleararray $compstring$[0],"",getarraysize($compstring$);
+ cleararray $lengths[0],0,getarraysize($lengths);
+ }
+ //Shinkskas Quest garbage
+ if(Shinokas_Quest > 7){
+ set ein_scientist,0;
+ set ein_stuff,0;
+ }
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// Used in REBIRTH scripts
+// Class = Internal Class ID
+// BaseJob = Base Job (0..23)
+// Upper : 0 - Default, 1 - Advanced, 2 - Baby
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Job_Change {
+ if (Upper<2)
+ jobchange getarg(0); // Common jobchange
+ else
+ jobchange getarg(0) + Job_Baby; //Change Job For Baby Class
+ logmes "CLASS CHANGE: " +strcharinfo(0)+ " become a "+jobname(Class);
+ return;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// FOT BACKWISE COMPATIBILITY: Functions used to check a players job class
+// HOW TO USE:
+// i.e. We need all holy classes but monks
+// if ( callfunc("Is_Holy_Class") && callfunc("Is_Monk")==0 ) goto L_Start;
+//////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Aco,Monk,Priest,Aco High,High Priest,
+// Champion, 0 otherwise
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Holy_Class {
+ return ( BaseJob==Job_Acolyte || BaseJob==Job_Priest || BaseJob==Job_Monk );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Archer,Hunter,Bard,Dancer,Archer High,Sniper,
+// Clown,Gypsy, 0 otherwise
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Bow_Class {
+ return ( BaseJob==Job_Archer || BaseJob==Job_Hunter || BaseJob==Job_Bard || BaseJob==Job_Dancer );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Mage,Wizard,Sage,Mage High,High Wizard,
+// Professor, 0 otherwise
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Magic_Class {
+ return ( BaseJob==Job_Mage || BaseJob==Job_Wizard || BaseJob==Job_Sage );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Merc,Blacksmith,Alchemist,Merc High,
+// Whitesmith,Creator, 0 otherwise
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Merc_Class {
+ return ( BaseJob==Job_Merchant || BaseJob==Job_Blacksmith || BaseJob==Job_Alchem );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Thief,Assassin,Rogue,Thief High, Assassin Cross
+// Stalker, 0 otherwise
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Thief_Class {
+ return ( BaseJob==Job_Thief || BaseJob==Job_Assassin || BaseJob==Job_Rogue );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Swordy,Knight,Crusader,Swordy High,
+// Lord Knight,Paladin, 0 otherwise
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Sword_Class {
+ return ( BaseJob==Job_Swordman || BaseJob==Job_Knight || BaseJob==Job_Knight2 || BaseJob==Job_Crusader || BaseJob==Job_Crusader2 );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// returns 1 if the player is either Taekwon, Star Gladiator,Soul Linker, 0 otherwise
+// these classes can't be adopted nor reborn ()
+//////////////////////////////////////////////////////////////////////////////////
+
+function script Is_Taekwon_Class {
+ return ( Class==Job_Taekwon || Class==Job_Star_Gladiator || Class==Job_Star_Gladiator2 || Class==Job_Soul_Linker );
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// Functions used to spiff up dialoges [Lupus]
+//////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_RandMes"
+//////////////////////////////////////////////////////////////////////////////////
+//returns random string
+// Example: check F_Bye or F_Hi functions
+// READ AND THINK: You can use it to pick a random number form list:
+// set @itemIDfromList, callfunc("F_RandMes",8,1129,1222,1163,1357,1360,1522,1811,1410);
+
+function script F_RandMes {
+ return getarg(rand(1,getarg(0)));
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_Sex"
+//////////////////////////////////////////////////////////////////////////////////
+//returns 1st string if female, 2nd string otherwise
+// Example: mes callfunc("F_Sex","What a beautiful lady!","What a handsom man!");
+
+function script F_SexMes {
+ return getarg(Sex);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_Hi"
+//////////////////////////////////////////////////////////////////////////////////
+//returns random HELLO message
+
+function script F_Hi {
+ return callfunc("F_RandMes",5,"Hi!","Hello!","Good day!","How are you?","Hello there.");
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_Bye"
+//////////////////////////////////////////////////////////////////////////////////
+//returns random BYE message
+
+function script F_Bye {
+ return callfunc("F_RandMes",6,"Bye. See you again.","Later.","Goodbye.","Good luck!","Have a nice day!","Byebye!!!");
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_ItemName"
+//////////////////////////////////////////////////////////////////////////////////
+// Returns expanded item name string
+//Argumentss
+// 0 - Item ID
+// 1 - Element N (0=none,1=Ice,2=Earth,3=Fire,4=Wind)
+// 2 - VVS meter 0..3
+// 3 - Refine
+// Example: mes "Show me your "+callfunc("F_ItemName",1201,1,2,5)+"...";
+// is equal to: mes "Show me your ^000090 +5 VVS Fire Knife ^000000..."
+
+function script F_ItemName {
+ set @t$,"^000090";
+ if(getarg(3)) set @t$,@t$+"+"+getarg(3)+" ";
+ if(getarg(2)==1) set @t$,@t$+"VS ";
+ if(getarg(2)==2) set @t$,@t$+"VVS ";
+ if(getarg(2)==3) set @t$,@t$+"VVVS ";
+ if(getarg(2)>3) set @t$,@t$+getarg(2)+"xVS ";
+ if(getarg(1)==1) set @t$,@t$+"Ice ";
+ if(getarg(1)==2) set @t$,@t$+"Earth ";
+ if(getarg(1)==3) set @t$,@t$+"Fire ";
+ if(getarg(1)==4) set @t$,@t$+"Wind ";
+ if(getarg(1)>4) set @t$,@t$+"Strange ";
+ return @t$+getitemname(getarg(0))+"^000000";
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "getJobName" //
+// [Usage] : callfunc("getJobName",Class); //
+//////////////////////////////////////////////////////////////////////////////////
+
+function script getJobName {
+ switch(getarg(0)){
+ case Job_Novice:
+ return "Novice";
+ case Job_Swordman:
+ return "Swordman";
+ case Job_Mage:
+ return "Magician";
+ case Job_Archer:
+ return "Archer";
+ case Job_Acolyte:
+ return "Acolyte";
+ case Job_Merchant:
+ return "Merchant";
+ case Job_Thief:
+ return "Thief";
+ case Job_Knight:
+ case Job_Knight2:
+ return "Knight";
+ case Job_Priest:
+ return "Priest";
+ case Job_Wizard:
+ return "Wizard";
+ case Job_Blacksmith:
+ return "Blacksmith";
+ case Job_Hunter:
+ return "Hunter";
+ case Job_Assassin:
+ return "Assassin";
+ case Job_Crusader:
+ case Job_Crusader2:
+ return "Crusader";
+ case Job_Monk:
+ return "Monk";
+ case Job_Sage:
+ return "Sage";
+ case Job_Rogue:
+ return "Rogue";
+ case Job_Alchem:
+ return "Alchemist";
+ case Job_Bard:
+ return "Bard";
+ case Job_Dancer:
+ return "Dancer";
+ case Job_SuperNovice:
+ return "Super Novice";
+ case Job_Gunslinger:
+ return "Gunsligner";
+ case Job_Ninja:
+ return "Ninja";
+ case Job_Xmas:
+ return "Xmas";
+ case Job_Novice_High:
+ return "Novice High";
+ case Job_Swordman_High:
+ return "Swordman High";
+ case Job_Mage_High:
+ return "Magician High";
+ case Job_Archer_High:
+ return "Archer High";
+ case Job_Acolyte_High:
+ return "Acolyte High";
+ case Job_Merchant_High:
+ return "Merchant High";
+ case Job_Thief_High:
+ return "Thief High";
+ case Job_Lord_Knight:
+ case Job_Lord_Knight2:
+ return "Lord Knight";
+ case Job_High_Priest:
+ return "High Priest";
+ case Job_High_Wizard:
+ return "High Wizard";
+ case Job_Whitesmith:
+ return "Whitesmith";
+ case Job_Sniper:
+ return "Sniper";
+ case Job_Assassin_Cross:
+ return "Assassin Cross";
+ case Job_Paladin:
+ case Job_Paladin2:
+ return "Paladin";
+ case Job_Champion:
+ return "Champion";
+ case Job_Professor:
+ return "Professor";
+ case Job_Stalker:
+ return "Stalker";
+ case Job_Creator:
+ return "Creator";
+ case Job_Clown:
+ return "Clown";
+ case Job_Gypsy:
+ return "Gypsy";
+ case Job_Baby:
+ return "Baby";
+ case Job_Baby_Swordman:
+ return "Baby Swordman";
+ case Job_Baby_Mage:
+ return "Baby Magician";
+ case Job_Baby_Archer:
+ return "Baby Archer";
+ case Job_Baby_Acolyte:
+ return "Baby Acolyte";
+ case Job_Baby_Merchant:
+ return "Baby Merchant";
+ case Job_Baby_Thief:
+ return "Baby Thief";
+ case Job_Baby_Knight:
+ case Job_Baby_Knight2:
+ return "Baby Knight";
+ case Job_Baby_Priest:
+ return "Baby Priest";
+ case Job_Baby_Wizard:
+ return "Baby Wizard";
+ case Job_Baby_Blacksmith:
+ return "Baby Blacksmith";
+ case Job_Baby_Hunter:
+ return "Baby Hunter";
+ case Job_Baby_Assassin:
+ return "Baby Assassin";
+ case Job_Baby_Crusader:
+ case Job_Baby_Crusader2:
+ return "Baby Crusader";
+ case Job_Baby_Monk:
+ return "Baby Monk";
+ case Job_Baby_Sage:
+ return "Baby Sage";
+ case Job_Baby_Rogue:
+ return "Baby Rogue";
+ case Job_Baby_Alchem:
+ return "Baby Alchemist";
+ case Job_Baby_Bard:
+ return "Baby Bard";
+ case Job_Baby_Dancer:
+ return "Baby Dancer";
+ case Job_Super_Baby:
+ return "Super Baby";
+ case Job_Taekwon:
+ if(Sex == 0)
+ return "Taekwon Girl";
+ else
+ return "Taekwon Boy";
+ case Job_Star_Gladiator:
+ case Job_Star_Gladiator2:
+ return "Star Gladiator";
+ case Job_Soul_Linker:
+ return "Soul Linker";
+ case Job_Ninja:
+ return "Ninja";
+ case Job_Gunslinger:
+ return "Gunslinger";
+ case Job_Xmas:
+ return "Christmas";
+ case Option_Wedding:
+ if(Sex == 0)
+ return "Bride";
+ else
+ return "Bridegroom";
+ default:
+ return "omghaxor";
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_SaveQuestSkills": Store learnt quest skills
+//////////////////////////////////////////////////////////////////////////////////
+function script F_SaveQuestSkills {
+ set ADV_QSK,0; set ADV_QSK2,0;
+ //1st classes quest skills
+ for(set @i, 0; @i < 14; set @i, @i + 1){
+ if(getskilllv(144+@i)) set ADV_QSK,ADV_QSK|pow(2,@i);
+ }
+ //2nd classes quest skills
+ for(set @i, 0; @i < 19; set @i, @i + 1){
+ if(getskilllv(1001+@i)) set ADV_QSK2,ADV_QSK2|pow(2,@i);
+ }
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_Load1Skills": Restore learnt 1st class quest skills
+//////////////////////////////////////////////////////////////////////////////////
+function script F_Load1Skills {
+ //1st classes quest skills
+ for(set @i, 0; @i < 14; set @i, @i + 1){
+ if(ADV_QSK|pow(2,@i) == ADV_QSK) skill 144+@i,1,0;
+ }
+ set ADV_QSK,0; //Clear var
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// *** Function "F_Load2Skills": Restore learnt 2nd class quest skills
+//////////////////////////////////////////////////////////////////////////////////
+function script F_Load2Skills {
+ //2nd classes quest skills
+ for(set @i, 0; @i < 19; set @i, @i + 1){
+ if(ADV_QSK2|pow(2,@i) == ADV_QSK2) skill 1001+@i,1,0;
+ }
+ set ADV_QSK2,0; //Clear var
+ return;
} \ No newline at end of file