Sceptre skill tree and migration.

This commit is contained in:
Sam 2021-03-06 21:16:35 -05:00
parent c13e84aff5
commit 16222948a3
15 changed files with 365 additions and 351 deletions

View File

@ -6,7 +6,6 @@ HealingBeam(
tick_rate: 2.0,
range: 25.0,
max_angle: 1.0,
lifesteal_eff: 0.0,
energy_cost: 50,
energy_cost: 75,
specifier: HealingBeam,
)

View File

@ -7,7 +7,7 @@ BasicBeam(
range: 25.0,
max_angle: 1.0,
lifesteal_eff: 0.15,
energy_regen: 25,
energy_regen: 50,
energy_drain: 0,
orientation_behavior: Normal,
specifier: LifestealBeam

View File

@ -73,7 +73,7 @@
primary: "common.abilities.sceptre.lifestealbeam",
secondary: "common.abilities.sceptre.healingbeam",
abilities: [
(None, "common.abilities.sceptre.wardingaura"),
(Some(Sceptre(UnlockAura)), "common.abilities.sceptre.wardingaura"),
],
),
Dagger: (

View File

@ -58,17 +58,17 @@
Staff(SKnockback): Some(2),
Staff(SRange): Some(2),
Staff(SCost): Some(2),
Sceptre(BHeal): Some(3),
Sceptre(BDamage): Some(2),
Sceptre(BRange): Some(2),
Sceptre(BLifesteal): Some(2),
Sceptre(BRegen): Some(2),
Sceptre(BCost): Some(2),
Sceptre(PHeal): Some(3),
Sceptre(PDamage): Some(2),
Sceptre(PRadius): Some(2),
Sceptre(PCost): Some(2),
Sceptre(PProjSpeed): Some(2),
Sceptre(LDamage): Some(3),
Sceptre(LRange): Some(2),
Sceptre(LLifesteal): Some(3),
Sceptre(LRegen): Some(2),
Sceptre(HHeal): Some(3),
Sceptre(HCost): Some(2),
Sceptre(HRange): Some(2),
Sceptre(AStrength): Some(2),
Sceptre(ADuration): Some(2),
Sceptre(ARange): Some(2),
Sceptre(ACost): Some(2),
Roll(Cost): Some(2),
Roll(Strength): Some(2),
Roll(Duration): Some(2),

View File

@ -1,68 +1,27 @@
({
Roll(Cost): {Roll(ImmuneMelee): None},
Roll(Strength): {Roll(ImmuneMelee): None},
Roll(Duration): {Roll(ImmuneMelee): None},
Sword(TsDamage): {Sword(TsCombo): None},
Sword(TsRegen): {Sword(TsCombo): None},
Sword(TsSpeed): {Sword(TsCombo): None},
Sword(DDrain): {Sword(DDamage): Some(1)},
Sword(DCost): {Sword(DDamage): Some(1)},
Sword(DSpeed): {Sword(DDamage): Some(1)},
Sword(DInfinite): {Sword(DDamage): Some(1)},
Sword(DScaling): {Sword(DDamage): Some(1)},
Sword(SDamage): {Sword(UnlockSpin): None},
Sword(SSpeed): {Sword(UnlockSpin): None},
Sword(SCost): {Sword(UnlockSpin): None},
Sword(SSpins): {Sword(UnlockSpin): None},
Axe(DsDamage): {Axe(DsCombo): None},
Axe(DsSpeed): {Axe(DsCombo): None},
Axe(DsRegen): {Axe(DsCombo): None},
Axe(SHelicopter): {Axe(SInfinite): None},
Axe(SDamage): {Axe(SInfinite): None},
Axe(SSpeed): {Axe(SInfinite): None},
Axe(SCost): {Axe(SInfinite): None},
Axe(LDamage): {Axe(UnlockLeap): None},
Axe(LKnockback): {Axe(UnlockLeap): None},
Axe(LCost): {Axe(UnlockLeap): None},
Axe(LDistance): {Axe(UnlockLeap): None},
Hammer(SsDamage): {Hammer(SsKnockback): Some(1)},
Hammer(SsRegen): {Hammer(SsKnockback): Some(1)},
Hammer(SsSpeed): {Hammer(SsKnockback): Some(1)},
Hammer(CDamage): {Hammer(CKnockback): Some(1)},
Hammer(CDrain): {Hammer(CKnockback): Some(1)},
Hammer(CSpeed): {Hammer(CKnockback): Some(1)},
Hammer(LDamage): {Hammer(UnlockLeap): None},
Hammer(LCost): {Hammer(UnlockLeap): None},
Hammer(LDistance): {Hammer(UnlockLeap): None},
Hammer(LKnockback): {Hammer(UnlockLeap): None},
Hammer(LRange): {Hammer(UnlockLeap): None},
Bow(BRegen): {Bow(BDamage): Some(1)},
Bow(CKnockback): {Bow(CDamage): Some(1)},
Bow(CProjSpeed): {Bow(CDamage): Some(1)},
Bow(CDrain): {Bow(CDamage): Some(1)},
Bow(CSpeed): {Bow(CDamage): Some(1)},
Bow(CMove): {Bow(CDamage): Some(1)},
Bow(RDamage): {Bow(UnlockRepeater): None},
Bow(RGlide): {Bow(UnlockRepeater): None},
Bow(RArrows): {Bow(UnlockRepeater): None},
Bow(RCost): {Bow(UnlockRepeater): None},
Staff(BDamage): {Staff(BExplosion): None},
Staff(BRegen): {Staff(BExplosion): None},
Staff(BRadius): {Staff(BExplosion): None},
Staff(FRange): {Staff(FDamage): Some(1)},
Staff(FDrain): {Staff(FDamage): Some(1)},
Staff(FVelocity): {Staff(FDamage): Some(1)},
Staff(SDamage): {Staff(UnlockShockwave): None},
Staff(SKnockback): {Staff(UnlockShockwave): None},
Staff(SRange): {Staff(UnlockShockwave): None},
Staff(SCost): {Staff(UnlockShockwave): None},
Sceptre(BDamage): {Sceptre(BHeal): Some(1)},
Sceptre(BRange): {Sceptre(BHeal): Some(1)},
Sceptre(BLifesteal): {Sceptre(BHeal): Some(1)},
Sceptre(BRegen): {Sceptre(BHeal): Some(1)},
Sceptre(BCost): {Sceptre(BHeal): Some(1)},
Sceptre(PDamage): {Sceptre(PHeal): Some(1)},
Sceptre(PRadius): {Sceptre(PHeal): Some(1)},
Sceptre(PCost): {Sceptre(PHeal): Some(1)},
Sceptre(PProjSpeed): {Sceptre(PHeal): Some(1)},
Sceptre(AStrength): {Sceptre(UnlockAura): None},
Sceptre(ADuration): {Sceptre(UnlockAura): None},
Sceptre(ARange): {Sceptre(UnlockAura): None},
Sceptre(ACost): {Sceptre(UnlockAura): None},
})

View File

@ -95,16 +95,17 @@
Staff(SCost),
],
Weapon(Sceptre): [
Sceptre(BHeal),
Sceptre(BDamage),
Sceptre(BRange),
Sceptre(BLifesteal),
Sceptre(BRegen),
Sceptre(BCost),
Sceptre(PHeal),
Sceptre(PDamage),
Sceptre(PRadius),
Sceptre(PCost),
Sceptre(PProjSpeed),
Sceptre(LDamage),
Sceptre(LRange),
Sceptre(LLifesteal),
Sceptre(LRegen),
Sceptre(HHeal),
Sceptre(HCost),
Sceptre(HRange),
Sceptre(UnlockAura),
Sceptre(AStrength),
Sceptre(ADuration),
Sceptre(ARange),
Sceptre(ACost),
],
})

