@wayward/types 2.15.0-beta.dev.20251002.1 → 2.15.0-beta.dev.20251004.1

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 (45) hide show
  1. package/definitions/game/game/Game.d.ts +3 -1
  2. package/definitions/game/game/IGame.d.ts +2 -7
  3. package/definitions/game/game/curse/Curse.d.ts +107 -0
  4. package/definitions/game/game/curse/CurseEvent.d.ts +115 -0
  5. package/definitions/game/game/curse/CurseEventDefinitions.d.ts +14 -0
  6. package/definitions/game/game/curse/ICurse.d.ts +72 -0
  7. package/definitions/game/game/curse/event/CurseEventFrigidNight.d.ts +13 -0
  8. package/definitions/game/game/curse/event/CurseEventHeatWave.d.ts +13 -0
  9. package/definitions/game/game/deity/Deity.d.ts +0 -2
  10. package/definitions/game/game/entity/Human.d.ts +4 -1
  11. package/definitions/game/game/entity/IHuman.d.ts +5 -1
  12. package/definitions/game/game/entity/action/actions/SetTitle.d.ts +1 -1
  13. package/definitions/game/game/entity/player/MessageManager.d.ts +1 -1
  14. package/definitions/game/game/entity/status/IStatus.d.ts +30 -7
  15. package/definitions/game/game/entity/status/IStatusContext.d.ts +2 -1
  16. package/definitions/game/game/entity/status/Status.d.ts +2 -2
  17. package/definitions/game/game/entity/status/handler/BadTemperatureEffect.d.ts +3 -0
  18. package/definitions/game/game/entity/status/statuses/Cursed.d.ts +13 -0
  19. package/definitions/game/game/inspection/infoProviders/doodad/StillWater.d.ts +1 -0
  20. package/definitions/game/game/inspection/inspections/StatusInspection.d.ts +5 -2
  21. package/definitions/game/game/island/Island.d.ts +5 -1
  22. package/definitions/game/game/milestones/IMilestone.d.ts +1 -1
  23. package/definitions/game/game/options/modifiers/milestone/modifiers/Exsanguinated.d.ts +1 -1
  24. package/definitions/game/game/temperature/TemperatureManager.d.ts +3 -0
  25. package/definitions/game/game/time/ITimeManager.d.ts +1 -0
  26. package/definitions/game/game/time/TimeManager.d.ts +4 -4
  27. package/definitions/game/language/Dictionary.d.ts +110 -108
  28. package/definitions/game/language/DictionaryMap.d.ts +221 -217
  29. package/definitions/game/language/dictionary/Message.d.ts +563 -555
  30. package/definitions/game/language/dictionary/Misc.d.ts +4 -0
  31. package/definitions/game/language/dictionary/UiTranslation.d.ts +665 -664
  32. package/definitions/game/language/english/game/CurseEventGroups.d.ts +13 -0
  33. package/definitions/game/language/english/game/CurseEvents.d.ts +13 -0
  34. package/definitions/game/language/english/ui/CurseComponents.d.ts +1 -1
  35. package/definitions/game/resource/IResourceLoader.d.ts +44 -42
  36. package/definitions/game/ui/screen/screens/game/static/stats/component/StatusContext.d.ts +2 -1
  37. package/definitions/game/ui/screen/screens/game/static/stats/component/StatusIcon.d.ts +2 -1
  38. package/definitions/game/ui/screen/screens/game/static/stats/component/Statuses.d.ts +2 -1
  39. package/definitions/{utilities/class → game/utilities}/Inject.d.ts +3 -2
  40. package/definitions/utilities/event/EventBusManager.d.ts +4 -3
  41. package/definitions/utilities/math/Math2.d.ts +1 -0
  42. package/definitions/utilities/object/Objects.d.ts +1 -0
  43. package/definitions/utilities/random/Random.d.ts +6 -0
  44. package/package.json +1 -1
  45. package/definitions/game/game/deity/Curse.d.ts +0 -40
@@ -28,7 +28,7 @@ import { AutoSave } from "@wayward/game/game/meta/AutoSave";
28
28
  import { SaveLoad } from "@wayward/game/game/meta/SaveLoad";
29
29
  import type { Milestone } from "@wayward/game/game/milestones/IMilestone";
30
30
  import { MilestoneManager } from "@wayward/game/game/milestones/MilestoneManager";
31
- import type { IGameOptions } from "@wayward/game/game/options/IGameOptions";
31
+ import type { IGameOptions, IGameOptionsPartial } from "@wayward/game/game/options/IGameOptions";
32
32
  import { GameMode } from "@wayward/game/game/options/IGameOptions";
33
33
  import type { GameplayModifiersCollection } from "@wayward/game/game/options/modifiers/GameplayModifiersManager";
34
34
  import type { ChallengeModifiersCollection } from "@wayward/game/game/options/modifiers/challenge/ChallengeModifiers";
