Jump to content

Welcome to the Bardic Appraisal Mod


Recommended Posts

7 hours ago, temnix said:

If whoever had that idea originally had wanted to avoid interference of file names, he should have

I'll make sure to tell him. He will no doubt be happy to be corrected, all these years later.

7 hours ago, temnix said:

I'm not surprised this "community" has stuck with an inferior solution through the years

I know. At some point, surely everyone should have foreseen/prophesied the coming of your genius, and put in the time to change thousands of instances across hundreds of mods, to no actual effect, rather than foolishly sticking with an inferior solution just because it works perfectly. What is wrong with these people.

7 hours ago, temnix said:

In effect, suffixes allow free file naming, only shorter

Congratulations, you have the lead in the "craziest thing I've heard today" contest. Someone will be in touch with your prize money if you win.

Edited by subtledoctor
Link to comment

Strange, this mod prevents running of change-log utility while it is installed:

Quote

[WeiDU.exe] WeiDU version 24600
In state 1414, I expected one of these tokens:
  [38] PLUS
  [48] BEGIN
  [64] LT
  [80] MINUS
  [107] BASR
  [138] GT
  [151] BXOR
  [162] DIVIDE
  [198] BLSR
  [223] BOR
  [229] BLSL
  [246] MODULO
  [250] QUESTION
  [253] TIMESTIMES
  [298] OR
  [319] AND
  [330] TIMES
  [338] EQUALSEQUALS
  [361] LTE
  [388] THEN
  [392] BAND
  [415] EQUALS
  [434] GTE
  [436] NOTEQUALS
Parse error (state 1414) at ~~

[CD_APPRAISER/CD_APPRAISER.TP2] PARSE ERROR at line 132 column 1-41
Near Text: ~trigger.ids~
    GLR parse error

[CD_APPRAISER/CD_APPRAISER.TP2]  ERROR at line 132 column 1-41
Near Text: ~trigger.ids~
    Parsing.Parse_error
ERROR: parsing [CD_APPRAISER/CD_APPRAISER.TP2]: Parsing.Parse_error

FATAL ERROR: Parsing.Parse_error
 

When uninstalled Change-log works normally. Any workaround beside installing this mod last and installing/uninstalling according to need? 

Link to comment

Try updating your weidu.exe to version 247. It looks like it's trying to parse tp2's with v247 syntax (e.g. Bardic Appraisal using RESOURCE_CONTAINS) and choking.

edit: You can just rename setup-cd_appraiser.exe to weidu.exe, since it's already v247.

Edited by CamDawg
Link to comment
29 minutes ago, CamDawg said:

Try updating your weidu.exe to version 247. It looks like it's trying to parse tp2's with v247 syntax (e.g. Bardic Appraisal using RESOURCE_CONTAINS) and choking.

edit: You can just rename setup-cd_appraiser.exe to weidu.exe, since it's already v247.

It worked like a charm, thank you! :)

Edited by Greenhorn
Link to comment
4 hours ago, Quester said:

@CamDawg, it would be nice if you could look into adding compatibility between Bardic Appraisal and the multiclass bards introduced by Might and Guile.

If interested in adding this, the code might be something like:

Spoiler

 

ACTION_IF (FILE_EXISTS_IN_GAME ~d5__bards.d5~) BEGIN
  COPY_EXISTING ~kitlist.2da~ ~override~
    COUNT_2DA_COLS cols
    READ_2DA_ENTRIES_NOW rows cols
    FOR (row = 1; row < rows; ++row) BEGIN
      READ_2DA_ENTRY_FORMER rows row 1 kit
      READ_2DA_ENTRY_FORMER rows row 5 clab
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_BARD~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_BLADE~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_JESTER~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_SKALD~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_GALLANT~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_MEISTER~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_JINXER~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_ELEGIST~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_AGENT~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_LORESINGER~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_LORESINGER_CT~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_HEXBLADE~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_HERALD~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_WHISTLER~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_BLADESINGER~) BEGIN
        SPRINT $mng_bards(~%clab%~)~1~
      END
    END  
  BUT_ONLY
  ACTION_PHP_EACH mng_bards AS table => ind BEGIN
    ACTION_IF (FILE_EXISTS_IN_GAME ~%table%.2da~) BEGIN
      [append or whatever]
    END
  END
END

