Porting ToME2 to the T4 engine

If you have a module that you'd like comments on or would like to know how to create your very own module, post here

Moderator: Moderator

What do you want to see in the next release?

Hey, why haven't you implemented my favorite race/subrace/class yet? (specify below)
1
17%
Hey, why haven't you implemented my favorite skill/talent/spell/ability yet? (specify below)
2
33%
Hey, why haven't you implemented my favorite scroll/potion/wand/staff/rod/other object yet? (specify below)
0
No votes
Hey, why haven't you implemented my favorite store/quest/event yet? (specify below)
0
No votes
Hey, that's not what that dungeon's supposed to look like! (specify below)
0
No votes
Hey, why haven't you implemented my favorite game mechanic/UI feature yet? (specify below)
2
33%
Hey, that's a bug! Go fix that bug! (specify below)
1
17%
Hey, you didn't list what I want to see! (specify below)
0
No votes
 
Total votes: 6

Message
Author
Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#556 Post by Thorondor »

Hi Zizzo
Thanks for the latest update; I had collected a few things on 0.51 which are listed below; recognise these might have been fixed already.
Looking forward to having a bash at the updated module. RE next thing to develop; - to be honest the thing I'd love to see is some animation with arrows, bolt spells and breaths - though this might not be easy to do. It'd be nice to see where stuff is coming from when you get blasted.
Thanks for the good work
Stay safe

Game functionality things:

If you go over your 100% burden limit, then you'll slow down (appropriately :) ) but if you drop something you don't necessarily return to the previous rate of movement....
If you consume or sell something to get you below that limit, you will remain at the penalised rate until you drop an additional item onto the floor - it's not updating the speed penalty check as far as I can see...

A voidgate destination was the princess - is this allowed?

Are empty bottles fillable?

Child spirits are friendly, but unless you can see them you can't move past them

