=============
Items Weapons
=============
:Author: innoxia, bicobus
coreAttributes
--------------
authorTag
~~~~~~~~~
How attribution to the mod author (*you*) should be displayed in the item’s
tooltip. If left blank or not included, a default attribution based on folder
name will be used.
This tag is optionnal.
.. code:: xml
value
~~~~~
How much this weapon is worth.
.. code:: xml
3000
melee
~~~~~
Use “true” if this is a melee weapon, and “false” if it’s ranged. (Without
quotation marks.)
.. code:: xml
true
twoHanded
~~~~~~~~~
Use “true” if this weapon is two-handed, and thus cannot be simultaneously
wielded with an offhand weapon, and “false” if it’s one-handed. (Without
quotation marks.)
.. code:: xml
false
determiner
~~~~~~~~~~
What’s appended before the weapon’s name in an instance of “Innoxia was holding
X Demon’s Dagger”, where X is the determiner. This will usually be either “a” or
“an”, but for other weapons may be different.
An example might be: “Innoxia was holding X scissors”, where X (the determiner)
would now need to be “a pair of”.
.. code:: xml
name
~~~~
The name of this weapon.
``appendDamageName``
defaults to true and can be left out. If you ever want this weapon to not be
described by its damage type, then set it as false. That is this dagger
would always be called “Demon’s Dagger” instead of, for example, “Forceful
Demon’s Dagger”.
.. code:: xml
namePlural
~~~~~~~~~~
The plural name of this weapon.
``pluralByDefault``
If set to ``true``, then the game will always use the plural name when
referring to this weapon.
.. code:: xml
description
~~~~~~~~~~~
The description/lore of this weapon.
.. code:: xml
attackDescriptor
~~~~~~~~~~~~~~~~
How the weapon is used. This should be a single verb, and is used as the title
of attacking actions in combat.
.. code:: xml
stab
attackTooltipDescription
~~~~~~~~~~~~~~~~~~~~~~~~
The description that’s displayed when hovering over the attack action in combat.
Follow the same guidelines as equipText (a couple of entries further down this
page).
As this tooltip is only ever seen from the player’s perspective, you can always
write in the first-person narrative. (Still use npc2 for the target, though.)
.. code:: xml
rarity
~~~~~~
The rarity of this weapon.
Values can be found here:
:ltgithub:`src/com/lilithsthrone/game/inventory/Rarity.java`
.. code:: xml
EPIC
weaponSet
~~~~~~~~~
Which set this weapon is a part of.
Values can be found here: :ltgithub:`/res/setBonuses/`
.. seealso::
:doc:`/setBonuses`
.. code:: xml
1.13 equipText
~~~~~~~~~~~~~~
The description that’s used when equipping this weapon. The description should
be generic, able to be used by both the player and NPCs. Just make sure to use
the tag ``[npc.verb()]`` whenever using a verb, which will then, for example,
parse like this:
- ``[npc.verb(run)]`` if npc is player = “run”
- ``[npc.verb(run)]`` if npc is not the player = “runs”
Always use the first-person singular verb.
The target ``npc`` OR ``npc1`` should be used for the character using the weapon.
e.g. If the player is the one attacking (and is called Innoxia), then
``[npc.Name]`` will return “Innoxia”.
The target ``npc2`` should be used for the character being attacked. e.g. If Brax
is the one being attacked, then ``[npc2.Name]`` will return “Brax”.
.. code:: xml
1.14 unequipText
~~~~~~~~~~~~~~~~
The description that’s used when equipping this weapon. Follow the same
guidelines as equipText.
.. code:: xml
1.15 imageName
~~~~~~~~~~~~~~
The file name of this weapon’s image when in the character’s inventory. The only
supported file type is .svg. I use the free program “Inkscape” to make .svg
images for the game.
.. code:: xml
dagger_sheathed.svg
1.16 imageEquippedname
~~~~~~~~~~~~~~~~~~~~~~
The file name of this weapon’s image when equipped. Can be (and usually is) the
same as the imageName (which in this example would be ``dagger_sheathed.svg``).
.. code:: xml
dagger.svg
1.17 physicalResistance
~~~~~~~~~~~~~~~~~~~~~~~
How much natural physical resistance this weapon provides when equipped. Should
only really be above 0 for shields or other such protective weapons.
.. code:: xml
0
1.18 damage
~~~~~~~~~~~
The base damage that this weapon deals.
.. code:: xml
20
If you want to define additional AoE damages, add ``aoe`` elements.
A working example of AoE damages can be found in
``res/weapons/innoxia/lightningGlobe/lightning_globe.xml``.
.. code:: xml
10 50% chance of hitting an additional enemy (who has not been hit yet) for 10 damage
5 25% chance of hitting an additional enemy (who has not been hit yet) for 5 damage
1.19 arcaneCost
~~~~~~~~~~~~~~~
How many arcane essences are required, and drained, by firing this weapon.
Ranged weapons should usually use the value 1, while melee weapons should
usually be 0.
.. code:: xml
0
1.20 damageVariance
~~~~~~~~~~~~~~~~~~~
The variance in base damage when this weapon is actually used to attack.
Values can be found here:
`https://github.com/Innoxia/liliths-throne-public/blob/master/src/com/lilithsthrone/game/combat/DamageVariance.java `_
.. code:: xml
MEDIUM
1.21 availableDamageTypes
~~~~~~~~~~~~~~~~~~~~~~~~~
The available damage types that this weapon can spawn in with.
Values can be found here (MISC should not be used):
`src/com/lilithsthrone/game/combat/DamageType.java `_
.. code:: xml
PHYSICAL
ICE
FIRE
POISON
.. _spells:
1.22 spells
~~~~~~~~~~~
The spells that are unlocked when equipping this weapon. IF you want to add any,
use the format:
.. code:: xml
FIREBALL
ICE_SHARD
ARCANE_AROUSAL
SLAM
POISON_VAPOURS
The changeOnReforge variable determines whether this weapon should regenerate
spells whenever the player changes the damage type. (i.e. If they reforge a
``FIRE`` dagger to an ``ICE`` dagger, if changeOnReforge is true, then the granted
spell ``FIREBALL`` will automatically switch to ``ICE_SHARD``).
The damageType variable corresponds to the damageType which causes the spell to
be unlocked when this weapon is spawned in. You can have multiple entries of the
same damageType, like so:
.. code:: xml
FIREBALL
FLASH
ICE_SHARD
STEAL
Note that the ``damageType`` does not have to correspond to the spell’s school (so
``FIRE`` can unlock ``ICE_SHARD``, etc.).
Values for spells can be found here: `https://github.com/Innoxia/liliths-throne-public/blob/master/src/com/lilithsthrone/game/combat/Spell.java `_
For an empty spell list, use an empty element:
.. code:: xml
.. _combat-moves:
1.23 combatMoves
~~~~~~~~~~~~~~~~
The combat moves that are unlocked when equipping this weapon. The ``combatMoves``
element is similar to the `spells`_ element.
.. code:: xml
ASSAULT_RIFLE_MAG_DUMP
The changeOnReforge variable determines whether this weapon should regenerate
combat moves whenever the player changes the damage type. Using the example
above, if they reforge a ``PHYSICAL`` dagger to an ``ICE`` dagger and
changeOnReforge is true, then the granted combat move ``ASSAULT_RIFLE_MAG_DUMP``
will be lost.
The damageType variable corresponds to the damageType which causes the move to
be unlocked when this weapon is spawned in. You can have multiple entries of the
same damageType, like so:
.. code:: xml
EXAMPLE_MOVE_1
EXAMPLE_MOVE_2
EXAMPLE_MOVE_3
EXAMPLE_MOVE_4
Values for combat moves can be found here: `https://github.com/Innoxia/liliths-throne-public/blob/master/src/com/lilithsthrone/game/combat/CMWeaponSpecials.java `_
**Note:** combat moves are not yet moddable. There will be a way to add modded
combat moves soon!
For an item with no combat move, simply write an empty element:
.. code:: xml
1.24 enchantmentLimit
~~~~~~~~~~~~~~~~~~~~~
How many effects this weapon can be enchanted with. Weapons standard is 5, for
balance purpose.
.. code:: xml
5
1.25 effects
~~~~~~~~~~~~
The effects that this weapon spawns in with. Remember that the player can
remove, change or add effects. To know what to put in here, it would probably be
easiest to enchant clothing in your game, save the game, then copy over that
clothing’s ’effects’ in your save file.
There are two special values for secondaryModifier, which are:
``RESISTANCE_WEAPON``
applies the related resistance of this weapon’s damage
type.
``DAMAGE_WEAPON``
applies the related damage type.
For example, if this dagger spawned in as type ``POISON``, and I’d replaced both
instances of ``CRITICAL_CHANCE`` with ``DAMAGE_WEAPON``, then this dagger would
spawn with two +5 Poison Damage effects.
.. code:: xml
1.26 extraEffects
~~~~~~~~~~~~~~~~~
You can use this section to describe any extra features of this weapon. These
effects are shown in the tooltip when the player hovers over the weapon icon, so
try and keep them short (as they should fit on one line). It should probably
only be used to describe what happens in the `1.27 onHitEffect`_ element. No characters
are passed in as parsing arguments, so you should **not** use any
character-specific parsing elements (such as ``[npc.name]``). For this weapon, no
extra effects need to be described, but if you need to use this section, use the
following format:
.. code:: xml
Empty extra effect:
.. code:: xml
.. _on-hit-effect:
1.27 onHitEffect
~~~~~~~~~~~~~~~~
This is applied every time this weapon hits a target. It does **not** apply when
the weapon critically hits. The returned text is appended to the hit
description. ``npc`` corresponds to the attacker, and ``npc2`` to the target, for
use in effects/parsing. For this weapon, no hit effects need to be added, but if
you need to use this section, use the following format:
.. code:: xml
An empty effect
.. code:: xml
1.28 onCriticalHitEffect
~~~~~~~~~~~~~~~~~~~~~~~~
This is applied every time this weapon critically hits a target. It does **not**
apply when the weapon does a non-critical hit.
The returned text is appended to the hit description. ``npc`` corresponds to the
attacker, and ``npc2`` to the target, for use in effects/parsing. Use the same
format as `on-hit-effect`_.
.. code:: xml
1.29 colours
~~~~~~~~~~~~
Please consult the relevant `documentation `_ about colours.
Your clothing can be coloured any way you like, but if you’d like the player to
be able to dye your clothing, you can specify available colours here.
``primaryColours`` and ``secondaryColours`` all spawn in as a default colour, while
their ``Dye`` counterparts are only available if the player chooses to dye the
clothing in that colour. The game detects specific colour values, and recolours
them to the value chosen by the player. These values are as follows:
- Red is used as base colour for changing the ``DAMAGE TYPE``’s colour of the
graphic in-game, and the game will only recognise and change the following
colours:
- #ff2a2a
- #ff5555
- #ff8080
- #ffaaaa
- #ffd5d5
- Orange is used as base colour for changing the ``PRIMARY`` colour of the graphic
in-game, and the game will only recognise and change the following colours:
- #ff7f2a
- #ff9955
- #ffb380
- #ffccaa
- #ffe6d5
- Yellow is used as base colour for changing the ``SECONDARY`` colour of the graphic
in-game, and the game will only recognise and change the following colours:
- #ffd42a
- #ffdd55
- #ffe680
- #ffeeaa
- #fff6d5
- Green is used as base colour for changing the ``TERTIARY`` colour of the graphic
in-game, and the game will only recognise and change the following colours:
- #abc837
- #bcd35f
- #cdde87
- #dde9af
- #eef4d7
As you can see above, weapons differ from clothing in that their ``Red`` colour is
recoloured based on the weapon’s damage type! The ``primaryColours``,
``secondaryColours``, and ``tertiaryColours`` defined below are for recolouring the
``Orange``, ``Yellow``, and ``Green`` values, respectively.
**Any gradients that you use should be called:** ``innoGrad1``, ``innoGrad2``, etc.
You can see a visual representation of these colours (as used in clothing) here:
`https://www.lilithsthrone.com/wiki/doku.php?id=modding_wiki:modding:creating_clothes `_
Colour lists to be used can be found here:
`https://github.com/Innoxia/liliths-throne-public/blob/master/src/com/lilithsthrone/utils/ColourListPresets.java `_
.. code:: xml
1.30 customColours
~~~~~~~~~~~~~~~~~~
You can define any number of custom colours to replace the shades you’ve
coloured your svg with. If you have used the primary/secondary/tertiary elements
up above, then do not use their associated colour hexes. (i.e. If you’ve defined
a primaryColours element, do not use #ff7f2a, #ff9955, #ffb380, #ffccaa, or
#ffe6d5 in the customColour attributes.)
You should NEVER use the primary recolouring shades, as they are always reserved
for the damage type’s colour: #ff2a2a, #ff5555, #ff8080, #ffaaaa, or #ffd5d5
.. code:: xml
CLOTHING_STEEL
CLOTHING_BLACK
1.31 itemTags
~~~~~~~~~~~~~
Special item tags that apply to this weapon. Values can be found here: `https://github.com/Innoxia/liliths-throne-public/blob/master/src/com/lilithsthrone/game/inventory/ItemTag.java `_
.. code:: xml
SOLD_BY_VICKY
WEAPON_BLADE
2 hitDescription
----------------
Descriptions that are used when hitting an enemy. One of the ``hitText`` values
will be randomly selected each time the attacker hits their target. Follow the
same guidelines as ``equipText``.
You can add hit descriptions which will only be shown on a critical hit by using
the ``criticalHitText`` element. This is optional, and you don’t need to define
any critical hit descriptions. If none are define and a critical hit occurs, a
regular ``hitText`` will be used instead.
.. code:: xml
3 missDescription
-----------------
Descriptions that are used when missing an enemy. One of the missText values will be randomly selected each time the attacker misses their target. Follow the same guidelines as equipText.
.. code:: xml