Jump to content


Photo

So the Infinity Animation update..


  • Please log in to reply
190 replies to this topic

#121 skellytz

skellytz
  • Staff
  • 550 posts

Posted 18 May 2022 - 06:19 AM

How does this open up new animation slots?

I'll explain everything today when I get back from work. Animations 101 :)

 

We can come up with new scheme without shifting/swapping/patching modder's reserved name, e.g. all non-WQ anims always will start with s@az. Problem is @pzs1inv.bam, it already has 8 chars, but we can reduce suffix inv to in :)

Yes, this would be awesome!

 

Currently no easy way to insert custom animation to dynamic slot id, but it is possible in weidu code

We already have such code for BGEE, and we'll simply tweak it a bit to add classic IA anim ranges. No problem. Now that we can externalize all hardcoded animation prefixes and each offset = new animation, this also means saying goodbye to the good old IA Reference Picker.



#122 Andrea C.

Andrea C.
  • Modder
  • 462 posts

Posted 18 May 2022 - 08:52 AM

Im gonna need a crash course in that dynamic slot code for the Nostalgia Pack (though BG1 sprites are peculiar in that they can only occupy a limited range of slots.)

#123 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 18 May 2022 - 01:22 PM

1) Now i understand how 0x5xxx paperdoll vanilla prefix generation works

BODY:
1) Prefix = PrefixPaperDoll + ArmorCode
2) Prefix[4] = ArmorSpecificSuffix

    Thief: ArmorCode=1 ArmorSpecificSuffix=T
    1) CEFB + 1 = CEFB1
    2) CEFB1 -> CEFT1
    CEFT1inv.bam

WEAPON:
1) Prefix = HeightCode + WeaponPrefix
2) Prefix[2] = P

    Thief with bow: HeightCode=WQM WeaponPrefix=BW
    1) WQM + BW = WQMBW
    2) WQMBW -> WPMBW
    WPMBWinv.bam

HELMET:
1) Prefix = HeightCode + HelmPrefix
2) Prefix[2] = P

    Warrior: HeightCode=WQS HelmPrefix=H0
    1) WQS + H0 = WQSH0
    2) WQSH0 -> WPSH0
    WPSH0inv.bam

   
SHIELD:
1) Prefix = HeightCode + ShieldPrefix
2) Prefix[2] = P

    Warrior: HeightCode=WQS ShieldPrefix=D2
    1) WQS + D2 = WQSD2
    2) WQSD2 -> WPSD2
    WPSD2inv.bam

 

To keep modder prefix untouched for BODY TobEx can change :

1) Prefix = PrefixPaperDoll + ArmorCode
2) Prefix[4] = ArmorSpecificSuffix

    Thief: ArmorCode=Z ArmorSpecificSuffix=T
    1) ABCD + Z = ABCDZ (5 chars)
    2) ABCDZ -> ABCTZ
    ABCTZinv.bam

 
To 4-char prefix:

1) Prefix = PrefixPaperDoll + ArmorSpecificSuffix + ArmorCode
2) inv. -> in.

    Modded Thief: ArmorCode=Z ArmorSpecificSuffix=T
    1) ABCD + T + Z = ABCDTZ (6 chars)
    2) ABCDTZin.bam

   
Or to 3-char prefix:

1) Prefix = PrefixPaperDoll[1-3] + ArmorSpecificSuffix + ArmorCode

    Modded Thief: ArmorCode=Z ArmorSpecificSuffix=T
    1) ABC + T + Z = ABCTZ (5 chars)
    ABCTZinv.bam

   
2) I found another place where 0x5xxx main prefix patched - EQUIPPING/UNEQUIPPING ARMOR
Prefix[4] = ArmorSuffix(armor before max) or ArmorSpecificSuffix(max available armor) 

Warrior unequip armor or equip leather: Prefix=CDMF ArmorSuffix=B ArmorSpecificSuffix=F
    1) CDMF -> CDMB
    
    Warrior with full plate: Prefix=CDMB ArmorSuffix=B ArmorSpecificSuffix=F
    1) CDMB -> CDMF
    
    Thief unequip armor: Prefix=CEFT ArmorSuffix=B ArmorSpecificSuffix=T
    1) CEFT -> CEFB
    
    Thief with leather: Prefix=CEFB ArmorSuffix=B ArmorSpecificSuffix=T
    1) CEFB -> CEFT