If you recharge a staff, it seems at least on first go, to completely unidentify it (e.g. an identify staff (0 charges) becomes a cedar staff

In vaults aquatic creatures generated on land


Error reports

Fails to load when attempting to enter the heart of the world

on level change - I presume a fate would have triggered here...

error = "Game version: tome2-0.5.0\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/interface/PlayerFates.lua:83: attempt to index global 'Map' (a nil value)\
At [C]:-1 __index\
At /mod/class/interface/PlayerFates.lua:83 ok_cb\
At /mod/spell-util.lua:1058 \
At [C]:-1 calc_circle\
At /mod/spell-util.lua:1066 grids_near\
At /mod/class/interface/PlayerFates.lua:89 apply\
At /mod/class/interface/PlayerFates.lua:224 checkFates\
At /mod/class/Game.lua:600 changeLevel\
At /mod/class/Game.lua:1162 \
At /engine/KeyBind.lua:243 "
seen = true
reported = false

Attempted to copy a spell to a stack of amulets of spell
error = "Game version: tome2-0.5.1\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/Actor.lua:1779: /engine/interface/ActorTalents.lua:190: /data/talents/skill/magic.lua:61: attempt to call method 'addOrDrop' (a nil value)\
stack traceback:\
\9/data/talents/skill/magic.lua:61: in function </data/talents/skill/magic.lua:44>\
\9[C]: in function 'xpcall'\
\9/engine/interface/ActorTalents.lua:186: in function </engine/interface/ActorTalents.lua:173>\
At [C]:-1 \
At [C]:-1 error\
At /mod/class/Actor.lua:1779 unload\
At /engine/Game.lua:467 unregisterDialog\
At /mod/dialogs/UseTalents.lua:195 use\
At /mod/dialogs/UseTalents.lua:120 fct\
At /engine/ui/TreeList.lua:310 onUse\
At /engine/ui/TreeList.lua:209 fct\
At /engine/Mouse.lua:71 receiveMouse\
At /engine/Mouse.lua:111 delegate\
At /engine/ui/Dialog.lua:798 mouseEvent\
At /engine/ui/Dialog.lua:508 fct\
At /engine/Mouse.lua:71 "
seen = true
reported = false

Got a really good character to level 29:
Had a couple of issues where the character accidentally targetted itself with bolt spells and expired; - I did retrieve the characters as seemed a shame to lose the progress. It seems to happen perhaps because the user interface can't keep up with key-presses and then it accidentally targets the player; which will often be fatal. Not sure what you think about effectively all spell casters having immunity to their own spells? shame to die with a typo.
Anyway, the following error messages started coming up.

error = "Game version: tome2-0.5.1\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/interface/ActorTalents.lua:351: /engine/interface/ActorTalents.lua:324: /engine/interface/ActorTalents.lua:190: /engine/interface/ActorTalents.lua:158: attempt to index upvalue 'force_target' (a nil value)\
stack traceback:\
\9/engine/interface/ActorTalents.lua:158: in function 'getTarget'\
\9/mod/spell-util.lua:2117: in function 'bolt_spell'\
\9/data/talents/spell/mana.lua:69: in function </data/talents/spell/mana.lua:68>\
\9[C]: in function 'xpcall'\
\9/engine/interface/ActorTalents.lua:186: in function </engine/interface/ActorTalents.lua:173>\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/ActorTalents.lua:351 useTalent\
At /mod/class/Player.lua:701 useTalent\
At /engine/interface/PlayerHotkeys.lua:179 \
At /engine/interface/PlayerHotkeys.lua:162 activateHotkey\
At /mod/class/Game.lua:1341 fct\
At /engine/interface/PlayerHotkeys.lua:326 \
At /engine/KeyBind.lua:231 "
seen = true
reported = false

error = "Game version: tome2-0.5.1\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/spell-util.lua:2835: /engine/interface/ActorTalents.lua:158: attempt to index upvalue 'force_target' (a nil value)\
At [C]:-1 \
At [C]:-1 error\
At /mod/spell-util.lua:2835 cast\
At /mod/dialogs/UseThaumaturgy.lua:183 use\
At /mod/dialogs/UseThaumaturgy.lua:97 fct\
At /engine/ui/TreeList.lua:310 onUse\
At /mod/dialogs/ui/TweakedTreeList.lua:177 fct\
At /engine/Mouse.lua:71 receiveMouse\
At /engine/Mouse.lua:111 delegate\
At /engine/ui/Dialog.lua:798 mouseEvent\
At /engine/ui/Dialog.lua:508 fct\
At /engine/Mouse.lua:71 "
seen = true
reported = false

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#557 Post by Zizzo »

Couple quick notes before I go source diving for all those bugs:
Thorondor wrote: Fri Jul 16, 2021 11:32 am RE next thing to develop; - to be honest the thing I'd love to see is some animation with arrows, bolt spells and breaths - though this might not be easy to do. It'd be nice to see where stuff is coming from when you get blasted.
I could investigate that, certainly. I think we're okay license-wise to crib particle definitions from the T4 module.
Thorondor wrote: Fri Jul 16, 2021 11:32 am Are empty bottles fillable?
They're supposed to be fillable from fountains, but that's probably not implemented yet. The initial sticking bit there would be what sort of UI we want to have for filling bottles from fountains. I could imagine, for instance, handling it like T4's golden chests: when the player steps on a fountain, they would get a dialog to the effect of "Fill bottles from fountain?". [sound F/X: source diving] It looks like fountain's aren't supposed to appear in corridors, so it probably wouldn't interrupt regular travel too much.
Thorondor wrote: Fri Jul 16, 2021 11:32 am Had a couple of issues where the character accidentally targetted itself with bolt spells and expired;
Hmm, for that we could just have an "Are you sure you want to target yourself?" dialog, like the T4 module does.
"Blessed are the yeeks, for they shall inherit Arda..."

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#558 Post by Thorondor »

Just wondering if the particle effects could be imported, would your module be able to import the full te4 tileset? It'd look amazing 😁

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#559 Post by Zizzo »

Thorondor wrote: Fri Jul 16, 2021 11:32 am A voidgate destination was the princess - is this allowed?
Do you mean directly under the princess? That should have been caught by the 'naked_bold' filter. Void gates going into the princess quest room in general are fine; I've seen them in original T2.
Thorondor wrote: Fri Jul 16, 2021 11:32 am Child spirits are friendly, but unless you can see them you can't move past them
[sound F/X: source diving] That's original T2 behavior AFAICT. I did go back and add the corresponding "Something is in your way" message for clarity.
Thorondor wrote: Fri Jul 16, 2021 11:32 am Fails to load when attempting to enter the heart of the world
[sound F/X: source diving] Yeah, that's not implemented yet. I can put that next on my to-do list, but I have a feeling it's gonna be ugly… :?
Thorondor wrote: Tue Aug 03, 2021 5:26 pm Just wondering if the particle effects could be imported, would your module be able to import the full te4 tileset? It'd look amazing 😁
Hmm, I'm actually not sure. It doesn't say anywhere in the code that I can find whether the Shockbolt tiles are distributed under their own license.

In the meantime, We Apologize for the Delay™; some of the stuff I wanted to put in this release took a bit longer than I expected. So, without further ado:

Release 0.5.3 "Fountain of Smart"

Several bugfixes in this release:
  • Just to be sure, we now recompute the speed changed for your carried weight (and everything else) every time anything is put into or taken out of the player's inventory or equipment. We're triggering this at a low enough level that it should catch everything (famous last words…) :oops:
  • Stupid typo in applying certain fates.
  • Another stupid typo in the Copy Spell talent, of the sort that I routinely bemoan that Lua can't somehow catch at compile time. :oops:
  • Turns out that the game's "show the real names of flavored objects that are flavor-known but not identified" logic wasn't handled where I thought it was (notably, in the stuff I'd already implemented), but in some special-case handling in object_desc(). This applies, for instance, to a Staff of Identify after it's recharged; it's unidentified because you don't know how many charges it now has, but its flavor is still known, so it should still be listed as a Staff of Identify.
  • Buried deep in T2's projection code, I discovered the comment "Never affect projector." Which is indeed reflected in the project_m() code, which returns with no effect if the affected actor is the same as the caster. Which basically means that all spells and damaging talents in T2 have always had built-in self-fire protection. :shock: :oops: I've patched up all the places I can find to reflect this change; let me know if I've missed any.
  • So the Static map generator, which among other things is used to build vaults, invokes Zone:makeEntity() directly to create its actors, instead of going through our special actor generator that does things like make sure we don't place an aquatic creature on dry land. :oops: We now borrow the filter from the latter to use in the former.
  • Small off-by-1 error in parsing some static level maps with void jumpgates; the T2 map definition specifies the gate's destination in 1-based coordinates, but our maps use 0-based coordinates. :oops: This affects the Bree wights quest, the Galleon level in Helcaraxe, and the Machine level in Illusory Castle.
I've probably missed some reported bugs in the above; We Apologize for the Inconvenience.™ :oops: (Don't hesitate to report them again. :wink: ) Known bugs that are still under investigation include:
  • Travak appearing multiple times (and apparently other artifacts…).
  • Randarts reporting *ID*'d info when just ID'd? Maybe some sloppiness in Object:getDesc().
  • Maze edge walls not visible. (Actually, is this still a problem? My recent tests aren't reproducing it.)
And a few requested features:
  • Preliminary implementation of drinking or filling empty bottles from fountains. I went with the golden-chest-style interface that I discussed previously; it's smart enough to know whether you have any bottles to fill and thus whether to ask drink/fill/ignore or just drink/ignore.
  • Particles! We borrow the T4 module's 'generic_ball', 'generic_blast' and 'hit_warning' particles, adapt its 'mana_beam' into a generic beam, and Frankenstein up our own generic bolt particle. (I'd show an example here, but I have no idea how to do that fancy animated screen-grab stuff that DarkGod does in his announcements. :oops: ) For now we're using these basic particles for all spells and effects (unless I've missed any), including thaumaturgy spells; in theory we could poach some more of the fancy fire/lightning from the T4 module in the future.
  • And migrate to the 1.7.4 engine.
