Jump to content

MaLa

Members
  • Posts

    17
  • Joined

  • Last visited

Posts posted by MaLa

  1.  

    You also remove any other temporary weapon they may have, since resurrection spells don't have checks against targeting living creatures. (Not that the game doesn't already have such problems - casting Resurrection on a living target will remove most temporary abilities).

    Ok, this isn't really an issue in my case (except maybe for players willing to abuse the rod of resurrection for the heal effect), but it does limit drastically the flexibility of this solution, since it can't be safely applied to spells intended to target living creatures.

    Looking at your proposed solution, it seems that I reinvented the wheel but made it square =P

    I will implement your version, even if it isn't really needed, because i must say it is definitely more elegant.

    I can't say enough how much your help is appreciated, this mod owe you a great deal!

     

    edit:

    doing a quick test I found a downside to the spell sequencer solution: it displays the spell sequencer active portrait icon and this can be confusing for the player. Is this unavoidable? If this is the case, given that in this specific application is very unlikely to occour the magical weapon overriding issue, I think maybe my original solution could be preferable...

  2. Update on the resurrection issue:

    I tested the spellstate solution and it worked somewhat correctly... the issue with that is that cast spell on condition is very unreliable in respect to the trigger timing (it could easily trigger several seconds late). So I've been looking for a better solution and I found one, which I think could be worth sharing:

    The issue was how to force a character to cast a spell on self whenever he has just been targeted by some other spell or item (in my case all resurrection spells and items).
    This is my solution:

    Patch all the spell/item/s you want to be able to force their target to cast the spell, adding to them a create magical weapon effect:
    ocode: 111 target: 2 timing: 0 duration: 0 resource: YOURFAKEITEM

    Create the item YOURFAKEITEM: most parameter are irrelevant, but it need to contain at least a weapon ability otherwise the game will crash. Add to this item all the effects you want the character to cast on self as equipping effects.

    Done. The new item will be equipped by the target character, apply its equipping effects and immediately disappear.

    I tested this solution and it works much better than the spellstate one (and doesn't consume a spellstate), so i think this could be helpful to anyone who need to solve a similar issue.

  3.  

    I think if you want to use higher bytes then you need to check for bit-equality. Which means it gets rather complicated if you need the stat to represent more than 8 values. May e not impossible, just not something I can reliably rattle off the top of my head.

    Yes, this is what I was thinking... binary match might be possible in a very complicated way, expecially for the less relation, I took it into cosideration for a while but i concluded that it ins't really feasable in practice. Too bad... Thanks anyway for your help!

     

    On the resurrection issue: I can't tell what the point of it is. To reset mana? Couldn't you just see effect timing to 1 instead of 9? Or maybe cast yhe reset spell upon resting (don't you have to do that anyway?) by checking for fatigue = 0?

    I need that to reactivate mana regeneration: currently it has a timing 1 to prevent the character from regenerating mana while dead. Mana regeneration is activated by casting a wizard spell and recast itself on a delay every time it triggers, so currently if it end prematurely it will not restart until the player casts a spell... this isn't ideal for me.

  4. Thank you kjeron for your previous reply, it was very helpful! I meant to thank you but then I forgot... so better late than never!

     

    Anyway, it was a bit more complicated than I first expected, but I think now I'm very close to a working beta of the sorcerer component. At this point I could use some help with a couple of things:

     

    - For now I'm using two proficency for the system to work: one for current mana and one for max mana. This is a bit wasteful since proficencies are dword and i need only 7 bits to store a value between 0 and 99. IIRC kjeron suggested me in a previous post to use the higher bits to avoid the conflict with the original function of the proficency, so I think maybe I could fit both values in the same proficency and still don't overwrite the first byte. I could easily bit-shift my values, but then how do I chek them for = or <= in #318 an #326 opcodes? the checks would need to be limited to the correct byte and this doesn't seem possible to me... I'm missing something?

     

    - I need to detect when a character has just been revived to trigger a spell. I can't patch the casting of this spell in the revive spells because the spell need to be cast on self. The best solution I found util now would be to create a custom spell state, make all revive spell set it, and put a cast spell on condition on the charachter linked to that spell state. I still didn't test this solution, but I think it could work... is there a better solution? (spell states are a limited resource and I would prefer not using them)

  5. Wow! This is much better then my version! Thank you very much!

     

     

    Cast Spell #146 (instantly) => (SPELL D)

     

    No delay? Maybe I'm missing something, but wouldn't this instantly regenerate one mana point after a spell has been cast at max mana?

     

     

    FYI minlvl is not capped at either 50 or 255 when set using the "Cast at Level" opcodes, if you need higher values.

     

    I was struggling for how to pass a value from one effect to another: this is brilliant!

     

     

    SPELLD: Don't need the Cast SpellA, it will already be cast every round.

     

    I was actually trying to avoid the "every round" casting with that chain cast, thinking that it would be less demanding for the game engine, but maybe it's a bit risky. Obviously in that case I would have removed the Cast On Condition and iniciate the chain by making every sorcerer spell cast SPELL A.

  6. It's a complex mix of "use two rows of splprot.2da", except it's really a "NOT(rowX or rowY)", so both would actually check the opposite of what's intended

     

    I thought a little more about this and I'm not sure what would be the best thing to do...

    The problem is this: if I apply this solution, I can't use -1 as a parameter, so it would mean to fill splprot.2da with a LOT of predetermined stat checks.

    An alternative idea for mana regeneration could be:

     

    (SPELL A)

     

     

    • Protection From Spell #206 => (SPELL D)
    • Apply Effect List #326 (value: 15, type: CHA <= -1 splprot row) => (SPELL B15)
    • Apply Effect List #326 (value: 16, type: CHA = -1 splprot row) => (SPELL B16)
    • Apply Effect List #326 (value: 17, type: CHA = -1 splprot row) => (SPELL B17)
    • ...
    • Apply Effect List #326 (value: 25, type: CHA = -1 splprot row) => (SPELL B25)

     

     

    (SPELL B##)

     

     

    • Apply Effect List #326 (value: (2+CHA modifier), type: STAT 116 < -1 splprot row) (min lvl: 1) => (SPELL C)
    • Apply Effect List #326 (value: 1, type: LVL = -1 splprot row) (delay 2400/(2+CHA modifier)) => (SPELL D)
    • Immunity Spell #324 (value: 1, type: LVL = -1 splprot row) (duration 2400/(2+CHA modifier)-1) => (SPELL A)
    • Apply Effect List #326 (value: (2+CHA modifier)*2, type: STAT 116 < -1 splprot row) (min lvl: 2) => (SPELL C)
    • Apply Effect List #326 (value: 2, type: LVL = -1 splprot row) (delay 2400/(2+CHA modifier)*2) => (SPELL D)
    • Immunity Spell #324 (value: 2, type: LVL = -1 splprot row) (duration 2400/(2+CHA modifier)*2-1) => (SPELL A)
    • Apply Effect List #326 (value: (2+CHA modifier)*3, type: STAT 116 < -1 splprot row) (min lvl: 3) => (SPELL C)
    • Apply Effect List #326 (value: 3, type: LVL = -1 splprot row) (delay 2400/(2+CHA modifier)*3)=> (SPELL D)
    • Immunity Spell #324 (value: 3, type: LVL = -1 splprot row) (duration 2400/(2+CHA modifier)*3-1) => (SPELL A)
    • ...
    • Apply Effect List #326 (value: (2+CHA modifier)*N, type: STAT 116 < -1 splprot row) (min lvl: N) => (SPELL C)
    • Apply Effect List #326 (value: N, type: LVL = -1 splprot row) (delay 2400/(2+CHA modifier)*N)=> (SPELL D)
    • Immunity Spell #324 (value: N, type: LVL = -1 splprot row) (duration 2400/(2+CHA modifier)*N-1) => (SPELL A)

     

     

    (SPELL C)

     

     

    • Remove Protection From Spell #266 => (SPELL D)

     

     

    (SPELL D)

     

     

    • Proficiency Modifier #233 (value: 1, type: 116, Increment)
    • Cast Spell #146 => (SPELL A)

     

     

     

    I didn't include the part for rest/travel because it would make this exposition even more confused, but I think I have an idea on how to make it.

    What do you think about this? Could it work? It would be better or worse than make hundreds of rows in splprot for predetermined stat checks?

  7.  

    It's a complex mix of "use two rows of splprot.2da", except it's really a "NOT(rowX or rowY)", so both would actually check the opposite of what's intended

     

    Got it, thanks!

     

     

    Some of my mods (Scales of Balance, Might & Guile, Will to Power) are using stat 134, as well as stat 132. So they would be incompatible. That may be okay with you - but just so you're aware.

     

    Of course it's not ok with me! =P

    I would like this mod to be as compatible as possible, ideally with everything it isn't conceptually incompatible, but in case this was impossible, I would prioritize some mods I particularly like, such as yours (F&P, M&G and SoB), Demivrgvs ones (SR and IR) and SCS. I will avoid stats already taken by your mods and try to find a free one, but I would appreciate if you could do the same thing with the stat I'll use (as soon as I find one I'll tell you which one it is) with your future updates or new mods.

     

     

    What I do is pick a proficiency, and use Near Infinity to search all BCS scripts for mention of it. If it has a bunch of CheckStat and similar clauses, then it's probably being used by the AI. That's why I am not using stat 133, and went to 132 instead. (I started at the end, 134, and sm moving lower as I need more stats.) So you could check 116, it might be okay, and check 117, etc. until you find one that looks clear. That's my method at least.

     

    Thank you for this suggestion, I'll try it!

     

     

    You could also try other stats beside proficiencies. As this is for sorcerers, who cannot multiclass or dual-class, an obvious choice might be stat 52, divine spell failure, which can be set or incremented (maybe also decremented?) by opcode 60. It's capped at 100 though, so if your mana pool needs to go into triple-digits you're better off with one of the proficiencies.

     

    I thought about it, but sadly I'll need triple digits (the lowest acceptable cap would be 20th level, this combined with 25 CHA will result in a 120 mana pool). Since sorcerers have very limited weapon access, I could use a regular weapon proficency in a weapon inaccessible to them, but this (in the best case scenario) would fill the record page with a lot of +

  8. Finally I had the time to carefully read @kjeron post and I have some questions:

    (EFF2) Cast spell on Condition (hp>102%) (SPELL3)
    (EFF1) Cast spell on Condition (hp>102%) (SPELL2)


    I'm guessing you meant hp<102% (as an always true condition), I got it right?

    If you want to avoid scripting, hijack a proficiency stat.


    The informations I could find on this matter are a bit confusing and contradictory... In your example you make use of stat 116, which is, by IESDP description of opcode #233 (Proficiency Modifier), the first unused proficiency. This is fine, but then here are the rows from stats IDS corresponding to all the supposed unused proficiencies:

    116 WIZARD_SPELL_DEFLECTION
    117 PROTECTION_FROM_EVIL
    118 TRUE_SIGHT
    119 CLERIC_CHAOTIC_COMMANDS
    120 CLERIC_INSECT_PLAGUE
    121 CLERIC_BLADE_BARRIER
    122 CLERIC_PHYSICAL_MIRROR
    123 CLERIC_SHIELD_OF_THE_ARCHONS
    124 CLERIC_REGENERATION
    125 WIZARD_FIRE_SHIELD
    126 WIZARD_PROTECTION_FROM_MAGIC_ENERGY
    127 WIZARD_MISLEAD
    128 WIZARD_PROTECTION_FROM_MAGIC_WEAPONS
    129 WIZARD_SPELL_TURNING
    130 WIZARD_PROTECTION_FROM_THE_ELEMENTS
    131 CLERIC_FREE_ACTION
    132 WIZARD_KHELBENS_WARDING_WHIP
    133 CLERIC_DEFENSIVE_HARMONY
    134 EXTRAPROFICIENCY20


    From this source, it seems that stat 134 is the only actually unused stat (EXTRAPROFICIENCY20) and all the others are used by spell states. What is the truthful source? Moreover, I suppose there are other mods making use of this clever trick, so I would need to have a list of this mods and exactly what stat(s) they use, in order to avoid incompatibilities... Can anyone help me with this?

     

     

    Apply Effects List (stat 116 > level*14 AND charisma <16 ) (SPELL5)

     

    In this case (and many other like this) you are setting a #326 opcode with two stat checks... you are shortening a more complex setting where a #326 with one condition applies another #326 with the other condition, or you really mean that I can set up an AND in this effect? In the second case, how I can do it? Has it something to do with the "use two rows of splprot.2da" pseudo stat?

     

     

    Cast spell (delay 300) (SPELL4)

     

    While this is the literal implementation of what I wrote in my description, what I actually meant was to set up the regeneration rate in such a way that the mana pool will always replenish itself in 8 hours, updating the current mana each time it would grant at least a new spell (assuming a 1:1 level/mana ratio, 1 every 2400/Maximum Mana seconds). I think I can figure it out myself, but I wanted to clarify my real intenctions since my previous explanation was misleading...

  9.  

    If you want to avoid scripting, hijack a proficiency stat.

     

    Wow! Lots of very useful suggestions here! It seems you almost did all the job for me, I didn't expect so much! Thank you!

    I need to investigate a little better, but at first view it seems your structure could actually work, you came up with all of this on the fly? I was under the impression that Modify Proficency couldn't increment proficencies, only set them (this is what IESDP claims), but after a quick research I would say you are correct (and IESDP is outdated in this)... This is a real game changer!

     

     

    How about this: use a creature that runs a script which considers all possible combinations of character level and CHA bonus level (so 5 CHA bonus levels times whatever the level you want the MM scaling to cap at). Summon this creature whenever a CHA mod is applied. It it's permanent then that's it. If it's limited duration, summon the creature again at the end of the duration for recalculation.

     

    Yes, this is a better version of what I had in mind, avoiding the constant check for the need to recalculate. But if there is a way to avoid scripting complications (as it seems reading kjeron post), I would go for it!

  10.  

    Then, you need to look up every instance of CHA modification in the game, to insert a MM modification there. If the CHA mod is permanent then the MM mod is also permanent. If it's limited time then remove the MM mod at the end of the duration.

     

    You mean find every item, spell or anything else that carries a CHA modification effect and add to it a MM and MR modification effect?

    This could be an acceptable solution, but it is a frightening task... I would need first of all to understend if and how I can filter this istances using WeiDU and patch them. Then the item/spell would need to:

    • Check the character starting CHA (MM and MR modification for +X CHA effects depend on the original value)
    • Check the character level (since MM and MR are level dependant).
    • Target each combination of this two with a different MM and MR modification effect.

    At last, even after all of this, I can still get wrong results for limited duration effects if they stack: for instance, if a character starting with 17 CHA get two +1 CHA effects at different times (and/or of different duration), the first will not give him anything, but the second will. Then when the first expires the character will retain an invalid benefit until the second also expires.

    What I could do is to create an effect that sets a variable to force the script recalculate MM and MR, adding this effect to level and CHA modifications. This wouldn't spare me the task to find every CHA modification instances, but would solve the other problems...

     

     

    But then how do you stop it from updating at max mana? At max mana you need to stop the timer by setting it to either 0 or a very big value. But you need it to be 0 so you can do the "IF SC = 1 and timer not running THEN start timer" portion. This means at max mana MR will always be "expired".

     

    I would say:

    IF MR expired AND CM < MM

    THEN update catalyst

    This will keep comparing CM and MM at every cycle though... is this much more expensive than checking a single variable? Would be preferable to store an additional variable for maximum mana reached? I can do it either ways, it's only a matter of performance...

     

     

    Also, you don't want to have two different actions for SC = 1 and MR expired. Because then you'd need two separate triggers for every possible value of CM, which means doing the entire value-reading task twice.

     

    You are totally right! I still need to digest all the limitations of this scripting environment... (such as I can't nest IF blocks).

  11. First of all, thank you for your quick response!

     

     

    But FYI, the "necromancy is different" thing is no longer in recent builds of TnB.

     

    My bad, clearly I had in mind an outdated version of T&B... anyway, no opposing schools is a huge problem for keeping generalist mages balanced.

     

     

    Generalists are strictly inferior, though we are considering addressing that by giving them an "Anyspell" ability, which is basically NRD without any wild surge.

     

    Without the details I can't really tell, but I fear this would be a bit too powerful... Moreover, why to play a wild mage if generalists can do the same thing and not get the wild surge drawback?

     

     

    2) being able to spontaneously convert memorization slots to cast spells from within their school.

     

    This is intresting... I still don't know how I feel about it, mainly because the need to foresee which spell will be useful in the near future is a defining feature of mages and one of the main component of the stategic complexity in this game for me. But alter it in such a limited way maybe would be acceptable...

     

     

    This will be exceedingly difficult to do... we've been kicking around ideas for how to implement it for the better part of a year, and still haven't covered all the complications.

     

    Since you have already dealt with this problem, could you give me some advice on what kind of complications I will encounter?

     

     

    If the game has two Spell Sequencer scrolls, you need to decide who gets to learn them. If it gives the ability for free to every mage, then that's a choice that was taken away from the player. I like players to have to make meaningful choices

     

    You have a point there... but I still think that learning from scrolls something that is no longer a spell is a bit immersion breaking... The optimal solution would be to recreate the choice giving the mages a list of feats from which to choose: for instance we could put crafting and metamagic skills in a common list and let the player choose which one he wants (I don't think this two groups will suffice, we would need to come up with more options)

     

     

    I'm not sure the "wait a day" idea is feasible

     

    I was thinking of two possible solution:

    • Make the scroll a one charge per rest item, adding to the cast spell ability a remove item effect linked to the scroll itself. This way the scroll will still be "one use only" for casting spells, but not for learning them. The drawback is that remove item can remove a different scroll of the same type if the character has more then one.
    • Add to the learn spell ability a create item effect (delayed by 8-24 hours) linked to the scroll itself, restoring it in the inventory after a certain amount of time. The drawback is that this isn't exactly "until rest" and is esthetically less pleasing.

    Both this solutions have a relevant flaw: they don't account for the real outcome of learning attempts, meaning they don't destroy the scroll on success, so the player will learn the spell AND cast it one time using the same scroll. I wouldn't know how to avoid this without scripting, but it doesn't bother me so much...

     

     

    Both MM and MR are level-dependent so I'm thinking they can both be done by using passive abilities gained at every level.

     

    This would be simpler (and less demanding for the game engine), but it doesn't account for temporary charisma changes, or worse lets the player exploit it pumping the stat before leveling up for permanent benefits... I need to think of it, maybe I can create a hybrid system.

     

     

    The MR = 12.5% MM is harder, because it also depends on MM, not just level. So after the check for CHA and applying additional MM, you need a piece of code that reads all possible values of MM and calculates the corresponding MR. You would also want to decide at which level MM maxes out. Let's say it caps at level 40, so your max MM would be 240 for a 25 CHA 40th level Sorc. Some values are not possible, like 7, 11, or 13, but it's going to be pretty tedious setting this up, I guess. What you can do is keep the max MM reasonably low, to make your life easier. Maybe let it cap at level 20 or so.

     

    I'm a patient man, but more than that I hope I can automate upstream this process... anyway thank you for your sympathy!

     

     

    I'm not sure how to efficiently compare CM and MM. I suppose you could use a variable that signals that any spell has been cast, let's say CASTSPELL. This can't be the same as SC, since it changes differently. In the script, whenever this CASTSPELL variable is 1 and the regen timer is not running, start the regen timer. When it expires and CASTSPELL is still 1, increment CM. So basically, the first time you ever cast a spell, CM will keep increasing until it equals or exceeds MM. Then, you need a piece of code preceding all this, which considers every possible value of MM, and compares CM to that value. If CM >= MM, set CASTSPELL to 0, stop the regen timer, and set CM = MM.

     

    I didn't understand why I would need another CASTSPELL variable... maybe I missed something, could you explain yourself better? I was thinking to start the timer whenever it isn't already running and SC = 1. Then, even if SC will soon become 0, the timer will keep going and reset itself until CM >= MM and only at that time it will stop (not resetting itself). You think this wouldn't work?

     

     

    As for the catalyst thing, since the game has to read the value of CM, I don't see any other way short of another piece of code that considers every possible value of CM, which does take every value from min MM to max MM, then create the item accordingly. You would probably need another variable, let's say UPDATECM, to signal the game when it needs to update this value. Every spell cast will set this flag to 1. Every time regen timer expires, set this to 1. When CASTSPELL (from above) = 0, set UPDATECM to 0 (so at max mana it doesn't need to update catalyst). Whenever a new catalyst is created, also set UPDATECM to 0.

     

    Same as for the previous point, why can't I simply update the catalyst on SC=1 or MR expired? Has this to do with the fact that I can't change a variable and read its updated value in the same block? In this case, if the triggers is MR expired, I can set the number of charges to CM + 1 and, if the trigger is SC=1, the spell itself has already updated CM, so I think the value would be correct as it is.

     

     

    EDIT: As far as the feedback info for CM is concerned, the mod Virtue creates a new token called Virtue which is displayed in the Record page as another piece of info. I wonder if you can do the same thing for mana? It still doesn't change the fact that you would still need to consider every possible value of CM. It just saves you the trouble of creating an inventory item.

     

    I think this would be a useful addition for displaying maximum mana, but wouldn't be practical enough for current mana (I wouldn't want to constantly go in the record page during combat to check how much mana I have left). The catalyst can stay in a quick item slot and be always visible.

  12. Introduction

    Hello everyone! This is my first post in this awesome community and I'm not sure if this is the appropriate section to introduce new projects, so you will excuse me if I got it wrong...
    I would like to discuss with everyone interested about some ideas on how to improve (in my opinion at least) the arcane classes and kits (mainly mages, but possibly sorcerers and bards too). Every kind of feedback and suggestion is welcome (either on flavour, balancing or technical implementation), so feel totally free!


    Structure and Compatibility

    The mod will be split into several components mutually independent (one component for each class, plus various components for general tweaks). It is also intended to work seamlessly with Spell Revisions (which I found really good), so I don't plan to modify any spell effect nor add any new spell, letting SR take care of it.
    The main compatibility issue will be with Tome and Blood, covering it roughly the same ground of this mod, resulting in various clashings and redundancies (I'll address this topic more extensively later on). Concerning the bard, I'm not sure I will touch it at all (both Rogue Rebalancing and Might and Guile take care of it) but if so there maybe will be some incompatibility with those mods too (I'll discuss about this in the bard section).


    Main Motivations and Goals

    Playing vanilla specialist mages, I've always found underwhelming that effectively they are defined mainly by which spell school they can't access, instead of beeing better versed in their own school, so I wanted to find a way to rettify this lack.
    Moreover I don't like how sorcerers follow the same rest mechanism of mages, being their spells originated from innate power instead of studies and preparation, so I'd like for them to use some sort of mana pool for their spell casting.
    From this informations alone you can already derive that pen & paper fidelity is no concern of mine, so if you are a dungeons & dragons enthusiast this mod is not for you...


    Mage Class Component

    My main objective for mages is to make sure that specialists are encouraged to use primarily the spells belonging to their school, making this spells more advantageous for them, while mantaining the generalist mage a viable and effective choice.
    Generalist Mages

    I think I need to invert the bonus spells advantage, giving it to generalist mages instead of specialists: this will contribute to represent generalists greater versatility, in opposition to specialists being more powerful in their specialties. That's all for generalist mages: equal access to every school and one extra spell slot per spell level.


    Specialist Mages

    Regarding specialists it is not as simple: forcing them to use their specialty spells it's not doable (unless I limit their access to only one school, or maybe I could use a workaround like giving them a bunch of spells from their school as innate abilities instead of as many spell slots), but more importantly it's not desirable either... I think it would be preferable to give the player the carrot instead of the stick, letting him make his choices freely.
    Have given the extra spell slots to generalists allows me to find a more "school specific" main advantage for specialists: this main advantage, inspired by Faiths and Powers sphere system, will be an equivalent focus access to spells in the specialist school, which means they will be able to memorize spells belonging to their school in a spell slot one level lower then usual (2nd level spells in 1st level slots, 3rd level spells in 2nd level slots and so on).
    Regarding the main disvantage, I'm not sure whether to keep the prohibited opposing school, or treating the opposing school like F&P minor access spheres, letting the specialist learn spells in that school from the 4th level down and memorizing them in a spell slot one level higher. Maybe I could do both, creating an opposition system where each school has one prohibited school and two minor access schools.
    I could also increase casting level by one every four levels (5 at 4th, 10 at 8th, 15 at 12th and so on) for the choosen school spells and, if I don't completely deny access to the opposing school, decrease it in the same way (3 at 4th, 6 at 8th, 9 at 12th and so on) for that school.
    Let me know what you think about the balancing of this options.
    In every case I will modify the school opposition scheme so the (main) opposing schools will reciprocally be like this:
    Invocation - Conjuration
    Illusion - Divination
    Necromancy - Enchantment
    Alteration – Abjuration
    I will keep the learning advantage / disadvantage untouched (+15% in the specialization school, -15% in every other school), but I could modify the learning mechanism in a specific component (I'll address this topic later on).
    Lastly, I think I want to remove the +2/-2 bonus/penalty to saving throws which give an unfair advantage to some specialists that make use of a higher number of save dependant spells.
    I could mantain it for the more appropriate specialist (which I think is Enchanter) if I can give every other specialist an equivalent more fitting advantage... suggestions are welcome! For now I didn't think of any of it, because I'm not sure I could afford to give another specific advantage to specialists without making them unbalanced, maybe the best thing is to simply remove those saving throws modifiers and let them live with the other advantages


    Wild Mages

    Wild mages are a weak spot for me, mainly because I really don't like them: I find all that wild surge thing very silly, at least in a video game where the player can at will make use of the "mighty reload spell" to compensate... for short they are both annoyingly random and utterly overpowered (specially at high levels where the chance of a bad surge is extremely reduced). Nonetheless I think no one would ever use a wild mage in a no reload playthrough.
    Said this, lot of people seem to like wild mages, so I can't simply remove them from the game and call it a day (altough it's very tempting).
    To integrate them with my revised specialists concept, I think i could remove the extra spell slot and give them instead focus access to every spell school (meaning that they will memorize every spell in a one level lower spell slot), while rising their wild surge probability to something like 25% (I don't know if that's technically feasable), but granting them constantly the level based bonus for determining the wild surge effect. This way players who like randomness will ejoy the wild surge occourring one time over four, while the rest of us can simply not play wild mages at all... Moreover, i would split Reckless Dweomer (the main source of wild mage imbalance) into three different spells: a level 1 "Minor Nahal's Reckless Dweomer", a level 4 "Nahal's Reckless Dweomer" and a level 7 "Major Nahal's Reckless Dweomer", each one allowing the wild mage to cast any known spell from any level up to its level plus two (levels 1 to 3 for the minor one, levels 4 to 6 for the base one, levels 7 to 9 for the major one) with a 100% wild surge probability.


    New Specialist Level 9 spells

    Although I know that I've stated that I don't plan to add any new spell, that was a half-truth... The focus system leave me with two problem:

    • Level 1 spells don't have a level 0 spell slot to fit in.
    • Level 9 spells fitting in level 8 slots leave the specialists with no spell of their school to fit in level 9 slots.

    While the first problem can be solved (in absence of a better solution which I can't think of) by simply leaving level 1 spells in level 1 slots alongside the level 2 ones, the second has no other solution than to add at least a new level 9 spell for each school to give exclusively to the specialist of that school. This problem is particularly evident in the special case of the wild mages that, getting focus access in every school, would be left with no level 9 spell at all. With this solution they can instead get access to every special spell (which is a huge boost).
    For now I didn'n think of any of those special spells, and I very much would like if some of the people that are currently working on Spell Revisions could give me their help and/or suggestions on how to set them up in a way that fits well with the Spell Revisions design criteria.

     


    Sorcerer Class Component

    My objective for sorcerers is to give them a completely different mechanism for casting their spells compared to the standard one, that will belong only to mages.
    To explain why I want to do this, I need to clarify that I personally find vanilla implementation of the sorcerer sort of a better mage: he has simply more spells and he don't really fit a different role in the group. His supposedly limitation in the known spells is rarely an issue at all (although Spell Revisions's more balanced spells partially rettify this). My impression is that most of players uses mages only because of some collateral reasons (there are pratically no sorcerer npc - if we exclude Baeloth which is kind of cheesy - and sorcerers can't dual-class nor multi-class).
    Plain Sorcerer

    The core idea for my new sorcerer class is to create a mana pool from which he can draw to obtain the power he needs, consuming a portion of that in the process. That pool will slowly regenerate itself over time.
    Although it's not possible to create a whole new mana system due to engine limitations (I have no way to display the mana pool status), I think I could utilize some sort of “catalyst item” to circumvent this limitations, so the new sorcerer would be like that:

    • Learning process and amount of known spells unchanged.
    • The sorcerer will need a personal catalyst item to access his spell casting ability (this item will display information about the mana pool)
    • The sorcerer will start with two maximum mana points, gaining two addicional points per level of experience.
    • Charisma will grant the sorcerer additional mana points per level of experience (+1 at 16, +2 at 19, +3 at 22, +4 at 25)
    • No more limited spell amount per rest, each spell will be usable at will.
    • Each spell will now consume an amount of mana points equal to its spell level.
    • The sorcerer will regenerate 12.5% of his mana pool per hour, so resting will always replenish it.

    While I'm still not sure of the specific numbers in this system and I probably will need to fine tune them, I believe that it would be intresting to have a new kind of arcane pratician that can dispose of his spells in a more flexible fashion, choosing between the option to cast a very high amount of low level spells, a limited amount of high level spells, or anything in between. Moreover, the constant mana regeneration will make the sorcerer less rest dependant compared to the mage.


    Dragon Disciple (and mods's sorcerer kits)

    I think I could replace the "one less spell per rest" disadvantage (whenever present) with a smaller mana pool (1 base points per level), leaving everything else untouched.
    If I would engage in a Dragon Disciple revisitation (which is not my priority) I think it would be cool to give them a dragon shapeshift ability (using the wyvern paper doll, not the dragon one!), but this is not a trivial task and I need to focus my efforts right now.

     


    Bard Class Component

    My main concern with bards is that it is not clear whether to consider them an arcane class rather than a rogue class. For this very reason, multiple mods that are not focused on arcane praticians address the bard class in various ways, often doing a very good job. I'd like to tweak them from the spell casting perspective without undo other mods achievements, but I fear that would be an integration nightmear...
    If I could solve this basic problem, my intent would be to alter bards spell schools access like this:
    Plain Bard

     

    • Focus access to Enchantment school.
    • Standard access to Illusion and Divination schools.
    • Minor access to Conjuration, Alteration and Abjuration schools.
    • No access to Invocation and Necromancy schools.

     


    Blade

     

    • Focus access to Illusion school.
    • Standard access to Alteration and Abjuration schools.
    • Minor access to Conjuration, Divination and Enchantment schools.
    • No access to Invocation and Necromancy schools.

     


    Jester

     

    • Focus access to Enchantment school.
    • Standard access to Necromancy and Abjuration schools.
    • Minor access to Illusion, Conjuration and Divination schools.
    • No access to Invocation and Alteration schools.

     


    Skald

     

    • Focus access to Alteration school.
    • Standard access to Conjuration and Abjuration schools.
    • Minor access to Illusion, Divination and Enchantment schools.
    • No access to Invocation and Necromancy schools.

     


    I would leave everything else untouched, letting other mods, such as Rogue Rebalancing and Might and Guile, take care of the remaining bard (and relative kits) features.


    Cantrips

    I find cantrips a very useful addition, granting to very low levels arcane praticians something to do in every fight, apart from missing the enemies with their weapons.
    I will create a specific cantrip for every spell school, giving each one to the appropriate specialist, plus one for every sorcerer kit (for now only the Dragon Disciple, but if and when i will decide to include explicit support to kit from other mods, each one will get a dedicated cantrip). Generalist mages and plain sorcerers will select from the specialists's list which one they prefer, but they will get only a minor version of it. Wild mages will get the standard version of a cantrip randomly selected from the specialist's list. Bards will get a cantrip accordingly to their kit (Fascinate for Plain Bards, Lifesteal for Jesters, Disappear for Blades, Winged Feet for Skalds). Every cantrip will be granted as innate ability at level one.
    Here is the currently planned list of cantrips and their effects:
    Magic Bolt (Invocation)

    Same as Magic Missile, but less damage and no addicitional missiles. Spells that negate Magic Missile will also negate Magic Bolt. Usable once per round.
    Standard: Deals 1d3+1 magic damage.
    Minor: Deals 1d3 magic damage.


    Glimpse (Divination)

    Same as Farsight, but lasts only three seconds and caster cannot move nor do any action for one round. Usable once every five rounds. This cantrip is intended only for scouting purpose, definitely not for summons remote control or out of sight spell casting in general, so I need to make sure that it isn't exploitable or replace it with something else... what do you think?
    Standard: Normal Farsight area of effect.
    Minor: Half Farsight area of effect (I'm not sure I can modify Farsight area of effect, if not I must find another differenciation method)


    Disappear (Illusion)

    Same as Invisibility, but casting target limited to self, duration limited to one round and caster cannot move nor do any action while invisible.
    Standard: Usable once every five rounds.
    Minor: Usable once per turn.


    Summon Rats (Conjuration)

    Summons a number of rats. Every rat can halve enemies movement rate in a small area around itself on a failed save versus breath and deal one damage on a succesful hit. The rats last for five rounds or until killed. Usable once every five rounds.
    Standard: Summons two rats.
    Minor: Summons one rat.


    Lifesteal (Necromancy)

    Same as Larloch's Minor Drain, but less damage. Usable once per round
    Standard: Deal 2 damage and restore 2 hit points.
    Minor: Deal 1 damage and restore 1 hit point.


    Fascinate (Enchantment)

    Same as Charme Person, but works only on neutral characters and lasts only for one round. Target doesn't turn hostile after effect expires. Charmed people can be pickpocketed with a very high bonus (this tweak would be nice even on regular Charme spell, but editing of spells is beyond the intent of this mod). Usable once per round.
    Standard: Target saving throw bonus +4
    Minor: Target saving throw bonus +6


    Winged Feet (Alteration)

    Caster gains additional movement rate for two rounds. Usable once every two rounds.
    Standard: Movement rate x 2
    Minor: Movement rate x 1.5


    Novice Globe of Invulnerability (Abjuration)

    Same as Globe of Invulnerability, but only protect from first level spells. Usable once per round.
    Standard: Lasts for three rounds.
    Minor: Lasts for two rounds.


    Fire Puff (Dragon disciple)

    Same as Burning Hands (Spell Revision AOE version), but less damage and not scaling with levels. Usable once per round. Deals 1d3 fire damage.

     


    General Tweaks Components

    In this section I will talk about some general tweaks I'd like to implement as independent optional components. Most of them are already present, in the same or a bit different form, in the Tome and Blood mod, so I'm uncertain if redoing that job is really needed. Due to the conceptual incompatibility between T&B and the main components of this mod though, I think it would be practical for players to have the option to select only one of this mods, discarding the other altogether. For this reason I think I'll redo them, taking the opportunity to do them my way when I feel it's needed.
    Armored Casting

    I like the way Item Revisions takes care of this issue and I don't foresee any incompatibility between IR and this mod, so I don't need to do anything but invite everyone to make use of it!


    Find Familiar

    There are a number of things I want to do about familiars, one of that is easy, the others are more challenging... The easy one is converting Find Familiars in an innate ability, giving it to mages and sorcerers at level one. Other than that, I would open the possibility to have familiars to every character (not only Gorion's Ward). I would also remove the permanent constitution penalty on familiar death, which I find most likely a reload condition, replacing it with a one week lasting constitution penalty and the inability to recast Find Familiar for the same amount of time. Hopefully this will be more acceptable, leading "regular" players to actually experience it, and "no reloaders" to let those poor familars out of their bags sometime! Lastly I'd like to modify the familiars themself, linking the familiar type to the mage specialization, the sorcerer kit, or simply the player selection (in case of generalist mages or plain sorcerers) rather then to the character alignment. I must confess that for now I didn't spend any time thinking of new familiars, but I'd like to do it sooner or later...


    Metamagic

    Borrowing the term from Tome and Blood, with metamagic I refer to the various sequencer and contingecy spells: I like that T&B converts them to innate abilities, but I don't understand the reason of that complex "learning-casting-resting" unlocking mechanism... I would simply grant them to mages at appropriates levels. Maybe this is due to some technical limitations I didn't think of, if so let me know!


    Innate High Level Ability

    Like the title said, I will convert spell HLAs into innate abilities, freeing 9th level spell slots for actual 9th level spells. Every spell HLA would be selectable multiple times for additional uses per rest. Maybe I will also create new school specific HLAs, if I can find some good ideas.


    Crafting

    I partially like how Tome and Blood address this issue, although I would limit it to the mage class (sorcerers seems a bit unfitting to me), but I would exclude alchemy, which I find a little more exotic than scrolls and wands for mages... What I'd really like would be a specific alchemist kit for bards (and maybe mages), sort of the alchemist kit for thiefs included in Might and Guile, but this is another matter...


    Ability Score Bonus

    Meaning high intelligence or charisma giving bonus spells to mages, sorcerers and bards, like wisdom does for clerics and druids. I would do that pretty much the same way Tome and Blood did, at least for mages and bards. Sorcerers will use a completely different system and already get bonus mana points for high charisma.
    On the other hand I'm not sure about bonus casting level limited to sorcerers: maybe I would give it to everyone or no one... what is the reasoning behind this choice? I'd like to ear opinions about this...


    Learning Mechanism

    It seems to me that the destruction of the scroll on a failed learning attempt is a bit too harsh outcome (again likely to be a reload condition, for the rarest spells at least), so I'd like to make sure that every failed attempt to learn prevents any further attempt only until rest, not destroying the scroll in the process.

     


    About Tome and Blood

    First of all I want to clarify that I don't intend any of the following considerations as an absolute criticism on this mod, so I hope Aquadrizzt or any of the co-autors will not be offended. I like some of T&B features, but I disagree with some other choices... Like with everything else, is only a matter of tastes.
    In particular I don't like that every school is opposed to necromancy (except necromancy itself), nor that specialists are encouraged to use spells from their own school by automatically knowing everyone of them (actually overriding the learning advantage). About specific mage kits features I've mixed feelings, while I generally like sorcerer kits (maybe I would make them a bit differently, but it is not my main concern). On the bright side I pretty much like every tweaks component features, altough I would slightly modify some of them (as you can see in the previous sections).
    I said all of this mainly to explain why I plan to make a mod that overlaps with T&B. Nonetheless I currently don't plan to cover exactly all the features of T&B (for instance I will not include any new kit, at least for the first release), so I can try to address the compatibility issue for the components that are not conceptually incompatibles.


    Implementation

    Here I'll expose my preliminary thoughts about implementation: although for some of the components (the main ones) I already have a number of ideas about how they will work, I didn't even start to look into most of them, so I'm not sure that everything I wrote will actually be possible. Any advice from experienced modders will be greatly welcome (this is actually among the main reasons fot me to write this post).
    Mages

    First of all, I think I'll need to create a one level lower version of every spell in the game: the new spells will not be a duplicate of the original spells, but each spell will rather cast the original version of itself ( via opcode #146 or #148). If I'll implement minor access to schools I'll also need to create a one level higher version in the same way. Then I'll patch every scroll in the game: I'll replace the single Learn Spell effect with different versions of it that will target each kit (via opcode #177) with the appropriate version of the spell they represent. Maybe I'll also need to look into the joinable npc and adjust their known spells.


    Sorcerers

    My first idea was to disable sorcerer's spell casting by default, but let him create a special item once per rest with the equipped effect to re enable it. This item would have been like a wand (with a number of charges equal to the sorcerer's mana points), so consuming the last charge would have destroyed it, disabling spell casting. Sadly I can't find an effect allowing me to manipulate specific items charges (opcode #243 doesn't let me specify the target item, if I got it right), so I think I'll need to achieve something similar through scripting (which I was hoping to avoid...).
    My current implementation would consist of this steps:

    • Patch the sorcerer's spell table so each spell will be usable only one time per rest.
    • Create four local variables to store maximum mana points (MM), current mana points (CM), mana regeneration rate (MR) and spell casted (SC).
    • Create a sorcerer version of every arcane spell that will: decrement CM by its spell level (via opcode #309), cast the original version of the spell (via opcodes #146 or #148), restore itself in memory (via opcode #261) and set SC to 1 (again via opcode #309).

    Then, I need to create a script for mana pool management that will take care of a number of things:

    • Update MM and MR on level change.
    • Update MM and MR on charisma change.
    • If a timer MR has expired and CM is lower than MM: restore every spell with a lower level then CM+2, enable spell casting, increment CM by 1, replace the catalyst item with one having CM charges, reset the timer to MR seconds.
    • If SC is equal to 1 and CM is greater then 0: remove all spells with a greater level than CM from sorcerer's memory, replace the catalyst item with one having CM charges, set SC to 0.
    • If SC is equal to 1 and CM is lower then 1: remove all spells from sorcerer's memory, disable spell casting, replace the catalyst item with one having 0 charges, set SC to 0.

    I know there is no need to make use of the catalyst item for this system to work, but I will keep it for visual feedback purpose.


    Questions for scripting experts

     

    • Can I use variables values as parameters for actions? Looking at IESDP I think not, but I find that very unusual, so I want to doublecheck, maybe I missed something...

      There would be a workaround:
      IF Global(myVar, SCOPE, 1)
      THEN someAction(1)
      IF Global(myVar, SCOPE, 2)
      THEN someAction(2)
      IF Global(myVar, SCOPE, n)
      THEN someAction(n)
      But do I really need to setup things in this very tedious way?

    • Where to put this script to make sure every sorcerer in the game uses it, creating the minimum amount of troubles to other scripts?

     

     


    Conclusions

    I want to give my sincere gratitude to anyone who had the dedication to read this wall of text down to this point! Thank you all, brave people!
    This is the end, but before you get too excited (or disappointed), I must confess a couple of things:

    • At this moment I have only ideas, nothing I wrote in this post is already done, and I don't know yet how much time I'll find for doing it. But I will try!
    • I have little to no specific experience in Infinity Engine games modding (other than doing minor tweaks to my own games)... but I can code (and I sometime work in game industry), so I think I can learn relatively quickly with the kind help of some willing experienced modders (surfing the web looking for solutions is sometime a very time consuming task).

    Bye for now, I hope you enjoyed the reading!

     

×
×
  • Create New...