volleyballsimtypes 0.0.168 → 0.0.170

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.
Files changed (49) hide show
  1. package/dist/cjs/src/data/common/index.d.ts +0 -1
  2. package/dist/cjs/src/data/common/index.js +0 -1
  3. package/dist/cjs/src/data/models/performance-stats.d.ts +2 -2
  4. package/dist/cjs/src/data/models/performance-stats.js +1 -1
  5. package/dist/cjs/src/data/transformers/performance-stats.js +2 -2
  6. package/dist/cjs/src/service/event/events.d.ts +93 -0
  7. package/dist/cjs/src/{data/common → service/event}/events.js +4 -5
  8. package/dist/cjs/src/service/event/index.d.ts +1 -0
  9. package/dist/cjs/src/service/event/index.js +1 -0
  10. package/dist/cjs/src/service/event/rally-event.d.ts +3 -3
  11. package/dist/cjs/src/service/player/performance-stats.d.ts +1 -1
  12. package/dist/cjs/src/service/player/performance-stats.js +1 -1
  13. package/dist/cjs/src/service/player/stats.js +1 -2
  14. package/dist/cjs/src/service/player/trait.d.ts +34 -8
  15. package/dist/cjs/src/service/player/trait.js +41 -11
  16. package/dist/cjs/src/service/utils/index.d.ts +2 -0
  17. package/dist/cjs/src/service/utils/index.js +2 -0
  18. package/dist/cjs/src/service/utils/number-utils.d.ts +1 -0
  19. package/dist/cjs/src/service/utils/number-utils.js +7 -0
  20. package/dist/cjs/src/service/utils/rng-utils.d.ts +7 -0
  21. package/dist/cjs/src/service/utils/rng-utils.js +32 -0
  22. package/dist/cjs/src/stat-config/roles.json +5 -5
  23. package/dist/cjs/src/stat-config/traits.json +61 -25
  24. package/dist/esm/src/data/common/index.d.ts +0 -1
  25. package/dist/esm/src/data/common/index.js +0 -1
  26. package/dist/esm/src/data/models/performance-stats.d.ts +2 -2
  27. package/dist/esm/src/data/models/performance-stats.js +1 -1
  28. package/dist/esm/src/data/transformers/performance-stats.js +2 -2
  29. package/dist/esm/src/service/event/events.d.ts +93 -0
  30. package/dist/esm/src/{data/common → service/event}/events.js +4 -5
  31. package/dist/esm/src/service/event/index.d.ts +1 -0
  32. package/dist/esm/src/service/event/index.js +1 -0
  33. package/dist/esm/src/service/event/rally-event.d.ts +3 -3
  34. package/dist/esm/src/service/player/performance-stats.d.ts +1 -1
  35. package/dist/esm/src/service/player/performance-stats.js +1 -1
  36. package/dist/esm/src/service/player/stats.js +1 -2
  37. package/dist/esm/src/service/player/trait.d.ts +34 -8
  38. package/dist/esm/src/service/player/trait.js +41 -11
  39. package/dist/esm/src/service/utils/index.d.ts +2 -0
  40. package/dist/esm/src/service/utils/index.js +2 -0
  41. package/dist/esm/src/service/utils/number-utils.d.ts +1 -0
  42. package/dist/esm/src/service/utils/number-utils.js +3 -0
  43. package/dist/esm/src/service/utils/rng-utils.d.ts +7 -0
  44. package/dist/esm/src/service/utils/rng-utils.js +27 -0
  45. package/dist/esm/src/stat-config/roles.json +5 -5
  46. package/dist/esm/src/stat-config/traits.json +61 -25
  47. package/package.json +1 -1
  48. package/dist/cjs/src/data/common/events.d.ts +0 -82
  49. package/dist/esm/src/data/common/events.d.ts +0 -82
@@ -19,7 +19,7 @@ function transformToAttributes(player) {
19
19
  setting: player.stats.setting,
20
20
  spike: player.stats.spike,
21
21
  stamina: player.stats.stamina,
22
- saving: player.stats.saving
22
+ reflex: player.stats.reflex
23
23
  };
