Page 1 of 2

Bugfix Pack 1.1.7

Posted: Tue Mar 20, 2018 10:48 pm
by minmay

Code: Select all

An addon compiling various fixes to bugs in ToME4.

===== Bugs fixed by this addon =====

= Actor cloning with Corpathus, Wintertide, and more =
Cloned actors (Forgery of Haze, Warden's Call, and so on) can cause errors with the Corpathus and Wintertide weapons, and other strange behaviour as well; see for details. This addon changes actor cloning to preserve 'x', 'y', and 'summon' fields on tables other than the actor themselves, making these weapons work with clones without errors.

= Amulet mastery egos overwriting each other =
The "of mastery" and "of protection" egos can appear in combination, or multiple times, on random artifacts, but will overwrite each others' mastery bonuses when they do (effectively making all but one of the egos do nothing except increase the price of the item). This addon fixes these egos so that they do not overwrite existing mastery bonuses.

= Blast and Tentacled Wings hitting multiple times =
Blast and Tentacled Wings perform knockback/pulling during projection, which can cause the same actor to be hit multiple times, depending on the order that squares are iterated over. This addon fixes these talents so that they can only hit each actor once.

= Hammer Toss serialization =
Hammer Toss's projectile will fail to return if you load the game while it is outgoing. This addon fixes Hammer Toss so that it saves properly.

= Flamethrower talents not working with double weapons =
Annihilator's Flame Jet and Heavy Weapons Expertise (with Flamethrower sustained) cause errors if used with a double weapon such as The Long-Arm, due to one mistaken line of code. This addon fixes these errors.

= Lock On working on invalid targets =
Lock On works on targets that are out of range or blocked by walls. This addon fixes it so it doesn't.

= Meteoric Crash mind critical typo =
Due to a typo, Meteoric Crash will fail to apply your critical multiplier to its impact damage if your mind critical chance is higher than your spell critical chance. This addon fixes this.

= 1.6 Possessor resource leaks and performance =
= Possessor (and Writhing One) access to Multiply and Summon =
= Psychic Crush cloning inconsistency =
ToME4 1.6 introduced particularly nasty exponential resource leaks with Possess, which this addon fixes by switching from cloneFull() to cloneActor(). It performs similar fixes for Psychic Crush, Psionic Minion, and Ominous Form.
This addon also prevents players from stealing the Multiply and Summon talents that are meant to be NPC-only, and makes Psychic Crush work more like other cloning talents such as Forgery of Haze, fixing issues with timed effects like Corrosive Worm. It no longer removes detrimental effects upon cloning.

= Real-time Meteors =
Actors can dodge meteors from some talents (Meteor Rain, Rain of Fire, etc) by moving out of the way within 1/6th of a second, real-time. This addon removes this real-time behaviour, making the game properly turn-based once again.

Note: Unfortunately, this won't fix third-party addons that use this behaviour (I hope none exist).

= Reckless Strike self-kill =
= Reckless Strike improper handling of damage shields =
= Reckless Strike not ignoring resistances =
= Reckless Strike incorrect amount of backlash damage =
It is possible for Reckless Strike to kill you if you attack an enemy with any sort of retaliation, due to the way the self-damage cap is implemented. This also does not interact with the user's damage shields (or similar mitigations) correctly, and often deals more or less backlash damage than it should (usually much less). It also doesn't ignore resistances (just penetrates 70% of them).
This addon fixes all of these bugs so that Reckless Strike works as its description claims it does.

= Snapshotting for many talents =
Many sustains and passives do not update their values after being activated, allowing you to "snapshot" values with high power and then continue to use those high values even after changing to e.g. equipment that gives less spellpower or mastery. This addon currently fixes snapshotting for the following talents:
- Abyssal Shield
- Acid Infusion
- Acidic Skin
- Acidic Soil
- Aim
- Antimagic Shield
- Arcane Feed
- Arcane Power
- Arcane Shield
- Augmentation
- Automated Cloak Tessellation
- Berserker
- Berserker Rage
- Blood Fury
- Blur Sight
- Body of Fire
- Body of Stone
- Burning Wake
- Corrosive Nature
- Corrosive Slashes
- Crystalline Focus
- Dark Ritual
- Deflect Projectiles
- Eldritch Infusion
- Elemental Harmony
- Essence of Speed
- Defensive Posture
- Fiery Hands
- Flame Infusion
- Flame of Urh'Rok
- Forge Shield
- Frost Hands
- Frost Infusion
- Frostdusk
- Furnace
- Gravity Locus
- Grinding Shield
- Ice Core
- Infestation
- Keen Senses
- Lightning Infusion
- Living Lightning
- Lucid Dreamer
- Mitosis
- Molten Iron Blood
- Momentum
- Natural Acid
- Nature's Defiance
- Onslaught
- Pace Yourself
- Phantasmal Shield
- Precise Strikes
- Precision
- Psiblades
- Rapid Shot
- Reflective Skin
- Resilient Body
- Righteous Strength
- Rocket Boots
- Secrets of the Eternals
- Shadow Feed
- Shielding
- Shield Wall
- Shattering Impact
- Shock Hands
- Slow Motion
- Spellcraft
- Steam Powered Armour
- Stone Skin
- Striking Stance
- Tempest
- Tempest of Metal
- Total Thuggery
- Unstoppable Nature
- Uttercold
- Weapon of Light
- Weapon of Wrath
- Wildfire

Unfortunately, this is not all of the snapshottable talents in the game, but it's a start.
This addon also fixes the ability to snapshot tons of passives and sustains by using items with "Talent category bonus" (or Adept).

= Temporary terrain changes destroying portals in Fearscape and Godfeaster =
Some bosses, such as the Divine Writhing Mass, create portals when they die, and some of these are implemented incorrectly and can be destroyed if there was a temporary terrain change (such as Ice Wall) on the square they appear on. This addon fixes this for the Divine Writhing Mass (Godfeaster) and Draebor the Imp (Fearscape).
There are other places where this bug is present, notably Derth (Southeast), Cavern beneath tombstones, Trollmire, and Unhallowed Morass. However, in order to maintain as much compatibility with other addons as possible, this addon only fixes it for the two aforementioned zones because you cannot recall out of them (giving the bug a high chance of soft-locking you).

===== Compatibility =====
This addon OVERLOADS the following files:

This addon overwrites the following functions:
- Adept's passives
- Anomaly Meteor's action
- Aim's activate
- Aim's deactivate
- Antimagic Shield's on_damage
- Arcane Power's activate
- Blast's action
- Blood Fury's activate
- Blood Fury's deactivate
- Blur Sight's activate
- Blur Sight's deactivate
- Bodies Reserve's setupBody
- Defensive Posture's activate
- Defensive Posture's deactivate
- The Divine Writhing Mass's on_die
- Draebor, the Imp's on_die
- Flame Jet's fire_flamethrower
- Heavy Weapons Expertise's action
- Keen Senses's activate
- Keen Senses's deactivate
- Lock On's action
- Meteoric Crash's trigger
- Meteor Rain's action
- Precise Strikes's activate
- Precise Strikes's deactivate
- Psionic Minion's action
- Psychic Crush's summon_minion
- Rain of Fire's callbackOnActBase
- Reckless Strike's action
- Stone Skin's activate
- Stone Skin's deactivate

It should otherwise not be destructive.

===== Changelog =====
- Fixed yet another Eyal's Will snapshotting bug

- Fixed cloneCustom() breaking Corpathus and Wintertide (see )
- Fixed Annihilator's flamethrower talents causing an error when used with double weapons such as The Long-Arm
- Made Psychic Crush work more like Forgery of Haze/Shadow Simulacrum/etc., only removing remove_on_clone timed effects and such. This fixes various issues with timed effects like Mucus and Corrosive Worm.

- Fixed Eyal's Will Psiblades error

- Generalized Possess aura/shield fix for other talents and timed effects

- Fixed possessing creatures with Mindslayer auras and shields

- Fixed 1.6 Possessor resource leaks and performance regressions
- Fixed Meteoric Crash mind crits

- Fixed Godfeaster fix

- This version is not compatible with savegames from older versions!
- Updated all bug fixes for ToME4 version 1.6.7
- Added a warning popup if addon version doesn't match ToME4 version
- Fixed Fearscape and Godfeaster boss death portals
- Fixed Tentacled Wings hitting multiple times
- Fixed Hammer Toss serialization
- Fixed Lock On working on out-of-range and out-of-sight targets
- Fixed "of mastery" and "of perfection" amulet egos from overwriting existing mastery
- No longer fixes early equilibrium failures for targeted talents (too destructive to compatibility). Sorry.
- No longer alters talents that had their bugs fixed in mainline ToME4: Bone Shield, Overkill, Willful Tormenter, Wing Buffet knockback
- Abyssal Shield melee retaliation restored (and no longer snapshottable)
- Flame of Urh'Rok original resistance formula restored (and no longer shapshottable)
- on_mastery_change functions added by other addons will no longer be stomped
- All original talent function environments are now preserved (improves compatibility with other addons)
- Fixed Reckless Strike so that it actually ignores resistances (instead of just giving 70% penetration)
- Restored Reckless Strike's "25% of damage dealt" alternative backlash, but made this amount of backlash damage actually correct (in mainline ToME4 it almost always inflicts less backlash than it should)
- Fixed snapshotting for more talents: Acid Infusion, Acidic Skin, Acidic Soil, Arcane Feed, Arcane Power, Arcane Shield, Augmentation, Automated Cloak Tessellation, Berserker, Berserker Rage, Blur Sight, Body of Fire, Body of Stone, Burning Wake, Corrosive Nature, Crystalline Focus, Deflect Projectiles, Eldritch Infusion, Elemental Harmony, Essence of Speed, Fiery Hands, Flame Infusion, Forge Shield, Frost Hands, Frost Infusion, Frostdusk, Furnace, Gravity Locus, Grinding Shield, Ice Core, Keen Senses, Lightning Infusion, Living Lightning, Lucid Dreamer, Mitosis, Molten Iron Blood, Momentum, Natural Acid, Nature's Defiance, Onslaught, Pace Yourself, Phantasmal Shield, Precision, Psiblades, Rapid Shot, Reflective Skin, Resilient Body, Righteous Strength, Rocket Boots, Secrets of the Eternals, Shadow Feed, Shattering Impact, Shielding, Shield Wall, Shock Hands, Slow Motion, Spellcraft, Steam Powered Armour, Stone Skin, Tempest, Tempest of Metal, Total Thuggery, Unstoppable Nature, Uttercold, Weapon of Light, Weapon of Wrath, Wildfire
- Fixed snapshotting via talents_mastery_bonus (e.g. the Radiance artifact cloak, the Adept prodigy)

- Fixed sustainbug for Aim, Antimagic Shield, Striking Stance
- Fixed Antimagic Shield's retaliation
- Fixed Blast and Wing Buffet hitting multiple times
- Preserved original fenv for more replaced functions, to reduce the chances of addon conflicts

- Gave the Spider talent's action its original fenv back (fixes some artifacts)

- Remove Catalepsy fix as it is fixed in vanilla in 1.5.8

- Fixed Catalepsy

- Fixed equilibrium failure happening before targeting instead of after.

- Shifted to a generalized bugfix addon instead of just "Meteor Fix".
- Fixed sustainbug for Abyssal Shield, Blood Fury, Bone Shield, Corrosive Slashes, Dark Ritual, Defensive Posture, Flame of Urh'Rok, Infestation, Overkill, Precise Strikes, Willful Tormenter
- Fixed Reckless Strike self-kills
- Fixed Reckless Strike damage shield interaction
- Reckless Strike now always damages you for 30% of your current HP after the attack
- Overkill now correctly attributes its damage to the talent
- Overkill now ignores the source's inc_damage instead of the victim's
- Overkill now projects its damage in an onTickEnd()
- Overkill no longer has an overzealous recursion guard, just a regular recursion guard

- Initial release

Weight: 61428967

Re: Bugfix Pack 1.0.1

Posted: Tue Mar 20, 2018 11:21 pm
by Chronosplit
Does Augmentation have the sustainbug? I remember reading a guide that talked about snapshotting for it.

Re: Bugfix Pack 1.0.1

Posted: Tue Mar 20, 2018 11:25 pm
by minmay
Augmentation does have the bug, but the snapshotting bug you're thinking of was different. I list all the bugged talents here.

Re: Bugfix Pack 1.0.1

Posted: Wed Mar 21, 2018 1:32 am
by wuxiangjinxing
There is a bug related to the off-hand penalty of stone warden and the damage of Shield of Light when using steam saw.
(If you are not interested in details, please just read what in red.)

First, let's see the definition of shield:

special_combat = { talented="shield", accuracy_effect="staff", damrange = 1.2, no_offhand_penalty=true }

Now let's see how steam saw is defined:

combat = { talented = "steamsaw", accuracy_effect="axe", damtype=DamageType.PHYSICALBLEED, damrange = 1.5, physspeed = 1, sound = {"actions/saw", pitch=1, vol=1}, sound_miss = {"actions/saw", pitch=1, vol=1}, use_resources={steam = 1}},

The difference is obvious. Shield is not defined with "combat", while steam saw is not defined with "special_combat".

Then let's see why stone warden has off-hand penalty when using shield:

local offmult = self:getOffHandMult(o.combat, mult) --change this to "local offmult = self:getOffHandMult(o.combat or o.special_combat, mult)"
local combat = self:getObjectCombat(o, "offhand")
if o.special_combat and o.subtype == "shield" and self:knowTalent(self.T_STONESHIELD) then combat = o.special_combat end

Since shield has no combat property, the variable offmult will never be updated.

Similarly let's see how the shield of light works:

self:attackTargetWith(target, shield.special_combat, DamageType.LIGHT, t.getShieldDamage(self, t)) --change this to "self:attackTargetWith(target, shield.special_combat or shield.combat, DamageType.LIGHT, t.getShieldDamage(self, t))"

So, as you can see, when using steam saw that has no special_combat, the damage would become negligible.

Could you please integrate those modifications in this great addon?

Re: Bugfix Pack 1.0.1

Posted: Wed Mar 21, 2018 2:01 am
by wuxiangjinxing
Besides, could you please also make your addon compatible with translations?

Re: Bugfix Pack 1.0.1

Posted: Wed Mar 21, 2018 3:14 am
by minmay
Sure, I can fix that Shield of Light bug.
wuxiangjinxing wrote:Besides, could you please also make your addon compatible with translations?
Unfortunately, this is not possible. Sorry.

Re: Bugfix Pack 1.0.1

Posted: Wed Mar 21, 2018 4:26 am
by wuxiangjinxing
By the way, one more possible bug for the talent shard (earthen power T3)

By my testing, this talent uses the attacker's talent level when calculating the damage, so it's usually zero (the attacker cannot know shard) and the damage would always be 40% that is the lower limit.

Re: Bugfix Pack 1.0.2

Posted: Sun Apr 22, 2018 8:29 pm
by minmay
1.0.2 released. This version fixes equilibrium failures happening before targeting instead of after. So you are no longer effectively penalized for canceling targeted equilibrium talents.
Unfortunately this fix only applies to vanilla equilibrium-using talents. Addon talents won't be affected.

Obviously, this needs to be fixed for all talent failures, not just equilibrium ones, but doing so in an addon is not currently possible without completely destroying compatibility, so you'll just have to hope it gets fixed in vanilla (which it obviously won't lol).

