Difference between revisions of "Debugging"

From Tales of Maj'Eyal
Jump to: navigation, search
Line 1: Line 1:
=== Debugging: Figuring out what went wrong ===
+
== Debugging: Figuring out what went wrong ==
  
==== Updating your configuration ====
+
=== Updating your configuration ===
 
Enabling cheat/development mode will grant you access to the internal Lua console and some additional dialogs/options useful for debugging.  It will stop you from uploading characters online, though, but you can always turn this mode off.
 
Enabling cheat/development mode will grant you access to the internal Lua console and some additional dialogs/options useful for debugging.  It will stop you from uploading characters online, though, but you can always turn this mode off.
  
Line 24: Line 24:
 
</ul>
 
</ul>
  
==== Inside of ToME ====
+
=== Inside of ToME ===
 +
 
 +
Enabling cheat mode gives you the following functions:
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 31: Line 33:
 
| Ctrl+L || Lua console  
 
| Ctrl+L || Lua console  
 
|-
 
|-
| Ctrl+A || Debug dialog
+
| (not assigned by default) || Debug menu
 
|-
 
|-
| Ctrl+S || save the game  
+
| Ctrl+S || Save the game  
 
|-
 
|-
 
| Ctrl+Alt+Shift+R || Reload the last save  
 
| Ctrl+Alt+Shift+R || Reload the last save  
 +
|-
 +
! Mouse !! Result
 +
|-
 +
| Ctrl-Left click || Teleport to the targeted square
 +
|-
 +
| Right click || Right-clicking a monster offers several debug functions, such as the ability to inspect inventory.
 +
|-
 +
| Shift-Ctrl-Right click || Instantly kill the targeted creature.  This does work on yourself.
 
|}
 
|}
  
NOTE: The keybinding may not be set, in this case you have to bind it yourself first.
+
=== Debug menu ===
 +
 
 +
Debug menu (aka debug mode) offers a menu with various options like changing zones, creating items, altering quests, etc.  All of this can also be done via the Lua console, but the debug menu is much easier to use.
  
 +
The keybinding for debug mode may not be assigned by default.  Press Esc and go under Key Bindings to assign it.
  
==== Lua console ====
+
=== Lua console ===
  
 
Summary of features:
 
Summary of features:
Line 133: Line 146:
  
  
==== Lua Code====
+
=== Lua code ===
  
 
To output values into the log file you can use 2 different functions:
 
To output values into the log file you can use 2 different functions:
Line 146: Line 159:
 
</code>
 
</code>
  
 
+
== Output log text to file immediately (only needed on Windows) ==
=== Output log text to file immediately (Only needed on Windows) ===
+
  
 
Without this, you have to close the game for the log file to be updated!
 
Without this, you have to close the game for the log file to be updated!
Line 167: Line 179:
 
This can be used in combination with a [http://en.wikipedia.org/wiki/Tail_(Unix) tail] program that shows the content of the log file in realtime.
 
This can be used in combination with a [http://en.wikipedia.org/wiki/Tail_(Unix) tail] program that shows the content of the log file in realtime.
  
=== Load module and create character on startup ===
+
== Load module and create character on startup ==
  
 
You can create a character once then use the premade from the command line:
 
You can create a character once then use the premade from the command line:

Revision as of 04:14, 5 December 2013

Debugging: Figuring out what went wrong

Updating your configuration

Enabling cheat/development mode will grant you access to the internal Lua console and some additional dialogs/options useful for debugging. It will stop you from uploading characters online, though, but you can always turn this mode off.

  • Navigate to the corresponding configuration directory (replace HOME with your home directory).
    Windows HOME\T-Engine\4.0\settings
    Linux HOME/.t-egine/4.0/settings
    Mac OSX HOME\Library\Application Support\T-Engine\4.0\settings
  • Create a file called cheat.cfg in that directory, and put the following text in that file.
     cheat = true
    
  • To turn cheat/development mode off, just change true to false or delete the cheat.cfg file.

Inside of ToME

Enabling cheat mode gives you the following functions:

Key Shortcut Result
Ctrl+L Lua console
(not assigned by default) Debug menu
Ctrl+S Save the game
Ctrl+Alt+Shift+R Reload the last save
Mouse Result
Ctrl-Left click Teleport to the targeted square
Right click Right-clicking a monster offers several debug functions, such as the ability to inspect inventory.
Shift-Ctrl-Right click Instantly kill the targeted creature. This does work on yourself.

Debug menu

Debug menu (aka debug mode) offers a menu with various options like changing zones, creating items, altering quests, etc. All of this can also be done via the Lua console, but the debug menu is much easier to use.

The keybinding for debug mode may not be assigned by default. Press Esc and go under Key Bindings to assign it.

Lua console

Summary of features:

  • Inspect values and execute code
  • Cursor positioning
  • Tab auto-completion
  • Copy and paste with system clipboard

The Lua console drops you into the global namespace and gives you access to the engine. If you want to inspect values, start the line with an equal sign. For example, say you want to inspect the player:

=game.player

The console has cursor positioning so you can use the Left and Right arrows, as well as Home and End to move to the beginning and end of the current line, respectively. You can paste the clipboard's contents to the cursor position with Ctrl+V (note, not Apple+V on Mac). The current line can be copied to the clipboard with Ctrl+C (again, not Apple+C).

Here are some useful commands to know.

Level up to level 50

game.player:forceLevelup(50)

Remove godmode invulnerability

game.player.invulnerable=0

Change your damage bonus

game.player.inc_damage.all=

Change your resistance

game.player.resists.all=

Learn a new talent (1 level in Slash in the example)

game.player:learnTalent(game.player.T_SLASH, true, 1)

Change category mastery

game.player:setTalentTypeMastery("cunning/survival", 1.5)

Change base stat - up to 100 max (reduce strength by 20 in the example)

game.player:incStat("str", -20)

Change stat bonus (set Cunning bonus to 50 in the example)

game.player.inc_stats[game.player.STAT_CUN] = 50

Apply an effect on the player (frozen for 10 turns)

game.player:setEffect(game.player.EFF_FROZEN, 10, {})

Change your max HP

game.player.max_life=1 game.player:resetToFull()

Teleport (to the Assassin Lord)

game:changeLevel(2,"thieves-tunnels")

Add 5000 gold

game.player:incMoney(5000)

Give yourself 10 unassigned class skills

game.player.unused_talents=10

Give yourself 10 unused stat points

game.player.unused_stats=10

Give yourself an extra stat point each level (default=3)

game.player.stats_per_level=4

Give yourself 10 unused generic points

game.player.unused_generics=10

Give yourself 10 unused category points

game.player.unused_talents_types=10

Give yourself 10 lives

game.player.easy_mode_lifes=10


Lua code

To output values into the log file you can use 2 different functions:

Print any text

print("yourmessage")

Display the content of an object. This lists all variables contained in the object foo.

table.print(foo)

Output log text to file immediately (only needed on Windows)

Without this, you have to close the game for the log file to be updated!

Instructions:

  1. Create a shortcut to t-engine.exe.
  2. Right-click the shortcut and select Properties.
  3. Add the command to the end of the "Target" line: --flush-stdout
The end of the Target line should look like this then:
\t-engine.exe --flush-stdout

This can be used in combination with a tail program that shows the content of the log file in realtime.

Load module and create character on startup

You can create a character once then use the premade from the command line:

t-engine -Mtome -n -E"auto_quickbirth='player'"

if your premade was named "player." (Or create a shortcut in Windows, similarly to the instructions above for outputting log text to a file.)