Is it "flipper" between Base(B) and class-specific(T-Thief,F-Fighter,...) animation ?


Edited by Insomniator, 18 May 2022 - 01:33 PM.


#124 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 18 May 2022 - 02:13 PM

Currently no easy way to insert custom animation to dynamic slot id, but it is possible in weidu code

We already have such code for BGEE, and we'll simply tweak it a bit to add classic IA anim ranges. No problem. Now that we can externalize all hardcoded animation prefixes and each offset = new animation, this also means saying goodbye to the good old IA Reference Picker.

I haven't seen this code, on BG2 we cannot set custom animation type to new added animation
May be better to keep tracking last used slot in separate .2da per each anim type/subtype ?

AnimType                                        Slot                                                                     Mask
MonsterQuadrant                        0x1001(or 4097 if hex not possible)                   1xxx
MonsterQuadrantExtendDir        0x1101                                                                11xx
MonsterMulti                               0x1210                                                               12x0 
MonsterMultiUseBitmap              0x1213                                                               12x3
...

or name types as IA's "LARGE  5 Lo  BGI MONSTER LONG 4 PART unpaletted", "NORMAL 3 Xo  BGI SIMPLE MONSTER paletted", ...
 
Mask is just for help, no need in real 2DA


Edited by Insomniator, 18 May 2022 - 02:31 PM.


#125 skellytz

skellytz
  • Staff
  • 550 posts

Posted 18 May 2022 - 04:59 PM

12xx(MonsterMulti) animation code forget to save AnimID to proper field, e.g. animid for dragons was random, i fixed it.

Ok, dragons' resref override seems to work now.
 

Im gonna need a crash course in that dynamic slot code for the Nostalgia Pack (though BG1 sprites are peculiar in that they can only occupy a limited range of slots.)

Sure, there will be a full guide on how to add animations using the new approach once we've discussed everything, implemented all the new features and, of course, Gwendolyne approved all the suggestions.
 

To keep modder prefix untouched for BODY TobEx can change to 4-char prefix or to 3-char prefix

Personally, I'd go for the 4-char prefix and inv -> in, because it gives you a bigger number of unique ASCII char combinations.
 

Is it "flipper" between Base(B) and class-specific(T-Thief,F-Fighter,...) animation ?

Yeah. Only the fighter and cleric animations have different specific armor than base:
 
Warrior (fighter and cleric animations) base = B
Fighter animation specific armor = F
Cleric animation specific armor = C
 
Mage animation base = W
Mage animation specific armor = W
 
Thief animation base = T (but in vanilla BG2 armor level 1 is coded as warrior base and proper BAMs are missing; this was fixed by Erephine in 1pp)
Thief animation specific armor = T
 

on BG2 we cannot set custom animation type to new added animation

Yep, animation types are still hardcoded to animation offset ranges. Both in BGEE and the classic BG2+IA. BGEE is confusing, because there is the "animation_type" key under [general] in INI files, but it cannot be overridden at all. Modders adding new animations need to look at the animation offset reference chart to know which animation type corresponds to which offset range. Then we can use something similar to argent77's functions FIND_FREE_ANIM_SLOT and TO_HEX_NUMBER. And all that's left is specifying the offset range and appending new anims to IDS and 2DA files. Later I'll write up a full WeiDU code example for the classics; of course it will be an IA-classic-friendly version of something similar to the ones Gwendolyne uses for BGEE (you'll find examples in the EE compatibility thread in the IA workroom, which you've been invited to).
 

How does this open up new animation slots? If I read the IA docs right, it's not the filename but the hexa slot IDs which cause the bottleneck. I don't see how softcoding filenames - on which don't get me right, is always cool - helps on hexa ID allocation.

I realize all this may be very confusing and the available documentation doesn't help that much to understand the underlying limitations.

