Eckss Posted October 4, 2012 Share Posted October 4, 2012 (edited) Im relatively new to this, which is why I get insulted and ignored I guess, so please forgive me if Im breaking some unwritten taboo or something. Ive come up with an easy to use method for Mod compatibility and Id like to know what other Mod authors think. My method uses Keywords and is detailed in This Article. If youre interested, have a look and tell me what you think. I look forward to reading your thoughts. :psyduck:Eck. Edited October 4, 2012 by Eckss Link to comment Share on other sites More sharing options...
Ironman5000 Posted October 4, 2012 Share Posted October 4, 2012 (edited) I’m relatively new to this, which is why I get insultedIf you are being insulted you need to report them. This sounds almost too good to be true! I've read through it all and I think I get what you are doing here so let me ask this - I have my Monster Wars active which adds weapons to levelled lists, while using the Tytanis mod that does the same. MoWars is at the bottom of the load order so only these will appear. To get both of these mods to recognize each other I would need to open them in the CK with the SPIKE.esm present and tag it as a parent? Edited October 4, 2012 by Ironman5000 Link to comment Share on other sites More sharing options...
Eckss Posted October 4, 2012 Author Share Posted October 4, 2012 Basically, yes. :) You would also need to add keywords from SPIKE to the weapons you wanted to use on the levelled lists and have a simple script that runs on start-up. This script would look for those keywords and add every weapon that has them assigned to the levelled lists, thereby picking all of them up, no matter how many Mods were involved. Or you could come up with another method, that’s the versatility that Keywords provide. If you’re interested, I’d be happy to add keywords to SPIKE to accommodate your needs, as, from what I understand you’re looking for, the current ones are unlikely to be enough. As stated in the article, I will have to administer SPIKE in order to ensure that, as new keywords are added, the IDs of those already present are not compromised. Eck. Link to comment Share on other sites More sharing options...
Mujuro Posted October 4, 2012 Share Posted October 4, 2012 This sounds promising, and I'm curious as to how SPIKE would work with dialogue assets across mods (in particular, follower/companion/NPC mods). There are a few of us grappling with mod follower interactivity, and the initial prototype framework I've been working on (based on the "script" approach you describe) isn't exactly "easy", although it does "work". Link to comment Share on other sites More sharing options...
Ironman5000 Posted October 4, 2012 Share Posted October 4, 2012 (edited) If I am understanding this correctly then for ultimate compatibility then you would have to add new keywords for each mod that we make, or would it be possible to make generic keywords and add them to several plugins? Did I understand correctly that duplicate keywords would cause issues though? I would have suggested a way to upload a txt document for setting up a custom papyrus (with yours as the base) to add our own keywords but that wouldn't work as it depends on one script...or am I wrong? Edited October 4, 2012 by Ironman5000 Link to comment Share on other sites More sharing options...
IsharaMeradin Posted October 4, 2012 Share Posted October 4, 2012 I can foresee instances where this keyword system will not work. Example non-Dawnguard arrowsMod A makes arrows craftable and assigns the correct keywords to the arrow weapon forms to make them show up in the proper categories at the forge rather than the default Misc category. -- note, cannot assign keywords to the recipe only to the item. Mod B modifies the same arrows to give them greater damage, faster speed etc... With your keyword system still only the last one loaded will get it's changes to show up because they both need to edit the same form. This is where the parent mod/patch system currently steps in to solve. Have you thought of such scenarios? If so, how do you propose to use your system to work around it? Link to comment Share on other sites More sharing options...
Ironman5000 Posted October 4, 2012 Share Posted October 4, 2012 (edited) If you can implement a script that can recognize custom keywords and load all items using them, what prevents you from building one that can recognize vanilla keywords assigned to custom items? Keep in mind my scripting skills are zero I am simply theorizing. Edited October 4, 2012 by Ironman5000 Link to comment Share on other sites More sharing options...
Eckss Posted October 5, 2012 Author Share Posted October 5, 2012 @Mujuro, I’m not sure how much information you want to pass between Mods, but you can attach as many keywords to a follower as you want, each one would be True if present and False if absent or invalid. This allows them to be used as a group of switches without having to worry about whether another Mod is present or not or whether another Mod will overwrite them accidentally:If A then …If B then …If A & B then …Etc.For example, if AnewFollowerMod.esp adds a follower ‘John Doe’ to the game and you want to be able to activate something in ANOtherMod.esp if ‘John Doe’ is present. When the player hires him, the act of hiring ‘John Doe’ can conveniently attach as many keywords as you need to the player. A simple check of the player having a keyword can tell you as much as you need to know. You could also check if there is anyone in ‘John Doe’s’ starting location, or even a list of locations, who has a particular keyword and assign this Actor to an Alias allowing you to do whatever you then need to.The only real limit is a digital one as each keyword is a Boolean variable and can only pass True or False; this is also the system’s strength as an invalid Boolean is False by default, allowing the game engine to react in a stable way when it encounters it. @Ironman5000, it would be possible to add specific keywords tailored to individual Mods, but a series of generic keywords would be much better and is what I originally envisioned for SPIKE. For example, these keywords might prove useful for levelled lists: WeaponLvl1, WeaponLvl6, WeaponLvl12, WeaponLvl18, etc.They’re quite generic and the only reason I haven’t already added a series of generic keywords to SPIKE is that I don’t yet know if anyone wants to use it, or what range of keywords people would want. The potential problem of duplicate keyword ID codes is resolved by having SPIKE administered by a single individual. As I came up with the idea, I’m volunteering to do it but if the community would prefer to have someone else do it, I’d be prepared to relinquish control to the Nexus moderators or some such person.Keywords should only be added to SPIKE by one person with new versions of SPIKE being rolled out as necessary otherwise there could be problems.If you want to add keywords from SPIKE via a script, that would require a ‘compatibility mod’ using SPIKE as it’s Master file and I was trying to avoid having to use a mod or patch for compatibility as that can be difficult for less technical people to use. @IsharaMeradin, using patches/wrye bash is fine for us because we’re all technically proficient by virtue of having earned our place on this private forum, but many gamers aren’t and I don’t want to limit their access to all our work if I don’t have to. There has been in the past within the on-line community an elitist attitude with a strong air of disdain for those who aren’t computer wizards (I'm NOT suggesting that you hold any such views); I’m trying to give those people access to the same variety of gaming experience as we have. I’m also trying to make it easy for us to accommodate them with a system for compatibility that’s easy to use. For the example you cited, and all such situations, the easiest way to be compatible is for the mod authors to copy the vanilla form and modify the copy. Each version would have a keyword and either mod could react on finding it by enabling a combined version. I know changing both Mods to add the check and the alternate version seems like a lot of work, but it isn’t any more work than creating a patch and is much easier for any gamer to use. There will always be a place for patches; I’m trying to add to your options, not reduce or control them. @Ironman5000 - second post. Nothing prevents you from using vanilla keywords for that purpose except the limited number available, the limited versatility they have and the fact that their use might be altered by Bethesda as they wish without notice. For example, in order to recognise an iron sword, I use the keyword GDOWeapIronSword. By adding this to the base object Iron Sword, all generic pre-enchanted iron swords inherit it and I can recognise all of them along with any custom made iron sword from a mod that uses SPIKE. Without this custom keyword, I could only recognise the base item (This was the situation in the vanilla game) or try to use the vanilla keywords WeapTypeSword and WeapMaterialIron. The only condition I can use is ‘WornHasKeyword’ which returns True if anything equipped by the actor I’m checking has the keyword I look for. Checking for both of those vanilla keywords on an actor returns True if an iron sword is equipped, they also return True if the actor has an iron axe and a steel sword, or indeed any sword, equipped. It’s just as bad, if not worse, with armor. There is a condition, IsWeaponInList, but according to the Wiki it’s use is deprecated, so it’s not a good idea to rely on it. Sorry for the huge post, but I felt that your questions deserved full answers. Thanks for your interest.Eck. :D Link to comment Share on other sites More sharing options...
Mujuro Posted October 5, 2012 Share Posted October 5, 2012 @Eckss I've already built something like what you've mentioned into my current WIP version of Cerwiden (v1.7, hoping to get out to closed beta this weekend). I was referring to actual use of assets associated with the other mods, specifically dialogue lines (e.g., mod A companion has custom dialogue and mod B wants to use for purposes of interaction/joint scene). This can be done using scripts and careful collaboration among the mod authors in terms of how the assets are structured/conditioned, but was wondering if SPIKE would be able to facilitate this sort of thing (as you know, dialogue/topics work slightly differently and there's no way to tag keywords easily, AFAIK). Link to comment Share on other sites More sharing options...
Eckss Posted October 5, 2012 Author Share Posted October 5, 2012 @Mujuro, I’m not sure if this’ll work, but have you considered it: 2 Mods, AMod & BMod, add followers A & B each with a custom dialogue quest AQuest & BQuest & each identified by keyword. In AQuest, use B’s keyword to fill quest alias B & in BQuest, use A’s keyword to fill quest alias A. AQuest starts the conversation with a line spoken by A, then waits, passing over to BQuest which has B speak the next line before passing back to AQuest and so forth. You could use any number of methods for the 2 quests to know whose turn it is to speak, adding or removing A & B’s keywords being just one. The 2 quests run simultaneously and, as neither will activate unless the corresponding quest alias is filled, you don’t need any special provision. What do you think?Eck. Link to comment Share on other sites More sharing options...
Recommended Posts