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
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

#526 Post by Zizzo »

Thorondor wrote:Had a friendly spirit which didn't attack; - I guess the previous one got damaged either by me or by another creature which turned it hostile.
I… don't think I've coded anything like that. I'll check to see if the engine does that. In the meantime, just keep an eye out for this happening again.
Thorondor wrote:- spell Dig doesn't work on rubble or granite, though wall destruction from Thaumaturgy does. Forgot to buy a shovel so haven't checked that yet.
[sound F/X: source diving] …well, crap. I've kind of coded myself into a corner here. See, the code tries to make reasonable assumptions about whether a damage type should affect grids or objects on the floor; a fire bolt, for instance, probably shouldn't burn stuff on the floor, while Fireflash should. Problem is, I've been sloppily inconsistent about how and where I specify that, and I've missed some spots I should be catching — the KILL_WALL damage type used by the Dig spell, for instance, should really always affect grids. I'm gonna need to do a bit of infrastructure work to sort all this out and get it properly normalized; give me a little time on this one.
Thorondor wrote:Sorry; - found this one again.
something misses <my character>
<my character> misses clear icky thing
[sound F/X: source diving] Ah, there it is. Old code, from back before I added check-seen handling to Actor:getName(). Fixed in SVN.
Thorondor wrote:strangely phosphorescent potion - display ! rather than a potion.
[sound F/X: source diving] Interesting; the 'ang16x16' tile set apparently doesn't define a tile for "multi-colored" potions. Shimmering potions would have the same problem. The T2 code says "Hack -- note that "TERM_MULTI" is now just "TERM_VIOLET".", so we'll copy the tile for violet potions for this purpose. Fixed in SVN.
Thorondor wrote:Interesting allies can now kill quest monsters. (novice priest vs water spirit) I actually think this is a good thing; it doesn't seem right that a quest monster could survive with 1hp forever vs some high elf rangers, grinding them all down to dust. Am not sure it happened in 2.3x but I'd keep it :)
Yes, I remember that behavior from T2. I'd have to go to some extra effort to reproduce that behavior in the module code, but if the general consensus is that I shouldn't bother, then that saves me some time. :wink:
Thorondor wrote:Just checked the selling of good ammo:
- worked fine with arrows of flame. 137 go per arrow, 4118 for 30. (there's some non-rounding but more or less ok).
- will keep an eye out in case it's just one type of ego.
Well, this is just getting confusing… :?
"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

#527 Post by Thorondor »

Hi Zizzo

Have now managed to get character into level 30s, still alive and kicking :)
Sterling work to get it playable to this degree <applause>
Have summarised a few things below. Sorry there's quite a few!


Error logs:
bash a stuck door (stuck by magelock)

error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/Game.lua:944: /mod/class/Player.lua:1101: attempt to perform arithmetic on local 'power' (a table value)\
At [C]:-1 \
At [C]:-1 error\
At /mod/class/Game.lua:944 do_in_coroutine\
At /mod/class/Game.lua:1051 \
At /engine/KeyBind.lua:231 "
seen = true
reported = false

got this one when pressing I for inventory - a bit odd; can't work out what's happened here. This is a character ending bug i think...

error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/Actor.lua:1405: attempt to compare nil with number\
At [C]:-1 __lt\
At /mod/class/Actor.lua:1405 getTalentFullDescription\
At /mod/class/Object.lua:896 getDesc\
At /mod/dialogs/ShowEquipInvenFloor.lua:189 generateList\
At /engine/dialogs/ShowEquipInven.lua:59 init\
At /mod/dialogs/ShowEquipInvenFloor.lua:45 init\
At /engine/class.lua:147 new\
At /mod/class/Player.lua:1300 showEquipInvenFloor\
At /mod/class/Game.lua:1025 \
At /engine/KeyBind.lua:237 "
seen = true
reported = false


Was fighting earth hounds and a blue dragon bat, cast a noxious cloud:

error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/interface/ActorTalents.lua:329: /engine/interface/ActorTalents.lua:302: /engine/interface/ActorTalents.lua:164: /mod/class/Actor.lua:1282: attempt to call method 'gsub' (a nil value)\
stack traceback:\
\9/mod/class/Actor.lua:1282: in function 'convertTalentMessage'\
\9/data/timed_effects.lua:369: in function 'on_merge'\
\9/engine/interface/ActorTemporaryEffects.lua:134: in function 'setEffect'\
\9/data/damage_types.lua:1272: in function 'side_effects_post'\
\9/data/damage_types.lua:375: in function 'projector'\
\9/engine/interface/ActorProject.lua:259: in function 'project'\
\9/mod/class/interface/ActorProject.lua:30: in function 'project'\
\9/mod/spell-util.lua:2091: in function </mod/spell-util.lua:2068>\
\9[C]: in function 'xpcall'\
\9/engine/interface/ActorTalents.lua:162: in function </engine/interface/ActorTalents.lua:151>\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/ActorTalents.lua:329 useTalent\
At /mod/class/NPC.lua:546 useTalent\
At /engine/ai//talented.lua:68 runAI\
At /engine/ai//talented.lua:123 doAI\
At /mod/class/NPC.lua:89 act\
At /engine/GameEnergyBased.lua:129 tickLevel\
At /mod/class/GameEnergyBasedEvilHack.lua:32 tick\
At /engine/GameTurnBased.lua:51 tick\
At /mod/class/Game.lua:633 "
seen = true
reported = false


Other issues:

Wights quest; I think one of the void jumpgates (top middle) directs to the middle of mountain chain; (to the middle chamber, immediately SE of the initial chamber).

