stardew-valley-data 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.28.0] - 2026-03-23
9
+
10
+ ### Added
11
+
12
+ - Add `sellPrice` to `footwear.json`.
13
+
14
+ ## [0.27.0] - 2026-03-22
15
+
16
+ ### Added
17
+
18
+ - `data/joja-development.json` — 5 Joja Community Development projects with `id`, `name`,
19
+ `description`, `cost`, `ccEquivalent` (maps to Community Center room mail flag), and `order`:
20
+ Greenhouse (35,000g), Bridge (25,000g), Panning (20,000g), Minecarts (15,000g), Bus (40,000g)
21
+ - `parseJoja()` parser added — new `joja` field on `SaveData` tracking `isMember` (from `JojaMember`
22
+ mail flag), `completed` (event `502261`), and `developments[]` (array of `{ id, purchased }`
23
+ driven by `joja-development.json`)
24
+ - `SaveJoja` and `SaveJojaDevelopment` interfaces added to save file types
25
+ - `images/shop/Joja Development Form.png` downloaded (640×288)
26
+
8
27
  ## [0.26.0] - 2026-03-22
9
28
 
10
29
  ### Added
@@ -6,6 +6,7 @@
6
6
  "defense": 1,
7
7
  "immunity": 0,
8
8
  "obtain": "Purchased from Adventurer's Guild after Initiation quest; Special Item drops Floors 1-39 of The Mines; Fishing Treasure Chests",
9
+ "sellPrice": 50,
9
10
  "image": "images/footwear/Sneakers.png"
10
11
  },
11
12
  {
@@ -15,6 +16,7 @@
15
16
  "defense": 0,
16
17
  "immunity": 1,
17
18
  "obtain": "Special Item drops Floors 1-39 of The Mines; Fishing Treasure Chests",
19
+ "sellPrice": 50,
18
20
  "image": "images/footwear/Rubber Boots.png"
19
21
  },
20
22
  {
@@ -24,6 +26,7 @@
24
26
  "defense": 1,
25
27
  "immunity": 1,
26
28
  "obtain": "Reward from Chest Floor 10 of The Mines; Purchased from Adventurer's Guild after Floor 10; Fishing Treasure Chests",
29
+ "sellPrice": 100,
27
30
  "image": "images/footwear/Leather Boots.png"
28
31
  },
29
32
  {
@@ -33,6 +36,7 @@
33
36
  "defense": 2,
34
37
  "immunity": 0,
35
38
  "obtain": "Purchased from Adventurer's Guild after Floor 10; Possible Remixed Reward Floor 10; Fishing Treasure Chests",
39
+ "sellPrice": 100,
36
40
  "image": "images/footwear/Work Boots.png"
37
41
  },
38
42
  {
@@ -42,6 +46,7 @@
42
46
  "defense": 3,
43
47
  "immunity": 0,
44
48
  "obtain": "Purchased from Adventurer's Guild after Floor 40; Possible Remixed Reward Floor 50; Special Item drops Floors 61-79; Fishing Treasure Chests",
49
+ "sellPrice": 150,
45
50
  "image": "images/footwear/Combat Boots.png"
46
51
  },
47
52
  {
@@ -51,6 +56,7 @@
51
56
  "defense": 2,
52
57
  "immunity": 1,
53
58
  "obtain": "Reward from Chest Floor 50 of The Mines; Purchased from Adventurer's Guild after Floor 50; Fishing Treasure Chests",
59
+ "sellPrice": 150,
54
60
  "image": "images/footwear/Tundra Boots.png"
55
61
  },
56
62
  {
@@ -60,6 +66,7 @@
60
66
  "defense": 2,
61
67
  "immunity": 1,
62
68
  "obtain": "Found on Trains",
69
+ "sellPrice": 150,
63
70
  "image": "images/footwear/Leprechaun Shoes.png"
64
71
  },
