Howdy, Stranger!

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

Categories

Neverwinter Nights: Enhanced Edition has been released! Visit nwn.beamdog.com to make an order. NWN:EE FAQ is available.
Soundtracks for BG:EE, SoD, BG2:EE, IWD:EE, PST:EE are now available in the Beamdog store.
Attention, new and old users! Please read the new rules of conduct for the forums, and we hope you enjoy your stay!

Restricting Specialist's extra Spell Slots to Specialist's School Spells

kjeronkjeron Member Posts: 1,965
edited February 2018 in UI Modding
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:
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
AquadrizztKuronalefreutCrevsDaakGrammarsaladelminsterHalfCelestialJuliusBorisovPeccamarkzakuZaghoulbooinyoureyesRaduziel

Comments

  • subtledoctorsubtledoctor Member Posts: 11,136
    edited February 2017
    Does this use static lists? Or does it read the spell's school from the .spl file. If (as a, um, wildly hypothetical example) I install a mod that changes a bunch if spells to different schools, will this still work?

    Also, do you think it would be possible to mandate that *two* spells per level be in your specialty school? That would be a cool 'hardcore' version of the mod.

    Post edited by subtledoctor on
  • kjeronkjeron Member Posts: 1,965
    edited February 2017

    Does this use static lists? Or does it read the spell's school from the .spl file. If (as a, um, wildly hypothetical example) I install a mod that changes a bunch if schools to different schools, will this still work?

    It reads all spells when its installed, whatever school they when it is installed is what it uses.

    Also, do you think it would be possible to mandate that *two* spells per level be in your specialty school? That would be a cool 'hardcore' version of the mod.

    The second component does just that for Edwin, and the console command spell will stack, so each time you have someone cast it will increase the number of mandated spells slots to that spell school. You can even enforce slots for different schools on the same creature if you manually add the effect to them.

    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

    Post edited by kjeron on
    CrevsDaak
  • subtledoctorsubtledoctor Member Posts: 11,136
    I figured two forced slots could be a good option, hardcore but still standard and compliant with the vanilla spellcasting tables, since specialists get a minimum of two spell slots whenever they get access to a new spell level. So if only for compatibility's sake, this might be worthy of its own proper component. And then let people mess around with other configurations on their own.

    Two forced slots would really make you play to your school, since most or all of your most powerful spells would have to be in your specialty school. (This would play very nicely with Tome & Blood's revised specialists... there are no barred "opposition" spells, but you are forced to use more of your own specialty's spells. It would really make specialists for a school, instead of just against some other school.

    Grammarsalad
  • AstroBryGuyAstroBryGuy Member Posts: 3,414
    Interesting mod, but a major whack against Enchanters (no in-school spells above 5th level) and Diviners (no in-school spells above 6th level)! Seems like you would need to pair it with a spell mod that makes sure there is at least one useful spell per level per school.

    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.

    Grammarsalad
  • kjeronkjeron Member Posts: 1,965

    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 think I can limit forced slots to a specific level, it would just take a lot more markers, and Evermemory(or any doubling item) would probably require their own unique marker. It's more complexity for me to figure out. Edwin's Amulet was easy because I know ahead of time which school it needs to expand.

    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 figured two forced slots could be a good option, hardcore but still standard and compliant with the vanilla spellcasting tables, since specialists get a minimum of two spell slots whenever they get access to a new spell level. So if only for compatibility's sake, this might be worthy of its own proper component. And then let people mess around with other configurations on their own.

    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.

    subtledoctorCrevsDaak
  • subtledoctorsubtledoctor Member Posts: 11,136
    @AstroBryGuy if you use the Tome & Blood "spell tweaks" component, there is a pretty simple array in a .tpa file where you can decide to move any spells to any other schools. I used to have it so that every school had 1-2 decent spells at every level (Enchantment is a lot more playable when it has all the Power Word spells!)... I think aquadrizzt has reverted it to being closer to vanilla, but the array is easy to edit however you like, before installing the mod.

    Also, as always, installing SR goes a long way toward improving spell/school distribution.

    Grammarsalad
  • kjeronkjeron Member Posts: 1,965
    Added option for items like Evermemory to double specialist slots, and option for empty school levels to allow free selection.

    CrevsDaakAstroBryGuy
  • GrammarsaladGrammarsalad Member Posts: 2,465
    This is amazing! Just amazing

    CrevsDaakAstroBryGuy
  • kjeronkjeron Member Posts: 1,965
    Fixed an issue updating CLAB's, wasn't getting correct column count.

    Grammarsalad
  • chimericchimeric Member Posts: 1,163
  • subtledoctorsubtledoctor Member Posts: 11,136
    Want to drop a note saying I'm playing with this right now, it is excellent. Also, FYI, it's working great on an iPad.

  • kjeronkjeron Member Posts: 1,965
    Thank you.
    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.

  • kjeronkjeron Member Posts: 1,965
    Partial fix for mod-added spells.
    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.

  • Contemplative_HamsterContemplative_Hamster Member Posts: 844
    edited November 2017
    @kjeron , this is very, very, nice, and I really want to use it. Since there is no readme in the download nor clear indications in your first post, I'd like to ask your advice on install order. These mods all potentially modify arcane casters or schools or NPCs, so it's a bit tricky. I love @subtledoctor 's point about the interaction with Tome and Blood (2 dedicated spell slots per level forcing the specialist to focus on his specialty), and I want to try this out.

    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

  • kjeronkjeron Member Posts: 1,965
    edited November 2017
    @Contemplative_Hamster
    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.

    Post edited by kjeron on
    Contemplative_Hamster
  • subtledoctorsubtledoctor Member Posts: 11,136
    @Contemplative_Hamster I installed this right before NPC_EE and Item Randomizer - so it's the the 3rd-to-last mod in my install. Seems to be working well in that order.

    Contemplative_Hamster
  • This mod is working like a dream! I've never had Edwin summon so many beasts before! In fact, I don't think I EVER had Edwin summon beasts before, since I could go straight to Fireballs and whatnot and cut out the middle men. This is really making specialists special. I can't imagine I'll ever play a game without this mod again.

    GrammarsaladsubtledoctorGalactygon
  • Luke93Luke93 Member, Mobile Tester Posts: 1,181
    edited February 2018
    BUG: after installing this mod, all mages have a permanent portrait icon: Spell Sequencer Active

  • kjeronkjeron Member Posts: 1,965
    edited February 2018
    Luke93 said:

    BUG: after installing this mod, all mages have a permanent portrait icon: Spell Sequencer Active

    kjeron said:

    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.

    I wish there was a way to suppress it.

  • ZaghoulZaghoul Member, Moderator Posts: 3,848
    This looks nice. It always seemed a bit off when having to choose from a specialist field at character creation but not anytime else.

  • Contemplative_HamsterContemplative_Hamster Member Posts: 844
    edited February 2018
    Hi @kjeron , a bug report:

    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


    Post edited by Contemplative_Hamster on
  • kjeronkjeron Member Posts: 1,965
    Update: partial fix for detecting non-standard filenames for the (no empty spell slots) components.
    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.

    Contemplative_Hamsterbob_veng
  • Just tested this. The fix works like a charm!

    Grammarsalad
  • Ludwig_IILudwig_II Member Posts: 182
    Hi @kjeron ,

    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?

  • kjeronkjeron Member Posts: 1,965
Sign In or Register to comment.