24
24
  }
25
25
  function transformToObject(model) {
@@ -41,7 +41,7 @@ function transformToObject(model) {
41
41
  focus: model.focus,
42
42
  defense: model.defense,
43
43
  stamina: model.stamina,
44
- saving: model.saving
44
+ reflex: model.reflex
45
45
  });
46
46
  }
47
47
  export { transformToObject as transformToPerformanceStats, transformToAttributes as transformFromPerformanceStats };
@@ -0,0 +1,93 @@
1
+ export declare enum EventTypeEnum {
2
+ LIBERO_REPLACEMENT = 0,
3
+ SUBSTITUTION = 1,
4
+ SERVE = 2,
5
+ RECEPTION = 3,
6
+ SET = 4,
7
+ SPIKE = 5,
8
+ BLOCK = 6
9
+ }
10
+ export type EventType = EventTypeEnum.LIBERO_REPLACEMENT | EventTypeEnum.SUBSTITUTION | EventTypeEnum.SERVE | EventTypeEnum.RECEPTION | EventTypeEnum.SET | EventTypeEnum.SPIKE | EventTypeEnum.BLOCK;
11
+ export declare enum BlockFailureEnum {
12
+ NO_FAILURE = 0,
13
+ MISS = 1,
14
+ FAULT = 2,
15
+ OUT_OF_BOUNDS = 3,
16
+ WIPE = 4,
17
+ TOOL = 5
18
+ }
19
+ export type BlockFailure = BlockFailureEnum.NO_FAILURE | BlockFailureEnum.MISS | BlockFailureEnum.FAULT | BlockFailureEnum.OUT_OF_BOUNDS | BlockFailureEnum.WIPE | BlockFailureEnum.TOOL;
20
+ export declare enum BlockTypeEnum {
21
+ NO_BLOCKER = 0,
22
+ SINGLE = 1,
23
+ DOUBLE = 2,
24
+ TRIPLE = 3
25
+ }
26
+ export type BlockType = BlockTypeEnum.NO_BLOCKER | BlockTypeEnum.SINGLE | BlockTypeEnum.DOUBLE | BlockTypeEnum.TRIPLE;
27
+ export declare enum LiberoReplacementTypeEnum {
28
+ LIBERO_IN = 0,
29
+ LIBERO_OUT = 1
30
+ }
31
+ export type LiberoReplacementType = LiberoReplacementTypeEnum.LIBERO_IN | LiberoReplacementTypeEnum.LIBERO_OUT;
32
+ export declare enum ReceptionTypeEnum {
33
+ DIG = 0,
34
+ OVERHAND = 1,
35
+ ONE_HAND = 2,
36
+ OTHER_BODY_PART = 3
37
+ }
38
+ export type ReceptionType = ReceptionTypeEnum.DIG | ReceptionTypeEnum.OVERHAND | ReceptionTypeEnum.ONE_HAND | ReceptionTypeEnum.OTHER_BODY_PART;
39
+ export declare enum ReceptionFailureEnum {
40
+ NO_FAILURE = 0,
41
+ FAULT = 1,
42
+ MISS = 2,
43
+ OUT_OF_BOUNDS = 3,
44
+ BAD_PASS = 4
45
+ }
46
+ export type ReceptionFailure = ReceptionFailureEnum.NO_FAILURE | ReceptionFailureEnum.FAULT | ReceptionFailureEnum.MISS | ReceptionFailureEnum.OUT_OF_BOUNDS | ReceptionFailureEnum.BAD_PASS;
47
+ export declare enum ServeTypeEnum {
48
+ OVERHAND_TOPSPIN = 0,
49
+ OVERHAND_FLOAT = 1,
50
+ JUMP_TOPSPIN = 2,
51
+ JUMP_FLOAT = 3
52
+ }
53
+ export type ServeType = ServeTypeEnum.OVERHAND_TOPSPIN | ServeTypeEnum.OVERHAND_FLOAT | ServeTypeEnum.JUMP_TOPSPIN | ServeTypeEnum.JUMP_FLOAT;
54
+ export declare enum ServeFailureEnum {
55
+ NO_FAILURE = 0,
56
+ FAULT = 1,
57
+ MISS = 2,
58
+ NET = 3,
59
+ OUT_OF_BOUNDS = 4
60
+ }
61
+ export type ServeFailure = ServeFailureEnum.NO_FAILURE | ServeFailureEnum.FAULT | ServeFailureEnum.MISS | ServeFailureEnum.NET | ServeFailureEnum.OUT_OF_BOUNDS;
62
+ export declare enum SetTypeEnum {
63
+ OVERHAND = 0,
64
+ UNDERHAND = 1,
65
+ SPIKE = 2,
66
+ DUMP = 3
67
+ }
68
+ export type SetType = SetTypeEnum.OVERHAND | SetTypeEnum.UNDERHAND | SetTypeEnum.SPIKE | SetTypeEnum.DUMP;
69
+ export declare enum SetFailureEnum {
70
+ NO_FAILURE = 0,
71
+ FAULT = 1,
72
+ MISS = 2,
73
+ BAD_PASS = 3,
74
+ OUT_OF_BOUNDS = 4
75
+ }
76
+ export type SetFailure = SetFailureEnum.NO_FAILURE | SetFailureEnum.FAULT | SetFailureEnum.MISS | SetFailureEnum.BAD_PASS | SetFailureEnum.OUT_OF_BOUNDS;
77
+ export declare enum SpikeTypeEnum {
78
+ CROSS_SHOT = 0,
79
+ LINE_SHOT = 1,
80
+ TOOL_SHOT = 2,
81
+ TIP = 3,
82
+ DOWN_BALL = 4,
83
+ OVERHAND = 5
84
+ }
85
+ export type SpikeType = SpikeTypeEnum.CROSS_SHOT | SpikeTypeEnum.LINE_SHOT | SpikeTypeEnum.TOOL_SHOT | SpikeTypeEnum.TIP | SpikeTypeEnum.DOWN_BALL | SpikeTypeEnum.OVERHAND;
86
+ export declare enum SpikeFailureEnum {
87
+ NO_FAILURE = 0,
88
+ FAULT = 1,
89
+ MISS = 2,
90
+ OUT_OF_BOUNDS = 3,
91
+ NET = 4
92
+ }
93
+ export type SpikeFailure = SpikeFailureEnum.NO_FAILURE | SpikeFailureEnum.FAULT | SpikeFailureEnum.MISS | SpikeFailureEnum.OUT_OF_BOUNDS | SpikeFailureEnum.NET;
@@ -46,11 +46,10 @@ export var ReceptionFailureEnum;
46
46
  })(ReceptionFailureEnum || (ReceptionFailureEnum = {}));