So, basically, there are a lot of animation slots (or "offsets") added by IA which share the same hardcoded prefixes (or "resrefs"). This is because there are more offsets than unique characters within the character encoding and the pattern Erephine originally chose (she intended animations of the same type to be easily identified by the same first character of the prefix). Only some of those shared-prefix animations can coexist in-game, and that's only when the filenaming patterns are different (so that these different BAM sets with shared prefixes can be present in the override folder without overwriting each other). If somebody claims an offset with a shared prefix, in many cases this automatically disables another offset with the same prefix. So, what actually happens is two or more offsets get locked out instead of only one. The exact limitations depend on animation types, footcircle sizes, whether paperdoll is needed or not, paletted or unpaletted, etc. In any case, this drastically cuts down the number of available slots.
 
The animation filenaming is based on the prefixes; that's how the engine chooses eg which BAMs to draw for creatures. When you build a creature file and choose its animation you can only select the animation offset itself, but you can't select the BAM set separately. The engine uses the hardcoded prefix lookup table to pick the right BAM set linked to the offset.
 
For example, animation offset 0x683d (BG2 character type) is hardcoded to ˘A˘A prefix. All your BAM filenames will have to start with that prefix. But animation offset 0x6d3d (BG1 character type) is also hardcoded to ˘A˘A prefix. The filenames for this offset will also need to start with that prefix. These animation types follow conflicting filenaming patters, so only one of the BAM sets can be present in the override folder. Claiming one of these slots will also disable the other.
 
Ever wondered what these  " ----- " represent in IA_list files? These are the offsets locked out because of the shared-prefix limitations. Now compare these two lists of offsets that have already been claimed:
Attached File  IA_list_locked.txt   68.9K   46 downloads
Attached File  IA_list_unlocked.txt   35.69K   43 downloads
 
Assuming we override the hardcoded prefixes with unique ones for new animation slots using TobExAL, we've just freed up half of the previously claimed slots. Naturally, this also doubles the total number of yet unclaimed slots available in the offset pool. TobExAL now also allows you to override the footcricle size, paperdoll prefix and other useful animation data.
 
Of course the IA_list files are for the old IA version (v5), which needs the IA Reference Picker (a GUI AutoHotKey script) to claim slots without conflicts, so they have very little to do with the new approach using externalized animation data with TobExAL. I've only uploaded the new list for reference just in case anybody crazy enough tried to add new animations before v6 gets released.
 

I can imagine this is because I don't see what is your new proposal with the restored BG1 paletted monster variants (I've diffed the list you proposed where you moved them from unpaletted slots to paletted, so I seen those changes).

I didn't move them from unpaletted to paletted slot types; I removed the BG1 _FIXED anims altogether. They were originally added to the IA slots as a workaround for yet another engine-related issue (2DA soundset codes) solved by TobExAL.


Edited by skellytz, 18 May 2022 - 05:39 PM.


#126 Graion Dilach

Graion Dilach
  • Modder
  • 103 posts

Posted 18 May 2022 - 08:43 PM

Thank you... yeah, not realizing the complementer filename problem led me to interpret it wrong when you removed the complementer paletted slot counterparts as well from the reference list and this also makes it more understandable why it was important that the INI of the EEs have already did these softcoding.



#127 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 19 May 2022 - 11:48 AM

Hi All,

I added 60xx(BG2 Chars)/640x(BG2 Legacy Chars)/641x(BG1 Chars) experimental external animation prefix support to TobEx AL (tested a little on vanilla BG2 with and without IA )
1) 640x - works as other animations, no special care

2) 60xx - changed prefix calculation requires EXTANI60.2DA
Main Prefix      = 2DA_Prefix
Anim Prefix      = Main Prefix + ArmorLevel
Body Paperdoll Prefix = 2DA_PaperdollPrefix(or 2DA_Prefix) + ArmorLevel + "INV"

Support  standart WQ* and custom objects prefixes.


non-WQ* objects:
Weapon main hand Paperdoll Prefix = HeightCode + 'P' + WeaponPrefix + "IN"
Weapon off hand Paperdoll Prefix = HeightCodeShield/HeightCode + 'P' + WeaponPrefix + "O" + "I"
Shield Paperdoll Prefix = HeightCodeShield/HeightCode + 'P' + ShieldPrefix+ "IN"
Helmet Paperdoll Prefix = HeightCodeHelmet + 'P' + HelmetPrefix+ "IN"
 
