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)
0
No votes
Hey, why haven't you implemented my favorite skill/talent/spell/ability yet? (specify below)
2
50%
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)
1
25%
Hey, that's a bug! Go fix that bug! (specify below)
1
25%
Hey, you didn't list what I want to see! (specify below)
0
No votes
 
Total votes: 4

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

Re: Porting ToME2 to the T4 engine

#661 Post by Thorondor »

Hi Zizzo
Cheers for advice on Nazgul, tbh i'm not very good with warrior types - usually prefer to incinerate Nazgul with fireflash and similar :)
you asked something about rods; - need to ID both components to attach as far as I can see.
haven't booted up the old 2.35 to check RE dragon armour activation; - I've a feeling that you needed to *ID* to confirm resistance to elements but the way you've got it (i.e. obviously a red dragon armour resists fire) seems sensible :)
Just did first god quest without a hitch

just had an error in beastmaster shop:

error = "Game version: tome2-0.7.8\
Addons: gond_book-0.3.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /loader/init.lua:156: Error while loading base '/mod/dialogs/BeastmasterResearch.lua':\
/mod/dialogs/BeastmasterResearch.lua:116: '}' expected (to close '{' at line 109) near 'list'\
At [C]:-1 \
At [C]:-1 error\
At /loader/init.lua:156 \
At [C]:-1 require\
At /data/chats/beastmaster-shanty.lua:57 action\
At /engine/dialogs/Chat.lua:104 use\
At /engine/dialogs/Chat.lua:62 fct\
At /engine/ui/VariableList.lua:143 onUse\
At /engine/ui/VariableList.lua:121 \
At /engine/KeyBind.lua:231 receiveKey\
At /engine/ui/Dialog.lua:825 keyEvent\
At /engine/ui/Dialog.lua:512 "
seen = true
reported = false

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

Re: Porting ToME2 to the T4 engine

#662 Post by Thorondor »

Hi,
just completed library quest in Minas Anor. once it's done you have to complete the spellbook there / then. In original 2.35 there was an option to delay certain quest rewards to be acquired at a later date. Is this feasible for a future release (non-urgent)
Cheers :)

Edit
Just noticed something slightly odd; - you can buy rings of levitation in the magic shop but I can't sell one.

Edit 2: just tried light activation rand-art - says it's not implemented yet.

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

Re: Porting ToME2 to the T4 engine

#663 Post by Zizzo »

Thorondor wrote: Tue Nov 07, 2023 9:56 pm you asked something about rods; - need to ID both components to attach as far as I can see.
[sound F/X: source diving] Hmm, I think we're getting that right for the rod tip but not the rod. Easy enough to fix. What I was probably asking about was whether you needed to *ID* a rod tip (or a rod with an attached tip) to have its activation described in the object description.
Thorondor wrote: Tue Nov 07, 2023 9:56 pm haven't booted up the old 2.35 to check RE dragon armour activation; - I've a feeling that you needed to *ID* to confirm resistance to elements but the way you've got it (i.e. obviously a red dragon armour resists fire) seems sensible :)
That's T2 original behavior, or should be if I'm doing it right. T2 object definitions include the ability to define "obvious" flags for an object, which the player should be able to know about the object without having to fully *ID* it. Red DSM, for instance, specifies resist fire as an obvious flag.
Thorondor wrote: Tue Nov 07, 2023 9:56 pm just had an error in beastmaster shop:

error = "Game version: tome2-0.7.8\
Addons: gond_book-0.3.0, gervais_tiles-0.5.2, town_neutral-0.3.0\
\
Lua Error: /loader/init.lua:156: Error while loading base '/mod/dialogs/BeastmasterResearch.lua':\
/mod/dialogs/BeastmasterResearch.lua:116: '}' expected (to close '{' at line 109) near 'list'\
[sound F/X: source diving] Mmm, yeah, the Beastmaster Shanty is a bit of a mess. I'll fix that for next release.
Thorondor wrote: Wed Nov 08, 2023 10:37 pm just completed library quest in Minas Anor. once it's done you have to complete the spellbook there / then. In original 2.35 there was an option to delay certain quest rewards to be acquired at a later date. Is this feasible for a future release (non-urgent)
Cheers :)
Sure, that should be easy. I think we already do that for the fireproofing quest.
Thorondor wrote: Wed Nov 08, 2023 10:37 pm Just noticed something slightly odd; - you can buy rings of levitation in the magic shop but I can't sell one.
[sound F/X: testing] Can't reproduce so far. Any chance the ring was un-ID'd and Cursed?
Thorondor wrote: Wed Nov 08, 2023 10:37 pm Edit 2: just tried light activation rand-art - says it's not implemented yet.
[sound F/X: source diving] Do you mean a light absorption randart? Yeah, that looks like the last junkart power that we haven't implemented yet. That shouldn't be too hard to have for next release.
"Blessed are the yeeks, for they shall inherit Arda..."

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

Re: Porting ToME2 to the T4 engine

#664 Post by Zizzo »

Okay, I've got a fair amount of backward-incompatible changes backed up at this point, and I've more or less convinced myself that the new features won't immediately self-destruct, :? so keep your fingers crossed:

Release 0.8.0 "Puppetmaster"

