volleyballsimtypes 0.0.78 → 0.0.79

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.
@@ -1,5 +1,5 @@
1
1
  import { InPlayEvent, InPlayEventOpts } from './in-play-event';
2
- import { PerformanceStats } from '../player';
2
+ import { PerformanceStats, Trait } from '../player';
3
3
  export declare enum ServeTypeEnum {
4
4
  UNDERHAND = 0,
5
5
  OVERHAND_TOPSPIN = 1,
@@ -22,6 +22,6 @@ export declare class Serve extends InPlayEvent {
22
22
  readonly failure: ServeFailureEnum;
23
23
  readonly type: ServeTypeEnum;
24
24
  constructor({ id, order, score, player, target, failure, type, eventType, modifier, activeTraits }: ServeOpts);
25
- static getScore(stats: PerformanceStats, type: ServeTypeEnum, modifier: number): number;
25
+ static getScore(stats: PerformanceStats, type: ServeTypeEnum, modifier: number, activeTraits: Trait[]): number;
26
26
  }
27
27
  export {};
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Serve = exports.ServeFailureEnum = exports.ServeTypeEnum = void 0;
4
4
  const in_play_event_1 = require("./in-play-event");
5
+ const player_1 = require("../player");
5
6
  var ServeTypeEnum;
6
7
  (function (ServeTypeEnum) {
7
8
  ServeTypeEnum[ServeTypeEnum["UNDERHAND"] = 0] = "UNDERHAND";
@@ -24,8 +25,16 @@ class Serve extends in_play_event_1.InPlayEvent {
24
25
  this.type = type;
25
26
  this.failure = failure;
26
27
  }
27
- static getScore(stats, type, modifier) {
28
- return Serve.calculateScore(stats, 'SERVE', ServeTypeEnum[type]) * modifier;
28
+ static getScore(stats, type, modifier, activeTraits) {
29
+ let score = Serve.calculateScore(stats, 'SERVE', ServeTypeEnum[type]) * modifier;
30
+ for (const trait of activeTraits) {
31
+ switch (true) {
32
+ case trait === player_1.Trait.METEOR_SERVE: {
33
+ score *= player_1.Trait.METEOR_SERVE.modifier;
34
+ }
35
+ }
36
+ }
37
+ return score;
29
38
  }
30
39
  }
31
40
  exports.Serve = Serve;
@@ -45,7 +45,7 @@ const rally_event_1 = require("./rally-event");
45
45
  });
46
46
  // getScore Tests
47
47
  (0, globals_1.test)('Should get the correct score for all Serve types', () => {
48
- (0, globals_1.expect)(serve_1.Serve.getScore(serve.player.stats, serve.type, 1)).toBe(6);
49
- (0, globals_1.expect)(serve_1.Serve.getScore(failed.player.stats, failed.type, 1)).toBe(3);
48
+ (0, globals_1.expect)(serve_1.Serve.getScore(serve.player.stats, serve.type, 1, [])).toBe(6);
49
+ (0, globals_1.expect)(serve_1.Serve.getScore(failed.player.stats, failed.type, 1, [])).toBe(3);
50
50
  });
51
51
  });
@@ -17,5 +17,5 @@ export declare class Trait {
17
17
  readonly weight: number;
18
18
  private constructor();
19
19
  static getTraits(): Trait[];
20
- static assignTraitsToPlayer(roles: Role[], performanceStats: PerformanceStats): Trait[];
20
+ static assignTraits(roles: Role[], performanceStats: PerformanceStats): Trait[];
21
21
  }
