Updates:
1.5.5d - improved reporting of OnTakeHit
1.5.5e - improved reporting of defaultPojector (including indenting it) - it will report more now
What does it do? Simply, it changes the log output dramatically, to provide players with MUCH more information about the game mechanics. In this way, it is very useful for studying the game and talent interactions.
So far, however, it is primarily geared towards classes that hit things in melee. I have yet to code the log for archers etc and for pure magic users.
It also, however, records lots of information about talents/runes etc that reduce damage, and this is where it is really helpful too, for a deep understanding of the game (imo).
For melee classes especially, it reveals a world of information. The best way to use it is by starting the game in this mode: "...t-engine4-windows-1.5.5 - Copy\t-engine.exe" --flush-stdout and then using a program like baretail to track the log as it is created. This mode means the log is flushed to log.txt in real time, with no delays.
This addon is probably incompatible with many addons, because it modifies these files: Actor.lua, Combat.lua, damage_types.lua. That said, I've been using it for months with a number of addons.
So, what does the log look like? Glad you asked.... I'll post more in further posts.
The log records the stages melee attacks go through and most (but not all) of the damage mitigation effects of the game. It does this both for the player's attacks and for any NPC attacking the player (but not for anyone else).
The Player's attacks etc start with $ and the NPC's attacking the Player start with ^.
At higher levels, when there are tonnes of on-hit effects etc, the log can get VERY long, but it is still very interesting I believe, and it has helped me become a better player.
I use INDENTS to indicate the flow of the log (but it has limitations) and the numbers indicate the order in which items are processed in the game. Read more about this here: http://forums.te4.org/viewtopic.php?f=38&t=47993.
So, here are some examples:
Level 1 Berserker, hitting a fox
Code: Select all
[LOG] Ran for 2 turns (stop reason: hostile spotted to the east (fox)).
[LOG]
$1.0 [attackTarget] Player attempts a new melee attack with one or both weapons...
$1.9 [attackTarget] Player attacking FIRST with mainhand (iron greatsword), and triggers [attackTargetWith]...
$2.2 [attackTargetWith] Player has accuracy 18, damage multiplier 1.00. Target has def 5
$2.5 [attackTargetWith] Player has damage 22.59, apr 1, accuracy 18, damage multiplier 1.00. Target has def 5, armour 1, name: fox
$ [checkHit] accuracy 18 versus def 5 gives chance to hit of 83 percent
[LOG] #UID:13382:0##fbd578#Errili#LAST# misses Fox.
$2.28 [attackTargetWith] of Player now checks for [callbackOnMeleeMiss], which is only Tempo talent
$2.29 [attackTargetWith] of Player now calls [attackTargetHitProcs]...
$6.20 [attackTargetHitProcs] of Player calls any available [callbackOnMeleeAttack] functions - to be coded still
fox 16502 dumb ai talents can use Attack T_ATTACK
dumb ai uses T_ATTACK
^1.0 [attackTarget] NPC attempts a new melee attack with one or both weapons...
^1.11 [attackTarget] NPC attacking with unarmed/innate combat, and triggers [attackTargetWith]...
^2.2 [attackTargetWith] NPC has accuracy 11, damage multiplier 1.00. Target has def 2
^2.5 [attackTargetWith] NPC has damage 4.14, apr 3, accuracy 11, damage multiplier 1.00. Target has def 2, armour 6, name: Errili
^ [checkHit] accuracy 11 versus def 2 gives chance to hit of 73 percent
^2.17 [attackTargetWith] NPC has damage 4.14, apr 3, accuracy 11, damage multiplier 1.00. Player has def 2, armour 6, armour hardiness 0.48
^2.18 [attackTargetWith] Armour on Player reduces damage from 4.14 to 2.15
^2.19 [attackTargetWith] Range adjusts damage of NPC from 2.15 to 2.00
^ [physicalCrit] NPC's initial crit chance: 1.00 adjusted to final crit chance 0.00. Player factors: Crit Reduction of target reduces crit chance by 2.86 / NPC factors:
^2.26 [attackTargetWith] After DamageType Conversion, damage of NPC is 2.00, and calls [projector]...
---------------------------------------------------------
^3.1 [projector] NPC's damage of type PHYSICAL starts at 2.00
^3.54 [projector] NPC attempts to do 2.00 damage to Player and calls [takeHit] which calls [onTakeHit]...
^5.0 [onTakeHit] NPC commences with initial damage = 2.00 ...
^2.29 [attackTargetWith] of NPC now calls [attackTargetHitProcs]...
^6.20 [attackTargetHitProcs] of NPC calls any available [callbackOnMeleeAttack] functions - to be coded still
fox 16502 dumb ai talents can use Attack T_ATTACK
dumb ai uses T_ATTACK
^1.0 [attackTarget] NPC attempts a new melee attack with one or both weapons...
^1.11 [attackTarget] NPC attacking with unarmed/innate combat, and triggers [attackTargetWith]...
^2.2 [attackTargetWith] NPC has accuracy 11, damage multiplier 1.00. Target has def 2
^2.5 [attackTargetWith] NPC has damage 4.14, apr 3, accuracy 11, damage multiplier 1.00. Target has def 2, armour 6, name: Errili
^ [checkHit] accuracy 11 versus def 2 gives chance to hit of 73 percent
^2.17 [attackTargetWith] NPC has damage 4.14, apr 3, accuracy 11, damage multiplier 1.00. Player has def 2, armour 6, armour hardiness 0.48
^2.18 [attackTargetWith] Armour on Player reduces damage from 4.14 to 2.15
^2.19 [attackTargetWith] Range adjusts damage of NPC from 2.15 to 2.00
^ [physicalCrit] NPC's initial crit chance: 1.00 adjusted to final crit chance 0.00. Player factors: Crit Reduction of target reduces crit chance by 2.86 / NPC factors:
^2.26 [attackTargetWith] After DamageType Conversion, damage of NPC is 2.00, and calls [projector]...
---------------------------------------------------------
^3.1 [projector] NPC's damage of type PHYSICAL starts at 2.00
^3.54 [projector] NPC attempts to do 2.00 damage to Player and calls [takeHit] which calls [onTakeHit]...
^5.0 [onTakeHit] NPC commences with initial damage = 2.00 ...
^2.29 [attackTargetWith] of NPC now calls [attackTargetHitProcs]...
^6.20 [attackTargetHitProcs] of NPC calls any available [callbackOnMeleeAttack] functions - to be coded still
Code: Select all
[PSI ATTACK] attacking with iron greatsword
$2.2 [attackTargetWith] Player has accuracy 20, damage multiplier 1.00. Target has def 1
$2.5 [attackTargetWith] Player has damage 10.14, apr 1, accuracy 20, damage multiplier 1.00. Target has def 1, armour 1, name: giant carpenter ant
$ [checkHit] accuracy 20 versus def 1 gives chance to hit of 98 percent
$2.17 [attackTargetWith] Player has damage 10.14, apr 1, accuracy 20, damage multiplier 1.00. NPC has def 1, armour 1, armour hardiness 0.30
$2.19 [attackTargetWith] Range adjusts damage of Player from 10.14 to 10.00
$ [physicalCrit] Player's initial crit chance: 5.50 adjusted to final crit chance 5.50. NPC factors: Player factors:
$2.26 [attackTargetWith] After DamageType Conversion, damage of Player is 10.00, and calls [projector]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 10.00
$3.54 [projector] Player attempts to do 10.00 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 10.00 ...
$2.29 [attackTargetWith] of Player now calls [attackTargetHitProcs]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 6.79
$3.54 [projector] Player attempts to do 6.79 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 6.79 ...
$6.20 [attackTargetHitProcs] of Player calls any available [callbackOnMeleeAttack] functions - to be coded still
[LOG]
[LOG] Lieen's Beyond the Flesh hits Giant carpenter ant for #aaaaaa#10 physical#LAST#, #aaaaaa#7 physical#LAST# (17 total damage).
$1.0 [attackTarget] Player attempts a new melee attack with one or both weapons...
$1.9 [attackTarget] Player attacking FIRST with mainhand (iron greatsword), and triggers [attackTargetWith]...
$2.2 [attackTargetWith] Player has accuracy 20, damage multiplier 1.00. Target has def 1
$2.5 [attackTargetWith] Player has damage 10.05, apr 1, accuracy 20, damage multiplier 1.00. Target has def 1, armour 1, name: giant carpenter ant
$ [checkHit] accuracy 20 versus def 1 gives chance to hit of 98 percent
$2.17 [attackTargetWith] Player has damage 10.05, apr 1, accuracy 20, damage multiplier 1.00. NPC has def 1, armour 1, armour hardiness 0.30
$2.19 [attackTargetWith] Range adjusts damage of Player from 10.05 to 11.00
$ [physicalCrit] Player's initial crit chance: 5.50 adjusted to final crit chance 5.50. NPC factors: Player factors:
$2.26 [attackTargetWith] After DamageType Conversion, damage of Player is 11.00, and calls [projector]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 11.00
$3.54 [projector] Player attempts to do 11.00 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 11.00 ...
$2.29 [attackTargetWith] of Player now calls [attackTargetHitProcs]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 6.79
$3.54 [projector] Player attempts to do 6.79 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 6.79 ...
$6.20 [attackTargetHitProcs] of Player calls any available [callbackOnMeleeAttack] functions - to be coded still
giant carpenter ant 25221 dumb ai talents can use Attack T_ATTACK
dumb ai uses T_ATTACK
^1.0 [attackTarget] NPC attempts a new melee attack with one or both weapons...
^1.11 [attackTarget] NPC attacking with unarmed/innate combat, and triggers [attackTargetWith]...
^2.2 [attackTargetWith] NPC has accuracy 20, damage multiplier 1.00. Target has def 0
^2.5 [attackTargetWith] NPC has damage 7.36, apr 7, accuracy 20, damage multiplier 1.00. Target has def 0, armour 0, name: Lieen
^ [checkHit] accuracy 20 versus def 0 gives chance to hit of 100 percent
^2.17 [attackTargetWith] NPC has damage 7.36, apr 7, accuracy 20, damage multiplier 1.00. Player has def 0, armour 0, armour hardiness 0.30
^2.19 [attackTargetWith] Range adjusts damage of NPC from 7.36 to 7.00
^ [physicalCrit] NPC's initial crit chance: 1.00 adjusted to final crit chance 1.00. Player factors: NPC factors:
^2.26 [attackTargetWith] After DamageType Conversion, damage of NPC is 7.00, and calls [projector]...
---------------------------------------------------------
^3.1 [projector] NPC's damage of type PHYSICAL starts at 7.00
^3.37 [projector] Kinetic Shield of Player reduces damage from 7.00 to 4.27
^3.54 [projector] NPC attempts to do 4.27 damage to Player and calls [takeHit] which calls [onTakeHit]...
^5.0 [onTakeHit] NPC commences with initial damage = 4.27 ...
^2.29 [attackTargetWith] of NPC now calls [attackTargetHitProcs]...
^6.20 [attackTargetHitProcs] of NPC calls any available [callbackOnMeleeAttack] functions - to be coded still
[LOG] #UID:13901:0##fbd578#Lieen#LAST# hits Giant carpenter ant for #aaaaaa#11 physical#LAST#, #aaaaaa#7 physical#LAST# (18 total damage).
[LOG] #UID:25221:0#Giant carpenter ant hits #fbd578#Lieen#LAST# for #aaaaaa#(3 to psi shield)#LAST#, #aaaaaa#4 physical#LAST# (4 total damage).
[PSI ATTACK] attacking with iron greatsword
$2.2 [attackTargetWith] Player has accuracy 20, damage multiplier 1.00. Target has def 1
$2.5 [attackTargetWith] Player has damage 10.14, apr 1, accuracy 20, damage multiplier 1.00. Target has def 1, armour 1, name: giant carpenter ant
$ [checkHit] accuracy 20 versus def 1 gives chance to hit of 98 percent
$2.17 [attackTargetWith] Player has damage 10.14, apr 1, accuracy 20, damage multiplier 1.00. NPC has def 1, armour 1, armour hardiness 0.30
$2.19 [attackTargetWith] Range adjusts damage of Player from 10.14 to 14.00
$ [physicalCrit] Player's initial crit chance: 5.50 adjusted to final crit chance 5.50. NPC factors: Player factors:
$2.26 [attackTargetWith] After DamageType Conversion, damage of Player is 14.00, and calls [projector]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 14.00
$3.54 [projector] Player attempts to do 14.00 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 14.00 ...
$2.29 [attackTargetWith] of Player now calls [attackTargetHitProcs]...
$6.20 [attackTargetHitProcs] of Player calls any available [callbackOnMeleeAttack] functions - to be coded still
Code: Select all
[PSI ATTACK] attacking with iron greatsword
$2.2 [attackTargetWith] Player has accuracy 28, damage multiplier 1.00. Target has def 4
$2.5 [attackTargetWith] Player has damage 14.09, apr 1, accuracy 28, damage multiplier 1.00. Target has def 4, armour 1, name: white ooze
$ [checkHit] accuracy 28 versus def 4 gives chance to hit of 100 percent
$2.17 [attackTargetWith] Player has damage 14.09, apr 1, accuracy 28, damage multiplier 1.00. NPC has def 4, armour 1, armour hardiness 0.30
$2.18 [attackTargetWith] Armour on NPC reduces damage from 14.09 to 14.09
$2.19 [attackTargetWith] Range adjusts damage of Player from 14.09 to 22.00
$ [physicalCrit] Player's initial crit chance: 8.20 adjusted to final crit chance 8.20. NPC factors: Player factors:
$2.26 [attackTargetWith] After DamageType Conversion, damage of Player is 22.00, and calls [projector]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 22.00
$3.54 [projector] Player attempts to do 22.00 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 22.00 ...
[LOG] White ooze splits in two!
$5.34 [onTakeHit] concludes, Player's damage was reduced from 22.00 to 11.00
$2.29 [attackTargetWith] of Player now calls [attackTargetHitProcs]...
---------------------------------------------------------
$3.1 [projector] Player's damage of type PHYSICAL starts at 9.82
$3.54 [projector] Player attempts to do 9.82 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 9.82 ...
---------------------------------------------------------
$3.1 [projector] Player's damage of type FIRE starts at 7.24
$3.54 [projector] Player attempts to do 7.24 damage to NPC and calls [takeHit] which calls [onTakeHit]...
$5.0 [onTakeHit] Player commences with initial damage = 7.24 ...
$6.20 [attackTargetHitProcs] of Player calls any available [callbackOnMeleeAttack] functions - to be coded still
AI took for target 25579 cutpurse :: 13901 Lieen 9 < 100
^1.0 [attackTarget] NPC attempts a new melee attack with one or both weapons...
^1.11 [attackTarget] NPC attacking with unarmed/innate combat, and triggers [attackTargetWith]...
^2.2 [attackTargetWith] NPC has accuracy 20, damage multiplier 1.00. Target has def 4
^2.5 [attackTargetWith] NPC has damage 10.96, apr 4, accuracy 20, damage multiplier 1.00. Target has def 4, armour 6, name: Lieen
^ [checkHit] accuracy 20 versus def 4 gives chance to hit of 90 percent
^2.17 [attackTargetWith] NPC has damage 10.96, apr 4, accuracy 20, damage multiplier 1.00. Player has def 4, armour 6, armour hardiness 0.44
^2.18 [attackTargetWith] Armour on Player reduces damage from 10.96 to 8.46
^2.19 [attackTargetWith] Range adjusts damage of NPC from 8.46 to 8.00
^ [physicalCrit] NPC's initial crit chance: 1.00 adjusted to final crit chance 0.00. Player factors: Crit Reduction of target reduces crit chance by 1.50 / NPC factors:
^2.26 [attackTargetWith] After DamageType Conversion, damage of NPC is 8.00, and calls [projector]...
---------------------------------------------------------
^3.1 [projector] NPC's damage of type PHYSICAL starts at 8.00
^3.54 [projector] NPC attempts to do 8.00 damage to Player and calls [takeHit] which calls [onTakeHit]...
^5.0 [onTakeHit] NPC commences with initial damage = 8.00 ...
^5.15 [onTakeHit] Damage Shield of Player reduces damage from 8.00 to 0.00
^2.29 [attackTargetWith] of NPC now calls [attackTargetHitProcs]...
^6.20 [attackTargetHitProcs] of NPC calls any available [callbackOnMeleeAttack] functions - to be coded still
[LOG] Lieen's Beyond the Flesh hits White ooze for #aaaaaa#11 physical#LAST#, #aaaaaa#10 physical#LAST#, #LIGHT_RED#7 fire#LAST# (28 total damage).
[LOG] #UID:25609:0#Dire wolf hits #fbd578#Lieen#LAST# for #SLATE#(8 absorbed)#LAST#, #aaaaaa#0 physical#LAST# (0 total damage).
white ooze 25631 dumb ai talents can use Attack T_ATTACK
dumb ai uses T_ATTACK
^1.0 [attackTarget] NPC attempts a new melee attack with one or both weapons...
^1.11 [attackTarget] NPC attacking with unarmed/innate combat, and triggers [attackTargetWith]...
^2.2 [attackTargetWith] NPC has accuracy 14, damage multiplier 1.00. Target has def 4
^2.5 [attackTargetWith] NPC has damage 9.55, apr 5, accuracy 14, damage multiplier 1.00. Target has def 4, armour 6, name: Lieen
^ [checkHit] accuracy 14 versus def 4 gives chance to hit of 75 percent
^2.17 [attackTargetWith] NPC has damage 9.55, apr 5, accuracy 14, damage multiplier 1.00. Player has def 4, armour 6, armour hardiness 0.44
^2.18 [attackTargetWith] Armour on Player reduces damage from 9.55 to 8.05
^2.19 [attackTargetWith] Range adjusts damage of NPC from 8.05 to 8.00
^ [physicalCrit] NPC's initial crit chance: 1.00 adjusted to final crit chance 0.00. Player factors: Crit Reduction of target reduces crit chance by 1.50 / NPC factors:
^2.26 [attackTargetWith] After DamageType Conversion, damage of NPC is 8.00, and calls [projector]...
---------------------------------------------------------
^3.1 [projector] NPC's damage of type PHYSICAL starts at 8.00
^3.54 [projector] NPC attempts to do 8.00 damage to Player and calls [takeHit] which calls [onTakeHit]...
^5.0 [onTakeHit] NPC commences with initial damage = 8.00 ...
^5.15 [onTakeHit] Damage Shield of Player reduces damage from 8.00 to 0.00
^2.29 [attackTargetWith] of NPC now calls [attackTargetHitProcs]...
^6.20 [attackTargetHitProcs] of NPC calls any available [callbackOnMeleeAttack] functions - to be coded still