The big feature for this release is puppeting via the Fire Golem and Mind Steal spells. If you're not familiar with this, basically this allows you to create and control a puppet creature, or dominate the mind of another creature and puppet it around. It's sort of like taking control of the Alchemists' golem in T4, but more limited:
  • While you're driving your puppet, your original body will take no actions. If your puppet dies, you'll be returned to your original body; if your original body dies, you're dead.
  • Your options while puppeting are limited; you can attack other monsters with melee attacks or with the puppeted creature's talents, and you can pick up or drop objects, but you can't wield/wear them (and NPCs don't wear anything for you to take off). You also can't leave the level or open or close doors.
  • In addition to the puppeted creature's usual talents, you'll also have a Release Control talent, which is how you return to your original body. You will be offered the choice to release or destroy your puppeted body:
    • Releasing the puppeted creature will (if I've done this right) restore it to its original hostility — although fire golems are friendly, so it'll basically net you a pet. :wink:
    • Destroying the puppeted creature might seem like an easy way to take out tough opponents, but higher-level targets have a greater chance of resisting, and uniques are immune. Also, you get no XP for the kill.
We also have a few unrelated features:
  • Give the Minas Anor Library quest the option to come back for your quest reward later, as we do with the Lothlorien fireproofing quest.
  • Implement light absorption junkarts. And AFAICT that was the last unimplemented junkart power.
  • How on earth did I not have shortcut keys on the use-item dialog, after having gone to the effort of writing an addon to add them to T4? :oops: :wink:
  • Not a visible feature, but I've done some internal structural rearrangement in an attempt to prevent the kind of persistent object-related bugs that happen when a method defined in the object template has a bug, like the potion-shattering problem that Thorondor kept running into even after it was officially fixed. In the new system, any object method that's even remotely complicated is defined in a separate global table and called from stub methods in the object template — which means that if we fix a bug in the external method, all current objects in existing games, in the player inventory or in stores, will effectively get the fix retroactively. :twisted:
  • We now implement the NPC Teleport To spell. ([Scorpion voice:] "Get over here!" :twisted: ) And unlike original T2, this should also work for one NPC against another NPC.
And of course, an embarrassingly large number of bugfixes:
  • I don't think I was doing reflection quite right. The reflected bolt is supposed to hit a location within radius 1 of the source (I think I was centering on target :oops: ) in line of sight of the target, and reflection isn't supposed to happen if source and target are adjacent (presumably so that the ricochet doesn't accidentally hit the target).
  • I think I've finally figured out why we kept getting duplicate artifacts: the game doesn't register an artifact as created until it's officially "added" to the zone you're in, and in most of the places where we were creating objects, we weren't doing that. :oops: I think I've caught everywhere I need to patch that up.
  • Small fix to a few object types that weren't properly handling the "don't show mods" flag to :getName(). So, for instance, in the list of princess quest rewards, a Mace will show up as "Mace" instead of "Mace (2d4)", as intended, but Arrows were showing up as "Arrows (1d4)" instead of "Arrows".
  • The Rangers' Guild in Lothlorien and Minas Anor and the Golden Flower in Gondolin were screwing up trying to find arrows they could enchant for you. As a small bonus, we extend the enchant-arrows functionality slightly to cover arrows in both your quiver and your inventory at once (all the other bow/weapon/armor enchanting in stores will only enchant what you're currently wielding/wearing, as per baseline T2 behavior).
  • Alchemists' Detatch Rod Tip power apparently wasn't cleaning up sufficiently behind itself; I think you would still have been able to use the rod afterward as though the tip were still attached (that or it would have choked trying…).
  • By executive decree, :wink: I'm declaring that rod tips and rods with attached rod tips will describe their activation when they're just ID'd; everything else now requires a full *ID*.
  • Traps of Silent Switching were something of a mess. They seem to be working now. We Apologize for the Inconvenience.™ :twisted:
  • And speaking of traps, apparently I implemented vault generation before I had implemented traps, because there were several notes in the vault generation code to the effect of "TODO place trap here". You are checking for traps before entering vaults, yes? :twisted:
  • Assorted fixes to the Beastmaster Shanty's monster research option.
  • Caught a few more object activations that weren't defining damage types properly, notably Potions of Blindness, Booze and Poison.
  • Spells whose school skills are made accessible by Sorcery are supposed to be uncastable while blind or confused, unless the spell is specifically flagged otherwise. Some spells, however, have multiple school skills (Thunderstorm, for instance, is Air/Nature), and I was screwing up the check in that case. :oops:
  • T2 requires both rod and rod tip to be ID'd before attaching the one to the other; we were covering the latter, but not the former.
  • Turns out we need to be giving the AI quite a bit more help in the talent definition than we have been so far — notably, a .target() method to tell the AI how to choose a target. Honestly, I'm surprised this was actually working. [In my defense, the NPC talents code is some of the oldest in the module… :oops: ] I'm not entirely sure I'm getting this right, so be sure to report any unusual behavior.
  • Temporary effects weren't being handled for NPCs quite as well as I'd hoped. In particular, I'm not sure the NPC spell Haste Self would actually have had any effect. On the other hand, I'm worried that other temporary effects might be a bit too player-specific in their implementations (although I have mostly convinced myself that most of those come from using objects or talents, which you can't do while puppeting). Basically, as above, let me know if anything looks weird. :oops: :wink:
  • Small tweak to make sure Smeagol's Ring of Invisibility doesn't get promoted to a randart or an artifact. :wink:
I've probably missed some reported bugs in the above; We Apologize for the Inconvenience.™ :oops: (Just report them again. :wink: ) Known bugs that are still under investigation include:
  • Artifacts appearing multiple times (which we hope we've fixed with this release).
  • Randarts reporting *ID*'d info when just ID'd? Maybe some sloppiness in Object:getDesc(). (Think we've got this one too.)
  • Ring of Stupidity appearing in store stock.
Now, this new release has some nasty and messy stuff going under the hood, so I've almost certainly 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:). And since this is a minor point release instead of a bugfix release, there's always the possibility that some bugfixes or game behavior changes that were applied in one of the release branches failed to get merged back to trunk. 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.8.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…).
  • Gervais Tiles for ToME Classic (current release 1.0.1): Repurposes David Gervais' TomeTik tiles (reused here pursuant to the Creative Commons CC-BY-3.0 license) for use with our T2 module.
And with all that off the table, I have no obvious next projects (although I strongly suspect most of my near-term work will be fixing all the bugs I just introduced and filling in all the parts of the new features that I missed… :oops: ) Any requests?
"Blessed are the yeeks, for they shall inherit Arda..."

Post Reply