Ascension64 Posted June 16, 2010 Share Posted June 16, 2010 PRO V1.0 0x8 Projectile type You can also have a value of 1, which specifies a BAM-less projectile. File size is 0xF8 if I recall correctly, and so the structure only goes to 0xF8 in the file description. 0xC Flags Treated as a DWORD, so 0xE is part of this field Why "sparking" flags? Bit0: Show sparkle Not "sparks". Bit1: Use height Uses z coordinates, but doesn"t necessarily mean "flying" when z = 0 Bit2: Loop on creation sound Bit3: Loop destination reached sound Bit4: Do no affect target For preset target projectiles, will not apply effects to the target. Useful for area projectiles where the targetted object is not affected. Bit5: Draw underneath animate objects Definitely not "snail trail sparks". Determines whether the projectile is drawn below animate objects, meaning that animate objects are drawn on top of the projectile. Used in-game for thief trap projectiles. 0x10 Travelling sound Sound to play when projectile is travelling to target location 0x18 Destination reached sound Sound to play when projectile is at its destination 0x20 Travelling visual effect Visual effect (VEF, VVC, BAM) animation when travelling to target location 0x28 Sparkle colour Reference to SPRKLCLR.2DA (row number) 1: BLACK (5) 2: BLUE (0) 3: CHROMATIC (6) 4: GOLD (1) 5: GREEN (8) 6: PURPLE (2) 7: RED (7) 8: WHITE (9) 9: ICE (3) 10: STONE (4) 11: MAGENTA (10) 12: ORANGE (11) 0x2c Unused Not unmarshalled 0x100 BAM Flags I would call it "BAM projectile flags", since it applies to a BAM projectile. Bit0: Enable BAM colouring. This really means use the palette at 0x11C. Bit2: Unused Bit3: Use area lighting Identical to dispbit16 (color bit0) for VVC. Bit4: Use area height Uses the area height map to adjust Y position. Bit7: Enable brighten (required for bit8 and bit9 to work) Bit8: Low level brighten (identical to setting seqbit7 in VVC) Bit9: Brighten and blend (identical to setting dispbit3 in VVC) 0x12b Smoke period I call this period instead of delay, since if p = period, 3 smoke objects are created every p ticks. A delay would imply wait p ticks, then play every tick following it. 0x133 Face target granularity Not tested, but this looks suspiciously like the number of orientations of the BAM file used by the BAM projectile. (similar to number of orientations in VVC format but with the mirroring already calculated) 0x136 Trail animation 1 0x13e Trail animation 2 0x146 Trail animation 3 VEF, VVC, BAM. 0x14e Trail animation 1 period 0x150 Trail animation 2 period 0x152 Trail animation 3 period Play animation 1 or 2 or 3 every x ticks, where x is the value of this field. 0x154 Unused Not unmarshalled 0x200 Area flags Description looks OK, although I would call it "area projectile flags" since it applies only to the area projectile struct. This is interpreted as a DWORD, so includes field 0x202 Bit0: Projectile remains visible at destination If 0, the projectile and shadow animations will travel to the destination, then disappear Bit1: Triggered by "inanimate" objects Specifically, the trigger can be triggered by objects that have [EA=neutral, GENERAL=255, RACE=255, CLASS=255, SPECIFIC=255, ALIGNMENT=255, GENDER=255] Bit2: Use trigger Note that default behaviour is to explode as soon as the projectile reaches the destination. This bit makes the projectile hold position until objects trigger the explosion. Bit3: Trigger during delay During trigger downtime, object will trigger, but won"t count in the trigger count, and objects caught in the trigger will only have effects applied if within the trigger radius, and if not in impassable terrain. Bit4: Projectile on explosion On explosion, makes a projectile as specified in 0x214 starting at the caster and extending to the explosion location (graphical only) Bit5: Chunks on explosion On an explosion, creates a random number of chunking animations as specified in 0x212 at the explosion location Bit6: Triggers on and targets opposite enemy-ally Bit7: Triggers on and targets same enemy-ally (requires bit6 to be set) Bit8: Number of triggers equal to cast mage level Bit9: Number of triggers equal to cast cleric level Triggers can trigger multiple times. This will allow the trigger to be triggered (mage/cleric level) times before purging. Mage takes priority, over cleric. If both are zero, then 0x216 will be used as the trigger count. Bit10: Visual effect on explosion On an explosion, creates a visual effect (VEF, VVC, BAM) at the explosion location as specified in 0x21c) Bit12: Affect objects through wall, mountain, building, and off-area If set, objects within the effect radius who are impeded by wall (green on search map), mountain/building (pink on search map), or off-area (black on search map), are affected by the explosion. Note that triggers never trigger through these search map surface types. Bit13: Check triggers from animation frame 30 Requires bit0 to be set. The trigger will only be checked when the projectile animation is at frame 30 or above. Bit14: Wait for period before trigger check If not set, the trigger is checked in the first frame, then the trigger check period is elapsed before checking again. If set, the first frame check does not take place. The trigger check period is specified in 0x210. Bit15: Affect only one target Only affects the first valid target 0x206 Explosion radius I guess "Area of effect" is an OK label to use. 0x208 Explosion sound "Trigger sound" is just as good I suppose. 0x210 Trigger check period Length of delay (in ticks) until trigger is checked for objects within the trigger radius. 0x212 Explosion chunks animation 0x214 Explosion projectile animation See area flags for more info. 0x216 Trigger count Not really "duration". This is the number of times the trap can be triggered before purging. I guess for a projectile with no trigger, it will explode (trigger count) times before purging. You could call it explosion count... 0x217 Explosion animation From FIREBALL.IDS. Note that the explosion animation will only be played once. The CProjectileArea struct nExplosionAnimId is set to -1 after use. Therefore, whichever trigger causes the explosion the first time (during delay, on trigger check, etc.), every subsequent trigger will no longer play the explosion. 0x218 Explosion colour This colour is used for all values for the explosion animation colour range palette (i.e. major, minor, skin, leather, etc.). 0x219 Unused padding 0x21a Explosion victim projectile For every object caught in the explosion, this projectile is created on them. It also carries the effects that will be applied onto the object. Think chain lightning. 0x21c Explosion visual effect animation See area flags for more info. 0x224 Cone shape angle Takes values from 1-359, not "0x0 to 0xFF" as described. 0x226 Unused Not unmarshalled. ARE V1.0 Projectile traps 0x10 Ticks until next trigger check 0x12 Triggers remaining (or "explosion count") 0x1a Enemy-ally targetting 0x1b Party member index that created this projectile (0-5) Link to comment
Ascension64 Posted June 20, 2010 Author Share Posted June 20, 2010 Things about triggers Triggers found in SVTRIOBJ.IDS have their identifiers saved in LastTrigger so are compatible with the Trigger trigger GAM V1.1 NPC struct 0x002C 96 bytes An array of 24 DWORDs, each DWORD corresponds to NPC.IDS entry, used by NumTimesInteractedWith() trigger Things about actions -Probably already know, but Continue() must be at the end of an action list -Actions listed in NoDecode.ids do not decode any object.ids identifiers when loading a new action in the queue, despite the IESDP saying the file has no effect. Is it really the case though, since AttackReevaluate can resolve the object.ids identifiers according to existing scripts -Actions listed in ActSleep.ids should work on sleeping/dead creatures -Probably already know, actions listed in Instant.ids execute immediately in the same script round PRO V1.0 0x20 WAVC file -This is actually the ResRef to a Visual Effect file (VEF, VVC, or BAM). There is code for loading the visual effect, but I haven\'t worked out how exactly it is used. Link to comment
devSin Posted June 20, 2010 Share Posted June 20, 2010 PRO V1.00x100 Flags Bit8: Very similar to setting seqbit9 in VVC sequence flags (no3d only) You only show seqbits 0-8 being used? You mean display bit 9? GAM V1.1 NPC struct0x002C 96 bytes An array of 24 DWORDs, each DWORD corresponds to NPC.IDS entry, used by NumTimesInteractedWith() trigger These were found earlier, but I don't think they've ever actually been stored (the array is there in all IE games, but none have ever actually stored the Interact() count)? (We ignore it in NI because I don't want to have all the useful stuff moved further down the list with 24 rows of useless.) Are you sure all the SvTriObj are stored? I know I've always assumed the relationship with LastTrigger, but I'm pretty sure I had looked once upon a time and found that some of the stuff in the file (See(), etc.) won't be saved as LastTrigger. Link to comment
Guest Guest Posted June 20, 2010 Share Posted June 20, 2010 Things about actions-Probably already know, but Continue() must be at the end of an action list -Actions listed in NoDecode.ids do not decode any object.ids identifiers when loading a new action in the queue, despite the IESDP saying the file has no effect. Is it really the case though, since AttackReevaluate can resolve the object.ids identifiers according to existing scripts -Actions listed in ActSleep.ids should work on sleeping/dead creatures -Probably already know, actions listed in Instant.ids execute immediately in the same script round Any more specifics? What if Continue() isn't at the end? Not decoding identifiers means you just don't get an object, or you get different behaviour when an action blocks? Actions not listed there are just ignored, or the whole queue is dropped? Instant actions are executed when added to the queue, or encountered in the queue, or encountered in the queue before a non-instant action? New insights on those always interesting. Link to comment
Ascension64 Posted June 21, 2010 Author Share Posted June 21, 2010 Bit8: Very similar to setting seqbit9 in VVC sequence flags (no3d only)You only show seqbits 0-8 being used? You mean display bit 9? Oh, I mean seqbit7, so Mid Level Brighten. Since I am not at home, will get back to you about your other queries. I haven't gotten a complete chronological picture of how the triggers/actions work yet, since I am yet to fully look at the AIUpdate() function. The annoying thing is how many superfluous CGameCreature members get played around with compared to its parent CGameSprite - makes understanding the code fully very difficult. Link to comment
Avenger Posted June 21, 2010 Share Posted June 21, 2010 Have you looked into the rest of the area projectile flags? There are quite some that got only a tentative description (or nothing at all). Most of them do something, though. And again, a big thanks for the info, especially on the area projectile fields. Link to comment
Ascension64 Posted June 22, 2010 Author Share Posted June 22, 2010 Updated the first post for a more complete PRO V1.0 revision. There are three bits I am still confused about. The whole thing probably needs testing as well. Link to comment
Ascension64 Posted June 25, 2010 Author Share Posted June 25, 2010 Re-updated PRO V1.0 clarification in first post. Now tested as well. Link to comment
Avenger Posted June 26, 2010 Share Posted June 26, 2010 Bit 11 of area flags is missing, it enables the cone shape. Link to comment
Ascension64 Posted June 26, 2010 Author Share Posted June 26, 2010 Bit 11 of area flags is missing, it enables the cone shape. Yep, I didn't mention anything in the structured that looked correct already on IESDP. Link to comment
igi Posted September 26, 2010 Share Posted September 26, 2010 Added to local copy, thanks. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.