Now, the particles work touched a fair bit of code, so I wouldn't be surprised if I introduced some bugs in the process (on top of the ever-present bugs that were already there…). :oops: :wink: As always, here is a good place to report said bugs.

And as always, the .team file for the release is available from my site, along with the Subversion repo and SVN::Web front-end thereto. And for those of you following along on SVN, the 0.5.3 release branch will get bug fixes for all the aforementioned inevitable bugs.

And since having them scattered throughout the thread is sort of useless, here's a reference list of all the T2 addons I've released:
  • Alchemic Arcanorum (current release 1.0.0): Starts Alchemist characters with an Alchemic Arcanorum object from my old ToME:Arcanorum T2 module, which can be used to store and extract essences.
  • Gender Parity (current release 1.0.1): Modifies assorted NPCs that don't particularly have to be male or female so that they can be either randomly.
  • Go to Landmark (current release 1.0.1): A quickie port of my T4 addon of the same name; allows you to auto-travel to various landmarks like stores or up/down stairs via the "Show known landmarks" action on the <Esc> menu.
  • Neutral Townsfolk (current release 1.0.0): As requested by Thorondor. :wink: Modifies a few of the more harmless town denizens into the "Neutral" faction so they don't pester you.
  • ZAngband Monsters (current release 1.0.1): Adds ZAngband monsters (hence the name). Untested.
  • Gondolin Book Store (current release 1.0.0): Also as requested by Thorondor. :wink: Adds a book store to Gondolin (hence the name…).
  • Gervais Tiles for ToME Classic (current release 1.0.0): Repurposes David Gervais' TomeTik tiles (reused here pursuant to the Creative Commons CC-BY-3.0 license) for use with our T2 module.
Next up, I'll probably take a stab at getting Heart of the Earth working, by request; if there's any other unimplemented feature you particularly miss, don't hesitate to ask for it.
"Blessed are the yeeks, for they shall inherit Arda..."

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#560 Post by Thorondor »

Thanks - excited to try this out 😊
I'd leave heart of the world to be honest, I'd just put a jokey notice saying the heart of the world is closed for maintenance, we apologise for the inconvenience :D I accidentally went on the hotw stairs and it crashed so thought it should be highlighted

Summoning or incorporating the enhanced graphics or shock bolt tiles would get my vote as next preference. Can u imagine razorback with te4 animation 😁😁😁😁😁😁

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#561 Post by Thorondor »

Hi
A bit of playtesting from the latest module:

blindness from bloodshot eyes - 6 damage / turn for 60 turns... - virtually instant death for a low level character; - not sure that there was ongoing damage in original T2...

Managed to forge 30 Travak pebbles from rubble using forge ammo (seems to do every time forge shots done actually)

Globe of light has lost it's strong light component at relevant levels, - used to be able to use it as a decent kill crebain skill but the 'strong light' has gone and it doesn't have a graphic, and also has an error report - see below... btw is it possible to incorporate the graphic for this skill from T4? - would be cool!

Saw a pike in a fountain (a bit unusual but guess fountains are water after all)

Error reports

Consumed fine wine:
error = "Game version: tome2-0.5.3\
Addons: gond_book-0.3.0, landmark-0.2.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /engine/Object.lua:147: attempt to get length of field 'stacked' (a nil value)\
At [C]:-1 __len\
At /engine/Object.lua:147 stack\
At /mod/class/Object.lua:1275 stack\
At /mod/obj-util.lua:529 sort_inven\
At /mod/class/Actor.lua:1694 sortInven\
At /mod/class/Player.lua:1580 playerEat\
At /mod/dialogs/UseItemDialog.lua:73 use\
At /mod/dialogs/UseItemDialog.lua:46 fct\
At /engine/ui/List.lua:155 onUse\
At /engine/ui/List.lua:81 fct\
At /engine/Mouse.lua:71 receiveMouse\
At /engine/Mouse.lua:111 delegate\
At /engine/ui/Dialog.lua:817 mouseEvent\
At /engine/ui/Dialog.lua:510 fct\
At /engine/Mouse.lua:71 "
seen = true
reported = false

cast globe of light

