Pyrdacor / Ambermoon.net

Ambermoon rewrite in C#
GNU General Public License v3.0
416 stars 20 forks source link

[Wanted] Original game testers #51

Closed Pyrdacor closed 3 years ago

Pyrdacor commented 3 years ago

I need a bunch of information from the original game and I don't have the time for it. So maybe you guys could help me with some things:

I will add some points here from time to time. Thanks for your support.

Thallyrion commented 3 years ago

-There is a flag which is used on the Guard Demon and all kinds of Gargoyles. Maybe it's some kind of immunity. My guess would be either the spell "Monster knowledge" or "Show monster LP". Could someone try these spells on Guard Demon and Gargoyle and check if the spells are possible to cast, are always reflected and/or have no effect if succeeded. (In the unfixed versions this flag is also used for Reg in the orc caves so you may test on him as well).

-There is a flag for almost all the undead monsters so I guess it means "Anti-undead spells will work on them". But the zombie master does not have this flag. So could you try to use spells like "Destroy Undead" on a zombie master and tell me if it works.

The zombie master of course does not have this flag. He is Human and not undead.

-What effects do the barrels in Spannenberg have if you touch them?

The Barrels give the "Poisoned" status

-How much SP and SLP is needed for the spell "Show monster LP"?

its 15SP and 5SLP

Pyrdacor commented 3 years ago

Thanks. Yeah true the zombie master is the necromancer. Makes sense.

Thanks for your help. Battle implementation makes progress. :)

Pyrdacor commented 3 years ago

About the guard demon thing. He is immune to all kind of magic then. Would be interesting if gargoyles have some spell immunity too or Reg in normal game version. This way I could distinguish each single spell immunity flag. Luminor has the flag too.

Pyrdacor commented 3 years ago

There is a flag which is set for all spiders and lizards except for Gigantula. If I remember correctly those monsters are the only ones which can move more than 1 tile per battle round. Can anybody confirm that?

Thallyrion commented 3 years ago

here is a flag which is set for all spiders and lizards except for Gigantula. If I remember correctly those monsters are the only ones which can move more than 1 tile per battle round. Can anybody confirm that?

That is true. With Speed Attribute 80 or above you can move two squares. Same applies for monsters.

In my remembrence Luminor should be immune to fire spells. I will test that when i have a bit more time, as i need to play to that point.

Pyrdacor commented 3 years ago

While you're at it maybe you can check if the following monsters are immune to any spell:

Quick testing should be easier with the cheat characters and items. You can directly fly with the eagle to Luminor's tower then.

But thanks for your research so far. It's very helpful. 👍🏻

Pyrdacor commented 3 years ago

Is it possible to cast targeted holy spells on non-undead monsters? Or is it possible to hit one by a holy spell which affects a row or all?

If so is the spell performed on that monster and either reflected, without effect or denied by a message?

Pyrdacor commented 3 years ago

Is the following true?

a1exh commented 3 years ago

In the original Lionheart story Valdyn's beloved Ilene was turned to stone (petrify). If you finish the game having found an amulet in a hidden level you get an alternate ending which heals her. In Ambermoon Valdyn has this amulet. It IS this item which gives the character immunity to petrify.

Pyrdacor commented 3 years ago

This was also my thought. There is a value inside the character data just next to the current conditions value. This value seems to be bit flags too. This value is 0xffff (all 16 bits set) for all monsters, NPCs and party members (start value). Except for Selena, Sabine, Valdyn and Gryban. My guess is that this value is immunity to several conditions if it is not 0xffff. Valdyn's bits are set in a way that he is either immune to Petrify or immune to most conditions except for Petrify. The former one makes more sense.

If someone has time to test, it would be awesome if you could transfer Valdyns amulet to the main character and equip it (hopefully possible) and send me a savegame of it (party_char.amb is enough). Then I can check if my guess was right.

If only Valdyn can equip the amulet, just unequip it and send me the savegame.

a1exh commented 3 years ago