HeightCode (3 chars)     - stored in EXTANI60.2DA per each animID
HeightCodeHelmet  (3 chars) ...
HeightCodeShield  (3 chars)  ...

Main Prefix never changed, e.g. when char with any class changes armor, ignores ArmorSuffix and ArmorSpecificSuffix
 
3) 641x  - changed prefix calculation, requires EXTANI64.2DA

same as 60xx, support  standart WP* and custom objects prefixes.

 


EXTANI60.2DA:
        armor_max_code  equip_helmet    split_bams  false_color height_code height_code_helmet  height_code_shield
0x6303  *               *               *           *           MTW         MTW                 MTS
0x6103  *               *               *           *           *           *                   *
0x6600  2               0               1           1           MTW         MTW                 MTS

armor_max_code      (IESDP description)
equip_helmet        (IESDP description)
split_bams          (IESDP description, vanilla BG2 Chars have 1)
false_color         (IESDP description, IA BG2 paletted/unpaletted ?, vanilla BG2 Chars have 1)
height_code         (IESDP description, weapon 3-char prefix)
height_code_helmet  (IESDP description, helmet 3-char prefix)
height_code_shield  (IESDP description, shield 3-char prefix)

special values:
*               - skip field
height_code*    - if equal WQS/WQL/WQM/WQN
                  1) set object prefix (usefull for IA BG2 random slots)
                  2) skip new paperdoll prefix calculation (+"P"+)
                  

EXTANI64.2DA:
        armor_max_code  equip_helmet    false_color height_code height_code_helmet  shadow
0x6446  *               *               *           BGT         BGH                 B1SH
0x6426  *               *               *           BGF         BGE                 B1SH
0x6b00  2               0               1           WPS         WPT                 B1SH

armor_max_code      (IESDP description)
equip_helmet        (IESDP description)
false_color         (IESDP description, IA BG1 paletted/unpaletted ?)
height_code         (IESDP description, weapon/shield 3-char prefix)
height_code_helmet  (IESDP description, helmet 3-char prefix)
shadow              (IESDP description)

special values:
*               - skip field
height_code*    - if equal WPS/WPL/WPM
                  1) set object prefix (usefull for IA BG1 random slots)
                  2) skip new paperdoll prefix calculation (+"P"+)

 


Examples

Spoiler


Edited by Insomniator, 21 May 2022 - 07:33 AM.


#128 skellytz

skellytz
  • Staff
  • 550 posts

Posted 19 May 2022 - 07:02 PM

1) What is CLERIC_MALE_HUMAN_LOW and other *_LOW anim slots in 5000-5400 range?

Erephine's notes:

Infinity Animations removes _LOW character animations from the .IDS files (and the game) to free up number space. These were stripped down variants of full character slots in Baldur's Gate I (it was an option to save memory) but completely redundant in Baldur's Gate II (where they directly linked to the normal character animations).

 

2) You mentioned "BG2 WQ-supported character animation", "BG2 non-WQ character animation", "WP-supported (BG1) animations"
Does all animation exist in vanilla BG2 or only in IA ?
Can you tell example of exact animID of each types in vanilla BG2 if it exist?

BG2 WQ characters 6000-6315 (+ 6500, 6510)
 
64xx is technically for BG1 characters, but 6400-6406 are NPC special animations; WP object and paperdoll code is different than PC animation slots added by IA
 
So, only BG2 WQ characters are similar (but not the same) in vanilla BG2. The other types aren't available as vanilla animations: BG2 non-WQ, BG1 WP, BG1 non-WP.
 
Erephine's notes:

CHARACTER BGII
9 Directions mirrored
A1 A2 A3 A4 A5 A6 A7 A8 A9 SA SS SX // 9 Seq.
CA // 72 Seq.
G1 (not split) // 99 Seq.
+ Armour Levels (4)
+ Arbitrary (originally WQ) Object anim.

Where CBGT is the animation identifier...
[CBGT][1]A1 (id + armour level 1-4)
[CBGT][1]INV
 
Objects for non-WQ slots:
[BGT][S1]A1 (3 last letters of id + object id)
[BPT][S1]INV (second character is forced to P!!)
 