error = "Game version: tome2-0.5.3\
Addons: gond_book-0.3.0, landmark-0.2.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /engine/interface/ActorTalents.lua:351: /engine/interface/ActorTalents.lua:324: /engine/interface/ActorTalents.lua:190: /mod/spell-util.lua:2688: attempt to perform arithmetic on local 'dst_y' (a nil value)\
stack traceback:\
\9/mod/spell-util.lua:2688: in function 'particle'\
\9/mod/spell-util.lua:2186: in function 'ball_spell'\
\9/data/talents/spell/fire.lua:76: in function </data/talents/spell/fire.lua:69>\
\9[C]: in function 'xpcall'\
\9/engine/interface/ActorTalents.lua:186: in function </engine/interface/ActorTalents.lua:173>\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/ActorTalents.lua:351 useTalent\
At /mod/class/Player.lua:725 useTalent\
At /engine/interface/PlayerHotkeys.lua:179 \
At /engine/interface/PlayerHotkeys.lua:162 activateHotkey\
At /mod/class/Game.lua:1350 fct\
At /engine/interface/PlayerHotkeys.lua:326 \
At /engine/KeyBind.lua:231 "
seen = true
reported = false

This occurred on character creation (there was a previous character of the same name)
error = "Game version: tome2-0.5.3\
Addons: gond_book-0.3.0, landmark-0.2.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /mod/class/Automatizer.lua:225: automatizer rule collision on name \"Auto type 'armor' + bad\"\
At [C]:-1 \
At [C]:-1 assert\
At /mod/class/Automatizer.lua:225 validateAutomatizerRule\
At /mod/class/Automatizer.lua:236 newAutomatizerRule\
At /mod/class/Automatizer.lua:184 newAutomatizerRule\
At /save/timothy/automatizer-auto.lua:152 f\
At /mod/class/Automatizer.lua:187 loadDefinition\
At /mod/class/Automatizer.lua:200 loadForPlayer\
At /mod/class/Game.lua:207 at_end\
At /mod/dialogs/Birther.lua:399 callback\
At /mod/dialogs/Birther.lua:355 fct\
At /engine/ui/Dialog.lua:154 fct\
At /engine/ui/Button.lua:63 fct\
At /engine/Mouse.lua:71 receiveMouse\
At /engine/Mouse.lua:111 delegate\
At /engine/ui/Dialog.lua:817 mouseEvent\
At /engine/ui/Dialog.lua:510 fct\
At /engine/Mouse.lua:71 "
seen = true
reported = true

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#562 Post by Thorondor »

Just tried to load a saved file; - game aborted and wouldn't load.
Forgot to say in the previous post; particle effects looking good :)

error = "Game version: tome2-0.5.3\
Addons: gond_book-0.3.0, landmark-0.2.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /mod/class/Automatizer.lua:225: automatizer rule collision on name \"Auto type 'armor' + bad\"\
At [C]:-1 \
At [C]:-1 assert\
At /mod/class/Automatizer.lua:225 validateAutomatizerRule\
At /mod/class/Automatizer.lua:236 newAutomatizerRule\
At /mod/class/Automatizer.lua:184 newAutomatizerRule\
At /save/timothy/automatizer-auto.lua:152 f\
At /mod/class/Automatizer.lua:187 loadDefinition\
At /mod/class/Automatizer.lua:200 loadForPlayer\
At /mod/class/Game.lua:155 run\
At /engine/Module.lua:1122 instanciate\
At /engine/utils.lua:2999 showMainMenu\
At /engine/init.lua:207 \
At [C]:-1 dofile\
At /loader/init.lua:217 "
seen = true
reported = false

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#563 Post by Zizzo »

Thorondor wrote: Mon Sep 13, 2021 9:35 pm blindness from bloodshot eyes - 6 damage / turn for 60 turns... - virtually instant death for a low level character; - not sure that there was ongoing damage in original T2...
…?! [sound F/X: source diving] I can't find any way that the Blind effect could be doing damage. Were you still standing next to the Bloodshot eye during all this? I think its melee attack does a little damage.
Thorondor wrote: Mon Sep 13, 2021 9:35 pm Managed to forge 30 Travak pebbles from rubble using forge ammo (seems to do every time forge shots done actually)
[sound F/X: testing] Still can't reproduce this. How deep in the dungeon are you when this happens?
Thorondor wrote: Mon Sep 13, 2021 9:35 pm Globe of light has lost it's strong light component at relevant levels, - used to be able to use it as a decent kill crebain skill but the 'strong light' has gone and it doesn't have a graphic, and also has an error report - see below... btw is it possible to incorporate the graphic for this skill from T4? - would be cool!
[sound F/X: source diving] Ah, that was a bug in the particle handling. Was accidentally using the wrong type of particle for Globe of Light, so its damage method was crapping out partway through, before it got to the "strong light" part. We Apologize for the Error.™ :oops:
Thorondor wrote: Mon Sep 13, 2021 9:35 pm Saw a pike in a fountain (a bit unusual but guess fountains are water after all)
Still can't figure out how that's happening; creatures with the AQUATIC flag should only be able to spawn in shallow water or deep water.
Thorondor wrote: Mon Sep 13, 2021 9:35 pm Consumed fine wine:
error = "Game version: tome2-0.5.3\
Addons: gond_book-0.3.0, landmark-0.2.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /engine/Object.lua:147: attempt to get length of field 'stacked' (a nil value)\
[sound F/X: source diving] Wow, I was really screwing up the handling of fine wine/ale and the empty bottles they're supposed to leave behind.
Thorondor wrote: Mon Sep 13, 2021 9:35 pm This occurred on character creation (there was a previous character of the same name)
error = "Game version: tome2-0.5.3\
Addons: gond_book-0.3.0, landmark-0.2.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /mod/class/Automatizer.lua:225: automatizer rule collision on name \"Auto type 'armor' + bad\"\
Hmm, in the directory where the savefile for that character lives, there should be a file named automatizer-auto.lua. Does that file contain multiple rule definitions with that rule name?
"Blessed are the yeeks, for they shall inherit Arda..."

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#564 Post by Thorondor »