65
72
  {
@@ -69,6 +76,7 @@
69
76
  "defense": 1,
70
77
  "immunity": 2,
71
78
  "obtain": "Possible Remixed Reward Floor 50; Special Item drops Floors 41-79; Fishing Treasure Chests",
79
+ "sellPrice": 150,
72
80
  "image": "images/footwear/Thermal Boots.png"
73
81
  },
74
82
  {
@@ -78,6 +86,7 @@
78
86
  "defense": 2,
79
87
  "immunity": 2,
80
88
  "obtain": "Unobtainable",
89
+ "sellPrice": 200,
81
90
  "image": "images/footwear/Cowboy Boots.png"
82
91
  },
83
92
  {
@@ -87,6 +96,7 @@
87
96
  "defense": 4,
88
97
  "immunity": 2,
89
98
  "obtain": "Purchased from Adventurer's Guild after Floor 80; Possible Remixed Reward Floor 80; Special Item drops Floors 81-119, Skull Cavern, Quarry Mine; Fishing Treasure Chests",
99
+ "sellPrice": 300,
90
100
  "image": "images/footwear/Dark Boots.png"
91
101
  },
92
102
  {
@@ -96,6 +106,7 @@
96
106
  "defense": 3,
97
107
  "immunity": 3,
98
108
  "obtain": "Reward from Chest Floor 80 of The Mines; Purchased from Adventurer's Guild after Floor 80; Fishing Treasure Chests",
109
+ "sellPrice": 300,
99
110
  "image": "images/footwear/Firewalker Boots.png"
100
111
  },
101
112
  {
@@ -105,6 +116,7 @@
105
116
  "defense": 1,
106
117
  "immunity": 6,
107
118
  "obtain": "Special Item drops Floors 81-119, Skull Cavern, Quarry Mine; Fishing Treasure Chests",
119
+ "sellPrice": 350,
108
120
  "image": "images/footwear/Genie Shoes.png"
109
121
  },
110
122
  {
@@ -114,6 +126,7 @@
114
126
  "defense": 4,
115
127
  "immunity": 4,
116
128
  "obtain": "Reward from Chest Floor 110 of The Mines; Purchased from Adventurer's Guild after Floor 110",
129
+ "sellPrice": 400,
117
130
  "image": "images/footwear/Space Boots.png"
118
131
  },
119
132
  {
@@ -123,6 +136,7 @@
123
136
  "defense": 3,
124
137
  "immunity": 5,
125
138
  "obtain": "Possible Remixed Reward Floor 110; Special Item drops in Skull Cavern and Quarry Mine",
139
+ "sellPrice": 400,
126
140
  "image": "images/footwear/Crystal Shoes.png"
127
141
  },
128
142
  {
@@ -132,6 +146,7 @@
132
146
  "defense": 4,
133
147
  "immunity": 4,
134
148
  "obtain": "Received during Emily's 14-heart event",
149
+ "sellPrice": 400,
135
150
  "image": "images/footwear/Emily's Magic Boots.png"
136
151
  },
137
152
  {
@@ -141,6 +156,7 @@
141
156
  "defense": 6,
142
157
  "immunity": 5,
143
158
  "obtain": "Volcano Dungeon Shop (100 Cinder Shards)",
159
+ "sellPrice": 550,
144
160
  "image": "images/footwear/Cinderclown Shoes.png"
145
161
  },
146
162
  {
@@ -150,6 +166,7 @@
150
166
  "defense": 5,
151
167
  "immunity": 8,
152
168
  "obtain": "From a Rare Chest in the Volcano Dungeon",
169
+ "sellPrice": 650,
153
170
  "image": "images/footwear/Mermaid Boots.png"
154
171
  },
155
172
  {
@@ -159,6 +176,7 @@
159
176
  "defense": 7,
160
177
  "immunity": 0,
161
178
  "obtain": "From a Rare Chest in the Volcano Dungeon",
179
+ "sellPrice": 350,
162
180
  "image": "images/footwear/Dragonscale Boots.png"
163
181
  }
