@pkmn/engine 0.1.0-dev.028ab165

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 (62) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +343 -0
  3. package/build/pkg/addon.d.ts +7 -0
  4. package/build/pkg/addon.js +112 -0
  5. package/build/pkg/addon.js.map +1 -0
  6. package/build/pkg/data/ids.json +240 -0
  7. package/build/pkg/data/layout.json +108 -0
  8. package/build/pkg/data/protocol.json +230 -0
  9. package/build/pkg/data.d.ts +91 -0
  10. package/build/pkg/data.js +150 -0
  11. package/build/pkg/data.js.map +1 -0
  12. package/build/pkg/gen1.d.ts +110 -0
  13. package/build/pkg/gen1.js +684 -0
  14. package/build/pkg/gen1.js.map +1 -0
  15. package/build/pkg/index.d.ts +386 -0
  16. package/build/pkg/index.js +122 -0
  17. package/build/pkg/index.js.map +1 -0
  18. package/build/pkg/protocol.d.ts +73 -0
  19. package/build/pkg/protocol.js +473 -0
  20. package/build/pkg/protocol.js.map +1 -0
  21. package/build/test/display.js +400 -0
  22. package/build/test/display.js.map +1 -0
  23. package/build/tools/debug.js +135 -0
  24. package/build/tools/debug.js.map +1 -0
  25. package/build.zig +371 -0
  26. package/package.json +224 -0
  27. package/src/bin/install-pkmn-engine +396 -0
  28. package/src/bin/pkmn-debug +62 -0
  29. package/src/lib/binding/node.zig +134 -0
  30. package/src/lib/binding/wasm.zig +12 -0
  31. package/src/lib/common/battle.zig +17 -0
  32. package/src/lib/common/data.zig +117 -0
  33. package/src/lib/common/debug.zig +74 -0
  34. package/src/lib/common/js.zig +118 -0
  35. package/src/lib/common/optional.zig +67 -0
  36. package/src/lib/common/options.zig +49 -0
  37. package/src/lib/common/protocol.zig +1841 -0
  38. package/src/lib/common/rational.zig +353 -0
  39. package/src/lib/common/rng.zig +243 -0
  40. package/src/lib/common/util.zig +12 -0
  41. package/src/lib/gen1/README.md +894 -0
  42. package/src/lib/gen1/calc.zig +426 -0
  43. package/src/lib/gen1/chance.zig +1060 -0
  44. package/src/lib/gen1/data/moves.zig +1866 -0
  45. package/src/lib/gen1/data/species.zig +1105 -0
  46. package/src/lib/gen1/data/types.zig +131 -0
  47. package/src/lib/gen1/data.zig +634 -0
  48. package/src/lib/gen1/helpers.zig +779 -0
  49. package/src/lib/gen1/mechanics.zig +3128 -0
  50. package/src/lib/gen2/README.md +329 -0
  51. package/src/lib/gen2/calc.zig +143 -0
  52. package/src/lib/gen2/chance.zig +1314 -0
  53. package/src/lib/gen2/data/items.zig +230 -0
  54. package/src/lib/gen2/data/moves.zig +2878 -0
  55. package/src/lib/gen2/data/species.zig +1798 -0
  56. package/src/lib/gen2/data/types.zig +226 -0
  57. package/src/lib/gen2/data.zig +463 -0
  58. package/src/lib/gen2/generated.zig +808 -0
  59. package/src/lib/gen2/helpers.zig +219 -0
  60. package/src/lib/gen2/mechanics.zig +3551 -0
  61. package/src/lib/pkmn.zig +113 -0
  62. package/src/test/display/pkmn.html.tmpl +368 -0
