Skip to content

Commit 152bf94

Browse files
committed
Change ScrLev and Stat to enum. Bump version to 0.4.0
1 parent 184cc7f commit 152bf94

10 files changed

Lines changed: 269 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Changelog
22

3+
## 0.4.0
4+
5+
- `ScrLev` is now `declare enum` with named levels (`ScrLev.OVERRIDE`, `ScrLev.AREA`, etc.).
6+
- `Stats` type renamed to `Stat` and converted to `declare enum` with all stats.ids values and jsdoc comments.
7+
- `CheckStat`/`CheckStatGT`/`CheckStatLT` parameter renamed from `statNum` to `stat`.
8+
9+
### Breaking changes
10+
11+
- `Stats` type removed. Use `Stat` enum instead.
12+
- `ScrLev` changed from branded type to enum.
13+
314
## 0.3.2
415

516
- Scoped package name: `@bgforge/iets`.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@bgforge/iets",
3-
"version": "0.3.2",
3+
"version": "0.4.0",
44
"type": "module",
55
"exports": {
66
".": "./src/index.ts",

scripts/ts-update.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ describe("parseTriggerParameters", () => {
6868
});
6969

7070
it("parses multiple parameters", () => {
71-
const result = parseTriggerParameters("I:Stat*Stats,I:Value,O:Object");
72-
expect(result).toBe("stat: Stats, value: number, object: ObjectPtr");
71+
const result = parseTriggerParameters("I:StatNum*Stats,I:Value,O:Object");
72+
expect(result).toBe("stat: Stat, value: number, object: ObjectPtr");
7373
});
7474

7575
it("applies type aliases (Spell -> SpellID)", () => {

scripts/ts-update.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const SKIP_FUNCTION_NAMES = ["Help"]; // Help is both action and trigger
2222
/** IESDP param names that are reserved keywords or need normalization in TypeScript. */
2323
const RESERVED_PARAM_NAMES: Readonly<Record<string, string>> = {
2424
GLOBAL: "global",
25+
StatNum: "stat",
2526
class: "classID", // `class` is a reserved keyword in TypeScript
2627
iD: "id",
2728
};
@@ -31,6 +32,7 @@ const TYPE_ALIASES: Readonly<Record<string, string>> = {
3132
Class: "CLASS",
3233
Race: "RACE",
3334
Spell: "SpellID",
35+
Stats: "Stat",
3436
Weather: "WeatherID",
3537
ShoutIDS: "ShoutID",
3638
};
@@ -107,7 +109,7 @@ import type { ShoutID } from "./shoutids.ids";
107109
import type { Slots } from "./slots.ids";
108110
import type { Specific } from "./specific.ids";
109111
import type { State } from "./state.ids";
110-
import type { Stats } from "./stats.ids";
112+
import type { Stat } from "./stats.ids";
111113
import type { TimeID as Time } from "./time.ids";
112114
import type { TimeODay } from "./timeoday.ids";
113115

src/bg2/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ export {
479479
// --- More IDS types and constants ---
480480
export { RACE } from './race.ids.d';
481481
export type { ReactionID } from './reaction.ids.d';
482-
export type { ScrLev } from './scrlev.ids.d';
482+
export { ScrLev } from './scrlev.ids';
483483
export type { Scroll } from './scroll.ids.d';
484484
export type { Seq } from './seq.ids.d';
485485
export type { ShoutID } from './shoutids.ids.d';
@@ -1585,7 +1585,7 @@ export {
15851585
STATE_STONE_DEATH,
15861586
STATE_STUNNED,
15871587
} from './state.ids.d';
1588-
export type { Stats } from './stats.ids.d';
1588+
export { Stat } from './stats.ids';
15891589
export type { TimeID } from './time.ids.d';
15901590
export type { TimeODay } from './timeoday.ids.d';
15911591
export type { WeatherID } from './weather.ids.d';

src/bg2/scrlev.ids.d.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/bg2/scrlev.ids.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/** ScrLev.ids -- script level for ChangeAIScript. */
2+
export enum ScrLev {
3+
OVERRIDE = 0,
4+
AREA = 1,
5+
SPECIFICS = 2,
6+
CLASS = 4,
7+
RACE = 5,
8+
GENERAL = 6,
9+
DEFAULT = 7,
10+
}

src/bg2/stats.ids.d.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/bg2/stats.ids.ts

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
/** Stats.ids -- creature statistics for CheckStat and related triggers. */
2+
export enum Stat {
3+
/** The creature's Maximum Hit Points. */
4+
MAXHITPOINTS = 1,
5+
ARMORCLASS = 2,
6+
ACCRUSHINGMOD = 3,
7+
ACMISSILEMOD = 4,
8+
ACPIERCINGMOD = 5,
9+
ACSLASHINGMOD = 6,
10+
THAC0 = 7,
11+
NUMBEROFATTACKS = 8,
12+
SAVEVSDEATH = 9,
13+
SAVEVSWANDS = 10,
14+
SAVEVSPOLY = 11,
15+
SAVEVSBREATH = 12,
16+
SAVEVSSPELL = 13,
17+
RESISTFIRE = 14,
18+
RESISTCOLD = 15,
19+
RESISTELECTRICITY = 16,
20+
RESISTACID = 17,
21+
RESISTMAGIC = 18,
22+
RESISTMAGICFIRE = 19,
23+
RESISTMAGICCOLD = 20,
24+
RESISTSLASHING = 21,
25+
RESISTCRUSHING = 22,
26+
RESISTPIERCING = 23,
27+
RESISTMISSILE = 24,
28+
LORE = 25,
29+
LOCKPICKING = 26,
30+
STEALTH = 27,
31+
TRAPS = 28,
32+
PICKPOCKET = 29,
33+
FATIGUE = 30,
34+
INTOXICATION = 31,
35+
LUCK = 32,
36+
TRACKING = 33,
37+
LEVEL = 34,
38+
SEX = 35,
39+
STR = 36,
40+
STREXTRA = 37,
41+
INT = 38,
42+
WIS = 39,
43+
DEX = 40,
44+
CON = 41,
45+
CHR = 42,
46+
XPVALUE = 43,
47+
XP = 44,
48+
GOLD = 45,
49+
/** Returns 0 or 1 if the creature is immune to fear. */
50+
MORALEBREAK = 46,
51+
MORALERECOVERYTIME = 47,
52+
REPUTATION = 48,
53+
HATEDRACE = 49,
54+
DAMAGEBONUS = 50,
55+
SPELLFAILUREMAGE = 51,
56+
SPELLFAILUREPRIEST = 52,
57+
SPELLDURATIONMODMAGE = 53,
58+
SPELLDURATIONMODPRIEST = 54,
59+
TURNUNDEADLEVEL = 55,
60+
BACKSTABDAMAGEMULTIPLIER = 56,
61+
LAYONHANDSAMOUNT = 57,
62+
HELD = 58,
63+
POLYMORPHED = 59,
64+
TRANSLUCENT = 60,
65+
IDENTIFYMODE = 61,
66+
ENTANGLE = 62,
67+
SANCTUARY = 63,
68+
MINORGLOBE = 64,
69+
SHIELDGLOBE = 65,
70+
GREASE = 66,
71+
WEB = 67,
72+
LEVEL2 = 68,
73+
LEVEL3 = 69,
74+
CasterHold = 70,
75+
ENCUMBERANCE = 71,
76+
MISSILETHAC0BONUS = 72,
77+
MAGICDAMAGERESISTANCE = 73,
78+
RESISTPOISON = 74,
79+
DONOTJUMP = 75,
80+
AURACLEANSING = 76,
81+
MENTALSPEED = 77,
82+
PHYSICALSPEED = 78,
83+
CASTINGLEVELBONUSMAGE = 79,
84+
CASTINGLEVELBONUSCLERIC = 80,
85+
SEEINVISIBLE = 81,
86+
IGNOREDIALOGPAUSE = 82,
87+
MINHITPOINTS = 83,
88+
THAC0BONUSRIGHT = 84,
89+
THAC0BONUSLEFT = 85,
90+
DAMAGEBONUSRIGHT = 86,
91+
DAMAGEBONUSLEFT = 87,
92+
STONESKINS = 88,
93+
PROFICIENCYBASTARDSWORD = 89,
94+
PROFICIENCYLONGSWORD = 90,
95+
PROFICIENCYSHORTSWORD = 91,
96+
PROFICIENCYAXE = 92,
97+
PROFICIENCYTWOHANDEDSWORD = 93,
98+
PROFICIENCYKATANA = 94,
99+
PROFICIENCYSCIMITARWAKISASHININJATO = 95,
100+
PROFICIENCYDAGGER = 96,
101+
PROFICIENCYWARHAMMER = 97,
102+
PROFICIENCYSPEAR = 98,
103+
PROFICIENCYHALBERD = 99,
104+
PROFICIENCYFLAILMORNINGSTAR = 100,
105+
PROFICIENCYMACE = 101,
106+
PROFICIENCYQUARTERSTAFF = 102,
107+
PROFICIENCYCROSSBOW = 103,
108+
PROFICIENCYLONGBOW = 104,
109+
PROFICIENCYSHORTBOW = 105,
110+
PROFICIENCYDART = 106,
111+
PROFICIENCYSLING = 107,
112+
PROFICIENCYBLACKJACK = 108,
113+
PROFICIENCYGUN = 109,
114+
PROFICIENCYMARTIALARTS = 110,
115+
PROFICIENCY2HANDED = 111,
116+
PROFICIENCYSWORDANDSHIELD = 112,
117+
PROFICIENCYSINGLEWEAPON = 113,
118+
PROFICIENCY2WEAPON = 114,
119+
EXTRAPROFICIENCY1 = 115,
120+
EXTRAPROFICIENCY2 = 116,
121+
EXTRAPROFICIENCY3 = 117,
122+
EXTRAPROFICIENCY4 = 118,
123+
EXTRAPROFICIENCY5 = 119,
124+
EXTRAPROFICIENCY6 = 120,
125+
EXTRAPROFICIENCY7 = 121,
126+
EXTRAPROFICIENCY8 = 122,
127+
EXTRAPROFICIENCY9 = 123,
128+
EXTRAPROFICIENCY10 = 124,
129+
EXTRAPROFICIENCY11 = 125,
130+
EXTRAPROFICIENCY12 = 126,
131+
EXTRAPROFICIENCY13 = 127,
132+
EXTRAPROFICIENCY14 = 128,
133+
EXTRAPROFICIENCY15 = 129,
134+
EXTRAPROFICIENCY16 = 130,
135+
EXTRAPROFICIENCY17 = 131,
136+
EXTRAPROFICIENCY18 = 132,
137+
EXTRAPROFICIENCY19 = 133,
138+
EXTRAPROFICIENCY20 = 134,
139+
HIDEINSHADOWS = 135,
140+
DETECTILLUSIONS = 136,
141+
SETTRAPS = 137,
142+
/** An image is linked to its master via an Object ID. This stat contains the Object ID of the image's master. */
143+
PUPPETMASTERID = 138,
144+
/** An image can return true on the following values: 1 = Mislead, 2 = Project Image, 3 = Simulacrum. */
145+
PUPPETMASTERTYPE = 139,
146+
/** An image owner can return true on the following values: 1 = Mislead, 2 = Project Image, 3 = Simulacrum. */
147+
PUPPETTYPE = 140,
148+
/** An image owner is linked to its master via an Object ID. This stat contains the Object ID of the image owner's image. */
149+
PUPPETID = 141,
150+
/** This stat seems never to be set. */
151+
CHECKFORBERSERK = 142,
152+
/** This stat seems never to be set. */
153+
BERSERKSTAGE1 = 143,
154+
/** This stat seems never to be set. */
155+
BERSERKSTAGE2 = 144,
156+
DAMAGELUCK = 145,
157+
CRITICALHITBONUS = 146,
158+
/** The current visual range of the creature (field of vision / fog of war) and script activation radius. Default 14. Blindness sets to 2. Visual range limited 0-15, script activation range limited 0-24. */
159+
VISUALRANGE = 147,
160+
EXPLORE = 148,
161+
THRULLCHARM = 149,
162+
SUMMONDISABLE = 150,
163+
HITBONUS = 151,
164+
KIT = 152,
165+
FORCESURGE = 153,
166+
SURGEMOD = 154,
167+
/** Set by opcode 317. */
168+
IMPROVEDHASTE = 155,
169+
SCRIPTINGSTATE1 = 156,
170+
SCRIPTINGSTATE2 = 157,
171+
SCRIPTINGSTATE3 = 158,
172+
SCRIPTINGSTATE4 = 159,
173+
SCRIPTINGSTATE5 = 160,
174+
SCRIPTINGSTATE6 = 161,
175+
SCRIPTINGSTATE7 = 162,
176+
SCRIPTINGSTATE8 = 163,
177+
SCRIPTINGSTATE9 = 164,
178+
SCRIPTINGSTATE10 = 165,
179+
/** Set by opcode 284. */
180+
MELEETHAC0MOD = 166,
181+
/** Set by opcode 285. */
182+
MELEEDAMAGE = 167,
183+
/** Set by opcode 286. */
184+
MISSILEDAMAGE = 168,
185+
/** Set by opcode 287. */
186+
NOCIRCLE = 169,
187+
/** Set by opcode 288. */
188+
FISTTHAC0 = 170,
189+
/** Set by opcode 289. */
190+
FISTDAMAGE = 171,
191+
/** Set by opcode 290. */
192+
TITLE1 = 172,
193+
/** Set by opcode 290. */
194+
TITLE2 = 173,
195+
/** Set by opcode 291. */
196+
DISABLEOVERLAY = 174,
197+
/** Set by opcode 292. Note: Barbarians are immune to backstab but do not have this stat set. */
198+
DISABLEBACKSTAB = 175,
199+
LOCKPICKINGCP = 176,
200+
STEALTHCP = 177,
201+
TRAPSCP = 178,
202+
PICKPOCKETCP = 179,
203+
HIDEINSHADOWSCP = 180,
204+
DETECTILLUSIONSCP = 181,
205+
SETTRAPSCP = 182,
206+
/** Set by opcode 293. */
207+
ENABLEOFFSCREENAI = 183,
208+
/** Set by opcode 294. */
209+
EXISTANCESOUND = 184,
210+
HASTE = 185,
211+
/** Set by opcode 295. */
212+
DISABLECHUNKYDEATH = 186,
213+
/** Set by opcode 297. */
214+
DISABLETURNUNDEAD = 187,
215+
/** Set by opcode 299. */
216+
CHAOSSHIELD = 189,
217+
/** Set by opcode 300. */
218+
NPCBUMP = 190,
219+
/** Set by opcode 302. */
220+
CANUSEANYITEM = 191,
221+
/** Set by opcode 303. */
222+
ALWAYSBACKSTAB = 192,
223+
/** Set by opcode 71. */
224+
SEXCHANGE = 193,
225+
SPELLFAILUREINNATE = 194,
226+
/** Set by opcode 308. */
227+
DISABLETRACKING = 195,
228+
DEADMAGIC = 196,
229+
/** Set by opcode 310. */
230+
DISABLETIMESTOP = 197,
231+
FREEDOM = 198,
232+
STONESKINSGOLEM = 199,
233+
LEVELDRAIN = 200,
234+
/** Set by opcode 315. */
235+
AVATARREMOVAL = 201,
236+
}

src/bg2/triggers.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import type { ShoutID } from "./shoutids.ids";
2020
import type { Slots } from "./slots.ids";
2121
import type { Specific } from "./specific.ids";
2222
import type { State } from "./state.ids";
23-
import type { Stats } from "./stats.ids";
23+
import type { Stat } from "./stats.ids";
2424
import type { TimeID as Time } from "./time.ids";
2525
import type { TimeODay } from "./timeoday.ids";
2626

@@ -359,17 +359,17 @@ export declare function InParty(object: ObjectPtr): boolean;
359359
/**
360360
* Returns true only if the specified object has the statistic in the 3rd parameter at the value of the 2nd parameter.
361361
*/
362-
export declare function CheckStat(object: ObjectPtr, value: number, statNum: Stats): boolean;
362+
export declare function CheckStat(object: ObjectPtr, value: number, stat: Stat): boolean;
363363

364364
/**
365365
* Returns true only if the specified object has the statistic in the 3rd parameter greater than the value of the 2nd parameter.
366366
*/
367-
export declare function CheckStatGT(object: ObjectPtr, value: number, statNum: Stats): boolean;
367+
export declare function CheckStatGT(object: ObjectPtr, value: number, stat: Stat): boolean;
368368

369369
/**
370370
* Returns true only if the specified object has the statistic in the 3rd parameter less than the value of the 2nd parameter.
371371
*/
372-
export declare function CheckStatLT(object: ObjectPtr, value: number, statNum: Stats): boolean;
372+
export declare function CheckStatLT(object: ObjectPtr, value: number, stat: Stat): boolean;
373373

374374
/**
375375
* Generates a random number between 1 and Range. Returns true only if the random number equals the 2nd parameter.

0 commit comments

Comments
 (0)