I use the online Ambermoon save-game editor to check and the Amulet has "Healing Property" "STEIN ZU FLESH" which I think is stone-to-flesh.

http://slothsoft.net/Ambermoon/Thalion-v1.05-DE/SaveEditor/

Pyrdacor commented 3 years ago

Unfortunately the savegame editor hasn't decoded all values as well. In fact I decoded more and have all the values the savegame editor knows. So the editor will not be much of help here.

a1exh commented 3 years ago

I added Valdyn to my party save (manually) and transferred his amulet to the lead using Ambermoon v1.07

http://thalion.atari.org/Save.01.zip

a1exh commented 3 years ago

Unfortunately I don't have the time to get to Luminor's Tower nor a save with Valdyn in my party to try to do this all within the game.

Pyrdacor commented 3 years ago

Did the main char equip the amulet or only has it in his inventory?

a1exh commented 3 years ago

Just in the inventory. Here is another save with it equipped.

http://thalion.atari.org/Save.02.zip

a1exh commented 3 years ago

It's just in Valdyn's inventory when you find him IIRC. Not equipped.

a1exh commented 3 years ago

I noticed that attacks from Orcs against Valdyn and report "Orc cannot penetrate the Magical Aura" I don't know if this is relevant or a side effect of me cheating by manually adding Valdyn to my party.

Pyrdacor commented 3 years ago

Thanks for testing Alex. The penetration thing is caused by the magic defense of the armor. Each equipment has a magic attack and defense level. If the defense level of any equipment is higher than the weapon attack level of the monster, it can't penetrate the armor. The same is true when attacking a monster with higher defense level than your own attack level. In that case you can't penetrate the armor of the monster. Better weapons will help then.

Pyrdacor commented 3 years ago

Alex could you create a savegame with a snake helmet in the inventory of the main char? Best would be in first inventory slot. But then start game and move the helmet to another char and back to main char slot 1. Then save and send me the savegame.

Hope I don't bother you too much with it. Would be great if you could help when you got the time for it. 🙂

Pyrdacor commented 3 years ago

FYI: Your efforts pay off. The decoding of item and character data comes closer and closer to 100% with each bit of testing. Thanks for that.

a1exh commented 3 years ago

I'm sure you already know this but the Schlangenhelm / Snake Helmet is the only cursed item in the game. It's behaviour is unusual to say the least, not sure if it is by design or a bug in the game. Once it is equipped it cannot easily be removed. The "remove cursed item" scroll/spell doesn't work as expected reportedly randomly destroying items and changing character stats. You can visit a healer and they can remove the Snake Helmet but the stats of the character who wore it never return to normal.

Pyrdacor commented 3 years ago

I managed to check for myself. Yeah I want to dig into that cursed state. A cursed item can't be removed from the wearer until the curse is broken and it will reduce the values instead of increasing them. But I thought removing the curse would add the values then. I guess this needs testing. Maybe destroying the cursed item was intended. But permanent value decrease sounds rather hard.

a1exh commented 3 years ago

It ruins the game if you equip this item in the Amiga version.

Thallyrion commented 3 years ago

Is the following true?

  • Valdyn is immune to petrify
  • Selena is immune to poison and crazy
  • Sabine is immune to poison, paralyze and drugs

Sabine and Selena are not immune to poison. See Screenshot. Pond Lizard has no spell immunities. (Tested every Spell) Tested Zombies - no immunities sabine poison

Can anyone supply a Savegame on the wood moon?

a1exh commented 3 years ago

A Thalion fan Karol Kliestenec created an archive with 100 save games throughout the game during a play-through last year. It is probable that these saves are all before the Forest Moon. But maybe they will help.

http://thalion.atari.org/Saves.zip

Karol-13 commented 3 years ago

Thank you Alex, Correct, I haven't finished the game (well I did before, but not in a documented way by backing up saves) Yet I can play/test/continue where I stopped lastly. Or by any way possible.

Pyrdacor commented 3 years ago

