sekai-calculator 0.6.3 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -438,8 +438,8 @@ class LiveCalculator {
438
438
  ? skillDetails
439
439
  : (liveType === exports.LiveType.MULTI
440
440
  ? duplicateObj(LiveCalculator.getMultiLiveSkill(deckDetail), 6)
441
- : [...[...deckDetail.skill].sort((a, b) => a.scoreUp - b.scoreUp),
442
- deckDetail.skill[0]]);
441
+ : [...[...deckDetail.cards].sort((a, b) => a.scoreUp - b.scoreUp),
442
+ deckDetail.cards[0]]);
443
443
  const baseRate = LiveCalculator.getBaseScore(musicMeta, liveType);
444
444
  const skillScores = [...LiveCalculator.getSkillScore(musicMeta, liveType)];
445
445
  const skillRate = skillDetails === undefined
@@ -457,9 +457,11 @@ class LiveCalculator {
457
457
  };
458
458
  }
459
459
  static getMultiLiveSkill(deckDetail) {
460
- const scoreUp = deckDetail.skill.reduce((v, it, i) => v + (i === 0 ? it.scoreUp : (it.scoreUp / 5)), 0);
461
- const lifeRecovery = deckDetail.skill[0].lifeRecovery;
460
+ const scoreUp = deckDetail.cards.reduce((v, it, i) => v + (i === 0 ? it.scoreUp : (it.scoreUp / 5)), 0);
461
+ const lifeRecovery = deckDetail.cards[0].lifeRecovery;
462
462
  return {
463
+ cardId: 0,
464
+ power: 0,
463
465
  scoreUp,
464
466
  lifeRecovery
465
467
  };
@@ -471,6 +473,8 @@ class LiveCalculator {
471
473
  const ret = [];
472
474
  for (let i = 0; i < 6; ++i) {
473
475
  ret.push({
476
+ cardId: 0,
477
+ power: 0,
474
478
  scoreUp: 0,
475
479
  lifeRecovery: 0
476
480
  });
@@ -485,7 +489,7 @@ class LiveCalculator {
485
489
  const deckDetail = await this.deckCalculator.getDeckDetail(deckCards);
486
490
  const skills = liveType === exports.LiveType.MULTI
487
491
  ? undefined
488
- : LiveCalculator.getSoloLiveSkill(liveSkills, deckDetail.skill);
492
+ : LiveCalculator.getSoloLiveSkill(liveSkills, deckDetail.cards);
489
493
  return LiveCalculator.getLiveDetailByDeck(deckDetail, musicMeta, liveType, skills);
490
494
  }
491
495
  static getLiveScoreByDeck(deckCards, honorBonus, musicMeta, liveType) {
@@ -567,19 +571,31 @@ class DeckCalculator {
567
571
  const map = new Map();
568
572
  for (const cardDetail of cardDetails) {
569
573
  computeWithDefault(map, cardDetail.attr, 0, it => it + 1);
570
- cardDetail.units.forEach(key => { computeWithDefault(map, key, 0, it => it + 1); });
574
+ cardDetail.units.forEach(key => {
575
+ computeWithDefault(map, key, 0, it => it + 1);
576
+ });
571
577
  }
572
- const power = cardDetails.reduce((v, cardDetail) => v + cardDetail.units.reduce((vv, unit) => Math.max(vv, cardDetail.power.get(unit, getOrThrow(map, unit), getOrThrow(map, cardDetail.attr))), 0), 0) + honorBonus;
573
- const skill = cardDetails.map(cardDetail => {
578
+ const cardPower = new Map();
579
+ cardDetails.forEach(cardDetail => {
580
+ cardPower.set(cardDetail.cardId, cardDetail.units.reduce((vv, unit) => Math.max(vv, cardDetail.power.get(unit, getOrThrow(map, unit), getOrThrow(map, cardDetail.attr))), 0));
581
+ });
582
+ const power = cardDetails.reduce((v, cardDetail) => v + getOrThrow(cardPower, cardDetail.cardId), 0) + honorBonus;
583
+ const cards = cardDetails.map(cardDetail => {
574
584
  const scoreUp = cardDetail.units.reduce((vv, unit) => Math.max(vv, cardDetail.scoreSkill.get(unit, getOrThrow(map, unit), 1)), 0);
575
585
  return {
576
586
  cardId: cardDetail.cardId,
587
+ power: getOrThrow(cardPower, cardDetail.cardId),
588
+ eventBonus: cardDetail.eventBonus,
577
589
  scoreUp,
578
590
  lifeRecovery: cardDetail.lifeSkill
579
591
  };
580
592
  });
581
593
  const eventBonus = EventCalculator.getDeckBonus(cardDetails);
582
- return { power, eventBonus, skill };
594
+ return {
595
+ power,
596
+ eventBonus,
597
+ cards
598
+ };
583
599
  }
584
600
  async getDeckDetail(deckCards) {
585
601
  return DeckCalculator.getDeckDetailByCards(await this.cardCalculator.batchGetCardDetail(deckCards), await this.getHonorBonusPower());
@@ -628,7 +644,7 @@ class BaseDeckRecommend {
628
644
  score,
629
645
  power: deckDetail.power,
630
646
  eventBonus: deckDetail.eventBonus,
631
- deckCards
647
+ deckCards: deckDetail.cards
632
648
  }];
633
649
  }
634
650
  let ans = [];
package/dist/index.d.ts CHANGED
@@ -117,16 +117,37 @@ interface CardConfig {
117
117
  skillMax?: boolean;
118
118
  }
119
119
 
120
+ declare class DeckCalculator {
121
+ private readonly dataProvider;
122
+ private readonly cardCalculator;
123
+ constructor(dataProvider: DataProvider);
124
+ getHonorBonusPower(): Promise<number>;
125
+ static getDeckDetailByCards(cardDetails: CardDetail[], honorBonus: number): DeckDetail;
126
+ getDeckDetail(deckCards: UserCard[]): Promise<DeckDetail>;
127
+ }
128
+ interface DeckDetail {
129
+ power: number;
130
+ eventBonus?: number;
131
+ cards: DeckCardDetail[];
132
+ }
133
+ interface DeckCardDetail {
134
+ cardId: number;
135
+ power: number;
136
+ eventBonus?: number;
137
+ scoreUp: number;
138
+ lifeRecovery: number;
139
+ }
140
+
120
141
  declare class DeckService {
121
142
  private readonly dataProvider;
122
143
  constructor(dataProvider: DataProvider);
123
144
  getUserCard(cardId: number): Promise<UserCard>;
124
145
  getDeck(deckId: number): Promise<UserDeck>;
125
146
  getDeckCards(userDeck: UserDeck): Promise<UserCard[]>;
126
- static toUserDeck(userCards: CardDetail[], userId?: number, deckId?: number, name?: string): UserDeck;
147
+ static toUserDeck(userCards: DeckCardDetail[], userId?: number, deckId?: number, name?: string): UserDeck;
127
148
  getChallengeLiveSoloDeck(characterId: number): Promise<UserChallengeLiveSoloDeck>;
128
149
  getChallengeLiveSoloDeckCards(deck: UserChallengeLiveSoloDeck): Promise<UserCard[]>;
129
- static toUserChallengeLiveSoloDeck(userCards: CardDetail[], characterId: number): UserChallengeLiveSoloDeck;
150
+ static toUserChallengeLiveSoloDeck(userCards: DeckCardDetail[], characterId: number): UserChallengeLiveSoloDeck;
130
151
  }
131
152
 
132
153
  interface CommonResource {
@@ -189,25 +210,6 @@ declare class CardSkillCalculator {
189
210
  private getSkillDetail;
190
211
  }
191
212
 
192
- declare class DeckCalculator {
193
- private readonly dataProvider;
194
- private readonly cardCalculator;
195
- constructor(dataProvider: DataProvider);
196
- getHonorBonusPower(): Promise<number>;
197
- static getDeckDetailByCards(cardDetails: CardDetail[], honorBonus: number): DeckDetail;
198
- getDeckDetail(deckCards: UserCard[]): Promise<DeckDetail>;
199
- }
200
- interface DeckDetail {
201
- power: number;
202
- eventBonus?: number;
203
- skill: SkillDetail[];
204
- }
205
- interface SkillDetail {
206
- cardId?: number;
207
- scoreUp: number;
208
- lifeRecovery: number;
209
- }
210
-
211
213
  declare class CardEventCalculator {
212
214
  private readonly dataProvider;
213
215
  constructor(dataProvider: DataProvider);
@@ -237,7 +239,7 @@ declare class LiveCalculator {
237
239
  getMusicMeta(musicId: number, musicDiff: string): Promise<MusicMeta>;
238
240
  private static getBaseScore;
239
241
  private static getSkillScore;
240
- static getLiveDetailByDeck(deckDetail: DeckDetail, musicMeta: MusicMeta, liveType: LiveType, skillDetails?: SkillDetail[] | undefined, multiPowerSum?: number): LiveDetail;
242
+ static getLiveDetailByDeck(deckDetail: DeckDetail, musicMeta: MusicMeta, liveType: LiveType, skillDetails?: DeckCardDetail[] | undefined, multiPowerSum?: number): LiveDetail;
241
243
  private static getMultiLiveSkill;
242
244
  private static getSoloLiveSkill;
243
245
  getLiveDetail(deckCards: UserCard[], musicMeta: MusicMeta, liveType: LiveType, liveSkills?: LiveSkill[] | undefined): Promise<LiveDetail>;
@@ -288,7 +290,7 @@ interface RecommendDeck {
288
290
  score: number;
289
291
  power: number;
290
292
  eventBonus?: number;
291
- deckCards: CardDetail[];
293
+ deckCards: DeckCardDetail[];
292
294
  }
293
295
  interface DeckRecommendConfig {
294
296
  musicMeta: MusicMeta;
@@ -567,4 +569,4 @@ interface UserHonor {
567
569
  level: number;
568
570
  }
569
571
 
570
- export { AreaItemLevel, BaseDeckRecommend, CachedDataProvider, Card, CardCalculator, CardConfig, CardDetail, CardEpisode, CardEventCalculator, CardPowerCalculator, CardRarity, CardSkillCalculator, ChallengeLiveDeckRecommend, CharacterRank, DataProvider, DeckCalculator, DeckDetail, DeckRecommendConfig, DeckService, EventCalculator, EventCard, EventDeckBonus, EventDeckRecommend, EventRarityBonusRate, GameCharacter, GameCharacterUnit, Honor, LiveCalculator, LiveDetail, LiveSkill, LiveType, MasterLesson, Music, MusicDifficulty, MusicMeta, MusicRecommend, RecommendDeck, ScoreFunction, Skill, SkillDetail, User, UserArea, UserCard, UserChallengeLiveSoloDeck, UserCharacter, UserDeck, UserHonor };
572
+ export { AreaItemLevel, BaseDeckRecommend, CachedDataProvider, Card, CardCalculator, CardConfig, CardDetail, CardEpisode, CardEventCalculator, CardPowerCalculator, CardRarity, CardSkillCalculator, ChallengeLiveDeckRecommend, CharacterRank, DataProvider, DeckCalculator, DeckCardDetail, DeckDetail, DeckRecommendConfig, DeckService, EventCalculator, EventCard, EventDeckBonus, EventDeckRecommend, EventRarityBonusRate, GameCharacter, GameCharacterUnit, Honor, LiveCalculator, LiveDetail, LiveSkill, LiveType, MasterLesson, Music, MusicDifficulty, MusicMeta, MusicRecommend, RecommendDeck, ScoreFunction, Skill, User, UserArea, UserCard, UserChallengeLiveSoloDeck, UserCharacter, UserDeck, UserHonor };
package/dist/index.mjs CHANGED
@@ -436,8 +436,8 @@ class LiveCalculator {
436
436
  ? skillDetails
437
437
  : (liveType === LiveType.MULTI
438
438
  ? duplicateObj(LiveCalculator.getMultiLiveSkill(deckDetail), 6)
439
- : [...[...deckDetail.skill].sort((a, b) => a.scoreUp - b.scoreUp),
440
- deckDetail.skill[0]]);
439
+ : [...[...deckDetail.cards].sort((a, b) => a.scoreUp - b.scoreUp),
440
+ deckDetail.cards[0]]);
441
441
  const baseRate = LiveCalculator.getBaseScore(musicMeta, liveType);
442
442
  const skillScores = [...LiveCalculator.getSkillScore(musicMeta, liveType)];
443
443
  const skillRate = skillDetails === undefined
@@ -455,9 +455,11 @@ class LiveCalculator {
455
455
  };
456
456
  }
457
457
  static getMultiLiveSkill(deckDetail) {
458
- const scoreUp = deckDetail.skill.reduce((v, it, i) => v + (i === 0 ? it.scoreUp : (it.scoreUp / 5)), 0);
459
- const lifeRecovery = deckDetail.skill[0].lifeRecovery;
458
+ const scoreUp = deckDetail.cards.reduce((v, it, i) => v + (i === 0 ? it.scoreUp : (it.scoreUp / 5)), 0);
459
+ const lifeRecovery = deckDetail.cards[0].lifeRecovery;
460
460
  return {
461
+ cardId: 0,
462
+ power: 0,
461
463
  scoreUp,
462
464
  lifeRecovery
463
465
  };
@@ -469,6 +471,8 @@ class LiveCalculator {
469
471
  const ret = [];
470
472
  for (let i = 0; i < 6; ++i) {
471
473
  ret.push({
474
+ cardId: 0,
475
+ power: 0,
472
476
  scoreUp: 0,
473
477
  lifeRecovery: 0
474
478
  });
@@ -483,7 +487,7 @@ class LiveCalculator {
483
487
  const deckDetail = await this.deckCalculator.getDeckDetail(deckCards);
484
488
  const skills = liveType === LiveType.MULTI
485
489
  ? undefined
486
- : LiveCalculator.getSoloLiveSkill(liveSkills, deckDetail.skill);
490
+ : LiveCalculator.getSoloLiveSkill(liveSkills, deckDetail.cards);
487
491
  return LiveCalculator.getLiveDetailByDeck(deckDetail, musicMeta, liveType, skills);
488
492
  }
489
493
  static getLiveScoreByDeck(deckCards, honorBonus, musicMeta, liveType) {
@@ -565,19 +569,31 @@ class DeckCalculator {
565
569
  const map = new Map();
566
570
  for (const cardDetail of cardDetails) {
567
571
  computeWithDefault(map, cardDetail.attr, 0, it => it + 1);
568
- cardDetail.units.forEach(key => { computeWithDefault(map, key, 0, it => it + 1); });
572
+ cardDetail.units.forEach(key => {
573
+ computeWithDefault(map, key, 0, it => it + 1);
574
+ });
569
575
  }
570
- const power = cardDetails.reduce((v, cardDetail) => v + cardDetail.units.reduce((vv, unit) => Math.max(vv, cardDetail.power.get(unit, getOrThrow(map, unit), getOrThrow(map, cardDetail.attr))), 0), 0) + honorBonus;
571
- const skill = cardDetails.map(cardDetail => {
576
+ const cardPower = new Map();
577
+ cardDetails.forEach(cardDetail => {
578
+ cardPower.set(cardDetail.cardId, cardDetail.units.reduce((vv, unit) => Math.max(vv, cardDetail.power.get(unit, getOrThrow(map, unit), getOrThrow(map, cardDetail.attr))), 0));
579
+ });
580
+ const power = cardDetails.reduce((v, cardDetail) => v + getOrThrow(cardPower, cardDetail.cardId), 0) + honorBonus;
581
+ const cards = cardDetails.map(cardDetail => {
572
582
  const scoreUp = cardDetail.units.reduce((vv, unit) => Math.max(vv, cardDetail.scoreSkill.get(unit, getOrThrow(map, unit), 1)), 0);
573
583
  return {
574
584
  cardId: cardDetail.cardId,
585
+ power: getOrThrow(cardPower, cardDetail.cardId),
586
+ eventBonus: cardDetail.eventBonus,
575
587
  scoreUp,
576
588
  lifeRecovery: cardDetail.lifeSkill
577
589
  };
578
590
  });
579
591
  const eventBonus = EventCalculator.getDeckBonus(cardDetails);
580
- return { power, eventBonus, skill };
592
+ return {
593
+ power,
594
+ eventBonus,
595
+ cards
596
+ };
581
597
  }
582
598
  async getDeckDetail(deckCards) {
583
599
  return DeckCalculator.getDeckDetailByCards(await this.cardCalculator.batchGetCardDetail(deckCards), await this.getHonorBonusPower());
@@ -626,7 +642,7 @@ class BaseDeckRecommend {
626
642
  score,
627
643
  power: deckDetail.power,
628
644
  eventBonus: deckDetail.eventBonus,
629
- deckCards
645
+ deckCards: deckDetail.cards
630
646
  }];
631
647
  }
632
648
  let ans = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sekai-calculator",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Project SEKAI Calculator for deck power, live score, event point and more.",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",