diff options
Diffstat (limited to 'npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt')
-rw-r--r-- | npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt | 810 |
1 files changed, 405 insertions, 405 deletions
diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt index f5d1e0ef2..5aa2d3dd4 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt @@ -1,405 +1,405 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Main Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 5.4
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= This module contains the main menu, plus the healing and
-//= storage services.
-//===== Additional Comments: =================================
-//= See <http://www.eathena.deltaanime.net/board/index.php?showtopic=20290>
-//= for indepth explanation of the Kafra Express Script Package.
-//= Services available: comment/uncomment what you want (lines 37-104)
-//= See config.txt for per-module configuration.
-//============================================================
-
-// F_KafraExpress (String "Kafra's name", String "kafra image file",
-//int location (0 = Town Kafra, 1 = Dungeon Kafra, 2 = Both),
-//String "save map", int save x, int save y)
-function script F_KafraExpress {
- set @name$,getarg(0);
- set @ke_type,getarg(2);
- if ($@kekp_reset)
- set @kafraPass,0;
- if (getarg(1) != "")
- cutin getarg(1),2;
- callfunc "F_keIntro",-1,"";
-
-M_INIT:
- set @discount, callfunc("F_keCost",1,100);
-
- if (@ke_type == 1) goto MD_INIT;
- menu
- "- Leave",L_END,
- "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL,
- "- Warp Service",M_WARP,
- "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE,
- "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE,
- "- Job Services",M_JOB,
- "- Other Services",M_OTHER,
- "- Save Respawn point",L_SAVE;
-
-MD_INIT:
- menu
- "- Leave",L_END,
- "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL,
- "- Warp Service",M_WARP,
- "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE,
- "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE,
- "- Job Services",M_JOB,
- "- Other Services",M_OTHER,
- "- Save Respawn point",L_SAVE;
-
-M_WARP:
- if (@ke_type == 3 && nif_q_done != 1)
- goto L_DENIED;
- if (@ke_type == 1)
- goto MD_WARP;
- menu
- "- Return",M_INIT,
- "- Dungeons",L_DUNGEON,
- "- PvP Arena",L_PVP,
- "- Guild Wars",L_GUILD_DUNGEON,
- "- Towns",L_TOWN;
-
-MD_WARP:
- menu
- "- Return",M_INIT,
- "- Dungeons",L_DUNGEON,
- "- PvP Arena",L_PVP,
- "- Guild Wars",L_GUILD_DUNGEON,
- "- Towns",L_TOWN;
-
-M_JOB:
- if (@ke_type == 1) goto MD_JOB;
- menu
- "- Return", M_INIT,
- "- Change Job",L_JOB_CHANGE,
- "- Swap Job",L_JOB_SWAP,
- "- Stat/Skill Services",L_STATS,
- "- Stat/Skill Market",L_STAT_MARKET,
- "- Rental Service",L_RENT;
-
-MD_JOB:
- menu
- "- Return", M_INIT,
- "- Change Job",L_JOB_CHANGE,
- "- Swap Job",L_JOB_SWAP,
- "- Stat/Skill Services",L_STATS,
- "- Stat/Skill Market",L_STAT_MARKET,
- "- Rental Service",L_RENT;
-
-M_OTHER:
- if (@ke_type == 1) goto MD_OTHER;
- menu
- "- Return",M_INIT,
- "- Bank Services",L_BANK,
- "- Use Kafra Shop",L_SHOP,
- "- Broadcast a message",L_BROADCAST,
- "- Refine Services",L_REFINE,
- "- Uncard Services",L_UNCARD,
- "- Stylist Service",L_STYLE,
- "- Use a Kafra Pass",L_PASS;
-
-MD_OTHER:
- menu
- "- Return",M_INIT,
- "- Bank Services",L_BANK,
- "- Use Kafra Shop",L_SHOP,
- "- Broadcast a message",L_BROADCAST,
- "- Refine Services",L_REFINE,
- "- Uncard Services",L_UNCARD,
- "- Stylist Service",L_STYLE,
- "- Use a Kafra Pass",L_PASS;
-
-L_HEAL:
- callfunc "F_keHeal";
- goto M_INIT;
-
-L_TOWN:
- callfunc "F_keWarpTown";
- goto M_WARP;
-
-L_DUNGEON:
- callfunc "F_keDungeonWarps", getarg(3);
- goto M_WARP;
-
-L_GUILD_DUNGEON:
- callfunc "F_keWarpWOE";
- goto M_WARP;
-
-L_PVP:
- callfunc "F_keWarpPvp";
- goto M_WARP;
-
-L_STORAGE:
- callfunc "F_keStorage", getarg(1);
- goto M_INIT;
-
-L_GUILD_STORAGE:
- callfunc "F_keGuildStorage", getarg(1);
- goto M_INIT;
-
-L_BANK:
- callfunc "F_keBank";
- goto M_OTHER;
-
-L_SHOP:
- callfunc "F_keShop",@ke_type, getarg(1);
- goto M_OTHER;
-
-L_BROADCAST:
- callfunc "F_keBroadcast",getarg(3);
- goto M_OTHER;
-
-L_PASS:
- callfunc "F_kePass";
- goto M_OTHER;
-
-L_REFINE:
- callfunc "F_keRefine";
- goto M_OTHER;
-
-L_UNCARD:
- callfunc "F_keUncard";
- goto M_OTHER;
-
-L_STYLE:
- callfunc "F_keStylist";
- goto M_OTHER;
-
-L_JOB_CHANGE:
- callfunc "F_keJobChange";
- goto M_JOB;
-
-L_JOB_SWAP:
- callfunc "F_keJobSwap";
- goto M_JOB;
-
-L_STATS:
- callfunc "F_keStats";
- goto M_JOB;
-
-L_STAT_MARKET:
- callfunc "F_keStatMarket";
- goto M_JOB;
-
-L_RENT:
- callfunc "F_keRent";
- goto M_JOB;
-
-L_SAVE:
- if (@ke_type == 3 && nif_q_done != 1)
- goto L_DENIED;
- if ($@kewt_travel && @ke_type != 1) {
- callfunc "F_keAddTravelTown", getarg(3);
- }
- if ($@kewd_travel && @ke_type != 0) {
- callfunc "F_keAddTravelDungeon", getarg(3);
- }
- if ($@ke_saveOnSpot) {
- getmapxy @map$,@x,@y,0;
- savepoint @map$,@x,@y;
- } else {
- savepoint getarg(3),getarg(4),getarg(5);
- }
- emotion e_scissors;
- goto M_INIT;
-
-L_DENIED:
- callfunc "F_keIntro", e_gg, "...no.";
- goto M_INIT;
-
-L_END:
- mes "Thank you for using Kafra Services.";
- close2;
- cutin getarg(1), 255;
- end;
-}
-
-//Function F_keIntro (emotion, message)
-//Displays a message followed by an emotion, then a next button, and finally
-//shows the intro message.
-function script F_keIntro {
- if (getarg(0) >= 0)
- emotion getarg(0);
- if (getarg(1) != "") {
- mes getarg(1);
- next;
- }
- mes "["+@name$+"]";
- mes "Welcome to Kafra Corp. Always by your side, wherever you go.";
- if(@kafraPass) mes "Your Kafra Pass is active,";
- mes "How may I be of help?";
- return;
-}
-
-//Function Heal, offers the heal subsystem.
-function script F_keHeal {
- set @qtyHP,MaxHp-Hp;
- set @qtySP,MaxSp-Sp;
- set @costHP, $@keh_hpCost*(MaxHp-Hp)/10;
- set @costSP, $@keh_spCost*(MaxSp-Sp)/10;
- set @costHPSP, @costHP+@costSP;
- set @discount, callfunc("F_keCost",1,100);
-
- if (@qtyHP + @qtySP == 0) {
- callfunc "F_keIntro", -1, "...you don't need to be healed.";
- return;
- }
- if (@qtyHP == 0) goto M_NO_HP;
- if (@qtySP == 0) goto M_NO_SP;
- menu "- Cancel",-,
- "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP,
- "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP,
- "- Heal Both ("+(@costHPSP*@discount)+"z)",L_HEAL_ALL;
- return;
-
-M_NO_HP:
- menu "- Cancel",-,
- "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP;
- return;
-
-M_NO_SP:
- menu "- Cancel",-,
- "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP;
- return;
-
-L_HEAL_HP:
- if (!(callfunc("F_keCharge",@costHP,100,0))) {
- callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed.";
- return;
- }
- emotion e_no1;
- heal @qtyHP,0;
- return;
-
-L_HEAL_SP:
- if (!(callfunc("F_keCharge",@costSP,100,0))) {
- callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed.";
- return;
- }
- emotion e_no1;
- heal 0,@qtySP;
- return;
-
-L_HEAL_ALL:
- if (!(callfunc("F_keCharge",@costHPSP,100,0))) {
- callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed.";
- return;
- }
- emotion e_no1;
- heal @qtyHP,@qtySP;
- return;
-}
-
-//Function storage: allows access to the storage facility
-//The sent argument is the displaying image, so we can clear it afterwards.
-function script F_keStorage {
- if(basicskillcheck(0) > 0 && getskilllv(1) < 6) {
- callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage.";
- return;
- }
- if (!(callfunc("F_keCharge",$@kes_cost,100,1))) {
- callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny.";
- return;
- }
- mes "Thank for you using Kafra services.";
- emotion e_thx;
- close2;
- openstorage;
- cutin getarg(0), 255;
- end;
-}
-
-//Function G Storage: Allows access to the Guild Storage
-function script F_keGuildStorage {
- if(basicskillcheck(0) > 0 && getskilllv(1) < 6) {
- callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage.";
- return;
- }
- if(getcharid(2) < 1) {
- callfunc "F_keIntro", e_swt, "You can't use the Guild Storage if you don't belong to a guild!";
- return;
- }
- if (callfunc("F_keCost",$@kegs_cost,100) > Zeny) {
- callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny.";
- return;
- }
- if (guildopenstorage(0) == 1) {
- callfunc "F_keIntro", -1, "Sorry, the guild storage is currently in use by someone else. Try again later.";
- return;
- }
- callfunc "F_keCharge",$@kegs_cost,100,1;
- mes "Thank for you using Kafra services.";
- emotion e_thx;
- close2;
- cutin getarg(0), 255;
- end;
-}
-
-function script F_kePass {
- if (@kafraPass) {
- callfunc "F_keIntro", -1, "You already are using a Kafra Pass...";
- return;
- }
- if (countitem(1084)<1) {
- callfunc "F_keIntro", -1, "You obviously need a 'Kafra Pass' if you want to activate it.";
- return;
- }
- delitem 1084,1;
- set @kafraPass,1;
- callfunc "F_keIntro", e_lv, "Your Kafra Pass has been activated.";
- return;
-}
-
-//F_keCost(int cost, int discount%)
-//Returns what would be the cost of a service considering the KafraPass.
-//The discount value should be between 0 and 100
-function script F_keCost {
- if (@kafraPass) {
- return getarg(0)*(100-getarg(1))/100;
- }
- return getarg(0);
-}
-
-//F_keCharge(int cost, int discount%, bool appliesKP)
-//Charges for a service, using the KafraPass state and discount value.
-//appliesKP marks if the cost savings apply for stocking Kafra Reserve Points
-//Function returns 1 if successful, 0 if there's not enough zeny.
-function script F_keCharge {
- set @savings, 0;
- if (@kafraPass)
- set @savings, getarg(0)*getarg(1)/100;
- set @cost, getarg(0)-@savings;
- if (@cost > Zeny || @cost < 0) { // (@cost < 0) for overflow protection
- return 0;
- }
- set Zeny, Zeny-@cost;
-
- if (getarg(2) && @savings > 0 && $@kekp_reserveCost > 0) {
- set @savings, @savings/$@kekp_reserveCost;
- if (@savings < $@kekp_minReserve)
- set @savings, $@kekp_minReserve;
- if (@savings > $@kekp_maxReserve)
- set @savings, $@kekp_maxReserve;
-
- set RESRVPTS, RESRVPTS + @savings;
- }
- return 1;
-}
-
-//Function F_keWarp (int cost, int discount, int emotion, String map, int x, int y)
-function script F_keWarp {
- if (!(callfunc("F_keCharge",getarg(0),getarg(1),1))) {
- callfunc "F_keIntro", e_an, "You don't have enough Zeny...";
- return;
- }
- emotion getarg(2);
- warp getarg(3),getarg(4),getarg(5);
- end;
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Main Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 5.4 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= This module contains the main menu, plus the healing and +//= storage services. +//===== Additional Comments: ================================= +//= See <http://www.eathena.deltaanime.net/board/index.php?showtopic=20290> +//= for indepth explanation of the Kafra Express Script Package. +//= Services available: comment/uncomment what you want (lines 37-104) +//= See config.txt for per-module configuration. +//============================================================ + +// F_KafraExpress (String "Kafra's name", String "kafra image file", +//int location (0 = Town Kafra, 1 = Dungeon Kafra, 2 = Both), +//String "save map", int save x, int save y) +function script F_KafraExpress { + set @name$,getarg(0); + set @ke_type,getarg(2); + if ($@kekp_reset) + set @kafraPass,0; + if (getarg(1) != "") + cutin getarg(1),2; + callfunc "F_keIntro",-1,""; + +M_INIT: + set @discount, callfunc("F_keCost",1,100); + + if (@ke_type == 1) goto MD_INIT; + menu + "- Leave",L_END, + "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL, + "- Warp Service",M_WARP, + "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE, + "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE, + "- Job Services",M_JOB, + "- Other Services",M_OTHER, + "- Save Respawn point",L_SAVE; + +MD_INIT: + menu + "- Leave",L_END, + "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL, + "- Warp Service",M_WARP, + "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE, + "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE, + "- Job Services",M_JOB, + "- Other Services",M_OTHER, + "- Save Respawn point",L_SAVE; + +M_WARP: + if (@ke_type == 3 && nif_q_done != 1) + goto L_DENIED; + if (@ke_type == 1) + goto MD_WARP; + menu + "- Return",M_INIT, + "- Dungeons",L_DUNGEON, + "- PvP Arena",L_PVP, + "- Guild Wars",L_GUILD_DUNGEON, + "- Towns",L_TOWN; + +MD_WARP: + menu + "- Return",M_INIT, + "- Dungeons",L_DUNGEON, + "- PvP Arena",L_PVP, + "- Guild Wars",L_GUILD_DUNGEON, + "- Towns",L_TOWN; + +M_JOB: + if (@ke_type == 1) goto MD_JOB; + menu + "- Return", M_INIT, + "- Change Job",L_JOB_CHANGE, + "- Swap Job",L_JOB_SWAP, + "- Stat/Skill Services",L_STATS, + "- Stat/Skill Market",L_STAT_MARKET, + "- Rental Service",L_RENT; + +MD_JOB: + menu + "- Return", M_INIT, + "- Change Job",L_JOB_CHANGE, + "- Swap Job",L_JOB_SWAP, + "- Stat/Skill Services",L_STATS, + "- Stat/Skill Market",L_STAT_MARKET, + "- Rental Service",L_RENT; + +M_OTHER: + if (@ke_type == 1) goto MD_OTHER; + menu + "- Return",M_INIT, + "- Bank Services",L_BANK, + "- Use Kafra Shop",L_SHOP, + "- Broadcast a message",L_BROADCAST, + "- Refine Services",L_REFINE, + "- Uncard Services",L_UNCARD, + "- Stylist Service",L_STYLE, + "- Use a Kafra Pass",L_PASS; + +MD_OTHER: + menu + "- Return",M_INIT, + "- Bank Services",L_BANK, + "- Use Kafra Shop",L_SHOP, + "- Broadcast a message",L_BROADCAST, + "- Refine Services",L_REFINE, + "- Uncard Services",L_UNCARD, + "- Stylist Service",L_STYLE, + "- Use a Kafra Pass",L_PASS; + +L_HEAL: + callfunc "F_keHeal"; + goto M_INIT; + +L_TOWN: + callfunc "F_keWarpTown"; + goto M_WARP; + +L_DUNGEON: + callfunc "F_keDungeonWarps", getarg(3); + goto M_WARP; + +L_GUILD_DUNGEON: + callfunc "F_keWarpWOE"; + goto M_WARP; + +L_PVP: + callfunc "F_keWarpPvp"; + goto M_WARP; + +L_STORAGE: + callfunc "F_keStorage", getarg(1); + goto M_INIT; + +L_GUILD_STORAGE: + callfunc "F_keGuildStorage", getarg(1); + goto M_INIT; + +L_BANK: + callfunc "F_keBank"; + goto M_OTHER; + +L_SHOP: + callfunc "F_keShop",@ke_type, getarg(1); + goto M_OTHER; + +L_BROADCAST: + callfunc "F_keBroadcast",getarg(3); + goto M_OTHER; + +L_PASS: + callfunc "F_kePass"; + goto M_OTHER; + +L_REFINE: + callfunc "F_keRefine"; + goto M_OTHER; + +L_UNCARD: + callfunc "F_keUncard"; + goto M_OTHER; + +L_STYLE: + callfunc "F_keStylist"; + goto M_OTHER; + +L_JOB_CHANGE: + callfunc "F_keJobChange"; + goto M_JOB; + +L_JOB_SWAP: + callfunc "F_keJobSwap"; + goto M_JOB; + +L_STATS: + callfunc "F_keStats"; + goto M_JOB; + +L_STAT_MARKET: + callfunc "F_keStatMarket"; + goto M_JOB; + +L_RENT: + callfunc "F_keRent"; + goto M_JOB; + +L_SAVE: + if (@ke_type == 3 && nif_q_done != 1) + goto L_DENIED; + if ($@kewt_travel && @ke_type != 1) { + callfunc "F_keAddTravelTown", getarg(3); + } + if ($@kewd_travel && @ke_type != 0) { + callfunc "F_keAddTravelDungeon", getarg(3); + } + if ($@ke_saveOnSpot) { + getmapxy @map$,@x,@y,0; + savepoint @map$,@x,@y; + } else { + savepoint getarg(3),getarg(4),getarg(5); + } + emotion e_scissors; + goto M_INIT; + +L_DENIED: + callfunc "F_keIntro", e_gg, "...no."; + goto M_INIT; + +L_END: + mes "Thank you for using Kafra Services."; + close2; + cutin getarg(1), 255; + end; +} + +//Function F_keIntro (emotion, message) +//Displays a message followed by an emotion, then a next button, and finally +//shows the intro message. +function script F_keIntro { + if (getarg(0) >= 0) + emotion getarg(0); + if (getarg(1) != "") { + mes getarg(1); + next; + } + mes "["+@name$+"]"; + mes "Welcome to Kafra Corp. Always by your side, wherever you go."; + if(@kafraPass) mes "Your Kafra Pass is active,"; + mes "How may I be of help?"; + return; +} + +//Function Heal, offers the heal subsystem. +function script F_keHeal { + set @qtyHP,MaxHp-Hp; + set @qtySP,MaxSp-Sp; + set @costHP, $@keh_hpCost*(MaxHp-Hp)/10; + set @costSP, $@keh_spCost*(MaxSp-Sp)/10; + set @costHPSP, @costHP+@costSP; + set @discount, callfunc("F_keCost",1,100); + + if (@qtyHP + @qtySP == 0) { + callfunc "F_keIntro", -1, "...you don't need to be healed."; + return; + } + if (@qtyHP == 0) goto M_NO_HP; + if (@qtySP == 0) goto M_NO_SP; + menu "- Cancel",-, + "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP, + "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP, + "- Heal Both ("+(@costHPSP*@discount)+"z)",L_HEAL_ALL; + return; + +M_NO_HP: + menu "- Cancel",-, + "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP; + return; + +M_NO_SP: + menu "- Cancel",-, + "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP; + return; + +L_HEAL_HP: + if (!(callfunc("F_keCharge",@costHP,100,0))) { + callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed."; + return; + } + emotion e_no1; + heal @qtyHP,0; + return; + +L_HEAL_SP: + if (!(callfunc("F_keCharge",@costSP,100,0))) { + callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed."; + return; + } + emotion e_no1; + heal 0,@qtySP; + return; + +L_HEAL_ALL: + if (!(callfunc("F_keCharge",@costHPSP,100,0))) { + callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed."; + return; + } + emotion e_no1; + heal @qtyHP,@qtySP; + return; +} + +//Function storage: allows access to the storage facility +//The sent argument is the displaying image, so we can clear it afterwards. +function script F_keStorage { + if(basicskillcheck(0) > 0 && getskilllv(1) < 6) { + callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage."; + return; + } + if (!(callfunc("F_keCharge",$@kes_cost,100,1))) { + callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny."; + return; + } + mes "Thank for you using Kafra services."; + emotion e_thx; + close2; + openstorage; + cutin getarg(0), 255; + end; +} + +//Function G Storage: Allows access to the Guild Storage +function script F_keGuildStorage { + if(basicskillcheck(0) > 0 && getskilllv(1) < 6) { + callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage."; + return; + } + if(getcharid(2) < 1) { + callfunc "F_keIntro", e_swt, "You can't use the Guild Storage if you don't belong to a guild!"; + return; + } + if (callfunc("F_keCost",$@kegs_cost,100) > Zeny) { + callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny."; + return; + } + if (guildopenstorage(0) == 1) { + callfunc "F_keIntro", -1, "Sorry, the guild storage is currently in use by someone else. Try again later."; + return; + } + callfunc "F_keCharge",$@kegs_cost,100,1; + mes "Thank for you using Kafra services."; + emotion e_thx; + close2; + cutin getarg(0), 255; + end; +} + +function script F_kePass { + if (@kafraPass) { + callfunc "F_keIntro", -1, "You already are using a Kafra Pass..."; + return; + } + if (countitem(1084)<1) { + callfunc "F_keIntro", -1, "You obviously need a 'Kafra Pass' if you want to activate it."; + return; + } + delitem 1084,1; + set @kafraPass,1; + callfunc "F_keIntro", e_lv, "Your Kafra Pass has been activated."; + return; +} + +//F_keCost(int cost, int discount%) +//Returns what would be the cost of a service considering the KafraPass. +//The discount value should be between 0 and 100 +function script F_keCost { + if (@kafraPass) { + return getarg(0)*(100-getarg(1))/100; + } + return getarg(0); +} + +//F_keCharge(int cost, int discount%, bool appliesKP) +//Charges for a service, using the KafraPass state and discount value. +//appliesKP marks if the cost savings apply for stocking Kafra Reserve Points +//Function returns 1 if successful, 0 if there's not enough zeny. +function script F_keCharge { + set @savings, 0; + if (@kafraPass) + set @savings, getarg(0)*getarg(1)/100; + set @cost, getarg(0)-@savings; + if (@cost > Zeny || @cost < 0) { // (@cost < 0) for overflow protection + return 0; + } + set Zeny, Zeny-@cost; + + if (getarg(2) && @savings > 0 && $@kekp_reserveCost > 0) { + set @savings, @savings/$@kekp_reserveCost; + if (@savings < $@kekp_minReserve) + set @savings, $@kekp_minReserve; + if (@savings > $@kekp_maxReserve) + set @savings, $@kekp_maxReserve; + + set RESRVPTS, RESRVPTS + @savings; + } + return 1; +} + +//Function F_keWarp (int cost, int discount, int emotion, String map, int x, int y) +function script F_keWarp { + if (!(callfunc("F_keCharge",getarg(0),getarg(1),1))) { + callfunc "F_keIntro", e_an, "You don't have enough Zeny..."; + return; + } + emotion getarg(2); + warp getarg(3),getarg(4),getarg(5); + end; +} |