New version of the mod pack

Discussion in 'General Modification' started by Ausir, Dec 10, 2003.

Remove all ads!
  1. Ausir

    Ausir Beholder Overseer Veteran

    Joined:
    Aug 25, 2003
    Messages:
    90
    Likes Received:
    0
    Some minor fixes have been released lately, so I think it's time to make version 2.1.0. Can anyone give me a list of all the recent fixes that haven't been included in the pack yet (links please).
     
  2. Ausir

    Ausir Beholder Overseer Veteran

    Joined:
    Aug 25, 2003
    Messages:
    90
    Likes Received:
    0
    Here are some I've found:

    http://www.co8.org/files/mods/shields.zip - masterwork shields armor check penalty fix (protos.tab Co8 compatible) - by Player1
    http://www.co8.org/files/mods/py00149thrommel.py - Thrommel's reward fix - by Obex
    http://www.co8.org/files/mods/oeb.zip - Oohlgrist's emerald belt now grants acid immunity when worn. - by RufusAtticus
    http://www.co8.org/files/mods/looting.zip - followers now loot only gold, jewelry and gems - by Shin

    Both the shields and looting fixes modify protos.tab, so they have to be merged.
    Any more?

    By the way, I'd like the next version to have checkable options, so that everyone could choose what parts of the mod he wants to install... Is it possible?

    So, could anyone compile the new (2.1.0) version of the patch now? (Phalzyr? JHunz? Exitium?)
     
  3. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    Well, I would like to help but RL has me tied quite a bit at the moment and I'm still having my hands full managing the buglist and confirming bugs.

    I'll just repost what I mailed Steve Moret in its entirety. Anyone who is currently free can implement the changes:

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ITEMS
    1)Problems with armor/shield skill check penalties (post patch)
    -some of the skill check penalties were overcorrected in the official patch resulting in a double bonus to skill check penalties, one from item being magical/masterwork, the other from a reduced skill check penalty value (Col81)

    Proposed changes (figures not in brackets are current values, figures in brackets are the new figures):
    {6049}{Chainmail +1} -4 (-5)
    {6094}{Chainmail +2} -4 (-5)
    {6095}{Chainmail +3} -4 (-5)
    {6097}{Lareth's breastplate +1} -3 (-4)
    {6102}{Otis' chainmail +2} -4 (-5)
    {6104}{Full plate +1} -5 (-6)
    {6121}{Banded armor +1} -5 (-6)
    {6122}{Full plate armor +3} -5 (-6)
    {6131}{Hedrack's full plate armor +3} -5 (-6)
    {6222}{Masterwork studded leather} blank (-1)
    {6231}{Masterwork buckler} 0 (-1)

    Regarding these, the 3.5e SRD states them as having a -2 skill check penalty:
    {6125}{Blue elven chain} -2 (-3)
    {6214}{Green elven chain} -2 (-3)
    {6215}{Purple elven chain} -2 (-3)
    Since the Masterwork bonus seems to be applied twice and Elven Chains already are considered Masterwork items, I suggest deleting Armor Masterwork (Col171) in order to get rid of the doubled Masterwork bonus and modify skill check penalty to -3 so that the final score is -2.

    {6106}{Troll bone armor} has the stats of a full plate. If it is your intention to make it a lightweight full plate, the armor type can still be ARMOR_TYPE_HEAVY instead of ARMOR_TYPE_MEDIUM


    2)Misc issues with item weight (Col51)/price (Col52)/magical flags (Col50)

    {4112}{Dagger of venom}
    Dagger of Venom now no longer causes CTD and allows poisoning of foes but still has incorrect value
    Correction: change Col52 (price) from 200 to 830200

    {4109}{Mace +1}
    Has no magic label, otherwise has correct price and +1 enhancement
    Correction: add OIF_IS_MAGICAL to Col50

    {4193}{Morning Star}
    Is labelled as an ordinary weapon yet has price of a +1 weapon and +1 enhancement
    Correction: add OIF_IS_MAGICAL to Col50
    need to add +1 also to description

    {4184}{Masterwork Spear}
    Weight incorrectly coded as 3. Shortspears weigh 3lb. Spears weigh 6lb
    Correction: change Col51 from 3 to 6

    {4121}{Spear +1}
    Weight incorrectly coded as 3. Shortspears weigh 3lb. Spears weigh 6lb
    Correction: change Col51 from 3 to 6

    {4047}{Scimitar +1}
    Price incorrectly coded as 1500. Otherwise has proper magic label and +1 enhancement
    Correction: change Col52 from 1500 to 231500

    {4098}{Battleaxe +1}
    Price incorrectly coded as 1000. Otherwise has proper magic label and +1 enhancement
    Correction: change Col52 from 1000 to 231000

    {4129}{Wonnilon's Dagger}
    Price incorrectly coded as 200. Otherwise is a +2 Dagger with proper magic label and enhancement
    Correction: change Col52 from 200 to 830200

    {4062}{Battleaxe}
    This odd 2-headed battleaxe weighs 15lb and is valued at 60gp instead of a normal battleaxe which
    weighs 6lb and is valued at 10gp. I suspect this was originally the template for an orc double axe but since double weapons are not implemented, the changes
    Suggested correction: change Col51 to 6 and Col52 to 1000


    3)Issues with uncopyable spells, unscribable scrolls, scrolls with no spell prerequisites, uncraftable wands

    a)Uncopyable spells, current entry in Col312 and proposed change:

    {9400}{Scroll of resist energy}
    'Resist Energy' class_ranger 1
    'Resist Energy' class_sorcerer 2

    {9536}{Scroll of wind wall}
    'Wind Wall' class_ranger 2
    'Wind Wall' class_sorcerer 2

    {9011}{Scroll of animate dead}
    'Animate Dead' class_cleric 3
    'Animate Dead' class_sorcerer 4

    {9028}{Scroll of bestow curse}
    'Bestow Curse' class_cleric 3
    'Bestow Curse' class_sorcerer 4

    {9244}{Scroll of invisibility, greater}
    'Greater Invisibility' domain_special 4
    'Greater Invisibility' class_sorcerer 4

    {9369}{Scroll of protection from energy}
    'Protection from Energy' class_ranger 2
    'Protection from Energy' class_sorceror 3

    {9008}{Scroll of animal growth}
    'Animal Growth' class_druid 5
    'Animal Growth' class_sorcerer 5

    {9542}{Scroll of blight}
    'Blight' class_druid 4
    'Blight' class_sorcerer 5

    {9076}{Scroll of contagion}
    'Contagion' class_cleric 3
    'Contagion' class_sorceror 4

    {9128}{Scroll of dismissal}
    'Dismissal' class_cleric 4
    'Dismissal' class_sorceror 5

    As for:
    {9467}{Scroll of summon monster I}
    'Summon Monster I' class_sorcerer 1

    The Col312 entry appears to be correct but the scroll is somehow still not copyable. Please have a look at it.


    b)Unscribable scrolls
    Ice Storm, Identify and Protection from Law
    -not in the scribing list simply because their numbers were not put in the list:
    2 - items that can be made with Scribe Scroll in item_creation.mes from rules subdirectory

    Put the appropriate numbers: 9237, 9238 and 9372 in list of scribable scrolls:
    {2}{9002 9006 ... 9304 9214}


    c)Scrolls with no spell prerequisites
    Neutralize Poison
    -incorrect line number {9326}

    {9326}{"SNeutralize Poison"}
    replaced with
    {9327}{"SNeutralize Poison"}.


    d)Wands with no crafting spell prerequisites
    Blindness/Deafness
    -no ending " at end of line

    {12541}{"SBlindness/Deafness}
    replaced with
    {12541}{"SBlindness/Deafness"}


    4)Holy Longsword (Meleny's dowry) is described as +1 but is actually +3
    -a +3 weapon gotten so early in the game is a gross imbalance and moreover it does not fit the description

    changed Weapon Enhancement Bonus parameter1 (Col169) for {4222}{Holy Long Sword +1}
    from: 3
    to: 1


    5)Great Cleaver is underpriced and overpowered
    -The Cleaver is handaxe +1 with "keen" twice property and does the base damage of a bastard sword without needing the Exotic Weapon Proficiency yet costs only 6gp and 2sp

    Suggest to change base damage and value for {4213}{Great Cleaver}:
    from:
    Col70 (base damage) 1d10
    Col52 (value) 620

    to:
    Col70 (base damage) 1d6
    Col52 (value) 18306

    Cleaver's value = 6(handaxe) + 300(masterwork) + 18000(+1 and keenX2[is a +1 ench]) = 18306gp
    However the value still appears too high in the early game. Perhaps it would be better if the item could be toned down still further.


    6)Javelins are 2-handers. They shouldn't be.
    -Col61 (equippable slots) is coded for 2 handed usage

    Suggest changing Col61 (equippable slots) for:
    {4123}{Javelin}
    {4134}{Javelin of lightning}
    {4187}{Masterwork javelin}

    from:
    OIF_WEAR_WEAPON_PRIMARY OIF_WEAR_WEAPON_SECONDARY OIF_WEAR_WEAPON_PRIMARY OIF_WEAR_2HAND_REQUIRED

    to:
    OIF_WEAR_WEAPON_PRIMARY OIF_WEAR_WEAPON_SECONDARY


    7)Javelin of lightning does not casting Lightning Bolt as per description
    -there is a Spell712 - Javelin of lightning.py file but this file does not seem to be correctly called. Instead, when javelin of lightning is slelected from the radial menu, it's targeting cursor becomes a fireball-like circle and when cast the spell simply fizzles off and the javelin disappears.
    The best solution would be to correct the link between the .py file (which provides correct damage and DC). If this takes too much time, the alternate solution that we suggest is to use a similar spell as substitute.

    Change Col312 (spell) for {4134}{Javelin of lightning}
    from: 'Javelin of lightning (INTERNAL)' domain_special 1
    to: 'Lightning Bolt' class_sorcerer 3

    However the DC of the Lightning Bolt now is thrower dependent instead of being a flat 14 (as in the .py file.


    8)Certain potions do not function properly (Eagle's Splendor, Heroism, Superheroism)
    -there again appears to be some problems linking the .py files (Spell709 - Potion of heroism.py,
    Spell710 - Potion of super-heroism.py, Spell705 - Potion of charisma.py) to (INTERNAL) spells.
    Again IMHO the ideal solution is to correct the link. If this takes too much time, the alternate solution that we suggest is to use similar spells as substitute.

    Change Col312 (spell) for
    {8015}{Potion of heroism}
    {8021}{Potion of super-heroism}
    {8022}{Potion of eagle's splendor}

    from:
    'Potion of heroism (INTERNAL)' domain_special 1
    'Potion of super-heroism (INTERNAL)' class_bard 5
    'Potion of charisma (INTERNAL)' domain_special 1

    to:
    'Heroism' class_bard 2
    'Greater Heroism' class_sorceror 6
    'Eagles Splendor' class_bard 2


    9)Chime of Opening does not work
    -no spell is recorded in Col312 of this item. It is supposed to cast Knock with a limit of 10X before expiring.

    We suggest the following changes:
    Col50 (item flag) from OIF_IS_MAGICAL to OIF_IS_MAGICAL OIF_EXPIRES_AFTER_USE OIF_NEEDS_SPELL
    Col59 (charges) from [blank] to 10
    Col168 from [blank] to UseableItem
    Col169 from [blank] to 0
    Col170 from [blank] to 10
    Col312 (spell) from [blank] to 'Knock' class_sorcerer 2


    10)Oohlgrist's emerald belt is magical but yet has no magical function
    -no equippable slot and no entry in Col312 (spell)

    Suggested modifications to give the belt wearer (worn in thieves' tools slot), acid immunity:
    {12014}{Oohlgrist's emerald belt}
    Add "OIF_WEAR_LOCKPICKS" to col 61
    Add "Monster Energy Immunity" to col 168
    Add "Acid" to col 169
    Add "{12014}{Oohlgrist's emerald belt grants the wearer immunity to acid.}" to long_descriptions.mes


    11)Monks do not recognize Halfling Sianghams as a monk weapon with automatic proficiency
    -halfling siangham not inside list of monk weapons?

    Suggested modification:
    Change Col72 (weapon type) for {4215}{Halfing Siangham}
    from: halfling_siangham
    to: siangham

    Now monks (halflings and non-halflings) are proficient at it and able to use it with Flurry of Blows.
     
  4. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    ITEMS (CONTINUED)

    12)Blue Elven Chain is not given as a reward for rescuing Countess Tillahi
    -InvenSource.mes entry for elven maiden gives 2 Green Elven Chains instead of 1 Green Elven and 1 Blue Elven Chain (The .dlg file function call to transfer the armor to the pc uses proto# 6125, which is the BLUE armor)

    Change line {138} in InvenSource.mes

    from:
    {138}{Elven maiden: 100,6214 100,6214 100,6126 100,6057 100,6058 100,4081 100,6027 gold,2-12 silver,4-24 platinum,2-12}

    to:
    {138}{Elven maiden: 100,6214 100,6125 100,6126 100,6057 100,6058 100,4081 100,6027 gold,2-12 silver,4-24 platinum,2-12}


    13)Essential mundane items not available for constant renewable purchase in stores (Pouch of bullets)
    -since there are only about 60 bullets in the game, this really retards players who like to use slings

    Add {5007}{Pouch of bullets} to InvenSource.mes in lines:
    {7}{Blacksmith's store: ...
    {12}{Otis's store: ...

    Received requests to also consider adding:
    {6040}{Plate boots}
    {6041}{Plate gloves}
    to stores for dress-up purposes (would not be unbalancing, IMHO) :)



    QUESTS & NPC DIALOG
    1)Romag's 1st quest allows acknowledgement of killing snake even if you had not done so.
    -game.global_flags[117] == 1 (this variable was wrongly set to 1 by default/initialization??)

    Switched 1 and 0 (taking 1 as negative and 0 as positive)

    In py00239Snake_death.py:
    Changed game.global_flags[117] = 1 to game.global_flags[117] = 0

    In 00119romag.dlg:
    Changed {123}... {game.global_flags[117] == 1} ... to {123}... {game.global_flags[117] == 0} ...
    Changed {124}... {game.global_flags[117] == 1} ... to {124}... {game.global_flags[117] == 0} ...
    Changed {307}... {game.global_flags[117] == 0} ... to {309}... {game.global_flags[117] == 1} ...
    Changed {308}... {game.global_flags[117] == 0} ... to {309}... {game.global_flags[117] == 1} ...
    Changed {309}... {game.global_flags[117] == 1} ... to {309}... {game.global_flags[117] == 0} ...
    Changed {310}... {game.global_flags[117] == 1} ... to {310}... {game.global_flags[117] == 0} ...
    Changed {311}... {game.global_flags[117] == 1} ... to {311}... {game.global_flags[117] == 0} ...
    Changed {312}... {game.global_flags[117] == 1} ... to {312}... {game.global_flags[117] == 0} ...

    Confirmed by in game testing that changes made now makes quest work correctly.


    2)Romag's 3rd quest allows acknowledgement of killing Belsornig even if you had not done so.
    -there is no criteria in some of the lines that state Belsornig is already dead. The acknowledgement of quest completion is also missing from some lines.

    In 00119romag.dlg:
    Changed the following lines from:
    {409}{He is already dead!}{}{1}{game.global_flags[105] == 1}{510}{}
    {354}{Who this Big Sore Neck guy?}{}{-7}{}{420}{}
    {423}{I've already killed Besornig.}{}{8}{}{510}{}
    {424}{Me kill Big Sore Neck already.}{}{-7}{}{510}{}

    to:
    {409}{He is already dead!}{}{1}{game.global_flags[105] == 1}{510}{game.quests[45].state = qs_completed}
    {354}{Who this Big Sore Neck guy?}{}{-7}{game.quests[46].state == qs_unknown}{420}{}
    {423}{I've already killed Besornig.}{}{8}{game.global_flags[105] == 1}{510}{game.quests[45].state = qs_completed}
    {424}{Me kill Big Sore Neck already.}{}{-7}{game.global_flags[105] == 1}{510}{game.quests[45].state = qs_completed}



    SPELLS
    1)Ice Storm lasts 2 rounds but deals damage only once (casting it a second time before the first spell expires does not result in extra damage)
    -incorrect spell.duration entry in Spell237 - Ice Storm.py

    spell.duration = 2
    replaced with
    spell.duration = 1

    2)Guidance lasts for 60 rounds (supposed to last only 1 minute or 10 rounds)
    -incorrect spell.duration entry in Spell213 - Guidance.py

    spell.duration = 60
    replaced with
    spell.duration = 10

    3)Silence lasts for too long (supposed to be 1 min/caster level)
    -incorrect spell.duration entry in Spell434 - Silence.py

    spell.duration = 100 * spell.caster_level
    replaced with
    spell.duration = 10 * spell.caster_level



    CREATURES
    1)Scorpp is vastly overpowered when recruited into the party. He is easy to defeat as he uses Wonnilon's XBow in battle instead of using his Spiked Club and throwing rocks

    Changes suggested by Shin:
    a) His natural armor bonus is downed from 20 to 9
    -Hill Giants have natural armors of 9. This is upped to 12 with Hide Armor. Incorporating it in natural armor for non-recruitable creatures is Ok but Scorpp can equip plate when he joins the party and this makes his AC too formidable.

    b) His character level is now Fighter 10 instead of Fighter 7 (but he will be otherwise be coded in terms of hps as Fighter 1)
    -This is to prevent him from advancing in level any further. A level 1 hill giant fighter's effective level is 12(racial hit dices)+4(level adjustment)+1(class level), Scorpp must be considered as a level 17 character already...

    c) His entry in Col162 (racial hp dice) is changed to 1d1+15
    -Treating Scorpp as a level 1 Hill Giant, he has 12d8+48 (racial hps) with Con modifier of +4
    so being a level 1 Fighter he should have 12d8+1d10+52 = 111.5 (average).
    Since we made him a level 10 fighter he now has 10d10+40 (10 fighter levels with Con modif +4) so we'll modify racial hp dice to 1d1+15 giving 10d10+40+1d1+15 = 111 (average) which mimics a level 1 Hill Giant's total hps.

    d) He has new added feats : Power Attack and Weapon Focus (greatclub)
    -in accordance with 3.5e SRD for Hill Giants

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>



    Some of the changes (some of the uncopyable scrolls) have already been implemented in v2.0 Co8 patch but not in Troika's ToEE4.dat yet.
    However changing to proper skill check penalties for masterwork items requires a considerable amount of more work as the Co8 version overcorrects many items. Since this requires quite a few changes, I would also prefer having someone experienced in coding in all changes. Phalzyr would be nice. :)
    Alternatively we could use player1's protos.tab to start with, since all the skill check penalties have been corrected. Just check whether the template is v2.0 Co8 patch or ToEE4.dat

    Any queries regarding any change should be addressed here by the original author who suggested the change.
     
    Last edited: Dec 12, 2003
  5. RufusAtticus

    RufusAtticus Member

    Joined:
    Oct 25, 2003
    Messages:
    37
    Likes Received:
    0
    This causes the Rope of Entanglement to show up as a wand and cast Hold Monster once per day. I don't have time to play with making it not show up as a wand; I hope someone can do it. The solution might lie in attaching a .py script.

    {12016}{Rope of Entanglement}
    Add "OIF_NO_NPC_PICKUP" to col 50
    Add "-1" to col 59
    Add "Useable Item X Times Per Day" to col 168
    Add "0" to col 169
    Add "1" to col 170
    Add "'Hold Monster' class_sorcerer 5" to col 312
    Add "{12016}{Once per day the Rope of Entanglement can paralyze any creature for five rounds.}" to long_descriptions.mes
     
    Last edited: Dec 12, 2003
  6. Ausir

    Ausir Beholder Overseer Veteran

    Joined:
    Aug 25, 2003
    Messages:
    90
    Likes Received:
    0
    player1's mod is Co8 patch compatible, IIRC.
     
  7. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    Mailed Steve Moret with 2nd list of Co8 fixes for 2nd official patch.
    Reposting the list in its entirety:

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ITEMS
    1)Masterwork Light Crossbow and Wonnilon's Repeating Crossbow not usable by Small races.
    -wrong size entry for crossbows in protos.tab

    In protos.tab for:
    {4130}{Wonnilon's repeating crossbow +1}
    {4177}{Masterwork light crossbow}

    change Col24 (size) from:
    size_large

    to:
    size_medium


    2)Masterwork Guisarme is a one handed axe
    -Many fields for {4180}{Masterwork guisarme} are the same as {4181}{Masterwork battleaxe}. It still has reach though since it was coded as weapon type guisarme and has the MW label.

    In protos.tab for
    {4180}{Masterwork guisarme}

    change:
    Col24(size) from size_medium to size_large
    Col30 from 5 to 11
    Col34(model) from 10071 to 10111
    Col51(weight) from 6 to 12
    Col52(value) from 31000 to 30900
    Col53(inventory) from 97 to 198
    Col70(damage) from 1d8 to 2d4


    3)Bracers stack in the bracers slot. Archery and Armor effects can therefore be stacked.
    -Anything put into the Bracers slot by specifying OIF_WEAR_BRACERS will stack. Suggest using the thieves' tools slot for putting bracers instead since the bracers do not stack in that slot. Bracers of Armor and Archery still confer the correct bonuses when used in the thieves' tools slot. Thieving tools are basically only needed outside of combat so there should be no/very little clash. The Bracers should be left as is for modding purposes - a fully stackable slot opens up many possibilities.

    In protos.tab for:
    {6115}{Bracers of armor +5}
    {6119}{Bracers of armor +3}
    {6267}{Bracers of Archery, Greater}
    {6268}{Bracers of Archery, Lesser}

    change Col61 (equipped slots) from:
    OIF_WEAR_BRACERS

    to:
    OIF_WEAR_LOCKPICKS


    4)Dust of Disappearance is worth 0 gold
    -There is no entry in Col52 (value). In 3.5e SRD its value is 3,500gp.

    In protos.tab for:
    {12009}{Dust of disappearance}
    Add 350000 to Col52 (value)


    5)Jaer's Spheres of Fire can be used as melee weapons and cause more damage than described
    -Col63 was previously blank and made the weapon a melee weapon by default.

    In protos.tab for:
    {4197}{Jaer's spheres of fire}
    Add OWF_RANGED_WEAPON to Col63

    In long_descriptions.mes change:
    {4197}{Jaer's spheres of fire are a grenade-like weapon thrown as a ranged touch attack, dealing 1d6 of direct fire damage and 1 point of splash fire damage to anything within five feet.}
    to:
    {4197}{Jaer's spheres of fire are a grenade-like weapon thrown as a ranged touch attack, dealing 2d6 of direct fire damage and 1d6 point of splash fire damage to anything within five feet.}

    repeat change for entry at {12017}.

    The weapon is now ranged by default when thrown, with all ranged attack characteristics. Otherwise as a 1-handed finessable melee weapon causing 2d6 fire damage without expiring, it is somewhat unrealistic. The "Throw Jaer's Spheres of Fire" option from the radial menu works as a ranged touch attack with splash damage as intended.


    6)Rope of Entanglement does not work
    -No spell attached to this item. We have considered Entangle and other spells but felt that are of effect spells do not mimic the effects of the item well. While the item is supposed to require a DC20 Str check to break free and has AC, hps and toughness, we felt that this would be too tough to represent accurately. Here we suggest an alternative solution which is reasonably close to the intended effects. The rope still needs to be identified before it can be used from the radial menu.

    In protos.tab for:
    {12016}{Rope of Entanglement}

    Add "OIF_NO_NPC_PICKUP" to col 50 (becomes OIF_IS_MAGICAL
    OIF_NO_NPC_PICKUP)
    Add "-1" to col 59
    Add "Useable Item X Times Per Day" to col 168
    Add "0" to col 169
    Add "1" to col 170
    Add "'Hold Monster' class_sorcerer 5" to col 312

    In long_descriptions.mes:
    Add "{12016}{Once per day the Rope of Entanglement can paralyze any creature for five rounds.}"



    QUESTS AND NPC DIALOGUE
    1)Exposing the spies in the trading post doesn't give 200 gp
    -this occurs because normal and dumb responses for are mixed up. (Int criteria needs to be swapped for lines 162 and 163 for Gremag and lines 192 and 193 for Rannos Davl)

    In 00061gremag.dlg change:
    {161}{Not so easy Gremag. My price is 200 gold pieces. Take it or leave it.}{}{8}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{190}{pc.money_adj(+20000)}
    {162}{OK. I?ll take 50 gold to keep quiet about this.}{}{-7}{}{190}{pc.money_adj(+5000)}
    {163}{No. You give me 200. That fair I think.}{}{8}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{190}{pc.money_adj(+20000)}
    {164}{Ok. Me keep mouth shout for 50.}{}{-7}{}{190}{pc.money_adj(+5000)}

    to:
    {161}{Not so easy Gremag. My price is 200 gold pieces. Take it or leave it.}{}{8}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{190}{pc.money_adj(+20000)}
    {162}{OK. I?ll take 50 gold to keep quiet about this.}{}{8}{}{190}{pc.money_adj(+5000)}
    {163}{No. You give me 200. That fair I think.}{}{-7}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{190}{pc.money_adj(+20000)}
    {164}{Ok. Me keep mouth shout for 50.}{}{-7}{}{190}{pc.money_adj(+5000)}

    In 00062rannosdavl.dlg change:
    {191}{A measly 20 in gold? Tis not so easy to hold my tongue. But between friends, I might remain silent for about, say, 200 gold.}{}{8}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{235}{pc.money_adj(+20000)}
    {192}{Sounds fair, Rannos. I'll take the 20 gold.}{}{-7}{}{220}{pc.money_adj(+2000)}
    {193}{Not close Rannos! It worth more. Me want 200 gold!}{}{8}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{235}{pc.money_adj(+20000)}
    {194}{Me think 20 gold is fair.}{}{-7}{}{220}{pc.money_adj(+2000)}

    to:
    {191}{A measly 20 in gold? Tis not so easy to hold my tongue. But between friends, I might remain silent for about, say, 200 gold.}{}{8}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{235}{pc.money_adj(+20000)}
    {192}{Sounds fair, Rannos. I'll take the 20 gold.}{}{8}{}{220}{pc.money_adj(+2000)}
    {193}{Not close Rannos! It worth more. Me want 200 gold!}{}{-7}{pc.skill_level_get(npc,skill_diplomacy) >= 5}{235}{pc.money_adj(+20000)}
    {194}{Me think 20 gold is fair.}{}{-7}{}{220}{pc.money_adj(+2000)}


    2)Lord Wizard Sargen's courier does not say the proper lines and just runs off without giving you the cash (5000G or 10000G).
    -there is no such variable as game.globals_flags[173]. There's only game.global_flags[173].

    In 00183courier.dlg change:
    {2}{I am @pcname@.}{}{8}{game.globals_flags[173] == 0}{10}{}
    {3}{Me is @pcname@}{}{-7}{game.globals_flags[173] == 0}{10}{}
    {4}{I am @pcname@.}{}{8}{game.globals_flags[173] == 1}{20}{}
    {5}{Me is @pcname@}{}{-7}{game.globals_flags[173] == 1}{20}{}

    to:
    {2}{I am @pcname@.}{}{8}{game.global_flags[173] == 0}{10}{}
    {3}{Me is @pcname@}{}{-7}{game.global_flags[173] == 0}{10}{}
    {4}{I am @pcname@.}{}{8}{game.global_flags[173] == 1}{20}{}
    {5}{Me is @pcname@}{}{-7}{game.global_flags[173] == 1}{20}{}


    3)Valden does not award spiked shields for Paida's rescue
    -The cause is Valden does not have wooden spiked shields in his inventory and so the command:
    npc.item_transfer_to_by_proto(pc,6136) doesn't work.

    In 00058wainwright.dlg change:
    {231}{Sure. Thanks, Valden!}{}{1}{}{240}{npc.item_transfer_to_by_proto(pc,6136); game.global_vars[17] = 1}
    {251}{Great. Thanks! See you later.}{}{1}{}{0}{npc.item_transfer_to_by_proto(pc,6136); game.global_vars[17] = game.global_vars[17] + 1}

    to:
    {231}{Sure. Thanks, Valden!}{}{1}{}{240}{create_item_in_inventory( 6136, pc ); game.global_vars[17] = 1}
    {251}{Great. Thanks! See you later.}{}{1}{}{0}{create_item_in_inventory( 6136, pc ); game.global_vars[17] = game.global_vars[17] + 1}


    4)Paida becomes unfriendly/hostile if released through talking with her husband first
    -Paida's .dlg file has a npc.reaction_adj( pc,+30) command when she leaves the party which is not present in her .py file.

    In py00143paida.py find:

    def san_heartbeat( attachee, triggerer ):
    if (not game.combat_is_active()):
    if (game.quests[20].state == qs_completed):
    for pc in game.party:
    if pc.has_follower(8001):
    npc.reaction_adj( pc,+30)
    pc.follower_remove( attachee )
    game.new_sid = 0
    return RUN_DEFAULT

    and insert attachee.reaction_adj( pc,+30) to make:

    def san_heartbeat( attachee, triggerer ):
    if (not game.combat_is_active()):
    if (game.quests[20].state == qs_completed):
    for pc in game.party:
    if pc.has_follower(8001):
    attachee.reaction_adj( pc,+30)
    pc.follower_remove( attachee )
    game.new_sid = 0
    return RUN_DEFAULT


    5)Hedrack calls your character %pcname% in dialogue
    -Incorrect syntax: %pcname% (should be @pcname@)
    In 00174hedrack.dlg change:
    {13}{You dare challenge the might of %pcname%! Let us parley before hostilities commence!}{}{8}{pc.skill_level_get(npc, skill_diplomacy) >= 10}{130}{}
    to:
    {13}{You dare challenge the might of @pcname@! Let us parley before hostilities commence!}{}{8}{pc.skill_level_get(npc, skill_diplomacy) >= 10}{130}{}
     
  8. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    (continued...)

    QUESTS AND NPC DIALOGUE
    6)Lareth does not reinitiate combat after parleying
    -Lareth is still in an aggressive state after dialogue lines {175} and {195} but the party members are not. Therefore the battle is not joined if the party first accepts his surrender and then chooses the above lines. Thinking that perhaps Lareth needs to quit his active aggressive state before a second npc.attack( pc ) can function, I added attachee.reaction_adj( pc,+100) to Lareth's .py file right after: if found_pc != OBJ_HANDLE_NULL:

    In py00060lareth.py, find:

    def san_start_combat( attachee, triggerer ):
    if ( obj_percent_hp(attachee) < 50):
    found_pc = OBJ_HANDLE_NULL
    for pc in game.party:
    if pc.type == obj_t_pc:
    found_pc = pc
    attachee.ai_****list_remove( pc )
    if found_pc != OBJ_HANDLE_NULL:
    found_pc.begin_dialog( attachee, 160 )
    game.new_sid = 0
    return SKIP_DEFAULT
    return RUN_DEFAULT

    and insert attachee.reaction_adj( pc,+100) to make:

    def san_start_combat( attachee, triggerer ):
    if ( obj_percent_hp(attachee) < 50):
    found_pc = OBJ_HANDLE_NULL
    for pc in game.party:
    if pc.type == obj_t_pc:
    found_pc = pc
    attachee.ai_****list_remove( pc )
    if found_pc != OBJ_HANDLE_NULL:
    attachee.reaction_adj( pc,+100)
    found_pc.begin_dialog( attachee, 160 )
    game.new_sid = 0
    return SKIP_DEFAULT
    return RUN_DEFAULT

    It appears that combat will now automatically resume for any npc.attack( pc ) once this fix is applied.


    7)Jaer does not give his fire balls to the party after he is rescued
    -The command transfer_fire_balls(npc,pc) does not work.

    In 00158jaer.dlg change:
    {140}{[Jaer turns to you] Thank you, @pcname@, for rescuing me from the Temple and those accursed nodes. You know I don't have much, but you can have my remaining fire balls. I hope they help you.}{[Jaer turns to you] Thank you, @pcname@, for rescuing me from the Temple and those accursed nodes. You know I don't have much, but you can have my remaining fire balls. I hope they help you.}{}{140}{}{transfer_fire_balls(npc,pc)}

    to:
    {140}{[Jaer turns to you] Thank you, @pcname@, for rescuing me from the Temple and those accursed nodes. You know I don't have much, but you can have my remaining fire balls. I hope they help you.}{[Jaer turns to you] Thank you, @pcname@, for rescuing me from the Temple and those accursed nodes. You know I don't have much, but you can have my remaining fire balls. I hope they help you.}{}{140}{}{create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc ); create_item_in_inventory( 4197, pc )}



    SPELLS
    1)Cat's Grace is a Str domain spell level 2
    -incorrect additional entry in 049 - Cats Grace.txt
    delete Level: Strength 2 in 049 - Cats Grace.txt


    2)Goodberries do not disappear when used.
    -Currently goodberries do not expire after use but cannot be used a second time, necessitating manually removing the goodberries from inventory.

    In protos.tab for:
    {8001}{Goodberry}
    change Col50 (Item Flags) from:
    OIF_IS_MAGICAL

    to:
    OIF_IS_MAGICAL
    OIF_EXPIRES_AFTER_USE


    3)Demons and elementals summoned by 4 gems are permanent and so is Mordenkainen's Faithful Hound
    -It appears that this command:
    monster_obj = game.obj_create( monster_proto_id, spell.target_loc )
    does create a monster but this monster will not fade when the message "a spell has expired" floats up.

    In:
    Spell727 - Summon Glabrezu.py
    Spell728 - Summon Hezrou.py
    Spell729 - Summon Vrock.py
    Spell722 - Summon Air Elemental.py
    Spell723 - Summon Earth Elemental.py
    Spell724 - Summon Fire Elemental.py
    Spell725 - Summon Water Elemental.py
    Spell320 - Mordenkainen's Faithful Hound

    find the line:
    monster_obj = game.obj_create( monster_proto_id, spell.target_loc )

    and replace it with:
    spell.summon_monsters( 1, monster_proto_id )

    The summoned creature should now fade away when its spell duration has expired.


    4)Dismissal affects non-extraplanar creatures making it overpowered
    -it appears that the command:
    target_item.obj.npc_flags_get( ONF_EXTRAPLANAR )
    is not functioning properly and does not filter out non-extraplanar creatures.

    In Spell128 - Dismissal.py find the line:
    if target_item.obj.d20_query_has_spell_condition( sp_Summoned ) or
    target_item.obj.npc_flags_get( ONF_EXTRAPLANAR ):

    and replace it with:
    if target_item.obj.d20_query_has_spell_condition( sp_Summoned ) or target_item.obj.is_category_type( mc_type_outsider ):



    CREATURES
    1)Normal ogres have very low ACs
    -They should get AC16 (-1 size, -1 Dex, +5 natural, +3 hide armor) as per 3.5e SRD but are currently getting AC8 (-1 size, -1 Dex) because there is no entry for Natural Armor.
    {14065}{Lubash} has an entry for Natural Armor
    {14354}{Greater Temple Ogre Chieftain} gets 12
    {14355}{Greater Temple Ogre Leader} gets 10
    {14356}{Greater Temple Ogre Shaman} gets 9
    The other ogres have no entry. It appears ToEE incorporates both Natural Armor and body Armor ratings into Col161.

    In:
    {14248}{Ogre Chief} // wild ogre chief in ogre cave
    {14249}{Ogre} // wild ogres in ogre cave
    {14353}{Ogre Shaman}
    {14448}{Ogre}

    Change Col161 (Natural Armor) to 8. If the wild ogres are deemed thoroughly uncivilized and do not wear hide armor, their natural armor should be 5 instead.
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     
  9. Sol Invictus

    Sol Invictus Beholder Watcher Veteran

    Joined:
    Aug 25, 2003
    Messages:
    325
    Likes Received:
    0
    I think you mean it the other way around.
     
  10. Sol Invictus

    Sol Invictus Beholder Watcher Veteran

    Joined:
    Aug 25, 2003
    Messages:
    325
    Likes Received:
    0
    I have fixed everything on the list you have posted except for the changes made to Ogre's natural armor due to certain confusion and I didn't change the bracers to the lockpick slot as that may cause incompatibilities with the upcoming patch.
     
  11. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    Just checked and it appears that spell.duration is already coded as 1 in ToEE4.dat. I could have sworn I saw it was 2 before and after changing it the spell lasted for 1 round instead of 2. Maybe I was referring to a wrong .py file. Sorry for the error. Anyway, spell.duration = 1 is correct and no further tampering is needed.

    I had some doubts myself regarding the Bracers. However the finding that items applied to the Bracers slot can stack physically and effects-wise is still valuable and can be considered for a mod in future.

    Thanks for coding in the changes. :D

    Steve is currently working on the rest of the bugs using a bugzilla database to track them. The random number generator has been fixed so we should be getting better, uncorrelated rolls after the patch.
     
  12. Ausir

    Ausir Beholder Overseer Veteran

    Joined:
    Aug 25, 2003
    Messages:
    90
    Likes Received:
    0
    By the way, if we use the tools slot for belts, why don't we change gloves of giant strength into belt of giant strength (like in D&D), or make both available (but the bonuses shouldn't stack)?
    Many people would like to use both the gloves of dexterity and belt of giant strength.
     
  13. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    Quite possible. We could try altering the equippable slot for Str Gloves to OIF_WEAR_LOCKPICKS and see if the Str bonus is still conferred. I believe it would.
    Next we would try to find a suitable model for a belt. At present it appears Oohlgrist's Emerald Belt seems to be the only choice but maybe Exitium can come up with some other graphics just like those he did for Chris Wood's Ioun Stones.

    As mentioned previously, items put into the lockpicks slot are not stackable but items put into the bracers slot stack physically and effect wise.
    However this does not apply to all items. I tried putting Thieves' Tools in the bracers slot and the bonus to Open Lock is not conferred. I guess Thieves' Tools only work when properly put in the lockpicks slot.


    EDIT: Ok, just did a few tests. It does work indeed.
    Changed OIF_WEAR_GLOVES to OIF_WEAR_LOCKPICKS for
    {6244}{Gloves of Giant Strength +6}
    Got my Sorc to make one and equipped my Ranger with it. Str goes up from 14 to 20 and when tested in combat gives the correct bonuses to hit and to damage.

    We will need to repeat this for:
    {6243}{Gloves of Giant Strength +4}
    {6245}{Gauntlets of Ogre Power}

    We can use either graphics from:
    {12014}{Oohlgrist's emerald belt}
    or
    {12015}{Prince Thrommel's golden belt}
    for the time being.

    We should also change the name of the item (Col2) from glove to belt to avoid confusion.

    Well, should it be in? I think it's a worthwhile change and would be better if we could get nice graphics for it.
     
    Last edited: Jan 16, 2004
  14. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    I have made quite a bit of progress recently regarding creature immunities and most of them have been figured out and resolved. This includes Sneak Attack on elementals. It turned out that we were barking up the wrong tree all the time trying to change Col163 (creature type) in protos.tab, or some would say banging our heads on the wrong door. :p
    Actually what we had to do was put Monster Plant or Monster Juggernaut in a blank spot in Col168-200. But I'm running ahead of myself.

    First, the 16 creature types are given in Col163 in protos.tab and are prefixed by mc_type_
    These are:
    aberration, animal, beast, construct, dragon, elemental, giant, humanoid, magical_beast, monstrous_humanoid, ooze, outsider, plant, shapechanger, undead, vermin

    Of which the 5 creature types which have significant immunities are:
    construct, elemental, ooze, plant and undead

    Certain aberrations like Will o Wisps have Spell Immunity but that will be managed a little differently. Incorporeality is also not expected to be fully correctable, if correctable at all.


    Elemental, Ooze and Plant all have immunities to:
    1)Poison (check with thrown poison vial and Poison (lvl 4 Cleric))
    2)Sleep (check with Sleep (lvl 1 Sorc))
    3)Paralysis (check with Hold Person and Hold Monster)
    4)Stunning (check with Monk's stunning attack)
    5)Critical attack and Sneak Attack damage (check with Rogue's sneak attack)

    Ooze and Plant also have immunities to mind affecting spells which includes a long list (I have not confirmed this for Elementals):
    lvl 0 Sorc: Daze
    lvl 1 Sorc: Cause Fear, Charm Person
    lvl 2 Sorc: Daze Monster, Scare, Tasha's Hideous Laughter
    lvl 3 Sorc: Deep Slumber, Hold Person, Suggestion
    lvl 4 Sorc: Charm, Confusion, Crushing Despair, Fear, Phantasmal Killer
    lvl 5 Sorc: Feeblemind, Hold Monster, Mind Fog
    lvl 1 Cleric: Bane, Command, Doom
    lvl 3 Cleric: Prayer

    As for Construct and Undead, these two have immunities to ALL of the above spells/abilities and
    also to:
    1)disease (check with Contagion (lvl 4 Sorc))
    2)death effects and necro effects (?check with Slay Living)
    3)subdual damage
    4)ability damage and ability drain (?check with Ray of Enfeeblement)
    5)energy drain
    6)effects that require a Fort save (?check with Stinking Cloud and Cloudkill... I've probably missed a couple of spells here so feel free to add)


    So to make it simple, we can put them into 2 groups:
    a)Elemental, Ooze, Plant
    b)Construct, Undead

    It turns out that these immunities appear to be coded by Monster Plant and Monster Juggernaut respectively. However, none of elementals or oozes have Monster Plant and none of the undead have Monster Juggernaut, so our job is to put these parameters in all appropriate entries in protos.tab

    However it isn't so simple. While Mind-Affecting spells like Sleep, Charm Person, Doom, Bane
    were prevented by adding Monster Plant or Monster Juggernaut, it turns out that Tasha's Hideous Laughter, Hold Person and Daze are not.
    The reason why this is so is because the devs forgot to put "Descriptor: Mind-Affecting" in the .txt files for the spells above, whereas spells like Sleep, Charm Person and the rest did get that line of code.
    After adding Monster Plant/Monster Juggernaut to an NPC and correcting the .txt files, the immunity now kicks in everytime, so adding Monster Plant to elementals should finally give them immunity to sneak attacks.
    All tests done on Brother Smyth of Hommlet, covering Daze, Cause Fear, Charm Person, Daze Monster, Scare, Tasha's Hideous Laughter, Deep Slumber, Hold Person, Suggestion, Charm, Confusion, Phantasmal Killer, Feeblemind, Hold Monster, Bane, Command, Doom and Prayer.


    There are still a few last niggling problems though.
    While Monster Juggernaut gives immunity to Stinking Cloud (because it requires a Fort save) and Monster Plant does not, I couldn't really find any other differences for other spells.

    1)Ray of Enfeeblement still works even with Monster Juggernaut on, even though it shouldn't.
    2)Contagion also still works even with Monster Juggernaut applied.
    3)Cloudkill is prevented by both Monster Plant and Monster Juggernaut because it is a poison effect and Monster Plant gives poison immunity. However Poison (level 4 Cleric spell) does not appear to be prevented by either. The spell also functions rather weirdly and I could not get any info about its effect from the d20 window. Perhaps Poison is bugged. Or perhaps we need to put another code: Monster Poison Immunity to give immunity to this spell.

    I could not check Slay Living and cannot say whether this is prevented by Monster Juggernaut.


    Regarding other immunities like Spell Immunity for Will o Wisps in 3.5e SRD, unfortunately there is no such similar ready code in ToEE. I would suggest mimicking this by applying Spell Resistance instead and hike up the parameter to 100 to be simulate immunity.
    The actual SRD entry states:
    "Immunity to Magic (Ex): A will-o'-wisp is immune to most spells or spell-like abilities that allow spell resistance, except magic missile and maze."
    So even if a spell bypasses SR, it can be stopped by Immunity to Magic but since I see no clear way of implementing that, I will settle for a very high SR instead.


    Regarding INCORPOREALITY:
    1)Incorporeal creatures can only be harmed by other incorporeal creatures, by +1 or better weapons, or by spells, spell-like effects, or supernatural effects. They are immune to all nonmagical attack forms. They are not burned by normal fires, affected by natural cold, or harmed by mundane acids.
    2)Even when struck by magic or magic weapons, an incorporeal creature has a 50% chance to ignore any damage from a corporeal source except for a force effect
    3)Incorporeal creatures move in any direction (including up or down) at will. They do not need to walk on the ground.
    4)Incorporeal creatures can pass through solid objects at will, although they cannot see when their eyes are within solid matter.
    5)Incorporeal creatures are inaudible unless they decide to make noise.
    6)The physical attacks of incorporeal creatures ignore material armor, even magic armor, unless it is made of force or has the ghost touch ability.
    7)Incorporeal creatures pass through and operate in water as easily as they do in air.
    Incorporeal creatures cannot fall or suffer falling damage.
    8)Corporeal creatures cannot trip or grapple incorporeal creatures.
    9)Incorporeal creatures have no weight and do not set off traps that are triggered by weight.
    10)Incorporeal creatures do not leave footprints, have no scent, and make no noise unless they manifest, and even then they only make noise intentionally.

    Going through the qualities of Incorporeality one by one:
    1) is already implemented in Monster Incorporeal and makes the creature immune to nonmagical attacks.
    2) should be implemented but I'm not sure how to do it. Perhaps looking at Blink and Blur spells and seeing how they are coded we could give the creature concerned a 50% concealment bonus?
    6) should be implemented but again I'm not sure how to do it. Perhaps it could be implemented as a melee touch attack.
    8) is also already implemented as Monster Untripable

    Creatures with Monster Incorporeal are:
    {14275}{Drelb}
    {14280}{Groaning Spirit}
    {14289}{Shadow}



    Ok, so we have a few tasks at hand:
    1)code in all the missing "Monster Plant" for elementals and oozes
    2)code in all the missing "Monster Juggernaut" for undead
    3)add "Descriptor: Mind-Affecting" to all the relevant .txt spell files
    4)add Spell Resistance 100 for the Will o Wisp


    1)In protos.tab search for all occurrences of mc_type_elemental and mc_type_ooze:
    {14091}{Green Slime}
    {14139}{Gelatinous Cube}
    {14140}{Gray Ooze}
    {14141}{Crystal Ooze}
    {14142}{Ochre Jelly}
    {14143}{Black Pudding}
    {14191}{Chaggrin}
    {14192}{Ildriss}
    {14292}{Large Air elemental}
    {14293}{Vortex}
    {14294}{Windwalker}
    {14296}{Large Earth elemental}
    {14298}{Large Fire elemental}
    {14302}{Large Water elemental}
    {14376}{Small Air Elemental}
    {14377}{Small Earth Elemental}
    {14378}{Small Fire Elemental}
    {14379}{Small Water Elemental}
    {14380}{Medium Air Elemental}
    {14381}{Medium Earth Elemental}
    {14382}{Medium Fire Elemental}
    {14383}{Medium Water Elemental}

    {14273}{Violet Fungi} also does not have Monster Plant, so code it in for it as well.

    The rest of the plants: {14274}{Hooting Fungi}, {14276}{Yellow Mold}, {14277}{Ascomid}, {14281}{Basidirond}, {14282}{Shrieker}, {14283}{Ustilagor}, {14284}{Phycomid} all have Monster Plant coded.

    Add Monster Plant in the first BLANK Bonus Type X column that you find. Be careful! Don't mistakenly add it to a BTX Param 1 or BTX Param 2 column where X stands for a number from 1 to 11.


    2)In protos.tab search for all occurrences of mc_type_undead:
    {14092}{Zombie}
    {14095}{Ghoul}
    {14107}{Skeleton}
    {14123}{Zombie}
    {14124}{Zombie}
    {14125}{Zombie}
    {14126}{Zombie}
    {14127}{Zombie}
    {14128}{Ghoul}
    {14129}{Ghoul}
    {14130}{Lacedon}
    {14131}{Lacedon}
    {14132}{Lacedon}
    {14135}{Ghast}
    {14136}{Ghast}
    {14137}{Ghast}
    {14280}{Groaning Spirit}
    {14289}{Shadow}
    {14328}{Bodak}
    {14444}{Zombie}

    Add Monster Juggernaut in the first BLANK Bonus Type X column that you find. Be careful! Don't mistakenly add it to a BTX Param 1 or BTX Param 2 column where X stands for a number from 1 to 11.


    3)In the rules/spells subfolder, the relevant files that need "Descriptor: Mind-Affecting" added are:
    099 - Daze.txt
    227 - Hold Monster.txt
    228 - Hold Person.txt
    490 - Tashas Hideous Laughter.txt
    556 - Daze Monster.txt

    In all these files, add the line:
    Descriptor: Mind-Affecting

    after:
    Subschools: Compulsion


    4)For {14291}{Will-o'-wisp}
    In Col180 (Bonus Type 5) add:
    Monster Spell Resistance

    In Col181 (BT5 Param 1) add:
    100
     
  15. zhuge

    zhuge Established Member Veteran

    Joined:
    Sep 27, 2003
    Messages:
    484
    Likes Received:
    0
    First to recap from the previous post, basically all creature immunities should have been resolved with the exception of
    Contagion and Ray of Enfeeblement on undead and constructs and the Incorporeal issue.


    The first 2 dialogue changes have probably made Tom Decker's list of corrections and will appear in the second official patch
    Have a look here for more details:
    http://www.ataricommunity.com/forums/showthread.php?threadid=338843&perpage=30&pagenumber=2

    But the next 2 changes regarding spells have not been rechecked by the devs. If you find any of them appropriate, you could code them in for Co8's next patch update as well.


    1)Alrrem's dialogue (1 major bug and 2 minor ones)
    -After completing Allrem's second quest with the violent option, I did not get the third quest.

    In py00160ogre chief.py and in py00164ogre for fire.py, change:
    def san_end_combat( attachee, triggerer ):
    if (attachee.stat_level_get(stat_subdual_damage) >= attachee.stat_level_get(stat_hp_current)):
    game.global_vars[13] = game.global_vars[13] + 1
    return RUN_DEFAULT

    to:
    def san_exit_combat( attachee, triggerer ):
    if (attachee.stat_level_get(stat_subdual_damage) >= attachee.stat_level_get(stat_hp_current)):
    game.global_vars[13] = game.global_vars[13] + 1
    if game.global_vars[13] > 5:
    game.global_vars[13] = 5
    return RUN_DEFAULT


    In protos.tab for:
    {14248}{Ogre Chief}

    Add:
    160 0 0 0 0
    to Col282 (san_exit_combat)


    In protos.tab for:
    {14249}{Ogre}

    Add:
    164 0 0 0 0
    to Col282 (san_exit_combat)


    2 other minor bugs in Alrrem's dialogue:
    1)Oohlgrist failed dialog always present on return
    2)For the 3rd quest certain lines do not properly shift the status of the quest from mentioned to accepted

    In 00122alrrem.dlg change:
    {328}{I have tried to recruit Oohgrist, but I cannot sway him to our side, your excellency. Can I move on to the second task?}{}{8}{game.global_flags[348] == 1}{330}{game.quests[52].state = qs_botched}
    {329}{Me try to get Old Crust on our side, but me fail. Me go do next thing for you?}{}{-7}{game.global_flags[348] == 1}{330}{game.quests[52].state = qs_botched}

    {551}{It doesn't sound like he'll be easy to persuade, but I'll go try.}{}{8}{}{570}{}
    {552}{Me talk to Foul Rinse and get orbie thing.}{}{-7}{}{570}{}

    to:
    {328}{I have tried to recruit Oohgrist, but I cannot sway him to our side, your excellency. Can I move on to the second task?}{}{8}{game.global_flags[348] == 1 and game.quests[52].state != qs_botched}{330}{game.quests[52].state = qs_botched}
    {329}{Me try to get Old Crust on our side, but me fail. Me go do next thing for you?}{}{-7}{game.global_flags[348] == 1 and game.quests[52].state != qs_botched}{330}{game.quests[52].state = qs_botched}

    {551}{It doesn't sound like he'll be easy to persuade, but I'll go try.}{}{8}{}{570}{game.quests[54].state = qs_accepted}
    {552}{Me talk to Foul Rinse and get orbie thing.}{}{-7}{}{570}{game.quests[54].state = qs_accepted}



    2)Thrommel attaches himself like a charmed creature to the party if you already have the full number of followers
    -The problem here lies in the command to check whether followers are already at max is missing from Thrommel's dialogue lines which results in rather strange program behavior. It should be easily corrected though.

    In 00149thrommel.dlg find:
    {110}{That would be most kind. I will follow you, if you will simply lead me out of this accursed place.}{That would be most kind. I will follow you, if you will simply lead me out of this accursed place.}{}{110}{}{}
    {111}{Sure. Let's go.}{}{8}{}{0}{pc.follower_add(npc)}
    {112}{OK. We go now.}{}{-7}{}{0}{pc.follower_add(npc)}

    and change this to:

    {110}{That would be most kind. I will follow you, if you will simply lead me out of this accursed place.}{That would be most kind. I will follow you, if you will simply lead me out of this accursed place.}{}{110}{}{}
    {111}{Sure. Let's go.}{}{8}{not pc.follower_atmax()}{0}{pc.follower_add(npc)}
    {112}{OK. We go now.}{}{-7}{not pc.follower_atmax()}{0}{pc.follower_add(npc)}
    {113}{I'd like to escort you, but I have a large group already.}{}{8}{pc.follower_atmax()}{90}{}
    {114}{Me like you, but me gots lots of people already.}{}{-7}{pc.follower_atmax()}{90}{}



    3)daze: checks for size instead of hit dice as criteria
    -Had another look at scripts for Daze (level 0 ) and Daze Monster (level 2) spells.
    It appears Daze Monster does indeed use hit dice to determine effect unlike Daze which is coded rather differently. However there is no check to see if the spell is cast on a living creature. I'm not sure if undead, golems and constructs also qualify but the spell currently should affect all creatures with 6HD and below.

    Going strictly by 3.5e rules, the text does say that Daze will affect humanoids only and I'm currently proposing a change to suit the rules better which isn't really difficult as all creature types are given in protos.tab in Col163.
    I am also changing the criteria for STAT_SIZE_LARGE to a hit dice criteria. Not really sure as to the original intention of the devs but again this is a change to mimic the ruleset better. Anyway, if anyone thinks this change need not be in then feel free to state so.

    In Spell099 - Daze.py change:

    if not target.obj.is_category_type( mc_type_animal ):

    if target.obj.get_size < STAT_SIZE_LARGE:

    to:

    if target.obj.is_category_type( mc_type_humanoid ):

    if target.obj.hit_dice_num < 5:



    4)produce flame: maximum bonus damage should be capped at +5
    -It appears that caster level which is used for spell duration is used unmodified for determining damage as well. Here I've put a ceiling for caster level after spell duration has been calculated so that the change will only affect damage. Retested and now the spell does cap damage at +5 without other ill effects.

    In Spell364 - Produce Flame.py change:

    spell.duration = 10* spell.caster_level

    target = spell.target_list[0]

    to:
    spell.duration = 10* spell.caster_level
    if spell.caster_level > 5:
    spell.caster_level = 5
    target = spell.target_list[0]




    Ok, that's probably a short third list of fixes for our own next Co8 patch update. Again if any of you are free, have a look at these proposed fixes and if you agree, you can code in the stuff where Exitium last left off.
     
Our Host!