Potion of Hiding & Potion of Sneaking do nothing?

Discussion in 'General Modification' started by Rudy, Mar 15, 2015.

Remove all ads!
  1. marc1967

    marc1967 Established Member

    Joined:
    Jan 19, 2014
    Messages:
    578
    Likes Received:
    60
    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.
     
  2. Rudy

    Rudy Established Member

    Joined:
    Jan 30, 2005
    Messages:
    345
    Likes Received:
    2
    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?
     
  3. Gaear

    Gaear Bastard Maestro Administrator

    Joined:
    Apr 27, 2004
    Messages:
    11,029
    Likes Received:
    42
    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. :)
     
  4. Rudy

    Rudy Established Member

    Joined:
    Jan 30, 2005
    Messages:
    345
    Likes Received:
    2
    Fair enough; I'm not sure what else one could add to the potion name, though, to distinguish them.
     
  5. marc1967

    marc1967 Established Member

    Joined:
    Jan 19, 2014
    Messages:
    578
    Likes Received:
    60
    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.
     
  6. marc1967

    marc1967 Established Member

    Joined:
    Jan 19, 2014
    Messages:
    578
    Likes Received:
    60
    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.
     
  7. marc1967

    marc1967 Established Member

    Joined:
    Jan 19, 2014
    Messages:
    578
    Likes Received:
    60
    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?
     
  8. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,613
    Likes Received:
    537
    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?
     
  9. Rudy

    Rudy Established Member

    Joined:
    Jan 30, 2005
    Messages:
    345
    Likes Received:
    2
    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.
     
  10. marc1967

    marc1967 Established Member

    Joined:
    Jan 19, 2014
    Messages:
    578
    Likes Received:
    60
    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'?
     
  11. Rudy

    Rudy Established Member

    Joined:
    Jan 30, 2005
    Messages:
    345
    Likes Received:
    2
    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.
     
  12. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,613
    Likes Received:
    537
    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.
     
  13. Rudy

    Rudy Established Member

    Joined:
    Jan 30, 2005
    Messages:
    345
    Likes Received:
    2
    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.
     
  14. marc1967

    marc1967 Established Member

    Joined:
    Jan 19, 2014
    Messages:
    578
    Likes Received:
    60
    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.
     
  15. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,613
    Likes Received:
    537
    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).
     
Our Host!