Thanks

Travak was generated in stacks multiple times, very low level of dungeon (think either barrow downs L1 (worm tongue was quest monster :(.) or old forest very shallow

The void gate I mentioned was directly under the princess

Am pretty sure I'd moved character away from bloodshot eye and damage continued, memo to self: carry.!ccw always!

I do use atomiser so maybe I've put too many definitions in, though it's odd it jammed the save file.

BTW dunedan danger was shown as an @ symbol, is there a way to change it?
Just one last query (and I'll need to find an old version of 2.35 to check this, from memory thaumaturgy skill numbers were lower and the dice scaled with the 'level'of the thaumaturgy skill (know that the damage is fixed for each spell) . There's potentially 100 spells that on average get increasingly good hit dice when generated e.g. The first 10 spells learned (with skill damage xdy had x as 1 or 2 and y as something corresponding to the number of the spell +/- a few points. This would mean that if skill level =5, with 10 spells you might get a beam of light 2d10. As far as I remember it capped at 10d100.
If and when I dig my old copy out I'll try and post a screenshot.

No particular urgency with this btw, still ace it's under development 😊 my own long term wishlist is for import of all of the t4 graphics (I just wish I had the programming skills to be able to help)

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#565 Post by Zizzo »

Thorondor wrote: Tue Sep 21, 2021 7:47 am Travak was generated in stacks multiple times, very low level of dungeon (think either barrow downs L1 (worm tongue was quest monster :(.) or old forest very shallow
[sound F/X: testing] Still can't reproduce. I may just add a no-fixed-artifacts check to the ammo generation code.
Thorondor wrote: Tue Sep 21, 2021 7:47 am The void gate I mentioned was directly under the princess
[sound F/X: testing][sound F/X: source diving]*blink* the princess isn't on the map. How is the princess not on the map? Give me a little time on this one.
Thorondor wrote: Tue Sep 21, 2021 7:47 am Am pretty sure I'd moved character away from bloodshot eye and damage continued, memo to self: carry.!ccw always!
[sound F/X: testing] Well, if you move away from the Bloodshot eye, it shouldn't be hitting you anymore. (It is hard to tell, though; I wonder if I can convince the map to draw the tactical border for the player even when the player is invisible or otherwise can't be seen…) It looks like it isn't generating log messages for the hits while you're blind, though, since the damage code thinks you can't see either the attacker or the target. And the blindness duration is cumulative per hit, so if you had a duration in the neighborhood of 60 turns, you were probably still getting hit by the Bloodshot eye.
Thorondor wrote: Tue Sep 21, 2021 7:47 am I do use atomiser so maybe I've put too many definitions in, though it's odd it jammed the save file.
…okay, let me rephrase the question: Do you still have the automatizer-auto.lua file for the character that you were having the error for, and if so, could you attach it to a comment here so I can examine it?
Thorondor wrote: Tue Sep 21, 2021 7:47 am BTW dunedan danger was shown as an @ symbol, is there a way to change it?
[sound F/X: testing] Interesting. May be the "ú" in "Dúnadan" gumming up the check for a player icon; I'll check.
Thorondor wrote: Tue Sep 21, 2021 7:47 am Just one last query (and I'll need to find an old version of 2.35 to check this, from memory thaumaturgy skill numbers were lower and the dice scaled with the 'level'of the thaumaturgy skill (know that the damage is fixed for each spell) . There's potentially 100 spells that on average get increasingly good hit dice when generated e.g. The first 10 spells learned (with skill damage xdy had x as 1 or 2 and y as something corresponding to the number of the spell +/- a few points. This would mean that if skill level =5, with 10 spells you might get a beam of light 2d10. As far as I remember it capped at 10d100.
If and when I dig my old copy out I'll try and post a screenshot.
Thaumaturgy spell damage levels did change between 2.2.x and 2.3.x (becoming generally higher, I think); IIRC I'm currently tracking the 2.3.x behavior.
Thorondor wrote: Tue Sep 21, 2021 7:47 am No particular urgency with this btw, still ace it's under development 😊 my own long term wishlist is for import of all of the t4 graphics (I just wish I had the programming skills to be able to help)
A tileset addon wouldn't really need any programming skills, actually. If you unzip the Gervais tiles addon, you'll see it's almost entirely a directory tree full of tile images; the filenames of the tiles determine which monster/actor/etc. they associate with.
"Blessed are the yeeks, for they shall inherit Arda..."

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#566 Post by Thorondor »

Thanks
Here's the text from the LUA for the file that didn't load.
The character loads when I changed the automiser filename;- it might have been an old automiser file from a previous version that crashed it actually; not sure.


newAutomatizerRule {
name = "Auto name 'Ring of Weakness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Ring of Weakness" },
}

newAutomatizerRule {
name = "Auto name 'Amulet of Searching' + bad",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='name' }, "Amulet of Searching" },
{ test='==',
{ clause='status' }, "bad" }
},
}

newAutomatizerRule {
name = "Auto name 'Ring of Stupidity'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Ring of Stupidity" },
}

newAutomatizerRule {
name = "Auto name 'Potion of Booze'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Potion of Booze" },
}

newAutomatizerRule {
name = "Auto name 'Potion of Blindness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Potion of Blindness" },
}