@@ -16,7 +16,7 @@ class Trait {
16
16
  static getTraits() {
17
17
  return [Trait.GUARDIAN, Trait.MARKSMAN, Trait.METEOR_SERVE, Trait.VIGOROUS, Trait.MOVING_WALL, Trait.MASTER_MIND];
18
18
  }
19
- static assignTraitsToPlayer(roles, performanceStats) {
19
+ static assignTraits(roles, performanceStats) {
20
20
  const qualifiedTraits = this.getTraits().filter(trait => {
21
21
  return (trait.roles.length < 1 || trait.roles.some(role => roles.includes(role))) &&
22
22
  stats_1.GeneralStat.calculateScore(performanceStats, trait.stat) >= trait.statThreshold;
@@ -92,7 +92,7 @@ Trait.VIGOROUS = new Trait({
92
92
  stat: stats_1.GeneralStat.PHYSICAL,
93
93
  weight: 1
94
94
  });
95
- // Takes place of the receiver and increases reception score by 25%. Can only trigger in back-row.
95
+ // Takes place of the receiver and increases reception score by 25%, guaranteeing success. Can only trigger in back-row.
96
96
  Trait.GUARDIAN = new Trait({
97
97
  name: 'Guardian',
98
98
  roles: [role_1.Role.DEFENSIVE_SPECIALIST, role_1.Role.LIBERO],
@@ -1,5 +1,5 @@
1
1
  import { InPlayEvent, InPlayEventOpts } from './in-play-event';
2
- import { PerformanceStats } from '../player';
2
+ import { PerformanceStats, Trait } from '../player';
3
3
  export declare enum ServeTypeEnum {
4
4
  UNDERHAND = 0,
5
5
  OVERHAND_TOPSPIN = 1,
@@ -22,6 +22,6 @@ export declare class Serve extends InPlayEvent {
22
22
  readonly failure: ServeFailureEnum;
23
23
  readonly type: ServeTypeEnum;
24
24
  constructor({ id, order, score, player, target, failure, type, eventType, modifier, activeTraits }: ServeOpts);
25
- static getScore(stats: PerformanceStats, type: ServeTypeEnum, modifier: number): number;
25
+ static getScore(stats: PerformanceStats, type: ServeTypeEnum, modifier: number, activeTraits: Trait[]): number;
26
26
  }
27
27
  export {};
@@ -1,4 +1,5 @@
1
1
  import { InPlayEvent } from './in-play-event';
2
+ import { Trait } from '../player';
2
3
  export var ServeTypeEnum;
3
4
  (function (ServeTypeEnum) {
4
5
  ServeTypeEnum[ServeTypeEnum["UNDERHAND"] = 0] = "UNDERHAND";
@@ -21,7 +22,15 @@ export class Serve extends InPlayEvent {
21
22
  this.type = type;
22
23
  this.failure = failure;
23
24
  }
24
- static getScore(stats, type, modifier) {
25
- return Serve.calculateScore(stats, 'SERVE', ServeTypeEnum[type]) * modifier;
25
+ static getScore(stats, type, modifier, activeTraits) {
26
+ let score = Serve.calculateScore(stats, 'SERVE', ServeTypeEnum[type]) * modifier;
27
+ for (const trait of activeTraits) {
28
+ switch (true) {
29
+ case trait === Trait.METEOR_SERVE: {
30
+ score *= Trait.METEOR_SERVE.modifier;
31
+ }
32
+ }
33
+ }
34
+ return score;
26
35
  }
27
36
  }
@@ -43,7 +43,7 @@ describe('Serve Test Module', () => {
43
43
  });
44
44
  // getScore Tests
45
45
  test('Should get the correct score for all Serve types', () => {
46
- expect(Serve.getScore(serve.player.stats, serve.type, 1)).toBe(6);
47
- expect(Serve.getScore(failed.player.stats, failed.type, 1)).toBe(3);
46
+ expect(Serve.getScore(serve.player.stats, serve.type, 1, [])).toBe(6);
47
+ expect(Serve.getScore(failed.player.stats, failed.type, 1, [])).toBe(3);
48
48
  });
49
49
  });
@@ -17,5 +17,5 @@ export declare class Trait {
17
17
  readonly weight: number;
18
18
  private constructor();
19
19
  static getTraits(): Trait[];
20
- static assignTraitsToPlayer(roles: Role[], performanceStats: PerformanceStats): Trait[];
20
+ static assignTraits(roles: Role[], performanceStats: PerformanceStats): Trait[];
21
21
  }
@@ -13,7 +13,7 @@ export class Trait {
13
13
  static getTraits() {
14
14
  return [Trait.GUARDIAN, Trait.MARKSMAN, Trait.METEOR_SERVE, Trait.VIGOROUS, Trait.MOVING_WALL, Trait.MASTER_MIND];
15
15
  }
16
- static assignTraitsToPlayer(roles, performanceStats) {
16
+ static assignTraits(roles, performanceStats) {
17
17
  const qualifiedTraits = this.getTraits().filter(trait => {
18
18
  return (trait.roles.length < 1 || trait.roles.some(role => roles.includes(role))) &&
19
19
  GeneralStat.calculateScore(performanceStats, trait.stat) >= trait.statThreshold;
@@ -88,7 +88,7 @@ Trait.VIGOROUS = new Trait({
88
88
  stat: GeneralStat.PHYSICAL,
89
89
  weight: 1
90
90
  });
91
- // Takes place of the receiver and increases reception score by 25%. Can only trigger in back-row.
91
+ // Takes place of the receiver and increases reception score by 25%, guaranteeing success. Can only trigger in back-row.
92
92
  Trait.GUARDIAN = new Trait({
93
93
  name: 'Guardian',
94
94
  roles: [Role.DEFENSIVE_SPECIALIST, Role.LIBERO],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volleyballsimtypes",
3
- "version": "0.0.78",
3
+ "version": "0.0.79",
4
4
  "description": "vbsim types",
5
5
  "main": "./dist/cjs/src/index.js",
6
6
  "module": "./dist/esm/src/index.js",