Objects for WQ S/M/N/L slots:
[WQ][S/M/N/L][S1]A1 (WQ + size + object id + sequence)
[WP][S/M/N/L][S1]INV (WP + size + object id + inv)
 
This animation type differs from the one used for the original game files in that I've decided not to split the G animation series. It's exactly the same content, just kept in one file (see BGII SPLIT/BGII UNSPLIT). Essentially, if you'd like a duplicate or edit of a current character animation, you will have to join the G1 G11 G12... files into a single G1 file. This is done mainly to save override clutter (and makes it easier to create content to boot).
 
CHARACTER BGI
8 Directions unmirrored (5 + 3E)
A1 A1E A2 A2E A3 A3E A4 A4E A5 A5E A6 A6E SA SAE SX SXE // 8 Seq. (A1 has 16)
CA CAE // 62/64 Seq.
G1 G1E // 72 Seq.
W2 W2E // 8 Seq.
+ Armour Levels (4)
+ Arbitrary (originally WP) Object anim.
+ CSHD

Where CBGI is the animation identifier...
[CBGI][1]A1 (id + armour level 1-4)
[CBGI][1]INV

Objects for non-WP slots:
[BGI][S1]A1 (3 last letters of id + object id)
[BGI][S1]INV
 
Objects for WP S/M/L slots:
[WP][S/M/L][S1]A1 (WP + size + object id + sequence)
[WP][S/M/L][S1]INV (WP + size + object id + inv)

Keep in mind all BGI character animations display the CSHD shadow animation.
 
Note that differing from other animation types equipping non-existent objects CRASHES for characters.

 

List of character animation slots added by IA:

Attached File  IA_char_slots.txt   214.53K   53 downloads

 

The above list doesn't include BG1 WP slots added by IA for restoring the original BG1 character animations. (L is simply the IA internal symbol for BG1, not large or low)

Spoiler



#129 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 20 May 2022 - 11:33 AM

Hi skellytz

The above list doesn't include BG1 WP slots added by IA for restoring the original BG1 character animations. (L is simply the IA internal symbol for BG1, not large or low)
 
0x6410 L_CLERIC_MALE_HUMAN
0x6411 L_CLERIC_FEMALE_HUMAN
0x6412 L_CLERIC_MALE_ELF

If IA allows to add custom BG2/BG1 char animation, how animid is increased for example for new BG1 CLERIC_MALE_HUMAN? Just first available slot after 0x6447 ?
I run IA AnimPicker, selected palletted BG1 Char, it answer with 0x6B00
 
I ask because i made few fixes for BG1 Mage animation because original BG2 Mage animid = 6200-6215, class mask = x2xx, IA added BG1 mages to 6430-6435, class mask = x4xx
Due mismatch class mask, some parts (Andrea C. discovered 2 places) of vanilla BG2 engine still check mask to detect Mage, then fail to default (often to Figher)


Edited by Insomniator, 20 May 2022 - 11:36 AM.


#130 Andrea C.

Andrea C.
  • Modder
  • 462 posts

Posted 20 May 2022 - 11:49 AM

^ for similar reasons, I reckon, slots in which BG1 sprites can go may only be assigned semi-randomly at best as not all slots are a good fit for them (and sex / race / armor codes are relevant to displaying the correct sprite at character creation and after dual-classing.)

#131 skellytz

skellytz
  • Staff
  • 550 posts

Posted 20 May 2022 - 12:59 PM

If IA allows to add custom BG2/BG1 char animation, how animid is increased for example for new BG1 CLERIC_MALE_HUMAN? Just first available slot after 0x6447 ?

The custom character animation slots added by IA are supposed to be independent without any intentional masking. They weren't designed with the new game PC character creation in mind. Modders are expected to patch these new animations into premade CRE files, save files or exported CHR files. As Andrea said, there might be some unintentional vanilla leftover code simply because it's the 6xxx range.


Edited by skellytz, 20 May 2022 - 10:00 PM.


#132 skellytz

skellytz
  • Staff
  • 550 posts

Posted 20 May 2022 - 06:34 PM

