Restricting Specialist's extra Spell Slots to Specialist's School Spells
kjeron
Member Posts: 2,368
This mod aims to implement proper spell slot restrictions for Specialist mages, forcing them to choose a spell from their school for their bonus spell slots.
Weidu should be able to install it so long as the section dealing with the Mage Spellbook hasn't already been altered. It uses REPLACE_TEXTUALLY for all its changes, if there is a better way I am open to suggestions.
The marker effects for this are applied to specialists at level 1 through the CLAB, so games already in progress will require force-casting a spell on existing specialists through the console. This marker effect will remain if the mod is uninstalled, but does nothing by itself and will not affect gameplay otherwise. This marker is a dummy sequencer, so the Sequencer Active portrait Icon will always be in effect, and it will show up as a blank line in the active Contingencies list.
It needs to be installed after any mods that add or alter Mage spells or creatures with specialist kits, so they can receive proper recognition.
ConsoleCast:
Only the 8 specialist mage kits will receive the marker, it will have no affect on others, including Wildmages and Mod-added kits. This effect will stack if used multiple times on the same creature.
Two install modes, each with option for 1 or 2 spell slot devotion:
- First option restricts slots even if none of a given school/level exist in game.
- Second does not restrict slots for a given school/level if none exist. This will give free spell selection for Schools(levels): Illusion(9), Transmutation(5, 8), Divination(7-9), and Enchantment(6-9) without modded added/altered spells. At present this option will only detect spell filenames SPWI[1-9][00-50].
Two optional components:
- First causes the extra spells slots from Edwin's Amulet to be treated the same way, requiring Conjuration Spells be put in them. The effect added to the Amulet can be added to anything, using "MSCHOOL#" as the resource, where # is the Spell School(as assigned to spells), forcing an extra slot of every spell level to go to that spell school.
- Second causes items that double spell slots(Evermemory) to also double forced specialist school slots.
Specialist School spells and slots are identified by colored background, specific to each school border:
If you would prefer to manually edit UI.Menu:
Comment out "INCLUDE ~%MOD_FOLDER%\UIMENU.tpa~" in the "SPECIALIST_BOOK.tp2" file, its the last line.
Replace these three functions:
and all of menu 'MAGE':
Replaced initial version with colored version.
Added option to exclude empty spell levels.
Fixed an issue updating CLAB's.
Fixed issue with allowing non-standard spell filenames in specialist slots.
Weidu should be able to install it so long as the section dealing with the Mage Spellbook hasn't already been altered. It uses REPLACE_TEXTUALLY for all its changes, if there is a better way I am open to suggestions.
The marker effects for this are applied to specialists at level 1 through the CLAB, so games already in progress will require force-casting a spell on existing specialists through the console. This marker effect will remain if the mod is uninstalled, but does nothing by itself and will not affect gameplay otherwise. This marker is a dummy sequencer, so the Sequencer Active portrait Icon will always be in effect, and it will show up as a blank line in the active Contingencies list.
It needs to be installed after any mods that add or alter Mage spells or creatures with specialist kits, so they can receive proper recognition.
ConsoleCast:
C:Eval("ActionOverride(Myself,ReallyForceSpellRES(\"MSCHOOL\",Msyelf))")
Only the 8 specialist mage kits will receive the marker, it will have no affect on others, including Wildmages and Mod-added kits. This effect will stack if used multiple times on the same creature.
Two install modes, each with option for 1 or 2 spell slot devotion:
- First option restricts slots even if none of a given school/level exist in game.
- Second does not restrict slots for a given school/level if none exist. This will give free spell selection for Schools(levels): Illusion(9), Transmutation(5, 8), Divination(7-9), and Enchantment(6-9) without modded added/altered spells. At present this option will only detect spell filenames SPWI[1-9][00-50].
Two optional components:
- First causes the extra spells slots from Edwin's Amulet to be treated the same way, requiring Conjuration Spells be put in them. The effect added to the Amulet can be added to anything, using "MSCHOOL#" as the resource, where # is the Spell School(as assigned to spells), forcing an extra slot of every spell level to go to that spell school.
- Second causes items that double spell slots(Evermemory) to also double forced specialist school slots.
Specialist School spells and slots are identified by colored background, specific to each school border:
If you would prefer to manually edit UI.Menu:
Comment out "INCLUDE ~%MOD_FOLDER%\UIMENU.tpa~" in the "SPECIALIST_BOOK.tp2" file, its the last line.
Replace these three functions:
function magePageInfo() if bookMode == 0 then -- Regular if characters[id].hasSorcererBook then return t("SPELLS_CAN_CAST_LABEL") .. ": " .. characters[id].mageDetails[currentSpellLevel].slotsRemaining .. "/" .. characters[id].mageDetails[currentSpellLevel].maxMemorized else local num = 0 for k, v in pairs(specialistSlot) do if v.resref ~= "NULL" then num = num + 1 end end num = num + #bottomSpells return t("MEMORIZED_LABEL") .. ": " .. num .. "/" .. characters[id].mageDetails[currentSpellLevel].maxMemorized end elseif bookMode == 1 then -- Sequencer/Contingency return t("SPELLS_LABEL") .. " :" .. #bottomSpells .. "/" .. #bottomSpellsPlaceHolder end return "" end
function refreshMageBook() if currentSpellLevel == nil then currentSpellLevel = 1 end if bookMode == 0 then if characters[id].hasMageBook then bookSpells = characters[id].mageSpells[currentSpellLevel] newBottomSpells = filterMemorizedMageSpells() if showMageMemorizationFlash == true then createMageMemorizationSparkle(0,0,36,36,"memorizedListMage", findFirstDifferenceInSpellList(bottomSpells, newBottomSpells)) showMageMemorizationFlash = false end bottomSpells = newBottomSpells getSpecialistSlot() local x,y,w,z = Infinity_GetArea('memorizedListMage') h = x - 72 newX = #specialistSlot * 36 - h adjustItemGroup({'memorizedListMage', 'spellframeMageList', },newX,0,0,0) bottomSpellsPlaceHolder = makeBlankTable(characters[id].mageDetails[currentSpellLevel].maxMemorized) for index = 1, #currentSchool[currentSpellLevel], 1 do table.remove (bottomSpellsPlaceHolder, 1) end else bookSpells = characters[id].mageSpells[currentSpellLevel] bottomSpells = {} bottomSpellsPlaceHolder = {} end elseif bookMode == 1 then bookSpells = filterContingencyMageSpells() bottomSpells = sequencerSpells bottomSpellsPlaceHolder = makeBlankTable(contingencyMaxSpells) contingencyDescription = mageBookStrings[contingencyResRef].tip end end
function setMageBookLevel(num) currentBookSpell = 0 currentSpellLevel = num specialistBookFilter() mageScreen:SetSpellLevel(num-1) refreshMageBook() end
and all of menu 'MAGE':
menu { name 'MAGE' align center center greyscale lua "mageBookEnabled == false" modal lua "bookMode == 1" onopen " showMageMemorizationFlash = false mgpage = nil setMageBookLevel(1) if showContingency then Infinity_SetArea('bookListMage', nil, 374, nil, 200) Infinity_SetArea('bookDescription', nil, 374, nil, 200) else Infinity_SetArea('bookListMage', nil, 174, nil, 400) Infinity_SetArea('bookDescription', nil, 174, nil, 400) end if bookMode == 1 then contingencyDescription = mageBookStrings[contingencyResRef].tip end currentContingencyCondition = 0 currentContingencyTarget = 0 currentAnimationID = 1 updateCounterMemorizationSparkles = 1 " onclose " " button { enabled "CurrentlyInGame()" on escape action " --Return to world screen on escape e:SelectEngine(worldScreen) " } template { label { enabled "showMemorizationSparkle(instanceId)" ignoreEvents area 0 0 45 42 bam "FLASHBR" usealpha lua "true" frame lua "memorizationFlashes[instanceId][2]" align center center } name "TEMPLATE_mageMemorizationSparkle" } label { area 0 0 864 710 mosaic "GUIMGB2" } label { area 82 10 700 44 text lua "mageBookTitle()" text style "title" } label { area 210 59 446 30 text lua "mageBookAction()" text style "label" } button { area 168 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 0 enabled "maxMagePage > 0" action "setMageBookLevel(1)" } button { area 227 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 1 enabled "maxMagePage > 1" action "setMageBookLevel(2)" } button { area 286 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 2 enabled "maxMagePage > 2" action "setMageBookLevel(3)" } button { area 345 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 3 enabled "maxMagePage > 3" action "setMageBookLevel(4)" } button { area 404 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 4 enabled "maxMagePage > 4" action "setMageBookLevel(5)" } button { area 464 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 5 enabled "maxMagePage > 5" action "setMageBookLevel(6)" } button { area 523 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 6 enabled "maxMagePage > 6" action "setMageBookLevel(7)" } button { area 583 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 7 enabled "maxMagePage > 7" action "setMageBookLevel(8)" } button { area 644 110 54 54 bam GUIPRTC highlightgroup mgpage sequence 8 enabled "maxMagePage > 8" action "setMageBookLevel(9)" } list { column { width 15 label { area 0 0 -1 -1 bam lua "bookSpells[rowNumber].icon" enabled "specialistIcon(0)" align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('1')" progressbar 100 progressbar full 0 63 0 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('2')" progressbar 100 progressbar full 31 0 63 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('3')" progressbar 100 progressbar full 0 0 0 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('4')" progressbar 100 progressbar full 63 63 0 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('5')" progressbar 100 progressbar full 63 0 63 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('6')" progressbar 100 progressbar full 63 0 0 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('7')" progressbar 100 progressbar full 0 63 63 0 align center center } label { area 2 2 36 36 icon lua "bookSpells[rowNumber].icon" greyscale lua "bookSpells[rowNumber].castable == 0" enabled "specialistIcon('8')" progressbar 100 progressbar full 0 0 127 0 align center center } } column { width 85 label { area 0 0 -1 -1 text lua "Infinity_FetchString( bookSpells[rowNumber].name)" text style "normal_parchment" text align left center } } area 94 174 316 400 name "bookListMage" rowheight 40 table "bookSpells" var currentBookSpell scrollbar 'GUISCRC' action " contingencyDescription = 0 if cellNumber == 1 then if bookMode == 0 then if #bottomSpells < #bottomSpellsPlaceHolder or SpecialistMemorize() then createMageMemorizationSparkle(1, 0, 40, 40, 'bookListMage', -1) Infinity_PlaySound('GAM_24') showMageMemorizationFlash = true mageScreen:MemorizeSpell( bookSpells[currentBookSpell].level, bookSpells[currentBookSpell].index ) end elseif bookMode == 1 and #bottomSpells < #bottomSpellsPlaceHolder then mageScreen:SequenceSpell( bookSpells[currentBookSpell].resref ) end end if lastCurrentBookSpell == currentBookSpell and cellNumber == 2 then currentBookSpell = 0 contingencyDescription = mageBookStrings[contingencyResRef].tip end lastCurrentBookSpell = currentBookSpell " actionalt " if cellNumber == 1 and bookMode == 0 and characters[id].hasSorcererBook == false then popup2Button(24485, 'REMOVE_BUTTON', function() mageScreen:EraseKnownSpell(bookSpells[currentBookSpell].resref) end) end " } label { area 100 178 314 192 rectangle 1 rectangle opacity 200 enabled "showContingency" } label { area 104 182 310 48 enabled "showContingency" text "CONDITION_NORMAL" text style "normal" } list { column { width 100 label { area 10 0 -1 -1 text lua "Infinity_FetchString( contingencyConditions[rowNumber].strref)" text style "normal" text align left center } } area 104 224 310 141 enabled "showContingency" rowheight 40 table "contingencyConditions" var currentContingencyCondition scrollbar 'GUISCRC' action " contingencyDescription = contingencyConditions[currentContingencyCondition].desc " } label { area 452 176 322 193 rectangle 1 rectangle opacity 200 enabled "showContingency" } label { area 464 176 310 48 enabled "showContingency" text "TARGET_NORMAL" text style "normal" } list { column { width 100 label { area 10 0 -1 -1 text lua "Infinity_FetchString( contingencyTargets[rowNumber].strref)" text style "normal" text align left center } } area 458 228 316 141 enabled "showContingency" rowheight 40 table "contingencyTargets" var currentContingencyTarget scrollbar 'GUISCRC' action " contingencyDescription = contingencyTargets[currentContingencyTarget].desc " } text { name "bookDescription" area 452 174 316 400 text lua "mageBookDescription()" text style "normal_parchment" scrollbar 'GUISCRC' } list { column { width 100 label { area 0 0 -1 -1 bam "SPELFRMS" sequence 0 align center center } } area 72 658 714 36 name "spellframeMageList" enabled "#bottomSpellsPlaceHolder ~= 0 or bookMode == 1" rowwidth 36 table "bottomSpellsPlaceHolder" } list { column { width 100 label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '1')" progressbar 100 progressbar full 0 63 0 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '2')" progressbar 100 progressbar full 31 0 63 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '3')" progressbar 100 progressbar full 0 0 0 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '4')" progressbar 100 progressbar full 63 63 0 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '5')" progressbar 100 progressbar full 63 0 63 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '6')" progressbar 100 progressbar full 63 0 0 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '7')" progressbar 100 progressbar full 0 63 63 0 align center center } label { area 0 0 -1 -1 enabled "isSpecialist(rowNumber, '8')" progressbar 100 progressbar full 0 0 127 0 align center center } } name "specframeListMage" area 72 658 714 36 rowwidth 36 table "specialistSlot" enabled "not isSpecialist(0, 0) and characters[id].mageDetails[currentSpellLevel].maxMemorized > 0" } list { column { width 100 button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '1')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '2')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '3')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '4')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '5')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '6')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '7')" align center center } button { area 0 0 -1 -1 bam lua "specialistSlot[rowNumber].icon" greyscale lua "specialistSlot[rowNumber].castable == 0" enabled "isSpecialist(rowNumber, '8')" align center center } } name "specialistListMage" area 72 658 714 36 enabled "not isSpecialist(0, 0) and characters[id].mageDetails[currentSpellLevel].maxMemorized > 0" rowwidth 36 table "specialistSlot" var currentBottomSpell clickable lua "specialistSlot[rowNumber].resref ~= 'NULL'" action "actionSpecMemorize(currentBottomSpell)" } list { column { width 100 label { area 0 0 -1 -1 bam lua "bottomSpells[rowNumber].icon" align center center greyscale lua "bottomSpells[rowNumber].castable == 0" } } area 72 658 718 36 name "memorizedListMage" enabled "#bottomSpells ~= 0" rowwidth 36 table "bottomSpells" var currentBottomSpell action " if bookMode == 0 then showMageMemorizationFlash = false mageScreen:UnmemorizeSpell( bottomSpells[currentBottomSpell].level, bottomSpells[currentBottomSpell].memorizedIndex ) Infinity_PlaySound('GAM_44') elseif bookMode == 1 then mageScreen:UnSequenceSpell( bottomSpells[currentBottomSpell].resref ) table.remove(sequencerSpells, currentBottomSpell) bottomSpells = sequencerSpells currentBottomSpell = 0 end " } label { area 282 594 300 40 text lua "magePageInfo()" text style "label" rectangle 0 } button { area 582 594 230 44 enabled "bookMode == 0 and (#characters[id].contingencySpells > 0 or #characters[id].sequencerSpells > 0)" bam GUIBUTMT text "CONTINGENCY_BUTTON" text style "button" action "Infinity_PushMenu('MAGE_CONTINGENCY')" } button { area 52 594 230 44 bam GUIBUTMT enabled "bookMode == 1 or characters[id].hasMageBook" clickable lua "SpecialistMemorize() and currentBookSpell ~= 0" text "MEMORIZE_BUTTON" text style "button" action " if bookMode == 0 then createMageMemorizationSparkle(1, 0, 40, 40, 'bookListMage', -1) showMageMemorizationFlash = true mageScreen:MemorizeSpell( characters[id].mageSpells[currentSpellLevel][currentBookSpell].level, characters[id].mageSpells[currentSpellLevel][currentBookSpell].index ) elseif bookMode == 1 then mageScreen:SequenceSpell( bookSpells[currentBookSpell].resref ) end " } button { area 582 594 230 44 enabled "bookMode == 1" bam GUIBUTMT text lua "contingencyDoneButtonText()" text style "button" action " if contingencyComplete() then mageScreen:DoneSequencingSpells() else mageScreen:CancelSequencingSpells() end e:SelectEngine(worldScreen) " } }
Replaced initial version with colored version.
Added option to exclude empty spell levels.
Fixed an issue updating CLAB's.
Fixed issue with allowing non-standard spell filenames in specialist slots.
Post edited by kjeron on
21
Comments
I have a few things to fix/improve still:
Having more forced slots than available slots for a given level displays extra, unusable slots.
No way to distinguish one schools slot from another if you give them forced slots of multiple schools.
I have switched to colored octagons behind the icons instead black border, matching the color associated to the school in projectiles/casting, except divination, since most of its icons are white already, the background gets inverted to black.
Still testing them right now, but I should be able to add options for any number of forced spell slots.Uploaded a new version with color based schools and various fixes
Also, will Evermemory be treated like Edwin's amulet? Since it doubles 1st level spells, presumably the "in-school" spell should be doubled as well.
I know about Enchanter's and Diviner's, I will probably add on option to exclude the levels where a school lacks spells in the future, if I can. I added an install option for 2 slots, and a variable in the base .tp2 file so you can set how many default slots it adds if you really want more.
I can't test the mobile platforms, so I don't know what differences exist in their UI, but I would suspect as long as the layout isn't changed they should be compatible.
They will be detected for components that limit spell slots regardless of available spells.
They will only be detected for components that only limit spell slots when such spells exist if they follow the SPWI[1-9][00-50] naming convention.
These are the mods I'll use and in this order (on the basis of @argent77 's excellent advice):
More Styles for Mages
Spell Revisions
Chaos Sorcerer
Tome and Blood
Golem Construction
Faiths and Powers
Might and Guile
CDTweaks
Scales of Balance
SCS
NPC_EE
It's best to install it after any and all normal (non-UI) mods, as it needs to read the game files in their final state.
It can possibly be installed before NPC_EE, since the kit-changes are done in-game.
The mage spell slots of Multi-class gnome cleric/illusionists are not restricted to the Illusion school with this mod. This applies to Charnames as well as Quayle in BG1 (I have not tried this on the Quayle mod in BG2). All other combinations of gnome illusionist/X do gain the restrictions in spell slot usage.
( @Aquadrizzt , Quayle does not automatically gain all Illusion spells either if the Revised Specialists component from Tome and Blood is installed - perhaps these two issues are connected? Perhaps due to the hardcoding of the multi-class illusionist/X ? Crossposting this to the Tome and Blood thread.)
EDIT: Having spent 30 minutes making full parties of gnomes, I will amend this to say that ANY gnome illusionist/cleric with or without kits (like @Grammarsalad 's FnP multi-class cleric kits) OR gnome multi-class illusionist/x WITH A KIT ( @subtledoctor 's Might and Guile kits such as Loremaster, Spellfilcher) does not gain the spell slot restrictions NOR learns all Illusion spells automatically.
Is THAT what's at stake here? That weird gnome "is it a kit? is it a class?" illusionist ambiguity?
Weidu:
// Log of Currently Installed WeiDU Mods
// The top of the file is the 'oldest' mod
// ~TP2_File~ #language_number #component_number // [Subcomponent Name -> ] Component Name [ : Version]
~BGQE/SETUP-BGQE.TP2~ #0 #0 // Slime Quest: v15
~BGQE/SETUP-BGQE.TP2~ #0 #1 // Beregost Family Quest: v15
~BGQE/SETUP-BGQE.TP2~ #0 #2 // Installing the Babysitting Quest, including the Carnival Encounter...: v15
~BGQE/SETUP-BGQE.TP2~ #0 #3 // Nashkel Monster Quest: v15
~BGQE/SETUP-BGQE.TP2~ #0 #4 // Fallen Paladin Quest: v15
~BGQE/SETUP-BGQE.TP2~ #0 #5 // Undying Love Quest: v15
~BGQE/SETUP-BGQE.TP2~ #0 #6 // Orcish Lover Encounter: v15
~BGQE/SETUP-BGQE.TP2~ #0 #7 // Unexpected Help Quest: v15
~BGQE/SETUP-BGQE.TP2~ #0 #8 // "Many Little Paws": v15
~BGQE/SETUP-BGQE.TP2~ #0 #9 // Drunk near Beregost Temple: v15
~BGQE/SETUP-BGQE.TP2~ #0 #10 // A Warm Place for Noober: v15
~BG1NPC/BG1NPC.TP2~ #0 #0 // The BG1 NPC Project: Required Modifications: v23
~BG1NPC/BG1NPC.TP2~ #0 #1 // The BG1 NPC Project: Banters, Quests, and Interjections: v23
~BG1NPC/BG1NPC.TP2~ #0 #16 // The BG1 NPC Project: NPCs can be sent to wait in an inn: v23
~BG1NPC/BG1NPC.TP2~ #0 #18 // The BG1 NPC Project: Alora's Starting Location -> Alora Starts in Gullykin: v23
~BG1NPC/BG1NPC.TP2~ #0 #20 // The BG1 NPC Project: Eldoth's Starting Location -> Eldoth Starts on the Coast Way: v23
~BG1NPC/BG1NPC.TP2~ #0 #22 // The BG1 NPC Project: Quayle's Starting Location -> Quayle Starts at the Nashkel Carnival: v23
~BG1NPC/BG1NPC.TP2~ #0 #24 // The BG1 NPC Project: Tiax's Starting Location -> Tiax Starts in Beregost: v23
~BG1NPC/BG1NPC.TP2~ #0 #28 // The BG1 NPC Project: Bardic Reputation Adjustment: v23
~BG1NPC/BG1NPC.TP2~ #0 #29 // The BG1 NPC Project: Cloakwood areas availability in Chapter One -> Open Cloakwood Lodge (first Cloakwood area only): v23
~BG1NPC/BG1NPC.TP2~ #0 #200 // The BG1 NPC Project: Player-Initiated Dialogues: v23
~BG1UB/SETUP-BG1UB.TP2~ #0 #0 // Ice Island Level Two Restoration: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #1 // The Mysterious Vial: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #10 // Place Entar Silvershield in His Home: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #11 // Scar and the Sashenstar's Daughter: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #12 // Quoningar, the Cleric: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #13 // Shilo Chen and the Ogre-Magi: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #14 // Edie, the Merchant League Applicant: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #16 // Creature Corrections: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #17 // Creature Restorations: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #18 // Creature Name Restorations: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #19 // Minor Dialogue Restorations: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #21 // Store, Tavern and Inn Fixes and Restorations: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #22 // Item Corrections and Restorations: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #28 // Prism and the Emeralds Tweak: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #29 // Duke Eltan in the Harbor Master's Building: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #30 // Nim Furlwing Encounter: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #32 // Svlast, the Fallen Paladin Encounter: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #33 // Mal-Kalen, the Ulcaster Ghost: v15.1
~BG1UB/SETUP-BG1UB.TP2~ #0 #34 // Chapter 6 Dialogue Restorations: v15.1
~RR/SETUP-RR.TP2~ #0 #7 // Additional equipment for Thieves and Bards: v4.91
~RR/SETUP-RR.TP2~ #0 #999 // BG2-style icons for RR content: v4.91
~MSFM/MSFM.TP2~ #0 #1 // Add Wizard's Staff -> Add Wizard's Staff with 14 new color sets: v1.55
~MSFM/MSFM.TP2~ #0 #10 // Add circlets: v1.55
~MSFM/MSFM.TP2~ #0 #11 // Add Circlet of Revelation: v1.55
~MSFM/MSFM.TP2~ #0 #12 // Add Wizard's Hat: v1.55
~MSFM/MSFM.TP2~ #0 #13 // Add Wand Case: v1.55
~MSFM/MSFM.TP2~ #0 #16 // Add robe tweaks -> Add robes with no colorsets: v1.55
~MSFM/MSFM.TP2~ #0 #17 // Add Robes of Archimagi with colorsets from Mr. Pennyway's Cosmetic Changes mod: v1.55
~MSFM/MSFM.TP2~ #0 #18 // Add Customizable Familiars: v1.55
~MSFM/MSFM.TP2~ #0 #22 // Add Familiars for NPC Mages: v1.55
~MSFM/MSFM.TP2~ #0 #23 // Add Resized Skull Animation: v1.55
~MSFM/MSFM.TP2~ #0 #24 // Add More scrolls of Find Familiar in shops: v1.55
~SPELL_REV/SETUP-SPELL_REV.TP2~ #0 #0 // Spell Revisions: v4 Beta 15
~SPELL_REV/SETUP-SPELL_REV.TP2~ #0 #50 // Remove Disabled Spells from Spell Selection Screens: v4 Beta 15
~SPELL_REV/SETUP-SPELL_REV.TP2~ #0 #60 // Update Spellbooks of Joinable NPCs: v4 Beta 15
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #10 // Spell Tweaks: 0.7
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #0 // Revised Specialists: 0.7
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #1 // Revised Dragon Disciples: 0.7
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #9 // Arcane Crafting: 0.7
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #11 // Metamagic: 0.7
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #13 // Cantrips -> First Level Cantrips: 0.7
~TOMEANDBLOOD/SETUP-TOMEANDBLOOD.TP2~ #0 #14 // Ability Score Bonuses: 0.7
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #0 // Golem Construction Ability for Spellcasters: 5.3
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #20 // Golems for enemy spellcasters: 5.3
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #25 // Greater variety of enemy golem types: 5.3
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #35 // Make golems vulnerable to specific spell effects: 5.3
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #40 // Reduce weapon immunities and resistances for constructed golems: 5.3
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #45 // Identify all mod items: 5.3
~A7-GOLEMCONSTRUCTION/SETUP-A7-GOLEMCONSTRUCTION.TP2~ #0 #50 // Add "Teleport" ability to golems: 5.3
~FAITHS_AND_POWERS/FAITHS_AND_POWERS.TP2~ #0 #102 // Select an installation method below: -> all the new kits and the sphere system: 0.74r
~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ #0 #500 // Multiclass Kits: 3.7.3
~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ #0 #200 // Feat System: 3.7.3
~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ #0 #210 // Bard Class Overhaul: 3.7.3
~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ #0 #230 // Revised Archery: 3.7.3
~MIGHT_AND_GUILE/MIGHT_AND_GUILE.TP2~ #0 #250 // Revised Berserker and Rage: 3.7.3
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #10 // Remove Helmet Animations: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #60 // Weapon Animation Tweaks: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #90 // Disable Portrait Icons Added by Equipped Items: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #110 // Icon Improvements: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #130 // Force All Dialogue to Pause Game: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #140 // Fix Boo's Squeak: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #182 // Unique Containers -> Unique icons and names: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2010 // Separate Resist Fire/Cold Icon into Separate Icons (Angel): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #1010 // More Interjections: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #1060 // Breakable Iron Nonmagical Shields, Helms, and Armor: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #1080 // Add Bags of Holding: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #1090 // Exotic Item Pack: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #1100 // Reveal City Maps When Entering Area: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #1120 // Stores Sell Higher Stacks of Items: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2020 // Two-Handed Bastard Swords: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2030 // Two-Handed Katanas: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2035 // Two-Handed Axes: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2140 // Expanded Dual-Class Options: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2160 // Alter Weapon Proficiency System -> Rebalanced Weapon Proficiencies: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2410 // Druids Use 3E Alignment Restrictions: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2440 // Everyone Gets Bonus APR from Specialization: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2500 // Exceptional Strength Weight Limit Changes: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2520 // Allow Mages to Use Bucklers and Thieves to Use Small Shields (Angel): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2530 // Lightning Bolts Don't Bounce (Angel): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #2999 // Max HP at Level One: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3001 // Higher HP on Level Up -> NWN Style: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3020 // Identify All Items: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3060 // Remove "You Must Gather Your Party..." Sound (Weimer): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3070 // Change Effect of Reputation on Store Prices -> Low Reputation Store Discount (Sabre): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3081 // Increase Ammo Stack Size -> Stacks of 40: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3121 // Happy Patch (Party NPCs do not complain about reputation) -> NPCs Can Be Angry About Reputation but Never Leave (Salk): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3123 // NPCs Don't Fight: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3125 // Neutral Characters Make Happy Comments at Mid-Range Reputation: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3190 // Rest Anywhere (Japheth): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3200 // Sellable Items (Icelus): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3205 // Stores Purchase All Item Types: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3220 // Sensible Entrance Points: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3230 // Taerom Makes Additional Ankheg Armor (Icendoan/grogerson): v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #3290 // Personalize automatic save names -> Use scheme: 000000000-Protagonist-Save-Name: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #4000 // Adjust Evil joinable NPC reaction rolls: v4
~CDTWEAKS/SETUP-CDTWEAKS.TP2~ #0 #4020 // ToB-Style NPCs: v4
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #1000 // Initialise mod (all other components require this): v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #2010 // More consistent Breach spell (always affects liches and rakshasas; doesn't penetrate Spell Turning): v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #2020 // Antimagic attacks penetrate improved invisibility: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #3030 // Re-introduce potions of extra-healing: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4000 // Faster Bears: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4010 // Grant large, flying, non-solid or similar creatures protection from Web and Entangle: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4020 // More realistic wolves and wild dogs: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4040 // Make party members less likely to die irreversibly: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4051 // Decrease the rate at which reputation improves -> Reputation increases at about 1/2 the normal rate: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4110 // Allow NPC pairs to separate: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4130 // Move NPCs to more convenient locations: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #4146 // Skip the Candlekeep tutorial sections -> Skip Candlekeep altogether (warning: breaks the 4th wall!): v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #5000 // Ease-of-use party AI: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #5010 // Move Boo into Minsc's pack: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #5050 // Stackable ankheg shells, winterwolf pelts and wyvern heads: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #5060 // Ensure Shar-Teel doesn't die in the original challenge: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #5900 // Initialise AI components (required for all tactical and AI components): v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6000 // Smarter general AI: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6010 // Better calls for help: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6033 // Smarter Mages -> Mages in BG1 cast short-duration spells instantly at start of combat; mages in BG2 only do so if they are created in sight of the PC: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6040 // Smarter Priests -> Priests cast some short-duration spells instantly at start of combat, to simulate pre-battle casting: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6300 // Smarter sirines and dryads: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6310 // Slightly harder carrion crawlers: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #6320 // Smarter basilisks: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7000 // Improved doppelgangers: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7010 // Tougher Black Talons and Iron Throne guards: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7020 // Improved deployment for parties of assassins: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7040 // Relocated bounty hunters: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7050 // Improved Ulcaster: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7060 // Improved Balduran's Isle: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7090 // Improved Cloakwood Druids: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7100 // Improved Bassilus: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7110 // Improved Drasus party: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7130 // Improved Red Wizards: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7200 // Tougher chapter-two end battle: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7210 // Tougher chapter-three end battle: v30 BWP Fix
~STRATAGEMS/SETUP-STRATAGEMS.TP2~ #0 #7900 // Improved minor encounters: v30 BWP Fix
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #102 // IWO - Functional Weapon Tweaks: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #121 // WPO - Weapon Category Collapse: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #124 // WPO - Fighting Style Changes: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #125 // WPO - APR on Spec: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #160 // STO - Saving Throw Overhaul: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #200 // SBO - Stat Bonus Overhaul: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #204 // SBO - Enable Concentration Checks: v5.8.5
~SCALES_OF_BALANCE/SCALES_OF_BALANCE.TP2~ #0 #210 // XPO - Slower, standardized XP Tables: v5.8.5
~COLORFUL_SPECIALIST_SLOTS/COLORFUL_SPECIALIST_SLOTS.TP2~ #0 #3 // Specialist Slots -> Specialist Mages must use 2 spell slots for Specialist School Spells, excluding empty spell levels: 1.0
~COLORFUL_SPECIALIST_SLOTS/COLORFUL_SPECIALIST_SLOTS.TP2~ #0 #4 // Edwin Amulet extra spells must also be Conjuration spells: 1.0
~COLORFUL_SPECIALIST_SLOTS/COLORFUL_SPECIALIST_SLOTS.TP2~ #0 #5 // Equipment that doubles spell slots also doubles forced specialist slots: 1.0
~NPC_EE/NPC_EE.TP2~ #0 #161 // Choose a class for Minsc -> Make Minsc a fighter: v3.1.1
~NPC_EE/NPC_EE.TP2~ #0 #261 // Choose a class for Safana -> Make Safana a fighter/thief: v3.1.1
~NPC_EE/NPC_EE.TP2~ #0 #464 // Choose a class for Alora -> Make Alora a cleric/thief: v3.1.1
~NPC_EE/NPC_EE.TP2~ #0 #2000 // NPC kit choices: v3.1.1
~NPC_EE/NPC_EE.TP2~ #0 #3000 // multiclass kit choice: v3.1.1
~RANDOMISER/RANDOMISER.TP2~ #0 #510 // Randomly not randomise items: v6.8
~RANDOMISER/RANDOMISER.TP2~ #0 #570 // Randomise the appearance of cursed items: v6.8
~RANDOMISER/RANDOMISER.TP2~ #0 #1300 // Randomise items -> Mode 2: Randomise with WeiDU. No items are lost: v6.8
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #1000 // Mods Options: 2.6
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #2000 // Transparent Sidebars: 2.6
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #2020 // Feedback Message Box Re-sizers -> Adul's Message Box Resize Button: 2.6
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #2030 // Adul's Better Quick Loot: 2.6
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #2070 // Dee's Permanent Thieving Button: 2.6
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #2080 // elminster's Easier Area Cheats: 2.6
~EEUITWEAKS/EEUITWEAKS.TP2~ #0 #3030 // lefreut's Customize All Characters: 2.6
~HIDDENGAMEPLAYOPTIONS/SETUP-HIDDENGAMEPLAYOPTIONS.TP2~ #0 #1 // Install Hidden Gameplay Options -> Selected options: 1.3
~HIDDENGAMEPLAYOPTIONS/SETUP-HIDDENGAMEPLAYOPTIONS.TP2~ #0 #10 // Add in-game option "Enable Debug Mode": 1.3
~HIDDENGAMEPLAYOPTIONS/SETUP-HIDDENGAMEPLAYOPTIONS.TP2~ #0 #23 // Add in-game option "Pause Game on Map Screen": 1.3
~HIDDENGAMEPLAYOPTIONS/SETUP-HIDDENGAMEPLAYOPTIONS.TP2~ #0 #24 // Add in-game option "Enable Fog": 1.3
They will be allowed in specialist slots, but still not detected to determine if there are any valid spells of that spell level in-game.
This looks like a great mod, and I really want to use it. However, I don't like the new version of the spell books(since EE 2.0). So I'm using Kilivitz's Classic Spellbooks mod already.
I know it's unlikely, but is there any possibility to use this mod together with that?
The "manual edits" I listed can still be done and be functional, but you will lose spell descriptions and the altered appearance of the spellbook.