Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 53 additions & 14 deletions crates/workshop-rs/src/settings/data/hero_setting_aliases.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,59 @@
[
{ "hero": "roadhog", "key": "secondaryFireCooldown%", "locale": "en-US", "display": "secondaryFireCooldown%" },
{ "hero": "roadhog", "key": "secondaryFireCooldown%", "locale": "en-US", "display": "Take a Breather Cooldown Time" },
{ "hero": "roadhog", "key": "secondaryFireCooldown%", "locale": "zh-CN", "display": "secondaryFireCooldown%" },
{ "hero": "sojourn", "key": "secondaryFireEnergyChargeRate%", "locale": "zh-CN", "display": "充能速度 充能射击" },
{ "hero": "roadhog", "key": "secondaryFireCooldown%", "locale": "zh-CN", "display": "呼吸器冷却时间" },
{ "hero": "roadhog", "key": "secondaryFireMaximumTime%", "locale": "en-US", "display": "Take a Breather Maximum Time" },
{ "hero": "roadhog", "key": "secondaryFireMaximumTime%", "locale": "zh-CN", "display": "secondaryFireMaximumTime%" },
{ "hero": "roadhog", "key": "secondaryFireMaximumTime%", "locale": "zh-CN", "display": "呼吸器最长时间" },
{ "hero": "roadhog", "key": "secondaryFireRechargeRate%", "locale": "en-US", "display": "Take a Breather Recharge Rate" },
{ "hero": "roadhog", "key": "secondaryFireRechargeRate%", "locale": "zh-CN", "display": "secondaryFireRechargeRate%" },
{ "hero": "roadhog", "key": "secondaryFireRechargeRate%", "locale": "zh-CN", "display": "呼吸器充能速度" },
{ "hero": "roadhog", "key": "enableAbility2", "locale": "en-US", "display": "Pig Pen" },
{ "hero": "roadhog", "key": "enableAbility2", "locale": "zh-CN", "display": "拴猪圈" },
{ "hero": "roadhog", "key": "ability2Cooldown%", "locale": "en-US", "display": "Pig Pen Cooldown Time" },
{ "hero": "roadhog", "key": "ability2Cooldown%", "locale": "zh-CN", "display": "拴猪圈冷却时间" },
{ "hero": "sojourn", "key": "secondaryFireEnergyChargeRate%", "locale": "zh-CN", "display": "充能速度 充能射击" },
{ "hero": "hazard", "key": "secondaryFireRegen%", "locale": "zh-CN", "display": "尖刺护体资源恢复" },
{ "hero": "hazard", "key": "secondaryFireCost%", "locale": "zh-CN", "display": "尖刺护体资源消耗" }
,{ "hero": "mei", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" }
,{ "hero": "mei", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" }
,{ "hero": "wreckingBall", "key": "ability1Cooldown%", "locale": "zh-CN", "display": "工程抓钩冷却时间" }
,{ "hero": "wreckingBall", "key": "ability2Cooldown%", "locale": "zh-CN", "display": "感应护盾冷却时间" }
,{ "hero": "wreckingBall", "key": "ability3Cooldown%", "locale": "zh-CN", "display": "重力坠击冷却时间" }
,{ "hero": "hammond", "key": "ability1Cooldown%", "locale": "zh-CN", "display": "工程抓钩冷却时间" }
,{ "hero": "hammond", "key": "ability2Cooldown%", "locale": "zh-CN", "display": "感应护盾冷却时间" }
,{ "hero": "hammond", "key": "ability3Cooldown%", "locale": "zh-CN", "display": "重力坠击冷却时间" }
,{ "hero": "hammond", "key": "ability1Cooldown%", "locale": "en-US", "display": "Grappling Claw Cooldown Time" }
,{ "hero": "hammond", "key": "ability2Cooldown%", "locale": "en-US", "display": "Adaptive Shield Cooldown Time" }
,{ "hero": "hammond", "key": "ability3Cooldown%", "locale": "en-US", "display": "Piledriver Cooldown Time" }
{ "hero": "hazard", "key": "secondaryFireCost%", "locale": "zh-CN", "display": "尖刺护体资源消耗" },
{ "hero": "vendetta", "key": "secondaryFireRechargeRate%", "locale": "en-US", "display": "Warding Stance Regen Scalar" },
{ "hero": "vendetta", "key": "secondaryFireRechargeRate%", "locale": "zh-CN", "display": "招架姿态恢复倍率" },
{ "hero": "anran", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "anran", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "baptiste", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "baptiste", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "cassidy", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "cassidy", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "genji", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "genji", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "illari", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "illari", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "kiriko", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "kiriko", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "mei", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "mei", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "mercy", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "mercy", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "moira", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "moira", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "roadhog", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "roadhog", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "symmetra", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "symmetra", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "torbjorn", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "torbjorn", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "winston", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "winston", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "zarya", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "zarya", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "zenyatta", "key": "enableSecondaryFire", "locale": "en-US", "display": "Secondary Fire" },
{ "hero": "zenyatta", "key": "enableSecondaryFire", "locale": "zh-CN", "display": "辅助攻击模式" },
{ "hero": "wreckingBall", "key": "ability1Cooldown%", "locale": "zh-CN", "display": "工程抓钩冷却时间" },
{ "hero": "wreckingBall", "key": "ability2Cooldown%", "locale": "zh-CN", "display": "感应护盾冷却时间" },
{ "hero": "wreckingBall", "key": "ability3Cooldown%", "locale": "zh-CN", "display": "重力坠击冷却时间" },
{ "hero": "hammond", "key": "ability1Cooldown%", "locale": "zh-CN", "display": "工程抓钩冷却时间" },
{ "hero": "hammond", "key": "ability2Cooldown%", "locale": "zh-CN", "display": "感应护盾冷却时间" },
{ "hero": "hammond", "key": "ability3Cooldown%", "locale": "zh-CN", "display": "重力坠击冷却时间" },
{ "hero": "hammond", "key": "ability1Cooldown%", "locale": "en-US", "display": "Grappling Claw Cooldown Time" },
{ "hero": "hammond", "key": "ability2Cooldown%", "locale": "en-US", "display": "Adaptive Shield Cooldown Time" },
{ "hero": "hammond", "key": "ability3Cooldown%", "locale": "en-US", "display": "Piledriver Cooldown Time" }
]
1 change: 0 additions & 1 deletion crates/workshop-rs/src/settings/table.rs
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,6 @@ pub(crate) fn ability_slot_for_path(path: &[PathPart<'_>]) -> Option<&'static st
Some("ultimate")
}
Some(PathPart::Part("enablePassive")) => Some("passive"),
Some(PathPart::Part("enableAutomaticFire" | "enableScoping")) => Some("primaryFire"),
_ => None,
}
}
Expand Down
35 changes: 35 additions & 0 deletions crates/workshop-rs/tests/settings_pipeline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,41 @@ fn pinned_ai_hero_setting_aliases_are_canonical() {
);
}

