I have no intention of making any additional potions beyond 3rd level, or making the existing ones craftable, you can rest easy. I just want to set the prices properly for the ones already in the game and are used often like the 6th level potions Heal and Greater Heroism (another rule breaker from the original game). Currently Heal is at 1800gp and Greater Heroism is at 250gp, while they should both be 3300gp by the formula. I think they included Greater Heroism in the game because it was found in the original module somewhere on the 4th level of the temple. At the time it was called Potion of Super-Heroism.
That is WAAAAAY too cheap for greater heroism, indeed; nice catch on that. Regarding the item names, what about something like: "Potion of Resist Fire (CL 7, DR 20)". Or is that too bulky?
The CL/DR stuff may be a bit cryptic for your average player. We tend to think that everyone is at least our D&D cognition level, but the smart play is to actually assume they're rather noobish.
I'm keeping the CL out of the name of the the item and signifying the differences by game rule information. This is what the player will want to see as he's perusing his inventory. He probably doesn't care about CL, or really need to know. For example: Potion of Protection from Acid, 108 Potion of Resist Cold, DR 20 Potion of Barkskin +4 Potion of Shield of Faith +3 etc. But then in the name of the brew potion list, definitely add the CL for clarification if needed for a particular item. That's the place where the crafter will want to see it: Protection from Acid, 108 (CL 9) Resist Cold, DR 20 (CL 5) Potion of Barkskin +4 Potion of Shield of Faith +3 etc. The CL info for the last 2 example isn't really needed I don't think.
It appears that every potion in the original game and NOT craftable, (like Hiding, Sneaking, Greater Heroism, Protection from Earth/Outsiders/Elementals/Undead) has a generic worth of 250gp set for them. I guess they put in a default value and never went back to adjust the worth. Hey they needed that time to create 75,000 different particle effects, right? However, if the potion WAS craftable (like Bull's Strength, Haste, etc.) they got the worth set properly. I guess the worth on those mystery potions should be left at 250gp to keep faithful to the original game, since other than Greater Heroism there's really no basis as to what their worth should be.
Caster Level beyond 17: Would there be a way to make the caster level exceed 17? Currently setting the level of the spell to 9th for a potion in its proto creates a potion at caster level 17. For example: 'Potion of Shield of Faith (INTERNAL)' domain_special 9 But caster level 18 is needed for Shield of Faith +5, and caster level 20 is needed for Greater Magic Fang +5. Any thoughts on how this would be done?
I think there is a way - no DLL hacks needed even Well, beyond those that have already been made, that is. Take a look at the enlarge person script - it makes use of Co8 persistent data to store information. You should use this method to store the spell.id and the drinker's ID whenever you apply the potion condition. Then, on a subsequent casting, you will look up this information. If there is an active spell on the same person, then use spell.spell_remove( stored_id ) before applying the new condition. I'm fairly sure it'll work though I haven't tried. Not 100% sure that spell_remove should be used instead of spell_end but it seems appropriate I think. As with Enlarge Person, delete the entry from the list in the OnEndSpellCast script. Let me know if it works! @marc Not sure if it works, but have you tried domain_special 10?
Thanks; I'll give that a try It will work; I use druid_class 13 to cast 'Longstrider' for 25 hours (CL 25) for my boots of striding and springing. So, domain_special 11 would get you caster level 21. The only thing you can't do, unfortunately, is get even caster levels.
Yes, adding 'domain special 10', 'domain special 11', all work, thanks guys. Is it recommended that 'domain special' is used for potions, as opposed to using something like 'class_druid'?
I honestly haven't seen that it makes any difference for potions. The only place I've seen it matter is for scrolls: it determines whether it is an arcane scroll that can be scribed. A scroll marked class_sorcerer, for example, can be scribed by a wizard into his spellbook (it also needs to be a spell actually on the wizard/sorcerer spell list). A scroll marked domain_special or class_cleric cannot be, regardless of the spell. Notably, it does *not* affect who can use the item to cast a spell. That is determined simply by whether the spell is on the spell list of the user. A scroll of summon monster V with "class_sorcerer 5" will be usable by either a cleric, a wizard or a sorcerer, as they all have the spell on their class spell list, even if they don't know it. One more thing, and I'm not 100% sure on this, but I believe that property is overwritten when someone who can cast the spell crafts it. So, if I have a cleric scribe the scroll Summon Monster V, it becomes "class_cleric", so that a wizard cannot scribe it, even if the protos.tab is class_sorcerer. By default, all of the spells on the wizard spell list have scrolls which are class_sorcerer in protos.tab, or at least they should be. This is so that any scroll that is created via the item number can be scribed by the wizard. As an aside, this fact is making it difficult to create scrolls for the Resist Fire, etc. spells I created; they cannot be used by casters because they aren't on their spell list. I'm going to experiment at some point with putting them as 10th level spells on the spell lists of the various classes.
I'd like to make a suggestion regarding these spell crafting fixes/mods - if it requires altering more than 10 files, please consider leaving it to DLL/TemplePlus work, and by all means post a feature / fix request.
Hmm... only thing I've done so far that has required that many files has been the potions for different elements: Protection from Fire/Cold/Acid/Electricity/Sonic, etc. And that's only if you count all five elements together as one fix.
Could you give an example of what you mean exactly? I don't want to waste my time doing something that the DLL will fix. If you add a new potion there's really no way around it, you have to change: protos.tab description.tab long_description.tab item_creation.mes item_creation_names.mes InvenSource.mes and if it requires a new spell, then about 5 other files related to that spell But maybe you're referring to something like the fix discussed a few posts above where drinking a similar won't override the older one?, and you would need to change every spell file across the board that worked like to add that fix to the entire game. So dozens of files.
Yeah I actually meant 10 "items" not 10 files. And yes I definitely want to avoid duplicate work, as well as generally creating low-level functionality with high-level workarounds. That's the really cool part, we have the means to do that now, and it'll only get easier over time as more and more of the engine is "outsourced" to C++ (that's a novel use of the word, eh?). Also, I don't want to make too many promises, but one thing I'd really like to do is let you guys create custom spell effects by breaking down the various spell effects to their elemental components and let you mix n' match. Also generally improve / expose more properties to Python like e.g. that potion non-personal use issue. Right now I'm working on the crafting thing - the UI will probably come later because that system is a mess but I'm fairly certain I can alter how it gets the caster class / level, and perhaps allow to manipulate the behavior through Python (global vars and such).