Compare commits

...

3 Commits

Author SHA1 Message Date
690b872b5e chore(webui): update Chinese translation (#2328)
Reviewed-on: OpenWF/SpaceNinjaServer#2328
Co-authored-by: Corvus <corvus@noreply.localhost>
Co-committed-by: Corvus <corvus@noreply.localhost>
2025-06-26 22:26:35 -07:00
d77fe60cd8 fix(webui): apply consistent margins (#2327)
Reviewed-on: OpenWF/SpaceNinjaServer#2327
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
2025-06-26 22:26:22 -07:00
3cae42c7d6 fix: acrithis vendor freezing with fullyStockedVendors (#2326)
Permanent offers were not satisfying bin constraints

Reviewed-on: OpenWF/SpaceNinjaServer#2326
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
2025-06-26 22:25:31 -07:00
3 changed files with 85 additions and 81 deletions

View File

@ -281,6 +281,10 @@ const generateVendorManifest = (
offersToAdd.push(item);
++offset;
}
if (missingItemsPerBin[item.bin]) {
missingItemsPerBin[item.bin] -= 1;
numOffersThatNeedToMatchABin -= 1;
}
} else {
numCountedOffers += 1 + item.duplicates;
}

View File

@ -98,9 +98,9 @@
<button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
</form>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-md-3">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="currency_RegularCredits"></h5>
<div class="card-body">
<p class="card-text" id="RegularCredits-owned"></p>
@ -112,7 +112,7 @@
</div>
</div>
<div class="col-md-3">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="currency_PremiumCredits"></h5>
<div class="card-body">
<p class="card-text" id="PremiumCredits-owned"></p>
@ -124,7 +124,7 @@
</div>
</div>
<div class="col-md-3">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="currency_FusionPoints"></h5>
<div class="card-body">
<p class="card-text" id="FusionPoints-owned"></p>
@ -136,7 +136,7 @@
</div>
</div>
<div class="col-md-3">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="currency_PrimeTokens"></h5>
<div class="card-body">
<p class="card-text" id="PrimeTokens-owned"></p>
@ -148,9 +148,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_suits"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Suits');return false;">
@ -164,7 +164,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_longGuns"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('LongGuns');return false;">
@ -183,9 +183,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_pistols"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('Pistols');return false;">
@ -204,7 +204,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_melee"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('Melee');return false;">
@ -223,9 +223,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_spaceSuits"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceSuits');return false;">
@ -239,7 +239,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_spaceGuns"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceGuns');return false;">
@ -253,9 +253,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_spaceMelee"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SpaceMelee');return false;">
@ -269,7 +269,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_mechSuits"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('MechSuits');return false;">
@ -283,9 +283,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_sentinels"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('Sentinels');return false;">
@ -299,7 +299,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_moaPets"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('MoaPets');return false;">
@ -325,9 +325,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_kubrowPets"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('KubrowPets');return false;">
@ -349,7 +349,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_sentinelWeapons"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('SentinelWeapons');return false;">
@ -363,9 +363,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_operatorAmps"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="handleModularSelection('OperatorAmps');return false;">
@ -384,7 +384,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_hoverboards"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireModularEquipment('HoverBoards');return false;">
@ -401,9 +401,9 @@
</div>
</div>
</div>
<div class="row g-3">
<div class="row g-3 mb-3">
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_evolutionProgress"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireEvolution();return false;">
@ -417,7 +417,7 @@
</div>
</div>
<div class="col-lg-6">
<div class="card mb-3" style="height: 400px;">
<div class="card" style="height: 400px;">
<h5 class="card-header" data-loc="inventory_Boosters"></h5>
<div class="card-body overflow-auto">
<form class="input-group mb-3" onsubmit="doAcquireBoosters();return false;">
@ -431,7 +431,7 @@
</div>
</div>
</div>
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="general_bulkActions"></h5>
<div class="card-body">
<div class="mb-2 d-flex flex-wrap gap-2">
@ -458,7 +458,7 @@
<div id="powersuit-route" data-route="~ /webui/powersuit/(.+)" data-title="Inventory | OpenWF WebUI">
<h3 class="mb-0"></h3>
<p class="text-body-secondary"></p>
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="powersuit_archonShardsLabel"></h5>
<div class="card-body">
<p>
@ -498,7 +498,7 @@
<a href="riven-tool/" target="_blank" data-loc="mods_fingerprintHelp"></a>
</form>
</div>
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="mods_rivens"></h5>
<div class="card-body">
<table class="table table-hover w-100">
@ -521,7 +521,7 @@
</table>
</div>
</div>
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="general_bulkActions"></h5>
<div class="card-body d-flex flex-wrap gap-2">
<button class="btn btn-primary" onclick="doAddAllMods();" data-loc="mods_addMissingUnrankedMods"></button>
@ -535,7 +535,7 @@
<div data-route="/webui/quests" data-title="Quests | OpenWF WebUI">
<div class="row g-3">
<div class="col-md-6">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="quests_list"></h5>
<div class="card-body">
<form class="input-group mb-3" onsubmit="doAcquireEquipment('QuestKeys');return false;">
@ -549,7 +549,7 @@
</div>
</div>
<div class="col-md-6">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="general_bulkActions"></h5>
<div class="card-body">
<div class="d-flex flex-wrap gap-2">
@ -565,7 +565,7 @@
<div data-route="/webui/cheats, /webui/settings" data-title="Cheats | OpenWF WebUI">
<div class="row g-3">
<div class="col-md-6">
<div class="card mb-3">
<div class="card">
<h5 class="card-header" data-loc="cheats_server"></h5>
<div class="card-body">
<div class="d-none config-admin-hide">
@ -807,7 +807,7 @@
</form>
</div>
</div>
<div class="card mb-3 d-none config-admin-show config-form">
<div class="card d-none config-admin-show config-form">
<h5 class="card-header" data-loc="worldState"></h5>
<div class="card-body">
<div class="form-check">

View File

@ -1,4 +1,4 @@
// Chinese translation by meb154 & bishan178
// Chinese translation by meb154, bishan178 & Corvus
dict = {
general_inventoryUpdateNote: `注意:此处所做的更改只有在游戏同步仓库后才会生效。您可以通过访问星图来触发仓库更新。`,
general_addButton: `添加`,
@ -187,49 +187,49 @@ dict = {
cheats_changeButton: `更改`,
cheats_none: ``,
worldState: `[UNTRANSLATED] World State`,
worldState_creditBoost: `[UNTRANSLATED] Credit Boost`,
worldState_affinityBoost: `[UNTRANSLATED] Affinity Boost`,
worldState_resourceBoost: `[UNTRANSLATED] Resource Boost`,
worldState_starDays: `[UNTRANSLATED] Star Days`,
worldState_galleonOfGhouls: `[UNTRANSLATED] Galleon of Ghouls`,
disabled: `[UNTRANSLATED] Disabled`,
worldState_we1: `[UNTRANSLATED] Weekend 1`,
worldState_we2: `[UNTRANSLATED] Weekend 2`,
worldState_we3: `[UNTRANSLATED] Weekend 3`,
worldState_eidolonOverride: `[UNTRANSLATED] Eidolon Override`,
worldState_day: `[UNTRANSLATED] Day`,
worldState_night: `[UNTRANSLATED] Night`,
worldState_vallisOverride: `[UNTRANSLATED] Orb Vallis Override`,
worldState_warm: `[UNTRANSLATED] Warm`,
worldState_cold: `[UNTRANSLATED] Cold`,
worldState_duviriOverride: `[UNTRANSLATED] Duviri Override`,
worldState_joy: `[UNTRANSLATED] Joy`,
worldState_anger: `[UNTRANSLATED] Anger`,
worldState_envy: `[UNTRANSLATED] Envy`,
worldState_sorrow: `[UNTRANSLATED] Sorrow`,
worldState_fear: `[UNTRANSLATED] Fear`,
worldState_nightwaveOverride: `[UNTRANSLATED] Nightwave Override`,
worldState_RadioLegionIntermission13Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 9`,
worldState_RadioLegionIntermission12Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 8`,
worldState_RadioLegionIntermission11Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 7`,
worldState_RadioLegionIntermission10Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 6`,
worldState_RadioLegionIntermission9Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 5`,
worldState_RadioLegionIntermission8Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 4`,
worldState_RadioLegionIntermission7Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 3`,
worldState_RadioLegionIntermission6Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 2`,
worldState_RadioLegionIntermission5Syndicate: `[UNTRANSLATED] Nora's Mix Vol. 1`,
worldState_RadioLegionIntermission4Syndicate: `[UNTRANSLATED] Nora's Choice`,
worldState_RadioLegionIntermission3Syndicate: `[UNTRANSLATED] Intermission III`,
worldState_RadioLegion3Syndicate: `[UNTRANSLATED] Glassmaker`,
worldState_RadioLegionIntermission2Syndicate: `[UNTRANSLATED] Intermission II`,
worldState_RadioLegion2Syndicate: `[UNTRANSLATED] The Emissary`,
worldState_RadioLegionIntermissionSyndicate: `[UNTRANSLATED] Intermission I`,
worldState_RadioLegionSyndicate: `[UNTRANSLATED] The Wolf of Saturn Six`,
worldState_fissures: `[UNTRANSLATED] Fissures`,
normal: `[UNTRANSLATED] Normal`,
worldState_allAtOnceNormal: `[UNTRANSLATED] All At Once, Normal`,
worldState_allAtOnceSteelPath: `[UNTRANSLATED] All At Once, Steel Path`,
worldState: `世界状态配置`,
worldState_creditBoost: `现金加成`,
worldState_affinityBoost: `经验加成`,
worldState_resourceBoost: `资源加成`,
worldState_starDays: `活动:星日`,
worldState_galleonOfGhouls: `战术警报:尸鬼的帆船战舰`,
disabled: `关闭/取消配置`,
worldState_we1: `活动阶段:第一周`,
worldState_we2: `活动阶段:第二周`,
worldState_we3: `活动阶段:第三周`,
worldState_eidolonOverride: `夜灵平原/魔胎之境状态`,
worldState_day: `白昼/FASS`,
worldState_night: `黑夜/VOME`,
worldState_vallisOverride: `奥布山谷状态`,
worldState_warm: `温暖`,
worldState_cold: `寒冷`,
worldState_duviriOverride: `双衍王镜状态`,
worldState_joy: `喜悦`,
worldState_anger: `愤怒`,
worldState_envy: `嫉妒`,
worldState_sorrow: `悲伤`,
worldState_fear: `恐惧`,
worldState_nightwaveOverride: `午夜电波系列`,
worldState_RadioLegionIntermission13Syndicate: `诺拉的混选VOL.9`,
worldState_RadioLegionIntermission12Syndicate: `诺拉的混选VOL.8`,
worldState_RadioLegionIntermission11Syndicate: `诺拉的混选VOL.7`,
worldState_RadioLegionIntermission10Syndicate: `诺拉的混选VOL.6`,
worldState_RadioLegionIntermission9Syndicate: `诺拉的混选VOL.5`,
worldState_RadioLegionIntermission8Syndicate: `诺拉的混选VOL.4`,
worldState_RadioLegionIntermission7Syndicate: `诺拉的混选VOL.3`,
worldState_RadioLegionIntermission6Syndicate: `诺拉的混选VOL.2`,
worldState_RadioLegionIntermission5Syndicate: `诺拉的混选VOL.1`,
worldState_RadioLegionIntermission4Syndicate: `诺拉的精选`,
worldState_RadioLegionIntermission3Syndicate: `间歇III`,
worldState_RadioLegion3Syndicate: `系列3 — 玻璃匠`,
worldState_RadioLegionIntermission2Syndicate: `间歇II`,
worldState_RadioLegion2Syndicate: `系列2 — 使徒`,
worldState_RadioLegionIntermissionSyndicate: `间歇I`,
worldState_RadioLegionSyndicate: `系列1 — 土星六号之狼`,
worldState_fissures: `虚空裂缝难度设定`,
normal: `正常`,
worldState_allAtOnceNormal: `全部开启(普通)`,
worldState_allAtOnceSteelPath: `全部开启(钢铁之路)`,
import_importNote: `您可以在此处提供完整或部分库存响应(客户端表示)。支持的所有字段<b>将被覆盖</b>到您的账户中。`,
import_submit: `提交`,