chests can be disarmed but not opened. (I guess not fully implemented yet)
summon spell not implemented yet - not essential for my playtesting.
recharge spell not implemented yet
automizer destroys one arrow at a time when there is a stack in the inventory.
are ball lightning, jumping fireball and yellow lights meant to explode on being killed?
4 lembass when on sale ? typo?
Where can boomerangs be sold?
rounded pebble Travak: have found at least 3 now
I think firewall spell only generates persistent flames on the actual square that is targetted rather than the full length of the 'wall'.

Looks like rand-arts automatically tell you what they do when initially identified.. I don't think this is too bad a thing :)

Inscriptions are available but I don't know if it's possible for them to be recognised by commands e.g. !d!v!k (essential for scrolls of word of recall for instance :) )

A cursed Longbow appears to be flagged as 'average' according to automizer

Recalling out of a special level allows you to re-enter the level if you recall to it. Artifacts and unique monsters not recreated though. For what it's worth, I don't think this is a priority to sort; - in fact it could encourage players to beat the special levels, particularly if there was a way to make these particular dungeon levels persistent. Not sure how easy that is; - imagine recalling out of Nameless or the Dim Gates and having to do them again!

Thaumaturgy: wall destruction - I think in the original, wall destruction removed 1 tile of wall in each direction. i.e. if you cast wall creation, and completely surrounded yourself in granite, then wall destruction of whatever level would result in you being in a 3x3 floorspace, still surrounded by granite beyond the little square. Currently, if you have a create wall radius 10, and a wall destruction radius 10, then casting them sequentially will result in complete removal of all of the created wall.

<edit>
Bree dark horseman quest error

error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/interface/ActorQuest.lua:42: cannot open /data/quests/bree-nazgul.lua: No error\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/ActorQuest.lua:42 grantQuest\
At /data/chats/bree-mayor.lua:188 action\
At /engine/dialogs/Chat.lua:97 use\
At /engine/dialogs/Chat.lua:50 fct\
At /engine/ui/VariableList.lua:137 onUse\
At /engine/ui/VariableList.lua:115 \
At /engine/KeyBind.lua:231 receiveKey\
At /engine/ui/Dialog.lua:801 keyEvent\
At /engine/ui/Dialog.lua:510 "
seen = true
reported = true


Level 35 of the Maze. - interesting that the very edge wall doesn't display; - doesn't affect gameplay.
The following error arose after I did a phase door.

