Oops yes, sorry, trying to get it working for EE. Well, I checked out a couple of crafting mods for the original DOS, and from what I saw, for crafting, they changed the ItemComboPreviews.lsx and the ItemCombos.txt (in /Data/Public/Shared/Stats). That was to alter crafting recipes, and indeed I got that to work in EE. Works flawlessly except that the game whines about "your mods are whack" popup box when loading up the program (it used to do this for the crafting mods when I played DOS though, so whatever), but altering or creating new recipes works just fine.

So I decided to add something new; I've been trying to get the Feather Fall/Drop spell back to a skill book like it was in the original. The spell still exists (more or less) in the SkillData.txt file as "Teleportation_EnemyFeatherFall" (this is what monsters use) and "Teleportation_FeatherFallBySummon" (this is what the Air Elemental summon pet has). I've tried using the pet's skill as a template to just make a basic FeatherFall, though I can't tell if that works or not yet (since I can't get the book to craft correctly). Since the book doesn't exist, I've tried to mod one and that's where this post is talking about.

I can create a recipe for the new skillbook, and it works (well, it combines then crashes) and the same method works flawlessly when I try to make recipes for pre-existing items, so I feel that part is fine. Thus, I look at the next part - what is the game trying to make via that recipe? Well, once again using the idea of all the skillbooks as a reference (how they are made not only via recipe, but how the skillbook itself is in the data files). There are two places that skillbooks seem to exist.

One is Object.txt (in /Data/Public/Shared/Stats/Generated/Data) which has a very simple entry for skillbooks. This is the first entry for skillbooks that sets up the skillbook template that all others reference:
Code
new entry "_Skillbooks"
type "Object"
data "ModifierType" "Item"
data "Act" "1"
data "UseAPCost" "0"
data "Value" "5"
data "Weight" "500"
data "Requirements" "Level 3"
data "InventoryTab" "Magical"


And then all skillbooks look like this:
Code
new entry "SKILLBOOK_Ranger_Shout_RangedPowerStance"
type "Object"
using "_Skillbooks"
data "Act part" "2"
data "Requirements" "Level 1"


So I created an entry for my new skillbook. Attemping to craft it still crashes the game on completion. So I looked deeper. Since I knew that ItemComboPreviews.lsx can be modded and works, and the Run Speed Mod is a change of the player.lsx, I knew these files sometimes need to be altered.

The only place I can find skillbooks is in the RootTemplate/Books_Scrolls.lsf file. There you find entries like:
Code
				<node id="GameObjects">
					<attribute id="CanBeMoved" value="True" type="19" />
					<attribute id="CanBePickedUp" value="True" type="19" />
					<attribute id="CanSeeThrough" value="True" type="19" />
					<attribute id="CanShootThrough" value="True" type="19" />
					<attribute id="CastShadow" value="False" type="19" />
					<attribute id="Description" value="Expert Marksman skills are skills for archers and rangers. High dexterity improves these skills. Read this book to learn this skill." type="28" handle="h8a265339ga358g4ae4ga309g439615cc79b1" />
					<attribute id="DropSound" value="c6a52c42-baa1-4090-aa42-7ef06760c067" type="22" />
					<attribute id="Flag" value="0" type="4" />
					<attribute id="GroupID" value="0" type="5" />
					<attribute id="Icon" value="Item_BOOK_Spellbook_Ranger_A" type="22" />
					<attribute id="IsSurfaceCloudInteractable" value="True" type="19" />
					<attribute id="IsSurfaceInteractable" value="True" type="19" />
					<attribute id="LevelName" value="" type="22" />
					<attribute id="MapKey" value="1e754971-4ae6-49dd-8798-9c4febee16a3" type="22" />
					<attribute id="Name" value="BOOK_Skill_Ranger_Projectile_Ricochet" type="23" />
					<attribute id="Opacity" value="0.225" type="6" />
					<attribute id="PhysicsTemplate" value="d2c39c90-8c3c-45e4-8c58-a877bc160877" type="22" />
					<attribute id="PickupSound" value="7b9b54b6-0ac8-48c2-ac7d-e31196256d88" type="22" />
					<attribute id="RecieveDecal" value="False" type="19" />
					<attribute id="Scale" value="1" type="6" />
					<attribute id="Stats" value="SKILLBOOK_Ranger_Projectile_Ricochet" type="22" />
					<attribute id="Tooltip" value="2" type="1" />
					<attribute id="Type" value="item" type="22" />
					<attribute id="VisualTemplate" value="f1349d23-301d-435e-a32a-747c6e8e5692" type="22" />
					<attribute id="WalkThrough" value="True" type="19" />
					<attribute id="maxStackAmount" value="50" type="4" />
					<children>
						<node id="AIBounds">
							<attribute id="AIType" value="1" type="1" />
							<attribute id="Height" value="0.178634" type="6" />
							<attribute id="Max" value="0.255247 0.177119 0.270117" type="12" />
							<attribute id="Min" value="-0.270443 -0.00151443 -0.392645" type="12" />
							<attribute id="Radius" value="0.216147" type="6" />
						</node>
						<node id="Equipment">
							<children>
								<node id="CustomBodyMaterials">
									<attribute id="Object" value="" type="22" />
								</node>
								<node id="CustomBodyMaterials">
									<attribute id="Object" value="" type="22" />
								</node>
								<node id="CustomBodyMaterials">
									<attribute id="Object" value="" type="22" />
								</node>
								<node id="VisualResources">
									<attribute id="Object" value="" type="22" />
								</node>
								<node id="VisualResources">
									<attribute id="Object" value="" type="22" />
								</node>
								<node id="VisualResources">
									<attribute id="Object" value="" type="22" />
								</node>
							</children>
						</node>
						<node id="InventoryList" />
						<node id="OnDestroyActions" />
						<node id="OnUsePeaceActions">
							<children>
								<node id="Action">
									<attribute id="ActionType" value="13" type="4" />
									<children>
										<node id="Attributes">
											<attribute id="Consume" value="True" type="19" />
											<attribute id="SkillID" value="Projectile_Ricochet" type="22" />
										</node>
									</children>
								</node>
							</children>
						</node>


Once again I used multiple pre-existing items (such as the teleportation skillbook) as a template to try to make my own new item. Doing so still makes the game crash. Using a text-compare webpage, I repeatedly checked my code vs template code as I went along. I could change things with ease and made sure that things were named correctly. Since it still doesn't work, I'm suspecting the only remaining thing is that all the items in the RootTemplate folder (like Consumables.lsf and Books_Scrolls.lsx) have unique "mapkey" values (a long string of hex code), I figure that's what's jacking me up in creating a new item.

Now, I'm not saying I'm right. I could be way, way off on this. But I'm trying to narrow down the possibilities. The player.lsf files exist in both the MainLSF.pak and the Main.pak, but the Run Speed Mod only uses the copies from the MainLSF.pak (I know for sure since it was my forum thread here in which a player posted the mod and what he did and another user verified it was just from the MainLSF.pak).

Knowing this I've tried to use the files from the MainLSF when I can, but for whatever reason that .pak doesn't have the /Generated/Etc in the /Stats folder, so you are forced to go to the Main.pak for those (this is the location where all the text files are).

I hope this makes sense. I know I have a whole bunch of crap written up, but I make sure to do it in case it helps me or someone else for future efforts in getting this to work. I appreciate your reply! I'm not sure if you know how to make it work or how to make sense of all this, but either way, thanks for the interest.

Edit: I meant to say .LSB not .LSF all those times. Oops!

Last edited by MrWoof; 14/11/15 06:20 AM.