I had the time to test myself today. Tested on forest moon and tried to petrify Valdyn but the curse wesps didn't cast it in endless tries. :( But if Sabine and Selena are not immune to poison it is not likely that Valdyn is immune to petrify. I also observed Alex' savegame where the main char had his amulet equipped. The value I assumed to be the immunity flag did not change for the main char nor for Valdyn. So it is something different.

Can you think of anything that is unique to Selena, Sabine, Valdyn and Gryban? Those 4 are the only characters in game with a value other than 0xffff. At least on game start (or when they join the party).

Pyrdacor commented 3 years ago

Ok a quick update so you don't have to read all comments.

Karol-13 commented 3 years ago

Hi,

Despite the resistances and immunities are encoded, there might be a way to understand it properly. I am just updating Amiga Forever and will look into it.

On Thu, Oct 29, 2020 at 5:26 PM Pyrdacor notifications@github.com wrote:

Ok a quick update so you don't have to read all comments.

  • There is a value which is equal for all game characters (including NPCs and monsters) but has a different value for Selena, Sabine, Valdyn and Gryban. What could it be?
  • There is a value which is only set for the guard demon. What can be cast or done to him and what not (spells, damage, area spells, etc).
  • There is a value which is same for all monsters (0xffff), and same for all NPCs (0). Thalion, Chris and Gryban have the same value as monsters, the other party members have the same as NPCs. The NPC Dönner has a very special value of 7. What could it be? 0xffff looks like 16 set bits and 0 like 16 unset bits. 7 would be 3 bits set and 13 unset. But could also be a number and 0xffff and 0 both mean "unused". What is special about the NPC Dönner?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Pyrdacor/Ambermoon.net/issues/51#issuecomment-718868522, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARR7CA7WR22RZNOQKKD7Z23SNGJU7ANCNFSM4S4NKPRQ .

Karol-13 commented 3 years ago

Hi,

in memory editor I can identify HP, SP, stats and skill and some more obvious char stats, but immunities are not so obvious, it seems. I remember I also was able to track conditions... Surely the immunities are there too in one way or another. Let me look at it tomorrow more thoroughly.

attached is rough comparison between Valdyn and Nelvin, not so helpful as I hoped it to be, and I plan to document the values and what values remain will get narrowed to the immunities hopefully. Testing em out will be the key. As these are not shown in the char charter of the game.

On Thu, Oct 29, 2020 at 7:41 PM Karol Kliestenec karol13@gmail.com wrote:

Hi,

Despite the resistances and immunities are encoded, there might be a way to understand it properly. I am just updating Amiga Forever and will look into it.

On Thu, Oct 29, 2020 at 5:26 PM Pyrdacor notifications@github.com wrote:

Ok a quick update so you don't have to read all comments.

  • There is a value which is equal for all game characters (including NPCs and monsters) but has a different value for Selena, Sabine, Valdyn and Gryban. What could it be?
  • There is a value which is only set for the guard demon. What can be cast or done to him and what not (spells, damage, area spells, etc).
  • There is a value which is same for all monsters (0xffff), and same for all NPCs (0). Thalion, Chris and Gryban have the same value as monsters, the other party members have the same as NPCs. The NPC Dönner has a very special value of 7. What could it be? 0xffff looks like 16 set bits and 0 like 16 unset bits. 7 would be 3 bits set and 13 unset. But could also be a number and 0xffff and 0 both mean "unused". What is special about the NPC Dönner?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Pyrdacor/Ambermoon.net/issues/51#issuecomment-718868522, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARR7CA7WR22RZNOQKKD7Z23SNGJU7ANCNFSM4S4NKPRQ .

Pyrdacor commented 3 years ago

@Karol-13 In case you don't know yet. Here are most of character values decoded and documented. The ones marked as unknown is what I'm after: https://github.com/Pyrdacor/Ambermoon/blob/master/FileSpecs/Characters.md

Pyrdacor commented 3 years ago

