Condition - Monster Melee Poison

Discussion in 'General Modification' started by anatoliy, Jul 6, 2019.

Remove all ads!
  1. anatoliy

    anatoliy Member

    Joined:
    Feb 18, 2017
    Messages:
    99
    Likes Received:
    6
    How condition Monster Melee Poison works in ToEE (both Vanilla and T+).

    If "Monster Melee Poison" is present in Monster conditions (proto fields) then new condition instance will be created each time victim is hit by the Monster. The condition takes one parameter (arg0: poisonId).

    ToEE Vanilla has hard-coded table of Poison Specifications (36) with following data:
    Code:
    30 : Arsenic
    DC:    13
    Initial Damage:    1 Con
    Secondary Damage:    1d8 Con
     
    8 : Black Adder
    DC:    12
    Initial Damage:    None
    Secondary Damage:    1d6 Str
     
    14 : Black Lotus Extract
    DC:    20
    Initial Damage:    3d6 Con
    Secondary Damage:    3d6 Con
     
    3 : Blood Root
    DC:    12
    Initial Damage:    None
    Secondary Damage:    1d4 Con + 1d3 Wis
     
    25 : Blue Whinnis
    DC:    14
    Initial Damage:    1 Con
    Secondary Damage:    Unconsciousness
     
    19 : Burnt Othur Fumes
    DC:    18
    Initial Damage:    1 Con
    Secondary Damage:    3d6 Con
     
    13 : Carrion Crawler Brain Juice
    DC:    13
    Initial Damage:    Paralyze
    Secondary Damage:    None
     
    18 : Dark Reaver Powder
    DC:    18
    Initial Damage:    2d6 Con
    Secondary Damage:    1d6 Con + 1d6 Str
     
    27 : Deathblade
    DC:    20
    Initial Damage:    1d6 Con
    Secondary Damage:    2d6 Con
     
    10 : Dragon Bile
    DC:    26
    Initial Damage:    3d6 Str
    Secondary Damage:    None
     
    33 : Error! Missing line 333 in tpmes//combat.mes
    DC:    0
    Initial Damage:    None
    Secondary Damage:    None
     
    34 : Error! Missing line 334 in tpmes//combat.mes
    DC:    10
    Initial Damage:    Con + Dex
    Secondary Damage:    Con + Dex
     
    35 : Error! Missing line 335 in tpmes//combat.mes
    DC:    4
    Initial Damage:    Wis + 2d127 Wis
    Secondary Damage:    126d127+255 Wis + Con
     
    7 : Giant Wasp
    DC:    18
    Initial Damage:    1d6 Dex
    Secondary Damage:    1d6 Dex
     
    1 : Greenblood Oil
    DC:    13
    Initial Damage:    1 Con
    Secondary Damage:    1d2 Con
     
    15 : Id Moss
    DC:    14
    Initial Damage:    1d4 Int
    Secondary Damage:    2d6 Int
     
    32 : Insanity Mist
    DC:    15
    Initial Damage:    1d4 Wis
    Secondary Damage:    2d6 Wis
     
    5 : Large Scorpion
    DC:    18
    Initial Damage:    1d6 Str
    Secondary Damage:    1d6 Str
     
    17 : Lich Dust
    DC:    17
    Initial Damage:    2d6 Str
    Secondary Damage:    1d6 Str
     
    9 : Malyss Root Paste
    DC:    16
    Initial Damage:    1 Dex
    Secondary Damage:    2d4 Dex
     
    23 : Mystical
    DC:    0
    Initial Damage:    1d10 Con
    Secondary Damage:    1d10 Con
     
    28 : Nitharit
    DC:    13
    Initial Damage:    None
    Secondary Damage:    3d6 Con
     
    29 : Oil of Taggit
    DC:    15
    Initial Damage:    None
    Secondary Damage:    Unconsciousness
     
    24 : Other
    DC:    0
    Initial Damage:    None
    Secondary Damage:    None
     
    4 : Purple Worm
    DC:    24
    Initial Damage:    1d6 Str
    Secondary Damage:    1d6 Str
     
    20 : Quasit
    DC:    13
    Initial Damage:    1d4 Dex
    Secondary Damage:    2d4 Dex
     
    11 : Sassone Leaf Residue
    DC:    16
    Initial Damage:    2d12 HP
    Secondary Damage:    1d6 Con
     
    26 : Shadow Essence
    DC:    17
    Initial Damage:    1 Str
    Secondary Damage:    2d6 Str
     
    0 : Small Centipede
    DC:    11
    Initial Damage:    1d2 Dex
    Secondary Damage:    1d2 Dex
     
    2 : Spider Venom
    DC:    14
    Initial Damage:    1d4 Str
    Secondary Damage:    1d6 Str
     
    16 : Striped Toadstool
    DC:    11
    Initial Damage:    1 Wis
    Secondary Damage:    2d6 Wis + 1d4 Int
     
    12 : Terinav Root
    DC:    16
    Initial Damage:    1d6 Dex
    Secondary Damage:    2d6 Dex
     
    31 : Ungol Dust
    DC:    15
    Initial Damage:    1 Cha
    Secondary Damage:    1d6 Cha + 1 Cha
     
    21 : Violet Fungi
    DC:    14
    Initial Damage:    1d4 Str + 1d4 Con
    Secondary Damage:    1d4 Str + 1d4 Con
     
    6 : Wyvern
    DC:    17
    Initial Damage:    2d6 Con
    Secondary Damage:    2d6 Con
     
    22 : Yellow Mold
    DC:    15
    Initial Damage:    1d6 Con
    Secondary Damage:    2d6 Con
     
    Interestingly, this table differ a bit with Poisons listed in the help section.

    Essentially poison has three main parts:
    * DC vs Fortitude check;
    * Initial Damage;
    * Delayed Damage in 10 rounds.

    First PoisonedOnAdd (0x100E9E50) is called, which will do following:
    *. Find Poison Specification from the table;
    *. Do unconditional initial damage;
    *. Check if delay poison is present. If is, then remove poisoned condition.
    *. Make Fortitude check;
    *. If failed then make conditional initial damage;

    Then PoisonedOnBeginRound (0x100EA040) is called each round,and do following:
    *. Check if round countdown expired, if not yet then nothing;
    *. Check if delay poison is present. If is, then remove poisoned condition.
    *. Make Fortitude check;
    *. If failed then make delayed damage;
    *. In any case remove "poisoned" condition;

    Sample of new poison I'm working at:
    Code:
    {
        "comment": "MONSTROUS CENTIPEDE Tiny, MM287",
        "id": 36,
        "dc": 10,
        "immediateEffect": 1,
        "immNumDie": 0,
        "immDieType": 0,
        "immDieBonus": 1,
    
        "immediateSecondEffect": -10,
        "immSecDice": {
            "bonus": 0,
            "count": 0,
            "sides": 0
        },
    
        "delayedEffect": 1,
        "delayedDice": {
            "bonus": 1,
            "count": 0,
            "sides": 0
        },
    
        "delayedSecondEffect": -10,
        "delayedSecDice": {
            "bonus": 0,
            "count": 0,
            "sides": 0
        }
    }
    Each damage (initial and delayed) consists of such parts:
    *. effect type;
    *. damage count, sides and bonus;
    *. secondary effect type;
    *. secondary damage count, sides and bonus;

    Effect type enum:
    *. -10: None. Will do nothing.
    *. -9: Unconsciousness. Not implemented (funny).
    *. -8: Unconditional Paralyze. Meaning no saving throw, simply Paralyze for 2d6 rounds.
    *. -7: Unconditional HP damage. Meaning no saving throw, simply make POISON damage.
    *.-6 or 0: STR temporary damage.
    *.-5 or 1: DEX temporary damage.
    *.-4 or 2: CON temporary damage.
    *.-3 or 3: INT temporary damage.
    *.-2 or 4: WIS temporary damage.
    *.-1 or 5: CHA temporary damage.
    ----------------
    Changes in TemplePlus:
    * in Initial Damage and Delayed Damage now order is corrected - first saving throw check, then damage if failed;
    * paralyze is now d26 minutes, not rounds;
    * Implemented Unconsciousness, which was not present before;
     
    Last edited: Jul 14, 2019
  2. anatoliy

    anatoliy Member

    Joined:
    Feb 18, 2017
    Messages:
    99
    Likes Received:
    6
    If one look at the https://www.dandwiki.com/wiki/SRD:Poisons page few algorithm differences arise:
    *. Unconsciousness is completely not implemented;
    *. Paralysis should stay for 2d6 minutes, not rounds;
    *. Some ability damages should be permanent drain, not temporary.

    Taking into account, that ability damage effect type can be configured both negative and positive, for example -6 and 0 both point to Strength ability loss, I suspect negative ones were reserved for permanent drain.
     
  3. Endarire

    Endarire Ronald Rynnwrathi

    Joined:
    Jan 7, 2004
    Messages:
    429
    Likes Received:
    32
  4. anatoliy

    anatoliy Member

    Joined:
    Feb 18, 2017
    Messages:
    99
    Likes Received:
    6
    First of all, this post is knowledge base one. Just stating current implementation of poison in ToEE.

    The post is not a complaint to Sitra. And btw, only Sitra can decide what he should or should not do. It's not a job))

    We already had discussed with Sitra about that. And I agree that poison improvement is rather low priority.

    But because I really want that pesky Centepede to be fully present in the game I volunteered to improve that code in T+. In any case Sitra is Team Leader, and he guides me on that last several days.

    Improvement I'm working on is to have poisons.json table to be loaded dynamically. Meaning I will have ability to add Centepede poison to table and finish up the monster prototype.

    Sitra will decide if that will go into T+ release and when.
     
  5. anatoliy

    anatoliy Member

    Joined:
    Feb 18, 2017
    Messages:
    99
    Likes Received:
    6
    As for Unconscious and permanent ability drain.

    Personally I think community should decide how much important this feature is.
     
  6. Endarire

    Endarire Ronald Rynnwrathi

    Joined:
    Jan 7, 2004
    Messages:
    429
    Likes Received:
    32
    I'd like it if its functionality is in a community-released module, Co8, KotB, Randomizer, or/and otherwise.
     
  7. Allyx

    Allyx Master Crafter Global Moderator Supporter

    Joined:
    Dec 2, 2004
    Messages:
    4,694
    Likes Received:
    137
    I'm not exactly sure what you are asking for @Endarire - these poisons (except for the one @anatoliy is wishing to add) are already in the game, it's just that there is no way to use many of these poisons without modding the game in some way. You can alter a single value on the Dagger of Venom in ProtoED for instance, to make it deal a different type of poison than the stock version.
     
  8. anatoliy

    anatoliy Member

    Joined:
    Feb 18, 2017
    Messages:
    99
    Likes Received:
    6
    @Sitra Achara approved changes to Poisons, next T+ release will have them. Thanks Sitra!

    New changes for poisons in TemplePlus:
    * in Initial Damage and Delayed Damage now order is corrected - first saving throw check, then damage if failed;
    * paralyze is now d26 minutes, not rounds;
    * Implemented Unconsciousness, which was not present before;
    * new poisons for centipede (tiny, small etc).

    New poisons for scorpions and spiders in progress.
     
  9. Endarire

    Endarire Ronald Rynnwrathi

    Joined:
    Jan 7, 2004
    Messages:
    429
    Likes Received:
    32
    Do you mean 2d6 minutes instead of d26 minutes?
     
  10. Allyx

    Allyx Master Crafter Global Moderator Supporter

    Joined:
    Dec 2, 2004
    Messages:
    4,694
    Likes Received:
    137
    That's a pretty safe assumption, there is no 26 sided die in D&D 3.5 ed.
     
    anatoliy likes this.
  11. anatoliy

    anatoliy Member

    Joined:
    Feb 18, 2017
    Messages:
    99
    Likes Received:
    6
    Yes, 2d6 minutes :)
     
  12. sirchet

    sirchet Force for Goodness Moderator Supporter

    Joined:
    Dec 6, 2003
    Messages:
    3,718
    Likes Received:
    47
    What, don't you have a 26 sided dice Allyx? :D
     
  13. Allyx

    Allyx Master Crafter Global Moderator Supporter

    Joined:
    Dec 2, 2004
    Messages:
    4,694
    Likes Received:
    137
    Funnily enough, I checked to make sure that there actually was a d26, there is, but I don't own one.
     
    sirchet likes this.
Our Host!