Monk's Belt & Monk Feats

Discussion in 'General Modification' started by Hazelnut, Aug 26, 2006.

Remove all ads!
  1. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Following on from my thread about Bard problems, I'd now like to talk about Monks, which also interest me as I also have a Monk in my new evil party. ;) I would really appreciate and hints, idea's, comments or guidance from other modders and D&D experts on all this.

    Seeing the nice class specific wonderous items that have been added by co8, like the Robes of the Archmagi, I decided to have a look through the e3.5 wonderous items list. I found a really cool item for Monks:

    I wondered why no-one had added this before, and simply decided to do it myself. Hours later I realise why no-one has added it! It's not straightforward because the bonuses are essentially to hardcoded class abilities and, without extensive coding in the temple.dll or being able to alter class ability bonuses from scripts, means making an item that dynamically changes it's abilities depending on who wears it and what else they're wearing. (I've pretty sure no-one has done this before, but please correct me if I'm wrong)

    Now I'm pretty sure that altering the temple.dll to change the Monk level ability & unarmed damage code is not on the cards. I also cannot find a way of altering either the Monk PC's class level bonus to AC or the unarmed damage dice. If anyone does that this can be done, please take mercy on my and let me know ASAP so I don't waste loads more time on the workarounds I'm using.

    I'm still in the early stages of just proving I can do it, and I've pretty much cracked doing the AC bonus and damage dice using work-arounds that behave in the correct way, although they don't come up correctly in the info windows (that pop up breaking down the components of AC & damage) - I don't think that can be helped though and they're pretty obvious the way I describe them. I do have a few more things to check for simulating the Ki Strike power but I feel comfortable that I've proved the concept.

    What I have no idea how I can do is the extra stunning fist per day. Anyone got any ideas or solutions to this? It won't be the end of the world if I can't implement this, but it would be nice.


    I then got to thinking then about the higher level Monk special abilities/feats, and had an idea about implementing them without requiring major dll coding, assuming this isn't likely to happen any time soon. (Spellslinger - please correct me here if I'm mistaken and you've nearly finished the Monk abilities upgrades or something) Basically I think I could try and simulate the effect of the abilities using the Monk's Belt scripts and implement them using python scripting! :dance:

    Obviously this would require a high level Monk to have a Monk's Belt, but that seems reasonable to me. So, what do you all think of this idea? Is there some massive flaw that I can't see due to inexperience?

    Here are my initial thoughts on what could be simulated and what could be used:

    11 - Diamond Body (Su) At 11th level, a monk gains immunity to poisons of all kinds.

    EDIT: Added by moebeus for co8 3.0.4 as a DLL fix, apparently I should read ALL the release notes! ;)

    12 - Abundant Step (Su) At 12th level or higher, a monk can slip magically between spaces, as if using the spell dimension door, once per day. Her caster level for this effect is one-half her monk level (rounded down).

    Use the spell, essentially allowing Monks to cast this spell. Anyone know if it's possible to get non-spell casting classes to cast spells via the radial menu? Otherwise, the spell can still be used, but the issue becomes how the user can trigger it. The best solution I can think of is probably for it to become a spell that the belt can cast once a day when worn by a 12th level Monk.

    13 - Diamond Soul (Ex) At 13th level, a monk gains spell resistance equal to her current monk level + 10.

    EDIT: Added by moebeus for co8 3.0.4 as a DLL fix, apparently I should read ALL the release notes! ;)

    15 - Quivering Palm (Su) Starting at 15th level, a monk can set up vibrations within the body of another creature that can thereafter be fatal if the monk so desires. She can use this quivering palm attack once a week, and she must announce her intent before making her attack roll. Constructs, oozes, plants, undead, incorporeal creatures, and creatures immune to critical hits cannot be affected. Otherwise, if the monk strikes successfully and the target takes damage from the blow, the quivering palm attack succeeds. Thereafter the monk can try to slay the victim at any later time, as long as the attempt is made within a number of days equal to her monk level. To make such an attempt, the monk merely wills the target to die (a free action), and unless the target makes a Fortitude saving throw (DC 10 + ½ the monk’s level + the monk’s Wis modifier), it dies.

    Wow, I think the best way to deal with this is to simply kill the creature on success. I'm still not sure about it because of the once a week time period, but otherwise the same solution can be used as for Abundant Step.

    19 - Empty Body (Su) At 19th level, a monk gains the ability to assume an ethereal state for 1 round per monk level per day, as though using the spell etherealness. She may go ethereal on a number of different occasions during any single day, as long as the total number of rounds spent in an ethereal state does not exceed her monk level.

    Same solution again - spell on the belt, castable per day.

    20 - Perfect Self At 20th level, a monk becomes a magical creature. She is forevermore treated as an outsider rather than as a humanoid for the purpose of spells and magical effects. Additionally, the monk gains damage reduction 10/magic.

    Ignoring the becoming an outsider bit, which is not relevant enough to bother with IMO, this is a simple add DR 10/magic. Easy to do.


    One thing that would be really useful to be able to do is to set scripts on a pc, like maybe a san_heartbeat script. Anyone know how to do this? I can only seem to add san_dialog scripts to pc's with any success.


    So, what do you all think? Any comments or ideas or help with the problem areas - please reply, I reckon I need all the tips & information I can get. ;) I'm hoping to have a vesion 0.1 belt ready to test in the next week or so, depends how long it takes me. I've already spent many more hours on this than I thought it would take when I first saw the Monk's Belt in the SRD and thought it looked cool... but that's the joy of modding I guess. I look forward to your replies.

    EDIT: Prompted by Ted's reply in the adding feats thread, I've found DLL work that moebeus did and edited this post appropriately. It also seems that maybe adding the missing abilities via DLL work is not as unlikely as I believed, especially since Spellslinger has done such a top job of fixing spontaneous casting. It would be nice to have your input on whether these are likely to be added any time soon Spellslinger, if it's going to be a while, I can always do these hacks and they can be removed if and when the DLL gets done.
     
    Last edited: Aug 26, 2006
  2. krunch

    krunch moving on in life

    Joined:
    Aug 9, 2005
    Messages:
    3,280
    Likes Received:
    0
    I understand that moebius2778 did, indeed, add stuff to the Temple.DLL file for monks, and some [not sure of what all exactly] of the stuff for monks he added does not do anything or have any modifiers or have any spells or effects where those things were merely added to Temple.DLL.
     
  3. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Yep thats right Krunch, I've edited my post with all the details from the release notes that I'd not read before. (I think my eyes just started blurring half way through before)

    I also found this post from Allyx:

    These are the ones that I'd be simulating, the feats simply being in the DLL so you can level up.

    Cheers.
     
  4. Spellslinger

    Spellslinger Established Member

    Joined:
    Jul 14, 2006
    Messages:
    158
    Likes Received:
    0
    Feel free to come up with any workaround you can. I was going to have a look at it some time in the future, but any adding to the dll will be hard (if at all possible) - at least for me. So if you can actually work it out via scripting tricks, more power to us all. :D
     
  5. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Thanks for the reply Spellslinger.

    Arrrgghh. I just lost a fairly lengthy post, so I'll just sumarise. I have been following moebius' notes and I think that I've followed what he did. Somebody has since appeared to have added implementations for Brew Potion, Exotic Weapon Proficiency (Nunchaku), and Nature Sense. Anyone know who, or have any notes on that. I've been trying to download v4.0.0 but it keeps hanging on me.

    Anyway, I think moebius didn't implement the 4 monk feats: Abundant Step, Quivering Palm, Empty Body, and Perfect Self - because they would take a lot more work than the ones he did do which simply reference an existing effect and a copied and modified effect rather than have new radial menu options which kinda cast spells. Unless anyone objects I think that I'll definitely try and add these to the Monk's belt as item spells since I have no intention of learning i386 asm to the extent I'd need to to do that. (it's been 15 years since I last did asm and that was 68k & z80)

    I have to say moebius' notes on the monk work are excellent! :notworthy I am especially interested if anyone has any for the stunning fist work he did, since I may be able to figure out how to add one to the count when the belt is equipped. Thanks.

    Also, can anyone help me with the ki strike lawful? What, exactly is it meant to do now it's been fixed - or is it irrelavent in ToEE? I've tried attacks against chaotic and DR All critters and nothing is different. I cant find anything in protos with DR Lawful, so I'm at a loss...

    (as an aside, did you realise that you can cleave with a ranged weapon? I had assumed you couldn't, but a badger did tonight while I was testing)
     
  6. Cujo

    Cujo Mad Hatter Veteran

    Joined:
    Apr 4, 2005
    Messages:
    3,636
    Likes Received:
    1
    I think you can get non casting classes to cast spells by adding the class and level to the spell text - the part that says the range and stuff.
     
  7. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Okay - thanks Cujo, I'll have to try. I thought that it probably wouldn't work that way because the class wouldn't be marked as able to learn spells in the code.

    I can do the spells on objects thing, but there's a limit to one per object I think. Also the obj name is used as the radial menu option. Not perfect, but still possible. They would probably appear like this:

    Abundant Step -> Monk's Belt
    Quivering Palm -> Unarmed Ki Strike (if I even do this one, not sure yet)
    Empty Body -> Empty Body

    I am also looking at how radial menu options have been added in the dll to see if I could replicate that for these, looking at forge ring in particular. What would be most helpful is to have two copies of temple.dll, one before forge ring was added and one after. Not gonna hold my breath tho.. :shrug:
     
  8. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Just wanted to drop in an update on progress. After much messing around an wasting time python scripting, I decided modifying the dll would be far superior as a solution for the dmg & ac modifiers - so that's what I've done, with some help getting started from spellslinger - cheers dude. I still have quite a bit to do, since I just have prototype test code in there at present - but it looks doable. I hope to have something for people to test sometime next week.

    (Incidentally, if anyone ever needs a python function to auto equip an item to a pc without scrambling their inventory order, please let me know because I have one which sorta works - still needs a bit of fine tuning and debugging, but most of the hard work has been done)
     
    Last edited: Aug 31, 2006
  9. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
  10. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Sure Ted, how urgently? Do you have something specific in mind? I'd like to clean it up a bit first, and add some more comments. Oh, and figure out why it only works one time... ;) It does work though - took me hours! :mrhappy:
     
  11. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    Nah take your time, then send it over. The issue of auto-equipping (or unequipping, or replacing equipped items with others) is a pet project of mine for various reasons - haven't really got far with it.
    Re quivering palm, I agree with this.
     
  12. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    It's been a long, long road...

    Well, I've come a hell of a long way since I originally decided I'd mod in the Monk's Belt item from the SRD. Needless to say I've hit dozens of obsticles and problems along the way. I'd like to briefly cover the biggest issue that I've found as it may well help someone else in the future.

    give <proto> is not the same as create_item_in_inventory(<proto>, <char>) - I thought they were functionally equivalent, just that give was a shortcut that put it in the currently selected chars inventory so wasn't useful for scripts. It appears that python knows nothing about give - this goes direct to temple.dll when you type this at the console. (this may be common knowledge)

    More importantly, if you have an item in protos.tab that has either the 'UseableItem', 'UseableMagicStaff' or 'Useable Item X Times Per Day' properties then if you use game.obj_create to create the item (used by create_item_in_inventory) it will not be usable. Has anyone come across this before? It means that new usable magic items cannot be created from python scripts, and completely obliterated my original plans for the belt.

    I decided then that I should make the changes in the dll itself, rather than simulating. The dll changes needed for the belt are in Spellslingers latest dllfix10 release. I hope to release version 1 of the Monk's Belt tomorrow or Wednesday at the latest. It will work exactly as the SRD specifies, except for one thing: non-monks will not gain the monk AC bonuses of a level 5 monk. Unfortunately the code block that does this calculation is not called unless you have a level of monk. I will look at fixing this for version 2 if anyone wants me to. It doesn't look easy.

    Additionally, the belt will implement the Abundant Step class ability to allow chars with 12 or more monk levels to use Dimension Door once per day. I will be looking at adding Quivering Palm and Empty Body for version 2 of the belt.

    I hope that a few people will find time to test that this works, and hopefully in due course it will make playing monks so much more attractive that everyone will be doing it! :evil_laug
     
  13. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    It's finished early! Yay! :dance: Everything went smoothly tonight so it's earlier than I predicted.

    Here's a quick list of what I've changed:

    - Added a new craftable item: Monk's Belt. Crafting this requires that a character can craft wondrous items, has a caster level of at least 10 and knows one of either the 'Righteous Might' or the 'Tensers Transformation' spells.

    "This simple rope belt confers great ability in unarmed combat when wrapped around a character's waist. The wearer's AC and unarmed damage are treated as a monk of five levels higher. If donned by a character with the Stunning Fist feat, the belt lets them make one additional stunning attack per day. If the character is not a monk, they gain the unarmed damage of a 5th-level monk."

    - Implemented the monk class ability, Abundant Step. The monk class ability, Abundant Step, is now availible to those with at least 12 monk levels by using the Monk's Belt.

    - Fixed monk unarmed damage at level 20. So now a monk of level 20 (level 15 or above when wearing a Monk's Belt) actually does 2d10 (4d8 when enlarged) damage with each punch or kick! Pretty good! :punch: :evil_laug

    - Added descriptions for monk class feats / abilities. Descriptions added for all implemented class abilities.

    You should have the latest cumulative 5.0.1 fixes from the 5.0.1 Mods and Fixes Thread before installing this. Also, the belt will not give the correct bonuses unless you also install Spellslingers latest dll release, which contains my dll changes for the belt, found in dllfix10.rar - also availible in the same thread. Installation should simply be a case of extracting the zip file to your root ToEE installation directory.

    Please download and test, and report any screw-ups or bugs. It's my first mod, and I'd like to see it make it into the cumulative fixes. :mrhappy:

    I think it makes playing a monk a much more attractive proposition, so I hope many of you enjoy it. I think I'm gonna choose something easier to mod next time though!

    Hazelnut.

    P.S. If you want to just test, rather than use it for play, 'give 12420' in the console will give the current selected pc a monk's belt.
     

    Attached Files:

    Last edited: Sep 5, 2006
  14. Allyx

    Allyx Master Crafter Global Moderator Supporter

    Joined:
    Dec 2, 2004
    Messages:
    5,001
    Likes Received:
    250
    Hazelnut, I was just file comparing your monk belt into the cumulative fixes (as I do with every mod that is released that hasn't been added to the CF) and I was just wondering...

    Your abundant step spell is referenced in most places as spell number 743 but there are also references to it as number 763 was this intentional? I can't imagine it could be, so I thought I'd bring it to your attention.
     
  15. Hazelnut

    Hazelnut Great Confusor

    Joined:
    Jul 20, 2006
    Messages:
    158
    Likes Received:
    0
    Thanks Allyx, it most certainly was not intentional. I was originally going to use the number 763 for the spell, but then I changed to 743 and missed changing these references. Neither of the instances of 763 make any difference to the functionality of the belt or spell, but I've cleaned these in the new attached zip anyway since it'd need to be done when merging with the cumulative fixes I think. Let me know if you spot anything else...

    So, have you (or anyone else for that matter) tried the belt yet?
     

    Attached Files:

    Last edited: Sep 22, 2006
Our Host!