View File

@ -18,7 +18,7 @@
"buff.title.invulnerability": "Invulnerability",
"buff.desc.invulnerability": "You cannot be damaged by any attack.",
"buff.title.protectingward": "Protecting Ward",
"buff.desc.protectingward": "You are protected, somewhat, from attacks."
"buff.desc.protectingward": "You are protected, somewhat, from attacks.",
// Debuffs
"buff.title.bleed": "Bleeding",
"buff.desc.bleed": "Inflicts regular damage.",

View File

@ -34,32 +34,34 @@
"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",
"hud.skill.sc_energy_cost" : "Decreases energy cost of bomb by 15%{SP}",
"hud.skill.sc_radius_title" : "Radius",
"hud.skill.sc_radius" : "Increases radius by 30%{SP}",
"hud.skill.sc_damage_title" : "Damage",
"hud.skill.sc_damage" : "Increases damage of bomb by 20%{SP}",
"hud.skill.sc_heal_title" : "Heal",
"hud.skill.sc_heal" : "Increases healing of bomb by 15%{SP}",
"hud.skill.sc_heal_cost_title" : "Heal Cost",
"hud.skill.sc_heal_cost" : "Use 10% less energy when healing{SP}",
"hud.skill.sc_lifesteal_efficiency_title" : "Lifesteal Efficiency",
"hud.skill.sc_lifesteal_efficiency" : "Thieve 25% more health{SP}",
"hud.skill.sc_range_title" : "Range",
"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",
"hud.skill.sc_beam_heal" : "Increased healing from the beam by 15%{SP}",
"hud.skill.sc_lifesteal_title": "Lifesteal Beam",
"hud.skill.sc_lifesteal": "Drain the life from your enemies",
"hud.skill.sc_lifesteal_damage_title": "Damage",
"hud.skill.sc_lifesteal_damage": "Deal 20% more damage{SP}",
"hud.skill.sc_lifesteal_range_title": "Range",
"hud.skill.sc_lifesteal_range": "Your beam reaches 25% further{SP}",
"hud.skill.sc_lifesteal_lifesteal_title": "Lifesteal",
"hud.skill.sc_lifesteal_lifesteal": "Convert an additional 30% of damage into health{SP}",
"hud.skill.sc_lifesteal_regen_title": "Stamina Regen",
"hud.skill.sc_lifesteal_regen": "Replenish your stamina by an additional 25%{SP}",
"hud.skill.sc_heal_title": "Healing Beam",
"hud.skill.sc_heal": "Heal your allies using the blood of your enemies",
"hud.skill.sc_heal_heal_title": "Heal",
"hud.skill.sc_heal_heal": "Increases the amount you heal others by 20%{SP}",
"hud.skill.sc_heal_cost_title": "Stamina Cost",
"hud.skill.sc_heal_cost": "Healing others requires 20% less stamina{SP}",
"hud.skill.sc_heal_range_title": "Range",
"hud.skill.sc_heal_range": "Your beam reachs 25% further{SP}",
"hud.skill.sc_wardaura_unlock_title": "Warding Aura Unlock",
"hud.skill.sc_wardaura_unlock": "Allows you to ward your allies against enemy attacks{SP}",
"hud.skill.sc_wardaura_strength_title": "Strength",
"hud.skill.sc_wardaura_strength": "The strength of your protection increases by 20%{SP}",
"hud.skill.sc_wardaura_duration_title": "Duration",
"hud.skill.sc_wardaura_duration": "The effects of your ward last 30% longer{SP}",
"hud.skill.sc_wardaura_range_title": "Radius",
"hud.skill.sc_wardaura_range": "Your ward reaches 25% further{SP}",
"hud.skill.sc_wardaura_cost_title": "Stamina Cost",
"hud.skill.sc_wardaura_cost": "Creating the ward requries 20% less energy{SP}",
// Staff
"hud.skill.st_shockwave_range_title" : "Shockwave Range",
"hud.skill.st_shockwave_range" : "throw things that used to be out of reach, range increased 20%{SP}",

