Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gather vanilla items for testing #1094

Closed
7 of 8 tasks
AJenbo opened this issue Mar 3, 2021 · 88 comments
Closed
7 of 8 tasks

Gather vanilla items for testing #1094

AJenbo opened this issue Mar 3, 2021 · 88 comments
Labels
good first issue Good for newcomers help wanted Extra attention is needed savegame attached
Milestone

Comments

@AJenbo
Copy link
Member

AJenbo commented Mar 3, 2021

In order to fully test item generation, we need to find items with each of the possible properties. If you can help find some of these it would be very helpful. Preferably the items would be verified in the original before submitted so that we know that the regeneration code works identical to the original.

You can probably even use item trainers to generate the items, as long as you test that they work after starting a new game.

Items can either be submitted as save games or PkItemStruct values
https://github.com/diasurgical/devilutionX/blob/master/SourceT/pack_test.cpp#L111

We are currently missing the following:

  • Ring of Magma/Mystics
  • A spell book from the spawn version
  • A staff with spell charges from the spawn version
  • A healing potion from a barrel or chest in hellfire
  • A mana potion from a barrel or chest in hellfire
  • A healing potion from a barrel or chest in hellfire on first dungeon level
  • A mana potion from a barrel or chest in hellfire on first dungeon level
  • A town portal from a barrel or chest in hellfire (this never happens on the first dungeon level)
@AJenbo AJenbo added help wanted Extra attention is needed good first issue Good for newcomers labels Mar 3, 2021
@Grotto143
Copy link

Grotto143 commented Mar 8, 2021

...

@AJenbo
Copy link
Member Author

AJenbo commented Mar 8, 2021

@Grotto143 not sure what you wanted to say but you just quoted my original post?

@Tiddalick
Copy link

Can you explain what you mean by this?
"Preferably the items would be verified in the original before submitted so that we know that the regeneration code works identical to the original."

So essentially you want to verify that these attributes and items spawn?

@AJenbo
Copy link
Member Author

AJenbo commented Mar 13, 2021

yeah load the save in 1.09 and DevilutionX and create a new game to check that the items are spawned the same in both.

@AJenbo
Copy link
Member Author

AJenbo commented Mar 20, 2021

