volleyballsimtypes 0.0.501 → 0.0.503
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/cjs/src/data/models/box-score.d.ts +12 -0
- package/dist/cjs/src/data/models/box-score.js +30 -0
- package/dist/cjs/src/data/models/views/box-score-totals.d.ts +12 -0
- package/dist/cjs/src/data/models/views/box-score-totals.js +24 -0
- package/dist/cjs/src/data/transformers/box-score.js +13 -1
- package/dist/cjs/src/data/transformers/player.js +7 -1
- package/dist/cjs/src/data/transformers/rally-event-positional.test.d.ts +1 -0
- package/dist/cjs/src/data/transformers/rally-event-positional.test.js +56 -0
- package/dist/cjs/src/data/transformers/rally-event.d.ts +4 -0
- package/dist/cjs/src/data/transformers/rally-event.js +34 -6
- package/dist/cjs/src/service/event/block.js +2 -2
- package/dist/cjs/src/service/event/free-ball.js +2 -2
- package/dist/cjs/src/service/event/in-play-event.d.ts +19 -1
- package/dist/cjs/src/service/event/in-play-event.js +17 -2
- package/dist/cjs/src/service/event/reception.js +2 -2
- package/dist/cjs/src/service/event/schemas/block.z.d.ts +10 -0
- package/dist/cjs/src/service/event/schemas/block.z.js +3 -1
- package/dist/cjs/src/service/event/schemas/free-ball.z.d.ts +10 -0
- package/dist/cjs/src/service/event/schemas/free-ball.z.js +3 -1
- package/dist/cjs/src/service/event/schemas/positional.z.d.ts +17 -0
- package/dist/cjs/src/service/event/schemas/positional.z.js +18 -0
- package/dist/cjs/src/service/event/schemas/reception.z.d.ts +10 -0
- package/dist/cjs/src/service/event/schemas/reception.z.js +3 -1
- package/dist/cjs/src/service/event/schemas/serve.z.d.ts +10 -0
- package/dist/cjs/src/service/event/schemas/serve.z.js +3 -1
- package/dist/cjs/src/service/event/schemas/set.z.d.ts +10 -0
- package/dist/cjs/src/service/event/schemas/set.z.js +3 -1
- package/dist/cjs/src/service/event/schemas/spike.z.d.ts +10 -0
- package/dist/cjs/src/service/event/schemas/spike.z.js +4 -2
- package/dist/cjs/src/service/event/serve.js +2 -2
- package/dist/cjs/src/service/event/set.js +2 -2
- package/dist/cjs/src/service/event/spike.d.ts +3 -2
- package/dist/cjs/src/service/event/spike.js +6 -2
- package/dist/cjs/src/service/match/box-score.d.ts +6 -0
- package/dist/cjs/src/service/match/box-score.js +7 -1
- package/dist/cjs/src/service/match/schemas/box-score.z.d.ts +12 -0
- package/dist/cjs/src/service/match/schemas/box-score.z.js +15 -2
- package/dist/cjs/src/service/player/schemas/player.z.d.ts +12 -0
- package/dist/cjs/src/service/player/trait.d.ts +1 -0
- package/dist/cjs/src/stat-config/traits.json +55 -11
- package/dist/esm/src/data/models/box-score.d.ts +12 -0
- package/dist/esm/src/data/models/box-score.js +30 -0
- package/dist/esm/src/data/models/views/box-score-totals.d.ts +12 -0
- package/dist/esm/src/data/models/views/box-score-totals.js +24 -0
- package/dist/esm/src/data/transformers/box-score.js +13 -1
- package/dist/esm/src/data/transformers/player.js +7 -1
- package/dist/esm/src/data/transformers/rally-event-positional.test.d.ts +1 -0
- package/dist/esm/src/data/transformers/rally-event-positional.test.js +54 -0
- package/dist/esm/src/data/transformers/rally-event.d.ts +4 -0
- package/dist/esm/src/data/transformers/rally-event.js +34 -6
- package/dist/esm/src/service/event/block.js +2 -2
- package/dist/esm/src/service/event/free-ball.js +2 -2
- package/dist/esm/src/service/event/in-play-event.d.ts +19 -1
- package/dist/esm/src/service/event/in-play-event.js +16 -1
- package/dist/esm/src/service/event/reception.js +2 -2
- package/dist/esm/src/service/event/schemas/block.z.d.ts +10 -0
- package/dist/esm/src/service/event/schemas/block.z.js +3 -1
- package/dist/esm/src/service/event/schemas/free-ball.z.d.ts +10 -0
- package/dist/esm/src/service/event/schemas/free-ball.z.js +3 -1
- package/dist/esm/src/service/event/schemas/positional.z.d.ts +17 -0
- package/dist/esm/src/service/event/schemas/positional.z.js +15 -0
- package/dist/esm/src/service/event/schemas/reception.z.d.ts +10 -0
- package/dist/esm/src/service/event/schemas/reception.z.js +3 -1
- package/dist/esm/src/service/event/schemas/serve.z.d.ts +10 -0
- package/dist/esm/src/service/event/schemas/serve.z.js +3 -1
- package/dist/esm/src/service/event/schemas/set.z.d.ts +10 -0
- package/dist/esm/src/service/event/schemas/set.z.js +3 -1
- package/dist/esm/src/service/event/schemas/spike.z.d.ts +10 -0
- package/dist/esm/src/service/event/schemas/spike.z.js +4 -2
- package/dist/esm/src/service/event/serve.js +2 -2
- package/dist/esm/src/service/event/set.js +2 -2
- package/dist/esm/src/service/event/spike.d.ts +3 -2
- package/dist/esm/src/service/event/spike.js +6 -2
- package/dist/esm/src/service/match/box-score.d.ts +6 -0
- package/dist/esm/src/service/match/box-score.js +7 -1
- package/dist/esm/src/service/match/schemas/box-score.z.d.ts +12 -0
- package/dist/esm/src/service/match/schemas/box-score.z.js +15 -2
- package/dist/esm/src/service/player/schemas/player.z.d.ts +12 -0
- package/dist/esm/src/service/player/trait.d.ts +1 -0
- package/dist/esm/src/stat-config/traits.json +55 -11
- package/package.json +1 -1
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { TraitEnum } from '../../player';
|
|
3
3
|
export declare const ReceptionInputSchema: z.ZodObject<{
|
|
4
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
5
|
+
x: z.ZodNumber;
|
|
6
|
+
y: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>>;
|
|
8
|
+
landing: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
x: z.ZodNumber;
|
|
10
|
+
y: z.ZodNumber;
|
|
11
|
+
}, z.core.$strip>>;
|
|
12
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
digQuality: z.ZodOptional<z.ZodNumber>;
|
|
4
14
|
playerId: z.ZodUUID;
|
|
5
15
|
score: z.ZodNumber;
|
|
6
16
|
target: z.ZodNumber;
|
|
@@ -4,6 +4,7 @@ exports.ReceptionInputSchema = void 0;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const player_1 = require("../../player");
|
|
6
6
|
const incident_z_1 = require("./incident.z");
|
|
7
|
+
const positional_z_1 = require("./positional.z");
|
|
7
8
|
const receptionTypeValues = [0, 1, 2, 3, 4];
|
|
8
9
|
const receptionFailureValues = [0, 1, 2, 3, 4];
|
|
9
10
|
const courtTargetValues = Array.from({ length: 13 }, (_, i) => i);
|
|
@@ -14,5 +15,6 @@ exports.ReceptionInputSchema = zod_1.z.object({
|
|
|
14
15
|
activeTraits: zod_1.z.array(zod_1.z.enum(Object.values(player_1.TraitEnum))).default([]),
|
|
15
16
|
failure: zod_1.z.number().int().refine((v) => receptionFailureValues.includes(v), { message: 'INVALID_RECEPTION_FAILURE' }),
|
|
16
17
|
type: zod_1.z.number().int().refine((v) => receptionTypeValues.includes(v), { message: 'INVALID_RECEPTION_TYPE' }),
|
|
17
|
-
incident: incident_z_1.EventIncidentSchema.optional()
|
|
18
|
+
incident: incident_z_1.EventIncidentSchema.optional(),
|
|
19
|
+
...positional_z_1.positionalEventFields
|
|
18
20
|
});
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { TraitEnum } from '../../player';
|
|
3
3
|
export declare const ServeInputSchema: z.ZodObject<{
|
|
4
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
5
|
+
x: z.ZodNumber;
|
|
6
|
+
y: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>>;
|
|
8
|
+
landing: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
x: z.ZodNumber;
|
|
10
|
+
y: z.ZodNumber;
|
|
11
|
+
}, z.core.$strip>>;
|
|
12
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
digQuality: z.ZodOptional<z.ZodNumber>;
|
|
4
14
|
playerId: z.ZodUUID;
|
|
5
15
|
score: z.ZodNumber;
|
|
6
16
|
target: z.ZodNumber;
|
|
@@ -4,6 +4,7 @@ exports.ServeInputSchema = void 0;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const player_1 = require("../../player");
|
|
6
6
|
const incident_z_1 = require("./incident.z");
|
|
7
|
+
const positional_z_1 = require("./positional.z");
|
|
7
8
|
const serveTypeValues = [0, 1, 2, 3];
|
|
8
9
|
const serveFailureValues = [0, 1, 2, 3, 4];
|
|
9
10
|
const courtTargetValues = Array.from({ length: 13 }, (_, i) => i);
|
|
@@ -14,5 +15,6 @@ exports.ServeInputSchema = zod_1.z.object({
|
|
|
14
15
|
activeTraits: zod_1.z.array(zod_1.z.enum(Object.values(player_1.TraitEnum))).default([]),
|
|
15
16
|
failure: zod_1.z.number().int().refine((v) => serveFailureValues.includes(v), { message: 'INVALID_SERVE_FAILURE' }),
|
|
16
17
|
type: zod_1.z.number().int().refine((v) => serveTypeValues.includes(v), { message: 'INVALID_SERVE_TYPE' }),
|
|
17
|
-
incident: incident_z_1.EventIncidentSchema.optional()
|
|
18
|
+
incident: incident_z_1.EventIncidentSchema.optional(),
|
|
19
|
+
...positional_z_1.positionalEventFields
|
|
18
20
|
});
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { TraitEnum } from '../../player';
|
|
3
3
|
export declare const SetInputSchema: z.ZodObject<{
|
|
4
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
5
|
+
x: z.ZodNumber;
|
|
6
|
+
y: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>>;
|
|
8
|
+
landing: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
x: z.ZodNumber;
|
|
10
|
+
y: z.ZodNumber;
|
|
11
|
+
}, z.core.$strip>>;
|
|
12
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
digQuality: z.ZodOptional<z.ZodNumber>;
|
|
4
14
|
playerId: z.ZodUUID;
|
|
5
15
|
score: z.ZodNumber;
|
|
6
16
|
target: z.ZodNumber;
|
|
@@ -4,6 +4,7 @@ exports.SetInputSchema = void 0;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const player_1 = require("../../player");
|
|
6
6
|
const incident_z_1 = require("./incident.z");
|
|
7
|
+
const positional_z_1 = require("./positional.z");
|
|
7
8
|
const setTypeValues = [0, 1];
|
|
8
9
|
const setFailureValues = [0, 1, 2, 3, 4];
|
|
9
10
|
const setTempoValues = [0, 1, 2];
|
|
@@ -17,5 +18,6 @@ exports.SetInputSchema = zod_1.z.object({
|
|
|
17
18
|
type: zod_1.z.number().int().refine((v) => setTypeValues.includes(v), { message: 'INVALID_SET_TYPE' }),
|
|
18
19
|
incident: incident_z_1.EventIncidentSchema.optional(),
|
|
19
20
|
// Set tempo (FIRST=0, SECOND=1, HIGH=2). Optional: absent on dumps, failed sets, and every pre-tempo event.
|
|
20
|
-
tempo: zod_1.z.number().int().refine((v) => setTempoValues.includes(v), { message: 'INVALID_SET_TEMPO' }).optional()
|
|
21
|
+
tempo: zod_1.z.number().int().refine((v) => setTempoValues.includes(v), { message: 'INVALID_SET_TEMPO' }).optional(),
|
|
22
|
+
...positional_z_1.positionalEventFields
|
|
21
23
|
});
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { TraitEnum } from '../../player';
|
|
3
3
|
export declare const SpikeInputSchema: z.ZodObject<{
|
|
4
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
5
|
+
x: z.ZodNumber;
|
|
6
|
+
y: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>>;
|
|
8
|
+
landing: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
x: z.ZodNumber;
|
|
10
|
+
y: z.ZodNumber;
|
|
11
|
+
}, z.core.$strip>>;
|
|
12
|
+
speed: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
digQuality: z.ZodOptional<z.ZodNumber>;
|
|
4
14
|
playerId: z.ZodUUID;
|
|
5
15
|
score: z.ZodNumber;
|
|
6
16
|
target: z.ZodNumber;
|
|
@@ -4,7 +4,8 @@ exports.SpikeInputSchema = void 0;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const player_1 = require("../../player");
|
|
6
6
|
const incident_z_1 = require("./incident.z");
|
|
7
|
-
const
|
|
7
|
+
const positional_z_1 = require("./positional.z");
|
|
8
|
+
const spikeTypeValues = [0, 1, 2, 3, 4, 5, 6];
|
|
8
9
|
const spikeFailureValues = [0, 1, 2, 3, 4];
|
|
9
10
|
const courtTargetValues = Array.from({ length: 13 }, (_, i) => i);
|
|
10
11
|
exports.SpikeInputSchema = zod_1.z.object({
|
|
@@ -14,5 +15,6 @@ exports.SpikeInputSchema = zod_1.z.object({
|
|
|
14
15
|
activeTraits: zod_1.z.array(zod_1.z.enum(Object.values(player_1.TraitEnum))).default([]),
|
|
15
16
|
failure: zod_1.z.number().int().refine((v) => spikeFailureValues.includes(v), { message: 'INVALID_SPIKE_FAILURE' }),
|
|
16
17
|
type: zod_1.z.number().int().refine((v) => spikeTypeValues.includes(v), { message: 'INVALID_SPIKE_TYPE' }),
|
|
17
|
-
incident: incident_z_1.EventIncidentSchema.optional()
|
|
18
|
+
incident: incident_z_1.EventIncidentSchema.optional(),
|
|
19
|
+
...positional_z_1.positionalEventFields
|
|
18
20
|
});
|
|
@@ -33,8 +33,8 @@ class Serve extends in_play_event_1.InPlayEvent {
|
|
|
33
33
|
}
|
|
34
34
|
return new Serve(result.data);
|
|
35
35
|
}
|
|
36
|
-
constructor({ score, playerId, target, failure, type, activeTraits, incident }) {
|
|
37
|
-
super({ score, playerId, target, activeTraits, incident, eventType });
|
|
36
|
+
constructor({ score, playerId, target, failure, type, activeTraits, incident, contact, landing, speed, digQuality }) {
|
|
37
|
+
super({ score, playerId, target, activeTraits, incident, eventType, contact, landing, speed, digQuality });
|
|
38
38
|
this.type = type;
|
|
39
39
|
this.failure = failure;
|
|
40
40
|
}
|
|
@@ -41,8 +41,8 @@ class Set extends in_play_event_1.InPlayEvent {
|
|
|
41
41
|
}
|
|
42
42
|
return new Set(result.data);
|
|
43
43
|
}
|
|
44
|
-
constructor({ score, playerId, target, failure, type, activeTraits, incident, tempo }) {
|
|
45
|
-
super({ score, playerId, target, activeTraits, incident, eventType });
|
|
44
|
+
constructor({ score, playerId, target, failure, type, activeTraits, incident, tempo, contact, landing, speed, digQuality }) {
|
|
45
|
+
super({ score, playerId, target, activeTraits, incident, eventType, contact, landing, speed, digQuality });
|
|
46
46
|
this.type = type;
|
|
47
47
|
this.failure = failure;
|
|
48
48
|
this.tempo = tempo;
|
|
@@ -5,9 +5,10 @@ export declare enum SpikeTypeEnum {
|
|
|
5
5
|
REVERSE_CROSS = 2,
|
|
6
6
|
TIP = 3,
|
|
7
7
|
DOWN_BALL = 4,
|
|
8
|
-
OVERHAND = 5
|
|
8
|
+
OVERHAND = 5,
|
|
9
|
+
TOOL = 6
|
|
9
10
|
}
|
|
10
|
-
export type SpikeType = SpikeTypeEnum.CROSS_SHOT | SpikeTypeEnum.LINE_SHOT | SpikeTypeEnum.REVERSE_CROSS | SpikeTypeEnum.TIP | SpikeTypeEnum.DOWN_BALL | SpikeTypeEnum.OVERHAND;
|
|
11
|
+
export type SpikeType = SpikeTypeEnum.CROSS_SHOT | SpikeTypeEnum.LINE_SHOT | SpikeTypeEnum.REVERSE_CROSS | SpikeTypeEnum.TIP | SpikeTypeEnum.DOWN_BALL | SpikeTypeEnum.OVERHAND | SpikeTypeEnum.TOOL;
|
|
11
12
|
export declare enum SpikeFailureEnum {
|
|
12
13
|
NO_FAILURE = 0,
|
|
13
14
|
FAULT = 1,
|
|
@@ -12,6 +12,10 @@ var SpikeTypeEnum;
|
|
|
12
12
|
SpikeTypeEnum[SpikeTypeEnum["TIP"] = 3] = "TIP";
|
|
13
13
|
SpikeTypeEnum[SpikeTypeEnum["DOWN_BALL"] = 4] = "DOWN_BALL";
|
|
14
14
|
SpikeTypeEnum[SpikeTypeEnum["OVERHAND"] = 5] = "OVERHAND";
|
|
15
|
+
// A ball intentionally wiped/deflected off the block and out: the ATTACKER's shot (a kill), the block earns a
|
|
16
|
+
// TOUCH (FIVB: NOT a block error). Distinct from the legacy BlockFailureEnum.TOOL/WIPE, which the older zone
|
|
17
|
+
// engine still uses to mis-book a tool-out as a block error.
|
|
18
|
+
SpikeTypeEnum[SpikeTypeEnum["TOOL"] = 6] = "TOOL";
|
|
15
19
|
})(SpikeTypeEnum || (exports.SpikeTypeEnum = SpikeTypeEnum = {}));
|
|
16
20
|
var SpikeFailureEnum;
|
|
17
21
|
(function (SpikeFailureEnum) {
|
|
@@ -35,8 +39,8 @@ class Spike extends in_play_event_1.InPlayEvent {
|
|
|
35
39
|
}
|
|
36
40
|
return new Spike(result.data);
|
|
37
41
|
}
|
|
38
|
-
constructor({ score, playerId, target, failure, type, activeTraits, incident }) {
|
|
39
|
-
super({ score, playerId, target, activeTraits, incident, eventType });
|
|
42
|
+
constructor({ score, playerId, target, failure, type, activeTraits, incident, contact, landing, speed, digQuality }) {
|
|
43
|
+
super({ score, playerId, target, activeTraits, incident, eventType, contact, landing, speed, digQuality });
|
|
40
44
|
this.type = type;
|
|
41
45
|
this.failure = failure;
|
|
42
46
|
}
|
|
@@ -2,6 +2,7 @@ export interface AttackStats {
|
|
|
2
2
|
attempts: number;
|
|
3
3
|
kills: number;
|
|
4
4
|
errors: number;
|
|
5
|
+
blocked: number;
|
|
5
6
|
}
|
|
6
7
|
export interface ServeStats {
|
|
7
8
|
attempts: number;
|
|
@@ -12,6 +13,8 @@ export interface ReceptionStats {
|
|
|
12
13
|
attempts: number;
|
|
13
14
|
perfect: number;
|
|
14
15
|
positive: number;
|
|
16
|
+
ok: number;
|
|
17
|
+
negative: number;
|
|
15
18
|
overpasses: number;
|
|
16
19
|
errors: number;
|
|
17
20
|
}
|
|
@@ -28,6 +31,9 @@ export interface SettingStats {
|
|
|
28
31
|
}
|
|
29
32
|
export interface DefenseStats {
|
|
30
33
|
digs: number;
|
|
34
|
+
digsPerfect: number;
|
|
35
|
+
digsMediocre: number;
|
|
36
|
+
digsBad: number;
|
|
31
37
|
errors: number;
|
|
32
38
|
}
|
|
33
39
|
/**
|
|
@@ -31,7 +31,8 @@ exports.BoxScore = BoxScore;
|
|
|
31
31
|
BoxScore.createEmptyAttackStats = () => ({
|
|
32
32
|
attempts: 0,
|
|
33
33
|
kills: 0,
|
|
34
|
-
errors: 0
|
|
34
|
+
errors: 0,
|
|
35
|
+
blocked: 0
|
|
35
36
|
});
|
|
36
37
|
BoxScore.createEmptyServeStats = () => ({
|
|
37
38
|
attempts: 0,
|
|
@@ -42,6 +43,8 @@ BoxScore.createEmptyReceptionStats = () => ({
|
|
|
42
43
|
attempts: 0,
|
|
43
44
|
perfect: 0,
|
|
44
45
|
positive: 0,
|
|
46
|
+
ok: 0,
|
|
47
|
+
negative: 0,
|
|
45
48
|
overpasses: 0,
|
|
46
49
|
errors: 0
|
|
47
50
|
});
|
|
@@ -58,6 +61,9 @@ BoxScore.createEmptySettingStats = () => ({
|
|
|
58
61
|
});
|
|
59
62
|
BoxScore.createEmptyDefenseStats = () => ({
|
|
60
63
|
digs: 0,
|
|
64
|
+
digsPerfect: 0,
|
|
65
|
+
digsMediocre: 0,
|
|
66
|
+
digsBad: 0,
|
|
61
67
|
errors: 0
|
|
62
68
|
});
|
|
63
69
|
BoxScore.createEmptyMiscStats = () => ({
|
|
@@ -6,6 +6,7 @@ export declare const AttackStatsSchema: z.ZodObject<{
|
|
|
6
6
|
attempts: z.ZodNumber;
|
|
7
7
|
kills: z.ZodNumber;
|
|
8
8
|
errors: z.ZodNumber;
|
|
9
|
+
blocked: z.ZodNumber;
|
|
9
10
|
}, z.core.$strip>;
|
|
10
11
|
export declare const ServeStatsSchema: z.ZodObject<{
|
|
11
12
|
attempts: z.ZodNumber;
|
|
@@ -16,6 +17,8 @@ export declare const ReceptionStatsSchema: z.ZodObject<{
|
|
|
16
17
|
attempts: z.ZodNumber;
|
|
17
18
|
perfect: z.ZodNumber;
|
|
18
19
|
positive: z.ZodNumber;
|
|
20
|
+
ok: z.ZodNumber;
|
|
21
|
+
negative: z.ZodNumber;
|
|
19
22
|
overpasses: z.ZodNumber;
|
|
20
23
|
errors: z.ZodNumber;
|
|
21
24
|
}, z.core.$strip>;
|
|
@@ -32,6 +35,9 @@ export declare const SettingStatsSchema: z.ZodObject<{
|
|
|
32
35
|
}, z.core.$strip>;
|
|
33
36
|
export declare const DefenseStatsSchema: z.ZodObject<{
|
|
34
37
|
digs: z.ZodNumber;
|
|
38
|
+
digsPerfect: z.ZodNumber;
|
|
39
|
+
digsMediocre: z.ZodNumber;
|
|
40
|
+
digsBad: z.ZodNumber;
|
|
35
41
|
errors: z.ZodNumber;
|
|
36
42
|
}, z.core.$strip>;
|
|
37
43
|
export declare const MiscStatsSchema: z.ZodObject<{
|
|
@@ -51,6 +57,7 @@ export declare const BoxScoreInputSchema: z.ZodObject<{
|
|
|
51
57
|
attempts: z.ZodNumber;
|
|
52
58
|
kills: z.ZodNumber;
|
|
53
59
|
errors: z.ZodNumber;
|
|
60
|
+
blocked: z.ZodNumber;
|
|
54
61
|
}, z.core.$strip>;
|
|
55
62
|
serve: z.ZodObject<{
|
|
56
63
|
attempts: z.ZodNumber;
|
|
@@ -61,6 +68,8 @@ export declare const BoxScoreInputSchema: z.ZodObject<{
|
|
|
61
68
|
attempts: z.ZodNumber;
|
|
62
69
|
perfect: z.ZodNumber;
|
|
63
70
|
positive: z.ZodNumber;
|
|
71
|
+
ok: z.ZodNumber;
|
|
72
|
+
negative: z.ZodNumber;
|
|
64
73
|
overpasses: z.ZodNumber;
|
|
65
74
|
errors: z.ZodNumber;
|
|
66
75
|
}, z.core.$strip>;
|
|
@@ -77,6 +86,9 @@ export declare const BoxScoreInputSchema: z.ZodObject<{
|
|
|
77
86
|
}, z.core.$strip>;
|
|
78
87
|
defense: z.ZodObject<{
|
|
79
88
|
digs: z.ZodNumber;
|
|
89
|
+
digsPerfect: z.ZodNumber;
|
|
90
|
+
digsMediocre: z.ZodNumber;
|
|
91
|
+
digsBad: z.ZodNumber;
|
|
80
92
|
errors: z.ZodNumber;
|
|
81
93
|
}, z.core.$strip>;
|
|
82
94
|
misc: z.ZodObject<{
|
|
@@ -12,11 +12,15 @@ const nonNegInt = zod_1.z.number().int().min(0);
|
|
|
12
12
|
exports.AttackStatsSchema = zod_1.z.object({
|
|
13
13
|
attempts: nonNegInt,
|
|
14
14
|
kills: nonNegInt,
|
|
15
|
-
errors: nonNegInt
|
|
15
|
+
errors: nonNegInt,
|
|
16
|
+
blocked: nonNegInt
|
|
16
17
|
}).superRefine((v, ctx) => {
|
|
17
18
|
if (v.errors > v.attempts) {
|
|
18
19
|
ctx.addIssue({ code: 'custom', message: 'ATTACK_ERRORS_EXCEEDS_ATTEMPTS', path: ['errors'] });
|
|
19
20
|
}
|
|
21
|
+
if (v.blocked > v.errors) {
|
|
22
|
+
ctx.addIssue({ code: 'custom', message: 'ATTACK_BLOCKED_EXCEEDS_ERRORS', path: ['blocked'] });
|
|
23
|
+
}
|
|
20
24
|
});
|
|
21
25
|
exports.ServeStatsSchema = zod_1.z.object({
|
|
22
26
|
attempts: nonNegInt,
|
|
@@ -31,10 +35,12 @@ exports.ReceptionStatsSchema = zod_1.z.object({
|
|
|
31
35
|
attempts: nonNegInt,
|
|
32
36
|
perfect: nonNegInt,
|
|
33
37
|
positive: nonNegInt,
|
|
38
|
+
ok: nonNegInt,
|
|
39
|
+
negative: nonNegInt,
|
|
34
40
|
overpasses: nonNegInt,
|
|
35
41
|
errors: nonNegInt
|
|
36
42
|
}).superRefine((v, ctx) => {
|
|
37
|
-
const sum = v.perfect + v.positive + v.overpasses + v.errors;
|
|
43
|
+
const sum = v.perfect + v.positive + v.ok + v.negative + v.overpasses + v.errors;
|
|
38
44
|
if (sum > v.attempts) {
|
|
39
45
|
ctx.addIssue({ code: 'custom', message: 'RECEPTION_COMPONENTS_EXCEED_ATTEMPTS', path: ['attempts'] });
|
|
40
46
|
}
|
|
@@ -57,7 +63,14 @@ exports.SettingStatsSchema = zod_1.z.object({
|
|
|
57
63
|
});
|
|
58
64
|
exports.DefenseStatsSchema = zod_1.z.object({
|
|
59
65
|
digs: nonNegInt,
|
|
66
|
+
digsPerfect: nonNegInt,
|
|
67
|
+
digsMediocre: nonNegInt,
|
|
68
|
+
digsBad: nonNegInt,
|
|
60
69
|
errors: nonNegInt
|
|
70
|
+
}).superRefine((v, ctx) => {
|
|
71
|
+
if (v.digsPerfect + v.digsMediocre + v.digsBad > v.digs) {
|
|
72
|
+
ctx.addIssue({ code: 'custom', message: 'DIG_QUALITY_SPLIT_EXCEEDS_DIGS', path: ['digs'] });
|
|
73
|
+
}
|
|
61
74
|
});
|
|
62
75
|
exports.MiscStatsSchema = zod_1.z.object({
|
|
63
76
|
pointsPlayed: nonNegInt,
|
|
@@ -92,6 +92,7 @@ export declare const PlayerInputSchema: z.ZodObject<{
|
|
|
92
92
|
attempts: z.ZodNumber;
|
|
93
93
|
kills: z.ZodNumber;
|
|
94
94
|
errors: z.ZodNumber;
|
|
95
|
+
blocked: z.ZodNumber;
|
|
95
96
|
}, z.core.$strip>;
|
|
96
97
|
serve: z.ZodObject<{
|
|
97
98
|
attempts: z.ZodNumber;
|
|
@@ -102,6 +103,8 @@ export declare const PlayerInputSchema: z.ZodObject<{
|
|
|
102
103
|
attempts: z.ZodNumber;
|
|
103
104
|
perfect: z.ZodNumber;
|
|
104
105
|
positive: z.ZodNumber;
|
|
106
|
+
ok: z.ZodNumber;
|
|
107
|
+
negative: z.ZodNumber;
|
|
105
108
|
overpasses: z.ZodNumber;
|
|
106
109
|
errors: z.ZodNumber;
|
|
107
110
|
}, z.core.$strip>;
|
|
@@ -118,6 +121,9 @@ export declare const PlayerInputSchema: z.ZodObject<{
|
|
|
118
121
|
}, z.core.$strip>;
|
|
119
122
|
defense: z.ZodObject<{
|
|
120
123
|
digs: z.ZodNumber;
|
|
124
|
+
digsPerfect: z.ZodNumber;
|
|
125
|
+
digsMediocre: z.ZodNumber;
|
|
126
|
+
digsBad: z.ZodNumber;
|
|
121
127
|
errors: z.ZodNumber;
|
|
122
128
|
}, z.core.$strip>;
|
|
123
129
|
misc: z.ZodObject<{
|
|
@@ -133,6 +139,7 @@ export declare const PlayerInputSchema: z.ZodObject<{
|
|
|
133
139
|
attempts: z.ZodNumber;
|
|
134
140
|
kills: z.ZodNumber;
|
|
135
141
|
errors: z.ZodNumber;
|
|
142
|
+
blocked: z.ZodNumber;
|
|
136
143
|
}, z.core.$strip>;
|
|
137
144
|
serve: z.ZodObject<{
|
|
138
145
|
attempts: z.ZodNumber;
|
|
@@ -143,6 +150,8 @@ export declare const PlayerInputSchema: z.ZodObject<{
|
|
|
143
150
|
attempts: z.ZodNumber;
|
|
144
151
|
perfect: z.ZodNumber;
|
|
145
152
|
positive: z.ZodNumber;
|
|
153
|
+
ok: z.ZodNumber;
|
|
154
|
+
negative: z.ZodNumber;
|
|
146
155
|
overpasses: z.ZodNumber;
|
|
147
156
|
errors: z.ZodNumber;
|
|
148
157
|
}, z.core.$strip>;
|
|
@@ -159,6 +168,9 @@ export declare const PlayerInputSchema: z.ZodObject<{
|
|
|
159
168
|
}, z.core.$strip>;
|
|
160
169
|
defense: z.ZodObject<{
|
|
161
170
|
digs: z.ZodNumber;
|
|
171
|
+
digsPerfect: z.ZodNumber;
|
|
172
|
+
digsMediocre: z.ZodNumber;
|
|
173
|
+
digsBad: z.ZodNumber;
|
|
162
174
|
errors: z.ZodNumber;
|
|
163
175
|
}, z.core.$strip>;
|
|
164
176
|
misc: z.ZodObject<{
|
|
@@ -17,7 +17,11 @@
|
|
|
17
17
|
"OPPOSITE_HITTER",
|
|
18
18
|
"OUTSIDE_HITTER",
|
|
19
19
|
"MIDDLE_BLOCKER"
|
|
20
|
-
]
|
|
20
|
+
],
|
|
21
|
+
"params": {
|
|
22
|
+
"dumpPower": 2,
|
|
23
|
+
"dumpFreqMult": 1.5
|
|
24
|
+
}
|
|
21
25
|
},
|
|
22
26
|
{
|
|
23
27
|
"name": "MOVING_WALL",
|
|
@@ -59,7 +63,11 @@
|
|
|
59
63
|
"OPPOSITE_HITTER",
|
|
60
64
|
"OUTSIDE_HITTER",
|
|
61
65
|
"MIDDLE_BLOCKER"
|
|
62
|
-
]
|
|
66
|
+
],
|
|
67
|
+
"params": {
|
|
68
|
+
"servePower": 1.14,
|
|
69
|
+
"receptionPenalty": 0.9
|
|
70
|
+
}
|
|
63
71
|
},
|
|
64
72
|
{
|
|
65
73
|
"name": "VIGOROUS",
|
|
@@ -89,7 +97,12 @@
|
|
|
89
97
|
"LIBERO",
|
|
90
98
|
"OUTSIDE_HITTER",
|
|
91
99
|
"MIDDLE_BLOCKER"
|
|
92
|
-
]
|
|
100
|
+
],
|
|
101
|
+
"params": {
|
|
102
|
+
"digBonus": 0.1,
|
|
103
|
+
"digCap": 0.85,
|
|
104
|
+
"blockBonus": 0.1
|
|
105
|
+
}
|
|
93
106
|
},
|
|
94
107
|
{
|
|
95
108
|
"name": "QUICK_LEARNER",
|
|
@@ -98,7 +111,10 @@
|
|
|
98
111
|
"SETTER",
|
|
99
112
|
"LIBERO",
|
|
100
113
|
"OUTSIDE_HITTER"
|
|
101
|
-
]
|
|
114
|
+
],
|
|
115
|
+
"params": {
|
|
116
|
+
"streakThreshold": 3
|
|
117
|
+
}
|
|
102
118
|
},
|
|
103
119
|
{
|
|
104
120
|
"name": "MOMENTUM_ADDICT",
|
|
@@ -106,7 +122,13 @@
|
|
|
106
122
|
"roles": [
|
|
107
123
|
"OUTSIDE_HITTER",
|
|
108
124
|
"OPPOSITE_HITTER"
|
|
109
|
-
]
|
|
125
|
+
],
|
|
126
|
+
"params": {
|
|
127
|
+
"start": 0.9,
|
|
128
|
+
"perSuccess": 0.03,
|
|
129
|
+
"perKill": 0.06,
|
|
130
|
+
"cap": 1.2
|
|
131
|
+
}
|
|
110
132
|
},
|
|
111
133
|
{
|
|
112
134
|
"name": "LOUDMOUTH",
|
|
@@ -115,7 +137,11 @@
|
|
|
115
137
|
"OUTSIDE_HITTER",
|
|
116
138
|
"OPPOSITE_HITTER",
|
|
117
139
|
"MIDDLE_BLOCKER"
|
|
118
|
-
]
|
|
140
|
+
],
|
|
141
|
+
"params": {
|
|
142
|
+
"debuffMagnitude": 0.8,
|
|
143
|
+
"debuffRallies": 3
|
|
144
|
+
}
|
|
119
145
|
},
|
|
120
146
|
{
|
|
121
147
|
"name": "TRUE_LEADER",
|
|
@@ -138,7 +164,10 @@
|
|
|
138
164
|
"OPPOSITE_HITTER",
|
|
139
165
|
"MIDDLE_BLOCKER",
|
|
140
166
|
"LIBERO"
|
|
141
|
-
]
|
|
167
|
+
],
|
|
168
|
+
"params": {
|
|
169
|
+
"threshold": 120
|
|
170
|
+
}
|
|
142
171
|
},
|
|
143
172
|
{
|
|
144
173
|
"name": "CRAFTY",
|
|
@@ -148,7 +177,10 @@
|
|
|
148
177
|
"OUTSIDE_HITTER",
|
|
149
178
|
"OPPOSITE_HITTER",
|
|
150
179
|
"MIDDLE_BLOCKER"
|
|
151
|
-
]
|
|
180
|
+
],
|
|
181
|
+
"params": {
|
|
182
|
+
"drainMult": 2
|
|
183
|
+
}
|
|
152
184
|
},
|
|
153
185
|
{
|
|
154
186
|
"name": "TENACIOUS",
|
|
@@ -159,7 +191,12 @@
|
|
|
159
191
|
"OPPOSITE_HITTER",
|
|
160
192
|
"MIDDLE_BLOCKER",
|
|
161
193
|
"LIBERO"
|
|
162
|
-
]
|
|
194
|
+
],
|
|
195
|
+
"params": {
|
|
196
|
+
"base": 0.2,
|
|
197
|
+
"cap": 0.6,
|
|
198
|
+
"minStreak": 3
|
|
199
|
+
}
|
|
163
200
|
},
|
|
164
201
|
{
|
|
165
202
|
"name": "HUNTER",
|
|
@@ -169,13 +206,20 @@
|
|
|
169
206
|
"OUTSIDE_HITTER",
|
|
170
207
|
"OPPOSITE_HITTER",
|
|
171
208
|
"MIDDLE_BLOCKER"
|
|
172
|
-
]
|
|
209
|
+
],
|
|
210
|
+
"params": {
|
|
211
|
+
"servePower": 1.08,
|
|
212
|
+
"attackFactor": 0.66
|
|
213
|
+
}
|
|
173
214
|
},
|
|
174
215
|
{
|
|
175
216
|
"name": "LAST_RESORT",
|
|
176
217
|
"chance": 0.1,
|
|
177
218
|
"roles": [
|
|
178
219
|
"LIBERO"
|
|
179
|
-
]
|
|
220
|
+
],
|
|
221
|
+
"params": {
|
|
222
|
+
"freeballScore": 25
|
|
223
|
+
}
|
|
180
224
|
}
|
|
181
225
|
]
|
|
@@ -7,12 +7,15 @@ export interface BoxScoreAttributes {
|
|
|
7
7
|
attack_attempts: number;
|
|
8
8
|
attack_kills: number;
|
|
9
9
|
attack_errors: number;
|
|
10
|
+
attack_blocked: number;
|
|
10
11
|
serve_attempts: number;
|
|
11
12
|
serve_aces: number;
|
|
12
13
|
serve_errors: number;
|
|
13
14
|
reception_attempts: number;
|
|
14
15
|
reception_perfect: number;
|
|
15
16
|
reception_positive: number;
|
|
17
|
+
reception_ok: number;
|
|
18
|
+
reception_negative: number;
|
|
16
19
|
reception_overpasses: number;
|
|
17
20
|
reception_errors: number;
|
|
18
21
|
block_solo: number;
|
|
@@ -23,6 +26,9 @@ export interface BoxScoreAttributes {
|
|
|
23
26
|
setting_errors: number;
|
|
24
27
|
setting_pass: number;
|
|
25
28
|
defense_digs: number;
|
|
29
|
+
defense_digs_perfect: number;
|
|
30
|
+
defense_digs_mediocre: number;
|
|
31
|
+
defense_digs_bad: number;
|
|
26
32
|
defense_errors: number;
|
|
27
33
|
misc_points_played: number;
|
|
28
34
|
misc_points_won_on_court: number;
|
|
@@ -39,12 +45,15 @@ export declare class BoxScoreModel extends Model<BoxScoreAttributes, BoxScoreCre
|
|
|
39
45
|
attack_attempts: number;
|
|
40
46
|
attack_kills: number;
|
|
41
47
|
attack_errors: number;
|
|
48
|
+
attack_blocked: number;
|
|
42
49
|
serve_attempts: number;
|
|
43
50
|
serve_aces: number;
|
|
44
51
|
serve_errors: number;
|
|
45
52
|
reception_attempts: number;
|
|
46
53
|
reception_perfect: number;
|
|
47
54
|
reception_positive: number;
|
|
55
|
+
reception_ok: number;
|
|
56
|
+
reception_negative: number;
|
|
48
57
|
reception_overpasses: number;
|
|
49
58
|
reception_errors: number;
|
|
50
59
|
block_solo: number;
|
|
@@ -55,6 +64,9 @@ export declare class BoxScoreModel extends Model<BoxScoreAttributes, BoxScoreCre
|
|
|
55
64
|
setting_errors: number;
|
|
56
65
|
setting_pass: number;
|
|
57
66
|
defense_digs: number;
|
|
67
|
+
defense_digs_perfect: number;
|
|
68
|
+
defense_digs_mediocre: number;
|
|
69
|
+
defense_digs_bad: number;
|
|
58
70
|
defense_errors: number;
|
|
59
71
|
misc_points_played: number;
|
|
60
72
|
misc_points_won_on_court: number;
|
|
@@ -36,6 +36,11 @@ export class BoxScoreModel extends Model {
|
|
|
36
36
|
allowNull: false,
|
|
37
37
|
defaultValue: 0
|
|
38
38
|
},
|
|
39
|
+
attack_blocked: {
|
|
40
|
+
type: DataTypes.SMALLINT,
|
|
41
|
+
allowNull: false,
|
|
42
|
+
defaultValue: 0
|
|
43
|
+
},
|
|
39
44
|
// Serve
|
|
40
45
|
serve_attempts: {
|
|
41
46
|
type: DataTypes.SMALLINT,
|
|
@@ -68,6 +73,16 @@ export class BoxScoreModel extends Model {
|
|
|
68
73
|
allowNull: false,
|
|
69
74
|
defaultValue: 0
|
|
70
75
|
},
|
|
76
|
+
reception_ok: {
|
|
77
|
+
type: DataTypes.SMALLINT,
|
|
78
|
+
allowNull: false,
|
|
79
|
+
defaultValue: 0
|
|
80
|
+
},
|
|
81
|
+
reception_negative: {
|
|
82
|
+
type: DataTypes.SMALLINT,
|
|
83
|
+
allowNull: false,
|
|
84
|
+
defaultValue: 0
|
|
85
|
+
},
|
|
71
86
|
reception_overpasses: {
|
|
72
87
|
type: DataTypes.SMALLINT,
|
|
73
88
|
allowNull: false,
|
|
@@ -121,6 +136,21 @@ export class BoxScoreModel extends Model {
|
|
|
121
136
|
allowNull: false,
|
|
122
137
|
defaultValue: 0
|
|
123
138
|
},
|
|
139
|
+
defense_digs_perfect: {
|
|
140
|
+
type: DataTypes.SMALLINT,
|
|
141
|
+
allowNull: false,
|
|
142
|
+
defaultValue: 0
|
|
143
|
+
},
|
|
144
|
+
defense_digs_mediocre: {
|
|
145
|
+
type: DataTypes.SMALLINT,
|
|
146
|
+
allowNull: false,
|
|
147
|
+
defaultValue: 0
|
|
148
|
+
},
|
|
149
|
+
defense_digs_bad: {
|
|
150
|
+
type: DataTypes.SMALLINT,
|
|
151
|
+
allowNull: false,
|
|
152
|
+
defaultValue: 0
|
|
153
|
+
},
|
|
124
154
|
defense_errors: {
|
|
125
155
|
type: DataTypes.SMALLINT,
|
|
126
156
|
allowNull: false,
|