newAutomatizerRule {
name = "Auto base type 'FILTHY_RAG' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='define_as' }, "FILTHY_RAG" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto name 'Scroll of Darkness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Scroll of Darkness" },
}

newAutomatizerRule {
name = "Auto name 'Scroll of Rumour'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Scroll of Rumour" },
}

newAutomatizerRule {
name = "Auto name 'Scroll of Nothing'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Scroll of Nothing" },
}

newAutomatizerRule {
name = "Auto base type 'SMALL_LEATHER_SHIELD' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='define_as' }, "SMALL_LEATHER_SHIELD" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto type 'ammo' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='type' }, "ammo" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto type/subtype 'armor/light' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='full_type' }, "armor/light" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto type/subtype 'weapon/hafted' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='full_type' }, "weapon/hafted" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto name 'Ring of Nothing'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Ring of Nothing" },
}

newAutomatizerRule {
name = "Auto name 'Potion of Slowness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Potion of Slowness" },
}

newAutomatizerRule {
name = "Auto type/subtype 'weapon/sword' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='full_type' }, "weapon/sword" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto type 'armor' + bad",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='type' }, "armor" },
{ test='==',
{ clause='status' }, "bad" }
},
}

newAutomatizerRule {
name = "Auto base type 'POT_SALT_WATER'",
action = 'destroy',
match = { test='==',
{ clause='define_as' }, "POT_SALT_WATER" },
}

newAutomatizerRule {
name = "Auto name 'Ring of Teleportation'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Ring of Teleportation" },
}

newAutomatizerRule {
name = "Auto type 'throwing' + average",
action = 'destroy',
match = { test='and',
{ test='==',
{ clause='type' }, "throwing" },
{ test='==',
{ clause='status' }, "average" }
},
}

newAutomatizerRule {
name = "Auto base type 'RING_AGGRAVATE_MONSTER'",
action = 'destroy',
match = { test='==',
{ clause='define_as' }, "RING_AGGRAVATE_MONSTER" },
}

newAutomatizerRule {
name = "Auto name 'Scroll of Aggravate Monster'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Scroll of Aggravate Monster" },
}

newAutomatizerRule {
name = "Auto name 'Mushroom of Blindness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Mushroom of Blindness" },
}

newAutomatizerRule {
name = "Auto name 'Potion of Clumsiness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Potion of Clumsiness" },
}

newAutomatizerRule {
name = "Auto name 'Mushroom of Confusion'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Mushroom of Confusion" },
}

newAutomatizerRule {
name = "Auto name 'Potion of Weakness'",
action = 'destroy',
match = { test='==',
{ clause='name' }, "Potion of Weakness" },
}

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#567 Post by Zizzo »

Hmm, no duplication there. If renaming the file fixed the problem, that probably means the colliding rule is in the world automatizer file. In fact, now that I think of it, that's probably exactly the sequence of events:
  • Create a this-character-only copy of the rule with character A.
  • Create an all-characters copy of the rule with character B, which doesn't know about character A's rule and so uses the default rule name.
  • When you reload character A, the identically named this-character-only rule and all-characters rule will collide.
Fortunately, I think this release fixes that:

Release 0.5.4 "Blind Trust"

Several bugfixes in this release:
  • Fixed particle handling for the Globe of Light spell.
  • Was making a total mess of trying to put an empty bottle back into inventory after consuming fine wine or fine ale. :oops:
  • The Forge Bolts talent was apparently making arrows instead. :oops: :oops:
  • The logic for whether or not to log a message when something does damage to something else was a bit wonky. In particular, we should always log a message if the player is hit for damage, even if we're blind or otherwise can't see ourself or the attacker.
  • A nasty one, a variant of a bug I first ran into back in 0.2.8: See, part of the handling for placing special features like void jumpgates on the map is that the map generator is supposed to make sure there are no actors at that location. But not only do we need to be checking that on the map we're in the middle of building instead of the current map, actors haven't even been placed on that map yet; any actors that one would expect to have been added by, say, placing a princess quest room are instead shunted to a list of things that will be added to the map at a later point in the level generation process. :evil: :? Which is a long way of saying that while we may have to go around our proverbial elbow to test it now, there should be no more void jumpgates generated under princesses. We Apologize for the Error.™ :oops:
  • The tile image filename used for the player is based on the player's race and class, and "Dúnadan" doesn't match "dunadan". Small workaround, easy to fix. :wink:
  • Since automatizer rule making interfaces like the "Create destroy/pickup rule" option create their own rule names, it's not fair to expect the player to keep track of them and make sure they don't collide, so we de-collide them as we load them.
  • And since we follow the common practice of de-colliding names by appending suffixes of "#1", "#2", etc., the text entry field for rule names needs to be able to handle names with "#" characters in them — which the engine's Textbox UI component is notoriously bad at. We borrow the RawTextbox component from my Notes to Self addon, which does special magic to get that right.