I could create a small tool to edit values of monsters, NPCs and party members. But to save time I would create it as a command line tool. This way we could test some values which has for example the guard demon on small spiders etc.

Thallyrion commented 3 years ago

I use this to quickly edit my testsaves

http://slothsoft.net/Ambermoon/Thalion-v1.05-DE/SaveEditor/

but as i understand your tool would be for the values that are not visible so i guess it would be quite usefull as you would not need to search for a specific monster.

Pyrdacor commented 3 years ago

Yes it should allow to change the values we don't know yet. I know the savegame editor and I also used some information from there. But as I said there is nothing decoded what we don't know yet already. So it isn't that useful.

I guess I will create a small tool where you can change the values of spiders so you can test all values on them in grandfather's cellar.

Pyrdacor commented 3 years ago

Ok I added a "monster value changer". It can:

The tool already paid off. I changed the byte at offset 0x10 for the pond lizard to that of the guard demon and tada it was the spell type immunity flags. I updated the character data sheet at https://github.com/Pyrdacor/Ambermoon/blob/master/FileSpecs/Characters.md and will do some more testings.

You can find the tool here (inside the zip file): https://github.com/Pyrdacor/Ambermoon/releases/download/v1.0.53/AmbermoonTools-Windows.zip

Instructions:

For example to change the pond lizards spell immunity to "immune to destruction spells only" you can do: MonsterValueChanger.exe 1 0x10 1 0x08

The first 1 is the monster id of the pond lizard. The 0x10 is the data offset to the spell immunity flags. The second 1 is the size of the value to change (1 byte). And 0x08 is the flag for destruction spell type.

You can list all monsters with their IDs with MonsterValueChanger.exe --list.

The tool will create a backup of your "Monster_char_data.amb" but you might want to back it up yourself beforehand for safety.

Karol-13 commented 3 years ago

Great job! Awesome :) As for the 0x001C value, it might be 2 byte value, but to me it seems more like two 1 byte values. The numbers there are either 255 (FF) or 0~99 - which seems like resistance. As these values are two, it could be : Poison | Disease resistance respectively? [image: image.png] not sure why the values are sometimes HEX and sometimes DEC (so I added extra bytes, where is shown also food - which can possibly tell us which type is in use 10 vs 0A..) My main char has FF FF (no resistance?) Egil has 33 | 99 Nelvin has 35 | 33 Valdyn has 36 | 00 Targor has 51 | 32 (not very round numbers - not sure if these are also impacted..) Leonaria has 34 | 40 Sandra FF | FF Clementine FF | FF

Totally wild guess (as the values are not very 'round', might these change with level?)

This logic (one byte for one resistance) could be different from the spell spell resistance, as poison and disease are only two and hence calling out the 'type' would be unnecessary?

?

On Fri, Oct 30, 2020 at 10:54 AM Pyrdacor notifications@github.com wrote:

Ok I added a "monster value changer". It can:

  • List all monsters with Id and Name (german umlauts are displayed badly but you can just use the ID)
  • Show a specific value for a monster given by a data offset and size in bytes
  • Change a value of the monster at a given data offset and size in bytes

The tool already paid off. I changed the byte at offset 0x10 for the pond lizard to that of the guard demon and tada it was the spell type immunity flags. I added the character data sheet at https://github.com/Pyrdacor/Ambermoon/blob/master/FileSpecs/Characters.md and will do some more testings.

You can find the tool here (inside the zip file): https://github.com/Pyrdacor/Ambermoon/releases/download/v1.0.53/AmbermoonTools-Windows.zip

Instructions:

  • Copy the exe-file next to your game data (e.g. in the Amberfiles folder of an WinUAE installation).
  • Run the CMD, navigate to that folder and run "MonsterValueChanger.exe"
  • Then you will see the usage of the tool with examples

For example to change the pond lizards spell immunity to "immune to destruction spells only" you can do: MonsterValueChanger.exe 1 0x10 1 0x08