164
182
  ]
@@ -0,0 +1,42 @@
1
+ [
2
+ {
3
+ "id": "jojaPantry",
4
+ "name": "Greenhouse",
5
+ "description": "Repairs the old ruins on the farm, turning it into a greenhouse.",
6
+ "cost": 35000,
7
+ "ccEquivalent": "ccPantry",
8
+ "order": 0
9
+ },
10
+ {
11
+ "id": "jojaCraftsRoom",
12
+ "name": "Bridge",
13
+ "description": "Repairs the broken bridge east of the Mines, enabling access to the Quarry.",
14
+ "cost": 25000,
15
+ "ccEquivalent": "ccCraftsRoom",
16
+ "order": 1
17
+ },
18
+ {
19
+ "id": "jojaFishTank",
20
+ "name": "Panning",
21
+ "description": "Removes the glimmering boulder near the mine entrance, enabling copper panning.",
22
+ "cost": 20000,
23
+ "ccEquivalent": "ccFishTank",
24
+ "order": 2
25
+ },
26
+ {
27
+ "id": "jojaBoilerRoom",
28
+ "name": "Minecarts",
29
+ "description": "Repairs the minecart system between the Bus Stop, the Mountains, and Pelican Town.",
30
+ "cost": 15000,
31
+ "ccEquivalent": "ccBoilerRoom",
32
+ "order": 3
33
+ },
34
+ {
35
+ "id": "jojaVault",
36
+ "name": "Bus",
37
+ "description": "Repairs the bus that runs to the Calico Desert.",
38
+ "cost": 40000,
39
+ "ccEquivalent": "ccVault",
40
+ "order": 4
41
+ }
42
+ ]
package/dist/index.d.mts CHANGED
@@ -590,6 +590,7 @@ interface Footwear {
590
590
  defense: number;
591
591
  immunity: number;
592
592
  obtain: string;
593
+ sellPrice: number;
593
594
  image: string;
594
595
  }
595
596
 
@@ -2676,6 +2677,7 @@ interface SaveData {
2676
2677
  perfection: SavePerfection;
2677
2678
  mineProgress: SaveMineProgress;
2678
2679
  communityCenter: SaveCommunityCenter;
2680
+ joja: SaveJoja;
2679
2681
  }
2680
2682
  /** Core player profile including name, money, skills, and mastery progress. */