47
47
  export var ServeTypeEnum;
48
48
  (function (ServeTypeEnum) {
49
- ServeTypeEnum[ServeTypeEnum["UNDERHAND"] = 0] = "UNDERHAND";
50
- ServeTypeEnum[ServeTypeEnum["OVERHAND_TOPSPIN"] = 1] = "OVERHAND_TOPSPIN";
51
- ServeTypeEnum[ServeTypeEnum["OVERHAND_FLOAT"] = 2] = "OVERHAND_FLOAT";
52
- ServeTypeEnum[ServeTypeEnum["JUMP_TOPSPIN"] = 3] = "JUMP_TOPSPIN";
53
- ServeTypeEnum[ServeTypeEnum["JUMP_FLOAT"] = 4] = "JUMP_FLOAT";
49
+ ServeTypeEnum[ServeTypeEnum["OVERHAND_TOPSPIN"] = 0] = "OVERHAND_TOPSPIN";
50
+ ServeTypeEnum[ServeTypeEnum["OVERHAND_FLOAT"] = 1] = "OVERHAND_FLOAT";
51
+ ServeTypeEnum[ServeTypeEnum["JUMP_TOPSPIN"] = 2] = "JUMP_TOPSPIN";
52
+ ServeTypeEnum[ServeTypeEnum["JUMP_FLOAT"] = 3] = "JUMP_FLOAT";
54
53
  })(ServeTypeEnum || (ServeTypeEnum = {}));
