Merge branch 'sam/mindflayer-skills' into 'master'

Makes mindflayer not equivalent to a starting character that picked staff

See merge request veloren/veloren!1710
This commit is contained in:
Samuel Keiffer 2021-01-21 22:39:33 +00:00
commit b11122c9b4
2 changed files with 363 additions and 348 deletions

View File

@ -17,6 +17,7 @@ pub enum SkillSetConfig {
CultistAcolyte, CultistAcolyte,
Warlord, Warlord,
Warlock, Warlock,
Mindflayer,
} }
pub struct SkillSetBuilder(SkillSet); pub struct SkillSetBuilder(SkillSet);
@ -42,21 +43,21 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsDamage)) .with_skill(Skill::Sword(SwordSkill::TsDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsRegen)) .with_skill(Skill::Sword(SwordSkill::TsRegen), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsSpeed)) .with_skill(Skill::Sword(SwordSkill::TsSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DCost)) .with_skill(Skill::Sword(SwordSkill::DCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDrain)) .with_skill(Skill::Sword(SwordSkill::DDrain), Some(1))
.with_skill(Skill::Sword(SwordSkill::DScaling)) .with_skill(Skill::Sword(SwordSkill::DScaling), Some(1))
.with_skill(Skill::Sword(SwordSkill::DSpeed)) .with_skill(Skill::Sword(SwordSkill::DSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::DInfinite)) .with_skill(Skill::Sword(SwordSkill::DInfinite), None)
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::SDamage)) .with_skill(Skill::Sword(SwordSkill::SDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpeed)) .with_skill(Skill::Sword(SwordSkill::SSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(1))
.with_skill(Skill::Sword(SwordSkill::SCost)) .with_skill(Skill::Sword(SwordSkill::SCost), Some(1))
} else { } else {
Self::default() Self::default()
} }
@ -67,45 +68,45 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DCost)) .with_skill(Skill::Sword(SwordSkill::DCost), Some(1))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), Some(1))
.with_skill(Skill::Axe(AxeSkill::SSpeed)) .with_skill(Skill::Axe(AxeSkill::SSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::SCost)) .with_skill(Skill::Axe(AxeSkill::SCost), Some(1))
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsSpeed)) .with_skill(Skill::Hammer(HammerSkill::SsSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CSpeed)) .with_skill(Skill::Hammer(HammerSkill::CSpeed), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::ProjSpeed)) .with_skill(Skill::Bow(BowSkill::ProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CKnockback)) .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1))
.with_skill(Skill::Bow(BowSkill::CProjSpeed)) .with_skill(Skill::Bow(BowSkill::CProjSpeed), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDrain)) .with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
.with_skill(Skill::Staff(StaffSkill::FVelocity)) .with_skill(Skill::Staff(StaffSkill::FVelocity), Some(1))
}, },
_ => Self::default(), _ => Self::default(),
} }
@ -116,60 +117,60 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsDamage)) .with_skill(Skill::Sword(SwordSkill::TsDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(1))
.with_skill(Skill::Sword(SwordSkill::SCost)) .with_skill(Skill::Sword(SwordSkill::SCost), Some(1))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::DsDamage)) .with_skill(Skill::Axe(AxeSkill::DsDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), None)
.with_skill(Skill::Axe(AxeSkill::SDamage)) .with_skill(Skill::Axe(AxeSkill::SDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::SSpeed)) .with_skill(Skill::Axe(AxeSkill::SSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::SCost)) .with_skill(Skill::Axe(AxeSkill::SCost), Some(1))
.with_skill(Skill::Axe(AxeSkill::UnlockLeap)) .with_skill(Skill::Axe(AxeSkill::UnlockLeap), None)
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsDamage)) .with_skill(Skill::Hammer(HammerSkill::SsDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsSpeed)) .with_skill(Skill::Hammer(HammerSkill::SsSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::UnlockLeap)) .with_skill(Skill::Hammer(HammerSkill::UnlockLeap), None)
.with_skill(Skill::Hammer(HammerSkill::LKnockback)) .with_skill(Skill::Hammer(HammerSkill::LKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LRange)) .with_skill(Skill::Hammer(HammerSkill::LRange), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CKnockback)) .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1))
.with_skill(Skill::Bow(BowSkill::CSpeed)) .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CMove)) .with_skill(Skill::Bow(BowSkill::CMove), Some(1))
.with_skill(Skill::Bow(BowSkill::UnlockRepeater)) .with_skill(Skill::Bow(BowSkill::UnlockRepeater), None)
.with_skill(Skill::Bow(BowSkill::RArrows)) .with_skill(Skill::Bow(BowSkill::RArrows), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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)) .with_skill(Skill::Staff(StaffSkill::BExplosion), None)
.with_skill(Skill::Staff(StaffSkill::BRegen)) .with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRadius)) .with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FRange)) .with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
.with_skill(Skill::Staff(StaffSkill::FVelocity)) .with_skill(Skill::Staff(StaffSkill::FVelocity), Some(1))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave)) .with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
}, },
_ => Self::default(), _ => Self::default(),
} }
@ -180,68 +181,68 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsDamage)) .with_skill(Skill::Sword(SwordSkill::TsDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DCost)) .with_skill(Skill::Sword(SwordSkill::DCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::SDamage)) .with_skill(Skill::Sword(SwordSkill::SDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(1))
.with_skill(Skill::Sword(SwordSkill::SCost)) .with_skill(Skill::Sword(SwordSkill::SCost), Some(1))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::DsSpeed)) .with_skill(Skill::Axe(AxeSkill::DsSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::DsRegen)) .with_skill(Skill::Axe(AxeSkill::DsRegen), Some(1))
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), None)
.with_skill(Skill::Axe(AxeSkill::SDamage)) .with_skill(Skill::Axe(AxeSkill::SDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::UnlockLeap)) .with_skill(Skill::Axe(AxeSkill::UnlockLeap), None)
.with_skill(Skill::Axe(AxeSkill::LKnockback)) .with_skill(Skill::Axe(AxeSkill::LKnockback), Some(1))
.with_skill(Skill::Axe(AxeSkill::LCost)) .with_skill(Skill::Axe(AxeSkill::LCost), Some(1))
.with_skill(Skill::Axe(AxeSkill::LDistance)) .with_skill(Skill::Axe(AxeSkill::LDistance), Some(1))
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsDamage)) .with_skill(Skill::Hammer(HammerSkill::SsDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsRegen)) .with_skill(Skill::Hammer(HammerSkill::SsRegen), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDamage)) .with_skill(Skill::Hammer(HammerSkill::CDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::UnlockLeap)) .with_skill(Skill::Hammer(HammerSkill::UnlockLeap), None)
.with_skill(Skill::Hammer(HammerSkill::LDamage)) .with_skill(Skill::Hammer(HammerSkill::LDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LCost)) .with_skill(Skill::Hammer(HammerSkill::LCost), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LDistance)) .with_skill(Skill::Hammer(HammerSkill::LDistance), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::ProjSpeed)) .with_skill(Skill::Bow(BowSkill::ProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::BRegen)) .with_skill(Skill::Bow(BowSkill::BRegen), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CDrain)) .with_skill(Skill::Bow(BowSkill::CDrain), Some(1))
.with_skill(Skill::Bow(BowSkill::CSpeed)) .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::UnlockRepeater)) .with_skill(Skill::Bow(BowSkill::UnlockRepeater), None)
.with_skill(Skill::Bow(BowSkill::RGlide)) .with_skill(Skill::Bow(BowSkill::RGlide), None)
.with_skill(Skill::Bow(BowSkill::RCost)) .with_skill(Skill::Bow(BowSkill::RCost), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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)) .with_skill(Skill::Staff(StaffSkill::BExplosion), None)
.with_skill(Skill::Staff(StaffSkill::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FRange)) .with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDrain)) .with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave)) .with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
.with_skill(Skill::Staff(StaffSkill::SDamage)) .with_skill(Skill::Staff(StaffSkill::SDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::SRange)) .with_skill(Skill::Staff(StaffSkill::SRange), Some(1))
}, },
_ => Self::default(), _ => Self::default(),
} }
@ -252,74 +253,74 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsRegen)) .with_skill(Skill::Sword(SwordSkill::TsRegen), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsSpeed)) .with_skill(Skill::Sword(SwordSkill::TsSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DCost)) .with_skill(Skill::Sword(SwordSkill::DCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDrain)) .with_skill(Skill::Sword(SwordSkill::DDrain), Some(1))
.with_skill(Skill::Sword(SwordSkill::DScaling)) .with_skill(Skill::Sword(SwordSkill::DScaling), Some(1))
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::SSpeed)) .with_skill(Skill::Sword(SwordSkill::SSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(1))
.with_skill(Skill::Sword(SwordSkill::SCost)) .with_skill(Skill::Sword(SwordSkill::SCost), Some(1))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), None)
.with_skill(Skill::Axe(AxeSkill::SHelicopter)) .with_skill(Skill::Axe(AxeSkill::SHelicopter), None)
.with_skill(Skill::Axe(AxeSkill::SDamage)) .with_skill(Skill::Axe(AxeSkill::SDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::UnlockLeap)) .with_skill(Skill::Axe(AxeSkill::UnlockLeap), None)
.with_skill(Skill::Axe(AxeSkill::LKnockback)) .with_skill(Skill::Axe(AxeSkill::LKnockback), Some(1))
.with_skill(Skill::Axe(AxeSkill::LDistance)) .with_skill(Skill::Axe(AxeSkill::LDistance), Some(1))
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsSpeed)) .with_skill(Skill::Hammer(HammerSkill::SsSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsRegen)) .with_skill(Skill::Hammer(HammerSkill::SsRegen), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDamage)) .with_skill(Skill::Hammer(HammerSkill::CDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDrain)) .with_skill(Skill::Hammer(HammerSkill::CDrain), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CSpeed)) .with_skill(Skill::Hammer(HammerSkill::CSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::UnlockLeap)) .with_skill(Skill::Hammer(HammerSkill::UnlockLeap), None)
.with_skill(Skill::Hammer(HammerSkill::LDamage)) .with_skill(Skill::Hammer(HammerSkill::LDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LKnockback)) .with_skill(Skill::Hammer(HammerSkill::LKnockback), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::ProjSpeed)) .with_skill(Skill::Bow(BowSkill::ProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CKnockback)) .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1))
.with_skill(Skill::Bow(BowSkill::CProjSpeed)) .with_skill(Skill::Bow(BowSkill::CProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CDrain)) .with_skill(Skill::Bow(BowSkill::CDrain), Some(1))
.with_skill(Skill::Bow(BowSkill::UnlockRepeater)) .with_skill(Skill::Bow(BowSkill::UnlockRepeater), None)
.with_skill(Skill::Bow(BowSkill::RDamage)) .with_skill(Skill::Bow(BowSkill::RDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::RGlide)) .with_skill(Skill::Bow(BowSkill::RGlide), None)
.with_skill(Skill::Bow(BowSkill::RArrows)) .with_skill(Skill::Bow(BowSkill::RArrows), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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)) .with_skill(Skill::Staff(StaffSkill::BExplosion), None)
.with_skill(Skill::Staff(StaffSkill::BDamage)) .with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRadius)) .with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FRange)) .with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDrain)) .with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
.with_skill(Skill::Staff(StaffSkill::FVelocity)) .with_skill(Skill::Staff(StaffSkill::FVelocity), Some(1))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave)) .with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
.with_skill(Skill::Staff(StaffSkill::SDamage)) .with_skill(Skill::Staff(StaffSkill::SDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::SRange)) .with_skill(Skill::Staff(StaffSkill::SRange), Some(1))
}, },
_ => Self::default(), _ => Self::default(),
} }
@ -330,74 +331,74 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsDamage)) .with_skill(Skill::Sword(SwordSkill::TsDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsSpeed)) .with_skill(Skill::Sword(SwordSkill::TsSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DScaling)) .with_skill(Skill::Sword(SwordSkill::DScaling), Some(1))
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::SDamage)) .with_skill(Skill::Sword(SwordSkill::SDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpeed)) .with_skill(Skill::Sword(SwordSkill::SSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(1))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::DsDamage)) .with_skill(Skill::Axe(AxeSkill::DsDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), Some(1))
.with_skill(Skill::Axe(AxeSkill::SDamage)) .with_skill(Skill::Axe(AxeSkill::SDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::SCost)) .with_skill(Skill::Axe(AxeSkill::SCost), Some(1))
.with_skill(Skill::Axe(AxeSkill::UnlockLeap)) .with_skill(Skill::Axe(AxeSkill::UnlockLeap), None)
.with_skill(Skill::Axe(AxeSkill::LDamage)) .with_skill(Skill::Axe(AxeSkill::LDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::LKnockback)) .with_skill(Skill::Axe(AxeSkill::LKnockback), Some(1))
.with_skill(Skill::Axe(AxeSkill::LCost)) .with_skill(Skill::Axe(AxeSkill::LCost), Some(1))
.with_skill(Skill::Axe(AxeSkill::LDistance)) .with_skill(Skill::Axe(AxeSkill::LDistance), Some(1))
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsDamage)) .with_skill(Skill::Hammer(HammerSkill::SsDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsRegen)) .with_skill(Skill::Hammer(HammerSkill::SsRegen), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDamage)) .with_skill(Skill::Hammer(HammerSkill::CDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDrain)) .with_skill(Skill::Hammer(HammerSkill::CDrain), Some(1))
.with_skill(Skill::Hammer(HammerSkill::UnlockLeap)) .with_skill(Skill::Hammer(HammerSkill::UnlockLeap), None)
.with_skill(Skill::Hammer(HammerSkill::LDamage)) .with_skill(Skill::Hammer(HammerSkill::LDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LRange)) .with_skill(Skill::Hammer(HammerSkill::LRange), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CKnockback)) .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1))
.with_skill(Skill::Bow(BowSkill::CProjSpeed)) .with_skill(Skill::Bow(BowSkill::CProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CDrain)) .with_skill(Skill::Bow(BowSkill::CDrain), Some(1))
.with_skill(Skill::Bow(BowSkill::UnlockRepeater)) .with_skill(Skill::Bow(BowSkill::UnlockRepeater), None)
.with_skill(Skill::Bow(BowSkill::RDamage)) .with_skill(Skill::Bow(BowSkill::RDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::RGlide)) .with_skill(Skill::Bow(BowSkill::RGlide), None)
.with_skill(Skill::Bow(BowSkill::RArrows)) .with_skill(Skill::Bow(BowSkill::RArrows), Some(1))
.with_skill(Skill::Bow(BowSkill::RCost)) .with_skill(Skill::Bow(BowSkill::RCost), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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)) .with_skill(Skill::Staff(StaffSkill::BExplosion), None)
.with_skill(Skill::Staff(StaffSkill::BDamage)) .with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRadius)) .with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FRange)) .with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
.with_skill(Skill::Staff(StaffSkill::FVelocity)) .with_skill(Skill::Staff(StaffSkill::FVelocity), Some(1))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave)) .with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
.with_skill(Skill::Staff(StaffSkill::SDamage)) .with_skill(Skill::Staff(StaffSkill::SDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::SKnockback)) .with_skill(Skill::Staff(StaffSkill::SKnockback), Some(1))
.with_skill(Skill::Staff(StaffSkill::SRange)) .with_skill(Skill::Staff(StaffSkill::SRange), Some(1))
}, },
_ => Self::default(), _ => Self::default(),
} }
@ -408,84 +409,83 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsDamage)) .with_skill(Skill::Sword(SwordSkill::TsDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsRegen)) .with_skill(Skill::Sword(SwordSkill::TsRegen), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::DCost)) .with_skill(Skill::Sword(SwordSkill::DCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDrain)) .with_skill(Skill::Sword(SwordSkill::DDrain), Some(1))
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::SDamage)) .with_skill(Skill::Sword(SwordSkill::SDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(2))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::SCost))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::DsDamage)) .with_skill(Skill::Axe(AxeSkill::DsDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::DsSpeed)) .with_skill(Skill::Axe(AxeSkill::DsSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::DsRegen)) .with_skill(Skill::Axe(AxeSkill::DsRegen), Some(1))
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), None)
.with_skill(Skill::Axe(AxeSkill::SHelicopter)) .with_skill(Skill::Axe(AxeSkill::SHelicopter), None)
.with_skill(Skill::Axe(AxeSkill::SDamage)) .with_skill(Skill::Axe(AxeSkill::SDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::SSpeed)) .with_skill(Skill::Axe(AxeSkill::SSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::UnlockLeap)) .with_skill(Skill::Axe(AxeSkill::UnlockLeap), None)
.with_skill(Skill::Axe(AxeSkill::LDamage)) .with_skill(Skill::Axe(AxeSkill::LDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::LKnockback)) .with_skill(Skill::Axe(AxeSkill::LKnockback), Some(1))
.with_skill(Skill::Axe(AxeSkill::LDistance)) .with_skill(Skill::Axe(AxeSkill::LDistance), Some(1))
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsDamage)) .with_skill(Skill::Hammer(HammerSkill::SsDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsSpeed)) .with_skill(Skill::Hammer(HammerSkill::SsSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsRegen)) .with_skill(Skill::Hammer(HammerSkill::SsRegen), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDamage)) .with_skill(Skill::Hammer(HammerSkill::CDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDrain)) .with_skill(Skill::Hammer(HammerSkill::CDrain), Some(1))
.with_skill(Skill::Hammer(HammerSkill::UnlockLeap)) .with_skill(Skill::Hammer(HammerSkill::UnlockLeap), None)
.with_skill(Skill::Hammer(HammerSkill::LDamage)) .with_skill(Skill::Hammer(HammerSkill::LDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LDistance)) .with_skill(Skill::Hammer(HammerSkill::LDistance), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LKnockback)) .with_skill(Skill::Hammer(HammerSkill::LKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LRange)) .with_skill(Skill::Hammer(HammerSkill::LRange), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::BRegen)) .with_skill(Skill::Bow(BowSkill::BRegen), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CKnockback)) .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1))
.with_skill(Skill::Bow(BowSkill::CProjSpeed)) .with_skill(Skill::Bow(BowSkill::CProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CSpeed)) .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CMove)) .with_skill(Skill::Bow(BowSkill::CMove), Some(1))
.with_skill(Skill::Bow(BowSkill::UnlockRepeater)) .with_skill(Skill::Bow(BowSkill::UnlockRepeater), None)
.with_skill(Skill::Bow(BowSkill::RDamage)) .with_skill(Skill::Bow(BowSkill::RDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::RGlide)) .with_skill(Skill::Bow(BowSkill::RGlide), None)
.with_skill(Skill::Bow(BowSkill::RArrows)) .with_skill(Skill::Bow(BowSkill::RArrows), Some(1))
.with_skill(Skill::Bow(BowSkill::RCost)) .with_skill(Skill::Bow(BowSkill::RCost), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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)) .with_skill(Skill::Staff(StaffSkill::BExplosion), None)
.with_skill(Skill::Staff(StaffSkill::BDamage)) .with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRegen)) .with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRadius)) .with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDrain)) .with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
.with_skill(Skill::Staff(StaffSkill::FVelocity)) .with_skill(Skill::Staff(StaffSkill::FVelocity), Some(1))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave)) .with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
.with_skill(Skill::Staff(StaffSkill::SDamage)) .with_skill(Skill::Staff(StaffSkill::SDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::SKnockback)) .with_skill(Skill::Staff(StaffSkill::SKnockback), Some(1))
.with_skill(Skill::Staff(StaffSkill::SCost)) .with_skill(Skill::Staff(StaffSkill::SCost), Some(1))
}, },
_ => Self::default(), _ => Self::default(),
} }
@ -496,116 +496,131 @@ impl SkillSetBuilder {
// Sword // Sword
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Sword))
.with_skill(Skill::Sword(SwordSkill::TsCombo)) .with_skill(Skill::Sword(SwordSkill::TsCombo), None)
.with_skill(Skill::Sword(SwordSkill::TsDamage)) .with_skill(Skill::Sword(SwordSkill::TsDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsRegen)) .with_skill(Skill::Sword(SwordSkill::TsRegen), Some(1))
.with_skill(Skill::Sword(SwordSkill::TsSpeed)) .with_skill(Skill::Sword(SwordSkill::TsSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DDamage), Some(2))
.with_skill(Skill::Sword(SwordSkill::DDamage)) .with_skill(Skill::Sword(SwordSkill::DCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::DCost)) .with_skill(Skill::Sword(SwordSkill::DDrain), Some(1))
.with_skill(Skill::Sword(SwordSkill::DDrain)) .with_skill(Skill::Sword(SwordSkill::DScaling), Some(1))
.with_skill(Skill::Sword(SwordSkill::DScaling)) .with_skill(Skill::Sword(SwordSkill::UnlockSpin), None)
.with_skill(Skill::Sword(SwordSkill::UnlockSpin)) .with_skill(Skill::Sword(SwordSkill::SDamage), Some(1))
.with_skill(Skill::Sword(SwordSkill::SDamage)) .with_skill(Skill::Sword(SwordSkill::SSpeed), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpeed)) .with_skill(Skill::Sword(SwordSkill::SSpins), Some(2))
.with_skill(Skill::Sword(SwordSkill::SSpins)) .with_skill(Skill::Sword(SwordSkill::SCost), Some(1))
.with_skill(Skill::Sword(SwordSkill::SSpins))
.with_skill(Skill::Sword(SwordSkill::SCost))
}, },
Some(ToolKind::Axe) => { Some(ToolKind::Axe) => {
// Axe // Axe
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Axe))
.with_skill(Skill::Axe(AxeSkill::DsCombo)) .with_skill(Skill::Axe(AxeSkill::DsCombo), None)
.with_skill(Skill::Axe(AxeSkill::DsDamage)) .with_skill(Skill::Axe(AxeSkill::DsDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::DsSpeed)) .with_skill(Skill::Axe(AxeSkill::DsSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::DsRegen)) .with_skill(Skill::Axe(AxeSkill::DsRegen), Some(1))
.with_skill(Skill::Axe(AxeSkill::SInfinite)) .with_skill(Skill::Axe(AxeSkill::SInfinite), None)
.with_skill(Skill::Axe(AxeSkill::SHelicopter)) .with_skill(Skill::Axe(AxeSkill::SHelicopter), None)
.with_skill(Skill::Axe(AxeSkill::SDamage)) .with_skill(Skill::Axe(AxeSkill::SDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::SSpeed)) .with_skill(Skill::Axe(AxeSkill::SSpeed), Some(1))
.with_skill(Skill::Axe(AxeSkill::SCost)) .with_skill(Skill::Axe(AxeSkill::SCost), Some(1))
.with_skill(Skill::Axe(AxeSkill::UnlockLeap)) .with_skill(Skill::Axe(AxeSkill::UnlockLeap), None)
.with_skill(Skill::Axe(AxeSkill::LDamage)) .with_skill(Skill::Axe(AxeSkill::LDamage), Some(1))
.with_skill(Skill::Axe(AxeSkill::LKnockback)) .with_skill(Skill::Axe(AxeSkill::LKnockback), Some(1))
.with_skill(Skill::Axe(AxeSkill::LCost)) .with_skill(Skill::Axe(AxeSkill::LCost), Some(1))
.with_skill(Skill::Axe(AxeSkill::LDistance)) .with_skill(Skill::Axe(AxeSkill::LDistance), Some(1))
}, },
Some(ToolKind::Hammer) => { Some(ToolKind::Hammer) => {
// Hammer // Hammer
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Hammer))
.with_skill(Skill::Hammer(HammerSkill::SsKnockback)) .with_skill(Skill::Hammer(HammerSkill::SsKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsDamage)) .with_skill(Skill::Hammer(HammerSkill::SsDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsSpeed)) .with_skill(Skill::Hammer(HammerSkill::SsSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::SsRegen)) .with_skill(Skill::Hammer(HammerSkill::SsRegen), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CKnockback)) .with_skill(Skill::Hammer(HammerSkill::CKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDamage)) .with_skill(Skill::Hammer(HammerSkill::CDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CDrain)) .with_skill(Skill::Hammer(HammerSkill::CDrain), Some(1))
.with_skill(Skill::Hammer(HammerSkill::CSpeed)) .with_skill(Skill::Hammer(HammerSkill::CSpeed), Some(1))
.with_skill(Skill::Hammer(HammerSkill::UnlockLeap)) .with_skill(Skill::Hammer(HammerSkill::UnlockLeap), None)
.with_skill(Skill::Hammer(HammerSkill::LDamage)) .with_skill(Skill::Hammer(HammerSkill::LDamage), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LCost)) .with_skill(Skill::Hammer(HammerSkill::LCost), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LDistance)) .with_skill(Skill::Hammer(HammerSkill::LDistance), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LKnockback)) .with_skill(Skill::Hammer(HammerSkill::LKnockback), Some(1))
.with_skill(Skill::Hammer(HammerSkill::LRange)) .with_skill(Skill::Hammer(HammerSkill::LRange), Some(1))
}, },
Some(ToolKind::Bow) => { Some(ToolKind::Bow) => {
// Bow // Bow
Self::default() Self::default()
.with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow)) .with_skill_group(SkillGroupKind::Weapon(ToolKind::Bow))
.with_skill(Skill::Bow(BowSkill::BDamage)) .with_skill(Skill::Bow(BowSkill::BDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::ProjSpeed)) .with_skill(Skill::Bow(BowSkill::ProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::BRegen)) .with_skill(Skill::Bow(BowSkill::BRegen), Some(1))
.with_skill(Skill::Bow(BowSkill::CDamage)) .with_skill(Skill::Bow(BowSkill::CDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::CKnockback)) .with_skill(Skill::Bow(BowSkill::CKnockback), Some(1))
.with_skill(Skill::Bow(BowSkill::CProjSpeed)) .with_skill(Skill::Bow(BowSkill::CProjSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CDrain)) .with_skill(Skill::Bow(BowSkill::CDrain), Some(1))
.with_skill(Skill::Bow(BowSkill::CSpeed)) .with_skill(Skill::Bow(BowSkill::CSpeed), Some(1))
.with_skill(Skill::Bow(BowSkill::CMove)) .with_skill(Skill::Bow(BowSkill::CMove), Some(1))
.with_skill(Skill::Bow(BowSkill::UnlockRepeater)) .with_skill(Skill::Bow(BowSkill::UnlockRepeater), None)
.with_skill(Skill::Bow(BowSkill::RDamage)) .with_skill(Skill::Bow(BowSkill::RDamage), Some(1))
.with_skill(Skill::Bow(BowSkill::RGlide)) .with_skill(Skill::Bow(BowSkill::RGlide), None)
.with_skill(Skill::Bow(BowSkill::RArrows)) .with_skill(Skill::Bow(BowSkill::RArrows), Some(1))
.with_skill(Skill::Bow(BowSkill::RCost)) .with_skill(Skill::Bow(BowSkill::RCost), Some(1))
}, },
Some(ToolKind::Staff) => { Some(ToolKind::Staff) => {
// 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)) .with_skill(Skill::Staff(StaffSkill::BExplosion), None)
.with_skill(Skill::Staff(StaffSkill::BDamage)) .with_skill(Skill::Staff(StaffSkill::BDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRegen)) .with_skill(Skill::Staff(StaffSkill::BRegen), Some(1))
.with_skill(Skill::Staff(StaffSkill::BRadius)) .with_skill(Skill::Staff(StaffSkill::BRadius), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDamage)) .with_skill(Skill::Staff(StaffSkill::FDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::FRange)) .with_skill(Skill::Staff(StaffSkill::FRange), Some(1))
.with_skill(Skill::Staff(StaffSkill::FDrain)) .with_skill(Skill::Staff(StaffSkill::FDrain), Some(1))
.with_skill(Skill::Staff(StaffSkill::FVelocity)) .with_skill(Skill::Staff(StaffSkill::FVelocity), Some(1))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave)) .with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
.with_skill(Skill::Staff(StaffSkill::SDamage)) .with_skill(Skill::Staff(StaffSkill::SDamage), Some(1))
.with_skill(Skill::Staff(StaffSkill::SKnockback)) .with_skill(Skill::Staff(StaffSkill::SKnockback), Some(1))
.with_skill(Skill::Staff(StaffSkill::SRange)) .with_skill(Skill::Staff(StaffSkill::SRange), Some(1))
.with_skill(Skill::Staff(StaffSkill::SCost)) .with_skill(Skill::Staff(StaffSkill::SCost), Some(1))
}, },
_ => Self::default(), _ => Self::default(),
} }
}, },
Some(Mindflayer) => Self::default()
.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::BRegen), Some(2))
.with_skill(Skill::Staff(StaffSkill::BRadius), Some(2))
.with_skill(Skill::Staff(StaffSkill::FDamage), Some(3))
.with_skill(Skill::Staff(StaffSkill::FRange), Some(2))
.with_skill(Skill::Staff(StaffSkill::FDrain), Some(2))
.with_skill(Skill::Staff(StaffSkill::FVelocity), Some(2))
.with_skill(Skill::Staff(StaffSkill::UnlockShockwave), None)
.with_skill(Skill::Staff(StaffSkill::SDamage), Some(2))
.with_skill(Skill::Staff(StaffSkill::SKnockback), Some(2))
.with_skill(Skill::Staff(StaffSkill::SRange), Some(2))
.with_skill(Skill::Staff(StaffSkill::SCost), Some(2)),
Some(Villager) | None => Self::default(), Some(Villager) | None => Self::default(),
} }
} }
pub fn with_skill(mut self, skill: Skill) -> Self { pub fn with_skill(mut self, skill: Skill, level: Option<u16>) -> Self {
if let Some(skill_group) = skill.skill_group_kind() { if let Some(skill_group) = skill.skill_group_kind() {
for _ in 0..level.unwrap_or(1) {
self.0 self.0
.add_skill_points(skill_group, self.0.skill_cost(skill)); .add_skill_points(skill_group, self.0.skill_cost(skill));
self.0.unlock_skill(skill); self.0.unlock_skill(skill);
if !self.0.has_skill(skill) { if !self.0.has_skill(skill) {
warn!( warn!(
"Failed to add skill: {:?}. Verify that it has the appropriate skill group \ "Failed to add skill: {:?}. Verify that it has the appropriate skill \
available and meets all prerequisite skills.", group available and meets all prerequisite skills.",
skill skill
); );
} }
}
} else { } else {
warn!( warn!(
"Tried to add skill: {:?} which does not have an associated skill group.", "Tried to add skill: {:?} which does not have an associated skill group.",
@ -615,9 +630,8 @@ impl SkillSetBuilder {
self self
} }
pub fn with_skill_group(mut self, skill_group: SkillGroupKind) -> Self { pub fn with_skill_group(self, skill_group: SkillGroupKind) -> Self {
self.0.unlock_skill_group(skill_group); self.with_skill(Skill::UnlockGroup(skill_group), None)
self
} }
pub fn build(self) -> SkillSet { self.0 } pub fn build(self) -> SkillSet { self.0 }

View File

@ -888,7 +888,8 @@ impl Floor {
), ),
)) ))
.with_name("Mindflayer".to_string()) .with_name("Mindflayer".to_string())
.with_loot_drop(comp::Item::new_from_asset_expect(chosen)), .with_loot_drop(comp::Item::new_from_asset_expect(chosen))
.with_skillset_config(common::skillset_builder::SkillSetConfig::Mindflayer),
], ],
_ => { _ => {
vec![EntityInfo::at(tile_wcenter.map(|e| e as f32)).with_body( vec![EntityInfo::at(tile_wcenter.map(|e| e as f32)).with_body(