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!

Custom Kit.. Never done this before..

LegendLegend Member Posts: 36
edited August 2017 in General Modding
Hey ya'll,

Alright, basically.. I've been playing the Witcher 3, and, well, Ciri is incredible. So I've decided to try and create her in the Baldur's Gate series, and do a playthrough.

What I'd really like to do is create a 'Witcher' class kit (or modify an existing kit, if that is easier), using WeiDu. The thing is, although I've had a little experience modding other games, I've never even attempted it Baldur's Gate - so I've just got a couple of questions..

1) Say I follow a tutorial or something, and make a custom class kit for BG1, and it all works great, amazing - will that carry over to BG2 and beyond? Or would I have to duplicate the mod for BG2 aswell?

2) Do custom class kits have any inherent problems with them? Like, I don't know, breaking any quests, not having an xp limit.. I can't think of much else, but, basically, do I need to worry about them breaking my game at all?

3) Will EEkeeper recognise a custom kit at all? I use EEkeeper quite a lot to change character appearances and such, ideally I'd still like to be able to do that.

--

That's basically all, I think... My plan is pretty simple. I'd just like to add the generic fighter's THACO, attacks per round, and ability to reach grandmaster in certain weapons - to the Shadowdancer kit. It may be absurdly overpowered, but well, I don't mind that for a change.

Or in other words, I'd like a fighter who can hide in plain sight, who is limited to the rogue weapons/armor and HLAs.

I'd also like to rename 'Hide in Plain Sight' to 'Blink', and to make a different class description, and change the kit's name obviously.

None of the above will be too difficult to accomplish right?

Thanks very much for reading!

Comments

  • RaduzielRaduziel Member Posts: 4,716
    edited August 2017
    1) It is entirely possible to make a kit mod compatible for both BG games. You'll probably need to adjust some strings using the PATCH_IF GAME_IS command. And make sure that any spell you eventually use exists in both games. You'll need to install the mod in both games, but definitely can be the same mod.

    2) AFAIK no, because when the game makes a check it looks for a Class, not a Kit. But I'm not 100% sure here. Never had a situation of a mod-kit breaking a quest or interfering with it.

    3) Yes, ShadowKeeper (now called EEKeeper) recognizes all the kits you install.

    About HiPS: it can be tricky. IIRC it is hardcoded for the Shadowdancer and IDK if you can reproduce this feature in another kit. Never played a SD myself, but altering the name of the ability on the character screen is easy (you just need to make a string accordingly). If this ability appears anywhere inside the game - other than in the character sheet - you probably won't be able to alter it.

    There are a lot of people who know lots more about modding than I do, I'm a baby crawling my way into modding.

  • UlbUlb Member Posts: 290
    1) Since we're on the Beamdog forums I assume you play BGEE and BG2EE. In that case your kit will pretty much by default be compatible to both games. (There are some things to consider but those are covered in "the guides" I would assume.)

    2. In general no. Obviously you could create kits that might cause some problems. For example, if you created another "evil paladin kit" the game would still offer you the paladin quest in bg2 and you could (I think) still "fall" from low reputation. In such a case you'd have to modify the responsible game scripts which is somewhat more complex than a simple kit mod.

    3. No problems here.


    You'll probably need to adjust some strings using the PATCH_IF GAME_IS command.


    What would you have to do that for? I've made quite a few kit mods by now and I never had to that.

    About HiPS: it can be tricky. IIRC it is hardcoded for the Shadowdancer and IDK if you can reproduce this feature in another kit.


    Yep, I'm pretty sure it is hardcoded and can not be reproduced.

    I'd also like to rename 'Hide in Plain Sight' to 'Blink', and to make a different class description, and change the kit's name obviously.


    HipS is one of the few exceptions that is not really kit-able (giving classes other than sorcerers or shamans "sorcerer like" casting is another one). However, "blink" sounds like the Shadowdancer's shadowstep ability might be a better fit anyway? That one is easily transferable.

  • subtledoctorsubtledoctor Member Posts: 11,468
    HiPS is hardcoded for the Shadowdancer alone. Sounds like the only way to do that would be to simply give a thac0 bonus to the Shadowdancer and change its name.

    Raduziel
  • LegendLegend Member Posts: 36
    Thanks for the information guys! That is all really handy to know.

    I heard about the hardcoding of HiPS, which is one of the main reasons I was thinking about modifying the Shadowdancer kit itself, rather than creating a new one. I honestly just wasn't sure if it were possible or not (modying a kit), but as it seems it is, I will be giving it a go!

  • RaduzielRaduziel Member Posts: 4,716
    @Ulb

    Is something I often use.

    Let's say that "Spell failed" is a string 222 in BGEE, 356 in BG2EE and 965 in IWDEE and I want a spell/effect to display this string.

    Then I use PATCH_IF GAME_IS to alter the value of the parameter that refers to the string accordingly to the game.

    Worked pretty well so far, but I'm always open to learning something new.

  • UlbUlb Member Posts: 290
    @Raduziel

    I just use this code for string changes:
      COPY ~InfernalMelodist/files/spells/UB#IM0B.SPL~ ~override~
      LPF ALTER_EFFECT
        INT_VAR
          check_globals = 0
          check_headers = 1
          match_opcode = 139 // display string
          match_parameter1 = 225818
      parameter1 = RESOLVE_STR_REF (~Panic~)
      END
    That way I don't have to bother with checking game versions..

    Raduziel
  • RaduzielRaduziel Member Posts: 4,716
    edited August 2017
    @Ulb

    Your code is good to enforce a string display, but how could you use it to prevent a string displaying?

    Like
    PATCH_IF GAME_IS ~bgee~ BEGIN
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 8 match_opcode = 267 parameter1 = 31238 END
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 9 match_opcode = 267 parameter1 = 26453 END
    END

    PATCH_IF GAME_IS ~bg2ee eet~ BEGIN
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 8 match_opcode = 267 parameter1 = 54337 END
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 9 match_opcode = 267 parameter1 = 39752 END
    END

    PATCH_IF GAME_IS ~iwdee~ BEGIN
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 8 match_opcode = 267 parameter1 = 35593 END
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 9 match_opcode = 267 parameter1 = 39752 END
    END
    8 and 9 are dummy values for p1 inside opcode 267 (prevent from displaying specific string).

    When I have to use Opcode 139 I don't bother with strings too:
    COPY	"IHateUndead\Spl\RAUSSS.spl" override
    SAY NAME1 @40
    SAY UNIDENTIFIED_DESC @41

    LPF ALTER_EFFECT INT_VAR match_parameter1 = 1 match_opcode = 139 parameter1 = RESOLVE_STR_REF (@42) END
    LPF ALTER_EFFECT INT_VAR match_parameter1 = 2 match_opcode = 139 parameter1 = RESOLVE_STR_REF (@43) END

    Arunsun
  • UlbUlb Member Posts: 290
    Aye, in that case it makes sense. Never actually had to use this though and I think most kits will get by without it.

    Raduziel
  • RaduzielRaduziel Member Posts: 4,716
    This is useful if the kit has a passive immunity or if an ability of the kit gives it an immunity for some period.

    In terms of mechanics, I agree that it is entirely optional but some players could be confused (and give false bug reports, what would not be their fault) if a character immune to disease, for example, is attacked and the ~Diseased~ string displays.

Sign In or Register to comment.