55
54
  export var ServeFailureEnum;
56
55
  (function (ServeFailureEnum) {
@@ -1 +1,2 @@
1
1
  export * from './rally-event';
2
+ export * from './events';
@@ -1 +1,2 @@
1
1
  export * from './rally-event';
2
+ export * from './events';
@@ -1,11 +1,11 @@
1
- import { EventTypeEnum } from '../../data';
1
+ import { EventType } from './events';
2
2
  export interface RallyEventOpts {
3
3
  readonly player: string;
4
- readonly eventType: EventTypeEnum;
4
+ readonly eventType: EventType;
5
5
  }
6
6
  export declare abstract class RallyEvent {
7
7
  readonly player: string;
8
- readonly eventType: EventTypeEnum;
8
+ readonly eventType: EventType;
9
9
  protected constructor({ eventType, player }: RallyEventOpts);
10
10
  abstract toString(): string;
11
11
  }
@@ -1,4 +1,4 @@
1
- export declare const performanceStatKeys: readonly ["setting", "serve", "spike", "quick", "power", "awareness", "attack", "backAttack", "reception", "overhand", "bump", "block", "read", "commit", "focus", "defense", "stamina", "saving"];
1
+ export declare const performanceStatKeys: readonly ["setting", "serve", "spike", "quick", "power", "awareness", "attack", "backAttack", "reception", "overhand", "bump", "block", "read", "commit", "focus", "defense", "stamina", "reflex"];
2
2
  export type PerformanceStatsKey = typeof performanceStatKeys[number];
3
3
  export type PerformanceStatsParams = Record<PerformanceStatsKey, number>;
4
4
  export interface PerformanceStats extends PerformanceStatsParams {
@@ -1,5 +1,5 @@
1
1
  export const performanceStatKeys = ['setting', 'serve', 'spike', 'quick', 'power', 'awareness', 'attack', 'backAttack',
2
- 'reception', 'overhand', 'bump', 'block', 'read', 'commit', 'focus', 'defense', 'stamina', 'saving'];
2
+ 'reception', 'overhand', 'bump', 'block', 'read', 'commit', 'focus', 'defense', 'stamina', 'reflex'];
3
3
  export class PerformanceStats {
4
4
  constructor(opts) {
5
5
  Object.assign(this, opts);
@@ -26,9 +26,8 @@ export function getMultipliers(statName, performanceStats) {
26
26
  };
27
27
  case StatsEnum.SET:
28
28
  return {
29
- setting: 0.7,
29
+ setting: 0.75,
30
30
  overhand: 0.1,
31
- bump: 0.05,
32
31
  awareness: 0.075,
33
32
  attack: 0.075
34
33
  };
@@ -1,26 +1,52 @@
1
- import { PerformanceStats } from './performance-stats';
2
1
  import { Rarity } from './rarity';
3
2
  import { EnumDataType } from 'sequelize';
4
- import { Stats } from './stats';
3
+ import { Role } from './role';
5
4
  interface TraitProps {
6
5
  readonly name: Trait;
7
6
  readonly modifier: number;
8
7
  readonly chance: number;
9
- readonly statThreshold: number;
10
- readonly stat: Stats;
11
- readonly weight: number;
8
+ readonly roles: Role[];
12
9
  }
13
10
  export declare enum TraitEnum {
11
+ /**
12
+ * When triggered, all actions before the net crossing have a bonus.
13
+ */
14
14
  MASTER_MIND = "MASTER_MIND",
15
+ /**
16
+ * When this player is part of the front row, they will always be part of the blocking block
17
+ */
15
18
  MOVING_WALL = "MOVING_WALL",
19
+ /**
20
+ * Enables the player making the second touch to spike or dump
21
+ */
22
+ SURPRISE_ATTACK = "SURPRISE_ATTACK",
23
+ /**
24
+ * Boosts the stat of the action taken and allows the player to choose the best target for the action.
25
+ */
16
26
  MARKSMAN = "MARKSMAN",
27
+ /**
28
+ * The server will perform an extra strong serve.
29
+ */
17
30
  METEOR_SERVE = "METEOR_SERVE",
31
+ /**
32
+ * The player has a 50% chance to perform an action with no energy decrease
33
+ */
18
34
  VIGOROUS = "VIGOROUS",
35
+ /**
36
+ * The player with this trait has a chance to take the receiver's place if their reception stat is higher.
37
+ */
19
38
  GUARDIAN = "GUARDIAN",
20
- FLOAT_SERVE = "FLOAT_SERVE"
39
+ /**
40
+ * Enables the server to perform a float serve, which checks against receiver overhand instead.
41
+ */
42
+ FLOAT_SERVE = "FLOAT_SERVE",
43
+ /**
44
+ * Gives the player a chance to perform a perfect reception.
45
+ */
46
+ DEFENSIVE_SPECIALIST = "DEFENSIVE_SPECIALIST"
21
47
  }
22
- export type Trait = TraitEnum.FLOAT_SERVE | TraitEnum.GUARDIAN | TraitEnum.MASTER_MIND | TraitEnum.MOVING_WALL | TraitEnum.MARKSMAN | TraitEnum.METEOR_SERVE | TraitEnum.VIGOROUS;
48
+ export type Trait = TraitEnum.FLOAT_SERVE | TraitEnum.SURPRISE_ATTACK | TraitEnum.GUARDIAN | TraitEnum.MASTER_MIND | TraitEnum.MOVING_WALL | TraitEnum.MARKSMAN | TraitEnum.METEOR_SERVE | TraitEnum.VIGOROUS | TraitEnum.DEFENSIVE_SPECIALIST;
23
49
  export declare const TraitDataType: EnumDataType<Trait>;
24
- export declare function assignTraits(performanceStats: PerformanceStats, rarity: Rarity): Trait[];
50
+ export declare function assignTraits(roles: Role[], rarity: Rarity): Trait[];
25
51
  export declare const traitMap: Map<Trait, TraitProps>;
26
52
  export {};
@@ -2,40 +2,69 @@ import { RarityEnum } from './rarity';
2
2
  import { randomInt } from 'node:crypto';
3
3
  import rawTraits from '../../stat-config/traits.json';
4
4
  import { DataTypes } from 'sequelize';
5
- import { calculateStatScore } from './stats';
5
+ import { shuffle } from '../utils';
6
6
  const traits = rawTraits;
7
7
  export var TraitEnum;
8
8
  (function (TraitEnum) {
9
+ /**
10
+ * When triggered, all actions before the net crossing have a bonus.
11
+ */
9
12
  TraitEnum["MASTER_MIND"] = "MASTER_MIND";
13
+ /**
14
+ * When this player is part of the front row, they will always be part of the blocking block
15
+ */
10
16
  TraitEnum["MOVING_WALL"] = "MOVING_WALL";
17
+ /**
18
+ * Enables the player making the second touch to spike or dump
19
+ */
20
+ TraitEnum["SURPRISE_ATTACK"] = "SURPRISE_ATTACK";
21
+ /**
22
+ * Boosts the stat of the action taken and allows the player to choose the best target for the action.
23
+ */
11
24
  TraitEnum["MARKSMAN"] = "MARKSMAN";
25
+ /**
26
+ * The server will perform an extra strong serve.
27
+ */
12
28
  TraitEnum["METEOR_SERVE"] = "METEOR_SERVE";
29
+ /**
30
+ * The player has a 50% chance to perform an action with no energy decrease
31
+ */
13
32
  TraitEnum["VIGOROUS"] = "VIGOROUS";
33
+ /**
34
+ * The player with this trait has a chance to take the receiver's place if their reception stat is higher.
35
+ */
14
36
  TraitEnum["GUARDIAN"] = "GUARDIAN";
37
+ /**
38
+ * Enables the server to perform a float serve, which checks against receiver overhand instead.
39
+ */
15
40
  TraitEnum["FLOAT_SERVE"] = "FLOAT_SERVE";
41
+ /**
42
+ * Gives the player a chance to perform a perfect reception.
43
+ */
44
+ TraitEnum["DEFENSIVE_SPECIALIST"] = "DEFENSIVE_SPECIALIST";
16
45
  })(TraitEnum || (TraitEnum = {}));
17
46
  export const TraitDataType = DataTypes.ENUM(...Object.values(TraitEnum));
18
- export function assignTraits(performanceStats, rarity) {
47
+ export function assignTraits(roles, rarity) {
19
48
  let traitCount;
20
49
  switch (rarity) {
21
50
  case RarityEnum.COMMON: {
22
- traitCount = 0;
51
+ traitCount = randomInt(0, 1);
23
52
  break;
24
53
  }
25
54
  case RarityEnum.RARE: {
26
- traitCount = randomInt(0, 1);
55
+ traitCount = randomInt(0, 2);
27
56
  break;
28
57
  }
29
58
  case RarityEnum.LEGENDARY: {
30
- traitCount = randomInt(0, 2);
59
+ traitCount = randomInt(1, 3);
31
60
  break;
32
61
  }
33
62
  case RarityEnum.MYTHIC: {
34
- traitCount = randomInt(1, 3);
63
+ traitCount = randomInt(2, 4);
35
64
  break;
36
65
  }
37
66
  case RarityEnum.SPECIAL: {
38
- traitCount = randomInt(2, 3);
67
+ traitCount = 4;
39
68
  break;
40
69
  }
41
70
  default:
@@ -43,9 +72,10 @@ export function assignTraits(performanceStats, rarity) {
43
72
  }
44
73
  if (traitCount < 1)
45
74
  return [];
46
- return traits.filter((trait) => calculateStatScore(performanceStats, trait.stat) >= trait.statThreshold)
47
- .sort((t1, t2) => t2.weight - t1.weight)
48
- .map((trait) => trait.name)
49
- .slice(0, traitCount);
75
+ const filteredTraits = traits.filter((trait) => {
76
+ const setA = new Set(trait.roles);
77
+ return roles.some(el => setA.has(el));
78
+ }).map(trait => trait.name);
79
+ return shuffle(filteredTraits).slice(0, traitCount);
50
80
  }
51
81
  export const traitMap = new Map(traits.map((trait) => [trait.name, trait]));
@@ -1,2 +1,4 @@
1
1
  export * from './string-utils';
2
2
  export * from './object-utils';
3
+ export * from './number-utils';
4
+ export * from './rng-utils';
@@ -1,2 +1,4 @@
1
1
  export * from './string-utils';
2
2
  export * from './object-utils';
3
+ export * from './number-utils';
4
+ export * from './rng-utils';
@@ -0,0 +1 @@
1
+ export declare function clamp(min: number, max: number, value: number): number;
@@ -0,0 +1,3 @@
1
+ export function clamp(min, max, value) {
2
+ return Math.max(min, Math.min(value, max));
3
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Fisher-Yates shuffle algorithm
3
+ * Shuffles array IN-PLACE
4
+ * @param {any[]} array
5
+ */
6
+ export declare function shuffle<Type>(array: Type[]): Type[];
7
+ export declare function calculateProbability(score: number, scale: number, minP: number, maxP: number): number;
@@ -0,0 +1,27 @@
1
+ import { clamp } from './number-utils';
2
+ /**
3
+ * Fisher-Yates shuffle algorithm
4
+ * Shuffles array IN-PLACE
5
+ * @param {any[]} array
6
+ */
7
+ export function shuffle(array) {
8
+ let m = array.length;
9
+ let t;
10
+ let i;
11
+ // While there remain elements to shuffle…
12
+ while (m > 0) {
13
+ // Pick a remaining element…
14
+ i = Math.floor(Math.random() * m--);
15
+ // And swap it with the current element.
16
+ t = array[m];
17
+ array[m] = array[i];
18
+ array[i] = t;
19
+ }
20
+ return array;
21
+ }
22
+ export function calculateProbability(score, scale, minP, maxP) {
23
+ const x = score / scale;
24
+ const sigmoid = 1 / (1 + Math.exp(-x));
25
+ const p = minP + (maxP - minP) * sigmoid;
26
+ return clamp(0, 1, p);
27
+ }
@@ -19,7 +19,7 @@
19
19
  "commit": 0,
20
20
  "focus": 0,
21
21
  "defense": 0,
22
- "saving": 0
22
+ "reflex": 0
23
23
  }
24
24
  },
25
25
  {
@@ -42,7 +42,7 @@
42
42
  "commit": 0,
43
43
  "focus": 0,
44
44
  "defense": 0,
45
- "saving": 0
45
+ "reflex": 0
46
46
  }
47
47
  },
48
48
  {
@@ -65,7 +65,7 @@
65
65
  "commit": 0,
66
66
  "focus": 0,
67
67
  "defense": 0,
68
- "saving": 0
68
+ "reflex": 0
69
69
  }
70
70
  },
71
71
  {
@@ -88,7 +88,7 @@
88
88
  "commit": 0,
89
89
  "focus": 0,
90
90
  "defense": 0,
91
- "saving": 0
91
+ "reflex": 0
92
92
  }
93
93
  },
94
94
  {
@@ -111,7 +111,7 @@
111
111
  "commit": 0,
112
112
  "focus": 0,
113
113
  "defense": 0,
114
- "saving": 0
114
+ "reflex": 0
115
115
  }
116
116
  }
117
117
  ]
