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, tick_rate: 2.0,
range: 25.0, range: 25.0,
max_angle: 1.0, max_angle: 1.0,
lifesteal_eff: 0.0, energy_cost: 75,
energy_cost: 50,
specifier: HealingBeam, specifier: HealingBeam,
) )

View File

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

View File

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

View File

@ -58,17 +58,17 @@
Staff(SKnockback): Some(2), Staff(SKnockback): Some(2),
Staff(SRange): Some(2), Staff(SRange): Some(2),
Staff(SCost): Some(2), Staff(SCost): Some(2),
Sceptre(BHeal): Some(3), Sceptre(LDamage): Some(3),
Sceptre(BDamage): Some(2), Sceptre(LRange): Some(2),
Sceptre(BRange): Some(2), Sceptre(LLifesteal): Some(3),
Sceptre(BLifesteal): Some(2), Sceptre(LRegen): Some(2),
Sceptre(BRegen): Some(2), Sceptre(HHeal): Some(3),
Sceptre(BCost): Some(2), Sceptre(HCost): Some(2),
Sceptre(PHeal): Some(3), Sceptre(HRange): Some(2),
Sceptre(PDamage): Some(2), Sceptre(AStrength): Some(2),
Sceptre(PRadius): Some(2), Sceptre(ADuration): Some(2),
Sceptre(PCost): Some(2), Sceptre(ARange): Some(2),
Sceptre(PProjSpeed): Some(2), Sceptre(ACost): Some(2),
Roll(Cost): Some(2), Roll(Cost): Some(2),
Roll(Strength): Some(2), Roll(Strength): Some(2),
Roll(Duration): 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(SDamage): {Sword(UnlockSpin): None},
Sword(SSpeed): {Sword(UnlockSpin): None}, Sword(SSpeed): {Sword(UnlockSpin): None},
Sword(SCost): {Sword(UnlockSpin): None}, Sword(SCost): {Sword(UnlockSpin): None},
Sword(SSpins): {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(LDamage): {Axe(UnlockLeap): None},
Axe(LKnockback): {Axe(UnlockLeap): None}, Axe(LKnockback): {Axe(UnlockLeap): None},
Axe(LCost): {Axe(UnlockLeap): None}, Axe(LCost): {Axe(UnlockLeap): None},
Axe(LDistance): {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(LDamage): {Hammer(UnlockLeap): None},
Hammer(LCost): {Hammer(UnlockLeap): None}, Hammer(LCost): {Hammer(UnlockLeap): None},
Hammer(LDistance): {Hammer(UnlockLeap): None}, Hammer(LDistance): {Hammer(UnlockLeap): None},
Hammer(LKnockback): {Hammer(UnlockLeap): None}, Hammer(LKnockback): {Hammer(UnlockLeap): None},
Hammer(LRange): {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(RDamage): {Bow(UnlockRepeater): None},
Bow(RGlide): {Bow(UnlockRepeater): None}, Bow(RGlide): {Bow(UnlockRepeater): None},
Bow(RArrows): {Bow(UnlockRepeater): None}, Bow(RArrows): {Bow(UnlockRepeater): None},
Bow(RCost): {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(SDamage): {Staff(UnlockShockwave): None},
Staff(SKnockback): {Staff(UnlockShockwave): None}, Staff(SKnockback): {Staff(UnlockShockwave): None},
Staff(SRange): {Staff(UnlockShockwave): None}, Staff(SRange): {Staff(UnlockShockwave): None},
Staff(SCost): {Staff(UnlockShockwave): None}, Staff(SCost): {Staff(UnlockShockwave): None},
Sceptre(BDamage): {Sceptre(BHeal): Some(1)}, Sceptre(AStrength): {Sceptre(UnlockAura): None},
Sceptre(BRange): {Sceptre(BHeal): Some(1)}, Sceptre(ADuration): {Sceptre(UnlockAura): None},
Sceptre(BLifesteal): {Sceptre(BHeal): Some(1)}, Sceptre(ARange): {Sceptre(UnlockAura): None},
Sceptre(BRegen): {Sceptre(BHeal): Some(1)}, Sceptre(ACost): {Sceptre(UnlockAura): None},
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)},
}) })

