This file specifies the file format of JXClient's skin files. Skin files define the graphical user interface of JXClient.
The skin to use can be specified with the --skin command-line
option:
java -jar jxclient.jar --skin ragnorok
selects the "ragnorok" skin. Currently only two skins are built
into jxclient.jar: "ragnorok" and "default;".
"default" is used if no --skin option is given; it
maps to "ragnorok".
The option --skin accepts either a built-in skin name or the
name of a directory containing the skin definition. The latter alternative
is useful when creating new skins: no need to recompile the client, just
restart it. See the section about creating new
skins.
Skin definition is split into multiple files which are stored in a common directory:
.ttf
file format and are stored in the fonts
sub-directory.
.png file format and are stored in the pictures
sub-directory. GUI elements using <picture>
access the file pictures/<picture>.png.
The global file is global.skin; it is always loaded. Other skin
files are *.skin; the following files are always loaded and
therefore must be defined by all skins:
start.skin: the client's start screen. This screen
currently is not fully implemented and therefore disabled; instead
meta.skin is shown. It's purpose is to select between
"create a new character" and "continue playing".
meta.skin: the server selection screen. It is shown while
not connected to a Crossfire server. This screen allows to select a
Crossfire server to play on, or to quit the client.
main.skin: this screen is shown while connected to a
Crossfire server. It displays the map view and optionally other
information.
connect.skin: a status dialog shown while connecting to a
Crossfire server or after an unexpected disconnect from the Server.
query.skin: a dialog for processing Crossfire "query"
messages. Examples include: login, change party password, the "play
again?" prompt after entering a bed of reality.
book.skin: a dialog for displaying books read by the
character.
keybind.skin: the key binding and unbinding dialogs.quit.skin: a dialog shown when the client is about to exit.
It is opened if the user presses ESC while not connected to a Crossfire
server or tries to close the main window.
disconnect.skin: a dialog shown when the client is about to
disconnect from a Crossfire server. It is opened if the user presses ESC
while connected to a Crossfire server.
account_main.skin: a dialog shown when the client connected
to a server handling the new login method. It should let the user login
to or create an account.
account_characters: a dialog shown to display the list of
characters for an account.
If these skin files reference other dialogs using the
DIALOG_OPEN,
DIALOG_TOGGLE, or
DIALOG_CLOSE commands, more
.skin files may be needed.
Empty lines and lines starting with '#' are ignored within .skin
files.
A dialog consists of a set of GUI elements. Dialogs are used for:
Some dialogs are accessed by client code by name. These elements must have fixed names:
messages.skin is opened when creating a new character in
order to display the messages sent by the Crossfire server.
quit.skin is opened if the user presses ESC in unconnected
state.
disconnect.skin is opened if the user presses ESC in
connected state.
keybind.skin is opened if the user executes the
/bind command.
book.skin is opened when the character reads a
BOOK object.
query.skin is opened whenever a "query" message
is received from the Crossfire server.
newchar.skin is opened (and messages.skin and
status.skin are closed) when a new character is created. If
this dialog does not exist, messages.skin and status.skin
are opened instead.
A GUI element can be drawn on the screen. Some GUI elements allow user input (for example, buttons); others ignore user input (for example, pictures).
A GUI element may be visible or invisible. Only visible GUI elements are painted and may receive user input. The visibility can be changed executing the TOGGLE command.
Each GUI element has a name. The name must be unique within a dialog. The
names are invisible to the user; they are used for referencing GUI elements
within .skin files. For example: the skin command
set_invisible magicmap
hides the GUI element "magicmap".
Some GUI elements are accessed by client code. These elements must have fixed names or fixed positions:
/bind -e will do nothing.
book.skin, the first label with name "*_title"
displays a book's title. The book's contents are displayed in the first
label_* or log_label
element not having a name like "*_title". The title element is
optional; if the message label does not exist, the book's contents are
not shown.
query.skin, the first text,
command_text, or query_text is updated
with the last used character name if the prompt is "What is your
name?".
query.skin, the first text,
command_text, or query_text updated for
password/non-password input.
meta.skin, the first meta_list
element is updated with the last used server name.
connect.skin, the first
label_* element is updated with the
current connection state.
account_login.skin, the
text, command_text, or query_text
with name "account_login" is updated with the last used
account name and the element with name "account_password"
receives the focus.
/clear command clears the contents of the first
log_message element. The search
includes all open dialogs and the current screen.
A command list is a list of one or more commands. Commands are skin-internal commands, not commands sent to a Crossfire server. Section command types defines possible commands.
Commands start with one or two keywords and optionally have arguments.
Keywords and arguments are separated by spaces or TABs. Arguments may be
quoted with " or ' characters to allow
embedded spaces or TABs.
Some commands do not require quoting but combine multiple arguments into a
single argument. These arguments are marked with a trailing "...",
for example <text...>. These arguments support multi-line
strings using following syntax:
label_multi [...] <<EOF
first line
second line
etc.
EOF
syntax:
add <name>
precondition: dialog
Adds the GUI element <name> to the dialog.
Using this command is optional: all GUI elements defined but not explicitly
added are added implicitly after the last line of the dialog definition file
just as if a add * command was present. Explicitly adding GUI
elements allows to control the drawing order of GUI elements regardless of
declaration order.
* adds all
elements no explicitly added elsewhere. This can be used to force
elements to be added last:
add first
add *
add last
adds the GUI element "first", then all defined GUI elements
except "first" and "last", then adds "last".
This ensures that "first" is drawn below all other GUI
elements and that "last" is drawn on top of all other GUI
elements.
syntax:
button <name> <x> <y> <w> <h> <up> <down> <auto-repeat> <command-list>
button <name> <x> <y> <w> <h> <up> <down> <auto-repeat> <command-list> <font> <color> <label-x> <label-y> <text...>
precondition: dialog
Defines a button element which executes the command-list <command-list>
when activated. Activation is by mouse-click, the
GUI_EXECUTE_ELEMENT command, or
by pressing ENTER or SPACE in dialogs defining a
default element.
true) or whether it activates
only once for every button press (false).
The remaining arguments specify the text displayed in the command button. If omitted, only the <up> or <down> pictures are shown.
syntax:
checkbox <name> <x> <y> <w> <h> <option> <text...>
precondition: dialog, def checkbox
Defines a checkbox element which displays the state of a configuration option which can be selected or unselected.
Options can be defined with def
checkbox_option. The section about predefined
options defines the options built into JXClient.
syntax:
commandlist <name> <type>
commandlist <name> <type> <element> <command> <args>
commandlist_add <name> <element> <command> <args>
Defines a named list of commands. Command lists are referenced by other GUI
elements. The /exec <name> command executes a named
command list.
AND executes the commands only if all sub-commands can
execute; OR executes if any sub-command can execute. For
command lists containing only a single sub-command the type does not
matter. AND type commands list are useful for scrolling
lists of elements: the list can scroll only if all elements can scroll.
OR type command lists are useful when resetting unrelated
elements: each element should be reset individually regardless whether
any other element cannot be reset for some reason.
If the following arguments are present in commandlist, a
sub-command is created and added to the list. It is equivalent to a separate
commandlist_add statement.
null if the sub-command does not operate on GUI elements.
syntax:
text <name> <x> <y> <w> <h> <active-pic> <inactive-pic> <font> <active-color> <inactive-color> <margin> <command-list> <enable-history>
command_text <name> <x> <y> <w> <h> <active-pic> <inactive-pic> <font> <active-color> <inactive-color> <margin> <enable-history>
query_text <name> <x> <y> <w> <h> <active-pic> <inactive-pic> <font> <active-color> <inactive-color> <margin> <enable-history>
precondition: dialog
Defines a text input field. text executes a fixed command-list,
command_text sends the entered text as an "ncom"
command to the Crossfire server, query_text sends the entered
text as a "reply" response to the Crossfire server.
true enabled Page Up and
Page Down keys for history recall. For now each input field
maintains a separate history which is not retained across client
restarts.
syntax:
def <type> <args>
The def command defines template information for use in other
commands.
syntax:
def checkbox <checked-pic> <unchecked-pic> <font> <color>
Defines layout information for rendering checkboxes.
syntax:
def checkbox_option <option-name> <command-on> <command-off> <description...>
Defines a new option. The <option-name> must be globally unique and must be different from predefined options.
syntax:
def dialog <frame> <font> <color> <background-color> <alpha>
Defines layout information for rendering dialogs.
syntax:
def item <cursed> <damned> <magic> <blessed> <applied> <unidentified> <selector> <locked> <unpaid> <font> <color>
Defines layout for rendering items. Typically used in ground or inventory views.
syntax:
def textbutton <up-pic> <down-pic> <font> <color>
Defines layout for rendering text buttons.
syntax:
dialog <name> <x> <y> <w> <h> <save> <title...>
precondition: dialog, def dialog
Defines a group of GUI elements forming a dialog or screen.
true=retain locations, false=do
not retain locations.
syntax:
dialog_hide <state...>
precondition: dialog
Hides this dialog in the given states.
START: the starting screen; not yet implemented.
META: the server selection screen.LOGIN: active while a login is in progress. Starts
when a Crossfire server is to be connected and ends after a
character has been logged in or NEWCHAR becomes
active.
NEWCHAR: active while a new character is created.
Ends after the character has been created.
ACCOUNT: active when the user manages his account,
adding or creating characters. Ends when the user asks to play a
character.
PLAYING: active while connected to a Crossfire
server and a character is logged in. Stays active during the
"Do you want to play again?" dialog after applying a
bed to reality.
syntax:
gauge <name> <x> <y> <w> <h> <pos-pic> <neg-pic> <empty-pic> <type> <orientation> <tooltip...>
textgauge <name> <x> <y> <w> <h> <pos-pic> <neg-pic> <empty-pic> <type> <orientation> <color> <font> <tooltip>
dupgauge <name> <x> <y> <w> <h> <pos-div-pic> <pos-mod-pic> <empty-pic> <type> <div-orientation> <mod-orientation> <tooltip...>
duptextgauge <name> <x> <y> <w> <h> <pos-div-pic> <pos-mod-pic> <empty-pic> <type> <div-orientation> <mod-orientation> <color> <font> <tooltip...>
precondition: dialog
Defines a GUI element that graphically displays a stat value.
gauge displays a picture whose size grows proportional to
the stat's value.
dupgauge extends gauge in that two pictures
are shown: one that grows in 10% steps of the stat value and one that
grows in 1% steps of the stat value (and is reset each time it reaches
full size).
textgauge and duptextgauge extend
gauge and dupgauge by displaying the stat's
value as text on top of the gauge.
dupgauges and duptextgauges
cannot display negative stat values, therefore no <neg-div-pic>
exists.
dupgauges and duptextgauges
cannot display negative stat values, therefore no <neg-mod-pic>
exists.
SKILL_<name of skill>: displays the
experience of the named skill. If the skill name contains a
space character, an underscore ("_") can be used
instead.
ACTIVE_SKILL <name of skill>: displays a full
gauge if the named skill is the active skill or an empty gauge
otherwise.
EW: the gauge fills from east to west.NS: the gauge fills from north to south.SN: the gauge fills from south to north.WE: the gauge fills from west to east.syntax:
event <type> <args>
Defines an action to be executed if an event occurs.
The ordering of some events is: init (connect
(login logout)* disconnect)*. This
means:
init is delivered after the client starts. It is not
delivered more than once.
connect is delivered once.
disconnect is delivered
once. This event is generated, no matter why the connection did break.
And it is delivered before any other connect event is
delivered.
login and logout events may be generated. The
logout event is generated if (and only if) a
login event has been generated before. Also, if the
connection breaks while a character is logged in, a logout
event is delivered before the disconnect event is
delivered.
syntax:
event connect <command-list>
Executes <command-list> after a connection to a Crossfire server has been established.
syntax:
event init <command-list>
Executes <command-list> once after the skin has been loaded.
syntax:
event magicmap <command-list>
Executes <command-list> after a magicmap message has been
received from the Crossfire server.
syntax:
event mapscroll <command-list>
Executes <command-list> whenever the map view has scrolled.
syntax:
event skill add <command-list>
event skill del <command-list>
Executes <command-list> after the character has learned a new skill or after he has forgotten a skill.
After login, event skill add events are delivered for all skills
known by the character. Just before logout, event skill del
events are delivered for all skills known by the character.
syntax:
font <name> <font> <size>
Declares a font to be used in GUI elements.
fonts/<font>.ttf
in the skin directory.
syntax:
ignore <name>
precondition: dialog
Ignores the named GUI element for mouse interaction. The GUI element is painted but otherwise ignored.
syntax:
floor_list <name> <x> <y> <w> <h> <cell-size> <selected-item-name>
inventory_list <name> <x> <y> <w> <h> <cell-size> <selected-item-name>
precondition: dialog, def item
Defines a list box showing items on the floor or in the character's
inventory. The items are rendered using the options defined by a preceding
def item command.
Note: if both
set_num_look_objects and
floor_list are used, set_num_look_objects takes
precedence. Otherwise the number of items shown in the floor list is
requested from the server; the value is re-negotiated if needed.
null if no
information should be displayed.
*
syntax:
hide_input <element>
precondition: dialog
The <element> must be a text element.
syntax:
item <type> <name> <x> <y> <w> <h> <index> <args>
precondition: dialog
Displays a single item.
0.
syntax:
item floor <name> <x> <y> <w> <h> <index>
precondition: def item
syntax:
item inventory <name> <x> <y> <w> <h> <index>
precondition: def item
syntax:
item shortcut <name> <x> <y> <w> <h> <index> <cast> <invoke> <font>
Displays a shortcut command. Shortcut commands can be activated by pressing
Fx function keys.
/cast or /invoke a
spell.
syntax:
item spelllist <name> <x> <y> <w> <h> <index> <selected>
Displays a spell known by the character.
syntax:
key char <code> <command-list>
key code <code> <modifiers> <command-list>
Defines default key bindings. default key bindings can be defined in global.skin
or within dialog .skin files. Definitions within dialogs are
active only while the dialog is shown; global key bindings are always
active.
Lookup of key bindings uses the following ordering. Further steps are not
checked after a match was found. the following steps are executed for either
code or har key bindings, depending on the key
being pressed.
ESC key is processed. This key is managed exclusively
by client code; it cannot be overridden with key bindings or skins.
keybind.skin dialog is active, it consumes the key.
/bind
-c.
/bind.0...9) the prefix count for
Crossfire commands is updated.
Note that some keys produce both char and code
events. These keys are checked twice and thus may execute two command-lists.
key char this is the
ASCII code, for key code it is either a constant VK_xyz
defined in
KeyEvent
or the constant's value as a number. Using a number for key
code is discouraged.
syntax:
label_html <name> <x> <y> <w> <h> <font> <color> <text...>
label_multi <name> <x> <y> <w> <h> <font> <color> <text...>
label_query <name> <x> <y> <w> <h> <font> <color>
label_failure <name> <x> <y> <w> <h> <font> <color>
label_message <name> <x> <y> <w> <h> <font> <color>
label_text <name> <x> <y> <w> <h> <font> <color> <text...>
label_stat <name> <x> <y> <w> <h> <font> <color> <stat> <alignment>
label_stat2 <name> <x> <y> <w> <h> <font> <normal> <upgradable> <depleted> <boosted> <boosted+upgradable> <stat-curr> <stat-base> <stat-race> <stat-applied> <alignment>
label_spell <name> <x> <y> <w> <h> <font> <type>
precondition: dialog
Defines a GUI element that displays a text label.
label_html displays a text that may include HTML tags.label_multi displays the text as multiple lines; lines are
separated by newline characters.
label_query displays the last received "query"
string.
label_failure displays received "failure"
messages.
label_message displays received "drawinfo" and
"drawextinfo" messages. Newly received messages are ignored
while the dialog containing the label is shown.
label_text display a static string.label_stat and label_stat2 display a stat
value. label_stat2 changes the text color depending on the
stat's state.
label_spell displays information about the readied spell.
LEFT,
CENTER, RIGHT for left
justified/centered/right justified text.
SPELL_NAME: the spell's name.SPELL_ICON: the spell's picture.SPELL_COST: the spell's cost (mana and/or grace).
SPELL_LEVEL: the spell's level.SPELL_DESCRIPTION: the spell's description.syntax:
log_label <name> <x> <y> <w> <h> <background-pic> <font-print> <font-fixed> <font-fixed+bold> <font-arcane> <default-color>
precondition: dialog
Defines a GUI element that displays the last received "drawinfo" or "drawextinfo" message.
null when not used.
syntax:
log_message <name> <x> <y> <w> <h> <background-pic> <font-print> <font-fixed> <font-fixed+bold> <font-arcane> <default-color>
precondition: dialog
Defines a GUI element that displays received "drawinfo" or "drawextinfo" messages.
null when not used.
syntax:
log_color <name> <index> <color>
precondition: dialog
Changes a color of a log_message
element.
log_message element to affect.
NDI_xyz defined in
the
Crossfire server.
syntax:
log_filter <name> <which> <type...>
precondition: dialog
Specifies the message types to display in a log_message
element.
log_message element to affect.
only to show only the given message
types or not to show all but the given message types.
BOOK, CARD, PAPER,
SIGN, MONUMENT, DIALOG, MOTD,
ADMIN, SHOP, COMMAND, ATTRIBUTE,
SKILL, APPLY, ATTACK, COMMUNICATION,
SPELL, ITEM, MISC,
VICTIM, QUERY. These constants correspond to
the constants MSG_TYPE_xyz defined in
the
Crossfire server.
Note: the command /debug_messages may be useful for choosing the
right message types.
syntax:
minimap <name> <x> <y> <w> <h>
precondition: dialog
Defines a GUI element that displays a small map view. The map view may contain magicmap information.
syntax:
map <name> <x> <y> <w> <h>
precondition: dialog
Defines a GUI element that displays a map view.
syntax:
meta_list <name> <x> <y> <w> <h> <cell-width> <cell-height> <picture> <font> <text> <label> <connect> <format> <tooltip>
precondition: dialog
Defines a GUI element that displays available Crossfire servers.
null if no picture should be shown.
null to not
update a text element.
null to not update a label
element.
%% inserts a % character.%A inserts the arch base.%C inserts the comment field.%D inserts the comment filed without HTML tags.
%E inserts the code base.%H inserts the hostname.%I inserts the bytes received by the server.%M inserts the map base.%O inserts the bytes sent by the server.%P inserts the number of players online.%U inserts the time since the last update in
seconds.
%T inserts the server's uptime in seconds.%V inserts the server's version.syntax:
character_list <name> <x> <y> <w> <h> <cell-width> <cell-height> <font>
precondition: dialog
Defines a GUI element that displays available characters for an account.
syntax:
picture <name> <x> <y> <w> <h> <picture> <alpha>
precondition: dialog
Defines a GUI element that displays a static picture.
syntax:
set_force_active <name>
precondition: dialog
Defines a GUI element to be always active. It prevents other GUI elements from getting the keyboard focus.
syntax:
set_auto_size
precondition: dialog
Recalculates the dialog's extent (location and size) whenever the main window's size changes. Auto-sizing dialogs cannot be moved manually.
syntax:
set_default <name>
precondition: dialog
Marks a GUI element as the default element. The default element is activated
by pressing ENTER or SPACE unless these keys are
overridden by a key binding.
syntax:
set_invisible <name>
precondition: dialog
Hides a GUI element by default: the GUI element is hidden when the skin is
loaded. It can be made visible by executing SHOW
or TOGGLE command lists.
syntax:
set_modal
precondition: dialog
Makes this dialog modal.
syntax:
set_num_look_objects <n>
Requests a floor size from the Crossfire server. Overrides implicit
definition by floor_list.
syntax:
scrollbar <name> <x> <y> <w> <h> <proportional-slider> <element> <foreground> <background>
precondition: dialog
Defines a GUI element that displays a scrollbar.
true makes the slider's size reflect the size of the
visible area of <element>. false displays a square
slider.
log_message
or log_label.
syntax:
skin_name <name> <min-resolution> <max-resolution>
Sets general skin-related information.
syntax:
textbutton <name> <x> <y> <w> <h> <auto-repeat> <command-list> <text...>
precondition: dialog, def
textbutton
Defines a GUI element that displays a button showing a text label.
true) or fire
once (false) per click.
syntax:
tooltip <font>
Adds a tooltip label to the skin. If this command is not used, no tooltips are shown.
Macros are placeholders within commands sent to the Crossfire server. The macros are replaced when the command is sent to the server.
Macros are supported in key bindings (/bind command) and within
arguments of the GUI_EXECUTE_COMMAND
command.
The following macros are supported:
<<to_reply>>: the name of the last character
that sent us a /tell command. Using a key binding like
/bind -e tell <<to_reply>> is preferable to
/bind -e reply as it explicitly includes the destination
character name. Using /reply the message may be sent to an
unwanted character if someone talks to you at the wrong time, i.e., just
before you finish typing and submit the command.
Command types are the types of commands allowed in command lists.
SHOW: makes <element>
visible.
HIDE: makes <element> invisible.TOGGLE: toggles the visibility
of <element>.
PRINT: does nothing (as it is not implemented).QUIT: Shows the quit dialog to terminate the client.CONNECT: connects to a Crossfire server. <element>
must reference an input field which specifies the hostname of the server
to connect to. If used in connected state, disconnects first.
DISCONNECT: disconnects from the Crossfire server. Does
nothing if not connected.
GUI_META: shows the server selection screen. Disconnects if
connected.
GUI_START: shows the start screen. Disconnects if
connected. Note: the start screen is currently disabled as it is not
fully implemented. Therefore this command currently is identical to
GUI_META.
GUI_EXECUTE_ELEMENT:
<element> must refer to an item
element. Executes the default action of the referenced item.
DIALOG_OPEN
<dialog>: the argument must be the name of a dialog.
Makes the dialog visible.
DIALOG_TOGGLE
<dialog>: the argument must be the name of a dialog.
Makes the dialog invisible.
DIALOG_CLOSE <dialog>:
the argument must be the name of a dialog. Toggles the visibility of the
dialog.
GUI_EXECUTE_COMMAND <command...>:
sends a command to the Crossfire server. Macros
are supported.
EXEC_SELECTION <command>: <element> must refer
to a floor_list or inventory_list.
Executes a command on the list's selected item. Does nothing if no item
is selected. Allowed commands:
APPLY: applies the item.DROP: drops the item.EXAMINE: examines the item.LOCK, UNLOCK, LOCK_TOGGLE:
set, unsets, or toggles the lock state of the item.
MARK: marks the item.MOVE_SELECTION <lines> <element>: <element>
must refer to a floor_list or inventory_list.
Moves the list's selection by the given number of lines and elements;
negative values scroll left/up, positive values scroll right/down. For
example: MOVE_SELECTION -1 0 moves the selection up one
line; MOVE_SELECTION 1 1 moves the selection diagonally
down-right one line and column; MOVE_SELECTION 0 3 moves
the selection three elements to the right.
SCROLL_DIST <distance>: <element> must refer to
a meta_list,
floor_list, or
inventory_list. Scrolls the list by the given
number of elements. Negative values scroll up, positive values scroll
down. Scrolling by zero does nothing.
SCROLL <distance>, SCROLL_NEVER <distance>:
Scrolls the <element> by the given number of elements. Negative
values scroll up, positive values scroll down. Scrolling by zero does
nothing. SCROLL_NEVER is identical to SCROLL
except that the command always reports "command cannot execute".
SCROLL_RESET: Resets the <element>'s scroll index to
its default value.
MOVE_FOCUS <next> [<apply>]: Moves the focus
from <element> to <next> if <element> has the focus.
Does nothing if <element> is not the active GUI element. <apply>
may be 0 or 1 and defaults to 0. If 1, applies <next> when it
gains the focus.
ACCOUNT_LOGIN: Tries to login to an account.ACCOUNT_CREATE: Tries to create an account.ACCOUNT_LINK: Tries to link an existing character to the
current account.
ACCOUNT_PLAY: Starts playing with the specified character.
ACCOUNT_CREATE_CHARACTER: Tries to create a new character.
The following names for displaying stat values are supported:
AC: the AC value.ARM: the ARM value.CHA: the charisma.CHA_APPLIED: the charisma resulting from applied gear or
skills.
CHA_BASE: the base charisma.CHA_RACE: the charisma limit.CON: the constitution.CON_APPLIED: the constitution resulting from applied gear
or skills.
CON_BASE: the base constitution.CON_RACE: the constitution limit.DAM: the DAM value.DEX: the dexterity.DEX_APPLIED: the dexterity resulting from applied gear or
skills.
DEX_BASE: the base dexterity.DEX_RACE: the dexterity limit.EXP: the overall experience.EXP_NEXT_LEVEL: the overall experience needed to reach the
next level.
FOOD: the food level.GRACE: the grace value.HP: the hit points.INT: the intelligence.INT_APPLIED: the intelligence resulting from applied gear
or skills.
INT_BASE: the base intelligence.INT_RACE: the intelligence limit.LEVEL: the overall level.LOWFOOD: whether the character is low on food. 0=not low on
food, 1=low on food.
POISONED: whether the character is poisoned. 0=not
poisoned, 1=poisoned.
POW: the power.POW_APPLIED: the power resulting from applied gear or
skills.
POW_BASE: the base power.POW_RACE: the power limit.RANGE: the ranged skill.RES_ACID: the acid resistance.RES_BLIND: the blindness resistance.RES_COLD: the cold resistance.RES_CONF: the confusion resistance.RES_DEATH: the death resistance.RES_DEPLETE: the depletion resistance.RES_DRAIN: the drain resistance.RES_ELEC: the electricity resistance.RES_FEAR: the fear resistance.RES_FIRE: the fire resistance.RES_GHOSTHIT: the ghosthit resistance.RES_HOLYWORD: the holy word resistance.RES_MAG: the magic resistance.RES_PARA: the paralyze resistance.RES_PHYS: the physical resistance.RES_POISON: the poison resistance.RES_SLOW: the slowness resistance.RES_TURN_UNDEAD: the turn undead resistance.SP: the spell points.SPEED: the overall speed.STR: the strength.STR_APPLIED: the strength resulting from applied gear or
skills.
STR_BASE: the base strength.STR_RACE: the strength limit.TITLE: the character's title.WC: the WC value.WEIGHT: the characters total weight.WEIGHT_LIMIT: the character's weight limit.WIS: the wisdom.WIS_APPLIED: the wisdom resulting from applied gear or
skills.
WIS_BASE: the base wisdom.WIS_RACE: the wisdom limit.WEAPON_SPEED: the weapon speed.Most constants correspond to the constants CS_STAT_xyz defined
in
the
Crossfire server.
Options are boolean valued settings. Options can be presented to the user
with the checkbox command.
Skins can define options with the def
checkbox_option. The following options are predefined:
sound_enabled: enables sound effects and background music.
pickup_*: enables options of the /pickup
Crossfire command; the setting is persistent per character.
pickup_foodpickup_drinkpickup_valuablespickup_bowpickup_arrowpickup_helmetpickup_shieldpickup_armourpickup_bootspickup_glovespickup_cloakpickup_keypickup_missile_weaponpickup_melee_weaponpickup_magicalpickup_potionpickup_spellbookpickup_skillscrollpickup_readablespickup_magic_devicepickup_not_cursedpickup_jewelspickup_fleshpickup_containerspickup_inhibitpickup_stopThese constants correspond to the constants PU_xyz defined in
the
Crossfire server.
Colors can be specified as:
BLACK, DARK_GRAY,
GRAY, WHITE#<RR><GG><BB> where
<RR>/<GG>/<BB> is the red/green/blue component in
hexadecimal notation. For example, red is #FF0000 and
yellow is #FFFF00.
Optionally a transparency specification may be appended:
BLACK/0.5 for half-transparent BLACK or
#FF0000/0.9 for slightly transparent red.
To create a new skin called "rawhide", copy the default skin into
the directory rawhide:
svn export https://crossfire.svn.sourceforge.net/svnroot/crossfire/jxclient/trunk/skins/ragnorok rawhide
Modify the files rawhide/*. At least change
skin_name ragnorok ...
to
skin_name rawhide ...
in rawhide/global.skin.
Restart JXClient using the new skin:
java -jar <optional path>jxclient.jar --skin rawhide
Optionally disable full-screen mode and force a small window size:
java -jar <optional path>jxclient.jar --skin rawhide --no-full-screen --resolution 1024x768
Add the command-line option --debug-gui to enable GUI related
debug information:
Note: this option also works for built-in skins.
Add the command-line option --debug-keyboard keys.log to write
debug information about pressed keys into keys.log. This
information may help to define key bindings. "pressed"
keys are matched by key code key bindings, "typed"
keys are matched by key char key bindings.
For debugging log_color definitions, the command
/debug_messages may be useful. It prints text using all
possible color codes or message types.