afnm-types 0.6.57 → 0.6.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export type GameScreen = 'location' | 'recipe' | 'mission' | 'craftingHall' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'reforge' | 'pillarGrid' | 'fallenStar' | 'trainingGround' | 'tenThousandFlames' | 'lifeScreen' | 'soulShardDelve' | 'enchantmentShop' | 'challengeBoard';
2
- export type ScreenType = GameScreen | 'newgame' | 'combat' | 'crafting' | 'dualCultivation' | 'event' | 'auction' | 'mysticalRegion' | 'tournament' | 'house' | 'guild' | 'stoneCutting' | 'fallenStar' | 'soulShardDelve';
1
+ export type GameScreen = 'location' | 'recipe' | 'mission' | 'craftingHall' | 'manual' | 'cultivation' | 'map' | 'healer' | 'market' | 'favour' | 'herbField' | 'mine' | 'recipeLibrary' | 'requestBoard' | 'compendium' | 'library' | 'altar' | 'research' | 'reforge' | 'expedition' | 'pillarGrid' | 'fallenStar' | 'trainingGround' | 'tenThousandFlames' | 'lifeScreen' | 'soulShardDelve' | 'enchantmentShop' | 'challengeBoard';
2
+ export type ScreenType = GameScreen | 'newgame' | 'combat' | 'crafting' | 'dualCultivation' | 'event' | 'auction' | 'mysticalRegion' | 'tournament' | 'house' | 'guild' | 'stoneCutting' | 'fallenStar' | 'soulShardDelve' | 'expedition';
@@ -23,12 +23,30 @@ export interface StoredFigment {
23
23
  stances: StoredStance[];
24
24
  currentStyle?: StoredStyle;
25
25
  storedStyles?: StoredStyle[];
26
+ assignedTiers?: Record<string, number>;
27
+ }
28
+ /** An active firmament incursion targeting the player's inner world */
29
+ export interface ActiveIncursion {
30
+ id: string;
31
+ spawnedYear: number;
32
+ spawnedMonth: number;
33
+ }
34
+ /** Generated but uncollected essence accumulating in the inner world */
35
+ export interface PendingEssence {
36
+ essenceItemName: string;
37
+ count: number;
38
+ progress: number;
26
39
  }
27
40
  /** State for the Life Flourishing breakthrough system */
28
41
  export interface LifeFlourishingState {
29
42
  unlockedSpecies: string[];
30
43
  storedFigments: StoredFigment[];
31
- manifestedFigmentId?: string;
44
+ evokedFigmentId?: string;
45
+ worldAspectId?: string;
46
+ firmamentProgress?: number;
47
+ activeIncursions?: ActiveIncursion[];
48
+ pendingEssences?: PendingEssence[];
49
+ essenceTiersUnlocked?: Record<string, number>;
32
50
  }