error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /data/general/objects/artifacts.lua:5447: module 'engine.util.Dialog' not found:\
\9no field package.preload['engine.util.Dialog']\
\9no file '/engine/util/Dialog.lua'\
At [C]:-1 \
At [C]:-1 require\
At /data/general/objects/artifacts.lua:5447 check\
At /mod/class/Object.lua:1376 identify\
At /mod/class/Object.lua:1384 check\
At [string \"return function(self, x, y, what, ...) local ...\"]:1 checkAllEntities\
At /mod/spell-util.lua:940 player_forget_map\
At /data/timed_effects.lua:2138 cbs\
At /mod/class/interface/ActorCallbacks.lua:97 all_cbs\
At /mod/class/interface/ActorCallbacks.lua:121 fireCallbacks\
At /mod/class/Actor.lua:271 act\
At /mod/class/Player.lua:515 act\
At /engine/GameEnergyBased.lua:129 tickLevel\
At /mod/class/GameEnergyBasedEvilHack.lua:32 tick\
At /engine/GameTurnBased.lua:51 tick\
At /mod/class/Game.lua:633 "
seen = true
reported = true


Also in the maze: Identify spell no longer identifies things that aren't in the actual inventory, irrespective of whether the spell level is high enough to do the Radius 1 ID.

The mindcrafter killed the novice priest
error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/interface/ActorTalents.lua:329: /engine/interface/ActorTalents.lua:302: /engine/interface/ActorTalents.lua:164: /mod/class/LogDisplay.lua:38: bad argument #1 to 'format' (number expected, got string)\
stack traceback:\
\9[C]: in function 'format'\
\9/mod/class/LogDisplay.lua:38: in function 'logdisplay'\
\9/mod/class/Game.lua:108: in function 'log'\
\9/mod/class/Game.lua:114: in function 'logSeen'\
\9/data/talents/npc/spells.lua:1097: in function </data/talents/npc/spells.lua:1071>\
\9[C]: in function 'xpcall'\
\9/engine/interface/ActorTalents.lua:162: in function </engine/interface/ActorTalents.lua:151>\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/ActorTalents.lua:329 useTalent\
At /mod/class/NPC.lua:546 useTalent\
At /engine/ai//talented.lua:68 runAI\
At /engine/ai//talented.lua:123 doAI\
At /mod/class/NPC.lua:89 act\
At /engine/GameEnergyBased.lua:129 tickLevel\
At /mod/class/GameEnergyBasedEvilHack.lua:32 tick\
At /engine/GameTurnBased.lua:51 tick\
At /mod/class/Game.lua:633 "
seen = true
reported = false


This error on starting a new level (L36, there might have been a fate attached to this dungeon level possibly???)
error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/interface/PlayerFates.lua:222: attempt to index global 'def' (a nil value)\
At [C]:-1 __index\
At /mod/class/interface/PlayerFates.lua:222 checkFates\
At /mod/class/Game.lua:580 changeLevel\
At /mod/class/Game.lua:1136 \
At /engine/KeyBind.lua:243 "
seen = true
reported = false

Entered a store in Minas Anor

error = "Game version: tome2-0.4.2\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/dialogs/ShowStore.lua:75: attempt to index field 'chars' (a nil value)\
At [C]:-1 __index\
At /engine/dialogs/ShowStore.lua:75 on_input\
At /engine/KeyCommand.lua:72 receiveKey\
At /engine/ui/Dialog.lua:802 keyEvent\
At /engine/ui/Dialog.lua:510 "
seen = true
reported = false


Think the Phial of undeath might have been created twice; - it's a house quest item at the moment.

Does Holy fire actually do anything? - I thought it did double damage to evil but might be mistaken. 140 damage listed; - and 140 damage done.

Illusory Castle - wouldn't load; - in truth I accidentally went on it rather than purposely trying to explore, but it crashed the game.

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

#528 Post by Zizzo »

Thorondor wrote:bash a stuck door (stuck by magelock)
[sound F/X: source diving] Ah, couple errors in how jammed (and locked) doors are handled. Fixed in SVN.
Thorondor wrote:got this one when pressing I for inventory - a bit odd; can't work out what's happened here. This is a character ending bug i think...
[sound F/X: source diving] Looks like you have a randart that confers one of a handful of obscure powers that I made a stupid typo in that would screw up the object description. Fixed in SVN.
Thorondor wrote:Was fighting earth hounds and a blue dragon bat, cast a noxious cloud:
[sound F/X: source diving] One of the earth hounds breathed on you and you got cut, and there was a typo in the message that was supposed to tell you that you were bleeding. Fixed in SVN.
Thorondor wrote:Wights quest; I think one of the void jumpgates (top middle) directs to the middle of mountain chain; (to the middle chamber, immediately SE of the initial chamber).
[sound F/X: source diving] That is odd. I may be misparsing the map data when I'm building the map; I'm not sure where these gates are actually supposed to be going. I'll investigate.
Thorondor wrote:chests can be disarmed but not opened. (I guess not fully implemented yet)
Huh? That's supposed to be implemented… [sound F/X: source diving] …oh. Well, that was stupid. :oops: Fixed in SVN.
Thorondor wrote:summon spell not implemented yet - not essential for my playtesting.
Which summon spell?
Thorondor wrote:recharge spell not implemented yet
Huh? I swear that's implemented… [sound F/X: source diving][slaps forehead] I just forgot to remove the "sorry, not yet implemented" flag when I implemented it. Fixed in SVN. :oops:
Thorondor wrote:automizer destroys one arrow at a time when there is a stack in the inventory.
Ugh, that could be a mess. I'll investigate.
Thorondor wrote:are ball lightning, jumping fireball and yellow lights meant to explode on being killed?
Not just when they're killed; they're supposed to explode when they attack. Obviously that's not implemented yet, though. :oops:
Thorondor wrote:4 lembass when on sale ? typo?
[sound F/X: source diving] Ah, that's supposed to be "Lembases". Small screw-up in pluralizing object names. Fixed in SVN.
Thorondor wrote:Where can boomerangs be sold?
Weapon store, I'd think… [sound F/X: source diving] ah, missed that case. Fixed in SVN.
Thorondor wrote:rounded pebble Travak: have found at least 3 now
Well, that doesn't bode well. I'll investigate.
Thorondor wrote:I think firewall spell only generates persistent flames on the actual square that is targetted rather than the full length of the 'wall'.
[sound F/X: testing] Indeed. Apparently core.fov.beam_any_angle_grids() doesn't work the way I thought it did. Fortunately, ActorProject:project() passes back exactly the grids we need. Fixed in SVN.
Thorondor wrote:Looks like rand-arts automatically tell you what they do when initially identified.. I don't think this is too bad a thing :)
Well, maybe, but it's clearly not supposed to happen. I'll investigate.
Thorondor wrote:Inscriptions are available but I don't know if it's possible for them to be recognised by commands e.g. !d!v!k (essential for scrolls of word of recall for instance :) )
Those are handled by the "Configure…" action now.
Thorondor wrote:A cursed Longbow appears to be flagged as 'average' according to automizer
Urk. What did the Longbow actually look like? I'll investigate.
Thorondor wrote:Recalling out of a special level allows you to re-enter the level if you recall to it. Artifacts and unique monsters not recreated though. For what it's worth, I don't think this is a priority to sort; - in fact it could encourage players to beat the special levels, particularly if there was a way to make these particular dungeon levels persistent. Not sure how easy that is; - imagine recalling out of Nameless or the Dim Gates and having to do them again!
Now, that's definitely a bug. [sound F/X: testing][sound F/X: forehead repeatedly string desk] Pro tip for Lua coders: "type(v) == nil" is not the same thing as "type(v) == 'nil'". :oops: :oops: :oops: Fixed in SVN. And for reference, I believe the engine does support persistent levels in non-persistent zones — at least, I hope it does, because we're going to need that for the bottom level of Mount Doom.
Thorondor wrote:Thaumaturgy: wall destruction - I think in the original, wall destruction removed 1 tile of wall in each direction. i.e. if you cast wall creation, and completely surrounded yourself in granite, then wall destruction of whatever level would result in you being in a 3x3 floorspace, still surrounded by granite beyond the little square. Currently, if you have a create wall radius 10, and a wall destruction radius 10, then casting them sequentially will result in complete removal of all of the created wall.
I'm… pretty sure this is the way it works in T2. That's why it was so hard to implement in the first place. (In fact, I thought you were the one reporting as a bug that it didn't work that way.)
Thorondor wrote:Bree dark horseman quest error
[sound F/X: source diving] That quest isn't implemented yet. We Apologize for the Inconvenience.™
Thorondor wrote:Level 35 of the Maze. - interesting that the very edge wall doesn't display; - doesn't affect gameplay.
?! That certainly didn't happen during my original testing. I'll investigate.
Thorondor wrote:The following error arose after I did a phase door.
[sound F/X: source diving] After you did a phase door? That error is in the quest handling for Narsil when you identify it. Anyway, fixed in SVN.
Thorondor wrote:Also in the maze: Identify spell no longer identifies things that aren't in the actual inventory, irrespective of whether the spell level is high enough to do the Radius 1 ID.
That's a side effect of the Maze's forget-map effect; objects on the floor get un-ID'd pretty much as soon as you ID them.
Thorondor wrote:The mindcrafter killed the novice priest
[sound F/X: source diving] Small typo in the NPC Mind Blast spell. Fixed in SVN.
Thorondor wrote:This error on starting a new level (L36, there might have been a fate attached to this dungeon level possibly???)
[sound F/X: source diving] …holy crap, have fates ever worked? That could not possibly have been right. Fixed in SVN.
Thorondor wrote:Entered a store in Minas Anor
[sound F/X: source diving] Ah, that's an engine bug that I've had to paper over in a couple other dialogs. Either your inventory or the store's inventory was empty, which triggers a corner case. I should probably do a sweep over all the dialogs that are likely to have that problem… [sound F/X: coding] okay, that should cover everything (famous last words…). Fixed in SVN.
Thorondor wrote:Think the Phial of undeath might have been created twice; - it's a house quest item at the moment.
"House quest item"? Well, this and the Travak problem from earlier suggest that there's something well and truly broken with our unique generation handling. I'll investigate.
Thorondor wrote:Does Holy fire actually do anything? - I thought it did double damage to evil but might be mistaken. 140 damage listed; - and 140 damage done.
[sound F/X: source diving] Should be working. Does it say that the evil target "is hit hard"?
Thorondor wrote:Illusory Castle - wouldn't load; - in truth I accidentally went on it rather than purposely trying to explore, but it crashed the game.
Gyeep! I'll investigate.

And that's a massive bug list. I think I can push out an emergency bugfix release soon.
"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

#529 Post by Zizzo »

As promised, I think it's time to push out an emergency bugfix release:

Release 0.4.3 "One and Done"

As before, lots of bugfixes:
  • Few more places where we should have been checking whether we could actually see an NPC before saying its name.
  • The 'ang16x16' tile set from the original T2 tiles doesn't define a tile for "multi-colored" Shimmering or Strangely Phosphorescent potions; we re-use the Violet potion tile for those.
  • Another try at "normalizing" when spells affect grids and floor objects.
  • Some fixes to locked and jammed doors.
  • Small typos in some obscure object-conferred talents, which would among other things have badly screwed up their inventory listings.
  • Small typo in the 'Bleeding' temporary effect.
  • Chests can now be opened.
  • The Recharge spell was actually implemented; we just forgot to tell the game that… :oops:
  • Small typo in object name pluralization for objects whose names end in 's' (like "Lembas").
  • Allow boomerangs to be sold to weapon stores.
  • Fix Firewall's persistent wall effect to apply to all the relevant grids.
  • Actually record the fact that we've visited a one-time special level, so that we won't revisit it. :oops: Also print the special level's special entry message, which we were looking for in the wrong place.
  • Small typos that would have broken assorted "Are you sure you want to do this?" yes/no dialogs. I'm astonished no one has tripped over any of those before now…
  • Turns out I was badly botching the has-line-of-sight-to-player check in the NPC AI. No wonder everyting was waking up everywhere; basically everything could always see the player… :oops:
  • The NPC summon spells were very old code, from before the more recent use of actor generators that check for things like whether an actor can legally be placed at a certain location (hence aquatic monsters on dry ground…).
  • So, y'know that per-unit price cap we added handling for in stores? Turns out that's only supposed to be used for selling, not buying. Which is relevant because some stores, like the Gondolin library, have a price cap of 0, because they don't buy stuff. :oops: While I was in the neighborhood, I also added the store's per-unit cap to the store dialog title, for reference.
  • Small bug in Narsil's on_identify() quest handling.
  • Small typo in log message from NPC Mind Blast spell.
  • Fates could not possibly have worked before. :oops: Fix them so they actually apply, and clear them once they've been applied.
  • Paper over an engine bug in several inventory/equipment/store dialogs that would cause them to choke if any of the displayed inventories are empty and the user types a character.
  • Stupid typo in level generation trying to place doors. I can't believe that hasn't been tripped over before…
  • Zones with ambient effects weren't applying damage properly.
And a couple features:
  • And speaking of one-time-only special levels, the player is supposed to get a "Leave this special level forever?" prompt before leaving one of those. Was a little tricky to wedge in, given the ever-frustrating lack of a genuinely blocking dialog, but it seems to work so far.
  • Implement the EXPLODE attack type, for monsters who explode when they die, or attack you by self-destructing and exploding anyway. Watch out for those Snaga sappers in the Invasion of Gondolin quest… :twisted:
  • Took a stab at implementing the Dark Horseman quest in Bree. :twisted:
Although this is a bugfix release, not all known bugs are yet fixed. Known outstanding bugs at the moment include:
  • Stacks of items not selling for the proper price.
  • Possible rounding errors around maximum unencumbered carrying capacity.
  • Odd jumpgate destinations in Wights quest.
  • Automatizer destroying only one thing at at time off a stack.
  • 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.
Any other bugs you find (and any outstanding bugs I forgot :oops: ) should be reported here.

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.4.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 above. :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…).
"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