Re: Bugfix Pack 1.0.2

Posted: Sun Apr 22, 2018 10:20 pm
by darkgod
minmay wrote:so you'll just have to hope it gets fixed in vanilla (which it obviously won't lol).
Yeah I'm evil and intentionally ignore stuff and tries to make the game as bad as possible, as I've proven so many times in the many years I've kept the game going forward... ;)

Re: Bugfix Pack 1.0.2

Posted: Sun Apr 22, 2018 10:30 pm
by darkgod
To be more precise, I have a fix for the equilibrium thing, but it was too late to correctly test it for 1.5.6

Re: Bugfix Pack 1.0.3

Posted: Wed Apr 25, 2018 4:03 am
by minmay
I assumed it wouldn't be fixed because I saw Sheila saying she preferred the current behaviour. Whoops.

Anyway, I've uploaded a new version that fixes the Catalepsy AI error, for those not wanting to wait for 1.5.8.

Re: Bugfix Pack 1.0.2

Posted: Wed Apr 25, 2018 7:39 am
by darkgod
Actually I mistook your post, I thought you meant the fact that instant equilibrium talents failing consumes a turn, which is now fixed for 1.6 sorry :)
As for the check before or after target, this is not a bug yeah, and changing it as you said means altering every talent, and keeping on altering every new talent ever made which in itself sounds very bad. It could work if integrated into getTarget but that cant work since not all talents need to react the same to the returns; in any cases this does not really bother me as it is, I find it rather logical but I get that some people may not :)
Hence why addons exist :)

Re: Bugfix Pack 1.0.2

Posted: Wed Oct 03, 2018 2:51 am
by Adventurer
Is this obsolete now as of 1.5.10?

Re: Bugfix Pack 1.1.2

Posted: Mon Jun 01, 2020 1:24 am
by minmay
Finally updated this for 1.6, along with lots of new fixes.

Re: Bugfix Pack 1.1.6

Posted: Thu Jun 04, 2020 7:59 pm
by minmay
After some iteration, this addon is now at the point where I'm pretty sure it fixes all 1.6 cloning regressions.

This means that Possessor now has performance comparable to other classes, and Temporal Warden can once again use Corpathus and Wintertide without getting errors. So if you ever wanted to play Possessor but couldn't tolerate the resource leaks, now is the time.