2681
2683
  interface SavePlayer {
@@ -2962,6 +2964,17 @@ interface SaveCommunityCenter {
2962
2964
  jojaAbandoned: boolean;
2963
2965
  rooms: SaveCommunityCenterRooms;
2964
2966
  }
2967
+ /** A single Joja development project with purchase status. */
2968
+ interface SaveJojaDevelopment {
2969
+ id: string;
2970
+ purchased: boolean;
2971
+ }
2972
+ /** Joja membership, development project completion, and route status. */
2973
+ interface SaveJoja {
2974
+ isMember: boolean;
2975
+ completed: boolean;
2976
+ developments: SaveJojaDevelopment[];
2977
+ }
2965
2978
  /** Mine and Skull Cavern progress including deepest levels reached and key ownership. */
2966
2979
  interface SaveMineProgress {
2967
2980
  deepestMineLevel: number;
package/dist/index.d.ts CHANGED
@@ -590,6 +590,7 @@ interface Footwear {
590
590
  defense: number;
591
591
  immunity: number;
592
592
  obtain: string;
593
+ sellPrice: number;
593
594
  image: string;
594
595
  }
595
596
 
@@ -2676,6 +2677,7 @@ interface SaveData {
2676
2677
  perfection: SavePerfection;
2677
2678
  mineProgress: SaveMineProgress;
2678
2679
  communityCenter: SaveCommunityCenter;
2680
+ joja: SaveJoja;
2679
2681
  }
2680
2682
  /** Core player profile including name, money, skills, and mastery progress. */
2681
2683
  interface SavePlayer {
@@ -2962,6 +2964,17 @@ interface SaveCommunityCenter {
2962
2964
  jojaAbandoned: boolean;
2963
2965
  rooms: SaveCommunityCenterRooms;
2964
2966
  }
2967
+ /** A single Joja development project with purchase status. */
2968
+ interface SaveJojaDevelopment {
2969
+ id: string;
2970
+ purchased: boolean;
2971
+ }
2972
+ /** Joja membership, development project completion, and route status. */
2973
+ interface SaveJoja {
2974
+ isMember: boolean;
2975
+ completed: boolean;
2976
+ developments: SaveJojaDevelopment[];
2977
+ }
2965
2978
  /** Mine and Skull Cavern progress including deepest levels reached and key ownership. */
2966
2979
  interface SaveMineProgress {
2967
2980
  deepestMineLevel: number;
package/dist/index.js CHANGED
@@ -18504,6 +18504,7 @@ var footwear_default = [
18504
18504
  defense: 1,
18505
18505
  immunity: 0,
18506
18506
  obtain: "Purchased from Adventurer's Guild after Initiation quest; Special Item drops Floors 1-39 of The Mines; Fishing Treasure Chests",
18507
+ sellPrice: 50,
18507
18508
  image: "images/footwear/Sneakers.png"
18508
18509
  },
18509
18510
  {
@@ -18513,6 +18514,7 @@ var footwear_default = [
18513
18514
  defense: 0,
18514
18515
  immunity: 1,
18515
18516
  obtain: "Special Item drops Floors 1-39 of The Mines; Fishing Treasure Chests",
18517
+ sellPrice: 50,
18516
18518
  image: "images/footwear/Rubber Boots.png"
18517
18519
  },
18518
18520
  {
@@ -18522,6 +18524,7 @@ var footwear_default = [
18522
18524
  defense: 1,
18523
18525
  immunity: 1,
18524
18526
  obtain: "Reward from Chest Floor 10 of The Mines; Purchased from Adventurer's Guild after Floor 10; Fishing Treasure Chests",
18527
+ sellPrice: 100,
18525
18528
  image: "images/footwear/Leather Boots.png"
18526
18529
  },
18527
18530
  {
@@ -18531,6 +18534,7 @@ var footwear_default = [
18531
18534
  defense: 2,
18532
18535
  immunity: 0,
18533
18536
  obtain: "Purchased from Adventurer's Guild after Floor 10; Possible Remixed Reward Floor 10; Fishing Treasure Chests",
18537
+ sellPrice: 100,
18534
18538
  image: "images/footwear/Work Boots.png"
18535
18539
  },
18536
18540
  {
@@ -18540,6 +18544,7 @@ var footwear_default = [
18540
18544
  defense: 3,
18541
18545
  immunity: 0,
18542
18546
  obtain: "Purchased from Adventurer's Guild after Floor 40; Possible Remixed Reward Floor 50; Special Item drops Floors 61-79; Fishing Treasure Chests",
18547
+ sellPrice: 150,
18543
18548
  image: "images/footwear/Combat Boots.png"
18544
18549
  },
18545
18550
  {
@@ -18549,6 +18554,7 @@ var footwear_default = [
18549
18554
  defense: 2,
18550
18555
  immunity: 1,
18551
18556
  obtain: "Reward from Chest Floor 50 of The Mines; Purchased from Adventurer's Guild after Floor 50; Fishing Treasure Chests",
18557
+ sellPrice: 150,
18552
18558
  image: "images/footwear/Tundra Boots.png"
18553
18559
  },
18554
18560
  {
@@ -18558,6 +18564,7 @@ var footwear_default = [
18558
18564
  defense: 2,
18559
18565
  immunity: 1,
18560
18566
  obtain: "Found on Trains",
18567
+ sellPrice: 150,
18561
18568
  image: "images/footwear/Leprechaun Shoes.png"
18562
18569
  },
18563
18570
  {
@@ -18567,6 +18574,7 @@ var footwear_default = [
18567
18574
  defense: 1,
18568
18575
  immunity: 2,
18569
18576
  obtain: "Possible Remixed Reward Floor 50; Special Item drops Floors 41-79; Fishing Treasure Chests",
18577
+ sellPrice: 150,
18570
18578
  image: "images/footwear/Thermal Boots.png"
18571
18579
  },
18572
18580
  {
@@ -18576,6 +18584,7 @@ var footwear_default = [
18576
18584
  defense: 2,
18577
18585
  immunity: 2,
18578
18586
  obtain: "Unobtainable",
18587
+ sellPrice: 200,
18579
18588
  image: "images/footwear/Cowboy Boots.png"
18580
18589
  },
18581
18590
  {
@@ -18585,6 +18594,7 @@ var footwear_default = [
18585
18594
  defense: 4,
18586
18595
  immunity: 2,
18587
18596
  obtain: "Purchased from Adventurer's Guild after Floor 80; Possible Remixed Reward Floor 80; Special Item drops Floors 81-119, Skull Cavern, Quarry Mine; Fishing Treasure Chests",
18597
+ sellPrice: 300,
18588
18598
  image: "images/footwear/Dark Boots.png"
18589
18599
  },
18590
18600
  {
@@ -18594,6 +18604,7 @@ var footwear_default = [
18594
18604
  defense: 3,
18595
18605
  immunity: 3,
18596
18606
  obtain: "Reward from Chest Floor 80 of The Mines; Purchased from Adventurer's Guild after Floor 80; Fishing Treasure Chests",
18607
+ sellPrice: 300,
18597
18608
  image: "images/footwear/Firewalker Boots.png"
18598
18609
  },
18599
18610
  {
@@ -18603,6 +18614,7 @@ var footwear_default = [
18603
18614
  defense: 1,
18604
18615
  immunity: 6,
18605
18616
  obtain: "Special Item drops Floors 81-119, Skull Cavern, Quarry Mine; Fishing Treasure Chests",
18617
+ sellPrice: 350,
18606
18618
  image: "images/footwear/Genie Shoes.png"
18607
18619
  },
18608
18620
  {
@@ -18612,6 +18624,7 @@ var footwear_default = [
18612
18624
  defense: 4,
18613
18625
  immunity: 4,
18614
18626
  obtain: "Reward from Chest Floor 110 of The Mines; Purchased from Adventurer's Guild after Floor 110",
18627
+ sellPrice: 400,
18615
18628
  image: "images/footwear/Space Boots.png"
18616
18629
  },
18617
18630
  {
@@ -18621,6 +18634,7 @@ var footwear_default = [
18621
18634
  defense: 3,
18622
18635
  immunity: 5,
18623
18636
  obtain: "Possible Remixed Reward Floor 110; Special Item drops in Skull Cavern and Quarry Mine",
18637
+ sellPrice: 400,
18624
18638
  image: "images/footwear/Crystal Shoes.png"
18625
18639
  },
18626
18640
  {
@@ -18630,6 +18644,7 @@ var footwear_default = [
18630
18644
  defense: 4,
18631
18645
  immunity: 4,
18632
18646
  obtain: "Received during Emily's 14-heart event",
18647
+ sellPrice: 400,
18633
18648
  image: "images/footwear/Emily's Magic Boots.png"
18634
18649
  },
18635
18650
  {
@@ -18639,6 +18654,7 @@ var footwear_default = [
18639
18654
  defense: 6,
18640
18655
  immunity: 5,
18641
18656
  obtain: "Volcano Dungeon Shop (100 Cinder Shards)",
18657
+ sellPrice: 550,
18642
18658
  image: "images/footwear/Cinderclown Shoes.png"
18643
18659
  },
18644
18660
  {
@@ -18648,6 +18664,7 @@ var footwear_default = [
18648
18664
  defense: 5,
18649
18665
  immunity: 8,
18650
18666
  obtain: "From a Rare Chest in the Volcano Dungeon",
18667
+ sellPrice: 650,
18651
18668
  image: "images/footwear/Mermaid Boots.png"
18652
18669
  },
18653
18670
  {
@@ -18657,6 +18674,7 @@ var footwear_default = [
18657
18674
  defense: 7,
18658
18675
  immunity: 0,
18659
18676
  obtain: "From a Rare Chest in the Volcano Dungeon",
18677
+ sellPrice: 350,
18660
18678
  image: "images/footwear/Dragonscale Boots.png"
18661
18679
  }
18662
18680
  ];
@@ -41233,6 +41251,63 @@ function parseIslandUpgrades(mail) {
41233
41251
  }));
41234
41252
  }
41235
41253
 
41254
+ // data/joja-development.json
41255
+ var joja_development_default = [
41256
+ {
41257
+ id: "jojaPantry",
41258
+ name: "Greenhouse",
41259
+ description: "Repairs the old ruins on the farm, turning it into a greenhouse.",
41260
+ cost: 35e3,
41261
+ ccEquivalent: "ccPantry",
41262
+ order: 0
41263
+ },
41264
+ {
41265
+ id: "jojaCraftsRoom",
41266
+ name: "Bridge",
41267
+ description: "Repairs the broken bridge east of the Mines, enabling access to the Quarry.",
41268
+ cost: 25e3,
41269
+ ccEquivalent: "ccCraftsRoom",
41270
+ order: 1
41271
+ },
41272
+ {
41273
+ id: "jojaFishTank",
41274
+ name: "Panning",
41275
+ description: "Removes the glimmering boulder near the mine entrance, enabling copper panning.",
41276
+ cost: 2e4,
41277
+ ccEquivalent: "ccFishTank",
41278
+ order: 2
41279
+ },
41280
+ {
41281
+ id: "jojaBoilerRoom",
41282
+ name: "Minecarts",
41283
+ description: "Repairs the minecart system between the Bus Stop, the Mountains, and Pelican Town.",
41284
+ cost: 15e3,
41285
+ ccEquivalent: "ccBoilerRoom",
41286
+ order: 3
41287
+ },
41288
+ {
41289
+ id: "jojaVault",
41290
+ name: "Bus",
41291
+ description: "Repairs the bus that runs to the Calico Desert.",
41292
+ cost: 4e4,
41293
+ ccEquivalent: "ccVault",
41294
+ order: 4
41295
+ }
41296
+ ];
41297
+
41298
+ // src/save-file/parsers/v1/joja.ts
41299
+ var DEVELOPMENT_IDS = joja_development_default.map((d) => d.id);
41300
+ function parseJoja(mail, events2) {
41301
+ return {
41302
+ isMember: mail.has("JojaMember"),
41303
+ completed: events2.has("502261"),
41304
+ developments: DEVELOPMENT_IDS.map((id) => ({
41305
+ id,
41306
+ purchased: mail.has(id)
41307
+ }))
41308
+ };
41309
+ }
41310
+
41236
41311
  // src/save-file/parsers/v1/mail.ts
41237
41312
  var QI_ORDER_IDS = new Set(
41238
41313
  special_orders_default.filter((o) => o.type === "qi").map((o) => o.id)
@@ -41726,7 +41801,8 @@ var v1 = (ctx) => ({
41726
41801
  raccoons: parseRaccoons(ctx.root, ctx.mailSet),
41727
41802
  perfection: parsePerfection(ctx.root),
41728
41803
  mineProgress: parseMineProgress(ctx.player, ctx.root, ctx.mailSet),
41729
- communityCenter: parseCommunityCenter(ctx.mailSet, ctx.eventsSet)
41804
+ communityCenter: parseCommunityCenter(ctx.mailSet, ctx.eventsSet),
41805
+ joja: parseJoja(ctx.mailSet, ctx.eventsSet)
41730
41806
  });
41731
41807
  var PARSER_SETS = {
41732
41808
  1: v1