#530 Post by Thorondor »

Hi Zizzo
Can't get this working unfortunately; - no game loads post-character creation.

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

#531 Post by Zizzo »

Thorondor wrote:Hi Zizzo
Can't get this working unfortunately; - no game loads post-character creation.
[sound F/X: testing] Guh, stupid typo in the Bree zone definition from the Dark Horseman quest. I've uploaded a fixed .team. We Apologize for the Error.™ :oops:
"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

#532 Post by Thorondor »

Hi Zizzo

This error seems to come up every time that my character is hit / drooled on.

error = "Game version: tome2-0.4.3\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/AttackType.lua:61: attempt to index global 'AttackType' (a nil value)\
At [C]:-1 __index\
At /mod/class/AttackType.lua:61 monAttackTarget\
At /mod/class/NPC.lua:533 bumpInto\
At /mod/class/Actor.lua:1014 attack\
At /mod/class/Actor.lua:532 check\
At [string \"return function(self, x, y, what, ...) local ...\"]:1 checkAllEntities\
At /engine/Actor.lua:243 move\
At /mod/class/Actor.lua:462 move\
At /mod/class/NPC.lua:120 runAI\
At /engine/ai//talented.lua:127 doAI\
At /mod/class/NPC.lua:89 act\
At /engine/GameEnergyBased.lua:129 tickLevel\
At /mod/class/GameEnergyBasedEvilHack.lua:32 tick\
At /engine/GameTurnBased.lua:51 tick\
At /mod/class/Game.lua:654 "
seen = true
reported = true

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

