@wayward/types 2.15.0-beta.dev.20251011.1 → 2.15.0-beta.dev.20251018.2

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 (79) hide show
  1. package/definitions/game/audio/IAudio.d.ts +70 -66
  2. package/definitions/game/game/curse/Curse.d.ts +11 -4
  3. package/definitions/game/game/curse/CurseEvent.d.ts +14 -5
  4. package/definitions/game/game/curse/ICurse.d.ts +11 -1
  5. package/definitions/game/game/curse/event/CurseEventCraftingInspiration.d.ts +2 -0
  6. package/definitions/game/game/curse/event/CurseEventFrigidNight.d.ts +1 -0
  7. package/definitions/game/game/curse/event/CurseEventHeatWave.d.ts +1 -0
  8. package/definitions/game/game/curse/event/CurseEventHorde.d.ts +20 -0
  9. package/definitions/game/game/curse/event/CurseEventLucky.d.ts +1 -0
  10. package/definitions/game/game/curse/event/CurseEventNewPlants.d.ts +15 -0
  11. package/definitions/game/game/curse/event/CurseEventPlantDeath.d.ts +15 -0
  12. package/definitions/game/game/curse/event/CurseEventShadows.d.ts +2 -1
  13. package/definitions/game/game/curse/event/CurseEventSwarm.d.ts +18 -0
  14. package/definitions/game/game/curse/event/CurseEventUnlucky.d.ts +1 -0
  15. package/definitions/game/game/doodad/Doodad.d.ts +3 -7
  16. package/definitions/game/game/doodad/DoodadUtilities.d.ts +3 -1
  17. package/definitions/game/game/doodad/Doodads.d.ts +2 -1
  18. package/definitions/game/game/doodad/IDoodad.d.ts +35 -3
  19. package/definitions/game/game/entity/CombatStrengthManager.d.ts +1 -1
  20. package/definitions/game/game/entity/Human.d.ts +3 -4
  21. package/definitions/game/game/entity/IEntity.d.ts +11 -0
  22. package/definitions/game/game/entity/IHuman.d.ts +2 -2
  23. package/definitions/game/game/entity/IStats.d.ts +17 -42
  24. package/definitions/game/game/entity/Stats.d.ts +1 -0
  25. package/definitions/game/game/entity/action/Action.d.ts +2 -20
  26. package/definitions/game/game/entity/action/actions/SetTitle.d.ts +1 -1
  27. package/definitions/game/game/entity/player/IMessageManager.d.ts +5 -1
  28. package/definitions/game/game/entity/skill/ISkills.d.ts +1 -0
  29. package/definitions/game/game/entity/status/IStatus.d.ts +13 -8
  30. package/definitions/game/game/entity/status/IStatusContext.d.ts +1 -1
  31. package/definitions/game/game/entity/status/StatusEffectList.d.ts +2 -0
  32. package/definitions/game/game/inspection/IInspection.d.ts +5 -3
  33. package/definitions/game/game/inspection/InspectionTypeMap.d.ts +4 -2
  34. package/definitions/game/game/inspection/infoProviders/MagicalCurseProperties.d.ts +30 -0
  35. package/definitions/game/game/inspection/infoProviders/MagicalPropertyValue.d.ts +1 -0
  36. package/definitions/game/game/inspection/infoProviders/item/MagicalSourceTooltip.d.ts +3 -3
  37. package/definitions/game/game/inspection/infoProviders/item/use/ItemBuildInfo.d.ts +1 -1
  38. package/definitions/game/game/inspection/inspections/MagicCurseInspection.d.ts +29 -0
  39. package/definitions/game/game/inspection/inspections/utility/EffectRadiusRegistry.d.ts +24 -0
  40. package/definitions/game/game/item/IItem.d.ts +24 -2
  41. package/definitions/game/game/item/Item.d.ts +0 -5
  42. package/definitions/game/game/item/ItemManager.d.ts +5 -0
  43. package/definitions/game/game/magic/IMagicalProperty.d.ts +6 -1
  44. package/definitions/game/game/magic/MagicalPropertyManager.d.ts +39 -5
  45. package/definitions/game/game/magic/MagicalPropertyType.d.ts +4 -0
  46. package/definitions/game/game/milestones/MilestoneDefinition.d.ts +2 -2
  47. package/definitions/game/game/options/IGameOptions.d.ts +7 -0
  48. package/definitions/game/game/reference/IReferenceManager.d.ts +12 -1
  49. package/definitions/game/game/tile/ITerrain.d.ts +3 -22
  50. package/definitions/game/game/tile/Tile.d.ts +4 -2
  51. package/definitions/game/game/time/TimeManager.d.ts +4 -1
  52. package/definitions/game/language/DictionaryMap.d.ts +32 -0
  53. package/definitions/game/language/LanguageManager.d.ts +0 -2
  54. package/definitions/game/language/Translation.d.ts +1 -0
  55. package/definitions/game/language/dictionary/Message.d.ts +565 -564
  56. package/definitions/game/language/dictionary/Misc.d.ts +69 -65
  57. package/definitions/game/language/dictionary/UiTranslation.d.ts +858 -850
  58. package/definitions/game/language/english/item/DoodadsExtra.d.ts +2 -2
  59. package/definitions/game/language/english/item/ItemsExtra.d.ts +2 -2
  60. package/definitions/game/language/english/item/MagicalPropertyTypes.d.ts +1 -1
  61. package/definitions/game/renderer/fieldOfView/IFieldOfView.d.ts +4 -1
  62. package/definitions/game/renderer/overlay/EffectRadiusOverlay.d.ts +36 -0
  63. package/definitions/game/renderer/world/WorldRenderer.d.ts +4 -0
  64. package/definitions/game/save/data/ISaveDataGlobal.d.ts +1 -0
  65. package/definitions/game/save/upgrade/UpgradeVersion.d.ts +4 -0
  66. package/definitions/game/save/upgrade/versions/beta2.15.0/beta2.15.0-dev20251012.d.ts +12 -0
  67. package/definitions/game/save/upgrade/versions/beta2.15.0/beta2.15.0-dev20251016.d.ts +12 -0
  68. package/definitions/game/save/upgrade/versions/beta2.15.0/beta2.15.0-dev20251018.d.ts +12 -0
  69. package/definitions/game/ui/old/OldUi.d.ts +2 -0
  70. package/definitions/game/ui/screen/screens/game/component/ItemComponent.d.ts +1 -0
  71. package/definitions/game/ui/screen/screens/game/static/Stats.d.ts +1 -0
  72. package/definitions/game/ui/screen/screens/game/static/stats/IStatDisplayDescription.d.ts +16 -4
  73. package/definitions/game/ui/screen/screens/game/static/stats/TemperatureDisplay.d.ts +13 -0
  74. package/definitions/game/ui/screen/screens/game/static/stats/component/StatComponent.d.ts +3 -0
  75. package/definitions/game/ui/screen/screens/menu/menus/options/TabPerformance.d.ts +1 -0
  76. package/definitions/game/ui/screen/screens/menu/menus/options/TabVideo.d.ts +2 -0
  77. package/definitions/game/utilities/math/Vector2.d.ts +25 -5
  78. package/definitions/utilities/math/Range.d.ts +6 -6
  79. package/package.json +1 -1
