mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Unlock dodge roll iframes and staff explosion by default.
This commit is contained in:
parent
bf6c22462f
commit
0404250300
@ -60,6 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- International keyboards can now display more key names on Linux and Windows instead of `Unknown`.
|
- International keyboards can now display more key names on Linux and Windows instead of `Unknown`.
|
||||||
- There is now a brief period after a character leaves the world where they cannot rejoin until their data is saved
|
- There is now a brief period after a character leaves the world where they cannot rejoin until their data is saved
|
||||||
- Certain uses of client-authoritative physics now subject the player to server-authoritative physics.
|
- Certain uses of client-authoritative physics now subject the player to server-authoritative physics.
|
||||||
|
- Dodge roll iframes and staff explosion are now unlocked by default, with points refunded for existing characters.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ BasicRanged(
|
|||||||
recover_duration: 0.35,
|
recover_duration: 0.35,
|
||||||
projectile: Fireball(
|
projectile: Fireball(
|
||||||
damage: 100.0,
|
damage: 100.0,
|
||||||
radius: 5.0,
|
radius: 4.0,
|
||||||
energy_regen: 50,
|
energy_regen: 50,
|
||||||
),
|
),
|
||||||
projectile_body: Object(BoltFire),
|
projectile_body: Object(BoltFire),
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
Bow(RCost): Some(2),
|
Bow(RCost): Some(2),
|
||||||
Staff(BDamage): Some(3),
|
Staff(BDamage): Some(3),
|
||||||
Staff(BRegen): Some(2),
|
Staff(BRegen): Some(2),
|
||||||
Staff(BRadius): Some(2),
|
Staff(BRadius): Some(3),
|
||||||
Staff(FRange): Some(2),
|
Staff(FRange): Some(2),
|
||||||
Staff(FDamage): Some(3),
|
Staff(FDamage): Some(3),
|
||||||
Staff(FDrain): Some(2),
|
Staff(FDrain): Some(2),
|
||||||
@ -75,4 +75,4 @@
|
|||||||
Climb(Cost): Some(2),
|
Climb(Cost): Some(2),
|
||||||
Climb(Speed): Some(2),
|
Climb(Speed): Some(2),
|
||||||
Swim(Speed): Some(2),
|
Swim(Speed): Some(2),
|
||||||
})
|
})
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
UnlockGroup(Weapon(Bow)),
|
UnlockGroup(Weapon(Bow)),
|
||||||
UnlockGroup(Weapon(Staff)),
|
UnlockGroup(Weapon(Staff)),
|
||||||
UnlockGroup(Weapon(Sceptre)),
|
UnlockGroup(Weapon(Sceptre)),
|
||||||
Roll(ImmuneMelee),
|
|
||||||
Roll(Cost),
|
Roll(Cost),
|
||||||
Roll(Strength),
|
Roll(Strength),
|
||||||
Roll(Duration),
|
Roll(Duration),
|
||||||
@ -83,7 +82,6 @@
|
|||||||
Bow(RCost),
|
Bow(RCost),
|
||||||
],
|
],
|
||||||
Weapon(Staff): [
|
Weapon(Staff): [
|
||||||
Staff(BExplosion),
|
|
||||||
Staff(BDamage),
|
Staff(BDamage),
|
||||||
Staff(BRegen),
|
Staff(BRegen),
|
||||||
Staff(BRadius),
|
Staff(BRadius),
|
||||||
@ -111,4 +109,4 @@
|
|||||||
Sceptre(ARange),
|
Sceptre(ARange),
|
||||||
Sceptre(ACost),
|
Sceptre(ACost),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
@ -92,7 +92,7 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "Miotacz ognia - obrażenia",
|
"hud.skill.st_flamethrower_damage_title" : "Miotacz ognia - obrażenia",
|
||||||
"hud.skill.st_flamethrower_damage" : "Zwiększa obrażenia o 30%{SP}",
|
"hud.skill.st_flamethrower_damage" : "Zwiększa obrażenia o 30%{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "Eksplozja - rozmiar",
|
"hud.skill.st_explosion_radius_title" : "Eksplozja - rozmiar",
|
||||||
"hud.skill.st_explosion_radius" : "Rozmiar ma znaczenie, szczególnie gdy walczysz z wieloma przeciwnikami,\nzwiększa wielkość eksplozji o 10%{SP}",
|
"hud.skill.st_explosion_radius" : "Rozmiar ma znaczenie, szczególnie gdy walczysz z wieloma przeciwnikami,\nzwiększa wielkość eksplozji o 15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "Regeneracja Wytrzymałości",
|
"hud.skill.st_stamina_regen_title" : "Regeneracja Wytrzymałości",
|
||||||
"hud.skill.st_stamina_regen" : "Zwiększa regenerację Wytrzymałości o 20%{SP}",
|
"hud.skill.st_stamina_regen" : "Zwiększa regenerację Wytrzymałości o 20%{SP}",
|
||||||
"hud.skill.st_fireball_title" : "Kula ognia",
|
"hud.skill.st_fireball_title" : "Kula ognia",
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
"hud.skill.unlck_sceptre_title": "Unlock Sceptre",
|
"hud.skill.unlck_sceptre_title": "Unlock Sceptre",
|
||||||
"hud.skill.unlck_sceptre": "Unlocks sceptre skill tree{SP}",
|
"hud.skill.unlck_sceptre": "Unlocks sceptre skill tree{SP}",
|
||||||
"hud.skill.dodge_title": "Dodge",
|
"hud.skill.dodge_title": "Dodge",
|
||||||
"hud.skill.dodge": "Dodging avoids melee attacks{SP}",
|
"hud.skill.dodge": "Dodge rolls are triggered with middle-click, and grant temporary immunity to melee attacks (iframes) while you're rolling.",
|
||||||
"hud.skill.roll_stamina_title": "Roll Stamina Cost",
|
"hud.skill.roll_stamina_title": "Roll Stamina Cost",
|
||||||
"hud.skill.roll_stamina": "Rolling uses 10% less stamina{SP}",
|
"hud.skill.roll_stamina": "Rolling uses 10% less stamina{SP}",
|
||||||
"hud.skill.roll_speed_title": "Rolling Speed",
|
"hud.skill.roll_speed_title": "Rolling Speed",
|
||||||
@ -94,15 +94,13 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "Flamethrower Damage",
|
"hud.skill.st_flamethrower_damage_title" : "Flamethrower Damage",
|
||||||
"hud.skill.st_flamethrower_damage" : "Increases damage by 30%{SP}",
|
"hud.skill.st_flamethrower_damage" : "Increases damage by 30%{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "Explosion Radius",
|
"hud.skill.st_explosion_radius_title" : "Explosion Radius",
|
||||||
"hud.skill.st_explosion_radius" : "Bigger is better, increases explosion radius by 10%{SP}",
|
"hud.skill.st_explosion_radius" : "Bigger is better, increases explosion radius by 15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "Stamina Regen",
|
"hud.skill.st_stamina_regen_title" : "Stamina Regen",
|
||||||
"hud.skill.st_stamina_regen" : "Increases stamina gain by 20%{SP}",
|
"hud.skill.st_stamina_regen" : "Increases stamina gain by 20%{SP}",
|
||||||
"hud.skill.st_fireball_title" : "Fireball",
|
"hud.skill.st_fireball_title" : "Fireball",
|
||||||
"hud.skill.st_fireball" : "Play fetch with the enemies",
|
"hud.skill.st_fireball" : "Shoots a fireball that explodes on impact",
|
||||||
"hud.skill.st_damage_title" : "Damage",
|
"hud.skill.st_damage_title" : "Damage",
|
||||||
"hud.skill.st_damage" : "Increases damage by 20%{SP}",
|
"hud.skill.st_damage" : "Increases damage by 20%{SP}",
|
||||||
"hud.skill.st_explosion_title" : "Explosion",
|
|
||||||
"hud.skill.st_explosion" : "When fire just isn't enough{SP}",
|
|
||||||
// Bow
|
// Bow
|
||||||
"hud.skill.bow_projectile_speed_title" : "Projectile Speed",
|
"hud.skill.bow_projectile_speed_title" : "Projectile Speed",
|
||||||
"hud.skill.bow_projectile_speed" : "Allows you to shoot arrows further, faster, by 30%{SP}",
|
"hud.skill.bow_projectile_speed" : "Allows you to shoot arrows further, faster, by 30%{SP}",
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "Daño del lanzallamas",
|
"hud.skill.st_flamethrower_damage_title" : "Daño del lanzallamas",
|
||||||
"hud.skill.st_flamethrower_damage" : "Aumenta el daño en un 30%{SP}",
|
"hud.skill.st_flamethrower_damage" : "Aumenta el daño en un 30%{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "Radio de explosión",
|
"hud.skill.st_explosion_radius_title" : "Radio de explosión",
|
||||||
"hud.skill.st_explosion_radius" : "Más grande es mejor, aumenta el radio de explosión en un 10%{SP}",
|
"hud.skill.st_explosion_radius" : "Más grande es mejor, aumenta el radio de explosión en un 15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "Regeneración de resistencia",
|
"hud.skill.st_stamina_regen_title" : "Regeneración de resistencia",
|
||||||
"hud.skill.st_stamina_regen" : "Aumenta la regeneración de resistencia en un 20%{SP}",
|
"hud.skill.st_stamina_regen" : "Aumenta la regeneración de resistencia en un 20%{SP}",
|
||||||
"hud.skill.st_fireball_title" : "Bola de fuego",
|
"hud.skill.st_fireball_title" : "Bola de fuego",
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "Dégâts des Flammes",
|
"hud.skill.st_flamethrower_damage_title" : "Dégâts des Flammes",
|
||||||
"hud.skill.st_flamethrower_damage" : "Augmente de 30% les dégâts{SP}",
|
"hud.skill.st_flamethrower_damage" : "Augmente de 30% les dégâts{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "Portée de l'Explosion",
|
"hud.skill.st_explosion_radius_title" : "Portée de l'Explosion",
|
||||||
"hud.skill.st_explosion_radius" : "Augmente la portée d'explosion de 10%{SP}",
|
"hud.skill.st_explosion_radius" : "Augmente la portée d'explosion de 15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "Régénération d'Endurance des Boules de feu",
|
"hud.skill.st_stamina_regen_title" : "Régénération d'Endurance des Boules de feu",
|
||||||
"hud.skill.st_stamina_regen" : "Augmente de 20% la régénération d'endurance{SP}",
|
"hud.skill.st_stamina_regen" : "Augmente de 20% la régénération d'endurance{SP}",
|
||||||
"hud.skill.st_fireball_title" : "Boule de Feu",
|
"hud.skill.st_fireball_title" : "Boule de Feu",
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "フレームスロワー ダメージ",
|
"hud.skill.st_flamethrower_damage_title" : "フレームスロワー ダメージ",
|
||||||
"hud.skill.st_flamethrower_damage" : "ダメージを30%増加 {SP}",
|
"hud.skill.st_flamethrower_damage" : "ダメージを30%増加 {SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "エクスプロージョン 範囲",
|
"hud.skill.st_explosion_radius_title" : "エクスプロージョン 範囲",
|
||||||
"hud.skill.st_explosion_radius" : "大きいのはいいですよね。爆発半径を10%増加 {SP}",
|
"hud.skill.st_explosion_radius" : "大きいのはいいですよね。爆発半径を15%増加 {SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "スタミナ 再生",
|
"hud.skill.st_stamina_regen_title" : "スタミナ 再生",
|
||||||
"hud.skill.st_stamina_regen" : "スタミナ獲得量を20%増加 {SP}",
|
"hud.skill.st_stamina_regen" : "スタミナ獲得量を20%増加 {SP}",
|
||||||
"hud.skill.st_fireball_title" : "ファイアーボール",
|
"hud.skill.st_fireball_title" : "ファイアーボール",
|
||||||
|
@ -90,7 +90,7 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "Dano do Lança Chamas",
|
"hud.skill.st_flamethrower_damage_title" : "Dano do Lança Chamas",
|
||||||
"hud.skill.st_flamethrower_damage" : "Aumenta o dano em 30%{SP}",
|
"hud.skill.st_flamethrower_damage" : "Aumenta o dano em 30%{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "Raio da Explosão",
|
"hud.skill.st_explosion_radius_title" : "Raio da Explosão",
|
||||||
"hud.skill.st_explosion_radius" : "Quanto maior melhor, e o raio da explosão é aumentado em 10%{SP}",
|
"hud.skill.st_explosion_radius" : "Quanto maior melhor, e o raio da explosão é aumentado em 15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "Regeneração de stamina",
|
"hud.skill.st_stamina_regen_title" : "Regeneração de stamina",
|
||||||
"hud.skill.st_stamina_regen" : "Aumenta o ganho de stamina em 20%{SP}",
|
"hud.skill.st_stamina_regen" : "Aumenta o ganho de stamina em 20%{SP}",
|
||||||
"hud.skill.st_fireball_title" : "Bola de fogo",
|
"hud.skill.st_fireball_title" : "Bola de fogo",
|
||||||
|
@ -101,7 +101,7 @@
|
|||||||
"hud.skill.st_explosion_title" : "Вибухові снаряди",
|
"hud.skill.st_explosion_title" : "Вибухові снаряди",
|
||||||
"hud.skill.st_explosion" : "Коли просто вогню не достатньо{SP}",
|
"hud.skill.st_explosion" : "Коли просто вогню не достатньо{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "Радіус вибуху",
|
"hud.skill.st_explosion_radius_title" : "Радіус вибуху",
|
||||||
"hud.skill.st_explosion_radius" : "Більше - краще, збільшує радіус вибуху снарядів на 10%{SP}",
|
"hud.skill.st_explosion_radius" : "Більше - краще, збільшує радіус вибуху снарядів на 15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "Відновлення енергії",
|
"hud.skill.st_stamina_regen_title" : "Відновлення енергії",
|
||||||
"hud.skill.st_stamina_regen" : "Збільшує відновлення енергії від заподіяних ушкоджень на 20%{SP}",
|
"hud.skill.st_stamina_regen" : "Збільшує відновлення енергії від заподіяних ушкоджень на 20%{SP}",
|
||||||
"hud.skill.st_damage_title" : "Ушкодження снарядами",
|
"hud.skill.st_damage_title" : "Ушкодження снарядами",
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
"hud.skill.st_flamethrower_damage_title" : "伤害提升",
|
"hud.skill.st_flamethrower_damage_title" : "伤害提升",
|
||||||
"hud.skill.st_flamethrower_damage" : "吐息造成的伤害提高30%{SP}",
|
"hud.skill.st_flamethrower_damage" : "吐息造成的伤害提高30%{SP}",
|
||||||
"hud.skill.st_explosion_radius_title" : "爆破专家",
|
"hud.skill.st_explosion_radius_title" : "爆破专家",
|
||||||
"hud.skill.st_explosion_radius" : "火球爆炸的半径扩大10%{SP}",
|
"hud.skill.st_explosion_radius" : "火球爆炸的半径扩大15%{SP}",
|
||||||
"hud.skill.st_stamina_regen_title" : "法力回复",
|
"hud.skill.st_stamina_regen_title" : "法力回复",
|
||||||
"hud.skill.st_stamina_regen" : "每次击中敌人回复的法力增加20%{SP}",
|
"hud.skill.st_stamina_regen" : "每次击中敌人回复的法力增加20%{SP}",
|
||||||
"hud.skill.st_fireball_title" : "火球术",
|
"hud.skill.st_fireball_title" : "火球术",
|
||||||
|
@ -340,7 +340,7 @@ impl CharacterAbility {
|
|||||||
movement_duration: 0.33,
|
movement_duration: 0.33,
|
||||||
recover_duration: 0.125,
|
recover_duration: 0.125,
|
||||||
roll_strength: 2.0,
|
roll_strength: 2.0,
|
||||||
immune_melee: false,
|
immune_melee: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -966,9 +966,6 @@ impl CharacterAbility {
|
|||||||
BasicRanged {
|
BasicRanged {
|
||||||
ref mut projectile, ..
|
ref mut projectile, ..
|
||||||
} => {
|
} => {
|
||||||
if !skillset.has_skill(Staff(BExplosion)) {
|
|
||||||
*projectile = projectile.fireball_to_firebolt();
|
|
||||||
}
|
|
||||||
let damage_level = skillset
|
let damage_level = skillset
|
||||||
.skill_level(Staff(BDamage))
|
.skill_level(Staff(BDamage))
|
||||||
.unwrap_or(None)
|
.unwrap_or(None)
|
||||||
@ -983,7 +980,7 @@ impl CharacterAbility {
|
|||||||
.unwrap_or(0);
|
.unwrap_or(0);
|
||||||
let power = 1.2_f32.powi(damage_level.into());
|
let power = 1.2_f32.powi(damage_level.into());
|
||||||
let regen = 1.2_f32.powi(regen_level.into());
|
let regen = 1.2_f32.powi(regen_level.into());
|
||||||
let range = 1.1_f32.powi(range_level.into());
|
let range = 1.15_f32.powi(range_level.into());
|
||||||
*projectile = projectile.modified_projectile(power, regen, range);
|
*projectile = projectile.modified_projectile(power, regen, range);
|
||||||
},
|
},
|
||||||
BasicBeam {
|
BasicBeam {
|
||||||
@ -1107,7 +1104,6 @@ impl CharacterAbility {
|
|||||||
},
|
},
|
||||||
None => {
|
None => {
|
||||||
if let CharacterAbility::Roll {
|
if let CharacterAbility::Roll {
|
||||||
ref mut immune_melee,
|
|
||||||
ref mut energy_cost,
|
ref mut energy_cost,
|
||||||
ref mut roll_strength,
|
ref mut roll_strength,
|
||||||
ref mut movement_duration,
|
ref mut movement_duration,
|
||||||
@ -1115,7 +1111,6 @@ impl CharacterAbility {
|
|||||||
} = self
|
} = self
|
||||||
{
|
{
|
||||||
use skills::RollSkill::*;
|
use skills::RollSkill::*;
|
||||||
*immune_melee = skillset.has_skill(Skill::Roll(ImmuneMelee));
|
|
||||||
if let Ok(Some(level)) = skillset.skill_level(Skill::Roll(Cost)) {
|
if let Ok(Some(level)) = skillset.skill_level(Skill::Roll(Cost)) {
|
||||||
*energy_cost *= 0.9_f32.powi(level.into());
|
*energy_cost *= 0.9_f32.powi(level.into());
|
||||||
}
|
}
|
||||||
|
@ -54,10 +54,6 @@ pub enum ProjectileConstructor {
|
|||||||
damage: f32,
|
damage: f32,
|
||||||
radius: f32,
|
radius: f32,
|
||||||
},
|
},
|
||||||
Firebolt {
|
|
||||||
damage: f32,
|
|
||||||
energy_regen: f32,
|
|
||||||
},
|
|
||||||
Possess,
|
Possess,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,33 +165,6 @@ impl ProjectileConstructor {
|
|||||||
ignore_group: true,
|
ignore_group: true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Firebolt {
|
|
||||||
damage,
|
|
||||||
energy_regen,
|
|
||||||
} => {
|
|
||||||
let energy = AttackEffect::new(None, CombatEffect::EnergyReward(energy_regen))
|
|
||||||
.with_requirement(CombatRequirement::AnyDamage);
|
|
||||||
let damage = AttackDamage::new(
|
|
||||||
Damage {
|
|
||||||
source: DamageSource::Energy,
|
|
||||||
value: damage,
|
|
||||||
},
|
|
||||||
Some(GroupTarget::OutOfGroup),
|
|
||||||
);
|
|
||||||
let attack = Attack::default()
|
|
||||||
.with_damage(damage)
|
|
||||||
.with_crit(crit_chance, crit_mult)
|
|
||||||
.with_effect(energy)
|
|
||||||
.with_combo_increment();
|
|
||||||
|
|
||||||
Projectile {
|
|
||||||
hit_solid: vec![Effect::Vanish],
|
|
||||||
hit_entity: vec![Effect::Attack(attack), Effect::Vanish],
|
|
||||||
time_left: Duration::from_secs(10),
|
|
||||||
owner,
|
|
||||||
ignore_group: true,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Possess => Projectile {
|
Possess => Projectile {
|
||||||
hit_solid: vec![Effect::Stick],
|
hit_solid: vec![Effect::Stick],
|
||||||
hit_entity: vec![Effect::Stick, Effect::Possess],
|
hit_entity: vec![Effect::Stick, Effect::Possess],
|
||||||
@ -235,32 +204,8 @@ impl ProjectileConstructor {
|
|||||||
*damage *= power;
|
*damage *= power;
|
||||||
*radius *= range;
|
*radius *= range;
|
||||||
},
|
},
|
||||||
Firebolt {
|
|
||||||
ref mut damage,
|
|
||||||
ref mut energy_regen,
|
|
||||||
..
|
|
||||||
} => {
|
|
||||||
*damage *= power;
|
|
||||||
*energy_regen *= regen;
|
|
||||||
},
|
|
||||||
Possess => {},
|
Possess => {},
|
||||||
}
|
}
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn fireball_to_firebolt(self) -> Self {
|
|
||||||
if let ProjectileConstructor::Fireball {
|
|
||||||
damage,
|
|
||||||
energy_regen,
|
|
||||||
radius: _,
|
|
||||||
} = self
|
|
||||||
{
|
|
||||||
ProjectileConstructor::Firebolt {
|
|
||||||
damage,
|
|
||||||
energy_regen: energy_regen * 2.0,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
self
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,6 @@ pub enum BowSkill {
|
|||||||
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
pub enum StaffSkill {
|
pub enum StaffSkill {
|
||||||
// Basic ranged upgrades
|
// Basic ranged upgrades
|
||||||
BExplosion,
|
|
||||||
BDamage,
|
BDamage,
|
||||||
BRegen,
|
BRegen,
|
||||||
BRadius,
|
BRadius,
|
||||||
@ -248,7 +247,6 @@ pub enum GeneralSkill {
|
|||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
pub enum RollSkill {
|
pub enum RollSkill {
|
||||||
ImmuneMelee,
|
|
||||||
Cost,
|
Cost,
|
||||||
Strength,
|
Strength,
|
||||||
Duration,
|
Duration,
|
||||||
|
@ -246,7 +246,6 @@ impl SkillSetBuilder {
|
|||||||
// Staff
|
// Staff
|
||||||
Self::default()
|
Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
||||||
@ -318,7 +317,6 @@ impl SkillSetBuilder {
|
|||||||
// Staff
|
// Staff
|
||||||
Self::default()
|
Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
|
||||||
@ -393,7 +391,6 @@ impl SkillSetBuilder {
|
|||||||
// Staff
|
// Staff
|
||||||
Self::default()
|
Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
||||||
@ -471,7 +468,6 @@ impl SkillSetBuilder {
|
|||||||
// Staff
|
// Staff
|
||||||
Self::default()
|
Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
|
||||||
@ -557,7 +553,6 @@ impl SkillSetBuilder {
|
|||||||
// Staff
|
// Staff
|
||||||
Self::default()
|
Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
||||||
@ -653,7 +648,6 @@ impl SkillSetBuilder {
|
|||||||
// Staff
|
// Staff
|
||||||
Self::default()
|
Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
|
||||||
@ -672,7 +666,6 @@ impl SkillSetBuilder {
|
|||||||
},
|
},
|
||||||
Some(Mindflayer) => Self::default()
|
Some(Mindflayer) => Self::default()
|
||||||
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Staff))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BExplosion), None)
|
|
||||||
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(3))
|
.with_skill(Skill::Staff(StaffSkill::BDamage), Some(3))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(2))
|
.with_skill(Skill::Staff(StaffSkill::BRegen), Some(2))
|
||||||
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(2))
|
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(2))
|
||||||
|
28
server/src/migrations/V34__remove_immunemelee_bexplosion.sql
Normal file
28
server/src/migrations/V34__remove_immunemelee_bexplosion.sql
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
-- Refund the existing skill points for ImmuneMelee/BExplosion.
|
||||||
|
|
||||||
|
-- A skill of level n has total cost (n*(n+1))/2, since it cost 1 for the
|
||||||
|
-- first, 2 for the second, and so on.
|
||||||
|
-- The formula is used here to make the updates copy-pastable for other migrations,
|
||||||
|
-- even though these two skills in particular only have 1 total point maximum.
|
||||||
|
|
||||||
|
-- COALESCE is used because skills can have NULL levels (and these two do, in fact).
|
||||||
|
UPDATE skill_group
|
||||||
|
SET available_sp = skill_group.available_sp +
|
||||||
|
((COALESCE(skill.level, 1) * (COALESCE(skill.level, 1) + 1)) / 2)
|
||||||
|
FROM skill
|
||||||
|
WHERE skill.entity_id = skill_group.entity_id
|
||||||
|
AND skill_group.skill_group_kind = 'General'
|
||||||
|
AND skill.skill = 'Roll ImmuneMelee';
|
||||||
|
|
||||||
|
UPDATE skill_group
|
||||||
|
SET available_sp = skill_group.available_sp +
|
||||||
|
((COALESCE(skill.level, 1) * (COALESCE(skill.level, 1) + 1)) / 2)
|
||||||
|
FROM skill
|
||||||
|
WHERE skill.entity_id = skill_group.entity_id
|
||||||
|
AND skill_group.skill_group_kind = 'Weapon Staff'
|
||||||
|
AND skill.skill = 'Staff BExplosion';
|
||||||
|
|
||||||
|
-- After refunding the points, delete the skills.
|
||||||
|
|
||||||
|
DELETE FROM skill WHERE skill = 'Staff BExplosion';
|
||||||
|
DELETE FROM skill WHERE skill = 'Roll ImmuneMelee';
|
@ -105,7 +105,6 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String {
|
|||||||
Bow(BowSkill::RGlide) => "Bow RGlide",
|
Bow(BowSkill::RGlide) => "Bow RGlide",
|
||||||
Bow(BowSkill::RArrows) => "Bow RArrows",
|
Bow(BowSkill::RArrows) => "Bow RArrows",
|
||||||
Bow(BowSkill::RCost) => "Bow RCost",
|
Bow(BowSkill::RCost) => "Bow RCost",
|
||||||
Staff(StaffSkill::BExplosion) => "Staff BExplosion",
|
|
||||||
Staff(StaffSkill::BDamage) => "Staff BDamage",
|
Staff(StaffSkill::BDamage) => "Staff BDamage",
|
||||||
Staff(StaffSkill::BRegen) => "Staff BRegen",
|
Staff(StaffSkill::BRegen) => "Staff BRegen",
|
||||||
Staff(StaffSkill::BRadius) => "Staff BRadius",
|
Staff(StaffSkill::BRadius) => "Staff BRadius",
|
||||||
@ -130,7 +129,6 @@ pub fn skill_to_db_string(skill: comp::skills::Skill) -> String {
|
|||||||
Sceptre(SceptreSkill::ADuration) => "Sceptre ADuration",
|
Sceptre(SceptreSkill::ADuration) => "Sceptre ADuration",
|
||||||
Sceptre(SceptreSkill::ARange) => "Sceptre ARange",
|
Sceptre(SceptreSkill::ARange) => "Sceptre ARange",
|
||||||
Sceptre(SceptreSkill::ACost) => "Sceptre ACost",
|
Sceptre(SceptreSkill::ACost) => "Sceptre ACost",
|
||||||
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",
|
||||||
Roll(RollSkill::Duration) => "Roll Duration",
|
Roll(RollSkill::Duration) => "Roll Duration",
|
||||||
@ -232,7 +230,6 @@ pub fn db_string_to_skill(skill_string: &str) -> comp::skills::Skill {
|
|||||||
"Bow RGlide" => Bow(BowSkill::RGlide),
|
"Bow RGlide" => Bow(BowSkill::RGlide),
|
||||||
"Bow RArrows" => Bow(BowSkill::RArrows),
|
"Bow RArrows" => Bow(BowSkill::RArrows),
|
||||||
"Bow RCost" => Bow(BowSkill::RCost),
|
"Bow RCost" => Bow(BowSkill::RCost),
|
||||||
"Staff BExplosion" => Staff(StaffSkill::BExplosion),
|
|
||||||
"Staff BDamage" => Staff(StaffSkill::BDamage),
|
"Staff BDamage" => Staff(StaffSkill::BDamage),
|
||||||
"Staff BRegen" => Staff(StaffSkill::BRegen),
|
"Staff BRegen" => Staff(StaffSkill::BRegen),
|
||||||
"Staff BRadius" => Staff(StaffSkill::BRadius),
|
"Staff BRadius" => Staff(StaffSkill::BRadius),
|
||||||
@ -257,7 +254,6 @@ pub fn db_string_to_skill(skill_string: &str) -> comp::skills::Skill {
|
|||||||
"Sceptre ADuration" => Sceptre(SceptreSkill::ADuration),
|
"Sceptre ADuration" => Sceptre(SceptreSkill::ADuration),
|
||||||
"Sceptre ARange" => Sceptre(SceptreSkill::ARange),
|
"Sceptre ARange" => Sceptre(SceptreSkill::ARange),
|
||||||
"Sceptre ACost" => Sceptre(SceptreSkill::ACost),
|
"Sceptre ACost" => Sceptre(SceptreSkill::ACost),
|
||||||
"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),
|
||||||
"Roll Duration" => Roll(RollSkill::Duration),
|
"Roll Duration" => Roll(RollSkill::Duration),
|
||||||
|
@ -541,7 +541,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
SelectedSkillTree::Weapon(ToolKind::Axe) => 5,
|
SelectedSkillTree::Weapon(ToolKind::Axe) => 5,
|
||||||
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) => 4,
|
||||||
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5,
|
SelectedSkillTree::Weapon(ToolKind::Sceptre) => 5,
|
||||||
_ => 0,
|
_ => 0,
|
||||||
};
|
};
|
||||||
@ -939,32 +939,17 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
};
|
};
|
||||||
// Bottom left skills
|
// Bottom left skills
|
||||||
let skill = Skill::Roll(ImmuneMelee);
|
Button::image(self.imgs.skill_dodge_skill)
|
||||||
if create_skill_button(
|
.w_h(74.0, 74.0)
|
||||||
self.imgs.skill_dodge_skill,
|
.mid_top_with_margin_on(state.skills_bot_l[0], 3.0)
|
||||||
state.skills_bot_l[0],
|
.with_tooltip(
|
||||||
&self.skill_set,
|
self.tooltip_manager,
|
||||||
skill,
|
&self.localized_strings.get("hud.skill.dodge_title"),
|
||||||
self.fonts,
|
|
||||||
&get_skill_label(skill, &self.skill_set),
|
|
||||||
)
|
|
||||||
.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
&self.localized_strings.get("hud.skill.dodge_title"),
|
|
||||||
&add_sp_cost_tooltip(
|
|
||||||
&self.localized_strings.get("hud.skill.dodge"),
|
&self.localized_strings.get("hud.skill.dodge"),
|
||||||
skill,
|
&diary_tooltip,
|
||||||
&self.skill_set,
|
TEXT_COLOR,
|
||||||
&self.localized_strings,
|
)
|
||||||
),
|
.set(state.skill_general_roll_0, ui);
|
||||||
&diary_tooltip,
|
|
||||||
TEXT_COLOR,
|
|
||||||
)
|
|
||||||
.set(state.skill_general_roll_0, ui)
|
|
||||||
.was_clicked()
|
|
||||||
{
|
|
||||||
events.push(Event::UnlockSkill(skill));
|
|
||||||
};
|
|
||||||
let skill = Skill::Roll(RollSkill::Cost);
|
let skill = Skill::Roll(RollSkill::Cost);
|
||||||
if create_skill_button(
|
if create_skill_button(
|
||||||
self.imgs.utility_cost_skill,
|
self.imgs.utility_cost_skill,
|
||||||
@ -2967,36 +2952,10 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
TEXT_COLOR,
|
TEXT_COLOR,
|
||||||
)
|
)
|
||||||
.set(state.skill_staff_basic_0, ui);
|
.set(state.skill_staff_basic_0, ui);
|
||||||
let skill = Skill::Staff(BExplosion);
|
|
||||||
if create_skill_button(
|
|
||||||
self.imgs.magic_explosion_skill,
|
|
||||||
state.skills_top_l[1],
|
|
||||||
&self.skill_set,
|
|
||||||
skill,
|
|
||||||
self.fonts,
|
|
||||||
&get_skill_label(skill, &self.skill_set),
|
|
||||||
)
|
|
||||||
.with_tooltip(
|
|
||||||
self.tooltip_manager,
|
|
||||||
&self.localized_strings.get("hud.skill.st_explosion_title"),
|
|
||||||
&add_sp_cost_tooltip(
|
|
||||||
&self.localized_strings.get("hud.skill.st_explosion"),
|
|
||||||
skill,
|
|
||||||
&self.skill_set,
|
|
||||||
&self.localized_strings,
|
|
||||||
),
|
|
||||||
&diary_tooltip,
|
|
||||||
TEXT_COLOR,
|
|
||||||
)
|
|
||||||
.set(state.skill_staff_basic_1, ui)
|
|
||||||
.was_clicked()
|
|
||||||
{
|
|
||||||
events.push(Event::UnlockSkill(skill));
|
|
||||||
};
|
|
||||||
let skill = Skill::Staff(BDamage);
|
let skill = Skill::Staff(BDamage);
|
||||||
if create_skill_button(
|
if create_skill_button(
|
||||||
self.imgs.magic_damage_skill,
|
self.imgs.magic_damage_skill,
|
||||||
state.skills_top_l[2],
|
state.skills_top_l[1],
|
||||||
&self.skill_set,
|
&self.skill_set,
|
||||||
skill,
|
skill,
|
||||||
self.fonts,
|
self.fonts,
|
||||||
@ -3014,7 +2973,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
&diary_tooltip,
|
&diary_tooltip,
|
||||||
TEXT_COLOR,
|
TEXT_COLOR,
|
||||||
)
|
)
|
||||||
.set(state.skill_staff_basic_2, ui)
|
.set(state.skill_staff_basic_1, ui)
|
||||||
.was_clicked()
|
.was_clicked()
|
||||||
{
|
{
|
||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
@ -3022,7 +2981,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
let skill = Skill::Staff(BRegen);
|
let skill = Skill::Staff(BRegen);
|
||||||
if create_skill_button(
|
if create_skill_button(
|
||||||
self.imgs.magic_energy_regen_skill,
|
self.imgs.magic_energy_regen_skill,
|
||||||
state.skills_top_l[3],
|
state.skills_top_l[2],
|
||||||
&self.skill_set,
|
&self.skill_set,
|
||||||
skill,
|
skill,
|
||||||
self.fonts,
|
self.fonts,
|
||||||
@ -3042,7 +3001,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
&diary_tooltip,
|
&diary_tooltip,
|
||||||
TEXT_COLOR,
|
TEXT_COLOR,
|
||||||
)
|
)
|
||||||
.set(state.skill_staff_basic_3, ui)
|
.set(state.skill_staff_basic_2, ui)
|
||||||
.was_clicked()
|
.was_clicked()
|
||||||
{
|
{
|
||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
@ -3050,7 +3009,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
let skill = Skill::Staff(BRadius);
|
let skill = Skill::Staff(BRadius);
|
||||||
if create_skill_button(
|
if create_skill_button(
|
||||||
self.imgs.magic_radius_skill,
|
self.imgs.magic_radius_skill,
|
||||||
state.skills_top_l[4],
|
state.skills_top_l[3],
|
||||||
&self.skill_set,
|
&self.skill_set,
|
||||||
skill,
|
skill,
|
||||||
self.fonts,
|
self.fonts,
|
||||||
@ -3070,7 +3029,7 @@ impl<'a> Widget for Diary<'a> {
|
|||||||
&diary_tooltip,
|
&diary_tooltip,
|
||||||
TEXT_COLOR,
|
TEXT_COLOR,
|
||||||
)
|
)
|
||||||
.set(state.skill_staff_basic_4, ui)
|
.set(state.skill_staff_basic_3, ui)
|
||||||
.was_clicked()
|
.was_clicked()
|
||||||
{
|
{
|
||||||
events.push(Event::UnlockSkill(skill));
|
events.push(Event::UnlockSkill(skill));
|
||||||
|
Loading…
Reference in New Issue
Block a user