#533 Post by Zizzo »

Thorondor wrote:This error seems to come up every time that my character is hit / drooled on.
[sound F/X: source diving][sound F/X: forehead repeatedly striking desk] Stupid error in implementation of the EXPLODE attack type. I've uploaded another fixed .team. We Apologize for the Inconvenience.™ :oops: :oops:
"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

#534 Post by Thorondor »

Think this might have been a yellow light popping :idea: :shock:

error = "Game version: tome2-0.4.3\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/interface/GameTargeting.lua:137: /engine/interface/ActorTalents.lua:164: /mod/class/Actor.lua:967: attempt to index field 'dam' (a nil value)\
stack traceback:\
\9/mod/class/Actor.lua:967: in function 'die'\
\9/mod/class/Actor.lua:666: in function 'takeHit'\
\9/data/damage_types.lua:371: in function 'projector'\
\9/engine/interface/ActorProject.lua:259: in function 'project'\
\9/mod/class/interface/ActorProject.lua:30: in function 'project'\
\9/mod/spell-util.lua:2062: 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:162: in function </engine/interface/ActorTalents.lua:151>\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/GameTargeting.lua:137 fct\
At /engine/interface/GameTargeting.lua:143 targetMode\
At /engine/interface/GameTargeting.lua:212 plain\
At /engine/KeyCommand.lua:85 "
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

#535 Post by Zizzo »

Thorondor wrote:Think this might have been a yellow light popping :idea: :shock:
Okay, this is getting embarrassing. I think we need an emergency bugfix release for our emergency bugfix release: :oops: :oops:

Release 0.4.4 "The Previous Version Explodes!"

This basically includes some stupid game-breaking bugs in some of the features I impulsively implemented in the previous release: :oops:
  • Small typo in the Bree zone definition from the implementaiton of the Dark Horseman quest.
  • Not all EXPLODE-based melee attacks (notably side-effect-based attacks like Yellow lights' BLIND attack) specify an actual damage amount. :oops: Also, referring to a code class like AttackType without explicitly require()'ing it rarely works. :oops:
Barring the discovery of any further bugs I introduced with those features (ha!), any other bugs you find in this version are from the previous version, and should be reported here.

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.4.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 above. :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…).
"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

#536 Post by Thorondor »

Hi Zizzo
Thanks again for the latest release.
have dabbled from time to time; - please see below (and keep up the good work :) )

0.44
Map issues
Mirkwood entrance can be a map entirely of trees, if a character doesn't have teleport it'll be impossible to get out as any attempt to go to overland map will put them back into the dungeon. As you walked there it should be possible to walk out. I suspect that this is the case with many dungeon entrances

Dungeon issues:
- the Maze: please see below in the error log; - essentially I think the maze is unplayable at the moment, if all traps are permanently invisible it's a simple avoid for all (except for maybe a character that auto-disarms traps)
- it doesn't play like the original; where you could still see for the range of your lightsource, and disarm traps, and if you wished, simply blast out the walls.