@@ -3,56 +3,92 @@
3
3
  "name": "MASTER_MIND",
4
4
  "modifier": 1.1,
5
5
  "chance": 0.2,
6
- "statThreshold": 80,
7
- "stat": "SET",
8
- "weight": 10
6
+ "roles": [
7
+ "SETTER",
8
+ "LIBERO"
9
+ ]
10
+ },
11
+ {
12
+ "name": "SURPRISE_ATTACK",
13
+ "modifier": 1.2,
14
+ "chance": 0.07,
15
+ "roles": [
16
+ "SETTER",
17
+ "OPPOSITE_HITTER"
18
+ ]
9
19
  },
10
20
  {
11
21
  "name": "MOVING_WALL",
12
22
  "modifier": 1.1,
13
23
  "chance": 1,
14
- "statThreshold": 75,
15
- "stat": "BLOCK",
16
- "weight": 5
24
+ "roles": [
25
+ "MIDDLE_BLOCKER",
26
+ "OPPOSITE_HITTER",
27
+ "SETTER"
28
+ ]
17
29
  },
18
30
  {
19
31
  "name": "MARKSMAN",
20
32
  "modifier": 1.05,
21
- "chance": 0.3,
22
- "statThreshold": 75,
23
- "stat": "ATTACK",
24
- "weight": 5
33
+ "chance": 0.5,
34
+ "stat": [
35
+ "SETTER",
36
+ "OPPOSITE_HITTER",
37
+ "OUTSIDE_HITTER",
38
+ "MIDDLE_BLOCKER"
39
+ ]
25
40
  },
