
- added a missing \n to one login server warning - silenced one "dc[4] might be uninitialized" warning - fixed an apparently wrong abra_db.txt entry (venom splasher: 40000) - removed .gat from the remaining npcs git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10974 54d463be-8e91-2dee-dedb-b68131a5f0ec
1145 lines
43 KiB
Plaintext
1145 lines
43 KiB
Plaintext
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Kafra Express Script Package Documentation %
|
|
% - by Skotlex %
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
This file's purpose is to give an indepth explanation about setting up, and
|
|
configuring the Kafra Express Script Package (KESP). It is intended to be
|
|
viewed by a text editor using fixed-width font and 80-character long lines.
|
|
|
|
Document Version v2.0 (27/September/2006)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
Table of Contents
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[00] Including the NPC files and menu editing
|
|
[01] Intro to module configuring and general options (config.txt)
|
|
[02] Module: Main Core (ke_main.txt)
|
|
[03] Module: Bank (ke_bank.txt)
|
|
[04] Module: Broadcast (ke_broadcast.txt)
|
|
[05] Module: Stylist (ke_dye.txt)
|
|
[06] Module: Job Changer (ke_jobchange.txt)
|
|
[07] Module: Job Swapper (ke_jobswap.txt)
|
|
[08] Module: Smithery (ke_refine.txt)
|
|
[09] Module: Renting (ke_refine.txt)
|
|
[10] Module: Kafra Shop (ke_shop.txt)
|
|
[11] Module: Stat/Skill Market (ke_statmarket.txt)
|
|
[12] Module: Stat/Skill Resets/Raising (ke_stats.txt)
|
|
[13] Module: Uncarding (ke_uncard.txt)
|
|
[14] Module: Town Warping (ke_warp_town.txt)
|
|
[15] Module: Dungeon Warping (ke_warp_dungeon.txt)
|
|
[16] Module: PvP Warping (ke_warp_pvp.txt)
|
|
[17] Module: WoE Warping (ke_warp_woe.txt)
|
|
[18] The kafras.txt file: About Kafra Definitions
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[00] Including the NPC files and menu editing
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Because of the script's complexity, placing everything in a single file
|
|
is out of the question, therefore the KESP comes bundled in different
|
|
files. Because of the dynamic nature of the script, there are two things
|
|
you need to do in order to enable/disable a particular service:
|
|
|
|
1. Include the txt file with the corresponding module.
|
|
To include the txt files, you need to know two things: where are the script
|
|
files located, and which is the configuration file where you place the npc
|
|
includes. We'll assume on this guide that you unpacked the KESP in
|
|
npc/custom/kafraExpress. The configuration file for scripts is
|
|
conf/map_athena.conf for eA1.0rc5, and npcs/scripts_custom.txt for current eA
|
|
SVN versions. Add the files you want in the following manner:
|
|
|
|
npc: npc/custom/kafraExpress/ke_main.txt
|
|
//npc: npc/custom/kafraExpress/ke_rent.txt
|
|
|
|
The first line is including the file ke_main.,txt, while the following
|
|
excludes ke_rent from being used. Placing the "//" at the beginning of the
|
|
line is known as commenting, and it's a useful way of quickly toggling a
|
|
certain script on/off. The following is the list of all files that come
|
|
bundled in the package:
|
|
|
|
npc: npc/custom/kafraExpress/kafras.txt
|
|
npc: npc/custom/kafraExpress/config.txt
|
|
npc: npc/custom/kafraExpress/ke_main.txt
|
|
|
|
npc: npc/custom/kafraExpress/ke_bank.txt
|
|
npc: npc/custom/kafraExpress/ke_broadcast.txt
|
|
npc: npc/custom/kafraExpress/ke_dye.txt
|
|
npc: npc/custom/kafraExpress/ke_jobchange.txt
|
|
npc: npc/custom/kafraExpress/ke_jobswap.txt
|
|
npc: npc/custom/kafraExpress/ke_rent.txt
|
|
npc: npc/custom/kafraExpress/ke_shop.txt
|
|
npc: npc/custom/kafraExpress/ke_statmarket.txt
|
|
npc: npc/custom/kafraExpress/ke_stats.txt
|
|
npc: npc/custom/kafraExpress/ke_refine.txt
|
|
npc: npc/custom/kafraExpress/ke_uncard.txt
|
|
npc: npc/custom/kafraExpress/ke_warp_dungeon.txt
|
|
npc: npc/custom/kafraExpress/ke_warp_pvp.txt
|
|
npc: npc/custom/kafraExpress/ke_warp_town.txt
|
|
npc: npc/custom/kafraExpress/ke_warp_woe.txt
|
|
|
|
What files can be commented, which files you want to include? On the minimum,
|
|
you need ke_main.txt, kafras.txt and config.txt to have the bare-bones functionality.
|
|
Refer to the table of context to see the relation between files and the
|
|
services they offer.
|
|
|
|
2. Configure the Menus
|
|
The second part of the configuration is adding/removing the menu entries that
|
|
lead to the specific services. Failure to do this can either A. leave you with
|
|
menu entries that lead to "Function Not found!" errors on the map server, or
|
|
B. Services that were included, but you can't pick because they don't show up
|
|
in the menu. The main file where you should configure the menus is ke_main.txt.
|
|
|
|
From the main module, ke_main.txt, you must pick which services are available.
|
|
The file contains eight menu sections, which is made up of two pairs of
|
|
identitical menus. The only difference is that the first menu is displayed on
|
|
Kafras placed on towns, while the second menu is for Kafras placed on fields and
|
|
dungeons. The menu roughly looks like this:
|
|
|
|
menu
|
|
"- Leave",L_END,
|
|
"- Heal Service ("<some code here>"z/10SP)",L_HEAL,
|
|
"- Warp Service",L_WARP,
|
|
// "- Use Storage ("<some code here>"z)",L_STORAGE,
|
|
// "- Use Guild Storage ("<some code here>"z)",L_GUILD_STORAGE,
|
|
"- Job Services",M_JOB,
|
|
"- Other Services",M_OTHER,
|
|
"- Save Respawn point",L_SAVE;
|
|
|
|
This is the main menu, as you can see the only service unavailable is to use
|
|
the storage. Like in the npc/config file, you can comment the lines of the
|
|
services you do not want.
|
|
|
|
WARNING: If you need to comment the last option of a menu, remember to replace
|
|
the comma for a semi-colon on the next-to-last option or script parsing errors
|
|
will occur.
|
|
|
|
The "Warp Service" leads to the second pair of menus you can configure:
|
|
|
|
menu
|
|
"- Return",-,
|
|
"- Dungeons",L_DUNGEON,
|
|
// "- PvP Arena",L_PVP,
|
|
// "- Guild Wars",L_GUILD_DUNGEON,
|
|
"- Towns",L_TOWN;
|
|
goto M_INIT;
|
|
|
|
As before, you can comment/uncomment the features you want or not. Likewise,
|
|
the third menu under "Job Services" contains features related to job changing,
|
|
stats/skills and renting. The fourth pair is the "Other Services" menu which
|
|
contains the rest of modules which are probably not going to be used
|
|
frequently.
|
|
|
|
For your convenience, the following is the list of all the menu options and the file(s) required for it to work:
|
|
|
|
//Main Menu (under labels M_INIT/MD_INIT)
|
|
|
|
"- Heal Service" -> ke_main.txt
|
|
"- Warp Service"
|
|
"- Use Storage" -> ke_main.txt
|
|
"- Use Guild Storage" -> ke_main.txt
|
|
"- Job Services"
|
|
"- Other Services"
|
|
"- Save Respawn point" -> ke_main.txt
|
|
|
|
//Warp Menu (under labels M_WARP/MD_WARP)
|
|
|
|
"- Dungeons" -> ke_warp_dungeon.txt
|
|
"- PvP Arena" -> ke_warp_pvp.txt
|
|
"- Guild Wars" -> ke_warp_gvg.txt
|
|
"- Towns" -> ke_warp_town.txt
|
|
|
|
//Job Services Menu (under labels M_JOB/MD_JOB)
|
|
|
|
"- Change Job" -> ke_jobchange.txt
|
|
"- Swap Job" -> ke_jobswap.txt
|
|
"- Stat/Skill Services" -> ke_stats.txt
|
|
"- Stat/Skill Market" -> ke_statmarket.txt
|
|
"- Rental Service" -> ke_rent.txt
|
|
|
|
//Other Services Menu (under labels M_OTHER/MD_OTHER)
|
|
|
|
"- Bank Services" -> ke_bank.txt
|
|
"- Use Kafra Shop" -> ke_shop.txt
|
|
"- Broadcast a message" -> ke_broadcast.txt
|
|
"- Refine Services" -> ke_refine.txt
|
|
"- Uncard Services" -> ke_uncard.txt
|
|
"- Stylist Service" -> ke_dye.txt
|
|
"- Use a Kafra Pass" -> ke_main.txt
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[01] Intro to individual module configuration.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
For portability reasons, the configure options for every module is in the file
|
|
config.txt, which lets you upgrade to future versions without having to
|
|
readjust your settings every time.
|
|
The config file has the options separated per module to make it easier to
|
|
read. There may be bits of code in each section to avoid parsing configure
|
|
options for unneeded variables which should be left alone. In some rare
|
|
occassions variables from one module will be used in a different module (ie:
|
|
Broadcasting PvP messages uses the variables from the pvp module). all variables
|
|
follow the standard "ke<module initials>_variablename", so a variable called
|
|
"kewd_discount" refers to the discount variable in the deep warps module (wd).
|
|
For example, the renting module's configuration segment is:
|
|
|
|
//-------------------------------------------------------------------------------
|
|
//Config for the Renting Module
|
|
//-------------------------------------------------------------------------------
|
|
OnLoadRent:
|
|
set $@kert_cartOnly, 0; //Set to 1 to enable only cart rental, 0 enables all add-ons.
|
|
set $@kert_cartCost, 2000; //Cost to rent a Cart.
|
|
set $@kert_falconCost, 2000; //Cost to rent a Falcon.
|
|
set $@kert_pecoCost, 2000; //Cost to rent a PecoPeco.
|
|
end;
|
|
|
|
Variables are usually of two types: Exact value based or Percentage based.
|
|
Exact value variables are often price for different services, while the
|
|
percentage based are things like 30% discount when using Kafra Passes.
|
|
Percentage values are expressed per-hundredth (that is, 10 = 10%, 100 = 100%)
|
|
unless otherwise specified.
|
|
|
|
Each variable has a small description next to it, hence the need of this
|
|
document. In this document the variable type is identified next to it by: (1)
|
|
when it's boolean, (%) when it's a percentage, ($) when it's a price, (#) for
|
|
numbers and (") for strings.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[02] Module: Main Core (ke_main.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
This module offers the core functionality of the Kafra Express. Contains the
|
|
main menu and handles the Kafra Pass Reserve Points system.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) ke_saveOnSpot
|
|
-----------------
|
|
When 1, a character's respawn point is saved exactly where they are standing.
|
|
otherwise, the respawn point is specified by the kafra definition (see Section
|
|
18).
|
|
|
|
($) keh_hpCost
|
|
($) keh_spCost
|
|
--------------
|
|
The cost of healing sp per every 10 sp. For example, if the cost is 1, it
|
|
costs 100z to heal 1000.
|
|
|
|
($) kes_cost
|
|
($) kegs_cost
|
|
-------------
|
|
The cost of using the storage, guild storage (respectively)
|
|
|
|
(#) kekp_reset
|
|
--------------
|
|
For Kafra Passes. When set, the Pass expires after starting a chat with the
|
|
Kafra the amount of times specified. Otherwise the variable remains active a
|
|
pretty long time (probably all session). For example, if set to 2, after
|
|
activating the pass and opening the storage, the Pass will still be active
|
|
the next time you speak to a kafra, it will expire on the "third" time you
|
|
speak to her.
|
|
|
|
($) kekp_reserveCost
|
|
--------------------
|
|
The cost in zeny of reserve points. When using a Kafra Pass many services will
|
|
be cheaper, the amount of zeny saved is "used" to grant the player reserve
|
|
points. For example, if the reserve cost is 100, for every 100z the player
|
|
saves, he'll earn 1 reserve points. Reserve points can be used in scripts, and
|
|
by default is used in the Al De Baran Kafra Headquarters to gain items. Use a
|
|
value of 0 to disable Reserve Point gaining.
|
|
|
|
(#) kekp_minReserve
|
|
(#) kekp_maxReserve
|
|
---------------
|
|
What is the minimum/maximum reserve points the player can gain when using a
|
|
Kafra Pass per transaction? This only applies when the player has saved at
|
|
least 1z.
|
|
|
|
(") ked_users
|
|
-------------
|
|
Certain modules (in particular, the warping ones) have the ability to display
|
|
the number of players related to the function (ie: number of users in a
|
|
dungeon), in such cases this variable is used to display the 'unit' of said
|
|
count. For example, if ked_users is "kids" then the related modules might
|
|
display things like "- Glast Heim (6 kids)".
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[03] Module: Bank (ke_bank.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
This modules enables characters to "store" zeny on a virtual bank account
|
|
which is shared among characters of the same account. There can be deposits,
|
|
withdrawals, which can have transactions fees associated.
|
|
|
|
It is also possible to establish a monthly maintenance fee that has to be
|
|
payed, when the player does not has enough money in the account to pay this
|
|
fee, they stop gaining interests until they deposit enough to pay it up.
|
|
Finally, all fees charged by the bank can be stored in a server-wide variable
|
|
which may be used by other custom scripts.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(%) kebk_depositCost
|
|
(%) kebk_withdrawCost
|
|
---------------------
|
|
The Fee in % charged whenever a player does a deposit/withdrawal. For example,
|
|
when a player deposits 100z and the fee is 3%, only 97z are deposited, and 3z
|
|
are charged. Likewise, if a player withdraws 100z when the fee is of 5%,
|
|
they'll withdraw 100z and an additional 5z will be removed from their accounts
|
|
as fee cost.
|
|
|
|
($) kebk_minTransact
|
|
($) kebk_maxTransact
|
|
--------------------
|
|
The minimum/maximum values of a single transaction (deposit or withdrawal)
|
|
|
|
($) kebk_capacity
|
|
-----------------
|
|
Indicates what is the bank account capacity for players. That is, what is the
|
|
maximum zeny their account can hold. You can't deposit anymore once the max
|
|
has been reached, and daily interests are lost while maxed.
|
|
|
|
(%) kebk_dayInterest
|
|
--------------------
|
|
The daily interests that the account makes. The value is in 0.01% units, so a
|
|
value of 100 equals 1% daily interests.
|
|
|
|
($) kebk_monMaintenance
|
|
-----------------------
|
|
Monthly flat fee charged for maintenance.
|
|
|
|
(1) kebk_useGlobalBank
|
|
----------------------
|
|
When 1, every fee charged from the player goes into a server variable
|
|
($ke_globalbank), which can then be used by other scripts. is 0 by default
|
|
because none of the Kafra Express modules uses it.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[04] Module: Broadcast (ke_broadcast.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Provides broadcasting services for players. Broadcasts can be local (current
|
|
map only) or global (server announce), there are also four types of broadcast:
|
|
Requests for a party, PvP Challenge invitations, General Broadcasts (player
|
|
input the string they want to say) and General Anonymous Broadcasts (player
|
|
name is not displayed when doing the broadcast).
|
|
|
|
Note that the variables from ke_warp_pvp.txt will be used for auto-configuring
|
|
the pvp broadcasts.
|
|
|
|
Variables:
|
|
================================================================================
|
|
|
|
(1) kebc_showOnline
|
|
-------------------
|
|
When 1, the total count of players will be displayed in the menu (map users
|
|
next to the local broadcast entry, server users next to the global broadcast
|
|
entry).
|
|
|
|
($) kebc_partyCost
|
|
($) kebc_pvpCost
|
|
($) kebc_cost
|
|
($) kebc_anonCost
|
|
------------------
|
|
Respective base costs for doing Party-Requests/Pvp Challenge/General/Anonymous
|
|
broadcasts.
|
|
|
|
(%) kebc_globalFactor
|
|
---------------------
|
|
When the broadcast is global, the base cost is multipled by this factor. If
|
|
the factor is 500, then global broadcasts cost 5x times the cost of the map's
|
|
broadcast.
|
|
|
|
(%) kebc_discount
|
|
-----------------
|
|
Discount on broadcast prices when the Kafra Pass is active.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[05] Module: Stylist (ke_dye.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Offers cloth dye, hair dye and hair style changes, both by input and by wheel
|
|
browsing. Does not consumes dyestuffs because it is designed for custom dye
|
|
packages.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) kedy_enableHairstyle
|
|
------------------------
|
|
If one, the menu will include hair-style changing options, otherwise only
|
|
dye-changes are offered
|
|
|
|
(#) kedy_styles
|
|
---------------
|
|
Specifies the number of available hair styles
|
|
|
|
(#) kedy_hair
|
|
-------------
|
|
Specificies the number of hair dyes
|
|
|
|
(#) kedy_clothJN
|
|
(#) kedy_clothJ1ST
|
|
(#) kedy_clothJ2ND
|
|
(#) kedy_clothJSN
|
|
------------------
|
|
Specifies the number of cloth dyes based on job-type: Novices, First Classes,
|
|
Second Classes, Super Novices.
|
|
Note that special classes like Xmas or Wedding tend to not have palettes, and
|
|
it should be handled server-side so that switching palettes with this module
|
|
will not cause you client crashes.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[06] Module: Job Changer (ke_jobchange.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Offers job changing, including rebirth and baby classes. The rebirth system
|
|
can allow people free changing through a different path, or forcing the
|
|
correct path. Zeny can be charged/granted as well as weapons on job-change.
|
|
Remaining Skill Points can be wiped, ignored or prevent the change from
|
|
happening. Before changing players can review the consequences of doing so,
|
|
including weapons to gain.
|
|
|
|
Finally, there's an option that makes it possible to skip the novice class
|
|
altogether and change directly to first jobs.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(#) kejc_skillsPolicy
|
|
---------------------
|
|
Determines what to do with remaining skill points upon change:
|
|
0: No job changing until points are used.
|
|
1: Extra Skill Points are wiped.
|
|
2: Extra skill points are conserved.
|
|
|
|
(#) kejc_upperPolicy
|
|
--------------------
|
|
What to do about the advanced classes?
|
|
0: Free for all, players can pick any advanced job regardless of the previous.
|
|
1: Force mode, classes are auto-selected from the previous path. In the
|
|
case the path could not be determined (players changed jobs previously
|
|
using other npcs), players will be able to select their next job.
|
|
|
|
(#) kejc_disable
|
|
----------------
|
|
Permits disabling some job trees from the changer (add as required):
|
|
1: You can't change to a S. Novice
|
|
2: You can't change to Taekwon (but if you are a Taekwon already, you can
|
|
still change to Soul Linker/Star Gladiator)
|
|
4: Can't change to GunSlinger
|
|
8: Can't change to Ninja
|
|
|
|
(1) kejc_announce
|
|
-----------------
|
|
When 1, a global announce will be done upon change.
|
|
|
|
(1) kejc_resetDye
|
|
-----------------
|
|
If one, the cloth dye is reset upon changing.
|
|
|
|
(1) kejc_skipNovice
|
|
-------------------
|
|
If one, players can skip the novice class and directly into their first job.
|
|
Exploit proof, skills are wiped when changing to a 1st class this way, and
|
|
their basic skill level is set to 9.
|
|
|
|
(#) kejc_baseSN
|
|
---------------
|
|
Base Level required before changing into a Super Novice.
|
|
|
|
(#) kejc_base2ND
|
|
(#) kejc_job2ND
|
|
(#) kejc_cost2ND
|
|
----------------
|
|
Base level, Job level and zeny required to change into a second job. If the
|
|
cost is below zero, zeny will be given to the player instead of charged.
|
|
|
|
(#) kejc_baseRebirth
|
|
(#) kejc_jobRebirth
|
|
(#) kejc_costRebirth
|
|
--------------------
|
|
Base level, Job level and zeny required before doing a rebirth (change to High
|
|
Novice).
|
|
|
|
(1) kejc_rebirthReset
|
|
---------------------
|
|
If 1, when changing into a HighNovice characters will have their level reset
|
|
to 1 (with the additional 100 stat points)
|
|
|
|
(1) kejc_weaponPolicy
|
|
---------------------
|
|
If 1, characters will get a weapon upon job change. For each first&second
|
|
class there are two weapons to specify, the standard weapon and the "premium"
|
|
one.
|
|
|
|
(#) kejc_wBonusLv
|
|
-----------------
|
|
When characters reach this job level, they will receive the premium weapon instead of the normal one. If 0, premium weapons are disabled.
|
|
|
|
(#) kejc_weapon1[]
|
|
(#) kejc_weapon_21[]
|
|
(#) kejc_weapon_22[]
|
|
-----------------------
|
|
These arrays contain the IDs of the normal weapons received upon job change
|
|
for first, 2-1 and 2-2 classes (if weapon policy is in effect). Refer to the
|
|
comments in the config file for identifying which position is for which job.
|
|
|
|
(#) kejc_weapon2_21[]
|
|
(#) kejc_weapon2_22[]
|
|
--------------------
|
|
These arrays contain the ID of the premium weapons received upon job change
|
|
(if bonus weapon policy is in effect). Note that first classes can't get a
|
|
bonus weapon, and that Bard/Dancers both receive the same weapon. Refer to the
|
|
comments in the config file for identifying which position is for which job.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[07] Module: Job Swapper (ke_jobswap.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Permits characters to change jobs among other jobs of their same "level".
|
|
This is, between first classes or between second classes. It is also possible
|
|
to store the last job used and revert to it at a later date. Dye, Job Level
|
|
and Skill Point count is saved, however the skill-tree is not saved and skills
|
|
need be reallocated. When reverting to the previous class, characters might be
|
|
able to return from an adv class to a normal one, but if they are baby
|
|
classes, they can't change back to a normal one.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(#) kejs_disable
|
|
-----------------
|
|
You can disable some classes from swapping using this setting (add numbers as
|
|
appropiate):
|
|
1: Super Novices may not swap/swap to.
|
|
2: Disable swapping for Taekwon/Star Gladiator/Soul Linker classes.
|
|
4: Disable swapping to/from GunSlinger.
|
|
8: Disable swapping to/from Ninja.
|
|
For example, if you set it to 12 (8+4), the swap menu will not include
|
|
Gunslinger nor Ninja, and they will find that they can't swap to other classes
|
|
neither.
|
|
|
|
(#) kejs_revertPolicy
|
|
---------------------
|
|
Determines if Reverting classes is possible and when:
|
|
0: Cannot go back to the previous job.
|
|
1: Can only go back if the previous job belongs to the same type as the
|
|
first (is also a 1st/2nd job and is the same normal/adv/baby category).
|
|
2: Can return to the previous job regardless (exception: when one of the
|
|
two jobs is a baby job and the other is not).
|
|
|
|
(1) kejs_announce
|
|
-----------------
|
|
If 1 does a server announce when swapping jobs.
|
|
|
|
($) kejs_revertCost
|
|
-------------------
|
|
Cost of changing to the previous job.
|
|
|
|
(1) kejs_saveDye
|
|
----------------
|
|
If one, the dye is saved when swapping and restored upon revert.
|
|
|
|
(1) kejs_resetDye
|
|
-----------------
|
|
If 1 the clothe dye is reset upon swap.
|
|
|
|
(%) kejs_swapDiscount
|
|
(%) kejs_revertDiscount
|
|
-----------------------
|
|
Discount % to apply when the kafra pass is active for swapping/reverting.
|
|
|
|
(#) kejs_job1ST
|
|
(#) kejs_job2ND
|
|
---------------
|
|
Minimum job level before being able to swap among 1st/2nd classes.
|
|
|
|
($) kejs_cost1ST
|
|
($) kejs_cost2ND
|
|
----------------
|
|
Base cost of swaping jobs.
|
|
|
|
(%) kejs_discount1ST
|
|
(%) kejs_discount2ND
|
|
--------------------
|
|
Discount % to apply to the base cost for every job level above the minimum
|
|
required. For example, if the discount is 1% per level and you change when you
|
|
have +10 level more than the min necessary, you get a 10% discount.
|
|
|
|
(%) kejs_preserve1ST
|
|
(%) kejs_preserve2ND
|
|
--------------------
|
|
Indicates how much of the previous job level to preserve when changing. For
|
|
example, if the preserve value is 50 (50%) and you change from a level 40
|
|
Knight into Priest, you'll become a lv 20 Priest. Skill points are adjusted
|
|
accordingly so it's exploit-free.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[08] Module: Smithery (ke_refine.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Offers the services usually found in the town smithery and then some more:
|
|
Item refining, Item Repairing, Ore Purification (rough oris -> pure ones).
|
|
Also sells Phracon and Emveretarcon.
|
|
|
|
Item refining can follow all the rules of normal refining, but it can also
|
|
override them to refine everything, or safe refines up to max level.
|
|
|
|
Ore Purification can be extended to include all the rough materials that
|
|
blacksmiths can purify (star dust -> star crumbs, for example).
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(#) kerf_maxLv
|
|
--------------
|
|
Maximum refinement level of equipment.
|
|
|
|
(1) kerf_safe
|
|
-------------
|
|
If 1 success chances are ignoring and refining never fails.
|
|
|
|
(1) kerf_showChance
|
|
-------------------
|
|
If 1 the chance of success/failure is actually shown before confirming.
|
|
|
|
(1) kerf_refineAll
|
|
------------------
|
|
If 1 then unrefinable items will be refined too (like accesories)
|
|
|
|
(%) kerf_discount
|
|
-----------------
|
|
Discount rate to be applied during forging when the Kafra Pass is active.
|
|
|
|
($) kerf_armorCost
|
|
($) kerf_weaponLv1Cost
|
|
($) kerf_weaponLv2Cost
|
|
($) kerf_weaponLv3Cost
|
|
($) kerf_weaponLv4Cost
|
|
----------------------
|
|
Cost per level to refine armors, and level 1/2/3/4 weapons.
|
|
|
|
(1) kerf_purifyAll
|
|
------------------
|
|
If 1, the extended purify menu will be used, which shows how to purify steels,
|
|
star crumbs, etc; otherwise, just elus and oris are available.
|
|
|
|
($) kerf_repairCost
|
|
-------------------
|
|
Cost of repairing a broken weapon.
|
|
|
|
(%) kerf_repairDiscount
|
|
-----------------------
|
|
Repair Discount% when the kafra pass is active.
|
|
|
|
(1) kerf_repairSteel
|
|
--------------------
|
|
If 1, a steel will be required to repair items.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[09] Module: Renting (ke_refine.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Allows renting of Cart/Falcon/PecoPeco. Note that the only restriction applied
|
|
is whether the character has "PushCart", "Falcon Taming" or "PecoPeco Riding",
|
|
it does not checks for the character's class.
|
|
|
|
It must also be noted that renting is free while the Kafra Pass is active.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) kert_cartOnly
|
|
-----------------
|
|
If 1, this module only offers cart rentals. Otherwise you can rent any of the three.
|
|
|
|
($) kert_cartCost
|
|
($) kert_falconCost
|
|
($) kert_pecoCost
|
|
-------------------
|
|
Cost for renting carts/falcons/pecos.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[10] Module: Kafra Shop (ke_shop.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Allows invoking of a shop from the Kafra. Note that the shops must be of
|
|
invisible type (ke_shop.txt has an example of two such shops). The config
|
|
enables you to select whether the shop will allow buying, selling or
|
|
both, as well as the name of the shops to use in towns or dungeons (if you
|
|
want to use a custom shop defined elsewhere or want to use the same shop for
|
|
both).
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(#) $@kesh_towntype
|
|
(#) $@kesh_duntype
|
|
-------------------
|
|
Specifies the type of transaction allowed at the shop. Use 1 to enable only
|
|
buying of items, 2 for only selling, or any other value for both.
|
|
|
|
(#) $@kesh_townshop$
|
|
(#) $@kesh_dunshop$
|
|
--------------------
|
|
Specifies the name of the shop to use for buying/selling of items. By default
|
|
the file includes two such shops which you can use, or you can disable them
|
|
and specify your own in the config changing these variables.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[11] Module: Stat/Skill Market (ke_statmarket.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Not really a "market", this module lets players sell and buy stat/skill
|
|
points. Also allows for direct trading between stats/skills.
|
|
|
|
NOTE: Selling stat points can lead to zeny exploits if your server uses the
|
|
stat_db.txt file, because players can then sell all their stat points, do a
|
|
reset and get them back! To prevent this, set the following battle config
|
|
option:
|
|
use_statpoint_table: no
|
|
Alternatively, you can set the selling point of statpoints to be 0z.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
($) kesm_stBuyPrice
|
|
($) kesm_stSellPrice
|
|
--------------------
|
|
Price for every stat point to be bought/sold.
|
|
|
|
($) kesm_skBuyPrice
|
|
($) kesm_skSellPrice
|
|
--------------------
|
|
Price for every skill point to be bought/sold.
|
|
|
|
(%) kesm_discount
|
|
-----------------
|
|
Discount price when kafra pass is active. Only applies to buying stats/skills.
|
|
|
|
(#) kesm_skTradePrice
|
|
(#) kesm_stTradePrice
|
|
---------------------
|
|
These two define how many stat points are traded per each skill point when
|
|
doing a direct conversion between stats/skills. The idea is that trading
|
|
directly one for the other should be cheaper than selling them and then buying
|
|
from the other. You can set both to the same value and the trading will have
|
|
no loss.
|
|
Notice that skTradePrice is the cost for converting stats to skills and
|
|
stTradePrice is the cost for converting skills to stats. So... NEVER set
|
|
stTradePrice higher than skTradePrice or you allow an easy exploit of infinite
|
|
stats/skills!
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[11] Module: Stat/Skill Resets/Raising (ke_stats.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Does stat/skills resets, and additionally helps characters raise their basic
|
|
stats faster. Optionally, skill resets will not touch the basic-skill level.
|
|
Price have two components: base fee and per level fee, so characters with
|
|
higher levels will have to pay more for a reset than low level ones.
|
|
For stat resetting, base level is taken into account. For skill resets, job
|
|
levels. For a dual reset, the addition of both is considered. Also, when taken
|
|
into consideration job level for second classes, the job-level at which one
|
|
changed jobs is also considered. So a Job level 1 Knight actually has job
|
|
level of 41~51.
|
|
|
|
NOTE: Be careful with quest skills. If your server is configured to reset
|
|
quest skills and players can get their quest skills for free, you are letting
|
|
them exploit the system and get unlimited skill points! (even worse if they
|
|
can sell'em in the Stat/Skills market module). Be sure to either remove free
|
|
quest skills npcs or make quest skills not resetable.
|
|
|
|
Variables:
|
|
================================================================================
|
|
|
|
($) kest_stResetCost
|
|
--------------------
|
|
Base cost of doing a stat reset.
|
|
|
|
($) kest_skResetCost
|
|
--------------------
|
|
Base cost of doing a skill reset.
|
|
|
|
($) kest_resetCost
|
|
------------------
|
|
Base cost of a dual reset.
|
|
|
|
($) kest_BaseLvCost
|
|
-------------------
|
|
Cost per Base level for doing a stat reset.
|
|
|
|
($) kest_JobLvCost
|
|
------------------
|
|
Cost per Job level for doing a skill reset.
|
|
|
|
($) kest_BothLvCost
|
|
-------------------
|
|
Cost per Base+Job level for doing a dual reset.
|
|
|
|
(%) kest_discount
|
|
-----------------
|
|
Discount % applied when Kafra Pass is active.
|
|
|
|
(1) kest_resetBasic
|
|
-------------------
|
|
If 1, the skill "basic skill" is also reset.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[12] Module: Uncarding (ke_uncard.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
This module allows people to remove cards from their equipped items. Prices
|
|
are modified by the item type, the amount of cards and the refine level of the
|
|
item. There's also a chance the removal will fail and: Nothing is lost, the
|
|
card or item is lost, both are lost. The procedure may also require up to two
|
|
different items (and each one with their own specified qty).
|
|
|
|
Variables:
|
|
================================================================================
|
|
|
|
($) keuc_BaseCost
|
|
-----------------
|
|
Base cost of uncarding, modified by the following conditions:
|
|
|
|
($) keuc_CardCost
|
|
-----------------
|
|
Each card to be removed increases the total by this value.
|
|
|
|
($) keuc_UpgradeCostA
|
|
($) keuc_UpgradeCostW1
|
|
($) keuc_UpgradeCostW2
|
|
($) keuc_UpgradeCostW3
|
|
($) keuc_UpgradeCostW4
|
|
----------------------
|
|
These indicate the price increase per refine level for armors and weapons
|
|
levels 1/2/3/4. A +10 armor gets a price increases of ten times
|
|
keuc_UpgradeCostA.
|
|
|
|
(%) keuc_discount
|
|
-----------------
|
|
Discount % to apply when kafra pass is active.
|
|
|
|
(#) keuc_Mat1
|
|
(#) keuc_Qty1
|
|
-------------
|
|
Id and Qty of the first material that is needed to uncard. If the qty is zero,
|
|
then it's disabled.
|
|
|
|
(#) keuc_Mat2
|
|
(#) keuc_Qty2
|
|
-------------
|
|
id & Qty of the second material to use. Only valid if the first material was
|
|
also defined, use qty=0 to disable.
|
|
|
|
(%) keuc_Fail0Chance
|
|
--------------------
|
|
This is the safe failure chance (0-1000, where 1000 = 100.0%). A Safe failure
|
|
means the original item remains intact, but you are still charged the money
|
|
and the materials. Use 0 to disable this type of failure.
|
|
|
|
(%) keuc_Fail1Chance
|
|
--------------------
|
|
This is the partial failure chance (0-1000). Partial failures are when either
|
|
the cards or the item is lost. The player gets to choose which one is more
|
|
important before proceeding. Use 0 to disable.
|
|
|
|
(%) keuc_Fail2Chance
|
|
--------------------
|
|
Total failure chance (0-1000). When this triggers, both item and cards are
|
|
lost. Use 0 to disable.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[14] Module: Town Warping (ke_warp_town.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
This module enables warping to towns. Currently all towns have the same
|
|
warping cost, independent of how far away they are placed. The only exception
|
|
is Niflheim, which is more of a dungeon than a town.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) kewt_showOnline
|
|
-------------------
|
|
If set to 1, the menus will display the online count of players in
|
|
towns.
|
|
|
|
($) kewt_cost
|
|
-------------
|
|
Cost of warping to a town.
|
|
|
|
($) kewt_niflCost
|
|
-----------------
|
|
Cost of warping to Niflheim. Different cost since Niflheim is more of a
|
|
dungeon than a city. Also, players can't warp to Niflheim until they do the
|
|
Niflheim Piano Key Quest.
|
|
|
|
(#) kewt_travel
|
|
---------------
|
|
Allows enabling the traveller system. The traveller system makes it so you can't
|
|
warp to a town until you have been there first by some other means (usually
|
|
walking) and saved with the Kafra Express in that town.
|
|
There are three valid values for this variable: 0, 1, 2.
|
|
0 - Disables this mode.
|
|
1 - Uses the mode on a per character basis; that is, each character needs to
|
|
travel to that town and save and that unlocks warping only for that
|
|
character.
|
|
2 - Uses the mode on a per account basis; that is, once a character has saved
|
|
on a town, all other (and future) characters from the same account have the
|
|
warp unlocked.
|
|
|
|
(1) kewt_free
|
|
-------------
|
|
If 1, players will be able to warp to towns even if they run out of money.
|
|
Niflheim excepted.
|
|
|
|
(%) kewt_discount
|
|
-----------------
|
|
Discount % to apply when warping while the Kafra Pass is active.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[15] Module: Dungeon Warping (ke_warp_dungeon.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
Offers warps to all dungeons. Dungeon warping has two main operation modes:
|
|
Deep Dungeon Warping and Short Dungeon Warping. Deep Dungeon warping enables
|
|
players to warp to any level of any dungeon, while Short Dungeon Warping is
|
|
restricted to warping only to the entrance of the dungeon. Traveller's mode is
|
|
also available for dungeons.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) kewd_showOnline
|
|
-------------------
|
|
If set to 1, the menus will display the online online count of characters in
|
|
the dungeons.
|
|
|
|
(%) kewd_discount
|
|
-----------------
|
|
Discount % to apply when warping while the Kafra Pass is active.
|
|
|
|
(#) kewd_travel
|
|
---------------
|
|
Enables the traveller system. Just like the traveller's system for towns,
|
|
you can't warp to any dungeon to which you have not visited first on foot and
|
|
saved with the corresponding Kafra Express first.
|
|
If 1, traveller's mode is enabled on a per character basis (so once a
|
|
character saves, only that character has unlocked the warp).
|
|
If 2, traveller's mode is enabled on a per account basis (so once a character
|
|
saves, all charaters of the corresponding account have the warp unlocked).
|
|
|
|
(1) kewd_deep
|
|
-------------
|
|
This variable decides whether deep or short warps will be used. As explained
|
|
on the description, enabling deep warps allows warping to any dungeon level.
|
|
|
|
(%) kewd_levelCost
|
|
------------------
|
|
This variable only applies to deep warps. It indicates in percentage the cost
|
|
increase per level. For example, if the dungeon costs 1000z to warp to, and
|
|
the levelCost increase is of 50 (50%) then warping to level 2 costs 1500, lv3
|
|
costs 2000, and so on.
|
|
|
|
(%) kewd_entryDiscount
|
|
----------------------
|
|
The discount for using the Kafra in the dungeon entrance to warp within the
|
|
dungeon. For example, if you use the Kafra next to Payon dungeon to warp to
|
|
Payon Dungeon lv5, this discount is then applied. This variable only makes
|
|
sense on deep warp mode.
|
|
|
|
(1) kewd_turtleCave
|
|
-------------------
|
|
Only used on short warps. If 1, then warping to Turtle Dungeon should lead
|
|
directly to the cave's entrance, otherwise it warps you to the Island's
|
|
entrance.
|
|
|
|
($) kewd_<dungeon name>
|
|
---------------------
|
|
There is a config variable for every dungeon, it specifies the base cost of
|
|
warping to that dungeon (which is, the entrance level cost).
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[16] Module: PvP Warping (ke_pvp.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
The PvP warping module leads to the pvp maps named pvp_n_*-*. It has two
|
|
modes: simple and advanced. On simple mode, every player of every level gets
|
|
thrown into the pvp_n_1-* maps to nuke it out, on advanced mode each of
|
|
the map groups gets their own range of permissible levels to enter. Since
|
|
there is no sure way how characters should escape from a pvp map, they are
|
|
currently given a butterfly wing when they warp.
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) kewp_showOnline
|
|
-------------------
|
|
If 1, the menu entries will display the online count of players of each entry.
|
|
|
|
(1) kewp_advanced
|
|
-----------------
|
|
Use the advanced pvp system if 1 (see module description)
|
|
|
|
($) kewp_cost
|
|
-------------
|
|
Cost of warping to the pvp rooms used in non-advanced rooms and "free for all"
|
|
in advanced mode.
|
|
|
|
($) kewp_cost1
|
|
($) kewp_cost2
|
|
($) kewp_cost3
|
|
($) kewp_cost4
|
|
($) kewp_cost5
|
|
($) kewp_cost6
|
|
($) kewp_cost7
|
|
--------------
|
|
The costs for each of the pvp room groups in advanced mode.
|
|
|
|
(#) kewp_baseLv1
|
|
(#) kewp_baseLv2
|
|
(#) kewp_baseLv3
|
|
(#) kewp_baseLv4
|
|
(#) kewp_baseLv5
|
|
(#) kewp_baseLv6
|
|
(#) kewp_baseLv7
|
|
----------------
|
|
These indicate the nominal base level for each room (which base level should
|
|
characters be around to join it). Applicable only to advanced mode.
|
|
|
|
(#) kewp_range
|
|
--------------
|
|
Specifies how far away the character's level can be from the nominal value to
|
|
still be allowed within the room. If the nominal level is 50 and the range is
|
|
3, only characters with levels 47-53 may join.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[17] Module: WoE Warps (warp_woe.txt)
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
Description
|
|
================================================================================
|
|
This module allows characters to warp into the WoE grounds during (or out of)
|
|
War of Emperium times. Players may warp directly into the Guild Dungeons if
|
|
the proper lines are uncommented on the warp menu (See warp_woe.txt's header
|
|
for the location of the menu entries):
|
|
|
|
menu "- Cancel",-,
|
|
// "- Guild Dungeons",M_DUNGEON,
|
|
"- Al De Baran Guild ("<some code>"z)",L_ALDEBARAN,
|
|
"- Geffen Guild ("<some code>"z)",L_GEFFEN,
|
|
"- Payon Guild ("<some code>"z)",L_PAYON,
|
|
"- Prontera Guild ("<some code>"z)",L_PRONTERA;
|
|
return;
|
|
|
|
Variables
|
|
================================================================================
|
|
|
|
(1) kewg_check
|
|
--------------
|
|
Does a guild check. If 1, only characters who belong to a guild can use these
|
|
warps.
|
|
|
|
(1) kewg_checkAgit
|
|
------------------
|
|
Does the WoE times check. If 1, only during War of Emperium the warps will be
|
|
active.
|
|
|
|
(1) kewg_showOnline
|
|
-------------------
|
|
Set to 1 to display in the menus the online count of players in each of the
|
|
guild areas. It also adds a menu entry that displays the summary of players
|
|
within each castle and guild grounds.
|
|
|
|
(%) kewg_discount
|
|
-----------------
|
|
Discount % to be applied for warps while the Kafra Pass is active.
|
|
|
|
($) kewg_baldur
|
|
($) kewg_luina
|
|
($) kewg_valkyrie
|
|
($) kewg_britoniah
|
|
------------------
|
|
Costs to the respective guild dungeons when enabled.
|
|
|
|
($) kewg_alDeBaran
|
|
($) kewg_geffen
|
|
($) kewg_payon
|
|
($) kewg_prontera
|
|
------------------
|
|
Costs to each of the guild grounds.
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
[18] The kafras.txt file: About Kafra Definitions
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
The file kafras.txt contains the definition of the Kafras, which is the actual
|
|
sprite on-screen that characters speak with. An enabled kafra may look like
|
|
this:
|
|
|
|
//Alberta
|
|
alberta,113,53,7 script Kafra Express 116,{
|
|
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta",116,57;
|
|
}
|
|
|
|
And a disabled/commented Kafra would look like this:
|
|
|
|
//Prontera Guild Grounds
|
|
//prt_gld,127,163,5 script Kafra Express 115,{
|
|
// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld",129,170;
|
|
//}
|
|
|
|
For scripters, the way to define an NPC is not new, and beyond the scope of
|
|
this document, so I'll only document the function "F_KafraExpress":
|
|
|
|
F_KafraExpress (String "Kafra's name", String "kafra image file", int location, String map, int x, int save y)
|
|
|
|
The first parameter, the Kafra's name, is the name that will be displayed all
|
|
over the dialogue windows. The Kafra Image file is the image that is to be
|
|
displayed on the screen during the npc chat (without the extension). You can
|
|
use "" to disable the image.
|
|
|
|
Location refers to the type of Kafra. Type=0 refers to Kafras in towns while
|
|
Type=1 refers to Kafras placed in the wild, ie: in dungeons. Type=2 is for
|
|
Kafras that should count as both town & dungeon. Under these situations, the
|
|
menus displayed are those of the town, the type is used for the traveller's
|
|
warping mode. Finally, Type=3 is a special type used only for the Niflheim
|
|
Kafra.
|
|
|
|
The last three Parameters are used to define the save location when you save
|
|
your respawn. They are not needed if you use the "Save-on-spot" feature, but
|
|
it's recommended to pass them nevertheless. Note that the map name will still
|
|
be used when using traveller's mode.
|