Poisoned water quest - spawned with 1 monster to kill (though have previously had the quest work 'normally'

Game play
I think if drowning is an insta-kill then an air counter is needed; I think that there was maybe one warning then death; - YASD situation, it would (read - was) be extremely easy to press a couple of keys before you read the message by which time it's a tombstone. Please could you make the whole screen flash red as if only 10% HP remaining if the drowning status is active?
I bought a lamp of the shadows - could still be seen by agent of the black market - I don't understand the mechanics of invisibility but assume that a mortal level 0 npc is the lowest tier and so if they can see through invisibility ? is it implemented?
Love the stun effect implementation (hadn't seen it before)

Is there a limit as to how many times a monster can concentrate on its body and haste itself? - thinking ropers and crebains especially?

Draebor the Imp managed to teleport level downwards when he was a quest monster! should this be allowed?
Truly an intensely irritating git! lol

Spells
Charm - is it worth putting some message if a monster 'saves' against the spell?
Thaumaturgy: I think in the original there were other spells that did the area effect rather than just destruction
Thaumaturgy: I think that the damage has been reduced for view spells, and ball spells compared with the original. Has this been done for balance reasons?

Automiser
It's possible with the automiser to have autodestroy e.g. a ring of teleportation.
With a subsequent character, that ring will then automatically be destroyed, even before its been identified. This is true for potions too.
Have also noticed a lot of potions / scrolls are now identified already when in a dungeon; - not sure if this is because there's a shared 'memory' for objects between save files? presume these are linked

Not all {cursed} ammo is flagged as "bad" - i.e. a rule for destroy all ammo {bad} doesn't do what is expected; - I suspect that one of the rules might flag it as 'normal'

Item queries
exploding arrows / bolts are insanely expensive; - ? a factor of 10 out?

I had an amulet of searching but it was not identified (i.e. the modifier was unknown). A scroll of identify wouldn't recognise this item.


Monsters
Beorn the shape changer was killed by bats of gorgoroth poison. Are uniques able to die now (without being killed by the player?)
I think light hounds previously lit area with their breath? (/ dark hounds darken an area in a similar vein) - not sure this is implemented yet.

Are crebains meant to be able to shriek out and wake the dungeon up when you're not in their line of sight?
Merrow - stuck on land

are characters compatable from one version to another? i.e. is a 0.44 character loadable by the 0.45 module?

A Young spirit that was summoned by a crypt creep was generated hostile; - not sure if that's intended; - may well be appropriate but thought that traditionally 'friendly' monsters were generated friendly. Imagine if Gandalf was summoned hostile.... Can't remember if enemies could ever hire characters that were traditionally friendly to you that would be enemies. It'd be a bad day at the office if some of the good 'higher' uniques e.g. Treebeard were summoned by Gothmog!

Spell queries
Thaumaturgy blast wall destruction currently applies a full blast radius of x and removes all walls in that radius; - that's not the way it worked on classic; - it would apply only to visible wall tiles, within line of sight. At present, all walls are simply removed; whether or not they are in line of sight. This applies even if there is big stack of trees in the way; a circlar shaped hole in any walls is applied.

If a charm spell is unsuccessful is it worth there being a message e.g. the novice mindcrafter resists the spell

Impossible to "search" whilst on a void jumpgate

Teleport away didn't get rid of a woodsman I accidentally summoned who was hostile.
Are light attacks meant to cause blindness status (if non-resistant); - some don't seem to. (light ball which explodes does blind, but light hounds don't

Should organic creatures e.g. yellow scorpions be able to cross shallow(+/- deep lava?) - not sure what the original 2.35 did but it would seem not "Realistic" if you get my drift...

error = "Game version: tome2-0.4.4\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/trap-util.lua:95: attempt to call a table value\
At [C]:-1 (for generator)\
At /mod/trap-util.lua:95 triggered\
At /mod/class/Trap.lua:264 trigger\
At /engine/Trap.lua:156 check\
At [string \"return function(self, x, y, what, ...) local ...\"]:1 checkAllEntities\
At /engine/Actor.lua:264 move\
At /mod/class/Actor.lua:462 move\
At /mod/class/Player.lua:295 moveDir\
At /mod/class/Player.lua:288 moveDir\
At /mod/class/Game.lua:950 move_or_scroll\
At /mod/class/Game.lua:976 \
At /engine/KeyBind.lua:231 "
seen = true
reported = false

That was a rather nice armour that got blasted then <eeek!> - the maze short term memory thing to mimic the maze needs adjusting; - otherwise all traps are permanently invisible, un-detectable, and probably can't be disarmed. I'd cast detect traps immediately prior to going onto the relevant square, whilst adjacent to it, and the armour still got blasted. In the original T2.35, you retained your vision up to lit areas; at the moment it's limited to one square.


This happened on character creation

error = "Game version: tome2-0.4.4\
Addons: gond_book-0.3.0, landmark-0.2.0, 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:23 f\
At /mod/class/Automatizer.lua:187 loadDefinition\
At /mod/class/Automatizer.lua:200 loadForPlayer\
At /mod/class/Game.lua:204 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:793 mouseEvent\
At /engine/ui/Dialog.lua:508 fct\
At /engine/Mouse.lua:71 "
seen = true
reported = false

? Fate error?
error = "Game version: tome2-0.4.4\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: attempt to call a number value\
At [C]:-1 \
At [C]:-1 calc_circle\
At /mod/spell-util.lua:997 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:1157 \
At /engine/KeyBind.lua:243 "
seen = true
reported = false


No idea what I was doing to cause this:
error = "Game version: tome2-0.4.4\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /mod/class/Player.lua:1452: attempt to index local 'o' (a nil value)\
At [C]:-1 __index\
At /mod/class/Player.lua:1452 action\
At /engine/dialogs/ShowEquipInven.lua:127 use\
At /engine/dialogs/ShowEquipInven.lua:57 fct\
At /engine/ui/ListColumns.lua:463 onUse\
At /engine/ui/ListColumns.lua:135 fct\
At /engine/Mouse.lua:71 receiveMouse\
At /engine/Mouse.lua:111 delegate\
At /engine/ui/Dialog.lua:793 mouseEvent\
At /engine/ui/Dialog.lua:508 fct\
At /engine/Mouse.lua:71 "
seen = true
reported = false

On spiders quest. Had just used a spell against an elder areana

error = "Game version: tome2-0.4.4\
Addons: gond_book-0.3.0, landmark-0.2.0, town_neutral-0.3.0\
\
Lua Error: /engine/interface/ActorTalents.lua:329: /engine/interface/ActorTalents.lua:302: /engine/interface/ActorTalents.lua:164: /engine/Zone.lua:1005: requested zone generator of type actor but it is not defined\
stack traceback:\
\9[C]: in function 'assert'\
\9/engine/Zone.lua:1005: in function 'getGenerator'\
\9/mod/spell-util.lua:760: in function 'summon'\
\9/mod/spell-util.lua:2848: in function </mod/spell-util.lua:2842>\
\9[C]: in function 'xpcall'\
\9/engine/interface/ActorTalents.lua:162: in function </engine/interface/ActorTalents.lua:151>\
At [C]:-1 \
At [C]:-1 error\
At /engine/interface/ActorTalents.lua:329 useTalent\
At /mod/class/NPC.lua:546 useTalent\
At /engine/ai//talented.lua:68 runAI\
At /engine/ai//talented.lua:123 doAI\
At /mod/class/NPC.lua:89 act\
At /engine/GameEnergyBased.lua:129 tickLevel\
At /mod/class/GameEnergyBasedEvilHack.lua:32 tick\
At /engine/GameTurnBased.lua:51 tick\
At /mod/class/Game.lua:654 "
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

#537 Post by Zizzo »

We Apologize for the Delay.™ I'll probably need to put a pin in most of this until after the 1.7 release, since I'm busy porting and debugging addons (and then afterward, I'll need to port the T2 module to the 1.7 game engine).
Thorondor wrote:I think if drowning is an insta-kill
Whoa whoa whoa, what? Drowning isn't supposed to be an insta-kill; it should just do damage.
Thorondor wrote:Love the stun effect implementation (hadn't seen it before)
[sound F/X: source diving] Oh, yeah, I pretty much borrowed that wholesale from the T4 module. Confusion should be covered too.
Thorondor wrote:Is there a limit as to how many times a monster can concentrate on its body and haste itself? - thinking ropers and crebains especially?
In the original T2 I once had a hostile cast haste on itself three times in a row. :shock: I suppose I could cap it somewhere. ([sound F/X: source diving] Interesting. It looks like I broke with T2 behavior here and made the Haste Self NPC spell work as a temporary effect for the NPC as it does for the player, instead of applying permanent speed. I don't actually remember doing that…)
Thorondor wrote:Thaumaturgy: I think that the damage has been reduced for view spells, and ball spells compared with the original. Has this been done for balance reasons?
I'm almost certain I copied the damage definitions straight out of the code. I think you mentioned you're using 2.3.5, though; I'm working from 2.3.9, and I vaguely recall that the original game did nerf thaumaturgy at some point.
Thorondor wrote:Beorn the shape changer was killed by bats of gorgoroth poison. Are uniques able to die now (without being killed by the player?)
I haven't done anything to prevent it. Now that you mention it, I do recall that the original game protected against that; I'm sure I could do something similar.
Thorondor wrote:are characters compatable from one version to another? i.e. is a 0.44 character loadable by the 0.45 module?
That's the intention. I'm trying to follow the pattern established by the T2 module that backward-incompatible changes are reserved for minor version changes (from 0.4 to 0.5). I can't promise I won't break stuff by accident, though… :oops:
"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

#538 Post by Zizzo »

We Apologize for the Delay.™ First, some notes:
Thorondor wrote:Charm - is it worth putting some message if a monster 'saves' against the spell?
[sound F/X: source diving] …There is a message, or should be: "<Target> is unaffected."
Thorondor wrote:Thaumaturgy: I think in the original there were other spells that did the area effect rather than just destruction
[sound F/X: source diving] By my reading of the T2 code, the only damage types that can apear on "blast" thaumaturgy spells are kill wall, create wall and destruction, all of which we should support.
Thorondor wrote:exploding arrows / bolts are insanely expensive; - ? a factor of 10 out?
[sound F/X: source diving] That's reproduced from the T2 code:

Code: Select all

/* Special attack (exploding arrow) */
if (o_ptr->pval2 != 0) value *= 14;
Thorondor wrote:I think light hounds previously lit area with their breath? (/ dark hounds darken an area in a similar vein) - not sure this is implemented yet.
It's supposed to be… [sound F/X: testing] Hmm, looks like some odd interaction between "remembered" and "lighted" when displaying floor grids; I'll have to poke around a bit.
Thorondor wrote:Thaumaturgy blast wall destruction currently applies a full blast radius of x and removes all walls in that radius; - that's not the way it worked on classic; - it would apply only to visible wall tiles, within line of sight.
[sound F/X: source diving] I can't find that in the T2 code.
Thorondor wrote: This applies even if there is big stack of trees in the way; a circlar shaped hole in any walls is applied.
Wait, you mean it's destroying the walls and leaving the trees? That is odd…
Thorondor wrote:Are light attacks meant to cause blindness status (if
non-resistant); - some don't seem to. (light ball which explodes does
blind, but light hounds don't
[sound F/X: source diving] Yellow lights are specifically exploding for blindness damage.

And finally, after far too much delay:

Release 0.5.0 "Dëth Môled"

The main reason for bumping the minor release number is just an excuse to bump up the 1.7.2 game engine. I haven't yet made any attempt at supporting localization, because holy jeebus mother farking carp, that would be a huge project. :? I might start adding that piecemeal as I go along.

We've got a lot of bugfixes in this release:
  • When computing weight-related stuff like the speed penalty for exceeding your carrying capacity, we now multiply everything by 10 internally to get integer values, to avoid possible round-off errors around the 100% cutoff point.
  • Also, to my astonishment, we weren't actually updating the aforementioned speed penalty when we picked stuff up. :shock: :oops:
  • The automatizer's "destroy" action now properly destroys an entire stack of objects from inventory at once.
  • Small typo in the Nirnaeth Arnoediad quest description.
  • Turns out checks for NPCs being blocked by lava grids were in a different part of the code than I was working from. :oops: We now correctly block them unless they can fly or have resist fire.
  • Don't try to drop anything if the player clicks one of the section headers in the equipment dialog.
  • Stupid typo was breaking Traps of Curse Weapon and Curse Armor.
  • So, turns out the map-forgetting effect from the NPC Cause Amnesia spell and the Maze's zone effect isn't actually supposed to unlight lit grids or forget traps. We Apologize for the Inconvenience.™ :oops:
  • Make sure the automatizer can't destroy quest objects. Also, flag the relic fragments as quest objects.
  • Stuff like summoning spells and trap-creating effects use the current zone's defined actor/object/trap generators, so all zones have to define all three of these, even if they otherwise wouldn't need them (zones with fixed maps that place all their monsters manually, for instance).
  • Aggravation isn't supposed to wake up monsters outside of maximum sight radius (which is 20 in T2). I thought I vaguely recalled fixing this before…?
  • Standard NPC behavior for hostile NPCs that have targeted the player but can't see the player due to invisibility is to move randomly as though confused. In the T2 code this is handled in the same code that handles 25%/50%/75% random movement, which is intermixed with the AI code; in our module code, though, those are handled in separate places, which is why I missed it. :oops:
  • If the player presses '<' (up level) in the wilderness or a town, we should go up to the worldmap, even if the player is currently standing on a zone entrance. :oops:
  • My notes in the thaumaturgy code say, "v2.2.7 and v2.3.9 compute these values differently, and v2.3.9's results seem way more powerful then I've seen; I'm going to track the v2.2.7 code for now." I've had complaints, though, :wink: so I'm upgrading to the 2.3.9 values. We Apologize for the Inconvenience.™ :mrgreen:
  • Some rings and amulets shouldn't count as identified if you just know their "flavor", since they have more information to reveal (Rings of Searching, for instance).
  • I have no idea why the game would consider resting on a void jumpgate to be unsafe but not searching or digging or disarming, but such as it is, I think I've got support for that implemented now.
  • Roughly implemented the 'inside_quest' player flag, which is used to prevent certain effects, like earthquakes clobbering your princess quest reward or hostiles teleporting you off a quest level.
  • Buried deep in T2's summoning code is a check to ensure that NPCs with the PET or NEUTRAL flag can't be made hostile to the player as a result of being summoned by a hostile. I missed that on my first pass. :oops:
  • Even deeper buried: T2's project() function has a comment to the effect of "Only 256 grids can be affected per projection, limiting the effective "radius" of standard ball attacks to nine units (diameter nineteen)." After extensive source diving, I finally figured out that this is a side effect of the function's use of 8-bit indexes into its list of grids to operate on. Reproducing this exactly would be far too fiddly; as a first pass, in our own project() method we cap projection radius at 9. This may be too strict for cone or wave projections; if that turns out to be a problem, we can further refine it later.
  • To my surprise, the code appears to indicate that uniques friendly to the player can be killed by hostile NPCs. Does that match anyone else's experience? At any rate, quest monters and neutral or hostile uniques are indeed only meant to be killable by the player, which we now implement.
  • Small bug in the Disperse Magic spell that would have prevented it from dispelling the Blessed effect from Scrolls of Blessing and similar.
  • Invisible NPCs have an INVISIBLE flag, which we were checking to determine whether an NPC is invisible. Players wearing a Ring of Invisibility or similar equipment, however, don't get that flag, so we were failing to notice when the player was invisible. :oops:
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:
  • Stacks of items not selling for the proper price.
  • Odd jumpgate destinations in Wights quest.
  • 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.
And some unrelated features to help justify the minor release bump:
  • Been doing some fiddling around with DeathMolds. Their semi-random teleportation "walking" should be loosely functional now, and instead of the cooldown-reducing-with-level hack I previously had in place, we now implement proper DeathMold fatigue — using your DeathMold powers "fatigues" you for a duration that decreases with level, and using a DeathMold power while fatigued costs mana (or life) proportional to your current fatigue duration. (All of this, by the way, is untested… :? )
  • We didn't automatically inherit T4's support for seven pages of hotkeys, but it's easy enough to add.
  • Not a user-visible change, but after complaining more than once about various local functions and fields in the T4 module that I'd like to be able to access from my addons, it would be hypocritical of me to do the same… :oops: :wink: As a first pass, I've promoted some local utility functions used in damage type definitions up into the DamageType{} table.
This is, of course, a pretty large bunch of changes, and has probably introduced some new bugs, to go with any bugs that haven't been found yet (and any that have and I've forgotten about… :oops: ). 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.0 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…).
"Blessed are the yeeks, for they shall inherit Arda..."

Shoshin
Wayist
Posts: 22
Joined: Fri Oct 30, 2020 6:23 am

Re: Porting ToME2 to the T4 engine

#539 Post by Shoshin »

For those of us coming into the party late, can you tell us (me) where to put the appropriate files in order to play this? I'm on a Mac, and using the Steam-installed version of T4, but I know my way around both Windows and a command line, so a rough approximation should be good enough to get me where I want to be. Thanks!

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

#540 Post by Zizzo »

Shoshin wrote:For those of us coming into the party late, can you tell us (me) where to put the appropriate files in order to play this? I'm on a Mac, and using the Steam-installed version of T4, but I know my way around both Windows and a command line, so a rough approximation should be good enough to get me where I want to be. Thanks!
If you're on a Mac, Steam probably puts ToME in roughly the same place as it does on Linux, which for me is $HOME/.steam/steam/steamapps/common/TalesMajEyal/. In that directory is a subdirectory game/modules, which is where the main tome-<version>.team module file lives; the T2 module file tome2-<version>.team should go there. Similarly, any of the T2 addons listed above would go in the game/addons subdirectory, next to the regular ToME addons.
"Blessed are the yeeks, for they shall inherit Arda..."

Post Reply