26
41
  {
27
42
  "name": "METEOR_SERVE",
28
- "modifier": 1.1,
29
- "chance": 0.1,
30
- "statThreshold": 75,
31
- "stat": "SERVE",
32
- "weight": 10
43
+ "modifier": 1.2,
44
+ "chance": 0.5,
45
+ "stat": [
46
+ "SETTER",
47
+ "OPPOSITE_HITTER",
48
+ "OUTSIDE_HITTER",
49
+ "MIDDLE_BLOCKER"
50
+ ]
33
51
  },
34
52
  {
35
53
  "name": "FLOAT_SERVE",
36
- "modifier": 1,
54
+ "modifier": 1.2,
37
55
  "chance": 0.5,
38
- "statThreshold": 60,
39
- "stat": "SERVE",
40
- "weight": 10
56
+ "stat": [
57
+ "SETTER",
58
+ "OPPOSITE_HITTER",
59
+ "LIBERO",
60
+ "OUTSIDE_HITTER",
61
+ "MIDDLE_BLOCKER"
62
+ ]
41
63
  },
42
64
  {
43
65
  "name": "VIGOROUS",
44
66
  "modifier": 1,
45
- "statThreshold": 60,
46
67
  "chance": 0.5,
47
- "stat": "STAMINA",
48
- "weight": 1
68
+ "roles": [
69
+ "SETTER",
70
+ "OPPOSITE_HITTER",
71
+ "LIBERO",
72
+ "OUTSIDE_HITTER",
73
+ "MIDDLE_BLOCKER"
74
+ ]
49
75
  },