@@ -16,50 +16,25 @@ export declare enum Stat {
16
16
  Hunger = 2,
17
17
  Thirst = 3,
18
18
  Weight = 4,
19
- Attack = 5,
20
- /**
21
- * The base defense of the player.
22
- * UI only. Does not exist on `Player` instances.
23
- */
24
- Defense = 6,
25
- /**
26
- * A combination of `Stat.Hunger` + `Stat.Thirst`
27
- * Does not exist on `Player` instances. Used for magical items.
28
- */
29
- Metabolism = 7,
30
- /**
31
- * Used to calculate the max weight & max health of the player.
32
- */
33
- Strength = 8,
34
- /**
35
- * UI only. Does not exist on `Player` instances.
36
- */
37
- Luck = 9,
38
- /**
39
- * How much this human and their inventory is affected by temperature
40
- */
19
+ Metabolism = 5,
20
+ Strength = 6,
21
+ Dexterity = 7,
22
+ Attack = 8,
23
+ Defense = 9,
41
24
  InsulationHeat = 10,
42
25
  InsulationCold = 11,
43
- /**
44
- * Used for chicken eggs and goat milk
45
- */
46
- Produce = 12,
47
- /**
48
- * Used for tamed animals
49
- */
50
- Happiness = 13,
51
- Tamed = 14,
52
- Petting = 15,
53
- Waste = 16,
54
- Petted = 17,
55
- Curse = 18,
56
- Generic = 19,
57
- AttackDefenseRow = 20,
58
- Dexterity = 21,
59
- /**
60
- * Used for creatures to stop them despawning until this stat reaches 0.
61
- */
62
- DespawnProtection = 22
26
+ Luck = 12,
27
+ Curse = 13,
28
+ AttackDefenseRow = 14,
29
+ Generic = 15,
30
+ Temperature = 16,
31
+ Produce = 17,
32
+ Happiness = 18,
33
+ Tamed = 19,
34
+ Petting = 20,
35
+ Waste = 21,
36
+ Petted = 22,
37
+ DespawnProtection = 23
63
38
  }
64
39
  export declare const CORE_STATS: Stat[];