The first 1 is the monster id of the pond lizard. The 0x10 is the data offset to the spell immunity flags. The second 1 is the size of the value to change (1 byte). And 0x08 is the flag for destruction spell type.

You can list all monsters with their IDs with MonsterValueChanger.exe --list.

The tool will create a backup of your "Monster_char_data.amb" but you might want to back it up yourself beforehand for safety.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Pyrdacor/Ambermoon.net/issues/51#issuecomment-719456129, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARR7CA6WG43YH5NTSSOY7Y3SNKEN5ANCNFSM4S4NKPRQ .

Karol-13 commented 3 years ago

amber2

Pyrdacor commented 3 years ago

Interesting. The initial savegame has only values beside 0xffff for Selena, Sabine, Valdyn and Gryban so I thought it would be special to them. But now I see that other party members have different numbers while playing.

I guess this value is ony used for party members.

I still think this are 16 bits (or at least 8 bits + a value) which active something (like immunity). Can you try to equip/unequip or move some equipent items out of inventory and re-check this value?

All your mentioned party members have bit 5 of first byte set (which is decimal 32).

Thallyrion commented 3 years ago

Those Bugs have been fixed with this patch already

http://slothsoft.net/Ambermoon/Downloads/

Pyrdacor commented 3 years ago

I found out some meaning of byte 0x13. It really activates some immunities (see here: https://github.com/Pyrdacor/Ambermoon/blob/master/FileSpecs/Enumerations/ElementsAndImmunities.md).

Tested all kind of spells with each bit set.

Pyrdacor commented 3 years ago

@a1exh Did you delete your latest comments? I can't see them anymore.

a1exh commented 3 years ago

Yes. I just thought it was interesting how items being worn affected character abilities and how several characters were wrong as a result but as @Thallyrion points out, bugs in Party_char.amb have long since been patched independently by several different people including him.

Pyrdacor commented 3 years ago

I still think it's a valuable information. When others try to decode some values and work with an unpachted version it would be good to know that it was not intended this way. Happened to me as well when I decoded monster flags and Reg had strange values. Then found out that this is a bug and Reg is not even marked as a boss.

a1exh commented 3 years ago

The information will always be available here

https://docs.google.com/spreadsheets/d/1as5W8gibm-MTb9VEqpkfgtwWviqjQx96A3NmcvzX98A/edit?usp=sharing

Some of the information is incomplete and so is on the "Unconfirmed, Unfixed" sheet but Meynaf and @Thallyrion and others have created fixes in the past. It's just a matter of updating the vague details with technical diff information

@Pyrdacor anything you find in the original files that you feel could be a data bug please make a note and if possible I'll back-port fixes to the Amiga version

Pyrdacor commented 3 years ago

@a1exh Sure but the Reg bug was already found before. If you want I could create a german and english version and fix most of the stuff. I think I understand data files and executable data well enough now to fix most things and also can compress the data back to original formats.

Pyrdacor commented 3 years ago

Is your list only for bugs of the english version? I know that there is 1 lyramion world map (ocean) which has wrong flags so there is no daylight in this area. Can find out which one but I think this is also a known bug.

And there is a bug regarding the conversation with Sandra. I think you get the wrong key if you ask her the wrong keyword (daughter or Sabine).

a1exh commented 3 years ago

Yes, but I consider the English V1.07 bugs to be a superset of the Gernan ones. V1.07 has all the German bugs and more. By all means help us back port fixes to the data files but technical info on each bug would be helpful.

Pyrdacor commented 3 years ago

Ok how can we do this? I have the tools and data knowledge. I looked through the unfixed stuff. Some issues would require amiga specific programming. I can't help with that. But data changes should be no problem. In think about half the unfixed bugs are data related.

I would say we use a game version where most of the stuff is fixed and then add the other fixes and I create the compressed data files.

Then someone might create amiga disk images from that, right?

Pyrdacor commented 3 years ago

Let's discuss the patch stuff here from now on: #52