@@ -177,6 +177,8 @@ export declare class Game extends EventEmitter.Host<IGameEvents> {
177
177
  selectBiome(position: IVector2 | undefined, random: Random): BiomeTypes;
178
178
  getGameMode(): GameMode;
179
179
  getGameOptionsBeforeModifiers(): IGameOptions;
180
+ /** A game options modifier that always returns an empty array by default, to be injected into */
181
+ getAdditionalGameOptionsSources(): IGameOptionsPartial[];
180
182
  getGameOptions(): IGameOptions;
181
183
  uncacheGameOptions(): void;
182
184
  updateGameOptions(gameOptions: IGameOptions): void;
@@ -34,12 +34,6 @@ import type { IVector2, IVector3 } from "@wayward/game/utilities/math/IVector";
34
34
  import type { IBuildId } from "@wayward/hosts/shared/globalTypes";
35
35
  import type { IRange } from "@wayward/utilities/math/Range";
36
36
  export interface IGameEvents {
37
- /**
38
- * Called when game options are first processed, after modifiers are applied.
39
- *
40
- * You can use this combined with `game.uncacheGameOptions()` to dynamically modify game options.
41
- */
42
- getGameOptions(gameOptions: IGameOptions): IGameOptions;
43
37
  /**
44
38
  * Called when the game is starting
45
39
  * @param isLoadingSave True if a save game was loaded
@@ -127,8 +121,9 @@ export declare enum TickFlag {
127
121
  PlayerNotes = 1024,
128
122
  Items = 2048,
129
123
  Lights = 4096,
124
+ Curse = 8192,
130
125
  IslandFastForward = 6174,
131
- All = 65535
126
+ All = 4294967295
132
127
  }
133
128
  /**
134
129
  * This number * game.interval (16.666) is the tick time in milliseconds
@@ -0,0 +1,107 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import type { CurseEvent, CurseEventContext } from "@wayward/game/game/curse/CurseEvent";
12
+ import { CurseEventSubscriber } from "@wayward/game/game/curse/CurseEvent";
13
+ import { CurseCategory, CurseComponent, CurseEventDisplayMode, CurseEventType } from "@wayward/game/game/curse/ICurse";
14
+ import type Human from "@wayward/game/game/entity/Human";
15
+ import { SkillType } from "@wayward/game/game/entity/IHuman";
16
+ import type Island from "@wayward/game/game/island/Island";
17
+ import type { IVector2 } from "@wayward/game/utilities/math/IVector";
18
+ import { IRange } from "@wayward/utilities/math/Range";
19
+ export declare const CURSE_WEIGHTS: PartialRecord<CurseComponent, number>;
20
+ export declare const CURSE_ATTACK_MAX = 50;
21
+ export declare const CURSE_DEFENSE_MAX = 100;
22
+ export declare const CURSE_CRAFTING_MAX = 100;
23
+ export declare const CURSE_SKILL_MAX = 100;
24
+ export declare const CURSE_COMPONENTS: Record<CurseComponent, (human: Human) => number>;
25
+ /**
26
+ * Gets the highest value of either current or max skill multiplied by the "evilness" of each skill (from rune chance)
27
+ * (Basically, high values in any of the evil-er skills make curse go brrrr)
28
+ */
29
+ declare function getSkillValue(human: Human): {
30
+ value: number;
31
+ skill: SkillType;
32
+ };
33
+ declare namespace Curse {
34
+ const getSkill: typeof getSkillValue;
35
+ function getComponentValue(human: Human, component: CurseComponent): number;
36
+ function getValue(human: Human): number;
37
+ }
38
+ /**
39
+ * In the following graph, this value is `b`:
40
+ * https://www.desmos.com/calculator/sgdtqdqzup
41
+ */
42
+ export declare const CURSE_EVENTS_MAX = 5;
43
+ /**
44
+ * In the following graph, this value is `a`:
45
+ * https://www.desmos.com/calculator/sgdtqdqzup
46
+ */
47
+ export declare const CURSE_EVENTS_MAELSTROM_SPEED = 1;
48
+ /**
49
+ * The chance that a curse event will occur, given the opportunity.
50
+ * The chance scales up from the minimum (left) value at 0% curse, to the maximum (right) value at 100% curse.
51
+ *
52
+ * There can be up to CURSE_EVENTS_MAX opportunities per night, based on maelstrom level.
53
+ * At 0-1 maelstrom, there are up to 2 opportunities per night. (Per player, because curse events are localised.)
54
+ * Additional opportunities before the top opportunity always use the max chance.
55
+ */
56
+ export declare const CURSE_EVENTS_CHANCE: IRange;
57
+ export declare const CURSE_EVENTS_NEARBY_PLAYERS_RADIUS = 25;
58
+ /**
59
+ * For randomly selecting the cooldown time between curse event nights.
60
+ * Interpolates between the minimum and maximum values based on the player's curse — minimum at 0% curse, maximum at 100% curse.
61
+ */
62
+ export declare const CURSE_EVENTS_COOLDOWN_RANGE: {
63
+ minimum: IRange;
64
+ maximum: IRange;
65
+ };
66
+ declare namespace Curse {
67
+ interface Helper {
68
+ context: CurseEventContext;
69
+ instance: CurseEventInstance;
70
+ definition: CurseEvent;
71
+ }
72
+ function get(island?: Island, type?: CurseEventType): Helper | undefined;
73
+ function tickCurse(island: Island, humans: Human[]): void;
74
+ function reload(island: Island): void;
75
+ function spawnCurseEvents(island: Island, humans: Human[]): void;
76
+ function attemptCurseEventSpawn(category: CurseCategory, human: Human, curse: number, humans: Human[], events: CurseEventInstance[]): CurseEventInstance | undefined;
77
+ function attemptSpecificCurseEventSpawn(human: Human, type: CurseEventType, humans: Human[], curse?: number): CurseEventInstance | undefined;
78
+ function cleanup(island: Island, humans?: Human[]): void;
79
+ function createCurseEventContext(instance: CurseEventInstance, island: Island, humans?: Human[], cursebearer?: Human): CurseEventContext;
80
+ }
81
+ interface Curse {
82
+ night?: true;
83
+ events?: CurseEventInstance[];
84
+ cooldown?: number;
85
+ warned?: true;
86
+ }
87
+ interface ScriptProcessState {
88
+ /** The path of keys/indices from the root of the script to the step this process is currently on. */
89
+ path: Array<string | number>;
90
+ /** The game tick when this step's EndAfter condition is met. */
91
+ endTick?: number;
92
+ /** Iterations remaining for a "repeat" block. */
93
+ iterationsRemaining?: number;
94
+ /** The state of any child processes started by a "simultaneously" or "repeat" block. */
95
+ childProcesses?: ScriptProcessState[];
96
+ }
97
+ declare const SYMBOL_CURSE_EVENT_SUBSCRIBER_INSTANCES: unique symbol;
98
+ interface CurseEventInstance {
99
+ type: CurseEventType;
100
+ display: CurseEventDisplayMode;
101
+ cursebearerIdentifier: string;
102
+ point: IVector2;
103
+ subscribers?: string[];
104
+ scriptProcesses?: ScriptProcessState[];
105
+ [SYMBOL_CURSE_EVENT_SUBSCRIBER_INSTANCES]?: Record<string, CurseEventSubscriber>;
106
+ }
107
+ export default Curse;
@@ -0,0 +1,115 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import type { BiomeType } from "@wayward/game/game/biome/IBiome";
12
+ import type { CurseGroup, CurseEventDisplayMode, CurseEventType, CurseCategory } from "@wayward/game/game/curse/ICurse";
13
+ import type Human from "@wayward/game/game/entity/Human";
14
+ import type Island from "@wayward/game/game/island/Island";
15
+ import type { IGameOptionsPartial } from "@wayward/game/game/options/IGameOptions";
16
+ import type { TimeString } from "@wayward/game/game/time/ITimeManager";
17
+ import type { IVector2 } from "@wayward/game/utilities/math/IVector";
18
+ import type { IRange } from "@wayward/utilities/math/Range";
19
+ /** The API that curse events have access to */
20
+ export interface CurseEventContext {
21
+ readonly island: Island;
22
+ readonly point: IVector2;
23
+ /** A number 0-1 of how far through the night it currently is */
24
+ readonly fractionalTime: number;
25
+ readonly cursebearer: Human | undefined;
26
+ getNearbyPlayers(): Human[];
27
+ /**
28
+ * Inject a custom curse event subscriber class into the game.
29
+ * This class *must* be included in `CurseEvent.subscribers`.
30
+ */
31
+ inject<T extends CurseEventSubscriber>(subscriber: Class<T>): void;
32
+ setDisplay(mode: CurseEventDisplayMode): void;
33
+ uninject(): void;
34
+ uninject<T extends CurseEventSubscriber>(subscriber: Class<T>): void;
35
+ toString(): string;
36
+ }
37
+ export interface CurseEvent {
38
+ group: CurseGroup;
39
+ category: CurseCategory;
40
+ /** A number 0-1 representing the curse level that the randomly selected player must have in order for this curse event to be chosen */
41
+ requiredCurseLevel?: number;
42
+ requiredBiomes?: {
43
+ type: "whitelist" | "blacklist";
44
+ biomes: BiomeType[];
45
+ };
46
+ /** If one event is marked as conflicting with another, they will both have the conflict registered. */
47
+ conflicts?: CurseEventType[];
48
+ requiredPredicate?(context: CurseEventContext): boolean;
49
+ getOptions?(): IGameOptionsPartial;
50
+ subscribers?: Array<Class<CurseEventSubscriber>>;
51
+ onStart?(context: CurseEventContext): void;
52
+ onEnd?(context: CurseEventContext): void;
53
+ script?: CurseEventScript;
54
+ }
55
+ export declare function CurseEvent(event: CurseEvent): CurseEvent;
56
+ export type CurseEventScript = CurseEventScript.Step[];
57
+ export declare function CurseEventScript(steps: CurseEventScript): CurseEventScript;
58
+ export declare namespace CurseEventScript {
59
+ interface CurseEventScriptNodeBase {
60
+ type: string;
61
+ }
62
+ export interface EndAfter extends CurseEventScriptNodeBase {
63
+ type: "end after";
64
+ ticks: number | IRange;
65
+ }
66
+ export function EndAfter(ticks: number | IRange): EndAfter;
67
+ export interface EndAt extends CurseEventScriptNodeBase {
68
+ type: "end at";
69
+ time: TimeString;
70
+ }
71
+ export function EndAt(time: TimeString): EndAt;
72
+ export interface EndWhen extends CurseEventScriptNodeBase {
73
+ type: "end when";
74
+ predicate(context: CurseEventContext): boolean;
75
+ }
76
+ export function EndWhen(predicate: EndWhen["predicate"]): EndWhen;
77
+ export type EndCondition = EndAfter | EndAt | EndWhen;
78
+ export interface Wait extends CurseEventScriptNodeBase {
79
+ type: "wait";
80
+ end: EndCondition;
81
+ }
82
+ export function Wait(end: EndCondition): Wait;
83
+ export interface Action extends CurseEventScriptNodeBase {
84
+ type: "action";
85
+ end?: EndCondition;
86
+ /** @returns `false` to end the entire curse event immediately */
87
+ action(context: CurseEventContext): false | undefined | void;
88
+ }
89
+ export function Action(action: Action["action"]): Action;
90
+ export function Action(end: EndCondition, action: Action["action"]): Action;
91
+ export interface Repeat extends CurseEventScriptNodeBase {
92
+ type: "repeat";
93
+ steps: Step[];
94
+ times?: number | IRange;
95
+ }
96
+ export function Repeat(steps: Step[]): Repeat;
97
+ export function Repeat(times: number | IRange, steps: Step[]): Repeat;
98
+ export interface Simultaneously extends CurseEventScriptNodeBase {
99
+ type: "simultaneously";
100
+ scripts: Record<string, Step[]>;
101
+ }
102
+ export function Simultaneously(scripts: Record<string, Step[]>): Simultaneously;
103
+ export type Step = Wait | Action | Repeat | Simultaneously;
104
+ export {};
105
+ }
106
+ /**
107
+ * A base class for subscribing to game events & applying game options during a curse event.
108
+ * Note that renaming this class will result in it no longer being subscribed for a curse event, if it was before.
109
+ */
110
+ export declare abstract class CurseEventSubscriber {
111
+ protected readonly event: CurseEventContext;
112
+ constructor(event: CurseEventContext);
113
+ protected getOptions?(): IGameOptionsPartial;
114
+ private getAdditionalGameOptionsSources;
115
+ }
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import { CurseEventType } from "@wayward/game/game/curse/ICurse";
12
+ import type { CurseEvent } from "@wayward/game/game/curse/CurseEvent";
13
+ declare const _default: Record<CurseEventType, CurseEvent>;
14
+ export default _default;
@@ -0,0 +1,72 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ export declare enum CurseEventType {
12
+ None = 0,
13
+ Horde = 1,
14
+ UnwelcomeGuest = 2,
15
+ Shadows = 3,
16
+ Wisp = 4,
17
+ Swarm = 5,
18
+ FaeVisitor = 6,
19
+ Brownies = 7,
20
+ Siren = 8,
21
+ PlantDeath = 9,
22
+ NewPlants = 10,
23
+ CraftingInspiration = 11,
24
+ SuffusedWithMagic = 12,
25
+ LovedByTheWilds = 13,
26
+ HatedByTheWilds = 14,
27
+ RuneEffects = 15,
28
+ Lucky = 16,
29
+ Unlucky = 17,
30
+ FrigidNight = 18,
31
+ HeatWave = 19
32
+ }
33
+ export declare enum CurseGroup {
34
+ Lucky = 0,
35
+ Neutral = 1,
36
+ Unlucky = 2
37
+ }
38
+ export declare enum CurseCategory {
39
+ /**
40
+ * Primary curses are the main ones that players should be responding to.
41
+ */
42
+ Primary = 0,
43
+ /**
44
+ * Secondary curses are ones that interact with the primary curses in interesting ways.
45
+ *
46
+ * Secondary curses are selected before primary curses.
47
+ */
48
+ Secondary = 1,
49
+ /**
50
+ * Dependent curses are secondary curses that can ONLY be selected if a specific primary curse is also selected.
51
+ *
52
+ * They're still selected before primary curses, but will be cancelled if no primary curse is selected.
53
+ */
54
+ Dependent = 2
55
+ }
56
+ export declare enum CurseComponent {
57
+ Skill = 0,
58
+ HighestAttack = 1,
59
+ HighestDefense = 2,
60
+ CumulativeEvilCrafting = 3,
61
+ Equipment = 4,
62
+ Modifier = 5
63
+ }
64
+ export declare enum CurseSystemDiscovery {
65
+ CurseFactors = 0,
66
+ CurseFactorsExact = 1
67
+ }
68
+ export declare enum CurseEventDisplayMode {
69
+ Hidden = 0,
70
+ Mystery = 1,
71
+ Revealed = 2
72
+ }
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import { CurseEvent } from "@wayward/game/game/curse/CurseEvent";
12
+ declare const _default: CurseEvent;
13
+ export default _default;
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import { CurseEvent } from "@wayward/game/game/curse/CurseEvent";
12
+ declare const _default: CurseEvent;
13
+ export default _default;
@@ -23,8 +23,6 @@ export declare namespace DeityReal {
23
23
  function is(value: unknown): value is DeityReal;
24
24
  }
25
25
  export declare enum DeityDiscovery {
26
- CurseFactors = 0,// uses current alignment (-8,000)
27
- CurseFactorsExact = 1
28
26
  }
29
27
  export declare const DEITY_ENEMIES: PartialRecord<DeityReal, DeityReal>;
30
28
  export declare const DEITY_SOUNDS: PartialRecord<DeityReal, SfxType>;
@@ -46,7 +46,7 @@ import ItemReference from "@wayward/game/game/item/ItemReference";
46
46
  import MagicalPropertyType from "@wayward/game/game/magic/MagicalPropertyType";
47
47
  import { Milestone } from "@wayward/game/game/milestones/IMilestone";
48
48
  import Runekeeper from "@wayward/game/game/milestones/milestone/Runekeeper";
49
- import type { IGameOptionsPlayer } from "@wayward/game/game/options/IGameOptions";
49
+ import type { IGameOptionsPartial, IGameOptionsPlayer } from "@wayward/game/game/options/IGameOptions";
50
50
  import type { Reference, ReferenceType } from "@wayward/game/game/reference/IReferenceManager";
51
51
  import type { IHasInsulation } from "@wayward/game/game/temperature/ITemperature";
52
52
  import { TempType } from "@wayward/game/game/temperature/ITemperature";
@@ -182,8 +182,11 @@ export default abstract class Human<DescriptionType = unknown, TypeType extends
182
182
  */
183
183
  get lastAttackedByEntityHuman(): Human | undefined;
184
184
  getDefense(): PlayerDefense;
185
+ /** A game options modifier that always returns an empty array by default, to be injected into */
186
+ getAdditionalGameOptionsSources(): IGameOptionsPartial[];
185
187
  getGameOptionsBeforeModifiers(): ImmutableObject<IGameOptionsPlayer>;
186
188
  getGameOptions(): ImmutableObject<IGameOptionsPlayer>;
189
+ clearGameOptionsCache(): void;
187
190
  setOptions(options: IOptions): void;
188
191
  getEquipEffect<E extends EquipEffect>(type: E): FirstIfOne<EquipEffectByType<E>>;
189
192
  /**
@@ -414,7 +414,11 @@ export declare enum RestCancelReason {
414
414
  CreatureDamaged = 4,
415
415
  Canceled = 5,
416
416
  Dying = 6,
417
- WaterPoured = 7
417
+ WaterPoured = 7,
418
+ UncomfortablyCold = 8,
419
+ TooCold = 9,
420
+ UncomfortablyHot = 10,
421
+ TooHot = 11
418
422
  }
419
423
  export declare const restCancelReasonMessageMap: Record<RestCancelReason, Message | undefined>;
420
424
  export type WalkToChangeReason = "Damage" | "Overburdened" | "PromptVisible" | "Unknown";
@@ -16,5 +16,5 @@ export declare enum TitleType {
16
16
  Milestone = 0,
17
17
  Skill = 1
18
18
  }
19
- declare const _default: Action<[[ActionArgument.Undefined, import("../argument/ActionArgumentEnum").default<TitleType, "Skill" | "Milestone">], [arg1: ActionArgument.Undefined, import("../argument/ActionArgumentEnum").default<Milestone, "Statistician" | "Runekeeper" | "Navigator" | "Abnormalizer" | "Chef" | "Exterminator" | "Crafter" | "Gardener" | "Gatherer" | "Hunter" | "Locksmith" | "ReaperOfSouls" | "Survivor" | "Pitcher" | "Trapsetter" | "TreasureHunter" | "Collector" | "Explorer" | "Grandmaster" | "Prepared" | "Doctor" | "Artificer" | "Returned" | "DragonSlayer" | "Treasurer" | "Pulchritudinous" | "Friendly" | "Malevolent" | "Benevolent" | "Boundless" | "Talented" | "Weathered" | "Seasoned" | "Pacifier" | "Merchant" | "Notekeeper" | "Operator" | "Huntsman" | "Contender" | "Challenger" | "DestroyerOfMagi" | "Helmsman" | "Multitasker" | "Apocryphal" | "Diverse" | "InternalDiscoveredBoats" | "Traitor" | "MasterOfAll" | "Rouseabout" | "Murderer" | "Retailer" | "Masochist" | "Versatile" | "InternalStatDiscovery" | "Dedicated" | "Hounded" | "Serene" | "InternalRuneOrAltarDiscovery" | "Curator" | "Thaumaturgic" | "InternalDeityDiscovery" | "InternalMerchantsDiscovery" | "InternalDeitySystemDiscovery" | "Invoker" | "InternalDeityInvoked" | "InternalInsulationDiscovery" | "Turbulent" | "Afflicted" | "Exsanguinated" | "InternalItemDiscovered">, import("../argument/ActionArgumentEnum").default<SkillType, "None" | "Chemistry" | "Anatomy" | "Marksmanship" | "Blacksmithing" | "Botany" | "Camping" | "Cartography" | "Claythrowing" | "Cooking" | "Fishing" | "Fletching" | "Glassblowing" | "Leatherworking" | "Lockpicking" | "Lumberjacking" | "Mining" | "Mycology" | "Parrying" | "Stonecrafting" | "Swimming" | "Tactics" | "Tailoring" | "Throwing" | "Tinkering" | "Trapping" | "Woodworking" | "Taming" | "Horticulture" | "Bartering" | "Seafaring" | "Thaumaturgy" | "DualWielding" | "Theurgy">]], ActionType.SetTitle, import("../../player/Player").default, void, import("@wayward/game/game/entity/action/IAction").IActionUsable, [(TitleType | undefined)?, (Milestone | SkillType | undefined)?]>;
19
+ declare const _default: Action<[[ActionArgument.Undefined, import("../argument/ActionArgumentEnum").default<TitleType, "Skill" | "Milestone">], [arg1: ActionArgument.Undefined, import("../argument/ActionArgumentEnum").default<Milestone, "Statistician" | "Runekeeper" | "Navigator" | "Abnormalizer" | "Chef" | "Exterminator" | "Crafter" | "Gardener" | "Gatherer" | "Hunter" | "Locksmith" | "ReaperOfSouls" | "Survivor" | "Pitcher" | "Trapsetter" | "TreasureHunter" | "Collector" | "Explorer" | "Grandmaster" | "Prepared" | "Doctor" | "Artificer" | "Returned" | "DragonSlayer" | "Treasurer" | "Pulchritudinous" | "Friendly" | "Malevolent" | "Benevolent" | "Boundless" | "Talented" | "Weathered" | "Seasoned" | "Pacifier" | "Merchant" | "Notekeeper" | "Operator" | "Huntsman" | "Contender" | "Challenger" | "DestroyerOfMagi" | "Helmsman" | "Multitasker" | "Apocryphal" | "Diverse" | "InternalDiscoveredBoats" | "Traitor" | "MasterOfAll" | "Rouseabout" | "Murderer" | "Retailer" | "Masochist" | "Versatile" | "InternalStatDiscovery" | "Dedicated" | "Hounded" | "Serene" | "InternalRuneOrAltarDiscovery" | "Curator" | "Thaumaturgic" | "InternalDeityDiscovery" | "InternalMerchantsDiscovery" | "InternalCurseSystemDiscovery" | "Invoker" | "InternalDeityInvoked" | "InternalInsulationDiscovery" | "Turbulent" | "Afflicted" | "Exsanguinated" | "InternalItemDiscovered">, import("../argument/ActionArgumentEnum").default<SkillType, "None" | "Taming" | "Mining" | "Swimming" | "Chemistry" | "Anatomy" | "Marksmanship" | "Blacksmithing" | "Botany" | "Camping" | "Cartography" | "Claythrowing" | "Cooking" | "Fishing" | "Fletching" | "Glassblowing" | "Leatherworking" | "Lockpicking" | "Lumberjacking" | "Mycology" | "Parrying" | "Stonecrafting" | "Tactics" | "Tailoring" | "Throwing" | "Tinkering" | "Trapping" | "Woodworking" | "Horticulture" | "Bartering" | "Seafaring" | "Thaumaturgy" | "DualWielding" | "Theurgy">]], ActionType.SetTitle, import("../../player/Player").default, void, import("@wayward/game/game/entity/action/IAction").IActionUsable, [(TitleType | undefined)?, (Milestone | SkillType | undefined)?]>;
20
20
  export default _default;
@@ -62,7 +62,7 @@ export default class MessageManager implements IMessageManager {
62
62
  * When called from the server, it is sent to every client.
63
63
  */
64
64
  static toAll(sender: MessageManagerToAllSender): boolean;
65
- static toAll(players: Human[], sender: MessageManagerToAllSender): boolean;
65
+ static toAll(players: Iterable<Human>, sender: MessageManagerToAllSender): boolean;
66
66
  private readonly history;
67
67
  private lastMessageId;
68
68
  private _source;
@@ -15,9 +15,12 @@ import { MessageType } from "@wayward/game/game/entity/player/IMessageManager";
15
15
  import type IStatusContext from "@wayward/game/game/entity/status/IStatusContext";
16
16
  import type Status from "@wayward/game/game/entity/status/Status";
17
17
  import type { StatusEffectList } from "@wayward/game/game/entity/status/StatusEffectList";
18
+ import type { IIcon } from "@wayward/game/game/inspection/InfoProvider";
18
19
  import type { IGameOptionsStatus } from "@wayward/game/game/options/IGameOptions";
19
20
  import type Dictionary from "@wayward/game/language/Dictionary";
21
+ import type { StatusTranslation } from "@wayward/game/language/dictionary/Misc";
20
22
  import type { TranslationArg } from "@wayward/game/language/ITranslation";
23
+ import type Translation from "@wayward/game/language/Translation";
21
24
  import type StatusRenderer from "@wayward/game/renderer/StatusRenderer";
22
25
  import type { IHighlight } from "@wayward/game/ui/util/IHighlight";
23
26
  import type ImagePath from "@wayward/game/ui/util/ImagePath";
@@ -25,19 +28,33 @@ import type { IRGB } from "@wayward/utilities/Color";
25
28
  import type { IRange } from "@wayward/utilities/math/Range";
26
29
  export declare const STATUS_BASE_INTERVAL = 20;
27
30
  export type StatusParticle = [countOrChance: number, color: IRGB];
28
- export interface IStatusDescription {
31
+ export interface IStatusDisplayable {
32
+ highlight?: SupplierOr<IHighlight | undefined, [IStatusContext]>;
33
+ icon?: SupplierOr<IStatusIconDescription | undefined, [IStatusContext]>;
34
+ getBorderColorOverride?(status?: Status): string | undefined;
35
+ getCategoryOverride?(status?: Status): IStatusCategoryOverride | undefined;
36
+ }
37
+ export interface IStatusCategoryOverride {
38
+ icon: string | IIcon;
39
+ translation: Translation;
40
+ }
41
+ export interface IStatusDescription extends IStatusDisplayable {
29
42
  applicability: StatusApplicability;
30
43
  relevantStat?: Stat;
31
- levelledDictionary?: Dictionary;
44
+ levelledDictionary?: Dictionary | {
45
+ dictionary: Dictionary;
46
+ whichMap: Record<StatusTranslation, number>;
47
+ };
32
48
  sound?: SfxType | Record<number, SfxType>;
33
49
  /** Defaults to neutral */
34
- threatLevel?: StatusThreatLevel | Record<number, StatusThreatLevel>;
50
+ threatLevel?: StatusThreatLevel | Record<number, StatusThreatLevel> | false;
35
51
  /** An optional list of status effect levels that will be displayed in the `StatusInspection` for inspecting the status type itself */
36
52
  listedLevels?: number[];
53
+ /** An optional replacement list of icons to display for this status effect, rather than the single default icon. */
54
+ getDisplay?(status: Status): IStatusDisplayInstance[] | undefined;
55
+ getSubtitle?(): Translation | undefined;
37
56
  interval?: SupplierOr<number | undefined, [IStatusContext]>;
38
57
  effects?: SupplierOr<StatusEffectList | undefined, [IStatusContext, StatusEffectList]>;
39
- highlight?: SupplierOr<IHighlight | undefined, [IStatusContext]>;
40
- icon?: SupplierOr<IStatusIconDescription | undefined, [IStatusContext]>;
41
58
  particles?: SupplierOr<StatusParticle | undefined, [IStatusContext, StatusParticleEvent?]>;
42
59
  /** A list of `StatusRenderer`s that could be returned by a supplier in the `renderer` property */
43
60
  renderers?: StatusRenderer[];
@@ -57,6 +74,10 @@ export interface IStatusDescription {
57
74
  onPassed?(status: Status, oldLevel: number): any;
58
75
  refresh?(status: Status): any;
59
76
  }
77
+ export interface IStatusDisplayInstance extends IStatusDisplayable {
78
+ level?: number;
79
+ threatLevel?: StatusThreatLevel;
80
+ }
60
81
  export interface IStatusIconDescription {
61
82
  /**
62
83
  * A custom path for the icon, if necessary.
@@ -85,7 +106,8 @@ export declare enum StatusType {
85
106
  Pacified = 10,
86
107
  Frenzied = 11,
87
108
  Statistician = 12,
88
- Runekeeper = 13
109
+ Runekeeper = 13,
110
+ Cursed = 14
89
111
  }
90
112
  /** Fake status types just for display */
91
113
  export declare enum DisplayStatusType {
@@ -108,7 +130,8 @@ export declare enum StatusThreatLevel {
108
130
  Good = 0,
109
131
  Neutral = 1,
110
132
  Issue = 2,
111
- Threat = 3
133
+ Threat = 3,
134
+ Hidden = 4
112
135
  }
113
136
  export declare enum StatusEffectType {
114
137
  AddsAChanceOfXOnY = 0,
@@ -9,7 +9,8 @@
9
9
  * https://github.com/WaywardGame/types/wiki
10
10
  */
11
11
  import type EntityWithStats from "@wayward/game/game/entity/EntityWithStats";
12
- import type { IStatusDescription, StatusThreatLevel, StatusType } from "@wayward/game/game/entity/status/IStatus";
12
+ import type { IStatusDescription, StatusType } from "@wayward/game/game/entity/status/IStatus";
13
+ import { StatusThreatLevel } from "@wayward/game/game/entity/status/IStatus";
13
14
  import type Status from "@wayward/game/game/entity/status/Status";
14
15
  import { StatusEffectList } from "@wayward/game/game/entity/status/StatusEffectList";
15
16
  import type { IGameOptionsStatus } from "@wayward/game/game/options/IGameOptions";
@@ -63,7 +63,7 @@ export default class Status extends EventEmitter.Host<IStatusEvents> {
63
63
  * @param color The color of the particle effect
64
64
  */
65
65
  getParticles(event: StatusParticleEvent): StatusParticle | undefined;
66
- getIcon(): IStatusIconDescription | undefined;
66
+ getIcon(displayIndex?: number): IStatusIconDescription | undefined;
67
67
  getHighlight(): IHighlight | undefined;
68
68
  isActive(): boolean;
69
69
  add(reason?: StatusChangeReason, level?: number, force?: boolean, oldLevel?: number): this;
@@ -75,7 +75,7 @@ export default class Status extends EventEmitter.Host<IStatusEvents> {
75
75
  */
76
76
  getLevel(): number;
77
77
  getThreatLevel(): StatusThreatLevel;
78
- getTranslation(which?: StatusTranslation): TranslationImpl | undefined;
78
+ getTranslation(which?: StatusTranslation, level?: number): TranslationImpl | undefined;
79
79
  refresh(): void;
80
80
  getEffects(): StatusEffectList;
81
81
  getInterval(): number;
@@ -14,6 +14,9 @@ import type { StatusType } from "@wayward/game/game/entity/status/IStatus";
14
14
  import Status from "@wayward/game/game/entity/status/Status";
15
15
  import type Island from "@wayward/game/game/island/Island";
16
16
  import { Temperature, TempType } from "@wayward/game/game/temperature/ITemperature";
17
+ export declare const CHANCE_TEMP_CONSEQUENCE_EFFECT = 0.3;
18
+ export declare const CHANCE_TEMP_CONSEQUENCE_STAT = 0.5;
19
+ export declare const CHANCE_TEMP_WAKEUP = 0.15;
17
20
  export default abstract class BadTemperatureEffect extends Status {
18
21
  protected effectiveTemperature: Temperature;
19
22
  register(): void;
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright 2011-2025 Unlok
3
+ * https://www.unlok.ca
4
+ *
5
+ * Credits & Thanks:
6
+ * https://www.unlok.ca/credits-thanks/
7
+ *
8
+ * Wayward is a copyrighted and licensed work. Modification and/or distribution of any source files is prohibited. If you wish to modify the game in any way, please refer to the modding guide:
9
+ * https://github.com/WaywardGame/types/wiki
10
+ */
11
+ import type { IStatusDescription } from "@wayward/game/game/entity/status/IStatus";
12
+ declare const _default: IStatusDescription;
13
+ export default _default;
@@ -15,6 +15,7 @@ export default class StillWaterInfoProvider extends InfoProvider {
15
15
  static get(doodad: Doodad): StillWaterInfoProvider | undefined;
16
16
  private readonly waterTopMessage;
17
17
  private readonly waterBottomMessage;
18
+ private readonly waterContainerMessage;
18
19
  private constructor();
19
20
  getClass(): string[];
20
21
  hasContent(): boolean;
@@ -9,7 +9,8 @@
9
9
  * https://github.com/WaywardGame/types/wiki
10
10
  */
11
11
  import type EntityWithStats from "@wayward/game/game/entity/EntityWithStats";
12
- import type { IStatusDescription, StatusThreatLevel } from "@wayward/game/game/entity/status/IStatus";
12
+ import type { IStatusDescription, IStatusDisplayable } from "@wayward/game/game/entity/status/IStatus";
13
+ import { StatusThreatLevel } from "@wayward/game/game/entity/status/IStatus";
13
14
  import { StatusType } from "@wayward/game/game/entity/status/IStatus";
14
15
  import IStatusContext from "@wayward/game/game/entity/status/IStatusContext";
15
16
  import type Status from "@wayward/game/game/entity/status/Status";
@@ -33,10 +34,12 @@ export declare enum StatusInspectionClasses {
33
34
  Cures = "inspection-type-status-cures"
34
35
  }
35
36
  export default class StatusInspection extends Inspection<StatusType> {
36
- static getAdjective(type: StatusType, status?: Status, threatGroup?: StatusThreatLevel): Translation;
37
+ static getAdjective(type: StatusType, status?: Status, threatGroup?: StatusThreatLevel, display?: number): Translation;
37
38
  static handles: (type: InspectType, value: unknown, context?: InfoProviderContext) => boolean;
38
39
  get statusContext(): IStatusContext;
39
40
  get status(): Status | undefined;
41
+ get displayIndex(): number | undefined;
42
+ get displayDefinition(): IStatusDisplayable | undefined;
40
43
  get entity(): EntityWithStats | undefined;
41
44
  get definition(): IStatusDescription | undefined;
42
45
  constructor([, type]: [ReferenceType, StatusType], context?: InfoProviderContext);