Just so I don't have to retype this every time I get new items to dump :D

    SDL_Log("	{ %d, %d, %d, %d, %d, %d, %d, %d, %d, %d }, // %s	{ \"%s\", %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d },",
	is->iSeed,
	is->iCreateInfo,
	is->idx,
	is->bId,
	is->bDur,
	is->bMDur,
	is->bCh,
	is->bMCh,
	is->wValue,
	is->dwBuff,
    id->_iIName,
    id->_iIName,
	id->_itype,
	id->_iClass,
	id->_iCurs,
	id->_iIvalue,
	id->_iMinDam,
	id->_iMaxDam,
	id->_iAC,
	id->_iFlags,
	id->_iMiscId,
	id->_iSpell,
	id->_iCharges,
	id->_iMaxCharges,
	id->_iDurability,
	id->_iMaxDur,
	id->_iPLDam,
	id->_iPLToHit,
	id->_iPLAC,
	id->_iPLStr,
	id->_iPLMag,
	id->_iPLDex,
	id->_iPLVit,
	id->_iPLFR,
	id->_iPLLR,
	id->_iPLMR,
	id->_iPLMana,
	id->_iPLHP,
	id->_iPLDamMod,
	id->_iPLGetHit,
	id->_iPLLight,
	id->_iSplLvlAdd,
	id->_iUid,
	id->_iFMinDam,
	id->_iFMaxDam,
	id->_iLMinDam,
	id->_iLMaxDam,
	id->_iPrePower,
	id->_iSufPower,
	id->_iMinStr,
	id->_iMinMag,
	id->_iMinDex,
    id->IDidx);
    ```

@ZXParagonXZ
Copy link

ZXParagonXZ commented Mar 20, 2021

Zip Files with images of the items. Each image is labeled. The save files are the same save file just at different points. ( which is why they are separate. )

The following covered are:

  • Warrior's
  • Doppelganger's
  • Item bought from Wirt
  • Item bought from Adria
  • Single Player Spellbook
  • Gladiator's Ring
  • Puncturing
  • Vampire's (separate zip)

Doppel, Warriors, Wirt, Adria, Book, Puncturing, Gladiator's,.zip
Vampire's.zip

All the above were tested on Vanilla Hellfire 1.01. The save files were tested as they are, and by starting a new game to confirm no item changes.

@ZXParagonXZ
Copy link

More Zip Files with images of the items. Each image is labeled. The save files in 2 of them are the same save file just at different points. The resist all is it's own character.

The following covered are:

  • Blood
  • Lightning
  • Haste
  • White
  • Of Lightning
  • Resist all ( a ring, a weapon, a helmet )

Haste, White, Of Lightning.zip
Lighting, Blood.zip
Resist All ( 3 items ).zip

All the above were tested on Vanilla Diablo 1.09. The save files were tested as they are, and by starting a new game to confirm no item changes.

@AJenbo
Copy link
Member Author

AJenbo commented Mar 21, 2021

Thanks, added the 12 new items to the tests: 4de1c05 Another 0,11% of of the game is not being tested 🎉

@ZXParagonXZ
Copy link

Even more Zip Files with images of the items stats included. Each image is labeled. All saves are the same character except for the Res Scroll.

The following covered are:

  • Res Scroll purchased from Peppin. (Multiplayer D 1.09)
  • Decay
  • Resist Fire
  • Butcher's Cleaver
  • Peril
  • Blocking
  • Jester's
  • Crystalline

Blocking, Jester's.zip
Butcher's Cleaver, Peril.zip
Crystalline.zip
Decay, Resist Fire.zip
Peppin Scroll of Res.zip

The Res Scroll was tested in Vanilla Diablo 1.09. The rest were tested on Vanilla Hellfire 1.01. The save files were tested as they are, and by starting a new game to confirm no item changes.

@AJenbo
Copy link
Member Author

AJenbo commented Mar 22, 2021

And additional 0,06% of the code is now tested :)

@Katana-Steel
Copy link

Katana-Steel commented Mar 30, 2021

my Save file with Ring of Truth and Empyrean Band
Ring.of.Truth.zip

Note: This save has not yet been verified on vanilla.

@AJenbo
Copy link
Member Author

AJenbo commented Apr 1, 2021

Gnat Sting: https://dl.dropboxusercontent.com/s/821cfrm1mtz8hyy/single_0.hsv but needs verification in vanilla Hellfire.

@Chance4us
Copy link
Contributor

Do you need also the following items?
gibbous_moon
red_armor_of_paralysis
Savegame:
gibbous_moon.zip

@AJenbo
Copy link
Member Author

AJenbo commented Apr 10, 2021

@Chance4us Yeah, the Red Armor of Paralysis would cover another test case. Have you verified these in Hellfire 1.01?

@Chance4us
Copy link
Contributor

If I load the savegame in vanilla-hellfire the items still are the same.
Is it correct that way?

@AJenbo
Copy link
Member Author

AJenbo commented Apr 10, 2021

Yes, could you also verify the two other submissions here?

Ring of Truth: https://github.com/diasurgical/devilutionX/files/6225765/Ring.of.Truth.zip

Gnat Sting: https://dl.dropboxusercontent.com/s/821cfrm1mtz8hyy/single_0.hsv

@Chance4us
Copy link
Contributor

Chance4us commented Apr 10, 2021

Ring of Truth and Gnat Sting are still the same, also if I start a new game with the same character.

@BartyMae
Copy link

I have found Naj's Light Plate, Eater of Souls, Blitzen, Gnat Sting, and Acolyte's Amulet in a DevilutionX Hellfire multiplayer game. Unfortunately, I accidentally sold the Blitzen, but it did generate in my game. I've also seen Plentiful and Bountiful for sale at Adria's, but I've never actually purchased any.

https://dl.dropboxusercontent.com/s/pn9rppnt9a410aa/multi_3.hsv

@Chance4us
Copy link
Contributor

Verified:

Useless/Bent/Weak - Bent
frailty/weakness - frailty

bent-frailty.zip

@Chance4us
Copy link
Contributor

Verified:

Deadly Hunter/Civerb's Cudgel - Civerb's Cudgel

civerb.zip

@Chance4us
Copy link
Contributor

Do you need some of the following?
oil of hardening
fine axe of might
vicious bow of plenty
red bow of quality
deadly club
plate of protection
ring of vulture

All items are verified.
single_0.hsv.zip

@AJenbo
Copy link
Member Author

AJenbo commented Apr 14, 2021

@Chance4us
Copy link
Contributor

@AJenbo In Windows 10 Virtualbox I was not able to load this multiplayer save.
So I'll do a Window 98 installation first. Then I will report as soon as possible.

@Chance4us
Copy link
Contributor

In linux-wine is stored a hrinfo_0.drv in C:/Windows for multiplayer if I create a multiplayer character.
So if I rename multi_3.hsv to hrinfo_0.drv and copy it to C:/Windows no character is recognized.
In Windows 10 I was not able to create a hellfire multiplayer character.
Unfortunately, my Windows 98 virtual machine does not work yet.

@qndel
Copy link
Member

qndel commented Apr 14, 2021

Order I dropped stuff in town (from left to right, starts near Gillian)
Tin
Brass/weakness
Useless
Frailty
Weak
Clumsy
The fool
Dull
Dyslexia
Vulnerable
Atrophy
Paralysis
Trouble
Fragility
Pain
Illness
Speed
Readiness
Corruption
Bountiful
Plentiful
Bent
Tears
single_1.zip

@AJenbo
Copy link
Member Author

AJenbo commented Apr 14, 2021

In linux-wine is stored a hrinfo_0.drv in C:/Windows for multiplayer if I create a multiplayer character.
So if I rename multi_3.hsv to hrinfo_0.drv and copy it to C:/Windows no character is recognized.
In Windows 10 I was not able to create a hellfire multiplayer character.
Unfortunately, my Windows 98 virtual machine does not work yet.

oh, multiplayer is not compatible because hellfre was locked to the computer and wasent official

@ChaosMarc
Copy link
Contributor

I would have liked a more precise explanation of the how, too. There are two possibilities. You need a char with all res negative (maybe by wearing multiple items with a single negative res) , or you need an item that has all 3 res negative which must not inevitably reduce the chars res to negative numbers but probably will. If it's the single item with all 3 res negative, I have no idea what it could be. I have checked. There is no unique wich reduces all 3 res (there are 3 rings that only reduce 2 and buff the third) and I couldnt find a suffix/affix that allows negative res for a magic item

@AJenbo
Copy link
Member Author

AJenbo commented Jun 3, 2021

If it's the single item with all 3 res negative

We are searching for indiviudal Items, not heros ;)

I have no idea what it could be. I have checked. There is no unique wich reduces all 3 res (there are 3 rings that only reduce 2 and buff the third) and I couldnt find a suffix/affix that allows negative res for a magic item

I can't easily aww from the code what item/suffix/affix it would be, just that there is an option for it.

It's apparently cursed, which might have been ovious from it having a negative effect:

	case IPL_ALLRES_CURSE:
		items[i]._iPLFR -= r;
		items[i]._iPLLR -= r;
		items[i]._iPLMR -= r;

The text would be: Resist All: -x%

It does look like this effect might not be applied to any item/suffix/affix, so it might be unused just like IPL_INFRAVISION.

@AJenbo
Copy link
Member Author

AJenbo commented Jun 3, 2021

@ChaosMarc you skipped the Oil of Mastery when taking screen shots :)

@AJenbo
Copy link
Member Author

AJenbo commented Jun 3, 2021

All 5 saves combined increased the coverage by 0.13% 🎉

With so many new items found I think it's time to update the list again :)

@AJenbo
Copy link
Member Author

AJenbo commented Jun 3, 2021

Alright went over the test coverage and it seams that we are now down to just 12 missing items fantastic work doing all this scavenging guys :)

@ChaosMarc
Copy link
Contributor

oil-of-mastery

  • the missing screenshot of oil of mastery

staffs.zip

  • A magical staff that retains the War part of the name
  • A Plentiful/Bountiful staff

mp-scroll-of-resurrect.zip

  • MP hero with A scroll of resurrection bought from the healer

@ChaosMarc
Copy link
Contributor

sp-potions-tp.zip

  • A healing potion from a barrel or chest in single player
  • A full healing potion from a SARCOPHAGUS in single player (does this count as a chest/barrel?)
  • A mana potion from a barrel or chest in single player
  • A full mana potion from a barrel or chest in single player
  • A town portal from a barrel or chest in single player

@ChaosMarc
Copy link
Contributor

mp-potions-tp.zip

  • A healing potion from a barrel or chest in multi player
  • A full healing potion from a barrel or chest in multi player
  • A mana potion from a barrel or chest in multi player
  • A rejuvenation potion from a barrel or chest in multi player (not asked for, but why not ^^)
  • A town portal from a barrel or chest in multi player

@ChaosMarc
Copy link
Contributor

spawn.zip

  • A spell book from the spawn version
  • A staff with spell charges from the spawn version

@ChaosMarc
Copy link
Contributor

would generating an item in devilutionX and starting a new game in vanilla be a sufficient check too? if that's the case we could create a "mod" where every monster just drops unique rings and find the missing one very quickly :D

@qndel
Copy link
Member

qndel commented Jun 5, 2021

would generating an item in devilutionX and starting a new game in vanilla be a sufficient check too? if that's the case we could create a "mod" where every monster just drops unique rings and find the missing one very quickly :D

its not that easy to do;p

@AJenbo
Copy link
Member Author

AJenbo commented Jun 5, 2021

would generating an item in devilutionX and starting a new game in vanilla be a sufficient check too? if that's the case we could create a "mod" where every monster just drops unique rings and find the missing one very quickly :D

yes that would be perfectly fine

@ChaosMarc
Copy link
Contributor

ChaosMarc commented Jun 5, 2021

Great. My "dropmod" is almost complete. No nodrop, no gold drop, every monster drops like a boss-monster. Currently I'm looking into forcing one item type.

edit: hm must have broken something. I just found a ring of mystics, but it morphed to a gladiators ring in vanilla... back to square one :D

@AJenbo
Copy link
Member Author

AJenbo commented Jun 5, 2021

spawn.zip

* A spell book from the spawn version

* A staff with spell charges from the spawn version

Oh boy, we are not handling this one correct...

image

@AJenbo
Copy link
Member Author

AJenbo commented Jun 5, 2021

Updated the list, turns out we needed items from hellfire and not multiplayer, my bad.

@AJenbo
Copy link
Member Author

AJenbo commented Jun 5, 2021

@qndel did you conclude that it is impossible to find Ring of Magma/Mystics in vanilla?

@ChaosMarc
Copy link
Contributor

not impossible to find, but always morphing on a new game :(

@AJenbo
Copy link
Member Author

AJenbo commented Jun 5, 2021

would be interesting to see if it's fixable to where a new game in devilutionx would maintain it.

@AJenbo
Copy link
Member Author

AJenbo commented Jun 6, 2021

Spawn comparability is now fixed. It and the other items tess another 0.11% of the game. Just 5 more hellfire items and I think we can close this issue :)

@qndel
Copy link
Member

qndel commented Jun 6, 2021

would be interesting to see if it's fixable to where a new game in devilutionx would maintain it.

It's definitely fixable but the problem is setting up a save to test it with. Ideally I'd need one with modified monster seeds so that the next 2 kills would drop some unique first on the list then one that's only findable after getting the first one. Then we could play with adding additional info to the items during the item generation process. I tried to produce such a save but ... it's tricky 😅

@ChaosMarc
Copy link
Contributor

this should conclude the search (minus the morphing rings):

hf-potions-tp-lvl2+3.zip

  • A healing potion from a barrel or chest in hellfire
  • A mana potion from a barrel or chest in hellfire
  • A town portal from a barrel or chest in hellfire (this never happens on the first dungeon level)

hf-potions-lvl1.zip

  • A healing potion from a barrel or chest in hellfire on first dungeon level
  • A mana potion from a barrel or chest in hellfire on first dungeon level

@AJenbo
Copy link
Member Author

AJenbo commented Jun 6, 2021

this should conclude the search (minus the morphing rings):

lets hope so, but the pods found on the first level has a 50% of being a regular pod so they might be duds :)

@ChaosMarc
Copy link
Contributor

both potions came from the same chest. is there any way to verify that they're of the sort you're looking for?

@AJenbo
Copy link
Member Author

AJenbo commented Jun 6, 2021

Only by running the tests and analyzing the results

@AJenbo
Copy link
Member Author

AJenbo commented Jun 19, 2021

this should conclude the search (minus the morphing rings):

Unfortunately both the healing potions turned out to be just random items, but the others where good 👍
And addition of 0.02% of the total code is now tested :D

@peter-lang
Copy link

I've created an issue, which might be related: #5420

@ChaosMarc
Copy link
Contributor

@AJenbo this reminded me, that there are still potions to be hunted :D If collected some for you:
potions1.zip: 2 life pots from the same chest on lvl1
potions2.zip: 1 life, 1 mana pot lying arount on lvl1
potions3.zip: 1 full life pot dropped by a monster on lvl1
potions4.zip: 1 mana pot dropped by a chest on lvl1
potions5.zip: 1 life pot dropped by a monster on lvl1
potions6.zip: 1 life pot lying arount on lvl1

@AJenbo AJenbo added this to the 1.5.0 milestone Apr 24, 2023
@AJenbo
Copy link
Member Author

AJenbo commented Apr 30, 2023

@ChaosMarc nice work, you managed to find 2 level 1 hellfire potions, and 1 from another one, so that coveres the missing potions :)

6e7ed13 gave us another 0.01% test coverage.

@AJenbo AJenbo closed this as completed Apr 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed savegame attached
Projects
None yet
Development

No branches or pull requests

10 participants