#[test]
fn pinned_hero_setting_names_emit_the_oracle_spellings() {
let catalog = catalog();
let en = en();
let source = "settings { heroes { General { \
Ana { No Automatic Fire: Off No Scope: Off } \
Genji { Secondary Fire: Off } \
Roadhog { Take a Breather Cooldown Time: 50% Take a Breather Maximum Time: 60% Take a Breather Recharge Rate: 70% Secondary Fire: Off Pig Pen: Off Pig Pen Cooldown Time: 80% } \
Vendetta { Warding Stance Regen Scalar: 90% } \
} } }";
let program = internal::parse_in(source, &en);
let emitted = internal::emit_in(&program, &en);
for expected in [
"No Automatic Fire: Off",
"No Scope: Off",
"Secondary Fire: Off",
"Take a Breather Cooldown Time: 50%",
"Take a Breather Maximum Time: 60%",
"Take a Breather Recharge Rate: 70%",
"Pig Pen: Off",
"Pig Pen Cooldown Time: 80%",
"Warding Stance Regen Scalar: 90%",
] {
assert!(emitted.contains(expected), "{emitted} missing {expected}");
}
let reparsed = internal::parse_in(&emitted, &en);
assert!(roundtrip::equivalent_wir(&program, &reparsed));
assert!(
program
.semantic_issues(&catalog)
.iter()
.all(|issue| issue.kind != workshop_rs::rules::IncompletenessKind::RawSetting)
);
}

#[test]
fn mixed_locale_primary_hero_setting_name_is_canonical() {
let catalog = catalog();
Expand Down
Loading