Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Axis & Allies 1942 Online is now available in Early Access! Buy it on Steam. The FAQ is available.
New Premium Module: Tyrants of the Moonsea! Read More
Attention, new and old users! Please read the new rules of conduct for the forums, and we hope you enjoy your stay!

[MOD] -Scales of Balance- a post-hac tweak mod

1235784

Comments

  • kjeronkjeron Member Posts: 2,063
    If a cre file can only have one or the other, but not effects of both lengths:
    Subtract Effects Offset from Items Offset, divide by # effects. result should be 0x30 or 0x110. Use appropriate values from there.

    If a cre file can both effect lengths:
    You could check the first 8 bytes, if they are all "0", then assume its 0x110 bytes long, otherwise assume its 0x30 bytes long. You would need to store two variables, one to store # of 0x30 effects, and one to store # of 0x110 effects, and use them for location instead of "loop".
    All "0"s in the first 8 bytes of a 0x110 byte long effect are for the Signature and Version fields, which should always be "0", (empty), in a cre file.
    All "0"s in the first 8 bytes of a 0x30 byte long effect would be:
    Opcode 0 (AC bonus)
    Amount: 0
    Type: All Weapons

    Which no creature should ever have, as it would do absolutely nothing.

    extending what you have:
    COPY_EXISTING_REGEXP GLOB ~.*\.cre~ ~override~
    PATCH_IF (SOURCE_SIZE > 0x2c8) BEGIN
    READ_LONG 0x2c4 "effect_offset"
    READ_LONG 0x2c8 "effect_count"
    SET effect0 = 0 effect1 = 0
    FOR (loop = 0 ; loop < effect_count ; ++loop) BEGIN
    READ_LONG (effect_offset + (effect0 * 0x30) + (effect1 * 0x110)) effecttype
    PATCH_IF (effecttype = 0) BEGIN
    READ_LONG (effect_offset + 0x8 + (effect0 * 0x30) + (effect1 * 0x110)) "opcode"
    PATCH_IF opcode = 233 BEGIN
    READ_LONG (effect_offset + 0x10 + (effect0 * 0x30) + (effect1 * 0x110)) prof
    PATCH_IF prof = 99 BEGIN
    WRITE_LONG (effect_offset + 0x10 + (effect0 * 0x30) + (effect1 * 0x110)) 98
    END
    END
    ++effect1
    END
    ELSE BEGIN
    READ_LONG (effect_offset + (effect0 * 0x30) + (effect1 * 0x110)) "opcode"
    PATCH_IF opcode = 233 BEGIN
    READ_LONG (effect_offset + 0x8 + (effect0 * 0x30) + (effect1 * 0x110)) prof
    PATCH_IF prof = 99 BEGIN
    WRITE_LONG (effect_offset + 0x8 + (effect0 * 0x30) + (effect1 * 0x110)) 98
    END
    END
    ++effect0
    END
    END
    END
    BUT_ONLY

    IllustairCrevsDaak
  • RoarRoar Member Posts: 41
    bug found: when using the Monitor of Mystra cleric kit, the 'identify spell' does not work. You can memorize it but cant cast it in your inventory screen to identify an item.

  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Roar said:

    bug found: when using the Monitor of Mystra cleric kit, the 'identify spell' does not work. You can memorize it but cant cast it in your inventory screen to identify an item.

    Hmm. That is problematic. Identifying enchantments would certainly seem to fall under Mystra's purview, so I'd like this to work. But, I have no idea how the identification process works in the inventory screen. Maybe it only looks for the wizard spell?

    I had a similar problem when trying to give the Monitor a priest version of Spell Sequencer: you could cast it, and choose priest spell to load into the sequencer, but you would not get an innate to cast the sequencer. It may be doing something behind the scenes that is mage-only (so it works fine with cleric/mages).

    The unfortunate solution for sequencers was to take the spell away (for now, at least)... I fear that might be the solution for Identify as well...

    Post edited by subtledoctor on
  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    kjeron said:

    extending what you have:

    COPY_EXISTING_REGEXP GLOB ~.*\.cre~ ~override~
    PATCH_IF (SOURCE_SIZE > 0x2c8) BEGIN
    READ_LONG 0x2c4 "effect_offset"
    READ_LONG 0x2c8 "effect_count"
    SET effect0 = 0 effect1 = 0
    FOR (loop = 0 ; loop < effect_count ; ++loop) BEGIN

    yadda yadda yadda
    Jeez, that's pretty impressive that you can toss that kind of code out off the top of your head! I really need to learn this bitwise stuff, I can barely understand what you wrote. I'll go through it more slowly tonight.

    Anyway Camdawg's macro is basically a drop-in patch, and it seems to be working for the proficiency stuff. So we're rolling. Just joinable NPCs to patch, which should be easier because it's not dependent on READing, just WRITEing, as all of the CRE files are already identified and can be patched one-by-one.

    So thanks... be ready next week when I come here crying for help with the item tweaks!

    Illustair
  • RoarRoar Member Posts: 41
    Hmm, trying to fix the identify spell may be for trouble then its worth. I don't think many pple would roleplay this kit for an identify spell anyway. By the way, are you still designing new kits for this mod?

  • subtledoctorsubtledoctor Member Posts: 11,361
    edited October 2014
    Not at this point. Right now, including trueclass, you have a choice between 7 fighter kits, 7 ranger kits, 10 cleric kits, 7 thief kits, and 5 6 bard kits. To me that's good variety compared to vanilla's 5/4/4/5/4.

    Frankly I never intended to make any kits here; this mod was only supposed be the druid shapechanges, the item tweaks, and the proficiency overhaul. These kits are basically me throwing a bone to EE players, who can't install Song & Silence or Divine Remix to get that variety. (And along the way, I realized I prefer my kits to theirs!)

    For now I need to get the proficiencies done, and the item tweaks done, and find a way to get recruitable NPCs to reflect the changes in the mod. (E.g. right now Jaheira misses out of the first druid shapechange, and mages don't have cantrips, and Keldorn has vanilla Inquisitor abilities instead of my revised abilities.)

    I'm going to call that "1.0." Looking beyond that, things are going to slow down. I'll tweak some of what's already here (e.g. differentiating the Called Shot abilities for the various ranged specialists). I might look into adding a couple more race-based kits, to add flavor for gnomes, halflings, and dwarves. And of course there's my easter eggs... but I can't talk about that yet.

    Post edited by subtledoctor on
  • CrevsDaakCrevsDaak Member Posts: 7,136
    Yeah, seems like I confused .eff's length with .cre's effect length. Not even sure why D: (this is what you get for coding late at night) Also I wasn't considering v1 effects, but @kjeron‌ has it right, so using his code would be safe IMO.

  • kjeronkjeron Member Posts: 2,063

    Hmm. That is problematic. Identifying enchantments would certainly seem to fall under Mystra's purview, so I'd like this to work. But, I have no idea how the identification process works in the inventory screen. Maybe it only looks for the wizard spell?

    I had a similar problem when trying to give the Monitor a priest version of Spell Sequencer: you could cast it, and choose priest spell to load into the sequencer, but you would not get an innate to cast the sequencer. It may be doing something behind the scenes that is mage-only (so it works fine with cleric/mages).

    The unfortunate solution for sequencers was to take the spell away (for now, at least)... I fear that might be the solution for Identify as well...

    @subtledoctor
    Good News:
    D5_MYS72.spl
    First, the filename of the spell creating the Sequencer must be 7 characters long, otherwise it will not automatically give you the innates to activate the sequencer.
    D5_MYS7.spl

    Second, you will have to create the innate spells to activate the sequencers, they are not generic, but spell-specific. You'll need two, and the engine will give you whichever one is appropriate automatically, so you don't need to use Opcode 171 "Give Innate Ability", but they will have to remove themselves with opcode 172. Important: the Activate Spell Sequencer Opcodes must target "Self".

    Target: Living Actor
    Activate Spell Sequencer, exact same filename suffixed with a "d", with target: "Self"
    D5_MYS7d.spl

    Target: Any Point in Range
    Activate Spell Sequencer at Point, exact same filename suffixed with a "p", with target: "Self"
    D5_MYS7p.spl

    I would suggest copying the existing files from another sequencer and just changing their filename and resources, everything else about them, except maybe the icon, can be left as is.

    Third, if your using Near Infinity, Opcode 260, Activate Spell Sequencer at Point, currently does not display a .spl file resource menu to select from, you will have to "edit as string" and type it in manually, or change the opcode to something that does display a .spl file resource menu to select from, then switch it back.


    Bad News:
    As for Identify, I couldn't find anything to suggest it isn't hard-coded. I was unable to duplicate the spell, scroll, or the glasses. However, you could always give them a massive Lore bonus and forget the spell.

    GrammarsaladCrevsDaak
  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Okay I need some help, so I'm throwing this out there to the crowd:

    There's a bug in the proficiency component: it successfully installs updates the strings for proficiency choices in the character generation screens, and the strings appear correct in NI. But in-game, it shows "INVALID: 35001"

    I narrowed it down to, of all things, the weapprof.2da edits. I'm attaching a tiny version of this component with just a few items in the .tp2. If anyone has a spare clean install to test on, try installing this with and without the weapprof.2da edits commented out. Can anyone explain this behavior?

    Is it just too many SET_2DA_ENTRY lines for Weidu to handle? Should I use SET_2DA_ENTRY_LATER/SET_2DA_ENTRY_NOW...? (Edit: no, I did that and it doesn't help.) How could this possibly affect the game's ability to display the proficiency strings??

    Here's the code, if it helps:
    //UPDATE PROFICIENCY STRINGS_________________________________________________________
    //
    ACTION_IF GAME_IS ~bgee~ THEN BEGIN
    STRING_SET 24315 ~Proficiency Slot Table:

    1 slot: none

    2 slots: +1 to hit, +1 to damage, -1 to speed.

    3 slots: +2 to hit, +2 to damage, -1 to speed, an extra attack every other round.

    4 slots: +4 to hit, +2 to damage, -1 to speed, one extra attack.
    ~
    STRING_SET 25000 ~Special~
    STRING_SET 25004 ~Greatswords~
    STRING_SET 25005 ~...~
    STRING_SET 25006 ~Scimitar/Katana~
    STRING_SET 25007 ~Daggers/Darts~
    STRING_SET 25010 ~Spears/Halberds~
    STRING_SET 25011 ~...~
    STRING_SET 25016 ~...~
    STRING_SET 25017 ~Bows~
    STRING_SET 25018 ~...~
    STRING_SET 25024 ~ ~
    STRING_SET 25028 ~HEAVY SWORDS: The hallmark of the traditional muscle bound warrior is the greatsword: claymores, bastard swords, and other double-edge blades large enough to be used with two hands. This proficiency class allows you to use these heavy swords to mangle your opponents.
    ~
    STRING_SET 25029 ~ ~
    STRING_SET 25030 ~CURVED SWORDS: This weapon class allows the character to use various single-edged blades, including the Scimitar, the katana, and the Wakazashi.
    ~
    STRING_SET 25031 ~DAGGERS: DAGGER: This weapons class covers daggers, dirks, knives and darts - any small blades used for stabbing or hurling at enemies. While small, daggers are still extremely useful and many warriors carry them in case their larger weapons are stolen or destroyed.
    ~
    STRING_SET 25034 ~POLEARMS: This weapon class includes long spears, pikes, halberds and other polearms. Their long 'reach' makes them very useful against most opponents.
    ~
    STRING_SET 25035 ~ ~
    STRING_SET 25040 ~ ~
    STRING_SET 25041 ~BOWS: This proficiency allows a character to skillfully wield various bows, which are easy to use and have a high rate of fire.
    ~
    STRING_SET 25042 ~ ~
    END
    ACTION_IF ENGINE_IS ~tob bg2ee~ THEN BEGIN
    STRING_SET 9588 ~Proficiency Slot Table:

    1 slot: none

    2 slots: +1 to hit, +1 to damage, -1 to speed.

    3 slots: +2 to hit, +2 to damage, -1 to speed, an extra attack every other round.

    4 slots: +4 to hit, +2 to damage, -1 to speed, one extra attack.
    ~
    STRING_SET 31113 ~Special~
    STRING_SET 31117 ~Greatswords~
    STRING_SET 31118 ~...~
    STRING_SET 31119 ~Scimitar/Katana~
    STRING_SET 31120 ~Daggers/Darts~
    STRING_SET 31122 ~Spears/Halberds~
    STRING_SET 31123 ~...~
    STRING_SET 31128 ~...~
    STRING_SET 31129 ~Bows~
    STRING_SET 31130 ~...~
    STRING_SET 34146 ~ ~
    STRING_SET 34150 ~HEAVY SWORDS: The hallmark of the traditional muscle bound warrior is the greatsword: claymores, bastard swords, and other double-edge blades large enough to be used with two hands. This proficiency class allows you to use these heavy swords to mangle your opponents.
    ~
    STRING_SET 34151 ~ ~
    STRING_SET 34152 ~CURVED SWORDS: This weapon class allows the character to use various single-edged blades, including the Scimitar, the katana, and the Wakazashi.
    ~
    STRING_SET 34153 ~DAGGERS: DAGGER: This weapons class covers daggers, dirks, knives and darts - any small blades used for stabbing or hurling at enemies. While small, daggers are still extremely useful and many warriors carry them in case their larger weapons are stolen or destroyed.
    ~
    STRING_SET 34157 ~POLEARMS: This weapon class includes long spears, pikes, halberds and other polearms. Their long 'reach' makes them very useful against most opponents.
    ~
    STRING_SET 34158 ~ ~
    STRING_SET 34163 ~ ~
    STRING_SET 34164 ~BOWS: This proficiency allows a character to skillfully wield various bows, which are easy to use and have a high rate of fire.
    ~
    STRING_SET 34165 ~ ~
    END
    //__________________________________________________________________________________

    //AMEND WEAPPROF.2DA_______________________________________________________________
    //
    COPY_EXISTING ~WEAPPROF.2da~ ~override~
    REPLACE_TEXTUALLY ~ 2~ ~ 3~
    REPLACE_TEXTUALLY ~ 5~ ~ 4~
    // Fighter
    SET_2DA_ENTRY 13 5 1 ~3~
    SET_2DA_ENTRY 14 5 1 ~3~
    SET_2DA_ENTRY 17 5 1 ~3~
    SET_2DA_ENTRY 18 5 1 ~3~
    SET_2DA_ENTRY 25 5 1 ~3~
    SET_2DA_ENTRY 26 5 1 ~3~
    SET_2DA_ENTRY 28 5 1 ~3~
    SET_2DA_ENTRY 30 5 1 ~3~
    SET_2DA_ENTRY 31 5 1 ~2~
    SET_2DA_ENTRY 32 5 1 ~2~
    SET_2DA_ENTRY 33 5 1 ~2~
    SET_2DA_ENTRY 11 5 1 ~0~
    SET_2DA_ENTRY 16 5 1 ~0~
    SET_2DA_ENTRY 22 5 1 ~0~
    SET_2DA_ENTRY 27 5 1 ~0~
    SET_2DA_ENTRY 29 5 1 ~0~
    SET_2DA_ENTRY 20 5 1 ~3~
    // Cleric
    SET_2DA_ENTRY 7 6 1 ~2~
    SET_2DA_ENTRY 8 6 1 ~2~
    SET_2DA_ENTRY 10 6 1 ~2~
    SET_2DA_ENTRY 19 6 1 ~2~
    SET_2DA_ENTRY 23 6 1 ~2~
    SET_2DA_ENTRY 24 6 1 ~2~
    SET_2DA_ENTRY 25 6 1 ~2~
    SET_2DA_ENTRY 30 6 1 ~2~
    SET_2DA_ENTRY 11 6 1 ~0~
    SET_2DA_ENTRY 16 6 1 ~0~
    SET_2DA_ENTRY 22 6 1 ~0~
    SET_2DA_ENTRY 27 6 1 ~0~
    SET_2DA_ENTRY 29 6 1 ~0~
    SET_2DA_ENTRY 20 6 1 ~2~
    SET_2DA_ENTRY 26 6 1 ~1~
    // Thief
    SET_2DA_ENTRY 4 7 1 ~2~
    SET_2DA_ENTRY 7 7 1 ~2~
    SET_2DA_ENTRY 10 7 1 ~2~
    SET_2DA_ENTRY 12 7 1 ~2~
    SET_2DA_ENTRY 13 7 1 ~2~
    SET_2DA_ENTRY 17 7 1 ~2~
    SET_2DA_ENTRY 18 7 1 ~2~
    SET_2DA_ENTRY 25 7 1 ~2~
    SET_2DA_ENTRY 26 7 1 ~2~
    SET_2DA_ENTRY 28 7 1 ~2~
    SET_2DA_ENTRY 30 7 1 ~2~
    SET_2DA_ENTRY 31 7 1 ~0~
    SET_2DA_ENTRY 32 7 1 ~0~
    SET_2DA_ENTRY 33 7 1 ~2~
    SET_2DA_ENTRY 34 7 1 ~3~
    SET_2DA_ENTRY 11 7 1 ~0~
    SET_2DA_ENTRY 16 7 1 ~0~
    SET_2DA_ENTRY 22 7 1 ~0~
    SET_2DA_ENTRY 27 7 1 ~0~
    SET_2DA_ENTRY 29 7 1 ~0~
    SET_2DA_ENTRY 20 7 1 ~1~
    // Bard
    SET_2DA_ENTRY 3 8 1 ~2~
    SET_2DA_ENTRY 4 8 1 ~2~
    SET_2DA_ENTRY 5 8 1 ~2~
    SET_2DA_ENTRY 6 8 1 ~0~
    SET_2DA_ENTRY 7 8 1 ~2~
    SET_2DA_ENTRY 8 8 1 ~2~
    SET_2DA_ENTRY 9 8 1 ~2~
    SET_2DA_ENTRY 10 8 1 ~2~
    SET_2DA_ENTRY 12 8 1 ~2~
    SET_2DA_ENTRY 13 8 1 ~2~
    SET_2DA_ENTRY 14 8 1 ~2~
    SET_2DA_ENTRY 15 8 1 ~0~
    SET_2DA_ENTRY 17 8 1 ~2~
    SET_2DA_ENTRY 18 8 1 ~2~
    SET_2DA_ENTRY 19 8 1 ~2~
    SET_2DA_ENTRY 21 8 1 ~0~
    SET_2DA_ENTRY 23 8 1 ~2~
    SET_2DA_ENTRY 24 8 1 ~2~
    SET_2DA_ENTRY 25 8 1 ~0~
    SET_2DA_ENTRY 26 8 1 ~2~
    SET_2DA_ENTRY 28 8 1 ~2~
    SET_2DA_ENTRY 30 8 1 ~2~
    SET_2DA_ENTRY 31 8 1 ~1~
    SET_2DA_ENTRY 32 8 1 ~1~
    SET_2DA_ENTRY 33 8 1 ~1~
    SET_2DA_ENTRY 34 8 1 ~1~
    SET_2DA_ENTRY 11 8 1 ~0~
    SET_2DA_ENTRY 16 8 1 ~0~
    SET_2DA_ENTRY 22 8 1 ~0~
    SET_2DA_ENTRY 27 8 1 ~0~
    SET_2DA_ENTRY 29 8 1 ~0~
    SET_2DA_ENTRY 20 8 1 ~1~
    // Paladin
    SET_2DA_ENTRY 31 9 1 ~2~
    SET_2DA_ENTRY 32 9 1 ~2~
    SET_2DA_ENTRY 33 9 1 ~2~
    SET_2DA_ENTRY 34 9 1 ~2~
    SET_2DA_ENTRY 11 9 1 ~0~
    SET_2DA_ENTRY 16 9 1 ~0~
    SET_2DA_ENTRY 22 9 1 ~0~
    SET_2DA_ENTRY 27 9 1 ~0~
    SET_2DA_ENTRY 29 9 1 ~0~
    SET_2DA_ENTRY 20 9 1 ~1~
    // Druid
    SET_2DA_ENTRY 7 10 1 ~2~
    SET_2DA_ENTRY 8 10 1 ~2~
    SET_2DA_ENTRY 10 10 1 ~2~
    SET_2DA_ENTRY 17 10 1 ~2~
    SET_2DA_ENTRY 18 10 1 ~2~
    SET_2DA_ENTRY 20 10 1 ~2~
    SET_2DA_ENTRY 21 10 1 ~2~
    SET_2DA_ENTRY 25 10 1 ~2~
    SET_2DA_ENTRY 30 10 1 ~2~
    SET_2DA_ENTRY 11 10 1 ~0~
    SET_2DA_ENTRY 16 10 1 ~0~
    SET_2DA_ENTRY 22 10 1 ~0~
    SET_2DA_ENTRY 27 10 1 ~0~
    SET_2DA_ENTRY 29 10 1 ~0~
    // Ranger
    SET_2DA_ENTRY 31 11 1 ~2~
    SET_2DA_ENTRY 32 11 1 ~0~
    SET_2DA_ENTRY 33 11 1 ~2~
    SET_2DA_ENTRY 34 11 1 ~3~
    SET_2DA_ENTRY 11 11 1 ~0~
    SET_2DA_ENTRY 16 11 1 ~0~
    SET_2DA_ENTRY 22 11 1 ~0~
    SET_2DA_ENTRY 27 11 1 ~0~
    SET_2DA_ENTRY 29 11 1 ~0~
    SET_2DA_ENTRY 20 11 1 ~1~
    // Fighter/Mage
    SET_2DA_ENTRY 31 12 1 ~2~
    SET_2DA_ENTRY 32 12 1 ~0~
    SET_2DA_ENTRY 33 12 1 ~2~
    SET_2DA_ENTRY 11 12 1 ~0~
    SET_2DA_ENTRY 16 12 1 ~0~
    SET_2DA_ENTRY 22 12 1 ~0~
    SET_2DA_ENTRY 27 12 1 ~0~
    SET_2DA_ENTRY 29 12 1 ~0~
    SET_2DA_ENTRY 20 12 1 ~1~
    // Fighter/Cleric
    SET_2DA_ENTRY 31 13 1 ~2~
    SET_2DA_ENTRY 32 13 1 ~2~
    SET_2DA_ENTRY 33 13 1 ~2~
    SET_2DA_ENTRY 11 13 1 ~0~
    SET_2DA_ENTRY 16 13 1 ~0~
    SET_2DA_ENTRY 22 13 1 ~0~
    SET_2DA_ENTRY 27 13 1 ~0~
    SET_2DA_ENTRY 29 13 1 ~0~
    SET_2DA_ENTRY 20 13 1 ~1~
    // Fighter/Thief
    SET_2DA_ENTRY 31 14 1 ~0~
    SET_2DA_ENTRY 32 14 1 ~0~
    SET_2DA_ENTRY 33 14 1 ~2~
    SET_2DA_ENTRY 11 14 1 ~0~
    SET_2DA_ENTRY 16 14 1 ~0~
    SET_2DA_ENTRY 22 14 1 ~0~
    SET_2DA_ENTRY 27 14 1 ~0~
    SET_2DA_ENTRY 29 14 1 ~0~
    SET_2DA_ENTRY 20 14 1 ~1~
    // Fighter/Mage/Thief
    SET_2DA_ENTRY 31 15 1 ~0~
    SET_2DA_ENTRY 32 15 1 ~0~
    SET_2DA_ENTRY 33 15 1 ~2~
    SET_2DA_ENTRY 11 15 1 ~0~
    SET_2DA_ENTRY 16 15 1 ~0~
    SET_2DA_ENTRY 22 15 1 ~0~
    SET_2DA_ENTRY 27 15 1 ~0~
    SET_2DA_ENTRY 29 15 1 ~0~
    SET_2DA_ENTRY 20 15 1 ~1~
    // Mage/Thief
    SET_2DA_ENTRY 4 16 1 ~2~
    SET_2DA_ENTRY 7 16 1 ~2~
    SET_2DA_ENTRY 10 16 1 ~2~
    SET_2DA_ENTRY 12 16 1 ~2~
    SET_2DA_ENTRY 13 16 1 ~2~
    SET_2DA_ENTRY 17 16 1 ~2~
    SET_2DA_ENTRY 18 16 1 ~2~
    SET_2DA_ENTRY 25 16 1 ~2~
    SET_2DA_ENTRY 26 16 1 ~2~
    SET_2DA_ENTRY 28 16 1 ~2~
    SET_2DA_ENTRY 30 16 1 ~2~
    SET_2DA_ENTRY 31 16 1 ~0~
    SET_2DA_ENTRY 32 16 1 ~0~
    SET_2DA_ENTRY 33 16 1 ~2~
    SET_2DA_ENTRY 34 16 1 ~3~
    SET_2DA_ENTRY 11 16 1 ~0~
    SET_2DA_ENTRY 16 16 1 ~0~
    SET_2DA_ENTRY 22 16 1 ~0~
    SET_2DA_ENTRY 27 16 1 ~0~
    SET_2DA_ENTRY 29 16 1 ~0~
    SET_2DA_ENTRY 20 16 1 ~1~
    // Cleric/Mage
    SET_2DA_ENTRY 7 17 1 ~2~
    SET_2DA_ENTRY 8 17 1 ~2~
    SET_2DA_ENTRY 10 17 1 ~2~
    SET_2DA_ENTRY 19 17 1 ~2~
    SET_2DA_ENTRY 23 17 1 ~2~
    SET_2DA_ENTRY 24 17 1 ~2~
    SET_2DA_ENTRY 25 17 1 ~2~
    SET_2DA_ENTRY 30 17 1 ~2~
    SET_2DA_ENTRY 31 17 1 ~1~
    SET_2DA_ENTRY 32 17 1 ~0~
    SET_2DA_ENTRY 33 17 1 ~1~
    SET_2DA_ENTRY 34 17 1 ~0~
    SET_2DA_ENTRY 11 17 1 ~0~
    SET_2DA_ENTRY 16 17 1 ~0~
    SET_2DA_ENTRY 22 17 1 ~0~
    SET_2DA_ENTRY 27 17 1 ~0~
    SET_2DA_ENTRY 29 17 1 ~0~
    SET_2DA_ENTRY 20 17 1 ~1~
    // Cleric/Thief
    SET_2DA_ENTRY 7 18 1 ~2~
    SET_2DA_ENTRY 8 18 1 ~2~
    SET_2DA_ENTRY 10 18 1 ~2~
    SET_2DA_ENTRY 19 18 1 ~2~
    SET_2DA_ENTRY 23 18 1 ~2~
    SET_2DA_ENTRY 24 18 1 ~2~
    SET_2DA_ENTRY 25 18 1 ~2~
    SET_2DA_ENTRY 30 18 1 ~2~
    SET_2DA_ENTRY 31 18 1 ~1~
    SET_2DA_ENTRY 32 18 1 ~0~
    SET_2DA_ENTRY 33 18 1 ~2~
    SET_2DA_ENTRY 34 18 1 ~3~
    SET_2DA_ENTRY 11 18 1 ~0~
    SET_2DA_ENTRY 16 18 1 ~0~
    SET_2DA_ENTRY 22 18 1 ~0~
    SET_2DA_ENTRY 27 18 1 ~0~
    SET_2DA_ENTRY 29 18 1 ~0~
    SET_2DA_ENTRY 20 18 1 ~1~
    // Fighter/Druid
    SET_2DA_ENTRY 31 19 1 ~2~
    SET_2DA_ENTRY 32 19 1 ~2~
    SET_2DA_ENTRY 33 19 1 ~2~
    SET_2DA_ENTRY 11 19 1 ~0~
    SET_2DA_ENTRY 16 19 1 ~0~
    SET_2DA_ENTRY 22 19 1 ~0~
    SET_2DA_ENTRY 27 19 1 ~0~
    SET_2DA_ENTRY 29 19 1 ~0~
    SET_2DA_ENTRY 20 19 1 ~3~
    // Fighter/Mage/Cleric
    SET_2DA_ENTRY 31 20 1 ~2~
    SET_2DA_ENTRY 32 20 1 ~0~
    SET_2DA_ENTRY 33 20 1 ~2~
    SET_2DA_ENTRY 11 20 1 ~0~
    SET_2DA_ENTRY 16 20 1 ~0~
    SET_2DA_ENTRY 22 20 1 ~0~
    SET_2DA_ENTRY 27 20 1 ~0~
    SET_2DA_ENTRY 29 20 1 ~0~
    SET_2DA_ENTRY 20 20 1 ~1~
    // Ranger/Cleric
    SET_2DA_ENTRY 31 21 1 ~2~
    SET_2DA_ENTRY 32 21 1 ~2~
    SET_2DA_ENTRY 33 21 1 ~2~
    SET_2DA_ENTRY 11 21 1 ~0~
    SET_2DA_ENTRY 16 21 1 ~0~
    SET_2DA_ENTRY 22 21 1 ~0~
    SET_2DA_ENTRY 27 21 1 ~0~
    SET_2DA_ENTRY 29 21 1 ~0~
    SET_2DA_ENTRY 20 21 1 ~1~
    // Wizards
    SET_2DA_ENTRY 11 4 1 ~0~
    SET_2DA_ENTRY 16 4 1 ~0~
    SET_2DA_ENTRY 22 4 1 ~0~
    SET_2DA_ENTRY 27 4 1 ~0~
    SET_2DA_ENTRY 29 4 1 ~0~
    SET_2DA_ENTRY 20 4 1 ~1~
    SET_2DA_ENTRY 11 22 1 ~0~
    SET_2DA_ENTRY 16 22 1 ~0~
    SET_2DA_ENTRY 22 22 1 ~0~
    SET_2DA_ENTRY 27 22 1 ~0~
    SET_2DA_ENTRY 29 22 1 ~0~
    SET_2DA_ENTRY 20 22 1 ~1~
    SET_2DA_ENTRY 11 23 1 ~0~
    SET_2DA_ENTRY 16 23 1 ~0~
    SET_2DA_ENTRY 22 23 1 ~0~
    SET_2DA_ENTRY 27 23 1 ~0~
    SET_2DA_ENTRY 29 23 1 ~0~
    SET_2DA_ENTRY 20 23 1 ~1~
    SET_2DA_ENTRY 11 24 1 ~0~
    SET_2DA_ENTRY 16 24 1 ~0~
    SET_2DA_ENTRY 22 24 1 ~0~
    SET_2DA_ENTRY 27 24 1 ~0~
    SET_2DA_ENTRY 29 24 1 ~0~
    SET_2DA_ENTRY 20 24 1 ~1~
    SET_2DA_ENTRY 11 25 1 ~0~
    SET_2DA_ENTRY 16 25 1 ~0~
    SET_2DA_ENTRY 22 25 1 ~0~
    SET_2DA_ENTRY 27 25 1 ~0~
    SET_2DA_ENTRY 29 25 1 ~0~
    SET_2DA_ENTRY 20 25 1 ~1~
    SET_2DA_ENTRY 11 26 1 ~0~
    SET_2DA_ENTRY 16 26 1 ~0~
    SET_2DA_ENTRY 22 26 1 ~0~
    SET_2DA_ENTRY 27 26 1 ~0~
    SET_2DA_ENTRY 29 26 1 ~0~
    SET_2DA_ENTRY 20 26 1 ~1~
    SET_2DA_ENTRY 11 27 1 ~0~
    SET_2DA_ENTRY 16 27 1 ~0~
    SET_2DA_ENTRY 22 27 1 ~0~
    SET_2DA_ENTRY 27 27 1 ~0~
    SET_2DA_ENTRY 29 27 1 ~0~
    SET_2DA_ENTRY 20 27 1 ~1~
    SET_2DA_ENTRY 11 28 1 ~0~
    SET_2DA_ENTRY 16 28 1 ~0~
    SET_2DA_ENTRY 22 28 1 ~0~
    SET_2DA_ENTRY 27 28 1 ~0~
    SET_2DA_ENTRY 29 28 1 ~0~
    SET_2DA_ENTRY 20 28 1 ~1~
    SET_2DA_ENTRY 11 29 1 ~0~
    SET_2DA_ENTRY 16 29 1 ~0~
    SET_2DA_ENTRY 22 29 1 ~0~
    SET_2DA_ENTRY 27 29 1 ~0~
    SET_2DA_ENTRY 29 29 1 ~0~
    SET_2DA_ENTRY 20 29 1 ~1~
    // Berserker
    SET_2DA_ENTRY 3 30 1 ~3~
    SET_2DA_ENTRY 4 30 1 ~3~
    SET_2DA_ENTRY 5 30 1 ~3~
    SET_2DA_ENTRY 6 30 1 ~3~
    SET_2DA_ENTRY 7 30 1 ~3~
    SET_2DA_ENTRY 8 30 1 ~3~
    SET_2DA_ENTRY 9 30 1 ~3~
    SET_2DA_ENTRY 10 30 1 ~3~
    SET_2DA_ENTRY 12 30 1 ~3~
    SET_2DA_ENTRY 13 30 1 ~3~
    SET_2DA_ENTRY 14 30 1 ~3~
    SET_2DA_ENTRY 15 30 1 ~3~
    SET_2DA_ENTRY 17 30 1 ~3~
    SET_2DA_ENTRY 18 30 1 ~3~
    SET_2DA_ENTRY 19 30 1 ~3~
    SET_2DA_ENTRY 21 30 1 ~3~
    SET_2DA_ENTRY 23 30 1 ~3~
    SET_2DA_ENTRY 24 30 1 ~3~
    SET_2DA_ENTRY 25 30 1 ~3~
    SET_2DA_ENTRY 31 30 1 ~1~
    SET_2DA_ENTRY 32 30 1 ~1~
    SET_2DA_ENTRY 33 30 1 ~1~
    SET_2DA_ENTRY 34 30 1 ~1~
    SET_2DA_ENTRY 11 30 1 ~0~
    SET_2DA_ENTRY 16 30 1 ~0~
    SET_2DA_ENTRY 22 30 1 ~0~
    SET_2DA_ENTRY 27 30 1 ~0~
    SET_2DA_ENTRY 29 30 1 ~0~
    SET_2DA_ENTRY 20 30 1 ~1~
    // Wizard Slayer
    SET_2DA_ENTRY 3 31 1 ~3~
    SET_2DA_ENTRY 4 31 1 ~3~
    SET_2DA_ENTRY 5 31 1 ~3~
    SET_2DA_ENTRY 6 31 1 ~3~
    SET_2DA_ENTRY 7 31 1 ~3~
    SET_2DA_ENTRY 8 31 1 ~3~
    SET_2DA_ENTRY 9 31 1 ~3~
    SET_2DA_ENTRY 10 31 1 ~3~
    SET_2DA_ENTRY 12 31 1 ~3~
    SET_2DA_ENTRY 13 31 1 ~3~
    SET_2DA_ENTRY 14 31 1 ~3~
    SET_2DA_ENTRY 15 31 1 ~3~
    SET_2DA_ENTRY 17 31 1 ~3~
    SET_2DA_ENTRY 18 31 1 ~3~
    SET_2DA_ENTRY 19 31 1 ~3~
    SET_2DA_ENTRY 21 31 1 ~3~
    SET_2DA_ENTRY 23 31 1 ~3~
    SET_2DA_ENTRY 24 31 1 ~3~
    SET_2DA_ENTRY 25 31 1 ~3~
    SET_2DA_ENTRY 26 31 1 ~3~
    SET_2DA_ENTRY 28 31 1 ~3~
    SET_2DA_ENTRY 30 31 1 ~3~
    SET_2DA_ENTRY 31 31 1 ~2~
    SET_2DA_ENTRY 32 31 1 ~2~
    SET_2DA_ENTRY 33 31 1 ~2~
    SET_2DA_ENTRY 11 31 1 ~0~
    SET_2DA_ENTRY 16 31 1 ~0~
    SET_2DA_ENTRY 22 31 1 ~0~
    SET_2DA_ENTRY 27 31 1 ~0~
    SET_2DA_ENTRY 29 31 1 ~0~
    SET_2DA_ENTRY 20 31 1 ~1~
    // Kensai
    SET_2DA_ENTRY 31 32 1 ~2~
    SET_2DA_ENTRY 32 32 1 ~0~
    SET_2DA_ENTRY 33 32 1 ~2~
    SET_2DA_ENTRY 11 32 1 ~0~
    SET_2DA_ENTRY 16 32 1 ~0~
    SET_2DA_ENTRY 22 32 1 ~0~
    SET_2DA_ENTRY 27 32 1 ~0~
    SET_2DA_ENTRY 29 32 1 ~0~
    SET_2DA_ENTRY 20 32 1 ~1~
    // Cavalier
    SET_2DA_ENTRY 31 33 1 ~2~
    SET_2DA_ENTRY 32 33 1 ~2~
    SET_2DA_ENTRY 33 33 1 ~2~
    SET_2DA_ENTRY 34 33 1 ~2~
    SET_2DA_ENTRY 11 33 1 ~0~
    SET_2DA_ENTRY 16 33 1 ~0~
    SET_2DA_ENTRY 22 33 1 ~0~
    SET_2DA_ENTRY 27 33 1 ~0~
    SET_2DA_ENTRY 29 33 1 ~0~
    SET_2DA_ENTRY 20 33 1 ~1~
    // Inquisitor
    SET_2DA_ENTRY 31 34 1 ~2~
    SET_2DA_ENTRY 32 34 1 ~2~
    SET_2DA_ENTRY 33 34 1 ~2~
    SET_2DA_ENTRY 34 34 1 ~2~
    SET_2DA_ENTRY 11 34 1 ~0~
    SET_2DA_ENTRY 16 34 1 ~0~
    SET_2DA_ENTRY 22 34 1 ~0~
    SET_2DA_ENTRY 27 34 1 ~0~
    SET_2DA_ENTRY 29 34 1 ~0~
    SET_2DA_ENTRY 20 34 1 ~1~
    // Undead Hunter
    SET_2DA_ENTRY 31 35 1 ~2~
    SET_2DA_ENTRY 32 35 1 ~2~
    SET_2DA_ENTRY 33 35 1 ~2~
    SET_2DA_ENTRY 34 35 1 ~2~
    SET_2DA_ENTRY 11 35 1 ~0~
    SET_2DA_ENTRY 16 35 1 ~0~
    SET_2DA_ENTRY 22 35 1 ~0~
    SET_2DA_ENTRY 27 35 1 ~0~
    SET_2DA_ENTRY 29 35 1 ~0~
    SET_2DA_ENTRY 20 35 1 ~1~
    // Archer
    SET_2DA_ENTRY 3 36 1 ~2~
    SET_2DA_ENTRY 4 36 1 ~2~
    SET_2DA_ENTRY 5 36 1 ~2~
    SET_2DA_ENTRY 6 36 1 ~2~
    SET_2DA_ENTRY 7 36 1 ~2~
    SET_2DA_ENTRY 8 36 1 ~2~
    SET_2DA_ENTRY 9 36 1 ~2~
    SET_2DA_ENTRY 10 36 1 ~2~
    SET_2DA_ENTRY 12 36 1 ~2~
    SET_2DA_ENTRY 13 36 1 ~2~
    SET_2DA_ENTRY 14 36 1 ~2~
    SET_2DA_ENTRY 15 36 1 ~2~
    SET_2DA_ENTRY 17 36 1 ~2~
    SET_2DA_ENTRY 18 36 1 ~2~
    SET_2DA_ENTRY 19 36 1 ~2~
    SET_2DA_ENTRY 21 36 1 ~2~
    SET_2DA_ENTRY 23 36 1 ~2~
    SET_2DA_ENTRY 24 36 1 ~2~
    SET_2DA_ENTRY 25 36 1 ~2~
    SET_2DA_ENTRY 26 36 1 ~2~
    SET_2DA_ENTRY 30 36 1 ~2~
    SET_2DA_ENTRY 31 36 1 ~2~
    SET_2DA_ENTRY 32 36 1 ~0~
    SET_2DA_ENTRY 33 36 1 ~2~
    SET_2DA_ENTRY 34 36 1 ~3~
    SET_2DA_ENTRY 11 36 1 ~0~
    SET_2DA_ENTRY 16 36 1 ~0~
    SET_2DA_ENTRY 22 36 1 ~0~
    SET_2DA_ENTRY 27 36 1 ~0~
    SET_2DA_ENTRY 29 36 1 ~0~
    SET_2DA_ENTRY 20 36 1 ~1~
    // Stalker
    SET_2DA_ENTRY 3 37 1 ~0~
    SET_2DA_ENTRY 4 37 1 ~4~
    SET_2DA_ENTRY 5 37 1 ~2~
    SET_2DA_ENTRY 6 37 1 ~0~
    SET_2DA_ENTRY 7 37 1 ~2~
    SET_2DA_ENTRY 8 37 1 ~2~
    SET_2DA_ENTRY 9 37 1 ~2~
    SET_2DA_ENTRY 10 37 1 ~2~
    SET_2DA_ENTRY 12 37 1 ~2~
    SET_2DA_ENTRY 13 37 1 ~4~
    SET_2DA_ENTRY 14 37 1 ~2~
    SET_2DA_ENTRY 15 37 1 ~0~
    SET_2DA_ENTRY 17 37 1 ~2~
    SET_2DA_ENTRY 18 37 1 ~4~
    SET_2DA_ENTRY 19 37 1 ~2~
    SET_2DA_ENTRY 21 37 1 ~0~
    SET_2DA_ENTRY 23 37 1 ~2~
    SET_2DA_ENTRY 24 37 1 ~2~
    SET_2DA_ENTRY 25 37 1 ~0~
    SET_2DA_ENTRY 26 37 1 ~2~
    SET_2DA_ENTRY 28 37 1 ~2~
    SET_2DA_ENTRY 30 37 1 ~2~
    SET_2DA_ENTRY 31 37 1 ~0~
    SET_2DA_ENTRY 32 37 1 ~0~
    SET_2DA_ENTRY 33 37 1 ~2~
    SET_2DA_ENTRY 34 37 1 ~3~
    SET_2DA_ENTRY 11 37 1 ~0~
    SET_2DA_ENTRY 16 37 1 ~0~
    SET_2DA_ENTRY 22 37 1 ~0~
    SET_2DA_ENTRY 27 37 1 ~0~
    SET_2DA_ENTRY 29 37 1 ~0~
    SET_2DA_ENTRY 20 37 1 ~1~
    // Beastmaster
    SET_2DA_ENTRY 21 38 1 ~3~
    SET_2DA_ENTRY 25 38 1 ~3~
    SET_2DA_ENTRY 26 38 1 ~0~
    SET_2DA_ENTRY 28 38 1 ~3~
    SET_2DA_ENTRY 30 38 1 ~3~
    SET_2DA_ENTRY 31 38 1 ~2~
    SET_2DA_ENTRY 32 38 1 ~0~
    SET_2DA_ENTRY 33 38 1 ~2~
    SET_2DA_ENTRY 34 38 1 ~3~
    SET_2DA_ENTRY 11 38 1 ~0~
    SET_2DA_ENTRY 16 38 1 ~0~
    SET_2DA_ENTRY 22 38 1 ~0~
    SET_2DA_ENTRY 27 38 1 ~0~
    SET_2DA_ENTRY 29 38 1 ~0~
    SET_2DA_ENTRY 20 38 1 ~1~
    // Assassin
    SET_2DA_ENTRY 4 39 1 ~2~
    SET_2DA_ENTRY 7 39 1 ~2~
    SET_2DA_ENTRY 10 39 1 ~2~
    SET_2DA_ENTRY 12 39 1 ~2~
    SET_2DA_ENTRY 13 39 1 ~2~
    SET_2DA_ENTRY 17 39 1 ~2~
    SET_2DA_ENTRY 18 39 1 ~3~
    SET_2DA_ENTRY 26 39 1 ~2~
    SET_2DA_ENTRY 28 39 1 ~2~
    SET_2DA_ENTRY 30 39 1 ~2~
    SET_2DA_ENTRY 31 39 1 ~0~
    SET_2DA_ENTRY 32 39 1 ~0~
    SET_2DA_ENTRY 33 39 1 ~2~
    SET_2DA_ENTRY 34 39 1 ~3~
    SET_2DA_ENTRY 11 39 1 ~0~
    SET_2DA_ENTRY 16 39 1 ~0~
    SET_2DA_ENTRY 22 39 1 ~0~
    SET_2DA_ENTRY 27 39 1 ~0~
    SET_2DA_ENTRY 29 39 1 ~0~
    SET_2DA_ENTRY 20 39 1 ~1~
    // Bounty Hunter
    SET_2DA_ENTRY 4 40 1 ~2~
    SET_2DA_ENTRY 7 40 1 ~2~
    SET_2DA_ENTRY 10 40 1 ~2~
    SET_2DA_ENTRY 12 40 1 ~2~
    SET_2DA_ENTRY 13 40 1 ~2~
    SET_2DA_ENTRY 17 40 1 ~2~
    SET_2DA_ENTRY 18 40 1 ~2~
    SET_2DA_ENTRY 26 40 1 ~2~
    SET_2DA_ENTRY 28 40 1 ~2~
    SET_2DA_ENTRY 30 40 1 ~2~
    SET_2DA_ENTRY 31 40 1 ~0~
    SET_2DA_ENTRY 32 40 1 ~0~
    SET_2DA_ENTRY 33 40 1 ~2~
    SET_2DA_ENTRY 34 40 1 ~3~
    SET_2DA_ENTRY 11 40 1 ~0~
    SET_2DA_ENTRY 16 40 1 ~0~
    SET_2DA_ENTRY 22 40 1 ~0~
    SET_2DA_ENTRY 27 40 1 ~0~
    SET_2DA_ENTRY 29 40 1 ~0~
    SET_2DA_ENTRY 20 40 1 ~1~
    // Swashbuckler
    SET_2DA_ENTRY 31 41 1 ~0~
    SET_2DA_ENTRY 32 41 1 ~0~
    SET_2DA_ENTRY 33 41 1 ~2~
    SET_2DA_ENTRY 11 41 1 ~0~
    SET_2DA_ENTRY 16 41 1 ~0~
    SET_2DA_ENTRY 22 41 1 ~0~
    SET_2DA_ENTRY 27 41 1 ~0~
    SET_2DA_ENTRY 29 41 1 ~0~
    SET_2DA_ENTRY 20 41 1 ~1~
    // Blade
    SET_2DA_ENTRY 3 42 1 ~0~
    SET_2DA_ENTRY 4 42 1 ~3~
    SET_2DA_ENTRY 6 42 1 ~0~
    SET_2DA_ENTRY 10 42 1 ~3~
    SET_2DA_ENTRY 12 42 1 ~3~
    SET_2DA_ENTRY 13 42 1 ~3~
    SET_2DA_ENTRY 14 42 1 ~3~
    SET_2DA_ENTRY 15 42 1 ~0~
    SET_2DA_ENTRY 17 42 1 ~3~
    SET_2DA_ENTRY 18 42 1 ~3~
    SET_2DA_ENTRY 19 42 1 ~0~
    SET_2DA_ENTRY 21 42 1 ~0~
    SET_2DA_ENTRY 23 42 1 ~0~
    SET_2DA_ENTRY 24 42 1 ~0~
    SET_2DA_ENTRY 25 42 1 ~0~
    SET_2DA_ENTRY 26 42 1 ~1~
    SET_2DA_ENTRY 28 42 1 ~1~
    SET_2DA_ENTRY 30 42 1 ~1~
    SET_2DA_ENTRY 31 42 1 ~0~
    SET_2DA_ENTRY 32 42 1 ~0~
    SET_2DA_ENTRY 33 42 1 ~2~
    SET_2DA_ENTRY 34 42 1 ~3~
    SET_2DA_ENTRY 11 42 1 ~0~
    SET_2DA_ENTRY 16 42 1 ~0~
    SET_2DA_ENTRY 22 42 1 ~0~
    SET_2DA_ENTRY 27 42 1 ~0~
    SET_2DA_ENTRY 29 42 1 ~0~
    SET_2DA_ENTRY 20 42 1 ~1~
    // Jester
    SET_2DA_ENTRY 3 43 1 ~2~
    SET_2DA_ENTRY 4 43 1 ~2~
    SET_2DA_ENTRY 5 43 1 ~2~
    SET_2DA_ENTRY 6 43 1 ~0~
    SET_2DA_ENTRY 7 43 1 ~2~
    SET_2DA_ENTRY 8 43 1 ~2~
    SET_2DA_ENTRY 9 43 1 ~2~
    SET_2DA_ENTRY 10 43 1 ~2~
    SET_2DA_ENTRY 12 43 1 ~2~
    SET_2DA_ENTRY 13 43 1 ~2~
    SET_2DA_ENTRY 14 43 1 ~2~
    SET_2DA_ENTRY 15 43 1 ~0~
    SET_2DA_ENTRY 17 43 1 ~2~
    SET_2DA_ENTRY 18 43 1 ~2~
    SET_2DA_ENTRY 19 43 1 ~2~
    SET_2DA_ENTRY 21 43 1 ~0~
    SET_2DA_ENTRY 23 43 1 ~2~
    SET_2DA_ENTRY 24 43 1 ~2~
    SET_2DA_ENTRY 25 43 1 ~0~
    SET_2DA_ENTRY 26 43 1 ~2~
    SET_2DA_ENTRY 28 43 1 ~2~
    SET_2DA_ENTRY 30 43 1 ~2~
    SET_2DA_ENTRY 31 43 1 ~1~
    SET_2DA_ENTRY 32 43 1 ~1~
    SET_2DA_ENTRY 33 43 1 ~1~
    SET_2DA_ENTRY 34 43 1 ~1~
    SET_2DA_ENTRY 11 43 1 ~0~
    SET_2DA_ENTRY 16 43 1 ~0~
    SET_2DA_ENTRY 22 43 1 ~0~
    SET_2DA_ENTRY 27 43 1 ~0~
    SET_2DA_ENTRY 29 43 1 ~0~
    SET_2DA_ENTRY 20 43 1 ~1~
    // Skald
    SET_2DA_ENTRY 3 44 1 ~3~
    SET_2DA_ENTRY 4 44 1 ~3~
    SET_2DA_ENTRY 5 44 1 ~3~
    SET_2DA_ENTRY 6 44 1 ~0~
    SET_2DA_ENTRY 7 44 1 ~3~
    SET_2DA_ENTRY 8 44 1 ~3~
    SET_2DA_ENTRY 9 44 1 ~3~
    SET_2DA_ENTRY 10 44 1 ~3~
    SET_2DA_ENTRY 12 44 1 ~3~
    SET_2DA_ENTRY 13 44 1 ~3~
    SET_2DA_ENTRY 14 44 1 ~3~
    SET_2DA_ENTRY 15 44 1 ~0~
    SET_2DA_ENTRY 17 44 1 ~3~
    SET_2DA_ENTRY 18 44 1 ~3~
    SET_2DA_ENTRY 19 44 1 ~3~
    SET_2DA_ENTRY 21 44 1 ~0~
    SET_2DA_ENTRY 23 44 1 ~3~
    SET_2DA_ENTRY 24 44 1 ~3~
    SET_2DA_ENTRY 25 44 1 ~0~
    SET_2DA_ENTRY 26 44 1 ~3~
    SET_2DA_ENTRY 28 44 1 ~3~
    SET_2DA_ENTRY 30 44 1 ~3~
    SET_2DA_ENTRY 31 44 1 ~1~
    SET_2DA_ENTRY 32 44 1 ~1~
    SET_2DA_ENTRY 33 44 1 ~1~
    SET_2DA_ENTRY 34 44 1 ~1~
    SET_2DA_ENTRY 11 44 1 ~0~
    SET_2DA_ENTRY 16 44 1 ~0~
    SET_2DA_ENTRY 22 44 1 ~0~
    SET_2DA_ENTRY 27 44 1 ~0~
    SET_2DA_ENTRY 29 44 1 ~0~
    SET_2DA_ENTRY 20 44 1 ~1~
    // Totemic Driud
    SET_2DA_ENTRY 7 45 1 ~2~
    SET_2DA_ENTRY 8 45 1 ~2~
    SET_2DA_ENTRY 10 45 1 ~2~
    SET_2DA_ENTRY 17 45 1 ~2~
    SET_2DA_ENTRY 18 45 1 ~2~
    SET_2DA_ENTRY 21 45 1 ~2~
    SET_2DA_ENTRY 25 45 1 ~2~
    SET_2DA_ENTRY 30 45 1 ~2~
    SET_2DA_ENTRY 11 45 1 ~0~
    SET_2DA_ENTRY 16 45 1 ~0~
    SET_2DA_ENTRY 22 45 1 ~0~
    SET_2DA_ENTRY 27 45 1 ~0~
    SET_2DA_ENTRY 29 45 1 ~0~
    SET_2DA_ENTRY 20 45 1 ~2~
    // Shapeshifter
    SET_2DA_ENTRY 7 46 1 ~2~
    SET_2DA_ENTRY 8 46 1 ~2~
    SET_2DA_ENTRY 10 46 1 ~2~
    SET_2DA_ENTRY 17 46 1 ~2~
    SET_2DA_ENTRY 18 46 1 ~2~
    SET_2DA_ENTRY 21 46 1 ~2~
    SET_2DA_ENTRY 25 46 1 ~2~
    SET_2DA_ENTRY 30 46 1 ~2~
    SET_2DA_ENTRY 11 46 1 ~0~
    SET_2DA_ENTRY 16 46 1 ~0~
    SET_2DA_ENTRY 22 46 1 ~0~
    SET_2DA_ENTRY 27 46 1 ~0~
    SET_2DA_ENTRY 29 46 1 ~0~
    SET_2DA_ENTRY 20 46 1 ~2~
    // Avenger
    SET_2DA_ENTRY 7 47 1 ~2~
    SET_2DA_ENTRY 8 47 1 ~2~
    SET_2DA_ENTRY 10 47 1 ~2~
    SET_2DA_ENTRY 17 47 1 ~2~
    SET_2DA_ENTRY 18 47 1 ~2~
    SET_2DA_ENTRY 21 47 1 ~2~
    SET_2DA_ENTRY 25 47 1 ~2~
    SET_2DA_ENTRY 30 47 1 ~2~
    SET_2DA_ENTRY 11 47 1 ~0~
    SET_2DA_ENTRY 16 47 1 ~0~
    SET_2DA_ENTRY 22 47 1 ~0~
    SET_2DA_ENTRY 27 47 1 ~0~
    SET_2DA_ENTRY 29 47 1 ~0~
    SET_2DA_ENTRY 20 47 1 ~2~
    // Talos
    SET_2DA_ENTRY 7 48 1 ~2~
    SET_2DA_ENTRY 8 48 1 ~2~
    SET_2DA_ENTRY 10 48 1 ~2~
    SET_2DA_ENTRY 19 48 1 ~2~
    SET_2DA_ENTRY 23 48 1 ~2~
    SET_2DA_ENTRY 24 48 1 ~2~
    SET_2DA_ENTRY 25 48 1 ~2~
    SET_2DA_ENTRY 30 48 1 ~2~
    SET_2DA_ENTRY 11 48 1 ~0~
    SET_2DA_ENTRY 16 48 1 ~0~
    SET_2DA_ENTRY 22 48 1 ~0~
    SET_2DA_ENTRY 27 48 1 ~0~
    SET_2DA_ENTRY 29 48 1 ~0~
    SET_2DA_ENTRY 20 48 1 ~1~
    // Helm
    SET_2DA_ENTRY 7 49 1 ~2~
    SET_2DA_ENTRY 8 49 1 ~2~
    SET_2DA_ENTRY 10 49 1 ~2~
    SET_2DA_ENTRY 19 49 1 ~2~
    SET_2DA_ENTRY 23 49 1 ~2~
    SET_2DA_ENTRY 24 49 1 ~2~
    SET_2DA_ENTRY 25 49 1 ~2~
    SET_2DA_ENTRY 30 49 1 ~2~
    SET_2DA_ENTRY 11 49 1 ~0~
    SET_2DA_ENTRY 16 49 1 ~0~
    SET_2DA_ENTRY 22 49 1 ~0~
    SET_2DA_ENTRY 27 49 1 ~0~
    SET_2DA_ENTRY 29 49 1 ~0~
    SET_2DA_ENTRY 20 49 1 ~1~
    // Lathander
    SET_2DA_ENTRY 7 50 1 ~2~
    SET_2DA_ENTRY 8 50 1 ~2~
    SET_2DA_ENTRY 10 50 1 ~2~
    SET_2DA_ENTRY 19 50 1 ~2~
    SET_2DA_ENTRY 23 50 1 ~2~
    SET_2DA_ENTRY 24 50 1 ~2~
    SET_2DA_ENTRY 25 50 1 ~2~
    SET_2DA_ENTRY 30 50 1 ~2~
    SET_2DA_ENTRY 11 50 1 ~0~
    SET_2DA_ENTRY 16 50 1 ~0~
    SET_2DA_ENTRY 22 50 1 ~0~
    SET_2DA_ENTRY 27 50 1 ~0~
    SET_2DA_ENTRY 29 50 1 ~0~
    SET_2DA_ENTRY 20 50 1 ~1~
    // Monk
    SET_2DA_ENTRY 11 51 1 ~0~
    SET_2DA_ENTRY 16 51 1 ~0~
    SET_2DA_ENTRY 22 51 1 ~0~
    SET_2DA_ENTRY 27 51 1 ~0~
    SET_2DA_ENTRY 29 51 1 ~0~
    SET_2DA_ENTRY 20 51 1 ~1~
    // Barbarian
    SET_2DA_ENTRY 31 52 1 ~0~
    SET_2DA_ENTRY 32 52 1 ~0~
    SET_2DA_ENTRY 33 52 1 ~0~
    SET_2DA_ENTRY 34 52 1 ~0~
    SET_2DA_ENTRY 11 52 1 ~0~
    SET_2DA_ENTRY 16 52 1 ~0~
    SET_2DA_ENTRY 22 52 1 ~0~
    SET_2DA_ENTRY 27 52 1 ~0~
    SET_2DA_ENTRY 29 52 1 ~0~
    SET_2DA_ENTRY 20 52 1 ~1~
    // Wild Mage
    SET_2DA_ENTRY 11 53 1 ~0~
    SET_2DA_ENTRY 16 53 1 ~0~
    SET_2DA_ENTRY 22 53 1 ~0~
    SET_2DA_ENTRY 27 53 1 ~0~
    SET_2DA_ENTRY 29 53 1 ~0~
    SET_2DA_ENTRY 20 53 1 ~1~
    BUT_ONLY

    ACTION_IF GAME_IS ~bgee bg2ee~ THEN BEGIN
    COPY_EXISTING ~WEAPPROF.2da~ ~override~
    // Blackguard
    SET_2DA_ENTRY 31 54 1 ~2~
    SET_2DA_ENTRY 32 54 1 ~2~
    SET_2DA_ENTRY 33 54 1 ~2~
    SET_2DA_ENTRY 34 54 1 ~3~
    SET_2DA_ENTRY 11 54 1 ~0~
    SET_2DA_ENTRY 16 54 1 ~0~
    SET_2DA_ENTRY 22 54 1 ~0~
    SET_2DA_ENTRY 27 54 1 ~0~
    SET_2DA_ENTRY 29 54 1 ~0~
    SET_2DA_ENTRY 20 54 1 ~1~
    // Shadowdancer
    SET_2DA_ENTRY 4 55 1 ~2~
    SET_2DA_ENTRY 7 55 1 ~2~
    SET_2DA_ENTRY 10 55 1 ~2~
    SET_2DA_ENTRY 12 55 1 ~2~
    SET_2DA_ENTRY 13 55 1 ~2~
    SET_2DA_ENTRY 17 55 1 ~2~
    SET_2DA_ENTRY 18 55 1 ~2~
    SET_2DA_ENTRY 25 55 1 ~2~
    SET_2DA_ENTRY 26 55 1 ~2~
    SET_2DA_ENTRY 28 55 1 ~2~
    SET_2DA_ENTRY 30 55 1 ~2~
    SET_2DA_ENTRY 31 55 1 ~0~
    SET_2DA_ENTRY 32 55 1 ~0~
    SET_2DA_ENTRY 33 55 1 ~2~
    SET_2DA_ENTRY 34 55 1 ~3~
    SET_2DA_ENTRY 11 55 1 ~0~
    SET_2DA_ENTRY 16 55 1 ~0~
    SET_2DA_ENTRY 22 55 1 ~0~
    SET_2DA_ENTRY 27 55 1 ~0~
    SET_2DA_ENTRY 29 55 1 ~0~
    SET_2DA_ENTRY 20 55 1 ~1~
    // Dwarven Defender
    SET_2DA_ENTRY 31 56 1 ~2~
    SET_2DA_ENTRY 32 56 1 ~2~
    SET_2DA_ENTRY 33 56 1 ~2~
    SET_2DA_ENTRY 34 56 1 ~0~
    SET_2DA_ENTRY 11 56 1 ~0~
    SET_2DA_ENTRY 16 56 1 ~0~
    SET_2DA_ENTRY 22 56 1 ~0~
    SET_2DA_ENTRY 27 56 1 ~0~
    SET_2DA_ENTRY 29 56 1 ~0~
    SET_2DA_ENTRY 20 56 1 ~1~
    // Dragon Disciple
    SET_2DA_ENTRY 11 57 1 ~0~
    SET_2DA_ENTRY 16 57 1 ~0~
    SET_2DA_ENTRY 22 57 1 ~0~
    SET_2DA_ENTRY 27 57 1 ~0~
    SET_2DA_ENTRY 29 57 1 ~0~
    SET_2DA_ENTRY 20 57 1 ~1~
    // Dark Moon Monk
    SET_2DA_ENTRY 11 58 1 ~0~
    SET_2DA_ENTRY 16 58 1 ~0~
    SET_2DA_ENTRY 22 58 1 ~0~
    SET_2DA_ENTRY 27 58 1 ~0~
    SET_2DA_ENTRY 29 58 1 ~0~
    SET_2DA_ENTRY 20 58 1 ~1~
    // Sun Soul Monk
    SET_2DA_ENTRY 11 59 1 ~0~
    SET_2DA_ENTRY 16 59 1 ~0~
    SET_2DA_ENTRY 22 59 1 ~0~
    SET_2DA_ENTRY 27 59 1 ~0~
    SET_2DA_ENTRY 29 59 1 ~0~
    SET_2DA_ENTRY 20 59 1 ~1~
    BUT_ONLY
    END
    //__________________________________________________________________________________

    SoB.zip 27.4K
    Post edited by subtledoctor on
    CrevsDaak
  • kjeronkjeron Member Posts: 2,063
    edited September 2014
    COPY_EXISTING ~WEAPPROF.2da~ ~override~
    REPLACE_TEXTUALLY ~ 2~ ~ 3~
    String 25001 becomes String 35001.
    Just add a space after the 2:
    	REPLACE_TEXTUALLY ~ 2 ~ ~ 3 ~

    CrevsDaak
  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Ah. Oh. Good catch. Does that mean the REPLACE_TEXTUALLY command can affect files other than the one in the COPY command immediately above it? I.e. should I be much more careful with its use than I have been?

    EDIT: Or, is it that the first column in that file, which has all the weapon category names in NI, is resolved to the equivalent string #s by the game? Duh me, that makes a lot more sense...

    Thanks, anyway! One more thing to deal with (patching some more proficiencies onto joinable CREs) and the next version will be done!

    Post edited by subtledoctor on
  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    So I think I've sorted everything out with the proficiency overhaul (turns out there's a "set_bg2_proficiency" command built right into weidu! who'd'a thunk it?) and I just need to go CRE by CRE and add the profs that they should be awarded according to class/kit. Just grunt work. In the meantime I want to return to some of the 'pie-in-the-sky' discussion that was going on earlier in this thread, as I've been reading up on Spell Revisions yesterday.
    Demivrgvs said:

    - replacing PfMW with Stoneskin will screw SCS AI (e.g. mage consider himself safe and not in need of buffs when he is instead very vulnerable), and partially mess up RR's AI (aVENGER AI smartly uses non-magical weapons agains PfMW).
    - replacing Stoneskin with Mirror Image may look fine on paper, but if you do not update the DETECTABLE SPELLs system the AI cannot properly take into account the change.

    SR will not change PfMW, even though that whole team agrees the power-balance of the protection spells is way off and the protection granted by PfMW isn't balanced for a 6th-level spell, because they have been cowed by DavidW because they intelligently realize that changing the spell too much will mess up the AI. But I am not bound by their contstraints. I want to include a spell tweaks component that works on top of SR, and that goes above and beyond what SR is willing to do. And that deletes the damn PfMW from the damn game, with prejudice.

    Under the circumstances, I still think SS is the best replacement, because 1) SS is overpowered for a level 4 spell and more appropriate for level 6; and 2) SS gives mages good protection (just without being stupid like PfMW), and thus may come closest to working with SCS AI. (There is no dealing with the RR AI for this, I'll just put a big warning about it.) So here is my proposal:

    Since replacing SS with MI may screw up Detectable Spells (people will not use illusion dispels to destroy the MI), leave SS as-is, but with a shorter duration. (Maybe move it to 5th level?) Then, re-purpose Ironskin as an improved SS, which adds ~4 rounds of complete elemental resistance and maybe some more skins. So for a short time, the FoA or Fire Arrows will be ineffective, and the PfMW AI should be okay. (SR was flirting with dropping PfMW duration to 3 rounds, that is the basis of this duration. A magical effect where you get layers of magical iron that radiate resistance to environmental harm, and then fade to normal physical protection skins.)

    Also, it occurs to me that SR is trying hard to make Absolute Immunity a viable 9th level spell, but maybe just drop it to 8th, because at 9th level Timestop is better in every way?

    So my protection spells would be something like:
    1: Armor, Shield, Blur
    2: Reflected Image (seriously buffed)
    3: Ghost Armor, PfNM, Mirror Image
    4: Spirit Armor, PfNW
    5: Stoneskin
    6: Mantle
    7: Ironskin
    8: Improved Mantle/Absolute Immunity
    9: Timestop, Shapechange, whatever

    This gives a pleasing (to me) tick-tock character to the incidence of "skins" spells (MI, SS, IS at odd levels) and pure immunity spells (PfNW, M, IM at even levels).

    Thoughts?

    Post edited by subtledoctor on
    Illustair
  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Maybe make the now-4th-level PfNW protect against +1 as well, to mesh with my item tweak and various other mods' "masterwork weapons," and have Mantle at 6th level protect against +3 and lower, and have Imp. Mantle at 8th level protect against +5 and lower. Those are real buffs, but should be fine if they have short durations.

    Absolute Immunity can either be dropped, or (if SR 4 is coming together) stay at 9th level with the improvements Demi is giving it. (Basically, I think, 3-4 rounds of immunity to all damage of any sort.)

    Illustair
  • GrammarsaladGrammarsalad Member Posts: 2,488
    Seems reasonable, I guess. It's hard for me to take everything into account to make a definitive judgement

  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Meantime, if anyone has access to BG2EE, can someone shoot me either 1) exported copies of the CRE files of Dorn and Hexxat; or 2) just a list of their "____.cre" filenames, along with the proficiencies assigned to each?

    Post edited by subtledoctor on
  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    erp, sorry, hang on...

    talk amongst yourselves...

  • DemivrgvsDemivrgvs Member Posts: 315
    A notification linked me here but I cannot find where I was mentioned...

    Anyway, if you are wondering what SR has done or will do about Mantles and Absolute immunity:
    - Mantle becomes a Prismatic Mantle (same as PnP Prismatic Aura - vanilla Mantle plus a FireShield effect with powerful Prismatic Spray-like effect when struck).
    - Improved Mantle is replaced by Moment of Prescience (this Divination variant of Mantle will require a few tests for AI sake when it comes to detecting and countering it)
    - Absolute Immunity in the current build already protects from ANY source of damage.

  • subtledoctorsubtledoctor Member Posts: 11,361
    Actually it was a question about how to patch item descriptions to delete all the "+1"s etc. But literally moments after I summoned you to ask, CamDawg and Mike1072 basically solved the problem over on the G3 forums.

    Good stuff with SR. Can't wait to play with v4. (Of course I'm not going to be playing until I get this mod finished up, so another few weeks anyway. I'm about 80% done with each of the items tweaks, the proficiency overhaul, and the NPC rekits. Ended up working on them in parallel by mistake, shifting focus when hitting roadblocks. I plan to knock out all three and jump right to a 0.9 feature-complete beta.)

    Incidentally one of the major pieces of advice for newbie modders around here is "don't bite off more than you can chew." I.e. don't do a "this mod changes everything" mod, but instead do targeted, compartmentalized changes. Naturally I have immediately broken that rule. With ~48 components to wade through, this is not very digestible.

    So I'm thinking about splitting this in half: Part 1 with item tweaks, stat tweaks, and proficiency changes; and Part 2 with kits and NPC rekitting. How do people feel about that? Good idea? Or am I looking for problems where there are none?

  • DawgliciousDawglicious Member Posts: 201
    Since you could pick and choose what to install, I feel like splitting it isn't really needed. Though maybe it would be better for compatibility with other mods?

  • KaigenKaigen Member Posts: 1,567

    So I'm thinking about splitting this in half: Part 1 with item tweaks, stat tweaks, and proficiency changes; and Part 2 with kits and NPC rekitting. How do people feel about that? Good idea? Or am I looking for problems where there are none?

    You could do what BG2 Tweaks does and ask the user up front whether they even want to see certain categories.

  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    @Demivrgvs‌ sorry to keep summoning you but this time there are two real questions waiting for you when you arrive:

    Question 1: I'd like to give Springlords of Lathander the ability to cast Sunscorch, because Lathander. My intended method to do is is
    ACTION_IF FILE_EXISTS_IN_GAME ~some SR file~ THEN BEGIN
    COPY_EXISTING ~clabpr04.2da~
    APPEND_FILE ~srscorch.txt~
    END
    ...where srscorch.txt adds a GA_spprxx line adding Sunscorch to the Springlord's known spells.

    I'm not asking to outright borrow your spell, like I did with Galactygon :) I'd just like to know 1) can you recommend a good way to check for the presence of SR; and 2) what is the .spl filename of Sunscorch?

    Question 2: one of the things I do to clerics is eliminate access to some spells that don't make sense for a particular deity. No Blade Barrier for beastly Malar, no Rigid Thinking for chaotic Talos, no False Dawn for darkness-loving Shar... and no Animate Dead for any good deities, especially Lathander. I see SR is adding more undead summons to the divine spell lists... are they restricted from good clerics? If not, can you tell me the filenames of those spells so I can do it myself?

    Thanks man

    Post edited by subtledoctor on
  • subtledoctorsubtledoctor Member Posts: 11,361

    Meantime, if anyone has access to BG2EE, can someone shoot me either 1) exported copies of the CRE files of Dorn and Hexxat; or 2) just a list of their "____.cre" filenames, along with the proficiencies assigned to each?

    Okay, BG2EE players out there, forget PMing files, forget looking up the proficiencies. Can you just tell me the filenames (that's all) for Dorn, Neera, Hexxat and Rasaad? Okthxbye.

  • SparhawkSparhawk Member Posts: 5
    Subtledoctor if you can tell me where i would find those files (i've never made amod so i don't know how to dig into those things) i'll get you the filenames

  • DemivrgvsDemivrgvs Member Posts: 315
    @subtledoctor sppr116 is SR's Sunscorch. I will restrict Animate Skeleton Warrior (sppr623) and Death Knight (sppr703) to evil priests yes.

    When it comes to detect SR, currently I have this:
    COPY ~spell_rev\shared\dvimhere.mrk~ ~override~ // Used to detect if SR is installed
    COPY ~spell_rev\shared\dvsrv3.mrk~ ~override~ // Used to detect if SR V3 is installed
    I may add or change the latter, but the former can be what you are looking for.

  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Thanks Demi!
    Sparhawk said:

    Subtledoctor if you can tell me where i would find those files (i've never made amod so i don't know how to dig into those things) i'll get you the filenames

    Super easy. You can download Near Infinity form here:
    http://sourceforge.net/projects/nearinfinity/

    ...and drop it into your "resource" folder. Upon opening it there is a window on the left side with a bunch of capitalized 3-letter extensions:
    2DA
    ARE
    BAM
    BCS
    ...
    Click the 'CRE' extension and it will show you the list of all creature files in the game. Each NPC has numerous incarnations, which are the different versions of them at different experience levels that you might encounter. (This is how the game makes Aerie higher level if you wait to do the Kalah quest until after Spellhold: there are literally just 6 different Aeries.)

    But each NPC file, for some reason lost to the mists of time, uses a different naming convention. So for Aerie there is aerie6, aerie7, aerie9, aerie10, aerie11, and aerie12. But for Cernd there is cernd10, 12, 13, 13B, and 14.

    I just need to know the numbers that come after each of Dorn, Neera, Hexxat and Rasaad.

    (The point of this is, to set their proficiencies correctly with my new system, I am dropping them to level 1 when you meet them. But they will have the normal amount of XP, so they will level-up immediately upon joining your party, and you can control their proficiencies etc. Want to make Minsc dual-wield daggers? This is your chance, and no more need for Shadowkeeper.)

  • KaigenKaigen Member Posts: 1,567
    edited September 2014

    Okay, BG2EE players out there, forget PMing files, forget looking up the proficiencies. Can you just tell me the filenames (that's all) for Dorn, Neera, Hexxat and Rasaad? Okthxbye.

    Taken from NPCLEVEL.2DA:
    Dorn: Dorn8, dorn9, dorn10, dorn12, Dorn14
    Neera: Neera8, Neera10, Neera15
    Rasaad: Rasaad8, Rasaad10, Rasaad12


    Hexxat:
    OHHEX8, OHHEX9, OHHEX10, OHHEX11, OHHEX13, OHHEX15, OHHEX25
    Replace OHHEX with OHHFAK for Clara


  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Awesome, thanks. Look for the next update soon, with proficiencies and rekitted NPCs - a little playtesting is due, but it should be uploaded by this weekend!

    Next request: if anyone is playing with mod NPCs let me know (and point me to the mod download). I need to go mod-by-mod and add them to work properly with the proficiency overhaul. So far my list of NPCs to work on includes:
    Finch
    - Indira
    - Rose
    - Isra
    - Valerie
    - Keto
    - Kelsey
    - Fade
    - Saerileth
    - Auren
    - Alora BG2
    - Xan BG2
    - Kivan/Deheriana BG2

    Post edited by subtledoctor on
  • WithgilWithgil Member Posts: 39
    Hi
    really loving your mod :) looking forward to play some Baldurs Gate this weekend.
    I am using following NPCs:
    Angelo
    Tashia
    Ninde
    Arath
    Ajantis (BG2)
    Sarah
    Faren
    Dace
    Petsy
    would be great if you could do them too.

  • subtledoctorsubtledoctor Member Posts: 11,361
    edited September 2014
    Okay, that just doubled my work :P

    Actually it's super easy to code them in, the real work is digging through the mod files and finding the .cre filenames I need to patch, like with the bg2ee NPCs above.

    While people are talking about NPCs, we might as well also discuss rekitting them. E.g. sometimes I make Fade a mage/thief multi; and Finch really wants to be a priest of Oghma but if I squint I could see Selune or maybe Mystra. (Or if anyone suggests some interesting abilities I could make a hidden Oghma kit just for her.)

    I don't know anything about the NPCs Withgil posted so if any of them are particularly suited for one of my added kits, let me know and I'll add a component for it.

  • WithgilWithgil Member Posts: 39
    Mmh there should be no problem with your kits.

    Tashia - sorcerer
    Ninde - necromancer
    Arath - druid
    Sarah - ranger
    Ajantis - paladin
    Faren - fighter dual classed into a thief
    Dace - bounty hunter
    Petsy - bard
    Angelo - fighter dual classed into a mage

    Ajantis should be a paladin of Helm or Torm.
    And maybe an option for Sarah to be rekitted into a forest runner.

Sign In or Register to comment.