Skills Config: Difference between revisions

From DragonMineZ Wiki
Sync from dragonminez-wiki repository
 
Shokkoh (talk | contribs)
Sync from dragonminez-wiki repository
 
Line 21: Line 21:
| <code>strikeSkills</code> || <translate><!--T:11--> List of ids</translate> || <translate><!--T:12--> Strike attack technique names (for example <code>meteor</code>, <code>dragon_fist</code>).</translate>
| <code>strikeSkills</code> || <translate><!--T:11--> List of ids</translate> || <translate><!--T:12--> Strike attack technique names (for example <code>meteor</code>, <code>dragon_fist</code>).</translate>
|-
|-
| <code>evasionSkills</code> || <code>taiyoken</code>, <code>rage_scream</code>, <code>afterimage</code>, <code>sleep_recovery</code>, <code>dimensional_teleport</code> || <translate><!--T:13--> Evasion technique names.</translate>
| <code>evasionSkills</code> || <code>taiyoken</code>, <code>rage_scream</code>, <code>afterimage</code>, <code>sleep_recovery</code>, <code>dimensional_teleport</code>, <code>candy_beam</code>, <code>gum_bind</code> || <translate><!--T:13--> Evasion technique names.</translate>
|-
|-
| <code>formSkills</code> || <code>superforms</code>, <code>legendaryforms</code>, <code>godforms</code>, <code>androidforms</code> || <translate><!--T:14--> The transformation-tier skill names.</translate>
| <code>formSkills</code> || <code>superforms</code>, <code>legendaryforms</code>, <code>godforms</code>, <code>androidforms</code> || <translate><!--T:14--> The transformation-tier skill names.</translate>
Line 63: Line 63:
| <code>costs</code> || <translate><!--T:28--> List of the Training Point cost to upgrade to each level. Index 0 is level 1's cost, and so on. The number of entries is the skill's max level. A <code>-1</code> entry marks that level as not purchasable: it must be granted another way (for example Potential Unlock level 11 from Grand Elder Guru, or Ultimate from Old Kai).</translate>
| <code>costs</code> || <translate><!--T:28--> List of the Training Point cost to upgrade to each level. Index 0 is level 1's cost, and so on. The number of entries is the skill's max level. A <code>-1</code> entry marks that level as not purchasable: it must be granted another way (for example Potential Unlock level 11 from Grand Elder Guru, or Ultimate from Old Kai).</translate>
|-
|-
| <code>allowedRaces</code> || <translate><!--T:29--> List of the races allowed to learn this skill. An empty list (or <code>"all"</code>) means every race can learn it. For techniques (ki, strike and evasion), every race can still learn them from a master, but only the listed races can equip them in a technique slot. By default <code>gum_punch</code>, <code>mystic_ball</code> and <code>sleep_recovery</code> are set to <code>["majin"]</code>.</translate>
| <code>allowedRaces</code> || <translate><!--T:29--> List of the races allowed to learn this skill. An empty list (or <code>"all"</code>) means every race can learn it. For techniques (ki, strike and evasion), every race can still learn them from a master, but only the listed races can equip them in a technique slot or upgrade them. By default <code>gum_punch</code>, <code>mystic_ball</code>, <code>sleep_recovery</code>, <code>candy_beam</code> and <code>gum_bind</code> are set to <code>["majin"]</code>, <code>darkness_eye_beam</code> to <code>["namekian"]</code>, <code>android_combo</code> to <code>["android"]</code> and <code>perfect_rush</code> to <code>["bioandroid"]</code>. <code>"android"</code> also allows any character with the android upgrade.</translate>
|}
|}