50
76
  {
51
77
  "name": "GUARDIAN",
52
78
  "chance": 0.2,
53
- "statThreshold": 75,
54
79
  "modifier": 1.15,
55
- "stat": "RECEIVE",
56
- "weight": 10
80
+ "stat": [
81
+ "LIBERO",
82
+ "OUTSIDE_HITTER"
83
+ ]
84
+ },
85
+ {
86
+ "name": "DEFENSIVE_SPECIALIST",
87
+ "chance": 0.2,
88
+ "modifier": 1.2,
89
+ "stat": [
90
+ "LIBERO",
91
+ "OUTSIDE_HITTER"
92
+ ]
57
93
  }
58
94
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volleyballsimtypes",
3
- "version": "0.0.168",
3
+ "version": "0.0.170",
4
4
  "description": "vbsim types",
5
5
  "main": "./dist/cjs/src/index.js",
6
6
  "module": "./dist/esm/src/index.js",
@@ -1,82 +0,0 @@
1
- export declare enum EventTypeEnum {
2
- LIBERO_REPLACEMENT = 0,
3
- SUBSTITUTION = 1,
4
- SERVE = 2,
5
- RECEPTION = 3,
6
- SET = 4,
7
- SPIKE = 5,
8
- BLOCK = 6
9
- }
10
- export declare enum BlockFailureEnum {
11
- NO_FAILURE = 0,
12
- MISS = 1,
13
- FAULT = 2,
14
- OUT_OF_BOUNDS = 3,
15
- WIPE = 4,
16
- TOOL = 5
17
- }
18
- export declare enum BlockTypeEnum {
19
- NO_BLOCKER = 0,
20
- SINGLE = 1,
21
- DOUBLE = 2,
22
- TRIPLE = 3
23
- }
24
- export declare enum LiberoReplacementTypeEnum {
25
- LIBERO_IN = 0,
26
- LIBERO_OUT = 1
27
- }
28
- export declare enum ReceptionTypeEnum {
29
- DIG = 0,
30
- OVERHAND = 1,
31
- ONE_HAND = 2,
32
- OTHER_BODY_PART = 3
33
- }
34
- export declare enum ReceptionFailureEnum {
35
- NO_FAILURE = 0,
36
- FAULT = 1,
37
- MISS = 2,
38
- OUT_OF_BOUNDS = 3,
39
- BAD_PASS = 4
40
- }
41
- export declare enum ServeTypeEnum {
42
- UNDERHAND = 0,
43
- OVERHAND_TOPSPIN = 1,
44
- OVERHAND_FLOAT = 2,
45
- JUMP_TOPSPIN = 3,
46
- JUMP_FLOAT = 4
47
- }
48
- export declare enum ServeFailureEnum {
49
- NO_FAILURE = 0,
50
- FAULT = 1,
51
- MISS = 2,
52
- NET = 3,
53
- OUT_OF_BOUNDS = 4
54
- }
55
- export declare enum SetTypeEnum {
56
- OVERHAND = 0,
57
- UNDERHAND = 1,
58
- SPIKE = 2,
59
- DUMP = 3
60
- }
61
- export declare enum SetFailureEnum {
62
- NO_FAILURE = 0,
63
- FAULT = 1,
64
- MISS = 2,
65
- BAD_PASS = 3,
66
- OUT_OF_BOUNDS = 4
67
- }
68
- export declare enum SpikeTypeEnum {
69
- CROSS_SHOT = 0,
70
- LINE_SHOT = 1,
71
- TOOL_SHOT = 2,
72
- TIP = 3,
73
- DOWN_BALL = 4,
74
- OVERHAND = 5
75
- }
76
- export declare enum SpikeFailureEnum {
77
- NO_FAILURE = 0,
78
- FAULT = 1,
79
- MISS = 2,
80
- OUT_OF_BOUNDS = 3,
81
- NET = 4
82
- }