View File

@ -997,73 +997,73 @@ impl CharacterAbility {
}
},
Some(ToolKind::Sceptre) => {
//use skills::SceptreSkill::*;
/*match self {
use skills::SceptreSkill::*;
match self {
BasicBeam {
ref mut base_hps,
ref mut base_dps,
ref mut lifesteal_eff,
ref mut damage,
ref mut range,
ref mut energy_regen,
ref mut energy_cost,
ref mut beam_duration,
ref mut lifesteal_eff,
ref mut energy_regen,
..
} => {
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BHeal)) {
*base_hps *= 1.15_f32.powi(level.into());
if let Ok(Some(level)) = skillset.skill_level(Sceptre(LDamage)) {
*damage *= 1.2_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BDamage)) {
*base_dps *= 1.25_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BRange)) {
let range_mod = 1.20_f32.powi(level.into());
if let Ok(Some(level)) = skillset.skill_level(Sceptre(LRange)) {
let range_mod = 1.25_f32.powi(level.into());
*range *= range_mod;
// Duration modified to keep velocity constant
*beam_duration *= range_mod;
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BLifesteal)) {
*lifesteal_eff *= 1.25_f32.powi(level.into());
if let Ok(Some(level)) = skillset.skill_level(Sceptre(LRegen)) {
*energy_regen *= 1.25_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BRegen)) {
*energy_regen *= 1.1_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BCost)) {
*energy_cost *= 0.9_f32.powi(level.into());
if let Ok(Some(level)) = skillset.skill_level(Sceptre(LLifesteal)) {
*lifesteal_eff *= 1.3_f32.powi(level.into());
}
},
BasicRanged {
HealingBeam {
ref mut heal,
ref mut energy_cost,
ref mut projectile,
ref mut projectile_speed,
ref mut range,
ref mut beam_duration,
..
} => {
{
let heal_level = skillset
.skill_level(Sceptre(PHeal))
.unwrap_or(None)
.unwrap_or(0);
let damage_level = skillset
.skill_level(Sceptre(PDamage))
.unwrap_or(None)
.unwrap_or(0);
let range_level = skillset
.skill_level(Sceptre(PRadius))
.unwrap_or(None)
.unwrap_or(0);
let heal = 1.15_f32.powi(heal_level.into());
let power = 1.2_f32.powi(damage_level.into());
let range = 1.3_f32.powi(range_level.into());
*projectile = projectile.modified_projectile(power, 1_f32, range);
if let Ok(Some(level)) = skillset.skill_level(Sceptre(HHeal)) {
*heal *= 1.2_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(PCost)) {
*energy_cost *= 0.85_f32.powi(level.into());
if let Ok(Some(level)) = skillset.skill_level(Sceptre(HRange)) {
let range_mod = 1.25_f32.powi(level.into());
*range *= range_mod;
// Duration modified to keep velocity constant
*beam_duration *= range_mod;
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(PProjSpeed)) {
*projectile_speed *= 1.25_f32.powi(level.into());
if let Ok(Some(level)) = skillset.skill_level(Sceptre(HCost)) {
*energy_cost *= 0.8_f32.powi(level.into());
}
},
BasicAura {
ref mut aura,
ref mut range,
ref mut energy_cost,
..
} => {
if let Ok(Some(level)) = skillset.skill_level(Sceptre(AStrength)) {
aura.strength *= 1.2_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(ADuration)) {
aura.duration.map(|dur| dur * 1.3_f32.powi(level.into()));
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(ARange)) {
*range *= 1.25_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(ACost)) {
*energy_cost *= 0.8_f32.powi(level.into());
}
},
_ => {},
}*/
}
},
None => {
use skills::RollSkill::*;

View File

@ -219,19 +219,21 @@ pub enum StaffSkill {
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
pub enum SceptreSkill {
// Beam upgrades
BHeal,
BDamage,
BRange,
BLifesteal,
BRegen,
BCost,
// Projectile upgrades
PHeal,
PDamage,
PRadius,
PCost,
PProjSpeed,
// Lifesteal beam upgrades
LDamage,
LRange,
LLifesteal,
LRegen,
// Healing beam upgrades
HHeal,
HCost,
HRange,
// Warding aura upgrades
UnlockAura,
AStrength,
ADuration,
ARange,
ACost,
}
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]

View File

@ -0,0 +1 @@
-- This file should undo anything in `up.sql`

View File

@ -0,0 +1,6 @@
-- Resets sceptre skill tree by deleting scetpre skills and setting available skill points to earned skill points
-- Deletes all sceptre skills, does not delete unlock sceptre skill
DELETE FROM skill WHERE skill LIKE 'Sceptre%';
-- Resets available skill points to earned skill points for sceptre skill tree
UPDATE skill_group
SET available_sp = earned_sp WHERE skill_group_kind = 'Weapon Sceptre';

View File

@ -118,17 +118,18 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String {
Staff(StaffSkill::SKnockback) => "Staff SKnockback",
Staff(StaffSkill::SRange) => "Staff SRange",
Staff(StaffSkill::SCost) => "Staff SCost",
Sceptre(SceptreSkill::BHeal) => "Sceptre BHeal",
Sceptre(SceptreSkill::BDamage) => "Sceptre BDamage",
Sceptre(SceptreSkill::BRange) => "Sceptre BRange",
Sceptre(SceptreSkill::BLifesteal) => "Sceptre BLifesteal",
Sceptre(SceptreSkill::BRegen) => "Sceptre BRegen",
Sceptre(SceptreSkill::BCost) => "Sceptre BCost",
Sceptre(SceptreSkill::PHeal) => "Sceptre PHeal",
Sceptre(SceptreSkill::PDamage) => "Sceptre PDamage",
Sceptre(SceptreSkill::PRadius) => "Sceptre PRadius",
Sceptre(SceptreSkill::PCost) => "Sceptre PCost",
Sceptre(SceptreSkill::PProjSpeed) => "Sceptre PProjSpeed",
Sceptre(SceptreSkill::LDamage) => "Sceptre LDamage",
Sceptre(SceptreSkill::LRange) => "Sceptre LRange",
Sceptre(SceptreSkill::LLifesteal) => "Sceptre LLifesteal",
Sceptre(SceptreSkill::LRegen) => "Sceptre LRegen",
Sceptre(SceptreSkill::HHeal) => "Sceptre HHeal",
Sceptre(SceptreSkill::HCost) => "Sceptre HCost",
Sceptre(SceptreSkill::HRange) => "Sceptre HRange",
Sceptre(SceptreSkill::UnlockAura) => "Sceptre UnlockAura",
Sceptre(SceptreSkill::AStrength) => "Sceptre AStrength",
Sceptre(SceptreSkill::ADuration) => "Sceptre ADuration",
Sceptre(SceptreSkill::ARange) => "Sceptre ARange",
Sceptre(SceptreSkill::ACost) => "Sceptre ACost",
Roll(RollSkill::ImmuneMelee) => "Roll ImmuneMelee",
Roll(RollSkill::Cost) => "Roll Cost",
Roll(RollSkill::Strength) => "Roll Strength",
@ -240,17 +241,18 @@ pub fn db_string_to_skill(skill_string: &str) -> comp::skills::Skill {
"Staff SKnockback" => Staff(StaffSkill::SKnockback),
"Staff SRange" => Staff(StaffSkill::SRange),
"Staff SCost" => Staff(StaffSkill::SCost),
"Sceptre BHeal" => Sceptre(SceptreSkill::BHeal),
"Sceptre BDamage" => Sceptre(SceptreSkill::BDamage),
"Sceptre BRange" => Sceptre(SceptreSkill::BRange),
"Sceptre BLifesteal" => Sceptre(SceptreSkill::BLifesteal),
"Sceptre BRegen" => Sceptre(SceptreSkill::BRegen),
"Sceptre BCost" => Sceptre(SceptreSkill::BCost),
"Sceptre PHeal" => Sceptre(SceptreSkill::PHeal),
"Sceptre PDamage" => Sceptre(SceptreSkill::PDamage),
"Sceptre PRadius" => Sceptre(SceptreSkill::PRadius),
"Sceptre PCost" => Sceptre(SceptreSkill::PCost),
"Sceptre PProjSpeed" => Sceptre(SceptreSkill::PProjSpeed),
"Sceptre LDamage" => Sceptre(SceptreSkill::LDamage),
"Sceptre LRange" => Sceptre(SceptreSkill::LRange),
"Sceptre LLifesteal" => Sceptre(SceptreSkill::LLifesteal),
"Sceptre LRegen" => Sceptre(SceptreSkill::LRegen),
"Sceptre HHeal" => Sceptre(SceptreSkill::HHeal),
"Sceptre HCost" => Sceptre(SceptreSkill::HCost),
"Sceptre HRange" => Sceptre(SceptreSkill::HRange),
"Sceptre UnlockAura" => Sceptre(SceptreSkill::UnlockAura),
"Sceptre AStrength" => Sceptre(SceptreSkill::AStrength),
"Sceptre ADuration" => Sceptre(SceptreSkill::ADuration),
"Sceptre ARange" => Sceptre(SceptreSkill::ARange),
"Sceptre ACost" => Sceptre(SceptreSkill::ACost),
"Roll ImmuneMelee" => Roll(RollSkill::ImmuneMelee),
"Roll Cost" => Roll(RollSkill::Cost),
"Roll Strength" => Roll(RollSkill::Strength),

View File

@ -135,19 +135,20 @@ widget_ids! {
skill_staff_shockwave_3,
skill_staff_shockwave_4,
sceptre_render,
skill_sceptre_beam_0,
skill_sceptre_beam_1,
skill_sceptre_beam_2,
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,
skill_sceptre_lifesteal_0,
skill_sceptre_lifesteal_1,
skill_sceptre_lifesteal_2,
skill_sceptre_lifesteal_3,
skill_sceptre_lifesteal_4,
skill_sceptre_heal_0,
skill_sceptre_heal_1,
skill_sceptre_heal_2,
skill_sceptre_heal_3,
skill_sceptre_aura_0,
skill_sceptre_aura_1,
skill_sceptre_aura_2,
skill_sceptre_aura_3,
skill_sceptre_aura_4,
general_combat_render_0,
general_combat_render_1,
skill_general_stat_0,
@ -535,7 +536,7 @@ impl<'a> Widget for Diary<'a> {
SelectedSkillTree::Weapon(ToolKind::Hammer) => 5,
SelectedSkillTree::Weapon(ToolKind::Bow) => 3,
SelectedSkillTree::Weapon(ToolKind::Staff) => 5,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 7,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5,
_ => 0,
};
let skills_top_r = match sel_tab {
@ -545,7 +546,7 @@ impl<'a> Widget for Diary<'a> {
SelectedSkillTree::Weapon(ToolKind::Hammer) => 5,
SelectedSkillTree::Weapon(ToolKind::Bow) => 7,
SelectedSkillTree::Weapon(ToolKind::Staff) => 5,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 6,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 4,
_ => 0,
};
let skills_bot_l = match sel_tab {
@ -555,6 +556,7 @@ impl<'a> Widget for Diary<'a> {
SelectedSkillTree::Weapon(ToolKind::Hammer) => 6,
SelectedSkillTree::Weapon(ToolKind::Bow) => 5,
SelectedSkillTree::Weapon(ToolKind::Staff) => 5,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5,
_ => 0,
};
let skills_bot_r = match sel_tab {
@ -3249,20 +3251,20 @@ impl<'a> Widget for Diary<'a> {
// 5 1 6
// 3 0 4
// 8 2 7
Button::image(self.imgs.skill_sceptre_heal)
Button::image(self.imgs.skill_sceptre_lifesteal)
.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"),
&self.localized_strings.get("hud.skill.sc_lifesteal_title"),
&self.localized_strings.get("hud.skill.sc_lifesteal"),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_beam_0, ui);
let skill = Skill::Sceptre(BHeal);
.set(state.skill_sceptre_lifesteal_0, ui);
let skill = Skill::Sceptre(LDamage);
if create_skill_button(
self.imgs.heal_heal_skill,
self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[1],
&self.stats.skill_set,
skill,
@ -3271,9 +3273,11 @@ impl<'a> Widget for Diary<'a> {
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_beam_heal_title"),
&self
.localized_strings
.get("hud.skill.sc_lifesteal_damage_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_beam_heal"),
&self.localized_strings.get("hud.skill.sc_lifesteal_damage"),
skill,
&self.stats.skill_set,
&self.localized_strings,
@ -3281,14 +3285,14 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_beam_1, ui)
.set(state.skill_sceptre_lifesteal_1, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(BDamage);
let skill = Skill::Sceptre(LRange);
if create_skill_button(
self.imgs.heal_damage_skill,
self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[2],
&self.stats.skill_set,
skill,
@ -3297,9 +3301,11 @@ impl<'a> Widget for Diary<'a> {
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_beam_damage_title"),
&self
.localized_strings
.get("hud.skill.sc_lifesteal_range_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_beam_damage"),
&self.localized_strings.get("hud.skill.sc_lifesteal_range"),
skill,
&self.stats.skill_set,
&self.localized_strings,
@ -3307,14 +3313,14 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_beam_2, ui)
.set(state.skill_sceptre_lifesteal_2, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(BRegen);
let skill = Skill::Sceptre(LLifesteal);
if create_skill_button(
self.imgs.heal_energy_regen_skill,
self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[3],
&self.stats.skill_set,
skill,
@ -3325,9 +3331,11 @@ impl<'a> Widget for Diary<'a> {
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_energy_regen_title"),
.get("hud.skill.sc_lifesteal_lifesteal_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_energy_regen"),
&self
.localized_strings
.get("hud.skill.sc_lifesteal_lifesteal"),
skill,
&self.stats.skill_set,
&self.localized_strings,
@ -3335,55 +3343,27 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_beam_3, ui)
.set(state.skill_sceptre_lifesteal_3, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(BRange);
let skill = Skill::Sceptre(LRegen);
if create_skill_button(
self.imgs.heal_radius_skill,
self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[4],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_range_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_range"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.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_lifesteal_skill,
state.skills_top_l[5],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_lifesteal_efficiency_title"),
.get("hud.skill.sc_lifesteal_regen_title"),
&add_sp_cost_tooltip(
&self
.localized_strings
.get("hud.skill.sc_lifesteal_efficiency"),
&self.localized_strings.get("hud.skill.sc_lifesteal_regen"),
skill,
&self.stats.skill_set,
&self.localized_strings,
@ -3391,15 +3371,53 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_beam_5, ui)
.set(state.skill_sceptre_lifesteal_4, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(BCost);
// Top right skills
Button::image(self.imgs.skill_sceptre_heal)
.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_heal_title"),
&self.localized_strings.get("hud.skill.sc_heal"),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_heal_0, ui);
let skill = Skill::Sceptre(HHeal);
if create_skill_button(
self.imgs.heal_cost_skill,
state.skills_top_l[6],
self.imgs.skill_sceptre_heal,
state.skills_top_r[1],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_heal_heal_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_heal_heal"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_heal_1, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(HCost);
if create_skill_button(
self.imgs.skill_sceptre_heal,
state.skills_top_r[2],
&self.stats.skill_set,
skill,
self.fonts,
@ -3417,78 +3435,14 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_beam_6, ui)
.set(state.skill_sceptre_heal_2, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
Button::image(self.imgs.skill_sceptre_heal)
.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);
let skill = Skill::Sceptre(HRange);
if create_skill_button(
self.imgs.heal_heal_skill,
state.skills_top_r[1],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_heal_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_heal"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.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_damage_skill,
state.skills_top_r[2],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_damage_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_damage"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.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_radius_skill,
self.imgs.skill_sceptre_heal,
state.skills_top_r[3],
&self.stats.skill_set,
skill,
@ -3497,9 +3451,9 @@ impl<'a> Widget for Diary<'a> {
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_radius_title"),
&self.localized_strings.get("hud.skill.sc_heal_range_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_radius"),
&self.localized_strings.get("hud.skill.sc_heal_range"),
skill,
&self.stats.skill_set,
&self.localized_strings,
@ -3507,41 +3461,16 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_bomb_3, ui)
.set(state.skill_sceptre_heal_3, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(PCost);
// Bottom left skills
let skill = Skill::Sceptre(UnlockAura);
if create_skill_button(
self.imgs.heal_cost_skill,
state.skills_top_r[4],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_energy_cost_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_energy_cost"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.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_projectile_speed_skill,
state.skills_top_r[5],
self.imgs.skill_sceptre_aura,
state.skills_bot_l[0],
&self.stats.skill_set,
skill,
self.fonts,
@ -3551,9 +3480,9 @@ impl<'a> Widget for Diary<'a> {
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_projectile_speed_title"),
.get("hud.skill.sc_wardaura_unlock_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_projectile_speed"),
&self.localized_strings.get("hud.skill.sc_wardaura_unlock"),
skill,
&self.stats.skill_set,
&self.localized_strings,
@ -3561,7 +3490,119 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_bomb_5, ui)
.set(state.skill_sceptre_aura_0, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(AStrength);
if create_skill_button(
self.imgs.skill_sceptre_aura,
state.skills_bot_l[1],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_wardaura_strength_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_wardaura_strength"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_aura_1, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(ADuration);
if create_skill_button(
self.imgs.skill_sceptre_aura,
state.skills_bot_l[2],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_wardaura_duration_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_wardaura_duration"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_aura_2, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(ARange);
if create_skill_button(
self.imgs.skill_sceptre_aura,
state.skills_bot_l[3],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_wardaura_range_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_wardaura_range"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_aura_3, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));
};
let skill = Skill::Sceptre(ACost);
if create_skill_button(
self.imgs.skill_sceptre_aura,
state.skills_bot_l[4],
&self.stats.skill_set,
skill,
self.fonts,
&get_skill_label(skill, &self.stats.skill_set),
)
.with_tooltip(
self.tooltip_manager,
&self
.localized_strings
.get("hud.skill.sc_wardaura_cost_title"),
&add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_wardaura_cost"),
skill,
&self.stats.skill_set,
&self.localized_strings,
),
&diary_tooltip,
TEXT_COLOR,
)
.set(state.skill_sceptre_aura_4, ui)
.was_clicked()
{
events.push(Event::UnlockSkill(skill));

View File

@ -452,6 +452,7 @@ image_ids! {
hammerleap: "voxygen.element.icons.skill_hammerleap",
skill_axe_leap_slash: "voxygen.element.icons.skill_axe_leap_slash",
skill_bow_jump_burst: "voxygen.element.icons.skill_bow_jump_burst",
// Do not merge until icon for this
skill_sceptre_aura: "voxygen.element.icons.heal_bomb",
missing_icon: "voxygen.element.icons.missing_icon_grey",