Line 113: Line 113:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
"skillOfferings": {
"skillOfferings": {
   "goku": ["kicontrol", "fly", "instant_transmission", "fusion", "kamehameha", "spiritbomb", "dragon_fist", "super_god_fist", "oozaru_fist"],
   "goku": ["kicontrol", "fly", "instant_transmission", "fusion", "kamehameha", "spiritbomb", "dragon_fist", "super_god_fist", "oozaru_fist", "beam_sword_slash"],
   "roshi": ["jump", "meditation", "kicontrol", "kamehameha", "afterimage"],
   "roshi": ["jump", "meditation", "kicontrol", "kamehameha", "afterimage"],
   "default": ["kicontrol", "jump"]
   "default": ["kicontrol", "jump"]
Line 132: Line 132:
| <code>roshi</code> || {{L|Master Roshi}} || <code>jump</code>, <code>meditation</code>, <code>kicontrol</code>, <code>kamehameha</code>, <code>afterimage</code>
| <code>roshi</code> || {{L|Master Roshi}} || <code>jump</code>, <code>meditation</code>, <code>kicontrol</code>, <code>kamehameha</code>, <code>afterimage</code>
|-
|-
| <code>goku</code> || {{L|Goku}} || <code>kicontrol</code>, <code>fly</code>, <code>instant_transmission</code>, <code>fusion</code>, <code>kamehameha</code>, <code>spiritbomb</code>, <code>dragon_fist</code>, <code>super_god_fist</code>, <code>oozaru_fist</code>
| <code>goku</code> || {{L|Goku}} || <code>kicontrol</code>, <code>fly</code>, <code>instant_transmission</code>, <code>fusion</code>, <code>kamehameha</code>, <code>spiritbomb</code>, <code>dragon_fist</code>, <code>super_god_fist</code>, <code>oozaru_fist</code>, <code>beam_sword_slash</code>
|-
|-
| <code>kingkai</code> || {{L|King Kai}} || <code>kicontrol</code>, <code>kaioken</code>, <code>potentialunlock</code>, <code>kimanipulation</code>, <code>kaioken_attack</code>, <code>spiritbomb</code>
| <code>kingkai</code> || {{L|King Kai}} || <code>kicontrol</code>, <code>kaioken</code>, <code>potentialunlock</code>, <code>kimanipulation</code>, <code>kaioken_attack</code>, <code>spiritbomb</code>
|-
|-
| <code>vegeta</code> || {{L|Vegeta}} || <code>kicontrol</code>, <code>defense_penetration</code>, <code>potentialunlock</code>, <code>galick_gun</code>, <code>big_bang</code>, <code>final_flash</code>, <code>final_explosion</code>, <code>fake_moon</code>, <code>deadly_dance_vegetto</code>, <code>spirit_breaking_cannon</code>
| <code>vegeta</code> || {{L|Vegeta}} || <code>kicontrol</code>, <code>defense_penetration</code>, <code>potentialunlock</code>, <code>galick_gun</code>, <code>big_bang</code>, <code>final_flash</code>, <code>final_explosion</code>, <code>fake_moon</code>, <code>deadly_dance_vegetto</code>, <code>spirit_breaker</code>, <code>spirit_breaking_cannon</code>
|-
|-
| <code>oldkai</code> || {{L|Old Kai}} || <code>kicontrol</code>, <code>ki_infusion</code>, <code>healing_reduction</code>, <code>soul_punisher</code>
| <code>oldkai</code> || {{L|Old Kai}} || <code>kicontrol</code>, <code>ki_infusion</code>, <code>healing_reduction</code>, <code>soul_punisher</code>
Line 142: Line 142:
| <code>gohan</code> || {{L|Gohan}} || <code>kicontrol</code>, <code>kiboost</code>, <code>kiprotection</code>, <code>kisense</code>, <code>masenko</code>, <code>makkanko</code>, <code>kamehameha</code>, <code>ki_barrage</code>
| <code>gohan</code> || {{L|Gohan}} || <code>kicontrol</code>, <code>kiboost</code>, <code>kiprotection</code>, <code>kisense</code>, <code>masenko</code>, <code>makkanko</code>, <code>kamehameha</code>, <code>ki_barrage</code>
|-
|-
| <code>piccolo</code> || {{L|Piccolo}} || <code>potentialunlock</code>, <code>kicontrol</code>, <code>masenko</code>, <code>makkanko</code>, <code>ki_barrage</code>, <code>kienzan</code>, <code>hellzone_grenade</code>
| <code>piccolo</code> || {{L|Piccolo}} || <code>potentialunlock</code>, <code>kicontrol</code>, <code>masenko</code>, <code>makkanko</code>, <code>ki_barrage</code>, <code>kienzan</code>, <code>hellzone_grenade</code>, <code>darkness_eye_beam</code>
|-
|-
| <code>krillin</code> || {{L|Krillin}} || <code>kicontrol</code>, <code>sprint</code>, <code>kisense</code>, <code>kienzan</code>, <code>kienzan_doble</code>, <code>ki_barrage</code>, <code>taiyoken</code>, <code>afterimage</code>, <code>deadly_dance</code>
| <code>krillin</code> || {{L|Krillin}} || <code>kicontrol</code>, <code>sprint</code>, <code>kisense</code>, <code>kienzan</code>, <code>kienzan_doble</code>, <code>ki_barrage</code>, <code>taiyoken</code>, <code>afterimage</code>, <code>deadly_dance</code>
|-
|-
| <code>frieza</code> || {{L|Frieza}} || <code>kicontrol</code>, <code>fly</code>, <code>jump</code>, <code>sprint</code>, <code>kisense</code>, <code>meditation</code>, <code>potentialunlock</code>, <code>death_beam</code>, <code>emperor_death_beam</code>, <code>supernova</code>, <code>kienzan_doble</code>, <code>deadly_dance</code>, <code>meteor</code>
| <code>frieza</code> || {{L|Frieza}} || <code>kicontrol</code>, <code>fly</code>, <code>jump</code>, <code>sprint</code>, <code>kisense</code>, <code>meditation</code>, <code>potentialunlock</code>, <code>death_beam</code>, <code>emperor_death_beam</code>, <code>supernova</code>, <code>kienzan_doble</code>, <code>deadly_dance</code>, <code>meteor</code>, <code>death_chaser</code>
|-
|-
| <code>trunks</code> || {{L|Trunks}} || <code>kicontrol</code>, <code>kiboost</code>, <code>kiprotection</code>, <code>burning_attack</code>, <code>heat_dome</code>, <code>shining_sword_attack</code>, <code>galick_gun</code>, <code>ki_barrage</code>, <code>meteor</code>
| <code>trunks</code> || {{L|Trunks}} || <code>kicontrol</code>, <code>kiboost</code>, <code>kiprotection</code>, <code>burning_attack</code>, <code>heat_dome</code>, <code>shining_sword_attack</code>, <code>galick_gun</code>, <code>ki_barrage</code>, <code>meteor</code>
|-
|-
| <code>cell</code> || {{L|Cell}} || <code>kicontrol</code>, <code>instant_transmission</code>, <code>kimanipulation</code>, <code>ki_infusion</code>, <code>kiprotection</code>, <code>defense_penetration</code>, <code>healing_reduction</code>, <code>kiboost</code>, <code>kamehameha</code>, <code>kienzan</code>, <code>galick_gun</code>, <code>masenko</code>, <code>death_beam</code>, <code>ki_barrage</code>, <code>afterimage</code>, <code>deadly_dance</code>, <code>meteor</code>
| <code>cell</code> || {{L|Cell}} || <code>kicontrol</code>, <code>instant_transmission</code>, <code>kimanipulation</code>, <code>ki_infusion</code>, <code>kiprotection</code>, <code>defense_penetration</code>, <code>healing_reduction</code>, <code>kiboost</code>, <code>kamehameha</code>, <code>kienzan</code>, <code>galick_gun</code>, <code>masenko</code>, <code>death_beam</code>, <code>ki_barrage</code>, <code>afterimage</code>, <code>deadly_dance</code>, <code>meteor</code>, <code>android_combo</code>, <code>perfect_rush</code>
|-
|-
| <code>yamcha</code> || {{L|Yamcha}} || <code>kicontrol</code>, <code>ki_infusion</code>, <code>wolf_fang</code>, <code>sokidan</code>, <code>kamehameha</code>, <code>ki_barrage</code>
| <code>yamcha</code> || {{L|Yamcha}} || <code>kicontrol</code>, <code>ki_infusion</code>, <code>wolf_fang</code>, <code>sokidan</code>, <code>kamehameha</code>, <code>ki_barrage</code>
|-
| <code>tien</code> || {{L|Master Tien}} || <code>kicontrol</code>, <code>taiyoken</code>, <code>dodonpa</code>, <code>kikoho</code>, <code>neo_kikoho</code>
|-
|-
| <code>baba_earth</code> || {{L|Fortuneteller Baba}} || <code>kicontrol</code>, <code>meditation</code>
| <code>baba_earth</code> || {{L|Fortuneteller Baba}} || <code>kicontrol</code>, <code>meditation</code>
|-
|-
| <code>buu</code> || {{L|Majin Buu}} || <code>assault_rain</code>, <code>gum_punch</code>, <code>mystic_ball</code>, <code>sleep_recovery</code>
| <code>buu</code> || {{L|Majin Buu}} || <code>assault_rain</code>, <code>gum_punch</code>, <code>mystic_ball</code>, <code>sleep_recovery</code>, <code>candy_beam</code>, <code>gum_bind</code>
|-
|-
| <code>default</code> || <translate><!--T:43--> Any other master or NPC</translate> || <code>kicontrol</code>, <code>jump</code>
| <code>default</code> || <translate><!--T:43--> Any other master or NPC</translate> || <code>kicontrol</code>, <code>jump</code>
Line 248: Line 250:
! <translate><!--T:73--> Field</translate> !! <translate><!--T:74--> Default</translate> !! <translate><!--T:75--> What it does</translate>
! <translate><!--T:73--> Field</translate> !! <translate><!--T:74--> Default</translate> !! <translate><!--T:75--> What it does</translate>
|-
|-
| <code>cooldownTicks</code> || <translate><!--T:76--> Set per technique, for example <code>meteor_burst</code> 600, <code>dragon_fist</code> 320, <code>oozaru_fist</code> / <code>mystic_ball</code> 280, <code>super_god_fist</code> / <code>kaioken_attack</code> / <code>spirit_breaking_cannon</code> 240, <code>deadly_dance_vegetto</code> 200, <code>meteor</code> / <code>deadly_dance</code> / <code>shining_sword_attack</code> 160, <code>wolf_fang</code> 140, <code>oozaru_slam</code> 120</translate> || <translate><!--T:77--> Technique cooldown (before upgrades).</translate>
| <code>cooldownTicks</code> || <translate><!--T:76--> Set per technique: <code>meteor_burst</code> 600, <code>darkness_eye_beam</code> 410, <code>dimensional_sword_attack</code> / <code>android_combo</code> 380, <code>spirit_breaker</code> 370, <code>beam_sword_slash</code> 350, <code>dimensional_punch</code> 340, <code>spirit_breaking_cannon</code> / <code>perfect_rush</code> 330, <code>dragon_fist</code> / <code>shining_sword_attack</code> / <code>mystic_ball</code> / <code>death_chaser</code> 320, <code>super_god_fist</code> 300, <code>combo_meteor</code> 290, <code>oozaru_fist</code> 280, <code>gum_punch</code> / <code>blue_hurricane</code> 260, <code>grab</code> 210, <code>deadly_dance_vegetto</code> 200, <code>kaioken_attack</code> / <code>oozaru_slam</code> 180, <code>meteor</code> / <code>deadly_dance</code> 160, <code>wolf_fang</code> 140</translate> || <translate><!--T:77--> Technique cooldown (before upgrades).</translate>
|-
|-
| <code>castTimeTicks</code> || <code>0</code> || <translate><!--T:78--> Cast time shown in the technique details (strikes start as soon as you press the key).</translate>
| <code>castTimeTicks</code> || <code>0</code> || <translate><!--T:78--> Cast time shown in the technique details (strikes start as soon as you press the key).</translate>
Line 272: Line 274:
! <translate><!--T:85--> Field</translate> !! <translate><!--T:86--> Default</translate> !! <translate><!--T:87--> What it does</translate>
! <translate><!--T:85--> Field</translate> !! <translate><!--T:86--> Default</translate> !! <translate><!--T:87--> What it does</translate>
|-
|-
| <code>cooldownTicks</code> || <translate><!--T:88--> Set per technique, for example <code>sleep_recovery</code> 1200, <code>taiyoken</code> 900, <code>afterimage</code> 200, <code>rage_scream</code> / <code>dimensional_teleport</code> 80</translate> || <translate><!--T:89--> Technique cooldown (before upgrades).</translate>
| <code>cooldownTicks</code> || <translate><!--T:88--> Set per technique: <code>sleep_recovery</code> 1200, <code>taiyoken</code> / <code>gum_bind</code> 900, <code>candy_beam</code> 600, <code>afterimage</code> 200, <code>rage_scream</code> / <code>dimensional_teleport</code> 80</translate> || <translate><!--T:89--> Technique cooldown (before upgrades).</translate>
|-
|-
| <code>damageMultiplier</code> || <code>1.0</code> || <translate><!--T:90--> Multiplier on damage (Rage Scream).</translate>
| <code>damageMultiplier</code> || <code>1.0</code> || <translate><!--T:90--> Multiplier on damage (Rage Scream).</translate>
Line 282: Line 284:
| <code>xpGainMultiplier</code> / <code>xpGainPerHit</code> || <code>1.0</code> / <code>2</code> || <translate><!--T:93--> XP gains (evasion techniques gain XP each time they're used).</translate>
| <code>xpGainMultiplier</code> / <code>xpGainPerHit</code> || <code>1.0</code> / <code>2</code> || <translate><!--T:93--> XP gains (evasion techniques gain XP each time they're used).</translate>
|}
|}
<translate>
== New defaults on existing servers == <!--T:96-->
<!--T:97-->
Every time <code>skills.json</code> and <code>techniques.json</code> are loaded (when the server starts or with <code>/dmzreload</code>), the default entries they are missing are added, without changing any value already in the files:
* in <code>skills.json</code>, a missing skill or technique is added to <code>skills</code> with its default costs and races, and to the list of every master who offers it by default; a master missing from <code>skillOfferings</code> is added with its whole default list;
* in <code>techniques.json</code>, a missing ki attack type, strike technique or evasion technique is added with its default values.
<!--T:98-->
This is how new techniques reach an existing server. In 2.2 that means the strike techniques <code>darkness_eye_beam</code>, <code>death_chaser</code>, <code>android_combo</code>, <code>perfect_rush</code>, <code>spirit_breaker</code> and <code>beam_sword_slash</code>, the evasion techniques <code>candy_beam</code> and <code>gum_bind</code>, and the <code>tien</code> offering of [[Special:MyLanguage/Master Tien|Master Tien]]. Because existing values are never overwritten, a server that already had a <code>techniques.json</code> keeps its old strike cooldowns: compare them with the defaults above and edit them if you want the new ones.
</translate>


<translate>
<translate>

Latest revision as of 00:45, 22 October 2026

Skill costs, which races can learn each skill and which master teaches what all live in one file, config/dragonminez/skills.json. Technique tuning (experience, cooldowns, cast times, ki attack sizes and terrain destruction) lives next to it in config/dragonminez/techniques.json. Both files are documented on this page.

Their schemas are defined in SkillsConfig.java and TechniqueConfig.java. For what each skill and technique does in game, see Skills and Techniques.

Top-level structure of skills.json

Key Default What it does
configVersion A version string Internal schema version. Do not hand-edit it (see How to JSON).
kiSkills List of ids Ki attack technique names (for example kamehameha, final_flash).
strikeSkills List of ids Strike attack technique names (for example meteor, dragon_fist).
evasionSkills taiyoken, rage_scream, afterimage, sleep_recovery, dimensional_teleport, candy_beam, gum_bind Evasion technique names.
formSkills superforms, legendaryforms, godforms, androidforms The transformation-tier skill names.
stackSkills kaioken, ultimate The stack-form skill names.
androidBlacklistedForms superforms, legendaryforms Form skill names Androids are barred from learning.
skills See below A map of skill name to { costs, allowedRaces }.
skillOfferings See below A map of master name to a list of skill names.

There is no separate skill-offerings.json: skillOfferings lives inside skills.json alongside skills.

Category lists are not kept on upgrade The category lists (kiSkills, strikeSkills, evasionSkills, formSkills, stackSkills, androidBlacklistedForms) describe what exists in code. They are refreshed from the mod's defaults whenever the config is upgraded to a new version, so edits to them are not carried over. skills and skillOfferings keep your edits.

Skill costs and eligibility

The skills map sets the cost of every level of a skill and which races can learn it:

"skills": {
  "kamehameha": { "costs": [2000], "allowedRaces": [] },
  "kaioken": { "costs": [1000, 1500, 2500, 4000, 7500], "allowedRaces": [] },
  "potentialunlock": { "costs": [600, 1600, 2400, 3200, 4000, 4800, 5600, 6400, 7200, 8000, -1, 8800, 9600], "allowedRaces": [] }
}
Field What it does
costs List of the Training Point cost to upgrade to each level. Index 0 is level 1's cost, and so on. The number of entries is the skill's max level. A -1 entry marks that level as not purchasable: it must be granted another way (for example Potential Unlock level 11 from Grand Elder Guru, or Ultimate from Old Kai).
allowedRaces List of the races allowed to learn this skill. An empty list (or "all") means every race can learn it. For techniques (ki, strike and evasion), every race can still learn them from a master, but only the listed races can equip them in a technique slot or upgrade them. By default gum_punch, mystic_ball, sleep_recovery, candy_beam and gum_bind are set to ["majin"], darkness_eye_beam to ["namekian"], android_combo to ["android"] and perfect_rush to ["bioandroid"]. "android" also allows any character with the android upgrade.

Form skills (superforms, godforms, legendaryforms, androidforms) are priced per race in races/<race>/character.json instead (see Custom Races).

Default skill costs

Skill Costs per level (TP)
jump, sprint, meditation, kisense 300, 600, 900, 1,200, 1,500, 1,800, 2,100, 2,400, 2,700, 3,000
fly 1,500, 600, 900, 1,200, 1,500, 1,800, 2,100, 2,400, 2,700, 3,000
kicontrol 3,000
potentialunlock 600, 1,600, 2,400, 3,200, 4,000, 4,800, 5,600, 6,400, 7,200, 8,000, -1, 8,800, 9,600
kiboost 2,000, 4,000, 6,000, 8,000
kimanipulation, instant_transmission, defense_penetration, healing_reduction, ki_infusion, kiprotection 600, 1,200, 1,800, 2,200, 2,600, 2,800, 3,000, 3,200, 3,600, 4,000
kaioken 1,000, 1,500, 2,500, 4,000, 7,500
ultimate -1 (granted by Old Kai)
fusion 25,000, 5,000, 10,000, 15,000, 20,000

Every predefined technique has a single cost (its unlock price); see the tables on Ki Attacks, Strike Attacks and Evasion Techniques.

Who teaches which skills

The skillOfferings map lists the skills and techniques each master offers:

"skillOfferings": {
  "goku": ["kicontrol", "fly", "instant_transmission", "fusion", "kamehameha", "spiritbomb", "dragon_fist", "super_god_fist", "oozaru_fist", "beam_sword_slash"],
  "roshi": ["jump", "meditation", "kicontrol", "kamehameha", "afterimage"],
  "default": ["kicontrol", "jump"]
}

Keys are the master id (or the id of a quest NPC) offering the skill. "default" is the fallback list used by any master or NPC that has no entry of its own. Purchases are checked on the server: you must be within 10 blocks of a master that offers the skill, your race must be allowed (except for techniques, which any race can learn; see allowedRaces above), and a master who refuses you because of your alignment won't teach you.

Default offerings

Master id Master Skills offered
roshi Master Roshi jump, meditation, kicontrol, kamehameha, afterimage
goku Goku kicontrol, fly, instant_transmission, fusion, kamehameha, spiritbomb, dragon_fist, super_god_fist, oozaru_fist, beam_sword_slash
kingkai King Kai kicontrol, kaioken, potentialunlock, kimanipulation, kaioken_attack, spiritbomb
vegeta Vegeta kicontrol, defense_penetration, potentialunlock, galick_gun, big_bang, final_flash, final_explosion, fake_moon, deadly_dance_vegetto, spirit_breaker, spirit_breaking_cannon
oldkai Old Kai kicontrol, ki_infusion, healing_reduction, soul_punisher
gohan Gohan kicontrol, kiboost, kiprotection, kisense, masenko, makkanko, kamehameha, ki_barrage
piccolo Piccolo potentialunlock, kicontrol, masenko, makkanko, ki_barrage, kienzan, hellzone_grenade, darkness_eye_beam
krillin Krillin kicontrol, sprint, kisense, kienzan, kienzan_doble, ki_barrage, taiyoken, afterimage, deadly_dance
frieza Frieza kicontrol, fly, jump, sprint, kisense, meditation, potentialunlock, death_beam, emperor_death_beam, supernova, kienzan_doble, deadly_dance, meteor, death_chaser
trunks Trunks kicontrol, kiboost, kiprotection, burning_attack, heat_dome, shining_sword_attack, galick_gun, ki_barrage, meteor
cell Cell kicontrol, instant_transmission, kimanipulation, ki_infusion, kiprotection, defense_penetration, healing_reduction, kiboost, kamehameha, kienzan, galick_gun, masenko, death_beam, ki_barrage, afterimage, deadly_dance, meteor, android_combo, perfect_rush
yamcha Yamcha kicontrol, ki_infusion, wolf_fang, sokidan, kamehameha, ki_barrage
tien Master Tien kicontrol, taiyoken, dodonpa, kikoho, neo_kikoho
baba_earth Fortuneteller Baba kicontrol, meditation
buu Majin Buu assault_rain, gum_punch, mystic_ball, sleep_recovery, candy_beam, gum_bind
default Any other master or NPC kicontrol, jump

What JSON can and can't change

  • Retune existing skills: yes. Change costs, tighten or loosen allowedRaces, and add or remove a skill or technique from a master's skillOfferings list (for example, to let Roshi teach Kienzan).
  • Add a brand-new skill or predefined technique: no, not with JSON alone. New skills need actual Java code and registration before you can reference their name here. JSON only controls cost, eligibility and offering for skills that already exist in code. Players can still design their own ki attacks in the Technique Creator (see Techniques).

techniques.json

config/dragonminez/techniques.json tunes techniques by kind: one entry per ki attack type, and one per predefined strike and evasion technique. It is synced to clients and reloaded with the rest of the config.

{
  "KiAttacks": {
    "wave": { "castTimeTicks": 50, "damageMultiplier": 1.0, "kiCostMultiplier": 1.0, "baseSizeCap": 2.0, "transformedSizeCap": 5.0, "maxDestructionRadius": 12.0, "...": "..." }
  },
  "StrikeAttacks": {
    "dragon_fist": { "cooldownTicks": 320, "damageMultiplier": 1.0, "...": "..." }
  },
  "EvasionAttacks": {
    "taiyoken": { "cooldownTicks": 900, "...": "..." }
  }
}

Ki attacks

KiAttacks has one entry per ki attack type: small_ball, medium_ball, giant_ball, wave, laser, beam, disk, explosion, shield, barrage and area.

Field Default What it does
minXPCost 100 Base XP cost of an upgrade (grows with the technique's strength and the upgrades already bought).
maxXPCost -1 Upper limit for an upgrade's XP cost (-1 means no limit).
xpCostMultiplier 1.0 Multiplier on upgrade XP costs; above 1 each extra upgrade gets pricier.
xpGainMultiplier 1.0 Multiplier on XP gained.
xpGainPerHit / xpGainPerKill 1 / 3 XP gained per hit / per kill.
kiCostMultiplier 1.0 Multiplier on the ki cost of this type.
damageMultiplier 1.0 Multiplier on the damage of this type.
destructionMultiplier 1.0 Multiplier on the block-destruction radius of this type (0 means no terrain damage).
maxDestructionRadius Giant Ball and Explosion 32; Wave, Beam and Area 12; others 6 Hard cap on the destruction radius (0 or less means no cap).
castTimeTicks Small Ball and Laser 0; Medium Ball and Disk 30; Barrage, Shield and Area 40; Wave and Beam 50; Giant Ball and Explosion 60 Time to charge to 100%. Small Ball and Laser are always instant.
baseSizeCap Giant Ball 15, Explosion 12, Medium Ball 4.5, Wave 2, Beam and Disk 1.2, Barrage 1.5, others 0 Largest size the attack grows to with Ki Power in base form (0 keeps the technique's own size).
transformedSizeCap Giant Ball and Explosion 25, Medium Ball 7, Wave 5, Beam and Disk 2.3, Barrage 2.5, others 0 The same, while transformed or using a stack form such as Kaioken.
sizePowerFloor / sizePowerCeiling 100 / 1000000 Ki Power at which an attack is at its own size / reaches the cap (the growth in between is logarithmic).

Block destruction is also subject to the ki-griefing gamerules (see Gamerules).

Strike attacks

StrikeAttacks has one entry per strike technique id.

Field Default What it does
cooldownTicks Set per technique: meteor_burst 600, darkness_eye_beam 410, dimensional_sword_attack / android_combo 380, spirit_breaker 370, beam_sword_slash 350, dimensional_punch 340, spirit_breaking_cannon / perfect_rush 330, dragon_fist / shining_sword_attack / mystic_ball / death_chaser 320, super_god_fist 300, combo_meteor 290, oozaru_fist 280, gum_punch / blue_hurricane 260, grab 210, deadly_dance_vegetto 200, kaioken_attack / oozaru_slam 180, meteor / deadly_dance 160, wolf_fang 140 Technique cooldown (before upgrades).
castTimeTicks 0 Cast time shown in the technique details (strikes start as soon as you press the key).
damageMultiplier 1.0 Multiplier on the technique's damage.
kiCostMultiplier 1.0 Multiplier on the ki cost.
minXPCost / maxXPCost / xpCostMultiplier 100 / -1 / 1.0 Upgrade XP costs, as for ki attacks.
xpGainMultiplier / xpGainPerHit / xpGainPerKill 1.0 / 1 / 3 XP gains, as for ki attacks.

Evasion techniques

EvasionAttacks has one entry per evasion technique id.

Field Default What it does
cooldownTicks Set per technique: sleep_recovery 1200, taiyoken / gum_bind 900, candy_beam 600, afterimage 200, rage_scream / dimensional_teleport 80 Technique cooldown (before upgrades).
damageMultiplier 1.0 Multiplier on damage (Rage Scream).
kiCostMultiplier 1.0 Multiplier on the ki cost.
minXPCost / maxXPCost / xpCostMultiplier 100 / -1 / 1.0 Upgrade XP costs.
xpGainMultiplier / xpGainPerHit 1.0 / 2 XP gains (evasion techniques gain XP each time they're used).

New defaults on existing servers

Every time skills.json and techniques.json are loaded (when the server starts or with /dmzreload), the default entries they are missing are added, without changing any value already in the files:

  • in skills.json, a missing skill or technique is added to skills with its default costs and races, and to the list of every master who offers it by default; a master missing from skillOfferings is added with its whole default list;
  • in techniques.json, a missing ki attack type, strike technique or evasion technique is added with its default values.

This is how new techniques reach an existing server. In 2.2 that means the strike techniques darkness_eye_beam, death_chaser, android_combo, perfect_rush, spirit_breaker and beam_sword_slash, the evasion techniques candy_beam and gum_bind, and the tien offering of Master Tien. Because existing values are never overwritten, a server that already had a techniques.json keeps its old strike cooldowns: compare them with the defaults above and edit them if you want the new ones.

Reload and validate

  1. Edit config/dragonminez/skills.json, techniques.json or both.
  2. Validate the JSON syntax.
  3. Run /dmzreload config (or /dmzreload). Connected players get the new values resynced automatically.
  4. Check the skill menu in-game for the master you changed.