sekai-calculator 0.6.3 → 0.6.4

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,30 @@ 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),
577
588
  scoreUp,
578
589
  lifeRecovery: cardDetail.lifeSkill
579
590
  };
580
591
  });
581
592
  const eventBonus = EventCalculator.getDeckBonus(cardDetails);
582
- return { power, eventBonus, skill };
593
+ return {
594
+ power,
595
+ eventBonus,
596
+ cards
597
+ };
583
598
  }
584
599
  async getDeckDetail(deckCards) {
585
600
  return DeckCalculator.getDeckDetailByCards(await this.cardCalculator.batchGetCardDetail(deckCards), await this.getHonorBonusPower());
@@ -628,7 +643,7 @@ class BaseDeckRecommend {
628
643
  score,
629
644
  power: deckDetail.power,
630
645
  eventBonus: deckDetail.eventBonus,
631
- deckCards
646
+ deckCards: deckDetail.cards
632
647
  }];
633
648
  }
634
649
  let ans = [];
package/dist/index.d.ts CHANGED
@@ -117,16 +117,36 @@ 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
+ scoreUp: number;
137
+ lifeRecovery: number;
138
+ }
139
+
120
140
  declare class DeckService {
121
141
  private readonly dataProvider;
122
142
  constructor(dataProvider: DataProvider);
123
143
  getUserCard(cardId: number): Promise<UserCard>;
124
144
  getDeck(deckId: number): Promise<UserDeck>;
125
145
  getDeckCards(userDeck: UserDeck): Promise<UserCard[]>;
126
- static toUserDeck(userCards: CardDetail[], userId?: number, deckId?: number, name?: string): UserDeck;
146
+ static toUserDeck(userCards: DeckCardDetail[], userId?: number, deckId?: number, name?: string): UserDeck;
127
147
  getChallengeLiveSoloDeck(characterId: number): Promise<UserChallengeLiveSoloDeck>;
128
148
  getChallengeLiveSoloDeckCards(deck: UserChallengeLiveSoloDeck): Promise<UserCard[]>;
129
- static toUserChallengeLiveSoloDeck(userCards: CardDetail[], characterId: number): UserChallengeLiveSoloDeck;
149
+ static toUserChallengeLiveSoloDeck(userCards: DeckCardDetail[], characterId: number): UserChallengeLiveSoloDeck;
130
150
  }
131
151
 
132
152
  interface CommonResource {
@@ -189,25 +209,6 @@ declare class CardSkillCalculator {
189
209
  private getSkillDetail;
190
210
  }
191
211
 
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
212
  declare class CardEventCalculator {
212
213
  private readonly dataProvider;
213
214
  constructor(dataProvider: DataProvider);
@@ -237,7 +238,7 @@ declare class LiveCalculator {
237
238
  getMusicMeta(musicId: number, musicDiff: string): Promise<MusicMeta>;
238
239
  private static getBaseScore;
239
240
  private static getSkillScore;
240
- static getLiveDetailByDeck(deckDetail: DeckDetail, musicMeta: MusicMeta, liveType: LiveType, skillDetails?: SkillDetail[] | undefined, multiPowerSum?: number): LiveDetail;
241
+ static getLiveDetailByDeck(deckDetail: DeckDetail, musicMeta: MusicMeta, liveType: LiveType, skillDetails?: DeckCardDetail[] | undefined, multiPowerSum?: number): LiveDetail;
241
242
  private static getMultiLiveSkill;
242
243
  private static getSoloLiveSkill;
243
244
  getLiveDetail(deckCards: UserCard[], musicMeta: MusicMeta, liveType: LiveType, liveSkills?: LiveSkill[] | undefined): Promise<LiveDetail>;
@@ -288,7 +289,7 @@ interface RecommendDeck {
288
289
  score: number;
289
290
  power: number;
290
291
  eventBonus?: number;
291
- deckCards: CardDetail[];
292
+ deckCards: DeckCardDetail[];
292
293
  }
293
294
  interface DeckRecommendConfig {
294
295
  musicMeta: MusicMeta;
@@ -567,4 +568,4 @@ interface UserHonor {
567
568
  level: number;
568
569
  }
569
570
 
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 };
571
+ 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,30 @@ 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),
575
586
  scoreUp,
576
587
  lifeRecovery: cardDetail.lifeSkill
577
588
  };
578
589
  });
579
590
  const eventBonus = EventCalculator.getDeckBonus(cardDetails);
580
- return { power, eventBonus, skill };
591
+ return {
592
+ power,
593
+ eventBonus,
594
+ cards
595
+ };
581
596
  }
582
597
  async getDeckDetail(deckCards) {
583
598
  return DeckCalculator.getDeckDetailByCards(await this.cardCalculator.batchGetCardDetail(deckCards), await this.getHonorBonusPower());
@@ -626,7 +641,7 @@ class BaseDeckRecommend {
626
641
  score,
627
642
  power: deckDetail.power,
628
643
  eventBonus: deckDetail.eventBonus,
629
- deckCards
644
+ deckCards: deckDetail.cards
630
645
  }];
631
646
  }
632
647
  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.4",
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",