33
51
  export interface BreakthroughState {
34
52
  mundane?: {
@@ -3,7 +3,7 @@ import type { ReactNode, PropsWithChildren, ReactElement } from 'react';
3
3
  import type { SoundEffectName } from './audio';
4
4
  import type { ScreenEffectType } from './ScreenEffectType';
5
5
  import type React from 'react';
6
- export type BorderType = 'wood' | 'mystic';
6
+ export type BorderType = 'wood' | 'mystic' | 'expedition' | 'expeditionSmall';
7
7
  interface GameDialogProps {
8
8
  id: string;
9
9
  onClose?: () => void;
@@ -33,6 +33,7 @@ export type GameIconButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement,
33
33
  hoverSfx?: SoundEffectName;
34
34
  clickSfx?: SoundEffectName;
35
35
  tooltip?: ReactNode;
36
+ fancyBorder?: boolean;
36
37
  }>;
37
38
  export type GameCloseButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement, Omit<IconButtonProps & {
38
39
  hoverSfx?: SoundEffectName;
package/dist/event.d.ts CHANGED
@@ -39,7 +39,7 @@ export interface BaseEventStep {
39
39
  kind: EventStepKind;
40
40
  condition?: string;
41
41
  }
42
- export type EventStep = TextStep | SpeechStep | CombatStep | CraftingStep | ChoiceStep | ConditionalStep | SetFlagStep | ExitStep | CreateBuffStep | ConsumeBuffStep | ChangeLocationStep | AddItemStep | RemoveItemStep | AddQuestStep | ChangeMoneyStep | ChangeFavourStep | AddDestinyStep | ChangeReputationStep | QiStep | UnlockLocationStep | ClearCharacterStep | SetCharacterStep | LabelStep | GotoLabelStep | UnlockCraftingTechniqueStep | TalkToCharacterStep | TradeWithCharacterStep | CraftWithCharacterStep | FightCharacterStep | MarkBeatCharacterStep | MarkDidEncounterStep | ChangeHpStep | PassTimeStep | ReportAnalyticsStep | ApprovalStep | ProgressRelationshipStep | MarkGiftedStep | UpdateCharacterDefinitionStep | AuctionStep | MarkCalendarEventCompleteStep | AddMultipleItemStep | AdvanceMysticalRegionStep | CraftSkillStep | TournamentStep | TeamUpStep | CraftingTeamUpStep | AddFollowerStep | BreakPartyStep | ClearTeamUpStep | UnlockAltarStep | DropItemStep | SetAltarCooldownStep | CompressCoreStep | ChangeScreenStep | UnlockTechniqueStep | UnlockAuctionTechniqueStep | AddRecipeStep | AddManualStep | LearnNpcStancesStep | ReplaceItemStep | DualCultivationStep | ChangeBGMStep | ClearChangeBGMStep | AddGuildApprovalStep | AdvanceGuildRankStep | OverridePlayerRealmStep | SetContentRealmOverrideStep | SetAidBreakthroughCooldownStep | StoneCuttingStep | GiveItemStep | ChangePhysicalStatStep | ChangeSocialStatStep | SelectRelationshipPathStep | SetTradeCooldownStep | StatusStep | ClearStatusStep;
42
+ export type EventStep = TextStep | SpeechStep | CombatStep | CraftingStep | ChoiceStep | ConditionalStep | SetFlagStep | ExitStep | CreateBuffStep | ConsumeBuffStep | ChangeLocationStep | AddItemStep | RemoveItemStep | AddQuestStep | ChangeMoneyStep | ChangeFavourStep | AddDestinyStep | ChangeReputationStep | QiStep | UnlockLocationStep | ClearCharacterStep | SetCharacterStep | LabelStep | GotoLabelStep | UnlockCraftingTechniqueStep | TalkToCharacterStep | TradeWithCharacterStep | CraftWithCharacterStep | FightCharacterStep | MarkBeatCharacterStep | MarkDidEncounterStep | ChangeHpStep | PassTimeStep | ReportAnalyticsStep | ApprovalStep | ProgressRelationshipStep | MarkGiftedStep | UpdateCharacterDefinitionStep | AuctionStep | MarkCalendarEventCompleteStep | AddMultipleItemStep | AdvanceMysticalRegionStep | CraftSkillStep | TournamentStep | TeamUpStep | CraftingTeamUpStep | AddFollowerStep | BreakPartyStep | ClearTeamUpStep | UnlockAltarStep | DropItemStep | SetAltarCooldownStep | CompressCoreStep | ChangeScreenStep | UnlockTechniqueStep | UnlockAuctionTechniqueStep | AddRecipeStep | AddManualStep | LearnNpcStancesStep | ReplaceItemStep | DualCultivationStep | ChangeBGMStep | ClearChangeBGMStep | AddGuildApprovalStep | AdvanceGuildRankStep | OverridePlayerRealmStep | SetContentRealmOverrideStep | SetAidBreakthroughCooldownStep | StoneCuttingStep | GiveItemStep | ChangePhysicalStatStep | ChangeSocialStatStep | SelectRelationshipPathStep | SetTradeCooldownStep | StatusStep | ClearStatusStep | IncreaseInstabilityStep | EndExpeditionStep | AddItemsToFoundStep | AddItemsToExtractedStep;
43
43
  export interface TextStep extends BaseEventStep {
44
44
  kind: 'text';
45
45
  text: Translatable;
@@ -174,6 +174,7 @@ export interface CreateBuffStep extends BaseEventStep {
174
174
  buff: Buff;
175
175
  amount: string;
176
176
  persistBeyondEvent?: boolean;
177
+ debuff?: boolean;
177
178
  }
178
179
  export interface ConsumeBuffStep extends BaseEventStep {
179
180
  kind: 'consumeBuff';
@@ -513,4 +514,26 @@ export interface EventStatusThreshold {
513
514
  colour: string;
514
515
  label?: Translatable;
515
516
  }
517
+ export interface IncreaseInstabilityStep {
518
+ kind: 'instability';
519
+ condition?: string;
520
+ }
521
+ export interface EndExpeditionStep {
522
+ kind: 'endExpedition';
523
+ failed: boolean;
524
+ condition?: string;
525
+ }
526
+ export interface AddItemsToFoundStep {
527
+ kind: 'addToFound';
528
+ items: {
529
+ item: ItemDesc;
530
+ count: number;
531
+ }[];
532
+ condition?: string;
533
+ }
534
+ export interface AddItemsToExtractedStep {
535
+ kind: 'addToExtracted';
536
+ extractSlots: number;
537
+ condition?: string;
538
+ }
516
539
  export {};
@@ -0,0 +1,128 @@
1
+ import { Buff } from './buff';
2
+ import { EnemyEntity } from './entity';
3
+ import { EventStep } from './event';
4
+ import { ItemDesc } from './item';
5
+ import { Rarity } from './rarity';
6
+ import { Translatable } from './translatable';
7
+ export declare const expeditionBaseCost = 87500;
8
+ export declare const expeditionDirections: readonly ["left", "right", "top", "bottom"];
9
+ export type ExpeditionDirection = (typeof expeditionDirections)[number];
10
+ export declare const expeditionDirectionOpposite: {
11
+ [key in ExpeditionDirection]: ExpeditionDirection;
12
+ };
13
+ export declare const expeditionDirectionPoint: {
14
+ [key in ExpeditionDirection]: ExpeditionPoint;
15
+ };
16
+ export interface ExpeditionPoint {
17
+ x: number;
18
+ y: number;
19
+ }
20
+ export type RoleRarity = Exclude<Rarity, 'transcendent'>;
21
+ export declare const RoleRarityWeight: Record<RoleRarity, number>;
22
+ export type Roles = 'fighter' | 'healer' | 'surveyor' | 'archaeologist' | 'stabilizer' | 'qiflow';
23
+ export declare const rolesToName: Record<Roles, string>;
24
+ export declare const roleDescription: Record<Roles, string>;
25
+ export declare const RoleWeight: Record<Roles, number>;
26
+ export type MemberRole = {
27
+ role: Roles;
28
+ rarity: RoleRarity;
29
+ };
30
+ export type TeamMember = {
31
+ name: Translatable;
32
+ buff?: Buff;
33
+ role: MemberRole;
34
+ };
35
+ export type ExpeditionTeam = TeamMember[];
36
+ export interface TileMonsters {
37
+ combat: EnemyEntity[];
38
+ boss: EnemyEntity[];
39
+ challenge: EnemyEntity[];
40
+ }
41
+ export type ExpeditionTileTypes = 'entrance' | 'exit' | 'extract' | 'combat' | 'rest' | 'treasure' | 'boss' | 'buff' | 'debuff' | 'challenge' | 'puzzle' | 'boonBane';
42
+ export interface ExpeditionTilePoint extends ExpeditionPoint {
43
+ name: string;
44
+ }
45
+ export interface ExpeditionTile extends ExpeditionPoint {
46
+ expeditionTiles: ExpeditionTilePoint[];
47
+ edges: {
48
+ [key in ExpeditionDirection]: ExpeditionPoint[];
49
+ };
50
+ tileConnections: {
51
+ src: string;
52
+ dst: string;
53
+ }[];
54
+ edgeConnections: {
55
+ tile: string;
56
+ edge: string;
57
+ direction: ExpeditionDirection;
58
+ }[];
59
+ }
60
+ export type ExpeditionTiles = EntranceTile | ExitTile | ExtractTile | CombatTile | RestTile | TreasureTile | BossTile | BuffTile | DebuffTile | ChallengeTile | PuzzleTile | BoonBaneTile;
61
+ interface BaseTile {
62
+ name: string;
63
+ icon: string;
64
+ bg: string;
65
+ description: Translatable;
66
+ rarity: Rarity;
67
+ intro: EventStep[];
68
+ }
69
+ export interface EntranceTile extends BaseTile {
70
+ kind: 'entrance';
71
+ }
72
+ export interface ExitTile extends BaseTile {
73
+ kind: 'exit';
74
+ }
75
+ export interface ExtractTile extends BaseTile {
76
+ kind: 'extract';
77
+ extractCount: number;
78
+ }
79
+ export interface CombatTile extends BaseTile {
80
+ kind: 'combat';
81
+ modifier?: number;
82
+ enemyCount?: number;
83
+ items?: {
84
+ item: ItemDesc;
85
+ count: number;
86
+ }[];
87
+ }
88
+ export interface RestTile extends BaseTile {
89
+ kind: 'rest';
90
+ baseRestore: number;
91
+ }
92
+ export interface TreasureTile extends BaseTile {
93
+ kind: 'treasure';
94
+ }
95
+ export interface BossTile extends BaseTile {
96
+ kind: 'boss';
97
+ modifier?: number;
98
+ items?: {
99
+ item: ItemDesc;
100
+ count: number;
101
+ }[];
102
+ }
103
+ export interface BuffTile extends BaseTile {
104
+ kind: 'buff';
105
+ }
106
+ export interface DebuffTile extends BaseTile {
107
+ kind: 'debuff';
108
+ }
109
+ export interface ChallengeTile extends BaseTile {
110
+ kind: 'challenge';
111
+ modifier?: number;
112
+ items?: {
113
+ item: ItemDesc;
114
+ count: number;
115
+ }[];
116
+ }
117
+ export interface PuzzleTile extends BaseTile {
118
+ kind: 'puzzle';
119
+ enemies?: boolean;
120
+ }
121
+ export interface BoonBaneTile extends BaseTile {
122
+ kind: 'boonBane';
123
+ }
124
+ export interface ItemWCount {
125
+ item: ItemDesc;
126
+ count: number;
127
+ }
128
+ export {};
@@ -0,0 +1,57 @@
1
+ export const expeditionBaseCost = 87500;
2
+ export const expeditionDirections = ['left', 'right', 'top', 'bottom'];
3
+ export const expeditionDirectionOpposite = {
4
+ left: 'right',
5
+ right: 'left',
6
+ top: 'bottom',
7
+ bottom: 'top',
8
+ };
9
+ export const expeditionDirectionPoint = {
10
+ left: {
11
+ x: -1,
12
+ y: 0,
13
+ },
14
+ right: {
15
+ x: 2,
16
+ y: 0,
17
+ },
18
+ top: {
19
+ x: 0,
20
+ y: -1,
21
+ },
22
+ bottom: {
23
+ x: 0,
24
+ y: 2,
25
+ },
26
+ };
27
+ export const RoleRarityWeight = {
28
+ mundane: 30,
29
+ qitouched: 30,
30
+ empowered: 25,
31
+ resplendent: 20,
32
+ incandescent: 5,
33
+ };
34
+ export const rolesToName = {
35
+ fighter: 'Fighter',
36
+ healer: 'Healer',
37
+ surveyor: 'Surveyor',
38
+ archaeologist: 'Archeologist',
39
+ stabilizer: 'Stabilizer',
40
+ qiflow: 'Qi Manipulator',
41
+ };
42
+ export const roleDescription = {
43
+ fighter: 'Assists in limiting the prowess of fierce foes',
44
+ healer: 'Aids recuperation while resting',
45
+ surveyor: 'Analyzes signs of ambushes and plots routes avoiding them',
46
+ archaeologist: 'Utilizes expedition records to locate additional treasures',
47
+ stabilizer: 'Trained in placing spatial nodes that slow spatial destabilization',
48
+ qiflow: "Senses minute qi flow changes and manipulates them to the team's advantage",
49
+ };
50
+ export const RoleWeight = {
51
+ healer: 25,
52
+ archaeologist: 25,
53
+ surveyor: 20,
54
+ stabilizer: 15,
55
+ fighter: 10,
56
+ qiflow: 5,
57
+ };
@@ -1,6 +1,7 @@
1
- import type { Buff, EnemyEntity, ItemDesc, Realm } from '.';
1
+ import type { Buff, EnemyEntity, ItemDesc, Realm, Translatable } from '.';
2
2
  export interface FallenStar {
3
3
  name: string;
4
+ displayName?: Translatable;
4
5
  realm: Realm;
5
6
  image: string;
6
7
  monsterPool: {
@@ -15,4 +15,4 @@
15
15
  * };
16
16
  * }
17
17
  */
18
- export declare const GAME_VERSION = "0.6.57";
18
+ export declare const GAME_VERSION = "0.6.58";
@@ -15,4 +15,4 @@
15
15
  * };
16
16
  * }
17
17
  */
18
- export const GAME_VERSION = "0.6.57";
18
+ export const GAME_VERSION = "0.6.58";
package/dist/index.d.ts CHANGED
@@ -19,7 +19,6 @@ export * from './dualCultivation';
19
19
  export * from './element';
20
20
  export * from './entity';
21
21
  export * from './event';
22
- export * from './evolution';
23
22
  export * from './fallenStar';
24
23
  export * from './GameScreen';
25
24
  export * from './gameVersion';
package/dist/index.js CHANGED
@@ -19,7 +19,6 @@ export * from './dualCultivation';
19
19
  export * from './element';
20
20
  export * from './entity';
21
21
  export * from './event';
22
- export * from './evolution';
23
22
  export * from './fallenStar';
24
23
  export * from './GameScreen';
25
24
  export * from './gameVersion';
package/dist/item.d.ts CHANGED
@@ -307,6 +307,11 @@ export interface RecipeItem extends ItemBase {
307
307
  baseItem: Item;
308
308
  perfectItem: Item;
309
309
  sublimeItem?: Item;
310
+ /** Override the default perfection effect resolved from the perfectItem's
311
+ * ItemKind in recipePerfectionEffect. Use 'quality' on recipes that should
312
+ * reward perfect/sublime crafts with stronger items (quality tier bonus)
313
+ * instead of producing more copies. */
314
+ perfectionEffectOverride?: 'none' | 'quality' | 'stacks';
310
315
  displayPerfect?: boolean;
311
316
  hideFromCompendium?: boolean;
312
317
  realmProgress: RealmProgress;
@@ -343,6 +348,7 @@ export interface CraftingTechniqueItem extends ItemBase {
343
348
  export interface TransportSealItem extends ItemBase {
344
349
  kind: 'transport_seal';
345
350
  destination: string;
351
+ omni?: boolean;
346
352
  }
347
353
  export interface EnchantmentItem extends ItemBase {
348
354
  kind: 'enchantment';
@@ -514,6 +520,8 @@ export interface UncutStonePool {
514
520
  }
515
521
  export interface LifeEssenceItem extends ItemBase {
516
522
  kind: 'life_essence';
523
+ /** Signature colour for UI (rings, slot borders, picker tints). Hex string. */
524
+ color: string;
517
525
  thresholds: {
518
526
  level: number;
519
527
  buffs: Buff[];
package/dist/life.d.ts CHANGED
@@ -14,6 +14,11 @@ export interface LifeForm {
14
14
  role: string;
15
15
  species: string;
16
16
  image: string;
17
+ unlockCost: {
18
+ essence: string;
19
+ amount: number;
20
+ }[];
21
+ parentSpecies?: string;
17
22
  supportImage?: LifeFormAnimationImage;
18
23
  defensiveImage?: LifeFormAnimationImage;
19
24
  utilityImage?: LifeFormAnimationImage;
@@ -5,7 +5,7 @@ import type { Rarity } from './rarity';
5
5
  import type { Realm, RealmProgress } from './realm';
6
6
  import type { ReputationTier } from './stat';
7
7
  import type { EnemyEntity } from './entity';
8
- import type { ItemDesc } from './item';
8
+ import type { Item, ItemDesc } from './item';
9
9
  import type { House, HouseData } from './house';
10
10
  import type { Buff } from './buff';
11
11
  import type { AmbienceName, MusicName } from './audio';
@@ -147,7 +147,7 @@ export interface CraftingMission {
147
147
  }
148
148
  export declare const exploresPerUnlock = 3;
149
149
  export type BuildingType = 'cultivation' | 'manual' | 'crafting' | 'mission' | 'craftingHall' | 'healer' | 'market' | 'favourExchange' | 'vault' | 'custom' | 'herbField' | 'mine' | 'recipe' | 'requestBoard' | 'compendium' | 'mysticalRegion' | 'expedition' | 'trainingGround' | 'library' | 'house' | 'altar' | 'research' | 'reforge' | 'guild' | 'tenThousandFlames' | 'soulShardDelve' | 'enchantmentShop' | 'challengeBoard' | 'jadeCutter' | 'modBuilding';
150
- export type LocationBuilding = CultivationBuilding | ManualBuilding | CraftingBuilding | MissionBuilding | CraftingHallBuilding | HealerBuilding | MarketBuilding | VaultBuilding | FavourExchangeBuilding | CustomBuilding | HerbFieldBuilding | MineBuilding | RecipeLibraryBuilding | RequestBoardBuilding | CompendiumBuilding | MysticalRegionBuilding | TrainingGroundBuilding | LibraryBuilding | HouseBuilding | CompressionAltarBuilding | ResearchBuilding | ReforgeBuilding | GuildBuilding | TenThousandFlamesBuilding | SoulShardDelveBuilding | EnchantmentShopBuilding | ChallengeBoardBuilding | JadeCutterBuilding | ModBuilding;
150
+ export type LocationBuilding = CultivationBuilding | ManualBuilding | CraftingBuilding | MissionBuilding | CraftingHallBuilding | HealerBuilding | MarketBuilding | VaultBuilding | FavourExchangeBuilding | CustomBuilding | HerbFieldBuilding | MineBuilding | RecipeLibraryBuilding | RequestBoardBuilding | CompendiumBuilding | MysticalRegionBuilding | TrainingGroundBuilding | LibraryBuilding | HouseBuilding | CompressionAltarBuilding | ResearchBuilding | ReforgeBuilding | ExpeditionBuilding | GuildBuilding | TenThousandFlamesBuilding | SoulShardDelveBuilding | EnchantmentShopBuilding | ChallengeBoardBuilding | JadeCutterBuilding | ModBuilding;
151
151
  export type LocationBuildingState = MissionBuildingState | CraftingHallBuildingState | ShopBuildingState | RequestBoardBuildingState | HouseBuildingState | CompressionAltarBuildingState;
152
152
  interface BuildingBase {
153
153
  kind: BuildingType;
@@ -224,8 +224,26 @@ export interface ShopBuildingState {
224
224
  items: ShopItem[];
225
225
  refreshCountdown: number;
226
226
  }
227
+ export interface MarketTokenStock {
228
+ /** The item the player receives. The `stacks` field is the per-refresh stock cap. */
229
+ item: ShopItem;
230
+ /** Number of currency-item tokens consumed per stack purchased. */
231
+ tokenCost: number;
232
+ }
233
+ export interface MarketTokenCurrency {
234
+ /** The token item used as currency (e.g. Serpent Token). The market reads stack count from the player's inventory. */
235
+ currencyItem: Item;
236
+ /** Stock entries. Each refresh restores the listed `item.stacks` count for each entry. */
237
+ tokenStock: MarketTokenStock[];
238
+ }
227
239
  export interface MarketBuilding extends ShopBuilding {
228
240
  kind: 'market';
241
+ /**
242
+ * If set, this market sells exclusively for the given token currency.
243
+ * The `itemPool` is ignored and the `tokenStock` replaces the standard
244
+ * stock; the Sell tab is disabled because tokens are not generic currency.
245
+ */
246
+ tokenCurrency?: MarketTokenCurrency;
229
247
  }
230
248
  export interface VaultBuilding extends BuildingBase {
231
249
  kind: 'vault';
@@ -272,6 +290,12 @@ export interface RequestBoardBuildingState {
272
290
  export interface MysticalRegionBuilding extends BuildingBase {
273
291
  kind: 'mysticalRegion';
274
292
  }
293
+ export interface ExpeditionBuilding extends BuildingBase {
294
+ kind: 'expedition';
295
+ name: string;
296
+ displayName?: Translatable;
297
+ teamCount: number;
298
+ }
275
299
  export interface TrainingGroundBuilding extends BuildingBase {
276
300
  kind: 'trainingGround';
277
301
  }
@@ -298,7 +322,7 @@ export interface CustomBuilding extends BuildingBase {
298
322
  eventSteps: EventStep[];
299
323
  }
300
324
  export interface LibraryBook {
301
- title: string;
325
+ title: Translatable;
302
326
  condition?: string;
303
327
  author: string;
304
328
  contents: string;
@@ -47,6 +47,8 @@ export interface MineConfig {
47
47
  depthFlag: string;
48
48
  /** Flare item consumed when delving into a chamber. */
49
49
  flareItem: FlareItem;
50
+ /** Optional override for the mine entrance image shown on the chart. */
51
+ entranceImage?: string;
50
52
  /** Combat intro flavor text used when fighting through corridors. */
51
53
  combatIntroText: string;
52
54
  /** Victory flavor text after pathing combat. */
@@ -21,6 +21,7 @@ import type { EventStep, GameEvent, ReportAnalyticsStep, StatusStep, TournamentS
21
21
  import type { Background } from './background';
22
22
  import type { Realm } from './realm';
23
23
  import type { CraftingBuff } from './craftingBuff';
24
+ import { ExpeditionTeam } from './expedition';
24
25
  export interface Viewport {
25
26
  x: number;
26
27
  y: number;
@@ -90,6 +91,11 @@ export interface CombatState {
90
91
  buildId: string | null;
91
92
  prevWins: number;
92
93
  };
94
+ /** Marker for an inner-world fight (Life Flourishing). VictoryDialog reads it to dispatch the right follow-up. */
95
+ lifeFlourishingCombat?: {
96
+ kind: 'expand' | 'incursion';
97
+ incursionId?: string;
98
+ };
93
99
  }
94
100
  export type CraftingSliceState = ExistingCraftingState;
95
101
  export interface ResetFlag {
@@ -152,6 +158,7 @@ export interface LocationState {
152
158
  }
153
159
  export interface ScreenState {
154
160
  screen: GameScreen;
161
+ previousScreen?: GameScreen;
155
162
  }
156
163
  export interface AdditionalFollowingCharacter {
157
164
  character: string;
@@ -265,6 +272,32 @@ export interface MysticalRegionState {
265
272
  openedRewards: boolean[];
266
273
  coreSacrificed?: boolean;
267
274
  }
275
+ export interface ExpeditionState {
276
+ name?: string;
277
+ startDate: {
278
+ year: number;
279
+ month: number;
280
+ day: number;
281
+ } | undefined;
282
+ foundItems: {
283
+ item: ItemDesc;
284
+ count: number;
285
+ }[];
286
+ extractedItems: {
287
+ item: ItemDesc;
288
+ count: number;
289
+ }[];
290
+ team: ExpeditionTeam;
291
+ finishExpedition: boolean;
292
+ failedExpedition?: boolean;
293
+ playerShare: number;
294
+ current: {
295
+ key: string;
296
+ name: string;
297
+ };
298
+ explored: string[];
299
+ instability: number;
300
+ }
268
301
  export interface TournamentSliceState {
269
302
  sourceStep?: TournamentStep;
270
303
  participants?: EnemyEntity[];
@@ -382,8 +415,10 @@ export interface HistoryItem {
382
415
  character?: string;
383
416
  buff?: Buff;
384
417
  items?: ItemDesc[];
418
+ isRemove?: boolean;
385
419
  money?: number;
386
420
  favour?: number;
421
+ qi?: number;
387
422
  reputation?: {
388
423
  name: string;
389
424
  amount: number;
@@ -416,6 +451,7 @@ export interface GameEventState {
416
451
  eventStepStack: EventStep[][];
417
452
  indexStack: number[];
418
453
  character?: string;
454
+ extractSlots?: number;
419
455
  textHistory: HistoryItem[];
420
456
  eventBuffs: Buff[];
421
457
  locationOverride?: string;
@@ -429,6 +465,7 @@ export interface GameEventState {
429
465
  index: number;
430
466
  };
431
467
  sourceChamber?: string;
468
+ sourceExpedtionTile?: string;
432
469
  storedStates: {
433
470
  [key: string]: StoredEventState;
434
471
  };
@@ -450,6 +487,7 @@ export interface RecipeFilters {
450
487
  hideNoCraftSkill: boolean;
451
488
  recipeFilter: string;
452
489
  selectedRecipe: string;
490
+ recipeBreadcrumb: string[];
453
491
  pinnedRecipes: string[];
454
492
  category: 'all' | 'pinned' | 'pinned-upgrades' | ItemKind;
455
493
  realmFilter: 'all' | Realm;
@@ -491,6 +529,7 @@ export interface RootState {
491
529
  selectedLocation: SelectedLocationState;
492
530
  auction: AuctionState;
493
531
  mysticalRegion: MysticalRegionState;
532
+ expedition: ExpeditionState;
494
533
  tournament: TournamentSliceState;
495
534
  house: HouseState;
496
535
  mod: ModSliceProps;
@@ -498,7 +537,6 @@ export interface RootState {
498
537
  guild: GuildState;
499
538
  stoneCutting: StoneCuttingState;
500
539
  fallenStar: FallenStarState;
501
- expedition: ExpeditionState;
502
540
  characterUiPreferences: CharacterUiPreferencesState;
503
541
  soulShardDelve: SoulShardDelveState;
504
542
  }
package/dist/stat.d.ts CHANGED
@@ -81,4 +81,5 @@ export interface Scaling {
81
81
  buff?: Buff;
82
82
  increment?: number;
83
83
  cantUpgrade?: boolean;
84
+ isItem?: boolean;
84
85
  }
@@ -0,0 +1,23 @@
1
+ import { Translatable } from './translatable';
2
+ /**
3
+ * Schedule of essences an aspect produces each month. `perMonth` may be
4
+ * fractional (0.5 means one stack every two months); the
5
+ * `accumulatePendingEssence` reducer drains progress when it crosses 1.
6
+ */
7
+ export interface WorldAspectEssence {
8
+ essence: string;
9
+ perMonth: number;
10
+ }
11
+ /**
12
+ * One reality aspect available for the player's Life Flourishing inner world.
13
+ * Data-driven: modders can add new aspects by defining a new file and
14
+ * registering it in the worldAspects index.
15
+ */
16
+ export interface WorldAspect {
17
+ id: string;
18
+ displayName: Translatable;
19
+ description: string;
20
+ /** GameLocation name. The location's `image` is the World tab background and its `icon` is the aspect picker icon. */
21
+ location: string;
22
+ essenceGeneration: WorldAspectEssence[];
23
+ }
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "afnm-types",
3
- "version": "0.6.57",
3
+ "version": "0.6.58",
4
4
  "description": "Type definitions for Ascend From Nine Mountains",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",