Post reply

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.
Name:
Email:
Subject:
Message icon:

Verification:
Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:
What color is grass?:
What is the seventh word in this sentence?:
What is five minus two (use the full word)?:

shortcuts: hit alt+s to submit/post or alt+p to preview


Topic Summary

Posted by: Ghreyfain
« on: April 19, 2004, 06:55:50 PM »

This was a thread on how I found out how kit.ids works.  Included are further replies by myself and Idobek.

Okay, after much grief, I found out that even the fixed KIT.IDS I got from the NI site doesn't work (either that or I mistook some other kit.ids I found lying around with one I'd downloaded from the NI site).

Anyways, that's not important.  What is important is that I have a Kit.IDS that works, and a method in which you can tell if a character is a barbarian or a wild mage.

First off, here's my kit.ids
IDS
0x40000000 BARBARIAN
0x80000000 WILDMAGE
0x0040 MAGESCHOOL_ABJURER
0x0080 MAGESCHOOL_CONJURER
0x0100 MAGESCHOOL_DIVINER
0x0200 MAGESCHOOL_ENCHANTER
0x0400 MAGESCHOOL_ILLUSIONIST
0x0800 MAGESCHOOL_INVOKER
0x1000 MAGESCHOOL_NECROMANCER
0x2000 MAGESCHOOL_TRANSMUTER
0x4000 TRUECLASS
0x4000 MAGESCHOOL_GENERALIST
0x4001 BERSERKER
0x4002 WIZARDSLAYER
0x4003 KENSAI
0x4004 CAVALIER
0x4005 INQUISITOR
0x4006 UNDEADHUNTER
0x4007 FERALAN
0x4008 STALKER
0x4009 BEASTMASTER
0x400A ASSASIN
0x400B BOUNTYHUNTER
0x400C SWASHBUCKLER
0x400D BLADE
0x400E JESTER
0x400F SKALD
0x4013 GODTALOS
0x4014 GODHELM
0x4015 GODLATHANDER
0x4010 TOTEMIC
0x4011 SHAPESHIFTER
0x4012 BEASTFRIEND
0x4026 PitFighter  // This is a custom kit

Okay, so if you have a .chr with the Assassin kit, and you scroll down to the kit field then switch it to be viewable as a hex number, you'll see it as 0x00000A40.  You'll also notice that in kitlist.2da, ASSASIN is marked # 10 (which is A in hex).  Here is its complete entry in kitlist.2da:
10  ASSASIN        25189 25160 25213 CLABTH02  38          0x00040000   4
I know that PitFighter uses 0x4026, because in kitlist.2da its entry is:
38  PitFighter 88814 88815 88816 J#PITFIT 59 0x40000000    2


A Barbarian would have the kit field in his .chr file filled with 0x00400000.  So, theoretically, if you had 0x40000000 as the kit value, the Kit() trigger would work for it.  Unfortunately, it seems the engine only reads those last four bytes, instead of the full 8.  This means to return true for a Barbarian, you'd use 0x0000 as the trigger, and assassin would be 0x400A, rather than 0x0000400A in the .ids.

So basically you've got a bunch of kits (barbarian, wild mage, all other specialty mages) that are 0x0000 in the Kit() trigger.  Hard to tell 'em apart, but at least if you add a Class([whoever],FIGHTER) trigger in addition to Kit([whoever],0x0000) you can know that it's a barbarian.

Using the Kit() trigger for custom kits is also possible, but trickier due to the chance that they won't be in the same spot in someone else's kitlist.2da as they are in the developers, but that's a lesson for another day.

So to sum up:

Kit(Player1,0)
Class(Player1,FIGHTER)  // These two triggers will return true if the character is a barbarian.

Kit(Player1,0)
Class(Player1,MAGE)  // These two triggers will return true if the character is a wild mage.

Kit(Player1,0) // Could return true if the character is a wild mage or a barbarian

Kit(Player1,0x4000) // This is for kitless characters, mages included

Kit(Player1,0x40__) // This is for kits, with __ being their value in kitlist.2da (the leftmost column) converted to hex. 

 
 
 
Ghreyfain
--------------------------------------------------------------------------------
Hm, after two seconds of investigation, the Kit() trigger should work for specialty mages, too.  Just remove the last four zeroes from their entries in kit.ids and it works, since in their .cre file it follows the same pattern as kits.

Necromancers, for instance, are 0x00000010 (or 0x00001000 in kit.ids) 

 
 
 
Idobek
--------------------------------------------------------------------------------
Thanks for posting the fixed kit.ids. FYI AddKit() & AddSuperKit() work correctly with this kit.ids.