View File

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

View File

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

View File

@ -34,32 +34,34 @@
"hud.skill.roll_dur_title": "Rolling Duration", "hud.skill.roll_dur_title": "Rolling Duration",
"hud.skill.roll_dur": "Roll for 20% more time{SP}", "hud.skill.roll_dur": "Roll for 20% more time{SP}",
// Sceptre // Sceptre
"hud.skill.sc_healbomb_title" : "Heal Bomb", "hud.skill.sc_lifesteal_title": "Lifesteal Beam",
"hud.skill.sc_healbomb" : "Killing with kindness", "hud.skill.sc_lifesteal": "Drain the life from your enemies",
"hud.skill.sc_projectile_speed_title": "Projectile Speed", "hud.skill.sc_lifesteal_damage_title": "Damage",
"hud.skill.sc_projectile_speed": "Projectile threw 25% faster{SP}", "hud.skill.sc_lifesteal_damage": "Deal 20% more damage{SP}",
"hud.skill.sc_energy_cost_title" : "Energy Cost", "hud.skill.sc_lifesteal_range_title": "Range",
"hud.skill.sc_energy_cost" : "Decreases energy cost of bomb by 15%{SP}", "hud.skill.sc_lifesteal_range": "Your beam reaches 25% further{SP}",
"hud.skill.sc_radius_title" : "Radius", "hud.skill.sc_lifesteal_lifesteal_title": "Lifesteal",
"hud.skill.sc_radius" : "Increases radius by 30%{SP}", "hud.skill.sc_lifesteal_lifesteal": "Convert an additional 30% of damage into health{SP}",
"hud.skill.sc_damage_title" : "Damage", "hud.skill.sc_lifesteal_regen_title": "Stamina Regen",
"hud.skill.sc_damage" : "Increases damage of bomb by 20%{SP}", "hud.skill.sc_lifesteal_regen": "Replenish your stamina by an additional 25%{SP}",
"hud.skill.sc_heal_title" : "Heal", "hud.skill.sc_heal_title": "Healing Beam",
"hud.skill.sc_heal" : "Increases healing of bomb by 15%{SP}", "hud.skill.sc_heal": "Heal your allies using the blood of your enemies",
"hud.skill.sc_heal_cost_title" : "Heal Cost", "hud.skill.sc_heal_heal_title": "Heal",
"hud.skill.sc_heal_cost" : "Use 10% less energy when healing{SP}", "hud.skill.sc_heal_heal": "Increases the amount you heal others by 20%{SP}",
"hud.skill.sc_lifesteal_efficiency_title" : "Lifesteal Efficiency", "hud.skill.sc_heal_cost_title": "Stamina Cost",
"hud.skill.sc_lifesteal_efficiency" : "Thieve 25% more health{SP}", "hud.skill.sc_heal_cost": "Healing others requires 20% less stamina{SP}",
"hud.skill.sc_range_title" : "Range", "hud.skill.sc_heal_range_title": "Range",
"hud.skill.sc_range" : "Longer beam, by 20%{SP}", "hud.skill.sc_heal_range": "Your beam reachs 25% further{SP}",
"hud.skill.sc_energy_regen_title" : "Energy Regen", "hud.skill.sc_wardaura_unlock_title": "Warding Aura Unlock",
"hud.skill.sc_energy_regen" : "Increases energy regen from dealing damage by 10%{SP}", "hud.skill.sc_wardaura_unlock": "Allows you to ward your allies against enemy attacks{SP}",
"hud.skill.sc_beam_title" : "Heal Beam", "hud.skill.sc_wardaura_strength_title": "Strength",
"hud.skill.sc_beam" : "Heal your party, but unheal the enemies", "hud.skill.sc_wardaura_strength": "The strength of your protection increases by 20%{SP}",
"hud.skill.sc_beam_damage_title" : "Beam Damage", "hud.skill.sc_wardaura_duration_title": "Duration",
"hud.skill.sc_beam_damage" : "Increases damage from the beam by 25%{SP}", "hud.skill.sc_wardaura_duration": "The effects of your ward last 30% longer{SP}",
"hud.skill.sc_beam_heal_title" : "Beam Heal", "hud.skill.sc_wardaura_range_title": "Radius",
"hud.skill.sc_beam_heal" : "Increased healing from the beam by 15%{SP}", "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 // Staff
"hud.skill.st_shockwave_range_title" : "Shockwave Range", "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}", "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) => { Some(ToolKind::Sceptre) => {
//use skills::SceptreSkill::*; use skills::SceptreSkill::*;
/*match self { match self {
BasicBeam { BasicBeam {
ref mut base_hps, ref mut damage,
ref mut base_dps,
ref mut lifesteal_eff,
ref mut range, ref mut range,
ref mut energy_regen,
ref mut energy_cost,
ref mut beam_duration, ref mut beam_duration,
ref mut lifesteal_eff,
ref mut energy_regen,
.. ..
} => { } => {
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BHeal)) { if let Ok(Some(level)) = skillset.skill_level(Sceptre(LDamage)) {
*base_hps *= 1.15_f32.powi(level.into()); *damage *= 1.2_f32.powi(level.into());
} }
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BDamage)) { if let Ok(Some(level)) = skillset.skill_level(Sceptre(LRange)) {
*base_dps *= 1.25_f32.powi(level.into()); let range_mod = 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());
*range *= range_mod; *range *= range_mod;
// Duration modified to keep velocity constant // Duration modified to keep velocity constant
*beam_duration *= range_mod; *beam_duration *= range_mod;
} }
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BLifesteal)) { if let Ok(Some(level)) = skillset.skill_level(Sceptre(LRegen)) {
*lifesteal_eff *= 1.25_f32.powi(level.into()); *energy_regen *= 1.25_f32.powi(level.into());
} }
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BRegen)) { if let Ok(Some(level)) = skillset.skill_level(Sceptre(LLifesteal)) {
*energy_regen *= 1.1_f32.powi(level.into()); *lifesteal_eff *= 1.3_f32.powi(level.into());
}
if let Ok(Some(level)) = skillset.skill_level(Sceptre(BCost)) {
*energy_cost *= 0.9_f32.powi(level.into());
} }
}, },
BasicRanged { HealingBeam {
ref mut heal,
ref mut energy_cost, ref mut energy_cost,
ref mut projectile, ref mut range,
ref mut projectile_speed, ref mut beam_duration,
.. ..
} => { } => {
{ if let Ok(Some(level)) = skillset.skill_level(Sceptre(HHeal)) {
let heal_level = skillset *heal *= 1.2_f32.powi(level.into());
.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(PCost)) { if let Ok(Some(level)) = skillset.skill_level(Sceptre(HRange)) {
*energy_cost *= 0.85_f32.powi(level.into()); 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)) { if let Ok(Some(level)) = skillset.skill_level(Sceptre(HCost)) {
*projectile_speed *= 1.25_f32.powi(level.into()); *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 => { None => {
use skills::RollSkill::*; use skills::RollSkill::*;

View File

@ -219,19 +219,21 @@ pub enum StaffSkill {
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)] #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
pub enum SceptreSkill { pub enum SceptreSkill {
// Beam upgrades // Lifesteal beam upgrades
BHeal, LDamage,
BDamage, LRange,
BRange, LLifesteal,
BLifesteal, LRegen,
BRegen, // Healing beam upgrades
BCost, HHeal,
// Projectile upgrades HCost,
PHeal, HRange,
PDamage, // Warding aura upgrades
PRadius, UnlockAura,
PCost, AStrength,
PProjSpeed, ADuration,
ARange,
ACost,
} }
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)] #[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::SKnockback) => "Staff SKnockback",
Staff(StaffSkill::SRange) => "Staff SRange", Staff(StaffSkill::SRange) => "Staff SRange",
Staff(StaffSkill::SCost) => "Staff SCost", Staff(StaffSkill::SCost) => "Staff SCost",
Sceptre(SceptreSkill::BHeal) => "Sceptre BHeal", Sceptre(SceptreSkill::LDamage) => "Sceptre LDamage",
Sceptre(SceptreSkill::BDamage) => "Sceptre BDamage", Sceptre(SceptreSkill::LRange) => "Sceptre LRange",
Sceptre(SceptreSkill::BRange) => "Sceptre BRange", Sceptre(SceptreSkill::LLifesteal) => "Sceptre LLifesteal",
Sceptre(SceptreSkill::BLifesteal) => "Sceptre BLifesteal", Sceptre(SceptreSkill::LRegen) => "Sceptre LRegen",
Sceptre(SceptreSkill::BRegen) => "Sceptre BRegen", Sceptre(SceptreSkill::HHeal) => "Sceptre HHeal",
Sceptre(SceptreSkill::BCost) => "Sceptre BCost", Sceptre(SceptreSkill::HCost) => "Sceptre HCost",
Sceptre(SceptreSkill::PHeal) => "Sceptre PHeal", Sceptre(SceptreSkill::HRange) => "Sceptre HRange",
Sceptre(SceptreSkill::PDamage) => "Sceptre PDamage", Sceptre(SceptreSkill::UnlockAura) => "Sceptre UnlockAura",
Sceptre(SceptreSkill::PRadius) => "Sceptre PRadius", Sceptre(SceptreSkill::AStrength) => "Sceptre AStrength",
Sceptre(SceptreSkill::PCost) => "Sceptre PCost", Sceptre(SceptreSkill::ADuration) => "Sceptre ADuration",
Sceptre(SceptreSkill::PProjSpeed) => "Sceptre PProjSpeed", Sceptre(SceptreSkill::ARange) => "Sceptre ARange",
Sceptre(SceptreSkill::ACost) => "Sceptre ACost",
Roll(RollSkill::ImmuneMelee) => "Roll ImmuneMelee", Roll(RollSkill::ImmuneMelee) => "Roll ImmuneMelee",
Roll(RollSkill::Cost) => "Roll Cost", Roll(RollSkill::Cost) => "Roll Cost",
Roll(RollSkill::Strength) => "Roll Strength", 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 SKnockback" => Staff(StaffSkill::SKnockback),
"Staff SRange" => Staff(StaffSkill::SRange), "Staff SRange" => Staff(StaffSkill::SRange),
"Staff SCost" => Staff(StaffSkill::SCost), "Staff SCost" => Staff(StaffSkill::SCost),
"Sceptre BHeal" => Sceptre(SceptreSkill::BHeal), "Sceptre LDamage" => Sceptre(SceptreSkill::LDamage),
"Sceptre BDamage" => Sceptre(SceptreSkill::BDamage), "Sceptre LRange" => Sceptre(SceptreSkill::LRange),
"Sceptre BRange" => Sceptre(SceptreSkill::BRange), "Sceptre LLifesteal" => Sceptre(SceptreSkill::LLifesteal),
"Sceptre BLifesteal" => Sceptre(SceptreSkill::BLifesteal), "Sceptre LRegen" => Sceptre(SceptreSkill::LRegen),
"Sceptre BRegen" => Sceptre(SceptreSkill::BRegen), "Sceptre HHeal" => Sceptre(SceptreSkill::HHeal),
"Sceptre BCost" => Sceptre(SceptreSkill::BCost), "Sceptre HCost" => Sceptre(SceptreSkill::HCost),
"Sceptre PHeal" => Sceptre(SceptreSkill::PHeal), "Sceptre HRange" => Sceptre(SceptreSkill::HRange),
"Sceptre PDamage" => Sceptre(SceptreSkill::PDamage), "Sceptre UnlockAura" => Sceptre(SceptreSkill::UnlockAura),
"Sceptre PRadius" => Sceptre(SceptreSkill::PRadius), "Sceptre AStrength" => Sceptre(SceptreSkill::AStrength),
"Sceptre PCost" => Sceptre(SceptreSkill::PCost), "Sceptre ADuration" => Sceptre(SceptreSkill::ADuration),
"Sceptre PProjSpeed" => Sceptre(SceptreSkill::PProjSpeed), "Sceptre ARange" => Sceptre(SceptreSkill::ARange),
"Sceptre ACost" => Sceptre(SceptreSkill::ACost),
"Roll ImmuneMelee" => Roll(RollSkill::ImmuneMelee), "Roll ImmuneMelee" => Roll(RollSkill::ImmuneMelee),
"Roll Cost" => Roll(RollSkill::Cost), "Roll Cost" => Roll(RollSkill::Cost),
"Roll Strength" => Roll(RollSkill::Strength), "Roll Strength" => Roll(RollSkill::Strength),

View File

@ -135,19 +135,20 @@ widget_ids! {
skill_staff_shockwave_3, skill_staff_shockwave_3,
skill_staff_shockwave_4, skill_staff_shockwave_4,
sceptre_render, sceptre_render,
skill_sceptre_beam_0, skill_sceptre_lifesteal_0,
skill_sceptre_beam_1, skill_sceptre_lifesteal_1,
skill_sceptre_beam_2, skill_sceptre_lifesteal_2,
skill_sceptre_beam_3, skill_sceptre_lifesteal_3,
skill_sceptre_beam_4, skill_sceptre_lifesteal_4,
skill_sceptre_beam_5, skill_sceptre_heal_0,
skill_sceptre_beam_6, skill_sceptre_heal_1,
skill_sceptre_bomb_0, skill_sceptre_heal_2,
skill_sceptre_bomb_1, skill_sceptre_heal_3,
skill_sceptre_bomb_2, skill_sceptre_aura_0,
skill_sceptre_bomb_3, skill_sceptre_aura_1,
skill_sceptre_bomb_4, skill_sceptre_aura_2,
skill_sceptre_bomb_5, skill_sceptre_aura_3,
skill_sceptre_aura_4,
general_combat_render_0, general_combat_render_0,
general_combat_render_1, general_combat_render_1,
skill_general_stat_0, skill_general_stat_0,
@ -535,7 +536,7 @@ impl<'a> Widget for Diary<'a> {
SelectedSkillTree::Weapon(ToolKind::Hammer) => 5, SelectedSkillTree::Weapon(ToolKind::Hammer) => 5,
SelectedSkillTree::Weapon(ToolKind::Bow) => 3, SelectedSkillTree::Weapon(ToolKind::Bow) => 3,
SelectedSkillTree::Weapon(ToolKind::Staff) => 5, SelectedSkillTree::Weapon(ToolKind::Staff) => 5,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 7, SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5,
_ => 0, _ => 0,
}; };
let skills_top_r = match sel_tab { 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::Hammer) => 5,
SelectedSkillTree::Weapon(ToolKind::Bow) => 7, SelectedSkillTree::Weapon(ToolKind::Bow) => 7,
SelectedSkillTree::Weapon(ToolKind::Staff) => 5, SelectedSkillTree::Weapon(ToolKind::Staff) => 5,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 6, SelectedSkillTree::Weapon(ToolKind::Sceptre) => 4,
_ => 0, _ => 0,
}; };
let skills_bot_l = match sel_tab { 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::Hammer) => 6,
SelectedSkillTree::Weapon(ToolKind::Bow) => 5, SelectedSkillTree::Weapon(ToolKind::Bow) => 5,
SelectedSkillTree::Weapon(ToolKind::Staff) => 5, SelectedSkillTree::Weapon(ToolKind::Staff) => 5,
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5,
_ => 0, _ => 0,
}; };
let skills_bot_r = match sel_tab { let skills_bot_r = match sel_tab {
@ -3249,20 +3251,20 @@ impl<'a> Widget for Diary<'a> {
// 5 1 6 // 5 1 6
// 3 0 4 // 3 0 4
// 8 2 7 // 8 2 7
Button::image(self.imgs.skill_sceptre_heal) Button::image(self.imgs.skill_sceptre_lifesteal)
.w_h(74.0, 74.0) .w_h(74.0, 74.0)
.mid_top_with_margin_on(state.skills_top_l[0], 3.0) .mid_top_with_margin_on(state.skills_top_l[0], 3.0)
.with_tooltip( .with_tooltip(
self.tooltip_manager, self.tooltip_manager,
&self.localized_strings.get("hud.skill.sc_beam_title"), &self.localized_strings.get("hud.skill.sc_lifesteal_title"),
&self.localized_strings.get("hud.skill.sc_beam"), &self.localized_strings.get("hud.skill.sc_lifesteal"),
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_beam_0, ui); .set(state.skill_sceptre_lifesteal_0, ui);
let skill = Skill::Sceptre(BHeal); let skill = Skill::Sceptre(LDamage);
if create_skill_button( if create_skill_button(
self.imgs.heal_heal_skill, self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[1], state.skills_top_l[1],
&self.stats.skill_set, &self.stats.skill_set,
skill, skill,
@ -3271,9 +3273,11 @@ impl<'a> Widget for Diary<'a> {
) )
.with_tooltip( .with_tooltip(
self.tooltip_manager, 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( &add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_beam_heal"), &self.localized_strings.get("hud.skill.sc_lifesteal_damage"),
skill, skill,
&self.stats.skill_set, &self.stats.skill_set,
&self.localized_strings, &self.localized_strings,
@ -3281,14 +3285,14 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_beam_1, ui) .set(state.skill_sceptre_lifesteal_1, ui)
.was_clicked() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));
}; };
let skill = Skill::Sceptre(BDamage); let skill = Skill::Sceptre(LRange);
if create_skill_button( if create_skill_button(
self.imgs.heal_damage_skill, self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[2], state.skills_top_l[2],
&self.stats.skill_set, &self.stats.skill_set,
skill, skill,
@ -3297,9 +3301,11 @@ impl<'a> Widget for Diary<'a> {
) )
.with_tooltip( .with_tooltip(
self.tooltip_manager, 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( &add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_beam_damage"), &self.localized_strings.get("hud.skill.sc_lifesteal_range"),
skill, skill,
&self.stats.skill_set, &self.stats.skill_set,
&self.localized_strings, &self.localized_strings,
@ -3307,14 +3313,14 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_beam_2, ui) .set(state.skill_sceptre_lifesteal_2, ui)
.was_clicked() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));
}; };
let skill = Skill::Sceptre(BRegen); let skill = Skill::Sceptre(LLifesteal);
if create_skill_button( if create_skill_button(
self.imgs.heal_energy_regen_skill, self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[3], state.skills_top_l[3],
&self.stats.skill_set, &self.stats.skill_set,
skill, skill,
@ -3325,9 +3331,11 @@ impl<'a> Widget for Diary<'a> {
self.tooltip_manager, self.tooltip_manager,
&self &self
.localized_strings .localized_strings
.get("hud.skill.sc_energy_regen_title"), .get("hud.skill.sc_lifesteal_lifesteal_title"),
&add_sp_cost_tooltip( &add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_energy_regen"), &self
.localized_strings
.get("hud.skill.sc_lifesteal_lifesteal"),
skill, skill,
&self.stats.skill_set, &self.stats.skill_set,
&self.localized_strings, &self.localized_strings,
@ -3335,55 +3343,27 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_beam_3, ui) .set(state.skill_sceptre_lifesteal_3, ui)
.was_clicked() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));
}; };
let skill = Skill::Sceptre(BRange); let skill = Skill::Sceptre(LRegen);
if create_skill_button( if create_skill_button(
self.imgs.heal_radius_skill, self.imgs.skill_sceptre_lifesteal,
state.skills_top_l[4], state.skills_top_l[4],
&self.stats.skill_set, &self.stats.skill_set,
skill, skill,
self.fonts, self.fonts,
&get_skill_label(skill, &self.stats.skill_set), &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( .with_tooltip(
self.tooltip_manager, self.tooltip_manager,
&self &self
.localized_strings .localized_strings
.get("hud.skill.sc_lifesteal_efficiency_title"), .get("hud.skill.sc_lifesteal_regen_title"),
&add_sp_cost_tooltip( &add_sp_cost_tooltip(
&self &self.localized_strings.get("hud.skill.sc_lifesteal_regen"),
.localized_strings
.get("hud.skill.sc_lifesteal_efficiency"),
skill, skill,
&self.stats.skill_set, &self.stats.skill_set,
&self.localized_strings, &self.localized_strings,
@ -3391,15 +3371,53 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_beam_5, ui) .set(state.skill_sceptre_lifesteal_4, ui)
.was_clicked() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); 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( if create_skill_button(
self.imgs.heal_cost_skill, self.imgs.skill_sceptre_heal,
state.skills_top_l[6], 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, &self.stats.skill_set,
skill, skill,
self.fonts, self.fonts,
@ -3417,78 +3435,14 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_beam_6, ui) .set(state.skill_sceptre_heal_2, ui)
.was_clicked() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));
}; };
Button::image(self.imgs.skill_sceptre_heal) let skill = Skill::Sceptre(HRange);
.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( if create_skill_button(
self.imgs.heal_heal_skill, 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_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,
state.skills_top_r[3], state.skills_top_r[3],
&self.stats.skill_set, &self.stats.skill_set,
skill, skill,
@ -3497,9 +3451,9 @@ impl<'a> Widget for Diary<'a> {
) )
.with_tooltip( .with_tooltip(
self.tooltip_manager, 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( &add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_radius"), &self.localized_strings.get("hud.skill.sc_heal_range"),
skill, skill,
&self.stats.skill_set, &self.stats.skill_set,
&self.localized_strings, &self.localized_strings,
@ -3507,41 +3461,16 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, TEXT_COLOR,
) )
.set(state.skill_sceptre_bomb_3, ui) .set(state.skill_sceptre_heal_3, ui)
.was_clicked() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));
}; };
let skill = Skill::Sceptre(PCost); // Bottom left skills
let skill = Skill::Sceptre(UnlockAura);
if create_skill_button( if create_skill_button(
self.imgs.heal_cost_skill, self.imgs.skill_sceptre_aura,
state.skills_top_r[4], state.skills_bot_l[0],
&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.stats.skill_set, &self.stats.skill_set,
skill, skill,
self.fonts, self.fonts,
@ -3551,9 +3480,9 @@ impl<'a> Widget for Diary<'a> {
self.tooltip_manager, self.tooltip_manager,
&self &self
.localized_strings .localized_strings
.get("hud.skill.sc_projectile_speed_title"), .get("hud.skill.sc_wardaura_unlock_title"),
&add_sp_cost_tooltip( &add_sp_cost_tooltip(
&self.localized_strings.get("hud.skill.sc_projectile_speed"), &self.localized_strings.get("hud.skill.sc_wardaura_unlock"),
skill, skill,
&self.stats.skill_set, &self.stats.skill_set,
&self.localized_strings, &self.localized_strings,
@ -3561,7 +3490,119 @@ impl<'a> Widget for Diary<'a> {
&diary_tooltip, &diary_tooltip,
TEXT_COLOR, 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() .was_clicked()
{ {
events.push(Event::UnlockSkill(skill)); events.push(Event::UnlockSkill(skill));

View File

@ -452,6 +452,7 @@ image_ids! {
hammerleap: "voxygen.element.icons.skill_hammerleap", hammerleap: "voxygen.element.icons.skill_hammerleap",
skill_axe_leap_slash: "voxygen.element.icons.skill_axe_leap_slash", skill_axe_leap_slash: "voxygen.element.icons.skill_axe_leap_slash",
skill_bow_jump_burst: "voxygen.element.icons.skill_bow_jump_burst", 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", skill_sceptre_aura: "voxygen.element.icons.heal_bomb",
missing_icon: "voxygen.element.icons.missing_icon_grey", missing_icon: "voxygen.element.icons.missing_icon_grey",