65
40
  export type IStats = {
@@ -71,6 +71,7 @@ export default class Stats<T extends IStatHost> {
71
71
  * Note: Initializes the stat if it does not exist.
72
72
  */
73
73
  setValue(stat: Stat | IStat, amount: number, info?: StatChangeReason | IStatChangeInfo): boolean;
74
+ cacheDynamicValue(stat: Stat | IStat, value: number): boolean;
74
75
  /**
75
76
  * Reduces the given `Stat` by the given amount. Triggers `statChange`
76
77
  * @param stat The `Stat` to reduce.
@@ -9,18 +9,10 @@
9
9
  * https://github.com/WaywardGame/types/wiki
10
10
  */
11
11
  import type { DeityReal } from "@wayward/game/game/deity/Deity";
12
- import type Doodad from "@wayward/game/game/doodad/Doodad";
13
12
  import type { ActionArguments, ActionArgumentTupleTypes, ActionFlag, ActionType, ActionUsability, IActionApi, IActionConfirmerApi, IActionDescription, IActionExample, IActionExampleApi, IActionHandlerApi, IActionNotUsable, IActionNotUsableHandlerApi, IActionTargetAdjacent, IActionTargetEntityRanged, IActionTargetTileRanged, IActionUsable } from "@wayward/game/game/entity/action/IAction";
14
- import type Corpse from "@wayward/game/game/entity/creature/corpse/Corpse";
15
- import type Creature from "@wayward/game/game/entity/creature/Creature";
16
13
  import type Entity from "@wayward/game/game/entity/Entity";
17
- import type Human from "@wayward/game/game/entity/Human";
18
- import type { EntityType } from "@wayward/game/game/entity/IEntity";
19
- import type NPC from "@wayward/game/game/entity/npc/NPC";
20
- import type Player from "@wayward/game/game/entity/player/Player";
21
- import type Item from "@wayward/game/game/item/Item";
14
+ import type { EntityType, EntityTypeMap } from "@wayward/game/game/entity/IEntity";
22
15
  import type Tile from "@wayward/game/game/tile/Tile";
23
- import type TileEvent from "@wayward/game/game/tile/TileEvent";
24
16
  import { Direction } from "@wayward/game/utilities/math/Direction";
25
17
  import type { IVector3 } from "@wayward/game/utilities/math/IVector";
26
18
  export declare class Action<A extends ActionArguments, T extends ActionType = ActionType, E extends Entity = Entity, R = void, CU extends IActionUsable = IActionUsable, AV extends any[] = ActionArgumentTupleTypes<A>> implements IActionDescription<A, E, R, CU, AV> {
@@ -126,15 +118,5 @@ export declare class Action<A extends ActionArguments, T extends ActionType = Ac
126
118
  */
127
119
  clone(): Action<A, T, E, R, CU, AV>;
128
120
  }
129
- type EntityTypeMap<E extends EntityType> = {
130
- [EntityType.Corpse]: Corpse;
131
- [EntityType.Creature]: Creature;
132
- [EntityType.Doodad]: Doodad;
133
- [EntityType.Human]: Human;
134
- [EntityType.Item]: Item;
135
- [EntityType.NPC]: NPC;
136
- [EntityType.Player]: Player;
137
- [EntityType.TileEvent]: TileEvent;
138
- }[E];
139
- type EntityTypeTupleType<E extends EntityType[]> = E extends [EntityType] ? EntityTypeMap<E[0]> : E extends [EntityType, EntityType] ? EntityTypeMap<E[0]> | EntityTypeMap<E[1]> : E extends [EntityType, EntityType, EntityType] ? EntityTypeMap<E[0]> | EntityTypeMap<E[1]> | EntityTypeMap<E[2]> : never;
121
+ type EntityTypeTupleType<E extends EntityType[]> = E extends [EntityType] ? EntityTypeMap[E[0]] : E extends [EntityType, EntityType] ? EntityTypeMap[E[0]] | EntityTypeMap[E[1]] : E extends [EntityType, EntityType, EntityType] ? EntityTypeMap[E[0]] | EntityTypeMap[E[1]] | EntityTypeMap[E[2]] : never;
140
122
  export {};
@@ -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" | "Cursed" | "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" | "Cursebreaker">, 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)?]>;
19
+ declare const _default: Action<[[ActionArgument.Undefined, import("../argument/ActionArgumentEnum").default<TitleType, "Skill" | "Milestone">], [arg1: ActionArgument.Undefined, import("../argument/ActionArgumentEnum").default<Milestone, "Statistician" | "Runekeeper" | "Cursed" | "Abnormalizer" | "Chef" | "Exterminator" | "Crafter" | "Gardener" | "Gatherer" | "Hunter" | "Locksmith" | "ReaperOfSouls" | "Survivor" | "Pitcher" | "Trapsetter" | "TreasureHunter" | "Collector" | "Explorer" | "Grandmaster" | "Prepared" | "Doctor" | "Artificer" | "Returned" | "Navigator" | "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" | "Cursebreaker">, 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;
@@ -94,7 +94,11 @@ export declare enum Source {
94
94
  /**
95
95
  * Trading-related messages
96
96
  */
97
- Trading = 18
97
+ Trading = 18,
98
+ /**
99
+ * Messages from curse events
100
+ */
101
+ Curse = 19
98
102
  }
99
103
  export interface IMessage {
100
104
  id: number;
@@ -22,6 +22,7 @@ export interface ISkillDescription extends IModdable {
22
22
  attribute?: Stat | ISkillAttribute;
23
23
  runeChance?: RuneChance;
24
24
  defaultDamageType?: DamageType;
25
+ progressionImpact?: number;
25
26
  }
26
27
  export interface ISkillAttribute {
27
28
  stat: Stat;
@@ -34,6 +34,7 @@ export interface IStatusDisplayable {
34
34
  getBorderColorOverride?(status?: Status): string | undefined;
35
35
  getCategoryOverride?(status?: Status): IStatusCategoryOverride | undefined;
36
36
  getDescriptionContent?(status: Status): IStatusDescriptionContent | undefined;
37
+ effects?: SupplierOr<StatusEffectList | undefined, [IStatusContext, StatusEffectList]>;
37
38
  }
38
39
  export interface IStatusCategoryOverride {
39
40
  icon: string | IIcon;
@@ -64,8 +65,8 @@ export interface IStatusDescription extends IStatusDisplayable {
64
65
  * Currently, "important" statuses have the same bounce animation that "threats" have.
65
66
  */
66
67
  important?: true;
68
+ disableNotifier?: true;
67
69
  interval?: SupplierOr<number | undefined, [IStatusContext]> | false;
68
- effects?: SupplierOr<StatusEffectList | undefined, [IStatusContext, StatusEffectList]>;
69
70
  particles?: SupplierOr<StatusParticle | undefined, [IStatusContext, StatusParticleEvent?]>;
70
71
  /** A list of `StatusRenderer`s that could be returned by a supplier in the `renderer` property */
71
72
  renderers?: StatusRenderer[];
@@ -149,19 +150,23 @@ export declare enum StatusEffectType {
149
150
  CannotX = 1,
150
151
  DealingAroundXDamageY = 2,
151
152
  DealingXDamageY = 3,
152
- IncreasesXRate = 4,
153
- IncreasesXRateByY = 5,
154
- LosingXEveryY = 6,
155
- MovementSpeedSlowed = 7,
156
- PercentChanceToPassEveryX = 8,
157
- ReducesXByYEveryZ = 9,
158
- XCannotBeRegained = 10
153
+ DecreasesXByY = 4,
154
+ IncreasesXByY = 5,
155
+ IncreasesXRate = 6,
156
+ IncreasesXRateByY = 7,
157
+ LosingXEveryY = 8,
158
+ MovementSpeedSlowed = 9,
159
+ PercentChanceToPassEveryX = 10,
160
+ ReducesXByYEveryZ = 11,
161
+ XCannotBeRegained = 12
159
162
  }
160
163
  export interface StatusEffectTypeArguments {
161
164
  [StatusEffectType.AddsAChanceOfXOnY]: [effect: TranslationArg, on?: TranslationArg];
162
165
  [StatusEffectType.CannotX]: [x: TranslationArg];
163
166
  [StatusEffectType.DealingAroundXDamageY]: [amount?: TranslationArg, eventOrDuration?: TranslationArg];
164
167
  [StatusEffectType.DealingXDamageY]: [amount?: TranslationArg, eventOrDuration?: TranslationArg];
168
+ [StatusEffectType.DecreasesXByY]: [decreases: TranslationArg, amount?: TranslationArg];
169
+ [StatusEffectType.IncreasesXByY]: [increases: TranslationArg, amount?: TranslationArg];
165
170
  [StatusEffectType.IncreasesXRate]: [increased: TranslationArg];
166
171
  [StatusEffectType.IncreasesXRateByY]: [increased: TranslationArg, by: TranslationArg];
167
172
  [StatusEffectType.LosingXEveryY]: [lost: TranslationArg, eventOrDuration?: TranslationArg];
@@ -29,6 +29,6 @@ declare namespace IStatusContext {
29
29
  function withLevel(status: IStatusContext, level: number): IStatusContext;
30
30
  function getInterval(status: IStatusContext): number | false;
31
31
  function getOptions(type: StatusType, entity?: EntityWithStats): IGameOptionsStatus;
32
- function getEffects(status: IStatusContext): StatusEffectList;
32
+ function getEffects(status: IStatusContext, displayIndex?: number): StatusEffectList;
33
33
  }
34
34
  export default IStatusContext;
@@ -21,6 +21,7 @@ export declare class StatusEffectList {
21
21
  private readonly array;
22
22
  private skill?;
23
23
  private skillThresholds?;
24
+ private sortingDisabled;
24
25
  constructor(context: IStatusContext);
25
26
  private add;
26
27
  setSkillThresholds<THRESHOLDS extends number[]>(skill: SkillType, ...thresholds: THRESHOLDS): THRESHOLDS;
@@ -30,6 +31,7 @@ export declare class StatusEffectList {
30
31
  good<TYPE extends StatusEffectType>(type: TYPE | false | undefined, ...args: StatusEffectTypeArguments[TYPE]): this;
31
32
  veryGood<TYPE extends StatusEffectType>(type: TYPE | false | undefined, ...args: StatusEffectTypeArguments[TYPE]): this;
32
33
  passChance(revealedAt?: number): this;
34
+ disableSorting(): this;
33
35
  get(): StatusEffect[];
34
36
  getSkillThresholds(): ISkillThresholds | undefined;
35
37
  }
@@ -34,8 +34,9 @@ export declare enum InspectType {
34
34
  Deity = 22,
35
35
  Quality = 23,
36
36
  Magic = 24,
37
- Status = 25,
38
- Damage = 26
37
+ MagicCurse = 25,
38
+ Status = 26,
39
+ Damage = 27
39
40
  }
40
41
  /**
41
42
  * A convenience object for the priority of an inspection compared to other inspections. Useful to make an inspection priority
@@ -48,5 +49,6 @@ export declare enum InfoIcon {
48
49
  PinSelf = 2,
49
50
  PinFriend = 3,
50
51
  PinMap = 4,
51
- PinLighthouse = 5
52
+ PinLighthouse = 5,
53
+ Curse = 6
52
54
  }
@@ -22,6 +22,7 @@ import EquipSlotInspection from "@wayward/game/game/inspection/inspections/Equip
22
22
  import IslandInspection from "@wayward/game/game/inspection/inspections/IslandInspection";
23
23
  import ItemInspection from "@wayward/game/game/inspection/inspections/ItemInspection";
24
24
  import ItemsInspection from "@wayward/game/game/inspection/inspections/ItemsInspection";
25
+ import MagicCurseInspection from "@wayward/game/game/inspection/inspections/MagicCurseInspection";
25
26
  import MagicInspection from "@wayward/game/game/inspection/inspections/MagicInspection";
26
27
  import MilestoneInspection from "@wayward/game/game/inspection/inspections/MilestoneInspection";
27
28
  import NPCInspection from "@wayward/game/game/inspection/inspections/NPCInspection";
@@ -40,7 +41,7 @@ declare const inspectionTypeMap: {
40
41
  14: typeof CorpseInspection;
41
42
  15: typeof CorpsesInspection;
42
43
  3: typeof CreatureInspection;
43
- 26: typeof DamageInspection;
44
+ 27: typeof DamageInspection;
44
45
  22: typeof DeityInspection;
45
46
  10: typeof ItemInspection;
46
47
  4: typeof DoodadInspection;
@@ -51,6 +52,7 @@ declare const inspectionTypeMap: {
51
52
  13: typeof ItemsInspection;
52
53
  11: typeof ItemInspection;
53
54
  24: typeof MagicInspection;
55
+ 25: typeof MagicCurseInspection;
54
56
  19: typeof MilestoneInspection;
55
57
  2: typeof NPCInspection;
56
58
  1: typeof PlayerInspection;
@@ -59,7 +61,7 @@ declare const inspectionTypeMap: {
59
61
  0: typeof SelfInspection;
60
62
  18: typeof SkillInspection;
61
63
  20: typeof StatInspection;
62
- 25: typeof StatusInspection;
64
+ 26: typeof StatusInspection;
63
65
  17: typeof TileInspection;
64
66
  5: typeof TileEventInspection;
65
67
  16: typeof TileEventInspection.Minors;
@@ -0,0 +1,30 @@
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 { InfoProvider } from "@wayward/game/game/inspection/InfoProvider";
12
+ import MagicalPropertyManager from "@wayward/game/game/magic/MagicalPropertyManager";
13
+ import type TranslationImpl from "@wayward/game/language/impl/TranslationImpl";
14
+ import { PathType } from "@wayward/game/resource/IResourceLoader";
15
+ import ImagePath from "@wayward/game/ui/util/ImagePath";
16
+ export default class MagicalCursePropertiesInfoProvider extends InfoProvider {
17
+ private readonly magic;
18
+ static get(magic?: MagicalPropertyManager | {
19
+ magic?: MagicalPropertyManager;
20
+ }): MagicalCursePropertiesInfoProvider | undefined;
21
+ constructor(magic: MagicalPropertyManager);
22
+ getClass(): string[];
23
+ getIcon(): {
24
+ path: ImagePath<PathType.InfoIcon>;
25
+ width: number;
26
+ height: number;
27
+ };
28
+ hasContent(): boolean;
29
+ get(): TranslationImpl;
30
+ }
@@ -32,6 +32,7 @@ export default class MagicalPropertyValue extends InfoProvider {
32
32
  private currentColor?;
33
33
  private current?;
34
34
  private magical?;
35
+ private isCurse?;
35
36
  private magicalProperty?;
36
37
  private magicalReduction?;
37
38
  private magicIncluded?;
@@ -12,7 +12,7 @@ import type { MagicalNormalPropertyTypes, MagicalPropertyIdentity } from "@waywa
12
12
  import type { MagicalSubPropertyTypes } from "@wayward/game/game/magic/IMagicalProperty";
13
13
  import type { MagicalPropertyTypeSubTypeMap } from "@wayward/game/game/magic/MagicalPropertyType";
14
14
  import Translation from "@wayward/game/language/Translation";
15
- declare function MagicalSourceTooltip(type: MagicalNormalPropertyTypes): Translation;
16
- declare function MagicalSourceTooltip<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T]): Translation;
17
- declare function MagicalSourceTooltip(...config: MagicalPropertyIdentity): Translation;
15
+ declare function MagicalSourceTooltip(type: MagicalNormalPropertyTypes, curse?: true): Translation;
16
+ declare function MagicalSourceTooltip<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T], curse?: true): Translation;
17
+ declare function MagicalSourceTooltip(...identityAndIsCurse: MagicalPropertyIdentity<[curse?: true]>): Translation;
18
18
  export default MagicalSourceTooltip;
@@ -18,7 +18,7 @@ import { TempType } from "@wayward/game/game/temperature/ITemperature";
18
18
  declare const _default: UseInfo<{
19
19
  doodadContainer: import("../../../../doodad/IDoodad").IDoodadDescription | undefined;
20
20
  civilizationScore: number | undefined;
21
- scareRadius: number;
21
+ scareRadius: import("../../../../doodad/IDoodad").IScareRadius | undefined;
22
22
  entityType: import("../../../../entity/IEntity").EntityType.Item;
23
23
  value?: Item | undefined;
24
24
  type: import("../../../../item/IItem").ItemType;
@@ -0,0 +1,29 @@
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 { InspectType } from "@wayward/game/game/inspection/IInspection";
12
+ import type { SimpleInfoProvider } from "@wayward/game/game/inspection/InfoProvider";
13
+ import { InfoProvider } from "@wayward/game/game/inspection/InfoProvider";
14
+ import type { InfoProviderContext } from "@wayward/game/game/inspection/InfoProviderContext";
15
+ import Inspection from "@wayward/game/game/inspection/Inspection";
16
+ import type { MagicalPropertyIdentityHash } from "@wayward/game/game/magic/IMagicalProperty";
17
+ import { MagicalPropertyIdentity } from "@wayward/game/game/magic/IMagicalProperty";
18
+ import Translation from "@wayward/game/language/Translation";
19
+ import type { TranslationGenerator } from "@wayward/game/ui/component/IComponent";
20
+ export default class MagicCurseInspection extends Inspection<MagicalPropertyIdentityHash> {
21
+ static handles: (type: InspectType, value: unknown, context?: InfoProviderContext) => boolean;
22
+ readonly magic: MagicalPropertyIdentity;
23
+ constructor([, magic]: [any, MagicalPropertyIdentityHash], context?: InfoProviderContext);
24
+ getId(): string;
25
+ getBorder(): string;
26
+ protected getTitle(context: InfoProviderContext): Translation | SimpleInfoProvider | undefined;
27
+ protected getSubtitle(context: InfoProviderContext): Translation | SimpleInfoProvider | undefined;
28
+ protected getContent(context: InfoProviderContext): ArrayOr<TranslationGenerator | InfoProvider | undefined>;
29
+ }
@@ -0,0 +1,24 @@
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 Entity from "@wayward/game/game/entity/Entity";
12
+ import type { EntityType, EntityTypeMap } from "@wayward/game/game/entity/IEntity";
13
+ import type { IEffectRadiusOverlayColor } from "@wayward/game/renderer/overlay/EffectRadiusOverlay";
14
+ import type { DistanceType } from "@wayward/game/utilities/math/Vector2";
15
+ interface IEffectRadius {
16
+ type: DistanceType;
17
+ radius: number;
18
+ overlay?: IEffectRadiusOverlayColor;
19
+ }
20
+ declare namespace EffectRadiusRegistry {
21
+ function registerEntityType<TYPE extends EntityType>(entityType: TYPE, supplier: (entity: EntityTypeMap[TYPE]) => IEffectRadius | undefined): void;
22
+ function get(entity: Entity): IEffectRadius | undefined;
23
+ }
24
+ export default EffectRadiusRegistry;
@@ -379,6 +379,19 @@ export interface IItemDescription extends IObjectDescription, IModdable, ITemper
379
379
  * The item type to display instead of the described item type
380
380
  */
381
381
  displayItem?: SupplierOr<DisplayableItemType | undefined, [Item]>;
382
+ /**
383
+ * A number of "display variants" for this item.
384
+ *
385
+ * Each variant must be in `ItemTypeExtra`, named `${main item type name}${1-based variant index}`.
386
+ * IE, `ItemType.JackOLantern` having `displayVariants: 3` will look for `ItemTypeExtra.JackOLantern1`, `JackOLantern2`, and `JackOLantern3`.
387
+ *
388
+ * Setting `displayItem` disables the functionality provided by `displayVariants`.
389
+ *
390
+ * `displayVariants` uses `aestheticRandom` to determine which variant to use.
391
+ * `aestheticRandom` is transferred when converting from Item to Doodad and vice versa, so the variant will remain the same,
392
+ * assuming `displayVariants` is set to the same count on both the item description and doodad description.
393
+ */
394
+ displayVariants?: number;
382
395
  onEquip?(item: Item): void;
383
396
  onUnequip?(item: Item): void;
384
397
  canUnequip?(item: Item): boolean | void;
@@ -1744,7 +1757,15 @@ export declare enum ItemTypeExtra {
1744
1757
  WoodenBookcase_100 = 845,
1745
1758
  RuneOfEvilSplinters = 846,
1746
1759
  RuneOfGoodCharred = 847,
1747
- TallySticks = 848
1760
+ TallySticks = 848,
1761
+ JackOLantern2 = 849,
1762
+ JackOLantern3 = 850,
1763
+ StrawScarecrow2 = 851,
1764
+ StrawScarecrow3 = 852,
1765
+ CactusScarecrow2 = 853,
1766
+ CactusScarecrow3 = 854,
1767
+ SnowScarecrow2 = 855,
1768
+ SnowScarecrow3 = 856
1748
1769
  }
1749
1770
  export type DisplayableItemType = ItemType | ItemTypeExtra;
1750
1771
  export declare enum ItemTag {
@@ -1911,7 +1932,8 @@ export declare enum ItemTypeGroup {
1911
1932
  InternalNoDropOnDoodadBreak = -9852,
1912
1933
  Sugar = -9851,
1913
1934
  Pan = -9850,
1914
- All = -9849
1935
+ CurseWard = -9849,
1936
+ All = -9848
1915
1937
  }
1916
1938
  export type StillContainerBaseItemType = ItemType.Waterskin | ItemType.GlassBottle | ItemType.ClayJug | ItemType.CoconutContainer;
1917
1939
  export interface IItemMovementResult {
@@ -466,11 +466,6 @@ export default class Item extends EntityMovable<IItemDescription, ItemType, Refe
466
466
  * @returns number of score (or 0 if no civilization score is set).
467
467
  */
468
468
  getCivilizationScore(actionType: ActionType.Build | ActionType.SetDown): number;
469
- /**
470
- * Gets the scarecrow radius based on doodad's definition and quality.
471
- * This also exists on doodads.
472
- */
473
- getScareRadius(): number;
474
469
  getVehicle(): IItemVehicle | undefined;
475
470
  addCreature(creature: Creature, remainTamed?: boolean): void;
476
471
  /**
@@ -38,6 +38,8 @@ import type { ISorter } from "@wayward/utilities/collection/sort/Sorter";
38
38
  import type { Events, IEventEmitter } from "@wayward/utilities/event/EventEmitter";
39
39
  import WorldZ from "@wayward/utilities/game/WorldZ";
40
40
  import type { Random } from "@wayward/utilities/random/Random";
41
+ import type { DeityReal } from "@wayward/game/game/deity/Deity";
42
+ import type { IRange } from "@wayward/utilities/math/Range";
41
43
  export interface IItemManagerEvents extends Events<EntityManager<Item>> {
42
44
  /**
43
45
  * Called before moving items to another container
@@ -109,8 +111,10 @@ export default class ItemManager extends EntityManager<Item, IItemRemoveOptions>
109
111
  private static readonly cachedWeights;
110
112
  private static readonly cachedMostCommonItemColors;
111
113
  private static readonly cachedItemsThatCanBeRelic;
114
+ private static readonly cachedRuneChanceRanges;
112
115
  static readonly cachedItemSpawns: Map<BiomeType, Map<WorldZ, Map<TerrainType, ItemType[]>>>;
113
116
  static getItemTypes(): readonly ItemType[];
117
+ static getRuneChanceRange(deity: DeityReal): IRange;
114
118
  static getItemsWithRecipes(): readonly ItemType[];
115
119
  static getBestItemForTier(item: ItemType | ItemTypeGroup): ItemType | undefined;
116
120
  static getHighestItemActionTierForAction(action: ActionType): number;
@@ -153,6 +157,7 @@ export default class ItemManager extends EntityManager<Item, IItemRemoveOptions>
153
157
  private static cacheItemTypes;
154
158
  private static cacheItemWeights;
155
159
  private static cacheCreatureOfferingsAndResources;
160
+ private static cacheRuneChanceRanges;
156
161
  static cacheAsync(): Promise<void>;
157
162
  private static cacheRelicItems;
158
163
  private static getDisassemblyAndBurnItemTypes;
@@ -16,28 +16,32 @@ export interface IHasMagic {
16
16
  }
17
17
  export interface IMagicalProperty {
18
18
  value: number;
19
+ curse?: true;
19
20
  }
20
21
  export declare const SYMBOL_MAGIC_SUB_PROPERTY_TYPES: unique symbol;
21
22
  export declare const SYMBOL_MAGIC_SUB_PROPERTY_ENTRIES: unique symbol;
22
23
  export interface IMagicalSubProperty<T extends number> {
23
24
  subPropertyCount: number;
24
- subProperties: Partial<Record<T, number>>;
25
+ subProperties: Partial<Record<T, IMagicalProperty>>;
25
26
  [SYMBOL_MAGIC_SUB_PROPERTY_TYPES]: readonly T[];
26
27
  [SYMBOL_MAGIC_SUB_PROPERTY_ENTRIES]: ReadonlyArray<{
27
28
  type: T;
28
29
  value: number;
30
+ curse?: true;
29
31
  }>;
30
32
  }
31
33
  export type MagicalProperty<T extends MagicalPropertyType> = MagicalPropertyTypeSubTypeMap extends Record<T, any> ? IMagicalSubProperty<MagicalPropertyTypeSubTypeMap[T]> : IMagicalProperty;
32
34
  export interface MagicalNormalPropertyEntry {
33
35
  type: MagicalNormalPropertyTypes;
34
36
  value: number;
37
+ curse?: true;
35
38
  }
36
39
  export type MagicalSubPropertyEntry = {
37
40
  [K in MagicalSubPropertyTypes]: {
38
41
  type: K;
39
42
  subType: MagicalPropertyTypeSubTypeMap[K];
40
43
  value: number;
44
+ curse?: true;
41
45
  };
42
46
  }[MagicalSubPropertyTypes];
43
47
  export type MagicalPropertyEntry = MagicalNormalPropertyEntry | MagicalSubPropertyEntry;
@@ -49,6 +53,7 @@ export interface MagicalPropertyEntryIntersection {
49
53
  type: MagicalPropertyType;
50
54
  subType?: MagicalSubPropertySubTypes;
51
55
  value: number;
56
+ curse?: true;
52
57
  }
53
58
  export type AnyMagicalProperty = Partial<IMagicalProperty> & PartialValues<{
54
59
  [K in MagicalSubPropertyTypes]: IMagicalSubProperty<MagicalPropertyTypeSubTypeMap[K]>;
@@ -26,11 +26,11 @@ export interface IMagicalPropertyManagerEvents extends IEventSubscriberEvents {
26
26
  /**
27
27
  * Emitted when a property was added
28
28
  */
29
- add(...args: MagicalPropertyIdentity<[value: number]>): any;
29
+ add(...args: MagicalPropertyIdentity<[value: number, curse?: true]>): any;
30
30
  /**
31
31
  * Emitted when a property was set, and the value it was set to
32
32
  */
33
- set(...args: MagicalPropertyIdentity<[value: number]>): any;
33
+ set(...args: MagicalPropertyIdentity<[value: number, curse?: true]>): any;
34
34
  /**
35
35
  * Emitted when a property was set or removed
36
36
  */
@@ -73,6 +73,22 @@ export default class MagicalPropertyManager extends EventEmitter.Host<IMagicalPr
73
73
  * @returns if this object has any of the given magical property types
74
74
  */
75
75
  hasAny(...types: MagicalPropertyIdentityFlat[]): boolean;
76
+ /**
77
+ * @returns if this object has any uncursed magical properties
78
+ */
79
+ hasUncursed(): boolean;
80
+ /**
81
+ * @returns if this object has any of the given uncursed magical property types
82
+ */
83
+ hasUncursed(...types: MagicalPropertyIdentityFlat[]): boolean;
84
+ /**
85
+ * @returns if this object has any cursed magical properties
86
+ */
87
+ hasCursed(): boolean;
88
+ /**
89
+ * @returns if this object has any of the given cursed magical property types
90
+ */
91
+ hasCursed(...types: MagicalPropertyIdentityFlat[]): boolean;
76
92
  /**
77
93
  * @returns whether the given type of magical property is present on this object
78
94
  */
@@ -100,14 +116,22 @@ export default class MagicalPropertyManager extends EventEmitter.Host<IMagicalPr
100
116
  */
101
117
  get<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T]): number | undefined;
102
118
  get(...identity: MagicalPropertyIdentity): number | undefined;
119
+ isCurse(...identity: MagicalPropertyIdentity): boolean;
103
120
  /**
104
121
  * Sets a magical property on this object. Replaces any existing magical property of that type
105
122
  */
106
- set<T extends MagicalNormalPropertyTypes>(type: T, value: number): this;
123
+ set<T extends MagicalNormalPropertyTypes>(type: T, value: number, curse?: true): this;
107
124
  /**
108
125
  * Sets a magical sub-property on this object. Replaces any existing magical sub-property of that type
109
126
  */
110
- set<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T], value: number): this;
127
+ set<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T], value: number, curse?: true): this;
128
+ /**
129
+ * Sets a magical property or sub-property on this object. Replaces any existing of that type
130
+ */
131
+ set(...identityAndValueAndCurse: MagicalPropertyIdentity<[value: number, curse?: true]>): this;
132
+ setCurse<T extends MagicalNormalPropertyTypes>(type: T, curse?: boolean): this;
133
+ setCurse<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T], curse?: boolean): this;
134
+ setCurse(...identityAndCurse: MagicalPropertyIdentity<[curse?: boolean]>): this;
111
135
  /**
112
136
  * Removes a magical property on this object, if it exists
113
137
  * @returns whether the magical property was removed — ie, if it existed
@@ -154,6 +178,7 @@ export default class MagicalPropertyManager extends EventEmitter.Host<IMagicalPr
154
178
  subProperties<T extends MagicalSubPropertyTypes>(type: T): ReadonlyArray<{
155
179
  type: MagicalPropertyTypeSubTypeMap[T];
156
180
  value: number;
181
+ curse?: true;
157
182
  }>;
158
183
  /**
159
184
  * @returns a list of all the magical properties on this object
@@ -168,7 +193,7 @@ export default class MagicalPropertyManager extends EventEmitter.Host<IMagicalPr
168
193
  * @param ender The way to end this list translation, ie and/or
169
194
  * @param format A formatting-translation to apply to each magical property
170
195
  */
171
- translate(ender?: ListEnder | false, format?: Translation | ((...identity: MagicalPropertyIdentity) => Translation)): TranslationImpl;
196
+ translate(ender?: ListEnder | false, format?: Translation | ((...identity: MagicalPropertyIdentity) => Translation), curseFilter?: "cursed" | "uncursed"): TranslationImpl;
172
197
  /**
173
198
  * @returns a translation for a magical property type
174
199
  */
@@ -178,6 +203,15 @@ export default class MagicalPropertyManager extends EventEmitter.Host<IMagicalPr
178
203
  */
179
204
  static translate<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T]): Translation;
180
205
  static translate(...identity: MagicalPropertyIdentity): Translation;
206
+ /**
207
+ * @returns a curse translation for a magical property type
208
+ */
209
+ static translateCurse(type: MagicalNormalPropertyTypes): Translation;
210
+ /**
211
+ * @returns a curse translation for a magical sub-property type
212
+ */
213
+ static translateCurse<T extends MagicalSubPropertyTypes>(type: T, subType: MagicalPropertyTypeSubTypeMap[T]): Translation;
214
+ static translateCurse(...identity: MagicalPropertyIdentity): Translation;
181
215
  /**
182
216
  * @returns a translation for a magical property type
183
217
  */
@@ -104,6 +104,10 @@ export interface IMagicalPropertyDescription {
104
104
  * By default, all magical property types can be inscribed. This allows disabling that feature for this magical property type.
105
105
  */
106
106
  disableInscription?: true;
107
+ /**
108
+ * If set, this magical property cannot appear as a "curse" (inverted value) magical property.
109
+ */
110
+ disableCurse?: true;
107
111
  subTypeEnum?: Record<string, string | number>;
108
112
  isValidEnum?(enumValue: number): boolean;
109
113
  translateArgs?(...identity: MagicalPropertyIdentity): TranslationArg[];