返回提交历史
Modified
src/controllers/api/focusController.ts
+8
-6
Modified
src/services/inventoryService.ts
+21
-6
Modified
src/types/inventoryTypes/inventoryTypes.ts
+5
-5
XFEstudio/SpaceNinjaServer
chore: improve typing of IFocusXp (#2182)
Any given focus school can be undefined in this object due to importing. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2182 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
1ead5817
代码差异
3 个文件
+34
-17
@@ -43,7 +43,7 @@ export const focusController: RequestHandler = async (req, res) => {
43
43
inventory.FocusAbility ??= focusType;
44
44
inventory.FocusUpgrades.push({ ItemType: focusType });
45
45
if (inventory.FocusXP) {
46
inventory.FocusXP[focusPolarity] -= cost;
46
inventory.FocusXP[focusPolarity]! -= cost;
47
47
}
48
48
await inventory.save();
49
49
res.json({
@@ -78,7 +78,7 @@ export const focusController: RequestHandler = async (req, res) => {
78
78
cost += ExportFocusUpgrades[focusType].baseFocusPointCost;
79
79
inventory.FocusUpgrades.push({ ItemType: focusType, Level: 0 });
80
80
}
81
inventory.FocusXP![focusPolarity] -= cost;
81
inventory.FocusXP![focusPolarity]! -= cost;
82
82
await inventory.save();
83
83
res.json({
84
84
FocusTypes: request.FocusTypes,
@@ -96,7 +96,7 @@ export const focusController: RequestHandler = async (req, res) => {
96
96
const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!;
97
97
focusUpgradeDb.Level = focusUpgrade.Level;
98
98
}
99
inventory.FocusXP![focusPolarity] -= cost;
99
inventory.FocusXP![focusPolarity]! -= cost;
100
100
await inventory.save();
101
101
res.json({
102
102
FocusInfos: request.FocusInfos,
@@ -123,7 +123,7 @@ export const focusController: RequestHandler = async (req, res) => {
123
123
const request = JSON.parse(String(req.body)) as IUnbindUpgradeRequest;
124
124
const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]);
125
125
const inventory = await getInventory(accountId);
126
inventory.FocusXP![focusPolarity] -= 750_000 * request.FocusTypes.length;
126
inventory.FocusXP![focusPolarity]! -= 750_000 * request.FocusTypes.length;
127
127
addMiscItems(inventory, [
128
128
{
129
129
ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem",
@@ -168,8 +168,10 @@ export const focusController: RequestHandler = async (req, res) => {
168
168
shard.ItemCount *= -1;
169
169
}
170
170
const inventory = await getInventory(accountId);
171
inventory.FocusXP ??= { AP_POWER: 0, AP_TACTIC: 0, AP_DEFENSE: 0, AP_ATTACK: 0, AP_WARD: 0 };
172
inventory.FocusXP[request.Polarity] += xp;
171
const polarity = request.Polarity;
172
inventory.FocusXP ??= {};
173
inventory.FocusXP[polarity] ??= 0;
174
inventory.FocusXP[polarity] += xp;
173
175
addMiscItems(inventory, request.Shards);
174
176
await inventory.save();
175
177
break;
@@ -1731,12 +1731,27 @@ export const addFocusXpIncreases = (inventory: TInventoryDatabaseDocument, focus
1731
1731
AP_ANY
1732
1732
}
1733
1733
1734
inventory.FocusXP ??= { AP_ATTACK: 0, AP_DEFENSE: 0, AP_TACTIC: 0, AP_POWER: 0, AP_WARD: 0 };
1735
inventory.FocusXP.AP_ATTACK += focusXpPlus[FocusType.AP_ATTACK];
1736
inventory.FocusXP.AP_DEFENSE += focusXpPlus[FocusType.AP_DEFENSE];
1737
inventory.FocusXP.AP_TACTIC += focusXpPlus[FocusType.AP_TACTIC];
1738
inventory.FocusXP.AP_POWER += focusXpPlus[FocusType.AP_POWER];
1739
inventory.FocusXP.AP_WARD += focusXpPlus[FocusType.AP_WARD];
1734
inventory.FocusXP ??= {};
1735
if (focusXpPlus[FocusType.AP_ATTACK]) {
1736
inventory.FocusXP.AP_ATTACK ??= 0;
1737
inventory.FocusXP.AP_ATTACK += focusXpPlus[FocusType.AP_ATTACK];
1738
}
1739
if (focusXpPlus[FocusType.AP_DEFENSE]) {
1740
inventory.FocusXP.AP_DEFENSE ??= 0;
1741
inventory.FocusXP.AP_DEFENSE += focusXpPlus[FocusType.AP_DEFENSE];
1742
}
1743
if (focusXpPlus[FocusType.AP_TACTIC]) {
1744
inventory.FocusXP.AP_TACTIC ??= 0;
1745
inventory.FocusXP.AP_TACTIC += focusXpPlus[FocusType.AP_TACTIC];
1746
}
1747
if (focusXpPlus[FocusType.AP_POWER]) {
1748
inventory.FocusXP.AP_POWER ??= 0;
1749
inventory.FocusXP.AP_POWER += focusXpPlus[FocusType.AP_POWER];
1750
}
1751
if (focusXpPlus[FocusType.AP_WARD]) {
1752
inventory.FocusXP.AP_WARD ??= 0;
1753
inventory.FocusXP.AP_WARD += focusXpPlus[FocusType.AP_WARD];
1754
}
1740
1755
1741
1756
if (!config.noDailyFocusLimit) {
1742
1757
inventory.DailyFocus -= focusXpPlus.reduce((a, b) => a + b, 0);
@@ -641,11 +641,11 @@ export interface IFocusUpgrade {
641
641
}
642
642
643
643
export interface IFocusXP {
644
AP_POWER: number;
645
AP_TACTIC: number;
646
AP_DEFENSE: number;
647
AP_ATTACK: number;
648
AP_WARD: number;
644
AP_POWER?: number;
645
AP_TACTIC?: number;
646
AP_DEFENSE?: number;
647
AP_ATTACK?: number;
648
AP_WARD?: number;
649
649
}
650
650
651
651
export type TFocusPolarity = keyof IFocusXP;