@@ -0,0 +1,230 @@
1
+ //! Code generated by `tools/generate` - manual edits will be overwritten.
2
+
3
+ const std = @import("std");
4
+
5
+ const data = @import("../../gen2/data.zig");
6
+
7
+ const assert = std.debug.assert;
8
+
9
+ const Type = data.Type;
10
+
11
+ /// Representation of a held item in Generation II Pokémon.
12
+ pub const Item = enum(u8) {
13
+ None,
14
+ SoftSand, // Ground
15
+ HardStone, // Rock
16
+ MetalCoat, // Steel
17
+ PinkBow, // Normal
18
+ BlackBelt, // Fighting
19
+ SharpBeak, // Flying
20
+ PoisonBarb, // Poison
21
+ SilverPowder, // Bug
22
+ SpellTag, // Ghost
23
+ PolkadotBow, // ??? (Normal)
24
+ Charcoal, // Fire
25
+ MysticWater, // Water
26
+ MiracleSeed, // Grass
27
+ Magnet, // Electric
28
+ TwistedSpoon, // Psychic
29
+ NeverMeltIce, // Ice
30
+ DragonScale, // Dragon
31
+ BlackGlasses, // Dark
32
+ BrightPowder, // BrightPowder
33
+ MetalPowder, // MetalPowder
34
+ QuickClaw, // QuickClaw
35
+ KingsRock, // Flinch
36
+ Stick,
37
+ ThickClub,
38
+ FocusBand, // FocusBand
39
+ ScopeLens, // CriticalUp
40
+ Leftovers, // Leftovers
41
+ BerserkGene,
42
+ LightBall,
43
+ Berry, // Berry
44
+ BerryJuice, // Berry
45
+ GoldBerry, // Berry
46
+ MintBerry, // HealSleep
47
+ PSNCureBerry, // HealPoison
48
+ PRZCureBerry, // HealParalyze
49
+ IceBerry, // HealBurn
50
+ BurntBerry, // HealFreeze
51
+ MiracleBerry, // HealStatus
52
+ BitterBerry, // HealConfusion
53
+ MysteryBerry, // RestorePP
54
+ MasterBall,
55
+ UltraBall,
56
+ GreatBall,
57
+ PokeBall,
58
+ MoonStone,
59
+ FireStone,
60
+ ThunderStone,
61
+ WaterStone,
62
+ LuckyPunch,
63
+ LeafStone,
64
+ DragonFang,
65
+ HeavyBall,
66
+ LevelBall,
67
+ LureBall,
68
+ FastBall,
69
+ FriendBall,
70
+ MoonBall,
71
+ LoveBall,
72
+ SunStone,
73
+ UpGrade,
74
+ // Pokémon Showdown excludes the following items (minus "Mail")
75
+ FlowerMail,
76
+ SurfMail,
77
+ LightBlueMail,
78
+ PortrailMail,
79
+ LovelyMail,
80
+ EonMail,
81
+ MorphMail,
82
+ BlueSkyMail,
83
+ MusicMail,
84
+ MirageMail,
85
+ TownMap,
86
+ Antidote,
87
+ BurnHeal,
88
+ IceHeal,
89
+ Awakening,
90
+ ParylzeHeal,
91
+ FullRestore,
92
+ MaxPotion,
93
+ HyperPotion,
94
+ SuperPotion,
95
+ Potion,
96
+ EscapeRope,
97
+ Repel,
98
+ MaxElixir,
99
+ HPUp,
100
+ Protein,
101
+ Iron,
102
+ Carbos,
103
+ Calcium,
104
+ RareCandy,
105
+ XAccuracy,
106
+ Nugget,
107
+ PokeDoll,
108
+ FullHeal,
109
+ Revive,
110
+ MaxRevive,
111
+ GuardSpec,
112
+ SuperRepel,
113
+ MaxRepel,
114
+ DireHit,
115
+ FreshWater,
116
+ SodaPop,
117
+ Lemonade,
118
+ XAttack,
119
+ XDefend,
120
+ XSpeed,
121
+ XSpecial,
122
+ PokeFlute,
123
+ ExpShare,
124
+ SilverLeaf,
125
+ PPUp,
126
+ Ether,
127
+ MaxEther,
128
+ Elixir,
129
+ MoomooMilk,
130
+ GoldLeaf,
131
+ RedApricorn,
132
+ TinyMushroom,
133
+ BigMushroom,
134
+ BlueApricorn,
135
+ AmuletCoin,
136
+ YellowApricorn,
137
+ GreenApricorn,
138
+ CleanseTag,
139
+ WhiteApricorn,
140
+ BlackApricorn,
141
+ PinkApricorn,
142
+ SlowpokeTail,
143
+ SmokeBall,
144
+ Pearl,
145
+ BigPearl,
146
+ Everstone,
147
+ RageCandyBar,
148
+ EnergyPowder,
149
+ EnergyRoot,
150
+ HealPowder,
151
+ RevivalHerb,
152
+ LuckyEgg,
153
+ Stardust,
154
+ StarPiece,
155
+ SacredAsh,
156
+ NormalBox,
157
+ GorgeousBox,
158
+ ParkBall,
159
+ BrickPiece,
160
+ TM01,
161
+ TM02,
162
+ TM03,
163
+ TM04,
164
+ TM05,
165
+ TM06,
166
+ TM07,
167
+ TM08,
168
+ TM09,
169
+ TM10,
170
+ TM11,
171
+ TM12,
172
+ TM13,
173
+ TM14,
174
+ TM15,
175
+ TM16,
176
+ TM17,
177
+ TM18,
178
+ TM19,
179
+ TM20,
180
+ TM21,
181
+ TM22,
182
+ TM23,
183
+ TM24,
184
+ TM25,
185
+ TM26,
186
+ TM27,
187
+ TM28,
188
+ TM29,
189
+ TM30,
190
+ TM31,
191
+ TM32,
192
+ TM33,
193
+ TM34,
194
+ TM35,
195
+ TM36,
196
+ TM37,
197
+ TM38,
198
+ TM39,
199
+ TM40,
200
+ TM41,
201
+ TM42,
202
+ TM43,
203
+ TM44,
204
+ TM45,
205
+ TM46,
206
+ TM47,
207
+ TM48,
208
+ TM49,
209
+ TM50,
210
+
211
+ comptime {
212
+ assert(@sizeOf(Item) == 1);
213
+ }
214
+
215
+ /// The number of held items in this generation.
216
+ pub const size = 196;
217
+
218
+ /// Returns a `Type` boosted by this item or `null` if the item is not a type-boosting item.
219
+ pub fn boost(item: Item) ?Type {
220
+ assert(item != .None);
221
+ if (item == .PolkadotBow) return .Normal;
222
+ return if (@intFromEnum(item) <= 18) @enumFromInt(@intFromEnum(item) - 1) else null;
223
+ }
224
+
225
+ /// Whether or not this item is Mail.
226
+ pub fn isMail(item: Item) bool {
227
+ assert(item != .None);
228
+ return @intFromEnum(item) > 60 and @intFromEnum(item) <= 70;
229
+ }
230
+ };