diff --git a/assets/voxygen/element/icons/skilltree/buff_amount.png b/assets/voxygen/element/icons/skilltree/buff_amount.png new file mode 100644 index 0000000000..4add372cd5 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_amount.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_combo.png b/assets/voxygen/element/icons/skilltree/buff_combo.png new file mode 100644 index 0000000000..45ff0e4710 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_combo.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_cost.png b/assets/voxygen/element/icons/skilltree/buff_cost.png new file mode 100644 index 0000000000..7806eb5400 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_cost.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_damage.png b/assets/voxygen/element/icons/skilltree/buff_damage.png new file mode 100644 index 0000000000..bb0ff86b8b Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_damage.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_distance.png b/assets/voxygen/element/icons/skilltree/buff_distance.png new file mode 100644 index 0000000000..2d0f17da46 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_distance.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_energy_drain.png b/assets/voxygen/element/icons/skilltree/buff_energy_drain.png new file mode 100644 index 0000000000..8493bb9c68 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_energy_drain.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_energy_regen.png b/assets/voxygen/element/icons/skilltree/buff_energy_regen.png new file mode 100644 index 0000000000..e35448dfeb Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_energy_regen.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_explosion.png b/assets/voxygen/element/icons/skilltree/buff_explosion.png new file mode 100644 index 0000000000..7cd7df2c88 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_explosion.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_heal.png b/assets/voxygen/element/icons/skilltree/buff_heal.png new file mode 100644 index 0000000000..298bd9dfb5 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_heal.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_helicopter.png b/assets/voxygen/element/icons/skilltree/buff_helicopter.png new file mode 100644 index 0000000000..e1a1f36b60 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_helicopter.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_infinite.png b/assets/voxygen/element/icons/skilltree/buff_infinite.png new file mode 100644 index 0000000000..fa94c21b4b Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_infinite.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_knockback.png b/assets/voxygen/element/icons/skilltree/buff_knockback.png new file mode 100644 index 0000000000..98a9f00b40 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_knockback.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_lifesteal.png b/assets/voxygen/element/icons/skilltree/buff_lifesteal.png new file mode 100644 index 0000000000..4ff30e55c7 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_lifesteal.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_projectile_speed.png b/assets/voxygen/element/icons/skilltree/buff_projectile_speed.png new file mode 100644 index 0000000000..068e6e66d5 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_projectile_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_radius.png b/assets/voxygen/element/icons/skilltree/buff_radius.png new file mode 100644 index 0000000000..2c89978d93 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_radius.png differ diff --git a/assets/voxygen/element/icons/skilltree/buff_speed.png b/assets/voxygen/element/icons/skilltree/buff_speed.png new file mode 100644 index 0000000000..391b2b7549 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/buff_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_amount.png b/assets/voxygen/element/icons/skilltree/debuff_amount.png new file mode 100644 index 0000000000..355d1f7a89 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_amount.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_combo.png b/assets/voxygen/element/icons/skilltree/debuff_combo.png new file mode 100644 index 0000000000..e49a0c8eda Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_combo.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_cost.png b/assets/voxygen/element/icons/skilltree/debuff_cost.png new file mode 100644 index 0000000000..64e62dd94b Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_cost.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_damage.png b/assets/voxygen/element/icons/skilltree/debuff_damage.png new file mode 100644 index 0000000000..002f4b295c Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_damage.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_distance.png b/assets/voxygen/element/icons/skilltree/debuff_distance.png new file mode 100644 index 0000000000..6dbdf54ff3 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_distance.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_energy_drain.png b/assets/voxygen/element/icons/skilltree/debuff_energy_drain.png new file mode 100644 index 0000000000..4bf08a2bb6 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_energy_drain.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_energy_regen.png b/assets/voxygen/element/icons/skilltree/debuff_energy_regen.png new file mode 100644 index 0000000000..c5b7efc6a9 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_energy_regen.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_explosion.png b/assets/voxygen/element/icons/skilltree/debuff_explosion.png new file mode 100644 index 0000000000..ed6313bf68 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_explosion.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_heal.png b/assets/voxygen/element/icons/skilltree/debuff_heal.png new file mode 100644 index 0000000000..02a84fcb33 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_heal.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_helicopter.png b/assets/voxygen/element/icons/skilltree/debuff_helicopter.png new file mode 100644 index 0000000000..6246cdbf6d Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_helicopter.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_infinite.png b/assets/voxygen/element/icons/skilltree/debuff_infinite.png new file mode 100644 index 0000000000..1caf3603fb Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_infinite.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_knockback.png b/assets/voxygen/element/icons/skilltree/debuff_knockback.png new file mode 100644 index 0000000000..a49dc4881c Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_knockback.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_lifesteal.png b/assets/voxygen/element/icons/skilltree/debuff_lifesteal.png new file mode 100644 index 0000000000..a481059fd1 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_lifesteal.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_projectile_speed.png b/assets/voxygen/element/icons/skilltree/debuff_projectile_speed.png new file mode 100644 index 0000000000..64c1fc90ae Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_projectile_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_radius.png b/assets/voxygen/element/icons/skilltree/debuff_radius.png new file mode 100644 index 0000000000..66940985a2 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_radius.png differ diff --git a/assets/voxygen/element/icons/skilltree/debuff_speed.png b/assets/voxygen/element/icons/skilltree/debuff_speed.png new file mode 100644 index 0000000000..c4a41c8bc9 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/debuff_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_amount.png b/assets/voxygen/element/icons/skilltree/heal_amount.png new file mode 100644 index 0000000000..11be2330ce Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_amount.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_combo.png b/assets/voxygen/element/icons/skilltree/heal_combo.png new file mode 100644 index 0000000000..7c0fec0ed0 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_combo.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_cost.png b/assets/voxygen/element/icons/skilltree/heal_cost.png new file mode 100644 index 0000000000..d7c2603691 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_cost.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_damage.png b/assets/voxygen/element/icons/skilltree/heal_damage.png new file mode 100644 index 0000000000..420117a65a Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_damage.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_distance.png b/assets/voxygen/element/icons/skilltree/heal_distance.png new file mode 100644 index 0000000000..5b6b254bfb Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_distance.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_energy_drain.png b/assets/voxygen/element/icons/skilltree/heal_energy_drain.png new file mode 100644 index 0000000000..7d273dcafb Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_energy_drain.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_energy_regen.png b/assets/voxygen/element/icons/skilltree/heal_energy_regen.png new file mode 100644 index 0000000000..e8dbeb2c89 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_energy_regen.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_explosion.png b/assets/voxygen/element/icons/skilltree/heal_explosion.png new file mode 100644 index 0000000000..1ac71d340e Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_explosion.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_heal.png b/assets/voxygen/element/icons/skilltree/heal_heal.png new file mode 100644 index 0000000000..b60eef66b6 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_heal.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_helicopter.png b/assets/voxygen/element/icons/skilltree/heal_helicopter.png new file mode 100644 index 0000000000..7188ad71cb Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_helicopter.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_infinite.png b/assets/voxygen/element/icons/skilltree/heal_infinite.png new file mode 100644 index 0000000000..94a714e809 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_infinite.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_knockback.png b/assets/voxygen/element/icons/skilltree/heal_knockback.png new file mode 100644 index 0000000000..543cc35190 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_knockback.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_lifesteal.png b/assets/voxygen/element/icons/skilltree/heal_lifesteal.png new file mode 100644 index 0000000000..bd254837a3 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_lifesteal.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_projectile_speed.png b/assets/voxygen/element/icons/skilltree/heal_projectile_speed.png new file mode 100644 index 0000000000..15f9417b5c Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_projectile_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_radius.png b/assets/voxygen/element/icons/skilltree/heal_radius.png new file mode 100644 index 0000000000..f6e13ba0ed Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_radius.png differ diff --git a/assets/voxygen/element/icons/skilltree/heal_speed.png b/assets/voxygen/element/icons/skilltree/heal_speed.png new file mode 100644 index 0000000000..47c0890c36 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/heal_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/leap_cost.png b/assets/voxygen/element/icons/skilltree/leap_cost.png deleted file mode 100644 index 6e05cde5bf..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/leap_cost.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/leap_damage.png b/assets/voxygen/element/icons/skilltree/leap_damage.png deleted file mode 100644 index e2041ab4b6..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/leap_damage.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/leap_distance.png b/assets/voxygen/element/icons/skilltree/leap_distance.png deleted file mode 100644 index a90d0a8ae0..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/leap_distance.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/leap_knockback.png b/assets/voxygen/element/icons/skilltree/leap_knockback.png deleted file mode 100644 index 15bc23571c..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/leap_knockback.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/leap_radius.png b/assets/voxygen/element/icons/skilltree/leap_radius.png deleted file mode 100644 index 42dd4de77a..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/leap_radius.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/magic_amount.png b/assets/voxygen/element/icons/skilltree/magic_amount.png new file mode 100644 index 0000000000..4e66787104 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_amount.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_combo.png b/assets/voxygen/element/icons/skilltree/magic_combo.png new file mode 100644 index 0000000000..2d2d226359 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_combo.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_cost.png b/assets/voxygen/element/icons/skilltree/magic_cost.png new file mode 100644 index 0000000000..8bca2e84f4 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_cost.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_damage.png b/assets/voxygen/element/icons/skilltree/magic_damage.png new file mode 100644 index 0000000000..3bbb34cc5c Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_damage.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_distance.png b/assets/voxygen/element/icons/skilltree/magic_distance.png new file mode 100644 index 0000000000..77f1c00406 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_distance.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_energy_drain.png b/assets/voxygen/element/icons/skilltree/magic_energy_drain.png new file mode 100644 index 0000000000..fb93261783 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_energy_drain.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_energy_regen.png b/assets/voxygen/element/icons/skilltree/magic_energy_regen.png new file mode 100644 index 0000000000..668eef4011 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_energy_regen.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_explosion.png b/assets/voxygen/element/icons/skilltree/magic_explosion.png new file mode 100644 index 0000000000..87f33c2266 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_explosion.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_heal.png b/assets/voxygen/element/icons/skilltree/magic_heal.png new file mode 100644 index 0000000000..1daf1de1e9 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_heal.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_helicopter.png b/assets/voxygen/element/icons/skilltree/magic_helicopter.png new file mode 100644 index 0000000000..dee746ef42 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_helicopter.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_infinite.png b/assets/voxygen/element/icons/skilltree/magic_infinite.png new file mode 100644 index 0000000000..515eb5e2b6 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_infinite.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_knockback.png b/assets/voxygen/element/icons/skilltree/magic_knockback.png new file mode 100644 index 0000000000..70204985ee Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_knockback.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_lifesteal.png b/assets/voxygen/element/icons/skilltree/magic_lifesteal.png new file mode 100644 index 0000000000..d0589a7191 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_lifesteal.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_projectile_speed.png b/assets/voxygen/element/icons/skilltree/magic_projectile_speed.png new file mode 100644 index 0000000000..ab3dcf1841 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_projectile_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_radius.png b/assets/voxygen/element/icons/skilltree/magic_radius.png new file mode 100644 index 0000000000..dec08163bb Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_radius.png differ diff --git a/assets/voxygen/element/icons/skilltree/magic_speed.png b/assets/voxygen/element/icons/skilltree/magic_speed.png new file mode 100644 index 0000000000..22bc9169f8 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/magic_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_amount.png b/assets/voxygen/element/icons/skilltree/physical_amount.png new file mode 100644 index 0000000000..9b9c4072d3 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_amount.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_combo.png b/assets/voxygen/element/icons/skilltree/physical_combo.png new file mode 100644 index 0000000000..ada3dfa51e Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_combo.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_cost.png b/assets/voxygen/element/icons/skilltree/physical_cost.png new file mode 100644 index 0000000000..f2c7b9fefe Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_cost.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_damage.png b/assets/voxygen/element/icons/skilltree/physical_damage.png new file mode 100644 index 0000000000..36370936d3 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_damage.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_distance.png b/assets/voxygen/element/icons/skilltree/physical_distance.png new file mode 100644 index 0000000000..bddc70c90a Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_distance.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_energy_drain.png b/assets/voxygen/element/icons/skilltree/physical_energy_drain.png new file mode 100644 index 0000000000..fefb31e616 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_energy_drain.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_energy_regen.png b/assets/voxygen/element/icons/skilltree/physical_energy_regen.png new file mode 100644 index 0000000000..11ef7844e9 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_energy_regen.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_explosion.png b/assets/voxygen/element/icons/skilltree/physical_explosion.png new file mode 100644 index 0000000000..946b9dcb77 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_explosion.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_heal.png b/assets/voxygen/element/icons/skilltree/physical_heal.png new file mode 100644 index 0000000000..1ddeafa750 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_heal.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_helicopter.png b/assets/voxygen/element/icons/skilltree/physical_helicopter.png new file mode 100644 index 0000000000..0963e9ba7c Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_helicopter.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_infinite.png b/assets/voxygen/element/icons/skilltree/physical_infinite.png new file mode 100644 index 0000000000..334d88c588 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_infinite.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_knockback.png b/assets/voxygen/element/icons/skilltree/physical_knockback.png new file mode 100644 index 0000000000..56f2f20d5e Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_knockback.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_lifesteal.png b/assets/voxygen/element/icons/skilltree/physical_lifesteal.png new file mode 100644 index 0000000000..cd4c1f22a1 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_lifesteal.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_projectile_speed.png b/assets/voxygen/element/icons/skilltree/physical_projectile_speed.png new file mode 100644 index 0000000000..5d08b0c178 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_projectile_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_radius.png b/assets/voxygen/element/icons/skilltree/physical_radius.png new file mode 100644 index 0000000000..29d8528c39 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_radius.png differ diff --git a/assets/voxygen/element/icons/skilltree/physical_speed.png b/assets/voxygen/element/icons/skilltree/physical_speed.png new file mode 100644 index 0000000000..5f2611948b Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/physical_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/skill_dodge.png b/assets/voxygen/element/icons/skilltree/skill_dodge.png new file mode 100644 index 0000000000..5c041fd97d Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/skill_dodge.png differ diff --git a/assets/voxygen/element/icons/skilltree/spin_amount.png b/assets/voxygen/element/icons/skilltree/spin_amount.png deleted file mode 100644 index ce738a6389..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/spin_amount.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/spin_cost.png b/assets/voxygen/element/icons/skilltree/spin_cost.png deleted file mode 100644 index 79aba1e9dd..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/spin_cost.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/spin_damage.png b/assets/voxygen/element/icons/skilltree/spin_damage.png deleted file mode 100644 index 254168c8ff..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/spin_damage.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/spin_helicopter.png b/assets/voxygen/element/icons/skilltree/spin_helicopter.png deleted file mode 100644 index 04664fad59..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/spin_helicopter.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/spin_infinite.png b/assets/voxygen/element/icons/skilltree/spin_infinite.png deleted file mode 100644 index 5470c7adb3..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/spin_infinite.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/spin_speed.png b/assets/voxygen/element/icons/skilltree/spin_speed.png deleted file mode 100644 index d7a63d5a3b..0000000000 Binary files a/assets/voxygen/element/icons/skilltree/spin_speed.png and /dev/null differ diff --git a/assets/voxygen/element/icons/skilltree/utility_amount.png b/assets/voxygen/element/icons/skilltree/utility_amount.png new file mode 100644 index 0000000000..02995dc523 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_amount.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_combo.png b/assets/voxygen/element/icons/skilltree/utility_combo.png new file mode 100644 index 0000000000..21a216a930 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_combo.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_cost.png b/assets/voxygen/element/icons/skilltree/utility_cost.png new file mode 100644 index 0000000000..4ccf8ddf5a Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_cost.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_damage.png b/assets/voxygen/element/icons/skilltree/utility_damage.png new file mode 100644 index 0000000000..17c78a92f6 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_damage.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_distance.png b/assets/voxygen/element/icons/skilltree/utility_distance.png new file mode 100644 index 0000000000..6acf1445b5 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_distance.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_energy_drain.png b/assets/voxygen/element/icons/skilltree/utility_energy_drain.png new file mode 100644 index 0000000000..e23410c9e0 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_energy_drain.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_energy_regen.png b/assets/voxygen/element/icons/skilltree/utility_energy_regen.png new file mode 100644 index 0000000000..aac20c1e65 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_energy_regen.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_explosion.png b/assets/voxygen/element/icons/skilltree/utility_explosion.png new file mode 100644 index 0000000000..ac42cc9b11 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_explosion.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_heal.png b/assets/voxygen/element/icons/skilltree/utility_heal.png new file mode 100644 index 0000000000..0fac3ec65a Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_heal.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_helicopter.png b/assets/voxygen/element/icons/skilltree/utility_helicopter.png new file mode 100644 index 0000000000..0e42b053c3 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_helicopter.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_infinite.png b/assets/voxygen/element/icons/skilltree/utility_infinite.png new file mode 100644 index 0000000000..18ee2ed06b Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_infinite.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_knockback.png b/assets/voxygen/element/icons/skilltree/utility_knockback.png new file mode 100644 index 0000000000..f6b8d10ec6 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_knockback.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_lifesteal.png b/assets/voxygen/element/icons/skilltree/utility_lifesteal.png new file mode 100644 index 0000000000..06c121e9ac Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_lifesteal.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_projectile_speed.png b/assets/voxygen/element/icons/skilltree/utility_projectile_speed.png new file mode 100644 index 0000000000..1fc01dc7e0 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_projectile_speed.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_radius.png b/assets/voxygen/element/icons/skilltree/utility_radius.png new file mode 100644 index 0000000000..6b444c7fef Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_radius.png differ diff --git a/assets/voxygen/element/icons/skilltree/utility_speed.png b/assets/voxygen/element/icons/skilltree/utility_speed.png new file mode 100644 index 0000000000..dbd2f834d2 Binary files /dev/null and b/assets/voxygen/element/icons/skilltree/utility_speed.png differ diff --git a/assets/voxygen/i18n/en/skills.ron b/assets/voxygen/i18n/en/skills.ron index 8aadd97b31..b9b6f8a3a1 100644 --- a/assets/voxygen/i18n/en/skills.ron +++ b/assets/voxygen/i18n/en/skills.ron @@ -34,6 +34,8 @@ "hud.skill.roll_dur_title": "Rolling Duration", "hud.skill.roll_dur": "Roll for 20% more time{SP}", // Sceptre + "hud.skill.sc_healbomb_title" : "Heal Bomb", + "hud.skill.sc_healbomb" : "Killing with kindness", "hud.skill.sc_projectile_speed_title": "Projectile Speed", "hud.skill.sc_projectile_speed": "Projectile threw 25% faster{SP}", "hud.skill.sc_energy_cost_title" : "Energy Cost", @@ -52,6 +54,8 @@ "hud.skill.sc_range" : "Longer beam, by 20%{SP}", "hud.skill.sc_energy_regen_title" : "Energy Regen", "hud.skill.sc_energy_regen" : "Increases energy regen from dealing damage by 10%{SP}", + "hud.skill.sc_beam_title" : "Heal Beam", + "hud.skill.sc_beam" : "Heal your party, but unheal the enemies", "hud.skill.sc_beam_damage_title" : "Beam Damage", "hud.skill.sc_beam_damage" : "Increases damage from the beam by 25%{SP}", "hud.skill.sc_beam_heal_title" : "Beam Heal", @@ -67,6 +71,8 @@ "hud.skill.st_shockwave_damage" : "Increases the damage done by 30%{SP}", "hud.skill.st_shockwave_unlock_title" : "Shockwave Unlock", "hud.skill.st_shockwave_unlock" : "Unlocks the ability to throw enemies away using fire{SP}", + "hud.skill.st_flamethrower_title" : "Flamethrower", + "hud.skill.st_flamethrower" : "Throws fire, cook'em all", "hud.skill.st_flame_velocity_title" : "Flame Velocity", "hud.skill.st_flame_velocity" : "Gets the fire there faster, 25% faster{SP}", "hud.skill.st_flamethrower_range_title" : "Flamethrower Range", @@ -79,6 +85,8 @@ "hud.skill.st_explosion_radius" : "Bigger is better, increases explosion radius by 10%{SP}", "hud.skill.st_stamina_regen_title" : "Stamina Regen", "hud.skill.st_stamina_regen" : "Increases stamina gain by 20%{SP}", + "hud.skill.st_fireball_title" : "Fireball", + "hud.skill.st_fireball" : "Play fetch with the enemies", "hud.skill.st_damage_title" : "Damage", "hud.skill.st_damage" : "Increases damage by 20%{SP}", "hud.skill.st_explosion_title" : "Explosion", @@ -96,6 +104,8 @@ "hud.skill.bow_repeater_damage" : "Increases the damage done by 40%{SP}", "hud.skill.bow_repeater_unlock_title" : "Repeater Unlock", "hud.skill.bow_repeater_unlock" : "Unlocks the ability to leap in the air and shoot a barrage of arrows{SP}", + "hud.skill.bow_charged_title" : "Charged Shoot", + "hud.skill.bow_charged" : "Because you waited longer", "hud.skill.bow_charged_knockback_title" : "Charged Knockback", "hud.skill.bow_charged_knockback" : "Knock enemies further back by 25%{SP}", "hud.skill.bow_charged_move_speed_title" : "Charged Move Speed", @@ -110,6 +120,8 @@ "hud.skill.bow_charged_damage" : "Increases damage by 20%{SP}", "hud.skill.bow_energy_regen_title" : "Energy Regen", "hud.skill.bow_energy_regen" : "Increases stamina gain by 40%{SP}", + "hud.skill.bow_title" : "Arrow Shoot", + "hud.skill.bow" : "Infinite quiver included, not suitable for children", "hud.skill.bow_damage_title" : "Damage", "hud.skill.bow_damage" : "Increases damage by 25%{SP}", // Hammer @@ -125,6 +137,8 @@ "hud.skill.hmr_leap_damage" : "Increases damage of leap by 40%{SP}", "hud.skill.hmr_unlock_leap_title" : "Unlock Leap", "hud.skill.hmr_unlock_leap" : "Unlocks a leap{SP}", + "hud.skill.hmr_charged_melee_title" : "Charged Melee", + "hud.skill.hmr_charged_melee" : "Melee but with charge", "hud.skill.hmr_charged_rate_title" : "Charge Rate", "hud.skill.hmr_charged_rate" : "Increases the rate that you charge the swing by 25%{SP}", "hud.skill.hmr_charged_melee_nrg_drain_title" : "Charged Melee Energy Drain", @@ -133,6 +147,8 @@ "hud.skill.hmr_charged_melee_damage" : "Increases the damage of the charged swing by 25%{SP}", "hud.skill.hmr_charged_melee_knockback_title" : "Charged Melee Knockback", "hud.skill.hmr_charged_melee_knockback" : "Massively increases throw potential of swing by 50%{SP}", + "hud.skill.hmr_single_strike_title" : "Single Strike", + "hud.skill.hmr_single_strike" : "As single as you are", "hud.skill.hmr_single_strike_regen_title" : "Single Strike Regen", "hud.skill.hmr_single_strike_regen" : "Increases stamina gain with each successive strike{SP}", "hud.skill.hmr_single_strike_speed_title" : "Single Strike Speed", @@ -143,6 +159,8 @@ "hud.skill.hmr_single_strike_knockback" : "Increase throw potential of swings by 50%{SP}", "hud.skill." : "", // Sword + "hud.skill.sw_trip_str_title": "Triple Strike", + "hud.skill.sw_trip_str": "Strike, up to three times", "hud.skill.sw_trip_str_combo_title": "Triple Strike Combo", "hud.skill.sw_trip_str_combo": "Unlocks combo scaling on triple strike{SP}", "hud.skill.sw_trip_str_dmg_title": "Triple Strike Damage", @@ -151,6 +169,8 @@ "hud.skill.sw_trip_str_sp": "Increases attack speed gained by each successive strike{SP}", "hud.skill.sw_trip_str_reg_title": "Triple Strike Regen", "hud.skill.sw_trip_str_reg": "Increases stamina gain on each successive strike{SP}", + "hud.skill.sw_dash_title": "Dash", + "hud.skill.sw_dash": "Pin through your enemies", "hud.skill.sw_dash_dmg_title": "Dash Damage", "hud.skill.sw_dash_dmg": "Increases initial damage of the dash by 20%{SP}", "hud.skill.sw_dash_drain_title": "Dash Drain", @@ -175,6 +195,9 @@ "hud.skill.sw_spin_spins": "Increases the number of times you can spin{SP}", "hud.skill.sw_interrupt_title": "Interrupting Attacks", "hud.skill.sw_interrupt": "Allows you to immediately cancel an attack with another attack{SP}", + // Axe + "hud.skill.axe_double_strike_title": "Double Strike", + "hud.skill.axe_double_strike": "Chop down those villains", "hud.skill.axe_double_strike_combo_title": "Double Strike Combo", "hud.skill.axe_double_strike_combo": "Unlocks a second strike{SP}", "hud.skill.axe_double_strike_damage_title": "Double Strike Damage", @@ -183,6 +206,8 @@ "hud.skill.axe_double_strike_speed": "Increases the attack speed with each successive strike{SP}", "hud.skill.axe_double_strike_regen_title": "Double Strike Regen", "hud.skill.axe_double_strike_regen": "Increases stamina gain with each successive strike{SP}", + "hud.skill.axe_spin_title": "Axe Spin", + "hud.skill.axe_spin": "You spin it right round ...", "hud.skill.axe_infinite_axe_spin_title": "Infinite Axe Spin", "hud.skill.axe_infinite_axe_spin": "Spin for as long as you have energy{SP}", "hud.skill.axe_spin_damage_title": "Spin Damage", diff --git a/voxygen/src/hud/diary.rs b/voxygen/src/hud/diary.rs index 3f3f8027a6..9547fd9d67 100644 --- a/voxygen/src/hud/diary.rs +++ b/voxygen/src/hud/diary.rs @@ -53,12 +53,14 @@ widget_ids! { skill_sword_combo_1, skill_sword_combo_2, skill_sword_combo_3, + skill_sword_combo_4, skill_sword_dash_0, skill_sword_dash_1, skill_sword_dash_2, skill_sword_dash_3, skill_sword_dash_4, skill_sword_dash_5, + skill_sword_dash_6, skill_sword_spin_0, skill_sword_spin_1, skill_sword_spin_2, @@ -70,11 +72,13 @@ widget_ids! { skill_axe_combo_1, skill_axe_combo_2, skill_axe_combo_3, + skill_axe_combo_4, skill_axe_spin_0, skill_axe_spin_1, skill_axe_spin_2, skill_axe_spin_3, skill_axe_spin_4, + skill_axe_spin_5, skill_axe_leap_0, skill_axe_leap_1, skill_axe_leap_2, @@ -85,10 +89,12 @@ widget_ids! { skill_hammer_combo_1, skill_hammer_combo_2, skill_hammer_combo_3, + skill_hammer_combo_4, skill_hammer_charged_0, skill_hammer_charged_1, skill_hammer_charged_2, skill_hammer_charged_3, + skill_hammer_charged_4, skill_hammer_leap_0, skill_hammer_leap_1, skill_hammer_leap_2, @@ -98,12 +104,14 @@ widget_ids! { bow_render, skill_bow_basic_0, skill_bow_basic_1, + skill_bow_basic_2, skill_bow_charged_0, skill_bow_charged_1, skill_bow_charged_2, skill_bow_charged_3, skill_bow_charged_4, skill_bow_charged_5, + skill_bow_charged_6, skill_bow_repeater_0, skill_bow_repeater_1, skill_bow_repeater_2, @@ -115,10 +123,12 @@ widget_ids! { skill_staff_basic_1, skill_staff_basic_2, skill_staff_basic_3, + skill_staff_basic_4, skill_staff_beam_0, skill_staff_beam_1, skill_staff_beam_2, skill_staff_beam_3, + skill_staff_beam_4, skill_staff_shockwave_0, skill_staff_shockwave_1, skill_staff_shockwave_2, @@ -131,11 +141,13 @@ widget_ids! { skill_sceptre_beam_3, skill_sceptre_beam_4, skill_sceptre_beam_5, + skill_sceptre_beam_6, skill_sceptre_bomb_0, skill_sceptre_bomb_1, skill_sceptre_bomb_2, skill_sceptre_bomb_3, skill_sceptre_bomb_4, + skill_sceptre_bomb_5, general_combat_render_0, general_combat_render_1, skill_general_stat_0, @@ -518,22 +530,22 @@ impl<'a> Widget for Diary<'a> { // Maximum of 9 skills/8 indices let skills_top_l = match sel_tab { SelectedSkillTree::General => 2, - SelectedSkillTree::Weapon(ToolKind::Sword) => 4, - SelectedSkillTree::Weapon(ToolKind::Axe) => 4, - SelectedSkillTree::Weapon(ToolKind::Hammer) => 4, - SelectedSkillTree::Weapon(ToolKind::Bow) => 2, - SelectedSkillTree::Weapon(ToolKind::Staff) => 4, - SelectedSkillTree::Weapon(ToolKind::Sceptre) => 6, + SelectedSkillTree::Weapon(ToolKind::Sword) => 5, + SelectedSkillTree::Weapon(ToolKind::Axe) => 5, + SelectedSkillTree::Weapon(ToolKind::Hammer) => 5, + SelectedSkillTree::Weapon(ToolKind::Bow) => 3, + SelectedSkillTree::Weapon(ToolKind::Staff) => 5, + SelectedSkillTree::Weapon(ToolKind::Sceptre) => 7, _ => 0, }; let skills_top_r = match sel_tab { SelectedSkillTree::General => 6, - SelectedSkillTree::Weapon(ToolKind::Sword) => 6, - SelectedSkillTree::Weapon(ToolKind::Axe) => 5, - SelectedSkillTree::Weapon(ToolKind::Hammer) => 4, - SelectedSkillTree::Weapon(ToolKind::Bow) => 6, - SelectedSkillTree::Weapon(ToolKind::Staff) => 4, - SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5, + SelectedSkillTree::Weapon(ToolKind::Sword) => 7, + SelectedSkillTree::Weapon(ToolKind::Axe) => 6, + SelectedSkillTree::Weapon(ToolKind::Hammer) => 5, + SelectedSkillTree::Weapon(ToolKind::Bow) => 7, + SelectedSkillTree::Weapon(ToolKind::Staff) => 5, + SelectedSkillTree::Weapon(ToolKind::Sceptre) => 6, _ => 0, }; let skills_bot_l = match sel_tab { @@ -914,7 +926,7 @@ impl<'a> Widget for Diary<'a> { // Bottom left skills let skill = Skill::Roll(ImmuneMelee); if create_skill_button( - self.imgs.swords_crossed, + self.imgs.skill_dodge_skill, state.skills_bot_l[0], &self.stats.skill_set, skill, @@ -940,7 +952,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Roll(Cost); if create_skill_button( - self.imgs.swords_crossed, + self.imgs.utility_cost_skill, state.skills_bot_l[1], &self.stats.skill_set, skill, @@ -966,7 +978,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Roll(Strength); if create_skill_button( - self.imgs.swords_crossed, + self.imgs.utility_speed_skill, state.skills_bot_l[2], &self.stats.skill_set, skill, @@ -992,7 +1004,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Roll(Duration); if create_skill_button( - self.imgs.swords_crossed, + self.imgs.utility_amount_skill, state.skills_bot_l[3], &self.stats.skill_set, skill, @@ -1034,10 +1046,21 @@ impl<'a> Widget for Diary<'a> { // 5 1 6 // 3 0 4 // 8 2 7 + Button::image(self.imgs.twohsword_m1) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_l[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.sw_trip_str_title"), + &self.localized_strings.get("hud.skill.sw_trip_str"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_sword_combo_0, ui); let skill = Skill::Sword(TsCombo); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_l[0], + self.imgs.physical_combo_skill, + state.skills_top_l[1], &self.stats.skill_set, skill, self.fonts, @@ -1049,9 +1072,7 @@ impl<'a> Widget for Diary<'a> { .localized_strings .get("hud.skill.sw_trip_str_combo_title"), &add_sp_cost_tooltip( - &self - .localized_strings - .get("hud.skill.sw_trip_str_combo_title"), + &self.localized_strings.get("hud.skill.sw_trip_str_combo"), skill, &self.stats.skill_set, &self.localized_strings, @@ -1059,15 +1080,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_combo_0, ui) + .set(state.skill_sword_combo_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(TsDamage); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_l[1], + self.imgs.physical_damage_skill, + state.skills_top_l[2], &self.stats.skill_set, skill, self.fonts, @@ -1087,15 +1108,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_combo_1, ui) + .set(state.skill_sword_combo_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(TsSpeed); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_l[2], + self.imgs.physical_speed_skill, + state.skills_top_l[3], &self.stats.skill_set, skill, self.fonts, @@ -1113,15 +1134,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_combo_2, ui) + .set(state.skill_sword_combo_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(TsRegen); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_l[3], + self.imgs.physical_energy_regen_skill, + state.skills_top_l[4], &self.stats.skill_set, skill, self.fonts, @@ -1141,16 +1162,27 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_combo_3, ui) + .set(state.skill_sword_combo_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; // Top right skills + Button::image(self.imgs.twohsword_m2) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_r[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.sw_dash_title"), + &self.localized_strings.get("hud.skill.sw_dash"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_sword_dash_0, ui); let skill = Skill::Sword(DDamage); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_r[0], + self.imgs.physical_damage_skill, + state.skills_top_r[1], &self.stats.skill_set, skill, self.fonts, @@ -1168,15 +1200,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_dash_0, ui) + .set(state.skill_sword_dash_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(DDrain); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_r[1], + self.imgs.physical_energy_drain_skill, + state.skills_top_r[2], &self.stats.skill_set, skill, self.fonts, @@ -1194,15 +1226,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_dash_1, ui) + .set(state.skill_sword_dash_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(DCost); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_r[2], + self.imgs.physical_cost_skill, + state.skills_top_r[3], &self.stats.skill_set, skill, self.fonts, @@ -1220,15 +1252,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_dash_2, ui) + .set(state.skill_sword_dash_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(DSpeed); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_r[3], + self.imgs.physical_speed_skill, + state.skills_top_r[4], &self.stats.skill_set, skill, self.fonts, @@ -1246,15 +1278,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_dash_3, ui) + .set(state.skill_sword_dash_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(DInfinite); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_r[4], + self.imgs.physical_infinite_skill, + state.skills_top_r[5], &self.stats.skill_set, skill, self.fonts, @@ -1272,15 +1304,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_dash_4, ui) + .set(state.skill_sword_dash_5, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sword(DScaling); if create_skill_button( - self.imgs.sword_whirlwind, - state.skills_top_r[5], + self.imgs.physical_amount_skill, + state.skills_top_r[6], &self.stats.skill_set, skill, self.fonts, @@ -1298,7 +1330,7 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sword_dash_5, ui) + .set(state.skill_sword_dash_6, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); @@ -1332,7 +1364,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Sword(SDamage); if create_skill_button( - self.imgs.sword_whirlwind, + self.imgs.physical_damage_skill, state.skills_bot_l[1], &self.stats.skill_set, skill, @@ -1358,7 +1390,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Sword(SSpeed); if create_skill_button( - self.imgs.sword_whirlwind, + self.imgs.physical_damage_skill, state.skills_bot_l[2], &self.stats.skill_set, skill, @@ -1384,7 +1416,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Sword(SCost); if create_skill_button( - self.imgs.sword_whirlwind, + self.imgs.physical_cost_skill, state.skills_bot_l[3], &self.stats.skill_set, skill, @@ -1410,7 +1442,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Sword(SSpins); if create_skill_button( - self.imgs.sword_whirlwind, + self.imgs.physical_amount_skill, state.skills_bot_l[4], &self.stats.skill_set, skill, @@ -1437,7 +1469,7 @@ impl<'a> Widget for Diary<'a> { // Bottom right skills let skill = Skill::Sword(InterruptingAttacks); if create_skill_button( - self.imgs.sword_whirlwind, + self.imgs.physical_damage_skill, state.skills_bot_r[0], &self.stats.skill_set, skill, @@ -1479,10 +1511,23 @@ impl<'a> Widget for Diary<'a> { // 5 1 6 // 3 0 4 // 8 2 7 + Button::image(self.imgs.twohaxe_m1) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_l[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self + .localized_strings + .get("hud.skill.axe_double_strike_title"), + &self.localized_strings.get("hud.skill.axe_double_strike"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_axe_combo_0, ui); let skill = Skill::Axe(DsCombo); if create_skill_button( - self.imgs.axespin, - state.skills_top_l[0], + self.imgs.physical_combo_skill, + state.skills_top_l[1], &self.stats.skill_set, skill, self.fonts, @@ -1504,15 +1549,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_combo_0, ui) + .set(state.skill_axe_combo_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(DsDamage); if create_skill_button( - self.imgs.axespin, - state.skills_top_l[1], + self.imgs.physical_damage_skill, + state.skills_top_l[2], &self.stats.skill_set, skill, self.fonts, @@ -1534,15 +1579,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_combo_1, ui) + .set(state.skill_axe_combo_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(DsSpeed); if create_skill_button( - self.imgs.axespin, - state.skills_top_l[2], + self.imgs.physical_speed_skill, + state.skills_top_l[3], &self.stats.skill_set, skill, self.fonts, @@ -1564,15 +1609,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_combo_2, ui) + .set(state.skill_axe_combo_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(DsRegen); if create_skill_button( - self.imgs.axespin, - state.skills_top_l[3], + self.imgs.physical_energy_regen_skill, + state.skills_top_l[4], &self.stats.skill_set, skill, self.fonts, @@ -1594,16 +1639,27 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_combo_3, ui) + .set(state.skill_axe_combo_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; // Top right skills + Button::image(self.imgs.axespin) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_r[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.axe_spin_title"), + &self.localized_strings.get("hud.skill.axe_spin"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_axe_spin_0, ui); let skill = Skill::Axe(SInfinite); if create_skill_button( - self.imgs.spin_infinite_skill, - state.skills_top_r[0], + self.imgs.physical_infinite_skill, + state.skills_top_r[1], &self.stats.skill_set, skill, self.fonts, @@ -1625,15 +1681,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_spin_0, ui) + .set(state.skill_axe_spin_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(SDamage); if create_skill_button( - self.imgs.spin_damage_skill, - state.skills_top_r[1], + self.imgs.physical_damage_skill, + state.skills_top_r[2], &self.stats.skill_set, skill, self.fonts, @@ -1653,15 +1709,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_spin_1, ui) + .set(state.skill_axe_spin_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(SHelicopter); if create_skill_button( - self.imgs.spin_helicopter_skill, - state.skills_top_r[2], + self.imgs.physical_helicopter_skill, + state.skills_top_r[3], &self.stats.skill_set, skill, self.fonts, @@ -1681,15 +1737,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_spin_2, ui) + .set(state.skill_axe_spin_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(SSpeed); if create_skill_button( - self.imgs.spin_speed_skill, - state.skills_top_r[3], + self.imgs.physical_speed_skill, + state.skills_top_r[4], &self.stats.skill_set, skill, self.fonts, @@ -1707,15 +1763,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_spin_3, ui) + .set(state.skill_axe_spin_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Axe(SCost); if create_skill_button( - self.imgs.spin_cost_skill, - state.skills_top_r[4], + self.imgs.physical_cost_skill, + state.skills_top_r[5], &self.stats.skill_set, skill, self.fonts, @@ -1733,7 +1789,7 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_axe_spin_4, ui) + .set(state.skill_axe_spin_5, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); @@ -1741,7 +1797,7 @@ impl<'a> Widget for Diary<'a> { // Bottom left skills let skill = Skill::Axe(UnlockLeap); if create_skill_button( - self.imgs.axespin, + self.imgs.skill_axe_leap_slash, state.skills_bot_l[0], &self.stats.skill_set, skill, @@ -1769,7 +1825,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Axe(LDamage); if create_skill_button( - self.imgs.leap_damage_skill, + self.imgs.physical_damage_skill, state.skills_bot_l[1], &self.stats.skill_set, skill, @@ -1797,7 +1853,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Axe(LKnockback); if create_skill_button( - self.imgs.leap_knockback_skill, + self.imgs.physical_knockback_skill, state.skills_bot_l[2], &self.stats.skill_set, skill, @@ -1825,7 +1881,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Axe(LCost); if create_skill_button( - self.imgs.leap_cost_skill, + self.imgs.physical_cost_skill, state.skills_bot_l[3], &self.stats.skill_set, skill, @@ -1851,7 +1907,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Axe(LDistance); if create_skill_button( - self.imgs.leap_distance_skill, + self.imgs.physical_distance_skill, state.skills_bot_l[4], &self.stats.skill_set, skill, @@ -1895,10 +1951,23 @@ impl<'a> Widget for Diary<'a> { // 5 1 6 // 3 0 4 // 8 2 7 + Button::image(self.imgs.twohhammer_m1) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_l[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self + .localized_strings + .get("hud.skill.hmr_single_strike_title"), + &self.localized_strings.get("hud.skill.hmr_single_strike"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_hammer_combo_0, ui); let skill = Skill::Hammer(SsKnockback); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_l[0], + self.imgs.physical_knockback_skill, + state.skills_top_l[1], &self.stats.skill_set, skill, self.fonts, @@ -1920,15 +1989,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_combo_0, ui) + .set(state.skill_hammer_combo_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Hammer(SsDamage); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_l[1], + self.imgs.physical_damage_skill, + state.skills_top_l[2], &self.stats.skill_set, skill, self.fonts, @@ -1950,15 +2019,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_combo_1, ui) + .set(state.skill_hammer_combo_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Hammer(SsSpeed); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_l[2], + self.imgs.physical_speed_skill, + state.skills_top_l[3], &self.stats.skill_set, skill, self.fonts, @@ -1980,15 +2049,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_combo_2, ui) + .set(state.skill_hammer_combo_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Hammer(SsRegen); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_l[3], + self.imgs.physical_energy_regen_skill, + state.skills_top_l[4], &self.stats.skill_set, skill, self.fonts, @@ -2010,16 +2079,29 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_combo_3, ui) + .set(state.skill_hammer_combo_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; // Top right skills + Button::image(self.imgs.hammergolf) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_r[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self + .localized_strings + .get("hud.skill.hmr_charged_melee_title"), + &self.localized_strings.get("hud.skill.hmr_charged_melee"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_hammer_charged_0, ui); let skill = Skill::Hammer(CKnockback); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_r[0], + self.imgs.physical_knockback_skill, + state.skills_top_r[1], &self.stats.skill_set, skill, self.fonts, @@ -2041,15 +2123,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_charged_0, ui) + .set(state.skill_hammer_charged_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Hammer(CDamage); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_r[1], + self.imgs.physical_damage_skill, + state.skills_top_r[2], &self.stats.skill_set, skill, self.fonts, @@ -2071,15 +2153,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_charged_1, ui) + .set(state.skill_hammer_charged_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Hammer(CDrain); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_r[2], + self.imgs.physical_energy_drain_skill, + state.skills_top_r[3], &self.stats.skill_set, skill, self.fonts, @@ -2101,15 +2183,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_charged_2, ui) + .set(state.skill_hammer_charged_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Hammer(CSpeed); if create_skill_button( - self.imgs.hammergolf, - state.skills_top_r[3], + self.imgs.physical_amount_skill, + state.skills_top_r[4], &self.stats.skill_set, skill, self.fonts, @@ -2129,7 +2211,7 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_hammer_charged_3, ui) + .set(state.skill_hammer_charged_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); @@ -2137,7 +2219,7 @@ impl<'a> Widget for Diary<'a> { // Bottom left skills let skill = Skill::Hammer(UnlockLeap); if create_skill_button( - self.imgs.hammergolf, + self.imgs.hammerleap, state.skills_bot_l[0], &self.stats.skill_set, skill, @@ -2165,7 +2247,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Hammer(LDamage); if create_skill_button( - self.imgs.hammergolf, + self.imgs.physical_damage_skill, state.skills_bot_l[1], &self.stats.skill_set, skill, @@ -2193,7 +2275,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Hammer(LKnockback); if create_skill_button( - self.imgs.hammergolf, + self.imgs.physical_knockback_skill, state.skills_bot_l[2], &self.stats.skill_set, skill, @@ -2221,7 +2303,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Hammer(LCost); if create_skill_button( - self.imgs.hammergolf, + self.imgs.physical_cost_skill, state.skills_bot_l[3], &self.stats.skill_set, skill, @@ -2247,7 +2329,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Hammer(LDistance); if create_skill_button( - self.imgs.hammergolf, + self.imgs.physical_distance_skill, state.skills_bot_l[4], &self.stats.skill_set, skill, @@ -2275,7 +2357,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Hammer(LRange); if create_skill_button( - self.imgs.hammer_leap_radius_skill, + self.imgs.physical_radius_skill, state.skills_bot_l[5], &self.stats.skill_set, skill, @@ -2318,10 +2400,21 @@ impl<'a> Widget for Diary<'a> { // 5 1 6 // 3 0 4 // 8 2 7 + Button::image(self.imgs.bow_m1) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_l[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.bow_title"), + &self.localized_strings.get("hud.skill.bow"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_bow_basic_0, ui); let skill = Skill::Bow(BDamage); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_l[0], + self.imgs.physical_damage_skill, + state.skills_top_l[1], &self.stats.skill_set, skill, self.fonts, @@ -2339,15 +2432,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_basic_0, ui) + .set(state.skill_bow_basic_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Bow(BRegen); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_l[1], + self.imgs.physical_energy_regen_skill, + state.skills_top_l[2], &self.stats.skill_set, skill, self.fonts, @@ -2367,16 +2460,27 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_basic_1, ui) + .set(state.skill_bow_basic_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; // Top right skills + Button::image(self.imgs.bow_m2) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_r[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.bow_charged_title"), + &self.localized_strings.get("hud.skill.bow_charged"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_bow_charged_0, ui); let skill = Skill::Bow(CDamage); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_r[0], + self.imgs.physical_damage_skill, + state.skills_top_r[1], &self.stats.skill_set, skill, self.fonts, @@ -2396,15 +2500,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_charged_0, ui) + .set(state.skill_bow_charged_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Bow(CDrain); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_r[1], + self.imgs.physical_energy_drain_skill, + state.skills_top_r[2], &self.stats.skill_set, skill, self.fonts, @@ -2424,15 +2528,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_charged_1, ui) + .set(state.skill_bow_charged_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Bow(CProjSpeed); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_r[2], + self.imgs.physical_projectile_speed_skill, + state.skills_top_r[3], &self.stats.skill_set, skill, self.fonts, @@ -2454,15 +2558,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_charged_2, ui) + .set(state.skill_bow_charged_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Bow(CSpeed); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_r[3], + self.imgs.physical_speed_skill, + state.skills_top_r[4], &self.stats.skill_set, skill, self.fonts, @@ -2482,15 +2586,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_charged_3, ui) + .set(state.skill_bow_charged_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Bow(CMove); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_r[4], + self.imgs.physical_speed_skill, + state.skills_top_r[5], &self.stats.skill_set, skill, self.fonts, @@ -2512,15 +2616,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_charged_4, ui) + .set(state.skill_bow_charged_5, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Bow(CKnockback); if create_skill_button( - self.imgs.bow_m1, - state.skills_top_r[5], + self.imgs.physical_knockback_skill, + state.skills_top_r[6], &self.stats.skill_set, skill, self.fonts, @@ -2542,7 +2646,7 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_bow_charged_5, ui) + .set(state.skill_bow_charged_6, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); @@ -2550,7 +2654,7 @@ impl<'a> Widget for Diary<'a> { // Bottom left skills let skill = Skill::Bow(UnlockRepeater); if create_skill_button( - self.imgs.bow_m1, + self.imgs.skill_bow_jump_burst, state.skills_bot_l[0], &self.stats.skill_set, skill, @@ -2578,7 +2682,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Bow(RDamage); if create_skill_button( - self.imgs.bow_m1, + self.imgs.physical_damage_skill, state.skills_bot_l[1], &self.stats.skill_set, skill, @@ -2606,7 +2710,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Bow(RGlide); if create_skill_button( - self.imgs.bow_m1, + self.imgs.physical_helicopter_skill, state.skills_bot_l[2], &self.stats.skill_set, skill, @@ -2634,7 +2738,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Bow(RCost); if create_skill_button( - self.imgs.bow_m1, + self.imgs.physical_cost_skill, state.skills_bot_l[3], &self.stats.skill_set, skill, @@ -2662,7 +2766,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Bow(RArrows); if create_skill_button( - self.imgs.bow_m1, + self.imgs.physical_amount_skill, state.skills_bot_l[4], &self.stats.skill_set, skill, @@ -2691,7 +2795,7 @@ impl<'a> Widget for Diary<'a> { // Bottom right skills let skill = Skill::Bow(ProjSpeed); if create_skill_button( - self.imgs.bow_m1, + self.imgs.physical_projectile_speed_skill, state.skills_bot_r[0], &self.stats.skill_set, skill, @@ -2735,10 +2839,21 @@ impl<'a> Widget for Diary<'a> { // 5 1 6 // 3 0 4 // 8 2 7 + Button::image(self.imgs.fireball) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_l[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.st_fireball_title"), + &self.localized_strings.get("hud.skill.st_fireball"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_staff_basic_0, ui); let skill = Skill::Staff(BExplosion); if create_skill_button( - self.imgs.fireball, - state.skills_top_l[0], + self.imgs.magic_explosion_skill, + state.skills_top_l[1], &self.stats.skill_set, skill, self.fonts, @@ -2756,15 +2871,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_basic_0, ui) + .set(state.skill_staff_basic_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Staff(BDamage); if create_skill_button( - self.imgs.fireball, - state.skills_top_l[1], + self.imgs.magic_damage_skill, + state.skills_top_l[2], &self.stats.skill_set, skill, self.fonts, @@ -2782,15 +2897,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_basic_1, ui) + .set(state.skill_staff_basic_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Staff(BRegen); if create_skill_button( - self.imgs.fireball, - state.skills_top_l[2], + self.imgs.magic_energy_regen_skill, + state.skills_top_l[3], &self.stats.skill_set, skill, self.fonts, @@ -2810,15 +2925,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_basic_2, ui) + .set(state.skill_staff_basic_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Staff(BRadius); if create_skill_button( - self.imgs.fireball, - state.skills_top_l[3], + self.imgs.magic_radius_skill, + state.skills_top_l[4], &self.stats.skill_set, skill, self.fonts, @@ -2838,16 +2953,29 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_basic_3, ui) + .set(state.skill_staff_basic_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; // Top right skills + Button::image(self.imgs.flamethrower) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_r[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self + .localized_strings + .get("hud.skill.st_flamethrower_title"), + &self.localized_strings.get("hud.skill.st_flamethrower"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_staff_beam_0, ui); let skill = Skill::Staff(FDamage); if create_skill_button( - self.imgs.fireball, - state.skills_top_r[0], + self.imgs.magic_damage_skill, + state.skills_top_r[1], &self.stats.skill_set, skill, self.fonts, @@ -2869,15 +2997,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_beam_0, ui) + .set(state.skill_staff_beam_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Staff(FDrain); if create_skill_button( - self.imgs.fireball, - state.skills_top_r[1], + self.imgs.magic_energy_drain_skill, + state.skills_top_r[2], &self.stats.skill_set, skill, self.fonts, @@ -2897,15 +3025,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_beam_1, ui) + .set(state.skill_staff_beam_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Staff(FRange); if create_skill_button( - self.imgs.fireball, - state.skills_top_r[2], + self.imgs.magic_radius_skill, + state.skills_top_r[3], &self.stats.skill_set, skill, self.fonts, @@ -2927,15 +3055,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_beam_2, ui) + .set(state.skill_staff_beam_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Staff(FVelocity); if create_skill_button( - self.imgs.fireball, - state.skills_top_r[3], + self.imgs.magic_projectile_speed_skill, + state.skills_top_r[4], &self.stats.skill_set, skill, self.fonts, @@ -2955,7 +3083,7 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_staff_beam_3, ui) + .set(state.skill_staff_beam_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); @@ -2963,7 +3091,7 @@ impl<'a> Widget for Diary<'a> { // Bottom left skills let skill = Skill::Staff(UnlockShockwave); if create_skill_button( - self.imgs.fireball, + self.imgs.fire_aoe, state.skills_bot_l[0], &self.stats.skill_set, skill, @@ -2991,7 +3119,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Staff(SDamage); if create_skill_button( - self.imgs.fireball, + self.imgs.magic_damage_skill, state.skills_bot_l[1], &self.stats.skill_set, skill, @@ -3019,7 +3147,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Staff(SKnockback); if create_skill_button( - self.imgs.fireball, + self.imgs.magic_knockback_skill, state.skills_bot_l[2], &self.stats.skill_set, skill, @@ -3049,7 +3177,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Staff(SCost); if create_skill_button( - self.imgs.fireball, + self.imgs.magic_cost_skill, state.skills_bot_l[3], &self.stats.skill_set, skill, @@ -3077,7 +3205,7 @@ impl<'a> Widget for Diary<'a> { }; let skill = Skill::Staff(SRange); if create_skill_button( - self.imgs.fireball, + self.imgs.magic_radius_skill, state.skills_bot_l[4], &self.stats.skill_set, skill, @@ -3121,10 +3249,21 @@ impl<'a> Widget for Diary<'a> { // 5 1 6 // 3 0 4 // 8 2 7 + Button::image(self.imgs.heal_0) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_l[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.sc_beam_title"), + &self.localized_strings.get("hud.skill.sc_beam"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_sceptre_beam_0, ui); let skill = Skill::Sceptre(BHeal); if create_skill_button( - self.imgs.heal_0, - state.skills_top_l[0], + self.imgs.heal_heal_skill, + state.skills_top_l[1], &self.stats.skill_set, skill, self.fonts, @@ -3142,15 +3281,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_beam_0, ui) + .set(state.skill_sceptre_beam_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(BDamage); if create_skill_button( - self.imgs.heal_0, - state.skills_top_l[1], + self.imgs.heal_damage_skill, + state.skills_top_l[2], &self.stats.skill_set, skill, self.fonts, @@ -3168,15 +3307,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_beam_1, ui) + .set(state.skill_sceptre_beam_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(BRegen); if create_skill_button( - self.imgs.heal_0, - state.skills_top_l[2], + self.imgs.heal_energy_regen_skill, + state.skills_top_l[3], &self.stats.skill_set, skill, self.fonts, @@ -3196,15 +3335,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_beam_2, ui) + .set(state.skill_sceptre_beam_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(BRange); if create_skill_button( - self.imgs.heal_0, - state.skills_top_l[3], + self.imgs.heal_radius_skill, + state.skills_top_l[4], &self.stats.skill_set, skill, self.fonts, @@ -3222,15 +3361,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_beam_3, ui) + .set(state.skill_sceptre_beam_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(BLifesteal); if create_skill_button( - self.imgs.heal_0, - state.skills_top_l[4], + self.imgs.heal_lifesteal_skill, + state.skills_top_l[5], &self.stats.skill_set, skill, self.fonts, @@ -3252,15 +3391,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_beam_4, ui) + .set(state.skill_sceptre_beam_5, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(BCost); if create_skill_button( - self.imgs.heal_0, - state.skills_top_l[5], + self.imgs.heal_cost_skill, + state.skills_top_l[6], &self.stats.skill_set, skill, self.fonts, @@ -3278,16 +3417,27 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_beam_5, ui) + .set(state.skill_sceptre_beam_6, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; + Button::image(self.imgs.heal_bomb) + .w_h(74.0, 74.0) + .mid_top_with_margin_on(state.skills_top_r[0], 3.0) + .with_tooltip( + self.tooltip_manager, + &self.localized_strings.get("hud.skill.sc_healbomb_title"), + &self.localized_strings.get("hud.skill.sc_healbomb"), + &diary_tooltip, + TEXT_COLOR, + ) + .set(state.skill_sceptre_bomb_0, ui); // Top right skills let skill = Skill::Sceptre(PHeal); if create_skill_button( - self.imgs.heal_0, - state.skills_top_r[0], + self.imgs.heal_heal_skill, + state.skills_top_r[1], &self.stats.skill_set, skill, self.fonts, @@ -3305,15 +3455,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_bomb_0, ui) + .set(state.skill_sceptre_bomb_1, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(PDamage); if create_skill_button( - self.imgs.heal_0, - state.skills_top_r[1], + self.imgs.heal_damage_skill, + state.skills_top_r[2], &self.stats.skill_set, skill, self.fonts, @@ -3331,15 +3481,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_bomb_1, ui) + .set(state.skill_sceptre_bomb_2, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(PRadius); if create_skill_button( - self.imgs.heal_0, - state.skills_top_r[2], + self.imgs.heal_radius_skill, + state.skills_top_r[3], &self.stats.skill_set, skill, self.fonts, @@ -3357,15 +3507,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_bomb_2, ui) + .set(state.skill_sceptre_bomb_3, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(PCost); if create_skill_button( - self.imgs.heal_0, - state.skills_top_r[3], + self.imgs.heal_cost_skill, + state.skills_top_r[4], &self.stats.skill_set, skill, self.fonts, @@ -3383,15 +3533,15 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_bomb_3, ui) + .set(state.skill_sceptre_bomb_4, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); }; let skill = Skill::Sceptre(PProjSpeed); if create_skill_button( - self.imgs.heal_0, - state.skills_top_r[4], + self.imgs.heal_projectile_speed_skill, + state.skills_top_r[5], &self.stats.skill_set, skill, self.fonts, @@ -3411,7 +3561,7 @@ impl<'a> Widget for Diary<'a> { &diary_tooltip, TEXT_COLOR, ) - .set(state.skill_sceptre_bomb_4, ui) + .set(state.skill_sceptre_bomb_5, ui) .was_clicked() { events.push(Event::UnlockSkill(skill)); diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index d7da861e52..1d4cc01cfc 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -180,19 +180,109 @@ image_ids! { unlock_sceptre_skill: "voxygen.element.icons.skilltree.unlock_sceptre", unlock_staff_skill0: "voxygen.element.icons.skilltree.unlock_staff-0", unlock_sword_skill: "voxygen.element.icons.skilltree.unlock_sword", + skill_dodge_skill: "voxygen.element.icons.skilltree.skill_dodge", - spin_infinite_skill: "voxygen.element.icons.skilltree.spin_infinite", - spin_damage_skill: "voxygen.element.icons.skilltree.spin_damage", - spin_helicopter_skill: "voxygen.element.icons.skilltree.spin_helicopter", - spin_speed_skill: "voxygen.element.icons.skilltree.spin_speed", - spin_cost_skill: "voxygen.element.icons.skilltree.spin_cost", - leap_damage_skill: "voxygen.element.icons.skilltree.leap_damage", - leap_knockback_skill: "voxygen.element.icons.skilltree.leap_knockback", - leap_cost_skill: "voxygen.element.icons.skilltree.leap_cost", - leap_distance_skill: "voxygen.element.icons.skilltree.leap_distance", - hammer_leap_radius_skill: "voxygen.element.icons.skilltree.leap_radius", + buff_amount_skill: "voxygen.element.icons.skilltree.buff_amount", + buff_combo_skill: "voxygen.element.icons.skilltree.buff_combo", + buff_cost_skill: "voxygen.element.icons.skilltree.buff_cost", + buff_damage_skill: "voxygen.element.icons.skilltree.buff_damage", + buff_distance_skill: "voxygen.element.icons.skilltree.buff_distance", + buff_energy_drain_skill: "voxygen.element.icons.skilltree.buff_energy_drain", + buff_energy_regen_skill: "voxygen.element.icons.skilltree.buff_energy_regen", + buff_explosion_skill: "voxygen.element.icons.skilltree.buff_explosion", + buff_heal_skill: "voxygen.element.icons.skilltree.buff_heal", + buff_helicopter_skill: "voxygen.element.icons.skilltree.buff_helicopter", + buff_infinite_skill: "voxygen.element.icons.skilltree.buff_infinite", + buff_knockback_skill: "voxygen.element.icons.skilltree.buff_knockback", + buff_lifesteal_skill: "voxygen.element.icons.skilltree.buff_lifesteal", + buff_projectile_speed_skill: "voxygen.element.icons.skilltree.buff_projectile_speed", + buff_radius_skill: "voxygen.element.icons.skilltree.buff_radius", + buff_speed_skill: "voxygen.element.icons.skilltree.buff_speed", - axe_spin_amount_skill: "voxygen.element.icons.skilltree.spin_amount", + debuff_amount_skill: "voxygen.element.icons.skilltree.debuff_amount", + debuff_combo_skill: "voxygen.element.icons.skilltree.debuff_combo", + debuff_cost_skill: "voxygen.element.icons.skilltree.debuff_cost", + debuff_damage_skill: "voxygen.element.icons.skilltree.debuff_damage", + debuff_distance_skill: "voxygen.element.icons.skilltree.debuff_distance", + debuff_energy_drain_skill: "voxygen.element.icons.skilltree.debuff_energy_drain", + debuff_energy_regen_skill: "voxygen.element.icons.skilltree.debuff_energy_regen", + debuff_explosion_skill: "voxygen.element.icons.skilltree.debuff_explosion", + debuff_heal_skill: "voxygen.element.icons.skilltree.debuff_heal", + debuff_helicopter_skill: "voxygen.element.icons.skilltree.debuff_helicopter", + debuff_infinite_skill: "voxygen.element.icons.skilltree.debuff_infinite", + debuff_knockback_skill: "voxygen.element.icons.skilltree.debuff_knockback", + debuff_lifesteal_skill: "voxygen.element.icons.skilltree.debuff_lifesteal", + debuff_projectile_speed_skill: "voxygen.element.icons.skilltree.debuff_projectile_speed", + debuff_radius_skill: "voxygen.element.icons.skilltree.debuff_radius", + debuff_speed_skill: "voxygen.element.icons.skilltree.debuff_speed", + + heal_amount_skill: "voxygen.element.icons.skilltree.heal_amount", + heal_combo_skill: "voxygen.element.icons.skilltree.heal_combo", + heal_cost_skill: "voxygen.element.icons.skilltree.heal_cost", + heal_damage_skill: "voxygen.element.icons.skilltree.heal_damage", + heal_distance_skill: "voxygen.element.icons.skilltree.heal_distance", + heal_energy_drain_skill: "voxygen.element.icons.skilltree.heal_energy_drain", + heal_energy_regen_skill: "voxygen.element.icons.skilltree.heal_energy_regen", + heal_explosion_skill: "voxygen.element.icons.skilltree.heal_explosion", + heal_heal_skill: "voxygen.element.icons.skilltree.heal_heal", + heal_helicopter_skill: "voxygen.element.icons.skilltree.heal_helicopter", + heal_infinite_skill: "voxygen.element.icons.skilltree.heal_infinite", + heal_knockback_skill: "voxygen.element.icons.skilltree.heal_knockback", + heal_lifesteal_skill: "voxygen.element.icons.skilltree.heal_lifesteal", + heal_projectile_speed_skill: "voxygen.element.icons.skilltree.heal_projectile_speed", + heal_radius_skill: "voxygen.element.icons.skilltree.heal_radius", + heal_speed_skill: "voxygen.element.icons.skilltree.heal_speed", + + magic_amount_skill: "voxygen.element.icons.skilltree.magic_amount", + magic_combo_skill: "voxygen.element.icons.skilltree.magic_combo", + magic_cost_skill: "voxygen.element.icons.skilltree.magic_cost", + magic_damage_skill: "voxygen.element.icons.skilltree.magic_damage", + magic_distance_skill: "voxygen.element.icons.skilltree.magic_distance", + magic_energy_drain_skill: "voxygen.element.icons.skilltree.magic_energy_drain", + magic_energy_regen_skill: "voxygen.element.icons.skilltree.magic_energy_regen", + magic_explosion_skill: "voxygen.element.icons.skilltree.magic_explosion", + magic_heal_skill: "voxygen.element.icons.skilltree.magic_heal", + magic_helicopter_skill: "voxygen.element.icons.skilltree.magic_helicopter", + magic_infinite_skill: "voxygen.element.icons.skilltree.magic_infinite", + magic_knockback_skill: "voxygen.element.icons.skilltree.magic_knockback", + magic_lifesteal_skill: "voxygen.element.icons.skilltree.magic_lifesteal", + magic_projectile_speed_skill: "voxygen.element.icons.skilltree.magic_projectile_speed", + magic_radius_skill: "voxygen.element.icons.skilltree.magic_radius", + magic_speed_skill: "voxygen.element.icons.skilltree.magic_speed", + + physical_amount_skill: "voxygen.element.icons.skilltree.physical_amount", + physical_combo_skill: "voxygen.element.icons.skilltree.physical_combo", + physical_cost_skill: "voxygen.element.icons.skilltree.physical_cost", + physical_damage_skill: "voxygen.element.icons.skilltree.physical_damage", + physical_distance_skill: "voxygen.element.icons.skilltree.physical_distance", + physical_energy_drain_skill: "voxygen.element.icons.skilltree.physical_energy_drain", + physical_energy_regen_skill: "voxygen.element.icons.skilltree.physical_energy_regen", + physical_explosion_skill: "voxygen.element.icons.skilltree.physical_explosion", + physical_heal_skill: "voxygen.element.icons.skilltree.physical_heal", + physical_helicopter_skill: "voxygen.element.icons.skilltree.physical_helicopter", + physical_infinite_skill: "voxygen.element.icons.skilltree.physical_infinite", + physical_knockback_skill: "voxygen.element.icons.skilltree.physical_knockback", + physical_lifesteal_skill: "voxygen.element.icons.skilltree.physical_lifesteal", + physical_projectile_speed_skill: "voxygen.element.icons.skilltree.physical_projectile_speed", + physical_radius_skill: "voxygen.element.icons.skilltree.physical_radius", + physical_speed_skill: "voxygen.element.icons.skilltree.physical_speed", + + utility_amount_skill: "voxygen.element.icons.skilltree.utility_amount", + utility_combo_skill: "voxygen.element.icons.skilltree.utility_combo", + utility_cost_skill: "voxygen.element.icons.skilltree.utility_cost", + utility_damage_skill: "voxygen.element.icons.skilltree.utility_damage", + utility_distance_skill: "voxygen.element.icons.skilltree.utility_distance", + utility_energy_drain_skill: "voxygen.element.icons.skilltree.utility_energy_drain", + utility_energy_regen_skill: "voxygen.element.icons.skilltree.utility_energy_regen", + utility_explosion_skill: "voxygen.element.icons.skilltree.utility_explosion", + utility_heal_skill: "voxygen.element.icons.skilltree.utility_heal", + utility_helicopter_skill: "voxygen.element.icons.skilltree.utility_helicopter", + utility_infinite_skill: "voxygen.element.icons.skilltree.utility_infinite", + utility_knockback_skill: "voxygen.element.icons.skilltree.utility_knockback", + utility_lifesteal_skill: "voxygen.element.icons.skilltree.utility_lifesteal", + utility_projectile_speed_skill: "voxygen.element.icons.skilltree.utility_projectile_speed", + utility_radius_skill: "voxygen.element.icons.skilltree.utility_radius", + utility_speed_skill: "voxygen.element.icons.skilltree.utility_speed", // Skillbar level_up: "voxygen.element.misc_bg.level_up",