I've probably missed some reported bugs in the above; We Apologize for the Inconvenience.™ :oops: (Don't hesitate to report them again. :wink: ) Known bugs that are still under investigation include:
  • Odd jumpgate destinations in Wights quest.
  • Travak appearing multiple times (and apparently other artifacts…), and being created from rubble.
  • Randarts reporting *ID*'d info when just ID'd? Maybe some sloppiness in Object:getDesc().
  • Maze edge walls not visible. (Actually, is this still a problem? My recent tests aren't reproducing it.)
And a few features:
  • As suggested by Thorondor, we block entrance to the Heart of the World from Mirkwood until we get around to implementing it.
  • Inspired by my difficulties moving around while testing blindness-related stuff (and after digging around in the bowels of the map code where mortals were not meant to tread :wink: ), I have arranged for only the player's tactical border to be displayed if the player is blind, or invisible and cannot see invisible, or otherwise cannot see herself. (Hmm, is this something people will consider cheating? Will we need a game option to turn it off?)
Now, the map stuff and the log handling are a little wonky, so I wouldn't be surprised if they introduced some bugs (on top of the ever-present bugs that were already there…). :oops: :wink: As always, here is a good place to report said bugs.

And as always, the .team file for the release is available from my site, along with the Subversion repo and SVN::Web front-end thereto. And for those of you following along on SVN, the 0.5.4 release branch will get bug fixes for all the aforementioned inevitable bugs.

And since having them scattered throughout the thread is sort of useless, here's a reference list of all the T2 addons I've released:
  • Alchemic Arcanorum (current release 1.0.0): Starts Alchemist characters with an Alchemic Arcanorum object from my old ToME:Arcanorum T2 module, which can be used to store and extract essences.
  • Gender Parity (current release 1.0.1): Modifies assorted NPCs that don't particularly have to be male or female so that they can be either randomly.
  • Go to Landmark (current release 1.0.1): A quickie port of my T4 addon of the same name; allows you to auto-travel to various landmarks like stores or up/down stairs via the "Show known landmarks" action on the <Esc> menu.
  • Neutral Townsfolk (current release 1.0.0): As requested by Thorondor. :wink: Modifies a few of the more harmless town denizens into the "Neutral" faction so they don't pester you.
  • ZAngband Monsters (current release 1.0.1): Adds ZAngband monsters (hence the name). Untested.
  • Gondolin Book Store (current release 1.0.0): Also as requested by Thorondor. :wink: Adds a book store to Gondolin (hence the name…).
  • Gervais Tiles for ToME Classic (current release 1.0.0): Repurposes David Gervais' TomeTik tiles (reused here pursuant to the Creative Commons CC-BY-3.0 license) for use with our T2 module.
With no other outstanding feature requests, I'm kind of idly fiddling with summoning at the moment. We'll see how big a project that turns into. :shock: :wink: If there's some other unimplemented feature you particularly miss, don't hesitate to ask for it.
"Blessed are the yeeks, for they shall inherit Arda..."

Thorondor
Halfling
Posts: 105
Joined: Wed Apr 15, 2015 11:59 am

Re: Porting ToME2 to the T4 engine

#568 Post by Thorondor »

0.54:

Generally playing nicely;- when I get opportunity (which is very infrequent these days unfortunately...)
I like the graphics being incorporated now :)

Interesting bug arose - i think possibly relating to a god quest:
- on receiving quest 2 the game froze. When re-loaded the god quest had been given, but the description of the second temple looks like it's the same as the first one.
When recalling out of that level (Mirkwood) an unusual situation - can't enter overland map. Using a variety of spells e.g. destruction / teleport, it is possible to leave that level screen and move around - I think it'd be possible to even get back to town, but on trying to go onto overland map it freezes.
I'm not sure if that bug / glitch would disappear if i were able to navigate back to the original god quest temple and find the second piece of relic; - would be tricky to do (and I can't verify if the 2nd god quest is in the same location as the first for reasons above)

eel in well - in fact most wells have an acquatic creature in them
it's good that you can cast globe of light when blinded (though not sure if that's intended)

Certain area spells e.g. globe of light can strike creatures through low bushes even though they can't directly be seen by the character e.g. @..#..o where # is a low bush, a globe of light spell will strike the orc. I think you can also target creatures with bolt spells through low bushes

potion of booze - not implemented.

Stay safe :)

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#569 Post by Zizzo »

Thorondor wrote: Sat Dec 04, 2021 11:22 pm Interesting bug arose - i think possibly relating to a god quest:
- on receiving quest 2 the game froze. When re-loaded the god quest had been given, but the description of the second temple looks like it's the same as the first one.
For future reference, in cases like this when you need to kill and re-load a game, make sure to grab a copy of the log file, just in case. I'm not sure how much it would have helped in this case; I'll probably add some more debug logging around relic quest creation, in case this happens again. As for the god quest itself, I'll dig around and see if I can find any obvious problems.
Thorondor wrote: Sat Dec 04, 2021 11:22 pm When recalling out of that level (Mirkwood) an unusual situation - can't enter overland map.
That's not surprising; if the quest location info was screwed up, the worldmap zone would have choked trying to place the quest entrance on the map. [sound F/X: source diving] I think I can make the code a bit more resilient against problems like that.
Thorondor wrote: Sat Dec 04, 2021 11:22 pm eel in well - in fact most wells have an acquatic creature in them
At this point I'm just counting it as a win that they're not being placed on dry land anymore… :? :oops:
Thorondor wrote: Sat Dec 04, 2021 11:22 pm it's good that you can cast globe of light when blinded (though not sure if that's intended)
[sound F/X: source diving] …oh, dear. No, that's a bug; the relevant pre-cast check was misspelled and thus effectively not being done at all. :oops:
Thorondor wrote: Sat Dec 04, 2021 11:22 pm Certain area spells e.g. globe of light can strike creatures through low bushes even though they can't directly be seen by the character e.g. @..#..o where # is a low bush, a globe of light spell will strike the orc. I think you can also target creatures with bolt spells through low bushes
[sound F/X: source diving] Well, small trees are flagged as "floor" internally, so that may be intentional. I'll take a closer look at the T2 code and try to figure out what it's doing there.
Thorondor wrote: Sat Dec 04, 2021 11:22 pm potion of booze - not implemented.
[sound F/X: source diving] Yeah, that one looks ugly. My internal notes for that potion say "This can teleport us; figure out implementation later." I can probably get that worked up for the next release.
"Blessed are the yeeks, for they shall inherit Arda..."

