Jump to content

CheckStat()


berelinde

Recommended Posts

According to the IESDP, the following conditions all show up as Stats. In theory, you should be able to use a CheckStat() trigger to see if the condition applies. We all use CheckStat(Player1,##,STR) or whatever all the time, and I've used both INTOXICATION and FATIGUE before (which wasn't as fun as it sounds). But couldn't you also customize dialogue/scripts to check for things like two-handed sword proficiencies or the ability to set traps above a certain level?

 

 

2 ARMORCLASS
3 ACCRUSHINGMOD
4 ACMISSILEMOD
5 ACPIERCINGMOD
6 ACSLASHINGMOD
7 THAC0
8 NUMBEROFATTACKS
9 SAVEVSDEATH
10 SAVEVSWANDS
11 SAVEVSPOLY
12 SAVEVSBREATH
13 SAVEVSSPELL
14 RESISTFIRE
15 RESISTCOLD
16 RESISTELECTRICITY
17 RESISTACID
18 RESISTMAGIC
19 RESISTMAGICFIRE
20 RESISTMAGICCOLD
21 RESISTSLASHING
22 RESISTCRUSHING
23 RESISTPIERCING
24 RESISTMISSILE
25 LORE
26 LOCKPICKING
27 STEALTH
28 TRAPS
29 PICKPOCKET
30 FATIGUE
31 INTOXICATION
32 LUCK
33 TRACKING
34 LEVEL
35 SEX
36 STR
37 STREXTRA
38 INT
39 WIS
40 DEX
41 CON
42 CHR
43 XPVALUE
44 XP
45 GOLD


46 MORALEBREAK
Returns 0 or 1 if the creature is immune to fear.


47 MORALERECOVERYTIME
48 REPUTATION
49 HATEDRACE
50 DAMAGEBONUS
51 SPELLFAILUREMAGE
52 SPELLFAILUREPRIEST
53 SPELLDURATIONMODMAGE
54 SPELLDURATIONMODPRIEST
55 TURNUNDEADLEVEL
56 BACKSTABDAMAGEMULTIPLIER
57 LAYONHANDSAMOUNT
58 HELD
59 POLYMORPHED
60 TRANSLUCENT
61 IDENTIFYMODE
62 ENTANGLE
63 SANCTUARY
64 MINORGLOBE
65 SHIELDGLOBE
66 GREASE
67 WEB
68 LEVEL2
69 LEVEL3
70 CasterHold
71 ENCUMBERANCE
72 MISSILETHAC0BONUS
73 MAGICDAMAGERESISTANCE
74 RESISTPOISON
75 DONOTJUMP
76 AURACLEANSING
77 MENTALSPEED
78 PHYSICALSPEED
79 CASTINGLEVELBONUSMAGE
80 CASTINGLEVELBONUSCLERIC
81 SEEINVISIBLE
82 IGNOREDIALOGPAUSE
83 MINHITPOINTS
84 THAC0BONUSRIGHT
85 THAC0BONUSLEFT
86 DAMAGEBONUSRIGHT
87 DAMAGEBONUSLEFT
88 STONESKINS
89 PROFICIENCYBASTARDSWORD
90 PROFICIENCYLONGSWORD
91 PROFICIENCYSHORTSWORD
92 PROFICIENCYAXE
93 PROFICIENCYTWOHANDEDSWORD
94 PROFICIENCYKATANA
95 PROFICIENCYSCIMITARWAKISASHININJATO
96 PROFICIENCYDAGGER
97 PROFICIENCYWARHAMMER
98 PROFICIENCYSPEAR
99 PROFICIENCYHALBERD
100 PROFICIENCYFLAILMORNINGSTAR
101 PROFICIENCYMACE
102 PROFICIENCYQUARTERSTAFF
103 PROFICIENCYCROSSBOW
104 PROFICIENCYLONGBOW
105 PROFICIENCYSHORTBOW
106 PROFICIENCYDART
107 PROFICIENCYSLING
108 PROFICIENCYBLACKJACK
109 PROFICIENCYGUN
110 PROFICIENCYMARTIALARTS
111 PROFICIENCY2HANDED
112 PROFICIENCYSWORDANDSHIELD
113 PROFICIENCYSINGLEWEAPON
114 PROFICIENCY2WEAPON
115 EXTRAPROFICIENCY1
116 EXTRAPROFICIENCY2
117 EXTRAPROFICIENCY3
118 EXTRAPROFICIENCY4
119 EXTRAPROFICIENCY5
120 EXTRAPROFICIENCY6
121 EXTRAPROFICIENCY7
122 EXTRAPROFICIENCY8
123 EXTRAPROFICIENCY9
124 EXTRAPROFICIENCY10
125 EXTRAPROFICIENCY11
126 EXTRAPROFICIENCY12
127 EXTRAPROFICIENCY13
128 EXTRAPROFICIENCY14
129 EXTRAPROFICIENCY15
130 EXTRAPROFICIENCY16
131 EXTRAPROFICIENCY17
132 EXTRAPROFICIENCY18
133 EXTRAPROFICIENCY19
134 EXTRAPROFICIENCY20
135 HIDEINSHADOWS
136 DETECTILLUSIONS
137 SETTRAPS

Link to comment

If you needed to... I'm not sure where you're getting the mysterioso from; it should be pretty straightforward?

 

There are a few more stats than are in a ToB IDS; probably nothing you'd ever want to use.

166 MELEETHAC0BONUS
167 MELEEDAMAGEBONUS
168 MISSILEDAMAGEBONUS
169 NOCIRCLE
170 FISTTHAC0BONUS
171 FISTDAMAGEBONUS
172 TITLE1
173 TITLE2
174 NOVISUALS
175 IMMUNITYBACKSTAB
183 NODEFERAI
186 NOPERMANENTDEATH
187 IMMUNITYTURNUNDEAD
189 WILDSURGEMOD
190 NPCBUMP
191 USEANYITEM
192 ASSASSINATION
194 SPELLFAILUREINNATE
195 IMMUNITYTRACKING
196 DEADMAGIC
197 IMMUNITYTIMESTOP
198 IMMUNITYSEQUESTER
201 DONOTDRAW

There are others, but I either have no suitable name for them or it's completely unknown what they're hooked up to.

Link to comment

Hmmm -

 

CheckStat(Player1,2,PROFICIENCYTWOHANDEDSWORD)

( or CheckStat(Player1,2,93) )

 

may not be the kind of thing you are looking for, though, berelinde - the bigg's tewaks and stuff that remaps the proficiencies between BG and BG2 style might interfere.

 

I do have a question, though, devSin -

 

 

if I wanted to do something like this:

 

/* 67 WEB */

IF

StatCheck(Player1,#,67)

THEN

RESPONSE #100

DisplayStringHead(Myself,~Well, it looks like you are in a mite o' a sticky situation, there~)

END

 

(obviously set up properly so it isn't constantly checking)

 

where would I look for the valid values?

Link to comment

I was just thinking that it might occasionally be useful, in some pretty obscure dialogue situations. Like, if Player 1 had a high Lore ability, have an NPC say something like (using a BG1 example), "You probably already know about the Crown Wars, but this ruined elven temple is just one of those left in their wake in the border region between Tethyr and Amn." I'm thinking of the Underdark Exit, here, and making the entire thing up, but you get the idea. I got kind of used to being able to check for all kinds of bizarre things in NWN2, and I was just looking to see if there was provision for it in IE.

Link to comment
where would I look for the valid values?
I wouldn't bother... if a creature doesn't have the web overlay effect, CheckStat(Object,0,67) is true, else !CheckStat(Object,0,67). (That's the way I'd do it.)

 

But in most cases of these "effect" stats, you're probably just looking at "1" for "on" and "0" for "off." You can check exact values with a player script (IF HotKey(B) CheckStat(Target,[012...n],67) THEN RESPONSE #100 DisplayStringHead(Myself,[123...n]) END) and hit B after assigning the script to Player1 before and after webbing Target.

 

Note that the run from ENTANGLE ... WEB mean *only* that the corresponding effect is active on the character checked (so minor globe overlay effect from Otiluke's sphere will still cause MINORGLOBE to be nonzero). I'm not sure about some of the others (HELD is probably 0/1; Polymorph and Translucent would be cool to return the Animation and Trans amount but probably don't; Identify probably is never set; CasterHold i.e., Pause caster is 0/1; NOJUMP i.e., No collision detection is 0/1; THRULL i.e., Turned by Cleric is 0/1; no idea about alacrity/speed factor/cast speed mods).

 

Some of the SoA and ToB effects that have corresponding stats allow the effect to set an arbitrary stat value (in IESDP, these will usually be "Must be 1" or "Constant value" labels for Parameter 2), so these should always be checked by 0 / !0. The engine is basically checking the stat to determine if something should happen, and the effect really just sits there setting the stat for that character to its Parameter 2 value (things like SEEINVISIBLE, IGNOREDLGPAUSE, NOVISUALS, NOPERMDEATH, IMMUNETURNDEAD, USEANY, ASSASSINATE, etc.) without actually doing anything itself. (This is why older versions of Detectable Spells were wacky -- they were basically randomly turning all this stuff on and off by assigning values to these stats with misuse of the scripting state modifier).

Link to comment

DevSin, your list is almost complete :)

 

I have these too:

 

#define IE_EXISTANCEDELAY 184 // (sound2mn.itm) - (opcode 294)

#define IE_ATTACKNUMBERDOUBLE 185 // used by haste option 2

 

I know all values from 1-201, except: 176-182, 188 and 193.

If someone finds any clue how those are affected, tell me.

 

[edit]

added 188 to the list of unknown stats

Link to comment

Yeah, ExistanceDelayOverride was something that I couldn't come up with a catchy IDS symbol for, and we're still not sure what it was supposed to do anyway. So I leave it off.

 

Not sure why I don't have 185; if there's already a haste stat, that's probably why I leave it out ("185 HASTE2" would just bug the hell out of me).

 

That's what I meant with "no suitable name." Even if we know what it's used for, I have to come up with a label that looks good before I'll add it. :-)

Link to comment
I know all values from 1-201, except: 176-182, 188 and 193.

If someone finds any clue how those are affected, tell me.

176-182 are thief skill modifiers. The get set from the effect when param2 = 0 and timing = 9. (only in the "last" set of stats)

In that order: open locks, move silently, find traps, pick pockets, hide in shadows, detect illusions, set traps.

 

184: Probably something from BG1 as it is related to the DIALOG_DEFAULT soundslot. It influences a chance that this sound/dialogue is triggered. The higher the value, the lower the chance. But it needs to be >0. There is still a condition that I haven't figured out, that needs to be true for this to happen.

 

188: Skips a whole bunch of action related stuff if it's set. (That stuff is also skipped when the game is in cutscene mode or bit 31 [named it "noninterruptable", since it is set by SetInterrupt(0)] of the cre flags is set.)

 

I'm curious about 198, though. It's used (indirectly) in the freedom effect when param2 is not 0. But it looks like some legacy thing.

Link to comment
184: Probably something from BG1 as it is related to the DIALOG_DEFAULT soundslot. It influences a chance that this sound/dialogue is triggered. The higher the value, the lower the chance. But it needs to be >0. There is still a condition that I haven't figured out, that needs to be true for this to happen.

Correction: I was off by one in the switch table, it's not the DIALOG_DEFAULT slot, but rather those strange EXISTANCE slots. And now the name of the effect suddenly starts to make sense.

Link to comment

Okay, I think I finally have all pieces together.

The EXISTANCE soundslots start at 69, not 70. (But the amount [5] is correct.)

Normally, there is a low chance (1/1485) that a creature does a random existance sound in his ai round. (Only valid strrefs are taken into account, and multiple entries have to be consecutive.)

With param1 of effect 0x126 you can directly influence that chance. 1 => 1/1, 2 =>1/2, ..., n => 1/n.

Param2 has no effect at all.

 

The extra condition I was talking about earlier is, that the creature has to be visible. :rolleyes:

Link to comment

As far as I can tell there're already 26-29 and 135-137 stats that deal with thief skills. Is there a difference between those and 176-182?

 

 

PS Oh, great, now I get it at last! It often happened to me that my rogues would have some of their skills 1-2 points higher than it should be. Detectable Spells uses 176-182 for various spells and that's how skills would go higher.

Link to comment

Thanks for clearing up the existance_whatever stat :rolleyes:

I always thought it is about how long to keep the corpse after death.

 

198 is set by the 'immunitytosequester' effect (0x138).

But the effect itself is crippled (its constructor bugs out).

So, this stat cannot be set by its designated opcode.

 

00549975 8B 51 1C mov edx,dword ptr [ecx+1Ch] ;;param2

00549978 89 90 AA 0D 00 00 mov dword ptr [eax+0DAAh],edx ;; ?

Link to comment
198 is set by the 'immunitytosequester' effect (0x138).

But the effect itself is crippled (its constructor bugs out).

So, this stat cannot be set by its designated opcode.

Yes, you can't construct the effect directly. But the freedom effect (with param2 != 0) provides a way to do it indirectly. There are some other conditions that must be met in order to construct the effect and I haven't quite figured it out yet.

Link to comment

Yeah, the existence quips (PICKED_POCKET slot to +4) run periodically (rarely used in BG2), so this makes sense (there should be another condition: not in party, but that may be enforced elsewhere). Interesting that they made this 1/param1 when the default is already such a large value (SOUND2MN is definitely not going to be 2 minutes between sounds, guys). No wonder it's never used.

 

Hm, maybe sequester immunity really was going to block the maze-type limbo (I changed my mind last year or so since there's a sequester-ish pnp spell, but my original guess around here somewhere was to block the imprisonment removal)?

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...