(Yes, the category of "bards" with that mod encompasses 6 mage/thief kits, 4 fighter/thief kits, 1 fighter/mage/thief kit, 1 fighter/thief kit, 1 cleric/thief kit, 1 thief kit, and 1 cleric kit. And a partridge in a pear tree.)

Edited by subtledoctor
Link to comment

Hold on a second, doc, that won't work. Multiclass kits stop using the kit clab 2das afterall and those innates then need to be applied directly to the QD multiclass helper SPLs/EFFs because rerunning the qd_multiclass function duplicates all kit effects on the innates, as @Skitia proved accidentally with Vienxay's custom kit on EET.

Link to comment
13 hours ago, Graion Dilach said:

Hold on a second, doc, that won't work. Multiclass kits stop using the kit clab 2das afterall and those innates then need to be applied directly to the QD multiclass helper SPLs/EFFs because rerunning the qd_multiclass function duplicates all kit effects on the innates, as @Skitia proved accidentally with Vienxay's custom kit on EET.

Derp, you’re right. Boy I’m rusty at this stuff. So then something like:

ACTION_IF (FILE_EXISTS_IN_GAME ~d5__bards.d5~) BEGIN
  COPY_EXISTING ~kit.ids~ ~override~
    COUNT_2DA_COLS cols
    READ_2DA_ENTRIES_NOW rows cols
    FOR (row = 1; row < rows; ++row) BEGIN
      READ_2DA_ENTRY_FORMER rows row 0 kit
      READ_2DA_ENTRY_FORMER rows row 1 code
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_BARD~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_BLADE~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_JESTER~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_SKALD~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_GALLANT~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_MEISTER~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_JINXER~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_ELEGIST~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_AGENT~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_HEXBLADE~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_HERALD~) BEGIN
        SPRINT $mng_bard_mages(~%code%~)~1~
      END
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_LORESINGER_CT~) BEGIN 
         SPRINT $mng_bard_thieves(~%code%~)~1~ 
      END 
      PATCH_IF (~%kit%~ STRING_EQUAL_CASE ~D5_BLADESINGER~) BEGIN
        SPRINT $mng_bard_thieves(~%code%~)~1~
      END
    END  
  BUT…ONLY
  COPY…EXISTING ~qd_mcm01.spl~ ~override~
    PHP…EACH mng_bard_mages AS kit_code => ind BEGIN
      LPF ADD_SPELL_EFFECT INT_VAR opcode=177 target=2 parameter1=%kit_code% parameter2=9 timing=1 STR_VAR resource=~BARDAPPR~ END
    END
  IF_EXISTS BUT_ONLY
  COPY…EXISTING ~qd_mct01.spl~ ~override~
    PHP_EACH mng_bard_thieves AS kit_code => ind BEGIN
      LPF ADD_SPELL_EFFECT INT_VAR opcode=177 target=2 parameter1=%kit_code% parameter2=9 timing=1 STR_VAR resource=~BARDAPPR~ END
    END
  IF_EXISTS BUT_ONLY
END

…where BARDAPPR.EFF is a 171 effect giving the bardic appraisal innate ability.

The code in the earlier post would be used for D5_LORESINGER and D5_ WHISTLER which are single-class kits.

 

Edited by subtledoctor
Link to comment
3 hours ago, Graion Dilach said:

Hold on a second, doc, that won't work. Multiclass kits stop using the kit clab 2das afterall and those innates then need to be applied directly to the QD multiclass helper SPLs/EFFs because rerunning the qd_multiclass function duplicates all kit effects on the innates, as @Skitia proved accidentally with Vienxay's custom kit on EET.

Because I didn't even get what you were saying - would that be something that would affect Grey the Dog's (hack of a) and my Solaufein's kits?

Link to comment

Argent77's kit library also uses qd_multi for the multiclasses, it's just better integrated there IMO. To summarize the basics:

Multiclass kits can't have their own clab table and the entry in kitlist.2da is ignored. They do use clab tables though... the original unkitted class's.

The qd_multi library then just runs with the above limitation via applying a standardized spell to the base class clabs (starting with an op318 to ignore the trueclass) and then all the would-be clab effects are applied through op177s and EFF containers filtering on the multiclass kit. It's a fairly straightforward concept, once one realizes what it's doing (true, it took me a while as well).

Edited by Graion Dilach
Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...