Hullo,
A new alpha is available at http://t-o-m-e.net/ with quite a few changes and bugfixes, check the list below.
T-Engine 3.0.0alpha14 aka "Weird Science"
Interface changes:
- Monster memory defaults have been removed from the engine.
Modules can define the memory the way they want it.
Check tome/scripts/memory.lua for the "standard" set
- The "Display current knowledge" menu command ('~') is now a Lua
subsystem, with default implementations for most of the
subcommands. Modules wanting to use it must load the subsystem, then
use curr_know.add_menu_items() to select which subcommands to use,
and in which order they should be displayed. There are also
several optional subsystem parameters, and a means to define how
to do irregular pluralizations for monster names. See
tome/scripts/display.lua for examples
Player changes:
- *WARNING* Clarified the speeds table. You must now only give 210 values
for the 210 possible speeds, no more virtual silly stuff.
Only modules that changed the default table must adapt, other will
work fine.
- Time Stop spell as the new highest Temporal spell
- Added a .id field to descriptors so that player.get_descriptor("race").id
will return a value taht can be compared to the define_as set in
descriptors.lua. Much nicer than doing string comparisons on .title :>
Misc changes:
- Changed all the TOME_DIR_XXX macros to be TENGINE_DIR_XXX. This
change means that module makers, who say use TOME_DIR_DATA, will
need to change to using TENGINE_DIR_DATA, or their scripts will
not be found.
- Quests which have a dynamic description must now have the desc
function return an array of strings, rather than using
hook.print()
- Lua functions can now be stored in flags, even outside of things
that go into the cache (like object definitions). *WARNING* This
means that function_to_index() no longer works for per-grid
hooks functions. For example, it's now
cave(y,x).flags[FLAG_MOVE_POST_DEST] = function() ... end,
not
cave(y,x).flags[FLAG_MOVE_POST_DEST] = function_to_index("func_name")
- Two changes have been made to the inkey() function. One, it
now returns a signed 32 bit value, rather than a char value. This
should cause no problems in and of itself, but keep it in mind
in case you should notice any weird bugs.
Change two is that the return value of term.inkey() (plus the global
variable command_cmd, and the value passed to hooks KEYPRESS and
KEYPRESS_UNKNOWN) will be a negative number if the user pressed
a macro trigger key (i.e., F4, alt-T, and so on) which is not bound
to a macro. If you just pass the value to strchar() this shouldn't
be a problem, since strchar() has been modified to return '\0' if
given a negative value, but you should still check that pressing
function keys doesn't cause your code to do anything weird.
Monster changes:
- Object mimics now have to define an object drop amount and object
theme so that they'll contain at least one item, or they'll
be treated as terrain mimics.
- The flag KILL_WALL is now a flagset rather than a boolean. If
a flag in a wall's feature flagset is also found in a monster's
KILL_WALL flagset, then the monster can tunnel/dig/bore through
that wall. KILL_WALL=getter.flags{WALL=true} will reproduce the
old behavior of being able to destroy all walls.
- A monster boring/digging/etc through a wall now takes time (energy),
while before doing so didn't take any more time than a monster
stepping onto an empty floor square. You can adjust how
quickly or slowly a monster destroys a wall by giving the monster
a SPEED_DIG setting (i.e., SPEEDS=getter.array{[SPEED_DIG]=20}).
- New movement AI, ai.PATHFIND, which uses A* to find the path to the player
Do not abuse it, or your module will slow down to a crawl.
Dungeon changes:
- Vaults(for the default dungeon generator) can now be defined to
use a .map file instead of a static layout in vaults.lua.
The map file can do whatever it needs to do and generate much better
vaults, possibly dynamically.
Just make a vaults/ subdirectory and put .map files in there.
Then in vaults.lua change "layout" to be the name of the .map file
you want to use.
- FLAG_PERSISTANT has been removed. Use FLAG_SAVE_LEVEL instead.
- *WARNING* *WARNING*: The flag TURN_INTO is now DESTROY_INTO.
Update your features definitions.
- *WARNING* *WARNING*: Player tunneling has been turned into
a Lua subsystem. The skill_dig field has been removed from
the player_type structure, the tunnel and on_tunnel fields have
been removed from the feature_type structure, the TUNNEL, DIGGER
and EASY_DIG flags have been removed, and the TUNNELABLE flag is now
defined in the tunnel subsystem. If your module wishes to use
tunneling it must load the "tunnel" subsystem and replace the TUNNEL
and DIGGER flags with the DIG_POWER or ADD_DIG_POWER flags,
use the TUNNEL_DONE_MSG and TUNNEL_WORKING_MSG flags instead of the
tunnel and on_tunnel fields, and implement the EASY_DIG flag behavior
itself if it wishes to use that flag. See /scripts/features.lua and
/data/items/items.lua in the ToME module for examples of how to use
the new subsystem.
- Fixed house drop action to not delete objects when there is no room.
*WARNING* the fix is in ToME's data/stores/action.lua line 167.
Copy this if you need it.
- Stores show the current and max capacity
- Flag "PRINCIPAL" removed as it served no purpose, you probably need to
update your data/dungeon/dungeons.lua file
- A map can use "map.level_size_to_map()" to automatically set the level
size to the map size
Object changes:
- Activatable objects subsystem has changed. The subsystem now
requires parameters to work, and activatable objects now use a
different set of flags. Check load_subsystem("activations") in
tome/scripts/obect.lua for an example of the required parameters,
and check the Phial of Galadriel in tome/data/items/artifacts.lua
for how the flags in an activatable object should be used.
- Along with brands and slays weapons can also be of "speed fury".
Such a weapon will take less time to strike against a particular
monster
- Egos can now be part of "ego groups". Only egos witha group of "default"
are generated by .. default.
A module can then define a group of egos for special purpose, like ToME's
new "material" egos and then assign them in addition to the standard egos.
So one can get an elemental mithril rapier of demon destruction
Have fun!
T-Engine/... 300alpha14 "Weird Science"
T-Engine/... 300alpha14 "Weird Science"
[tome] joylove: You can't just release an expansion like one would release a Kraken XD
--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning
--
[tome] phantomfrettchen: your ability not to tease anyone is simply stunning
