diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6033bf4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +*.ini text eol=crlf +*.txt text eol=crlf +*.htm text eol=crlf +*.html text eol=crlf +*.gitignore text eol=crlf +*.gitattributes text eol=crlf +*.gif binary +*.ico binary +*.jpg binary +*.png binary +*.exe binary \ No newline at end of file diff --git a/.github/workflows/InfinityAutoPackager.yaml b/.github/workflows/InfinityAutoPackager.yaml new file mode 100644 index 0000000..7431e59 --- /dev/null +++ b/.github/workflows/InfinityAutoPackager.yaml @@ -0,0 +1,35 @@ +# Infinity Auto Packager by AL|EN (alienquake@hotmail.com) +# A tool that automatically generates Infinity Engine mod packages when you publish a release. + +on: + release: + types: [published] +jobs: + InfinityAutoPackager: + runs-on: ubuntu-latest + steps: + + - name: Initial setup + run: | + git lfs uninstall + git config --global core.autocrlf false + git config --global core.ignorecase true + + - name: Clone repository using 'github.ref' from release + uses: actions/checkout@master + + - name: Create Infinity Engine Mod Packages (.iemod and .zip) + uses: ALIENQuake/CreateIEModZipPackage@master + id: CreateIEModZipPackage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload iemod package to latest release + uses: svenstaro/upload-release-action@v1-release + if: github.ref != 'refs/heads/master' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.CreateIEModZipPackage.outputs.PackageBaseName }}.iemod + asset_name: ${{ steps.CreateIEModZipPackage.outputs.PackageBaseName }}.iemod + tag: ${{ github.ref }} + overwrite: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e6b8b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +__macosx +backup/ +$RECYCLE.BIN/ +temp/ +tmp/ + +*.bak +*.tmp +*.bak +*.lnk +Thumbs.db +ehthumbs.db + +*.7z +*.rar +*.zip +*.tar.gz + +.DS_Store +.AppleDouble +.LSOverride +.AppleDB +.AppleDesktop +.apdisk \ No newline at end of file diff --git a/cd_appraiser/appraise.d b/cd_appraiser/appraise.d new file mode 100644 index 0000000..22d692b --- /dev/null +++ b/cd_appraiser/appraise.d @@ -0,0 +1,20 @@ +BEGIN ~cdapprai~ + + IF ~~ THEN BEGIN 0 SAY @102 // Is there another item you need appraised? + IF ~~ THEN REPLY @103 GOTO 2 // Yes, I have another item. + IF ~~ THEN REPLY @104 GOTO 3 // No, that will be all for now. + END + + IF ~~ THEN BEGIN 1 SAY @111 // This item is special, and you may not be able to sell it. + IF ~~ THEN GOTO 0 + END + + IF ~True()~ THEN BEGIN 2 SAY @100 // What type of item do you need appraised? + // category names will be EXTEND_TOPped into this pace + IF ~~ THEN REPLY @101 GOTO 3 // Nothing at the moment. + END + + IF ~~ THEN BEGIN 3 SAY @105 // Farewell. + IF ~~ THEN DO ~DestroySelf()~ EXIT + END + \ No newline at end of file diff --git a/cd_appraiser/cd_appraiser.ini b/cd_appraiser/cd_appraiser.ini new file mode 100644 index 0000000..0a45d10 --- /dev/null +++ b/cd_appraiser/cd_appraiser.ini @@ -0,0 +1,39 @@ +# Never copy this from other mod, always use https://github.com/ALIENQuake/ProjectInfinity/wiki/Adding-metadata-for-mod +# Filename must be the same as tp2 basename, placed at the same folder where +# .tp2 file is located, use UTF8 (without BOM) encoding, everything is optional + +# ini section header is required to avoid false detection +[Metadata] + +# Full name of the mod, without the version number, without the list of supported games +Name = Bardic Appraisal + +# Author name or nick, don't use an email address +Author = CamDawg + +# Short description of the mod, main goals, features etc +Description = The Lore From Learning mod is a small WeiDU mod that adds lore bonuses to your main character as you learn and adventure throughout the game. The bonuses (and the stimuli that provide them) are, by design, meant to be minor and enhance the role-playing aspect of the game. + +# Web address of mod readme file (filename is case-sensitive!) You can link to txt, md, html, pdf etc. +Readme = https://gibberlings3.github.io/Documentation/readmes/readme-cd_appraisal.html + +# Web address of mod dedicated forum or forum thread +Forum = https://www.gibberlings3.net/forums/forum/28-miscellaneous-released-mods/ + +# Web address of mod personal Homepage, no need to duplicate with a mod dedicated forum +# Homepage = https://www.gibberlings3.net/mods/tweaks/lore + +# if you use GitHub.com, simply use https://github.com/AccountOrOrgName/RepositoryName +# read more about Delta Updates https://github.com/ALIENQuake/ProjectInfinity/wiki/Delta-Updates-for-mods-hosted-at-Github +Download = https://github.com/Gibberlings3/Bardic_Appraisal + +# Type of LABELs used by the mod, read more here https://www.gibberlings3.net/forums/topic/32516-tutorial-what-is-label +LabelType = GloballyUnique + +# Dynamic Install Order, use mod ID as tp2 name without file extension and `setup-` prefix + +# This mod must be installed *before* the mods listed after the keyword +# Before = EET_end + +# This mod must be installed *after* the mods listed after the keyword +# After = EET \ No newline at end of file diff --git a/cd_appraiser/cd_appraiser.tp2 b/cd_appraiser/cd_appraiser.tp2 new file mode 100644 index 0000000..55eee0c --- /dev/null +++ b/cd_appraiser/cd_appraiser.tp2 @@ -0,0 +1,186 @@ +BACKUP ~cd_appraiser/backup~ // location to store files for +SUPPORT ~http://gibberlings3.net/forums/index.php?showforum=34~ // URL displayed if install fails +AUTO_EVAL_STRINGS + +ALWAYS + + ACTION_IF ((FILE_EXISTS ~dlc/sod-dlc.zip~) OR (FILE_EXISTS ~sod-dlc.zip~)) THEN BEGIN FAIL @1001 END // DLC Merge check + + // convert strings to UTF-8 for BGEE/BG2EE + ACTION_DEFINE_ARRAY cdreload BEGIN game_strings END + ACTION_DEFINE_ARRAY cdnoconvert BEGIN weidu game_strings_ee END // List of tra files that contain ONLY strings for the WeiDU installer and NOT game content + LAF HANDLE_CHARSETS INT_VAR infer_charsets = 1 STR_VAR tra_path = ~cd_appraiser/lang~ noconvert_array = cdnoconvert reload_array = cdreload END + +END + +VERSION ~v1~ + +README ~cd_appraiser/lang/%LANGUAGE%/readme-cd_appraiser.html~ ~cd_appraiser/readme-cd_appraiser.html~ + +LANGUAGE + ~English~ + ~en_us~ + ~cd_appraiser/lang/en_us/game_strings.tra~ + ~cd_appraiser/lang/en_us/weidu.tra~ + +/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ +/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ +///// \\\\\ +///// Stuff n' junk \\\\\ +///// \\\\\ +/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ +/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\ + +BEGIN @1000 +REQUIRE_PREDICATE FILE_EXISTS_IN_GAME ~kitlist.2da~ @1002 +LABEL ~cd_bardic_appraisal~ + +MKDIR ~cd_appraiser/working~ + +ACTION_IF GAME_IS ~bgee bg2ee eet iwdee~ BEGIN + LOAD_TRA ~cd_appraiser/lang/%LANGUAGE%/game_strings_ee.tra~ +END + +OUTER_SET default_bard = 9562 +OUTER_SET valid_range = 78 // don't bother with item types > 77 until I see otherwise + +ACTION_IF GAME_IS iwdee BEGIN + OUTER_SET default_bard = 37236 +END + +OUTER_FOR (type = 0 ; type < valid_range ; ++type) BEGIN + + COPY ~cd_appraiser/item_type_array.tpa~ ~cd_appraiser/working/item_type_array.tpa~ EVALUATE_BUFFER + REINCLUDE ~cd_appraiser/working/item_type_array.tpa~ + OUTER_SPRINT $cd_valid_types("%type%") "%string%" + +END + +ACTION_FOR_EACH invalid IN 28 33 BEGIN // exclude gold pieces amd h2h weapons + OUTER_SET $cd_valid_types("%invalid%") = 0 +END + +COPY ~cd_appraiser/cdapprai.bam~ ~override~ + ~cd_appraiser/cdapprai.eff~ ~override~ +COPY ~cd_appraiser/cdapprai.cre~ ~override~ + SAY 0x08 @112 + SAY 0x0c @112 + +COPY ~cd_appraiser/cdapprai.spl~ ~override~ + SAY 0x08 @112 + SAY 0x0c @112 + SAY 0x50 @113 + SAY 0x54 @113 + +COMPILE ~cd_appraiser/cdapprai.baf~ + +ACTION_CLEAR_ARRAY cd_bard_clabs +ACTION_DEFINE_ASSOCIATIVE_ARRAY cd_bard_clabs BEGIN // start with base class tables + clabba01 => "%default_bard%" // generic bard abilities +END + +// add kit tables dynamically by reading kitlist +COPY_EXISTING ~kitlist.2da~ ~override~ + COUNT_2DA_ROWS 9 rows + FOR (index = 2 ; index < rows ; ++index) BEGIN // skip reserve row + READ_2DA_ENTRY index 8 9 class + PATCH_IF class = 5 BEGIN + READ_2DA_ENTRY index 4 9 desc + READ_2DA_ENTRY index 5 9 clab + DEFINE_ASSOCIATIVE_ARRAY cd_bard_clabs BEGIN "%clab%" => "%desc%" END + END + END + BUT_ONLY + +ACTION_PHP_EACH cd_bard_clabs AS clab => desc_strref BEGIN + + ACTION_IF FILE_EXISTS_IN_GAME ~%clab%.2da~ BEGIN + + APPEND ~%clab%.2da~ ~ABILITYX GA_CDAPPRAI CDREPLACE~ UNLESS ~GA_SPCL922~ + + COPY_EXISTING ~%clab%.2da~ ~override~ + COUNT_2DA_COLS cols + FOR (index = 3 ; index < cols ; ++index) BEGIN + REPLACE_TEXTUALLY ~CDREPLACE~ ~**** CDREPLACE~ + END + REPLACE_TEXTUALLY ~CDREPLACE~ ~****~ + PRETTY_PRINT_2DA + BUT_ONLY + + ACTION_GET_STRREF desc_strref desc + OUTER_PATCH_SAVE desc "%desc%" BEGIN + PATCH_IF desc_strref = default_bard BEGIN + SPRINT old @115 // main bard descript doesn't have 'disadvantages' line + SPRINT break ~~ + END ELSE BEGIN + SPRINT old @116 + SPRINT break ~ +~ + END + SPRINT new @117 + REPLACE_TEXTUALLY ~%new%~ ~~ // purge in case the text is already there + REPLACE_TEXTUALLY ~[%LNL%%MNL%%WNL%]*\([%LNL%%MNL%%WNL%]\)\(%old%\)~ ~\1%new%%break%\2~ // swap text + END + STRING_SET_EVALUATE desc_strref "%desc%" + + END + +END + +COMPILE ~cd_appraiser/appraise.d~ + +COPY_EXISTING_REGEXP GLOB ~^.+\.itm$~ ~override~ + READ_LONG 0x18 flags ELSE 0 + PATCH_IF ((flags & BIT2) = BIT2) BEGIN // if droppable + READ_SHORT 0x1c item_type + PATCH_IF ((item_type >= 0) AND (item_type < valid_range) AND ($cd_valid_types("%item_type%") != 0))BEGIN + SET type_name = $cd_valid_types("%item_type%") + READ_LONG 0x0c string + PATCH_IF NOT (string >= 0 && string < 9999999) BEGIN READ_LONG 0x08 string END // try unidentified name if identified name invalid + PATCH_IF (string >= 0 && string < 9999999) BEGIN // skip entirely if unidentified is also an invlaid string + SET critical_item = 0 + READ_LONG 0x34 price + READ_LONG 0x0c string + PATCH_IF NOT (string >= 0 && string < 9999999) BEGIN READ_LONG 0x08 string END // use unidentified name if identified name invalid + PATCH_IF ((flags & BIT0) = BIT0) BEGIN SET critical_item = 1 END + DEFINE_ASSOCIATIVE_ARRAY ~cd_%item_type%_array~ BEGIN "%string%","%critical_item%","%SOURCE_RES%" => "%price%" END + PATCH_IF !FILE_EXISTS ~cd_appraiser/working/template_%item_type%.d~ BEGIN + INNER_ACTION BEGIN + COPY ~cd_appraiser/template.d~ ~cd_appraiser/working/template_%item_type%.d~ + EVALUATE_BUFFER // should set item_type + END + END + END + END + END + BUT_ONLY + +OUTER_FOR (index = valid_range ; index >= 0 ; --index) BEGIN + + ACTION_IF FILE_EXISTS ~cd_appraiser/working/template_%index%.d~ BEGIN + COPY ~cd_appraiser/working/template_%index%.d~ ~cd_appraiser/working/template_%index%.d~ + PHP_EACH ~cd_%index%_array~ AS params => price BEGIN + PATCH_IF price BEGIN + SPRINT appraised @109 + INNER_PATCH_SAVE appraised ~%appraised%~ BEGIN + REPLACE_TEXTUALLY EXACT_MATCH ~PRICE~ ~%price%~ + END + END ELSE BEGIN + SPRINT appraised @110 + END + REPLACE_EVALUATE ~OR(\([0-9]+\))~ BEGIN + SET or_count = (%MATCH1% + 1) + END ~OR(%or_count%) PartyHasItemIdentified("%params_2%")~ + REPLACE_TEXTUALLY ~\(//cd_insert_reply_here\)~ ~~~~~ IF ~PartyHasItemIdentified("%params_2%")~ THEN REPLY #%params_0% DO ~SetGlobal("cd_appraisal","LOCALS",%index%)~ GOTO cd_%params_2% +\1~~~~~ + REPLACE_TEXTUALLY ~\(//cd_insert_state_here\)~ ~~~~~ IF ~~ BEGIN cd_%params_2% SAY ~%appraised%~ + IF ~~ THEN GOTO %params_1% + END +\1~~~~~ + END + + COMPILE ~cd_appraiser/working/template_%index%.d~ + + END + +END diff --git a/cd_appraiser/cdapprai.baf b/cd_appraiser/cdapprai.baf new file mode 100644 index 0000000..ca94faa --- /dev/null +++ b/cd_appraiser/cdapprai.baf @@ -0,0 +1,17 @@ +IF + NumTimesTalkedTo(0) +THEN + RESPONSE #100 + SetGlobalTimer("summoned","LOCALS",6) + StartDialogNoSet(LastSummonerOf(Myself)) +END + +IF + OR(2) + !NumTimesTalkedTo(0) + GlobalTimerExpired("summoned","LOCALS") +THEN + RESPONSE #100 + DestroySelf() +END + diff --git a/cd_appraiser/cdapprai.bam b/cd_appraiser/cdapprai.bam new file mode 100644 index 0000000..a1ffe32 Binary files /dev/null and b/cd_appraiser/cdapprai.bam differ diff --git a/cd_appraiser/cdapprai.cre b/cd_appraiser/cdapprai.cre new file mode 100644 index 0000000..a27d5b5 Binary files /dev/null and b/cd_appraiser/cdapprai.cre differ diff --git a/cd_appraiser/cdapprai.eff b/cd_appraiser/cdapprai.eff new file mode 100644 index 0000000..51a40d8 Binary files /dev/null and b/cd_appraiser/cdapprai.eff differ diff --git a/cd_appraiser/cdapprai.spl b/cd_appraiser/cdapprai.spl new file mode 100644 index 0000000..5f83a1d Binary files /dev/null and b/cd_appraiser/cdapprai.spl differ diff --git a/cd_appraiser/desktop.ini b/cd_appraiser/desktop.ini new file mode 100644 index 0000000..7fe38ca --- /dev/null +++ b/cd_appraiser/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=style\g3.ico,0 +[ViewState] +Mode= +Vid= +FolderType=Generic diff --git a/cd_appraiser/item_type_array.tpa b/cd_appraiser/item_type_array.tpa new file mode 100644 index 0000000..8f86c49 --- /dev/null +++ b/cd_appraiser/item_type_array.tpa @@ -0,0 +1 @@ +OUTER_SET string = RESOLVE_STR_REF ( @%type% ) \ No newline at end of file diff --git a/cd_appraiser/lang/en_us/game_strings.tra b/cd_appraiser/lang/en_us/game_strings.tra new file mode 100644 index 0000000..3f339e3 --- /dev/null +++ b/cd_appraiser/lang/en_us/game_strings.tra @@ -0,0 +1,98 @@ + @0 = ~Miscellaneous~ + @1 = ~Amulets and necklaces~ + @2 = ~Armor~ + @3 = ~Belts and girdles~ + @4 = ~Boots~ + @5 = ~Arrows~ + @6 = ~Bracers and gaunlets~ + @7 = ~Headgear~ + @8 = ~Keys~ + @9 = ~Potions~ + @10 = ~Rings~ + @11 = ~Scrolls~ + @12 = ~Shields~ + @13 = ~Food~ + @14 = ~Bullets~ + @15 = ~Bows~ + @16 = ~Daggers~ + @17 = ~Maces and clubs~ + @18 = ~Slings~ + @19 = ~Small swords~ + @20 = ~Large swords~ + @21 = ~Hammers~ + @22 = ~Morning stars~ + @23 = ~Flails~ + @24 = ~Darts~ + @25 = ~Axes~ + @26 = ~Quarterstaves~ + @27 = ~Crossbows~ + @28 = ~Hand-to-hand weapons~ + @29 = ~Spears~ + @30 = ~Halberds~ + @31 = ~Bolts~ + @32 = ~Cloaks and robes~ + @33 = ~Gold pieces~ + @34 = ~Gems~ + @35 = ~Wands~ + @36 = ~Containers~ + @37 = ~Books~ + @38 = ~Familiars~ + @39 = ~Tattoos~ + @40 = ~Lenses~ + @41 = ~Bucklers~ + @42 = ~Candles~ + @43 = ~Child bodies~ + @44 = ~Clubs~ + @45 = ~Female bodies~ + @46 = ~Keys~ + @47 = ~Large Shields~ + @48 = ~Male bodies~ + @49 = ~Medium Shields~ + @50 = ~Notes~ + @51 = ~Rods~ + @52 = ~Skulls~ + @53 = ~Small Shields~ + @54 = ~Spider bodies~ + @55 = ~Telescopes~ + @56 = ~Drinks~ + @57 = ~Great swords~ + @58 = ~Bags~ + @59 = ~Furs and pelts~ + @60 = ~Leather armor~ + @61 = ~Studded leather armor~ + @62 = ~Chain mail~ + @63 = ~Splint mail~ + @64 = ~Plate mail~ + @65 = ~Full plate mail~ + @66 = ~Hide armor~ + @67 = ~Robe~ + @68 = ~Scale mail~ + @69 = ~Bastard sword~ + @70 = ~Scarves~ + @71 = ~Rations~ + @72 = ~Hats~ + @73 = ~Gloves~ + @74 = ~Eyeballs~ + @75 = ~Earrings~ + @76 = ~Teeth~ + @77 = ~Bracelets~ + +@100 = ~What type of item do you need appraised?~ +@101 = ~Nothing at the moment.~ +@102 = ~Is there another item you need appraised?~ +@103 = ~Yes, I have another item of a different type.~ +@104 = ~No, that will be all for now.~ +@105 = ~Farewell.~ +@106 = ~Which item would you like appraised?~ +@107 = ~Actually, let me choose a different item type.~ +@108 = ~I've changed my mind, I don't need anything appraised right now.~ +@109 = ~This item is worth PRICE gold.~ // translate everything in this line except PRICE as it will by dynamically replaced +@110 = ~This item has no value, I'm afraid.~ // special reply for price = 0 +@111 = ~This item is special, and you may not be able to sell it.~ // special, extra line if item is flagged as critical item +@112 = ~Bardic Appraisal~ +@113 = ~This at-will ability allows the bard to evaluate the value of any identified item in the party.~ +@114 = ~Yes, I have another item of the same type.~ +@115 = ~- Alignment restricted to any neutral.~ // doesn't really matter for oBG2, see _ee version +@116 = ~Disadvantages:~ // from bard kit descriptions +@117 = ~- Can appraise an item's value as an at-will ability. +~ // extra line is intentional, don't remove \ No newline at end of file diff --git a/cd_appraiser/lang/en_us/game_strings_ee.tra b/cd_appraiser/lang/en_us/game_strings_ee.tra new file mode 100644 index 0000000..ff11e3e --- /dev/null +++ b/cd_appraiser/lang/en_us/game_strings_ee.tra @@ -0,0 +1,4 @@ +// 115, 117 only here because of the em-dash +@115 = ~– Alignment restricted to any neutral.~ // last line of bard abilities in generic bard descript +@117 = ~– Can appraise an item's value as an at-will ability. +~ // extra line is intentional, don't remove \ No newline at end of file diff --git a/cd_appraiser/lang/en_us/weidu.tra b/cd_appraiser/lang/en_us/weidu.tra new file mode 100644 index 0000000..8e7d5a5 --- /dev/null +++ b/cd_appraiser/lang/en_us/weidu.tra @@ -0,0 +1,3 @@ +@1000 = ~Bardic Appraising~ +@1001 = ~DLC Merge is required before mods can be installed on this game. Check the readme for more information and a link to download DLC Merge.~ +@1002 = ~This mod requires a more modern engine that supports kit and kit abilities.~ diff --git a/cd_appraiser/lang/iconv/iconv.exe b/cd_appraiser/lang/iconv/iconv.exe new file mode 100644 index 0000000..fb2d0d2 Binary files /dev/null and b/cd_appraiser/lang/iconv/iconv.exe differ diff --git a/cd_appraiser/lang/iconv/libcharset1.dll b/cd_appraiser/lang/iconv/libcharset1.dll new file mode 100644 index 0000000..aec4d23 Binary files /dev/null and b/cd_appraiser/lang/iconv/libcharset1.dll differ diff --git a/cd_appraiser/lang/iconv/libiconv2.dll b/cd_appraiser/lang/iconv/libiconv2.dll new file mode 100644 index 0000000..fb1ffba Binary files /dev/null and b/cd_appraiser/lang/iconv/libiconv2.dll differ diff --git a/cd_appraiser/lang/iconv/libintl3.dll b/cd_appraiser/lang/iconv/libintl3.dll new file mode 100644 index 0000000..4f309be Binary files /dev/null and b/cd_appraiser/lang/iconv/libintl3.dll differ diff --git a/cd_appraiser/readme-cd_appraiser.html b/cd_appraiser/readme-cd_appraiser.html new file mode 100644 index 0000000..c0f7d86 --- /dev/null +++ b/cd_appraiser/readme-cd_appraiser.html @@ -0,0 +1,164 @@ + + +
+A Gibberlings Three Mod
+ Authors: CamDawg
+ On the Web: Project Page and Forum
Version 1
+ Languages: English
+ Platforms: Windows, Mac OS X, and Linux
+ GitHub: Gibberlings3/Bardic_Appraisal
The Bardic Appraisal mod is a small WeiDU mod that adds an ability to bards (including all kits) that allows them to appraise any identified item in the party. The value reported does not include markup or depreciation.
+The Bardic Appraisal mod is designed to work with any variant of the Infinity Engine that supports kits--the orignial Baldur's Gate II (or conversion mods based upon it, such as BGT or Tutu) as well as the Enhanced Editions of Baldur's Gate, Baldur's Gate II, or Icewind Dale.
+In terms of installation order, Bardic Appraisal should generally be installed after any mods that add items. The mod will scan all items at install time in order to build its appraisal routine, so any items which are added after this mod will not be included.
+At present there is one minor issue: many books in the game are actually classified as 'miscellaneous' items so it's possible they will not show up under the 'book' category when appraising items.
+If you should encounter any bugs, please report them to the authors at G3's Miscellaneous Released Mods forum. In addition, Bardic Appraisal is available on GitHub, so fixes and changes can be submitted by the community.
+Special Note for Siege of Dragonspear from Steam/GOG
+ Good Old Games (GOG) and Steam both package the additional content for Siege of Dragonspear in a method that WeiDU, the tool used to install this mod, cannot access. You must run a program called DLC Merger on your SoD installation before you can install this or any other WeiDU-based mod.
Windows
+ The Bardic Appraisal mod for Windows is distributed as a self-extracting archive and includes a WeiDU installer. To install, simply double-click the archive and follow the instructions on screen.
Alternatively, the files can be extracted into your game directory using 7zip or WinRAR. When properly extracted, your game directory will contain setup-cd_appraisal.exe and the folder cd_appraisal. To install, double-click setup-cd_appraisal.exe and follow the instructions on screen.
+You can run setup-cd_appraisal.exe in your game folder to reinstall, uninstall or otherwise change components.
+Mac OS X
+ The Bardic Appraisal mod for Mac OS X is distributed as a compressed tarball and includes a WeiDU installer.
First, extract the files from the tarball into your game directory. When properly extracted, your game directory will contain setup-cd_appraisal, setup-cd_appraisal.command, and the folder cd_appraisal. To install, double-click setup-cd_appraisal.command and follow the instructions on screen.
+You can run setup-cd_appraisal.command in your game folder to reinstall, uninstall or otherwise change components.
+Linux
+ The Bardic Appraisal mod for Linux is distributed as a compressed tarball and does not include a WeiDU installer.
Extract the contents of the mod to the folder of the game you wish to modify.
+Download the latest version of WeiDU for Linux from WeiDU.org and copy WeiDU and WeInstall to /usr/bin. Following that, open a terminal, cd to your game installation directory, run tolower and answer Y to both queries. You can avoid running the second option (linux.ini) if you've already ran it once in the same directory. To save time, the archive is already tolowered, so there's no need to run the first option (lowercasing file names) either if you've extracted only this mod since the last time you lowercased file names. If you're unsure, running tolower and choosing both options is the safe bet.
+To install, run WeInstall cd_appraisal in your game folder. Then run wine BGMain.exe and start playing.
+ Note for Complete Uninstallation
+ In addition to the methods above for removing individual components, you can completely uninstall the mod using setup-cd_appraisal --uninstall at the command line to remove all components without wading through prompts. .
The Bardic Appraisal has one component. It adds a single, at-will ability for any bard, kitted or unkitted. The ability will prompt a dialogue which will allow you to appraise any identified item in the party's possession. Note that the prices reported by the skill will likely not reflect the actual value you can sell an item for due to the following factors:
+The Bardic Appraisal mod was created by CamDawg. For issues, suggestions and + general feedback, G3's Miscellaneous Released Mods forum are the best resource. Visit the Gibberlings + Three Forums for information on this and any other Gibberlings Three + mods on which we may be working.
+Like Lore from Learning, Bardic Appraisal was inspired by a suggestion from Cahir as he was playing IWDEE. So while he's already awesome (he's been a long-time Polish translator for other G3 mods), I'd like to thank Cahir for the original inspiration for the mod.
+Tools Used in Creation
+The modding community for the Infinity Engine has been going strong for + nearly two decades now, and is the culmination of thousands of unpaid modding + hours by fellow fans of the game. Modders produce their best work and players + get the best, well-supported mods when we all work together.
+There are two big ways to upset this harmony. One is to claim someone else's + work as your own. The second is to host and redistribute a mod without permission + from the author(s).
+Be kind to your fellow players and modders. Don't do either.
+Version 1 - August 22, 2021
+