Howdy, Stranger!

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

Categories

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!

[Question] Specialists Mages

RaduzielRaduziel Member Posts: 4,716
How the game identifies that a wizard is a specialist one to provide its bonus and restrictions?

I made a test creating a Necromancer and there is no effect applied to it like I saw in every kit that I reverse-engineered.

Here's the problem: I want to make a wizard kit that's is actually a necromancer kit (from the Complete Necromancer Handbook). To do so my idea is to make a standard wizard and apply a kit on top of it with an effect that provides what a specialist usually gets (for better or for worst).

The problem is: the opcode that provides bonus vs school save is not IWDEE compatible (dammit, Beamdog, upgrade the damn thing) but specialists in IWDEE gets those bonus anyway, so it's not this opcode (346) that is used.

I know how to provide the extra spells per level, but IDK what to do with the spells restriction (banning Illusion and Enchantment as P&P) and save bonus (for self) and penalty (for others).

Can anyone give me a hand in this matter?

Thanks!

«1

Comments

  • AquadrizztAquadrizzt Member Posts: 958
    edited July 2017
    Change the usability flag to whatever the Necromancer usability flag happens to be (0x00001000 in a default installation). This will make it behave as a Necromancer for the purposes of item/spell restrictions. This will also give any other bonuses that are hardcoded to the Necromancer (such as the -2 save penalty on Necromancy spells you cast, the bonus spell slot, etc.)

    edited because kjeron would know more (below)

  • kjeronkjeron Member Posts: 2,131
    The save bonus/penalty is hardcoded to their specific KITIDS, not the unusability flag.
    Opcode 346 can get you the bonus, but their is no way to recreate the penalty.

  • subtledoctorsubtledoctor Member Posts: 11,461
    edited July 2017
    So if this is a new kit, in your ADD_KIT section in Weidu, simply put
    ~0x00001000    1~ 
    ... where the usability flag and class number goes. Then the kit will have all the characteristics of the vanilla Necromancer, in addition to whatever other qualities you give it.

    EDIT - derp, wrong I guess. Well, actually you should probably do that too, if it's a Necromancer kit it should have the Necromancer usability flag.

    BUT all is not lost... I believe you can add the necromancer's KITIDS # to your kit's number, and it will take on the Necromancer's hard-coded characteristics. Of course, your kit's KITIDS value will be different from install to install, depending on what other mods are used by a player. SO:

    First, install your kit. At some point afterward, use the technique I describe here to find your kit name in kitlist.2da, identify the row # of your kit's row, and then read the KITIDS value from the 9th column in that row. Now you have your kit's KITIDS value. It can be anything from 0x4029 to 0x4200 or higher. Every new kit added to the game simply increments this number by 1, start at 0x4029 or so. *

    Now, this value will be in a variable which is the output of the code I linked to. What you want to do, is change the 1st digit of that number from 4 to 5. So if your kit is 0x4063, you want to change it to 0x5063. That SHOULD make it behave like a Necromancer.

    As to how to do that... here my knowledge ends. The number in the variable might be in hexadecimal format, or maybe not, I don't really know how to manipulate it to increase it by 1,000. But I'm sure that it can be done with Weidu. You just need help from an expert, so maybe ask around here or even better, over at Gibberlings3.

    I think it is worth figuring this out, because it would open up the ability to create any number of sub-kits within each specialist mage kit, which would be very cool.

    EDIT now that I think about it, it's a matter of bit equality. So maybe it doesn't need to be 5 (i.e. 1 added to 4), maybe it needs to be changed to 1. And of course, whichever one works (if either), the corresponding value in kit.ids needs to be altered as well so it matches up with your kit's value in kitlist.2da.

    * Note one of the implications of this: the Enchanter's KITIDS value is 0x0040, and the Conjurer's is 0x0080. So if you install a bunch of kit mods in your game, and they start at 0x4029, then the 12th kit (0x4040) that gets installed will have the characteristics of an Enchanter, and the 52nd added kit (0x4080) will have the characteristics of a Conjurer. I think it might even actually show up on your character record sheet. As far as I know, there is no way to get around this, save for manually changing that value after all mods have been installed.

    Post edited by subtledoctor on
    Raduziel
  • RaduzielRaduziel Member Posts: 4,716
    Ok, I'm working on a plan B in the mean time to compensate the probable loss of the bonus/penalty.

    I know that Opcode 191 increases the Caster Level by the amount of p1.

    My idea is to make an effect with Opcode 191 (target self / permanent after death / bypass resistance / no dispel) that increases the caster level by one and combine it with Opcode 177 to make the caster level goes up only against a specific foe.

    IDK if it's possible, but I'm gonna try.

    And one opcode (178) says something about a parameter 3. I use DLTC (because NearInfinity hates my PC) and have no idea of where this parameter is. Maybe the camp "Value?", or not?

    To finish this plan B, I want to combine OpC177 with OpC37 and 34 to give save vs a specific foe.

    Ok, we all know that this foe is an undead, but I want to pretend that it's not that obvious.

    Thank you all for the reply. I loved @subtledoctor idea and would certainly use it in a mod for personal use, but I can't see how would be viable to apply this in a mod open for the community - many people don't even know how to use modmerge.

    If the mere usability flag will ban Illusion, 90% of the job is done. The other 10% is listed above. I will just add to the kit cons "no bonus/penalty on Necromancy spells" and that's it.

    I'm a simple man.

  • RaduzielRaduziel Member Posts: 4,716
    Ok, Opcode 177 is kind of making me sad.

    I created an effect (.eff) to use with it, but everytime I select the Opcode 177 and go to "load external effect" instead of it being listed in the field Resource the external effect replaces the Opcode 177.

    Also, my idea of using the Opcode 177 is to give bonus save and caster level against a specific enemy as I stated before, but in a second though I'm feeling like that will not be possible. Any ideas?

  • subtledoctorsubtledoctor Member Posts: 11,461
    Hard to say without seeing specifics why something isn't working. If you are trying to impose a save penalty on spell targets solely for spells cast by your kit, it might be possible, but off the top of my head it sounds complicated enough that I wouldn't bother trying. It might involve making fairly fundamental changes to all spells (like, replacing everything that goes in spellbooks with shell spells that simply use opcode 146/148 to cast the real spells), and any slight bugs in that process might cause game-wide issues. For something like a kit mod, it doesn't seem worth it. My advice would be:

    1) Figure out how to make your kit glom onto the Necromancer KITIDS value; or,

    2) Just choose some other characteristics for the kit that are easier to implement.

  • GrammarsaladGrammarsalad Member Posts: 2,509
    edited July 2017
    Raduziel said:

    Ok, Opcode 177 is kind of making me sad.

    I created an effect (.eff) to use with it, but everytime I select the Opcode 177 and go to "load external effect" instead of it being listed in the field Resource the external effect replaces the Opcode 177.

    Also, my idea of using the Opcode 177 is to give bonus save and caster level against a specific enemy as I stated before, but in a second though I'm feeling like that will not be possible. Any ideas?

    You're using DLTCEP, yes?

    I think that what you are doing is replacing the 177 with the effect that you want the 177 to apply. It's an easy mistake to make with DLTCEP.

    You need to be sure to create your eff separate from the spl/eff that applies it. To avoid error, it might be best to follow this procedure:

    Step 1: Create your spl (spell 1) with the 177 eff (Effect 1). Be sure to reference the second, desired effect (Effect 2) in the resource key.

    Step 2: Save the original spell (i.e. spell 1). Exit the spell.

    Step 3: Go to Edit-->Effect. Load your second effect (Effect 2). Edit, save.

  • RaduzielRaduziel Member Posts: 4,716
    @Grammarsalad

    I've created the .eff separately from the spl.

    Loaded the spl, opened Opcode 177, Load external effect, selected the eff and... it replaces the opcode entirely.

  • GrammarsaladGrammarsalad Member Posts: 2,509
    Raduziel said:

    @Grammarsalad

    I've created the .eff separately from the spl.

    Loaded the spl, opened Opcode 177, Load external effect, selected the eff and... it replaces the opcode entirely.

    You shouldn't do that. :)

    That is the problem. You are replacing your 177 effect with the effect you are trying to create.

  • GrammarsaladGrammarsalad Member Posts: 2,509
    edited July 2017
    You need to COPY your second eff into the override as a separate file. The spell will then apply the eff to the desired target. In total, you will have two files: the spl with the 177 effect, and the eff file which is the effect you want to apply

  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    @Grammarsalad



    Here's the spell. The spell name and the opcode are highlighted



    Here's inside opcode 177. I click the load external effect because the "Browse" button only gives me effects from the game.



    Here are all the effects I pre-made



    Here is inside the effect...



    And here is the god damned thing replaced














  • GrammarsaladGrammarsalad Member Posts: 2,509
    edited July 2017
    Raduziel said:

    @Grammarsalad



    Here's the spell. The spell name and the opcode are highlighted



    Here's inside opcode 177. I click the load external effect because the "Browse" button only gives me effects from the game.




    That is not the 'inside' if the 177. That's your spl. This is the 177 effect:




    Are you clickin on the circled button? If so, you shouldn't. Whatever you load will replace your 177 effect

  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    @Grammarsalad

    Yes, I'm clicking exactly there. How can I put the eff file in the resource field if the Browse option won't let me look for a personally made eff?

    I'm derping here, pretend I'm a toddler eating sand and trying to understand what a condom is, please.

    In time: I swear I'm looking for a DLTCP tutorial for spells, but I can't find one. All people say is "see similar spells" and thousand of thousand of tutorial of how do make an Area using this tool.

  • GrammarsaladGrammarsalad Member Posts: 2,509
    edited July 2017
    Raduziel said:

    @Grammarsalad

    Yes, I'm clicking exactly there. How can I put the eff file in the resource field if the Browse option won't let me look for a personally made eff?

    I'm derping here, pretend I'm a toddler eating sand and trying to understand what a condom is, please.

    Aaah, I see the problem. (LOL!) See here:

    You need to put the File Name of the eff where the arrow is (minus the ".eff"). (suddenly, I have to 'attach' the image, but just open it up)

    You then need to be sure to create and COPY over the eff file in the override.

    In total, you will have two files: the spl with the 177 effect, and the eff file which is the effect you want to apply

    (btw, it's hard to convey 'tone' in writing. I recognize this stuff is confusing at first. No hard feelings here!)

  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    @Grammarsalad

    That's it? Just input the name?

    God, I feel stupid AF.

    If Beamdog ever decides to make me rich paying me millions for my mods I'll give you a 30% cut.

    Thanks :|

    Grammarsalad
  • GrammarsaladGrammarsalad Member Posts: 2,509
    edited July 2017
    Raduziel said:

    @Grammarsalad

    That's it? Just input the name?

    God, I feel stupid AF.

    Thanks :|

    Don't feel stupid! Easy mistake to make. This is a learning process (for all of us!)

    And this is what I was loling:

    I'm derping here, pretend I'm a toddler eating sand and trying to understand what a condom is, please.


    That is funny!

  • RaduzielRaduziel Member Posts: 4,716
    @Grammarsalad

    I use this line for some years. There are four variants:

    1) pretend I'm a toddler

    2) (1) eating sand

    3) (1) (2) and trying to understand what a condom is

    4) (1) (2) (3) while seen my own mom naked.

    The fourth stage is a desperate one, actually I used it only one time while I was trying to understand one thing for my Masters degree (I swear I am smart, despite what I show here :| )

    Grammarsalad
  • GrammarsaladGrammarsalad Member Posts: 2,509
    Raduziel said:

    @Grammarsalad

    I use this line for some years. There are four variants:

    1) pretend I'm a toddler

    2) (1) eating sand

    3) (1) (2) and trying to understand what a condom is

    4) (1) (2) (3) while seen my own mom naked.

    The fourth stage is a desperate one, actually I used it only one time while I was trying to understand one thing for my Masters degree (I swear I am smart, despite what I show here :| )


    As my grandmother used to say (she had a PhD in psychology and a masters in theology) used to say: before you can be good at something, you have to be bad at it (not original, I'm sure)

    Raduziel
  • subtledoctorsubtledoctor Member Posts: 11,461
    edited July 2017

    As my grandmother used to say (she had a PhD in psychology and a masters in theology) used to say: before you can be good at something, you have to be bad at it (not original, I'm sure)

    My favorite childhood quote, from a middle school teacher: "before you can blow up the church, you have to know where to plant the bombs."

    Shockingly relevant through my adult life, actually... (I mean, not in a literal sense... crap - seriously, it's a metaphor!)

  • RaduzielRaduziel Member Posts: 4,716
    @subtledoctor You're lucky I'm no longer in Brazil's Antiterrorism Taskforce. I'll make some calls.

  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    @Grammarsalad @subtledoctor

    Apparently, my kit became incompatible with the Specialists component of T&B

    At character creation no Necromancy spell is available (because T&B doesn't read it as a necromancer) and it is impossible to advance without picking a Necromancy spell (because the game understands that it is a necromancer).

    Any ideas?

  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    Another thing:

    Apparently, this kit won't install in IWDEE. I think that the god damned 1.4 doesn't allow wizard kits.

    Can anyone confirm this suspect?


  • subtledoctorsubtledoctor Member Posts: 11,461
    edited July 2017
    1.4 allows wizard kits, but they cannot appear in the menus. You would have to add a kit tome or the like. (Might & Guile does this for multiclass kits, if you want to see and example.)

    There's probably no way to solve the TnB conflict... at least, not one easily to visualize without hard looks at the code and some testing, which I don't have time for. I maintain, the best bet is to actually make it a Necromancer kit as I described above. That might kill two birds with one stone: 1) maybe it would work with TnB; and 2) you could add an ability to the Necromancer's clab table that triggers a dialogue asking "do you want to be a regular Necromancer, or a Raduziel Necromancer?"

    I know that's beyond your abilities - but I *think* I can see how to do it. Just need to find about half an hour to test.

    Post edited by subtledoctor on
  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    @subtledoctor Way beyond what I can do for now...

    Guys, another question

    The string 24540 (BGEE) says: Spellcaster level increased by (LEVELDIF)

    I have an ability that increases the caster level by 3 and I'm using Opcode 139 to show this string.

    The problem is, the string comes "empty". Is says: Spellcaster level increased by ... and don't state the value.

    I made several tests and I know for sure that the spellcaster level is increased by 3.

    Anyone knows how to make the string says the correct value (like it does for Wild Mages)?

    Same thing for string 24541 (BGEE - Spellcaster level decreased by (LEVELDIF)). This one is put with a Delay to show up at the end of the spell.

    Thanks!

  • kjeronkjeron Member Posts: 2,131
    Raduziel said:


    The string 24540 (BGEE) says: Spellcaster level increased by (LEVELDIF)

    Same thing for string 24541 (BGEE - Spellcaster level decreased by (LEVELDIF)). This one is put with a Delay to show up at the end of the spell.

    Those token's are only intended for the Wildmages level adjustments.
    You will have to add your own strings for each desired value.

  • RaduzielRaduziel Member Posts: 4,716
    kjeron said:

    Raduziel said:


    The string 24540 (BGEE) says: Spellcaster level increased by (LEVELDIF)

    Same thing for string 24541 (BGEE - Spellcaster level decreased by (LEVELDIF)). This one is put with a Delay to show up at the end of the spell.

    Those token's are only intended for the Wildmages level adjustments.
    You will have to add your own strings for each desired value.
    Thanks for the reply.

    How can I do it?

  • RaduzielRaduziel Member Posts: 4,716
    Here's my plan for now:

    1) Use Weidu to add the strings I want to use (stated below).

    2) Use Opcode 139 with dummy values (-1 and -2) for the messages Spellcaster level increased by 3 / Spellcaster level decreased by 3 respectively (thanks @subtledoctor for this amazing tip).

    3) Use Weidu to look at Dialog.tlk searching for the string text and replaces the dummy number for the string number.

    The problem is, IDK how to do steps 1 and 3. And I believe that doing this way will not conflict with any installation, but I'm not sure.

  • subtledoctorsubtledoctor Member Posts: 11,461
    Raduziel said:

    3) Use Weidu to look at Dialog.tlk searching for the string text and replaces the dummy number for the string number.

    Use RESOLVE_STR_REF. It handles both steps 1) and 3) in a single command.

    RaduzielGrammarsalad
  • RaduzielRaduziel Member Posts: 4,716
    edited July 2017
    Forget it, you guys already gave a perfect solution in the HOW TO DO STUFF IN WEIDU topic.

    Thanks!

  • subtledoctorsubtledoctor Member Posts: 11,461
    No you're still an alter boy. The church stands. But that looks fine. (May need to add some pantheses but maybe not... honestly I am not very clear on when Weidu needs parens)

    RaduzielGrammarsalad
Sign In or Register to comment.