I ask because i made few fixes for BG1 Mage animation because original BG2 Mage animid = 6200-6215, class mask = x2xx, IA added BG1 mages to 6430-6435, class mask = x4xx

Due mismatch class mask, some parts (Andrea C. discovered 2 places) of vanilla BG2 engine still check mask to detect Mage, then fail to default (often to Figher)

I've just tested this. Unfortunately, all character animation slots added by IA have the exact same problem with the mage robe armor levels.

 

How animid is increased for example for new BG1 CLERIC_MALE_HUMAN? Just first available slot after 0x6447? I run IA AnimPicker, selected palletted BG1 Char, it answer with 0x6B00

0x6410 - 0x6447 range is reserved by IA only for the restored original BG1 anims and isn't shown in the Reference Picker. The new custom BG1-style animation slots for modders start at 0x6B00. Look at the attached list.
 

List of character animation slots added by IA:

Attached File  IA_char_slots.txt   214.53K   52 downloads

Edited by skellytz, 20 May 2022 - 06:50 PM.


#133 Andrea C.

Andrea C.
  • Modder
  • 462 posts

Posted 21 May 2022 - 04:40 AM

WRT the Enhanced Editions, the Nostalgia Pack works around the mage robe issue with a hacky workaround that nonetheless works regardless of the slot range in which the sprites are allocated. This gives us a bit more leeway in terms of selecting which slot range will accommodate the sprites. However, there are still a limited range of slots that can be used for BG1 sprites. According to former Beamdog programmer Scott Brooks:

 

So the way it is setup, the 0x5000 series is joined with the 0x6000 series. When it goes to load an animation, it checks to see if it should be considered old or new.  So from the looks of things the following ranges in 0x5000 and 0x6000 should be considered old.
 
        case 0x0600:
        case 0x0700:
        case 0x0800:
        case 0x0900:
        case 0x0A00:
        case 0x0B00:
        case 0x0C00:
        case 0x0D00:
        case 0x0E00:
        case 0x0F00:
 
If you use ranges other then these, then they will be considered new.  So all of 0x50XX through 0x55XX and 0x60XX through 0x65XX will be considered new no matter what you do.


BG1 character sprites must, of course, be allocated to an "old" slot so they must fall within the ranges listed.

 

Presently, the Nostalgia Pack assigns them to range from 0x5600 to 0x5645. Because it is a static range, this can cause compatibility issues with other mods that also want to make use of this range. I am happy to adopt argent's code to check for free slots and dynamically claim them at installation, but the code will have to be made to stick to these ranges for the sprites to work.

 

 

For the classics, Insomniator is much better equipped than I to advise about his solution for the mage robe issue as well as the dual-class sprite issue (the latter remains unresolved in the Enhanced Editions; I'm told a script could take care of it but I can't write scripts so EEKeeper it is for those who want to use the Nostalgia Pack and dual-class.) I believe, however, that his solution requires the slot range to be fixed; assigning new slots dynamically for BG1 sprites would make it impossible for ToBEx AL to handle those two issues.

 

That said, it is my understanding from skellytz's last post that there would be no need to alter the slot range for BG1 sprites specifically in a new iteration of IA—in which case, we wouldn't have a problem then.


Edited by Andrea C., 21 May 2022 - 04:41 AM.


#134 skellytz

skellytz
  • Staff
  • 550 posts

Posted 21 May 2022 - 06:15 AM

Presently, the Nostalgia Pack assigns them to range from 0x5600 to 0x5645. Because it is a static range, this can cause compatibility issues with other mods that also want to make use of this range. I am happy to adopt argent's code to check for free slots and dynamically claim them at installation, but the code will have to be made to stick to these ranges for the sprites to work.

No problem. We'll be using argent77's functions and Gwendolyne's EE slot type array, which already takes that into account.
 

 I believe, however, that his solution requires the slot range to be fixed; assigning new slots dynamically for BG1 sprites would make it impossible for ToBEx AL to handle those two issues. That said, it is my understanding from skellytz's last post that there would be no need to alter the slot range for BG1 sprites specifically in a new iteration of IA—in which case, we wouldn't have a problem then.

For the classics, the original BG1 character animations will be added statically to the reserved range 0x6410 - 0x6447. That range will be excluded from dynamic slot allocation arrays.
 