Zizzo
Sher'Tul Godslayer
Posts: 2512
Joined: Thu Jan 23, 2003 8:13 pm
Location: A shallow water area south of Bree
Contact:

Re: Porting ToME2 to the T4 engine

#570 Post by Zizzo »

A late Christmas present: :mrgreen:

Release 0.5.5 "Blind Drunk"

A handful of bugfixes in this release:
  • Thanks to a stupid typo, we were accidentally omitting the can't-cast-spells-while-blind test. :oops: There are also a few spells that actually are supposed to be castable while blind or confused, and we were forgetting to check for them. :oops: :oops:
  • Some source diving reveals that ball spells in T2 only affect grids in line of sight of the center, and thus should be blocked by, for instance, small trees. As a first pass, we'll attempt to imitate that by keying off the 'block_sight' grid flag; if this results in any odd behavior, let me know and I'll try something more elaborate. (Ironically, this suggests that ball spells should work through glass walls and other things that block movement but not sight. That actually sounds vaguely familiar, from my experience in Melkor relic quests; does anyone else recall T2 working that way?)
  • Dunno what exactly is happening with the god quests, but I've made some guesses and hardened the code a bit, and added some logfile messages to try to track it down.
  • One of the checks that our object resolver code does is that it shouldn't try to promote a stack of more than one object to an artifact, which you'd think would prevent us from, say, forging a pile of Travaks from rubble. Thing is, though, we don't set the number of ammos forged until after we've finished creating them. :oops: For now, we just set a no-artifacts flag in the forge-ammo code; it's possible this bug could crop up in other places where stacks of objects are created.
I've probably missed some reported bugs in the above; We Apologize for the Inconvenience.™ :oops: (Don't hesitate to report them again. :wink: ) Known bugs that are still under investigation include:
  • Travak appearing multiple times (and apparently other artifacts…).
  • Randarts reporting *ID*'d info when just ID'd? Maybe some sloppiness in Object:getDesc().
  • Maze edge walls not visible. (Actually, is this still a problem? My tests aren't reproducing it.)
And a few features:
  • As long as we're on the subject, it's probably worth mentioning in a spell's description if it can in fact be cast while blind or confused.
  • By request, :wink: potions of booze are now implemented. We do not recommend drinking them to find out what they do. :twisted:
  • While testing said Potions of Booze, I noticed a problem with the status display changes from back in 0.5.2: now that we're listing two statuses per line, longer status names are getting truncated, which loses the duration information. We now have short display names for status effects, and we make sure the duration (if any) is shown.
I don't think these changes are drastic enough to have introduced any new bugs (famous last words…), so any bugs you find were probably already there and just hadn't been stumbled across yet. :oops: :wink: As always, here is a good place to report them.

And as always, the .team file for the release is available from my site, along with the Subversion repo and SVN::Web front-end thereto. And for those of you following along on SVN, the 0.5.5 release branch will get bug fixes for all the aforementioned inevitable bugs.

And since having them scattered throughout the thread is sort of useless, here's a reference list of all the T2 addons I've released:
  • Alchemic Arcanorum (current release 1.0.0): Starts Alchemist characters with an Alchemic Arcanorum object from my old ToME:Arcanorum T2 module, which can be used to store and extract essences.
  • Gender Parity (current release 1.0.1): Modifies assorted NPCs that don't particularly have to be male or female so that they can be either randomly.
  • Go to Landmark (current release 1.0.1): A quickie port of my T4 addon of the same name; allows you to auto-travel to various landmarks like stores or up/down stairs via the "Show known landmarks" action on the <Esc> menu.
  • Neutral Townsfolk (current release 1.0.0): As requested by Thorondor. :wink: Modifies a few of the more harmless town denizens into the "Neutral" faction so they don't pester you.
  • ZAngband Monsters (current release 1.0.1): Adds ZAngband monsters (hence the name). Untested.
  • Gondolin Book Store (current release 1.0.0): Also as requested by Thorondor. :wink: Adds a book store to Gondolin (hence the name…).
  • Gervais Tiles for ToME Classic (current release 1.0.0): Repurposes David Gervais' TomeTik tiles (reused here pursuant to the Creative Commons CC-BY-3.0 license) for use with our T2 module.
With no other outstanding feature requests, I'm kind of idly fiddling with summoning at the moment. We'll see how big a project that turns into. :shock: :wink: If there's some other unimplemented feature you particularly miss, don't hesitate to ask for it.
"Blessed are the yeeks, for they shall inherit Arda..."

Post Reply