The problem is that all other new character slots (both BG1 and BG2) added by IA unintentionally still use the vanilla x2xx mage detection:

6600 - 6aff CHARACTER BGII

6b00 - 6fff  CHARACTER BGI

 

The mage detection code:

- could be kept isolated for the vanilla BG2 character animations, where it maybe makes sense (0x6000 - 0x6315 + 0x6500, 0x6510)

- should be fixed for the reserved BG1 original animations, as you've already done, Insomniator (0x6410 - 0x6447)

- should be disabled for everything else in the character type range, because these are unrelated individual custom animations that should always use their own BAM set levels 1-4, no matter if it's armor or robe item the creature is wearing (0x6600 - 0x6fff)

 

When it comes to the vanilla BG2 character animations, it's a matter of preference. For many players, it doesn't make sense for fighters, clerics and thieves not to be able to look like mages in robes. For other players, it simply looks better when these classes keep their base armor level 1 look when wearing robes. Thankfully, we have 1PP Smart Avatar & Armor Switching for that.


Edited by skellytz, 21 May 2022 - 06:40 AM.


#135 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 21 May 2022 - 07:39 AM

Hi skellytz

 

i updated post #177 http://www.shsforums...e-7#entry612526

What do you think ?



#136 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 21 May 2022 - 07:50 AM

The mage detection code:
- could be kept isolated for the vanilla BG2 character animations, where it maybe makes sense (0x6000 - 0x6315 + 0x6500, 0x6510)
- should be fixed for the reserved BG1 original animations, as you've already done, Insomniator (0x6410 - 0x6447)
- should be disabled for everything else in the character type range, because these are unrelated individual custom animations that should always use their own BAM set levels 1-4, no matter if it's armor or robe item the creature is wearing (0x6600 - 0x6fff)

I think better to ignore AnimID and check Creature's class if creature context available

But polymorph may mess up....


Edited by Insomniator, 21 May 2022 - 08:07 AM.


#137 skellytz

skellytz
  • Staff
  • 550 posts

Posted 21 May 2022 - 08:03 AM

i updated post #177 http://www.shsforums...e-7#entry612526

What do you think ?

Wow. Alright then, please upload a test version and I'll go through everything while I still have time today.

 

I think better to ignore AnimID and check Creature's class if creature context available

Not a bad idea if you're really willing to inject this kind of an override.

 

But polymorph may mess up....

And probably other issues as well, so it would be difficult to rely on CRE data.
 

Maybe add MAGE (0/1) to EXTANI60/64?


Edited by skellytz, 21 May 2022 - 08:18 AM.


#138 Insomniator

Insomniator
  • Modder
  • 358 posts

Posted 21 May 2022 - 08:14 AM


i updated post #177 http://www.shsforums...e-7#entry612526
What do you think ?

Wow. Alright then, please upload a test version and I'll go through everything while I still have time today.

https://anonfiles.co...x_resref_v4_zip
extanim.2da columns reshuffled, be careful

 

I think better to ignore AnimID and check Creature's class if creature context available

Not a bad idea if you're really willing to inject this kind of an override.
Or add MAGE (0/1) to EXTANI60/64.

Good idea, "anim_class=W/C/F/T"


Edited by Insomniator, 21 May 2022 - 08:17 AM.


#139 skellytz

skellytz
  • Staff
  • 550 posts

Posted 21 May 2022 - 08:25 AM

 "anim_class=W/C/F/T"

Ok, so for reference what exactly would be the difference in armor/robe appearance code for each?



#140 skellytz

skellytz
  • Staff
  • 550 posts

Posted 21 May 2022 - 08:54 AM

false_color         (IESDP description, IA BG2 paletted/unpaletted ?, vanilla BG2 Chars have 1)


false_color         (IESDP description, IA BG1 paletted/unpaletted ?)

Yeah, these are basically paletted (false_color = 1) and unpaletted (false_color = 0). Will it be possible to add false_color to EXTANIM for other animations? That way we won't be restricted to specific subranges for paletted/unpaletted anims anymore.


Edited by skellytz, 21 May 2022 - 08:54 AM.