acolyte wrote: ↑Sun Nov 03, 2019 10:15 pm
Here's some parsed stuff! I see there's some issues when I was parsing, so there are some stuff missing. Feel free to check the line count, edit the missing info, and stuff. Stuff that's missing description should be 'N/A'. Stuff that's missing entries, won't be there. Will need to cross check this with the manual list later if all the entries are there.
[Link]
[Link]
[Link]
And, the spreadsheets..
[Link]
[Link]
The <CLGR><CLNR> is 'highlight green' in the game
Awesome, thanks. I actually modified my container code to go through all the item effects/traits too (effect 0, 1, 2, 3 on item ID 0, then 4, 5, 6, 7 on 1, and so on) to try and save the time manually digging through. After all, you could just look at the highlighted item code if you had a container full to find the ID for anything.
Buuuuuuut scrolling past the first dozen or so items crashed the game, and most of the traits were showing up as "???" anyway. Don't think the game liked me arbitrarily assigning effects and traits to items without any regard for if they were a dummy item, key item, or what, heh. So no go on that. I'll try fiddling with it a bit to skip key items and dummy items then see if it stops freaking out.
Edit: Well, got it working by skipping dummy items, mostly. The traits still show up as "????" if undiscovered, I don't know how to get around that. Effects work though! Script below is designed to modify 2000 items in your container. Once it hits the last valid item ID in the list it starts over at clear water again, but continues with new effect/trait id's up to 2000 (I don't think there are even 2000, so I haven't made it do more, tell me if there are).
local al = getAddressList()
local base = al.createMemoryRecord()
base.Description = "Container Codes (first 446 slots)"
base.IsGroupHeader = true
base.options = "[moActivateChildrenAsWell, moDeactivateChildrenAsWell, moRecursiveSetValue, moAllowManualCollapseAndExpand, moManualExpandCollapse]"
local baseID = al.createMemoryRecord()
baseID.Description = "Container ID Codes"
baseID.IsGroupHeader = true
baseID.options = "[moActivateChildrenAsWell, moDeactivateChildrenAsWell, moRecursiveSetValue, moAllowManualCollapseAndExpand, moManualExpandCollapse]"
baseID.appendToEntry(base)
local baseQ = al.createMemoryRecord()
baseQ.Description = "Container Quality Codes"
baseQ.IsGroupHeader = true
baseQ.options = "[moActivateChildrenAsWell, moDeactivateChildrenAsWell, moRecursiveSetValue, moAllowManualCollapseAndExpand, moManualExpandCollapse]"
baseQ.appendToEntry(base)
local baseE = al.createMemoryRecord()
baseE.Description = "Container Effect Codes"
baseE.IsGroupHeader = true
baseE.options = "[moActivateChildrenAsWell, moDeactivateChildrenAsWell, moRecursiveSetValue, moAllowManualCollapseAndExpand, moManualExpandCollapse]"
baseE.appendToEntry(base)
local baseT = al.createMemoryRecord()
baseT.Description = "Container Trait Codes"
baseT.IsGroupHeader = true
baseT.options = "[moActivateChildrenAsWell, moDeactivateChildrenAsWell, moRecursiveSetValue, moAllowManualCollapseAndExpand, moManualExpandCollapse]"
baseT.appendToEntry(base)
local addr = "Atelier_Ryza.exe+0139AB08"
local IDValue = 0
local E1Value = 0
local E2Value = 1
local E3Value = 2
local E4Value = 3
local T1Value = 0
local T2Value = 1
local T3Value = 2
local offsetID = 0x98c
local offsetQuality = 0x98e
local offsetE1 = 0x998
local offsetE2 = 0x99a
local offsetE3 = 0x99c
local offsetE4 = 0x99e
local offsetT1 = 0x9a0
local offsetT2 = 0x9a8
local offsetT3 = 0x9b0
local slotnum = 1
for i = 1, 2000 do
local recID = al.createMemoryRecord()
local recQuality = al.createMemoryRecord()
local recE1 = al.createMemoryRecord()
local recE2 = al.createMemoryRecord()
local recE3 = al.createMemoryRecord()
local recE4 = al.createMemoryRecord()
local recT1 = al.createMemoryRecord()
local recT2 = al.createMemoryRecord()
local recT3 = al.createMemoryRecord()
local headertxt = string.format("Item ID Slot %d", slotnum)
local headertxt2 = string.format("Item Quality Slot %d", slotnum)
local etxt1 = string.format("Item Slot %d Effect 1", slotnum)
local etxt2 = string.format("Item Slot %d Effect 2", slotnum)
local etxt3 = string.format("Item Slot %d Effect 3", slotnum)
local etxt4 = string.format("Item Slot %d Effect 4", slotnum)
local ttxt1 = string.format("Item Slot %d Trait 1", slotnum)
local ttxt2 = string.format("Item Slot %d Trait 2", slotnum)
local ttxt3 = string.format("Item Slot %d Trait 3", slotnum)
recID.Description = headertxt
recID.Address = addr
recID.OffsetCount = 1
recID.Offset[0] = offsetID
recID.appendToEntry(baseID)
recID.type = vtWord
recID.Value = IDValue
recQuality.Description = headertxt2
recQuality.Address = addr
recQuality.OffsetCount = 1
recQuality.Offset[0] = offsetQuality
recQuality.appendToEntry(baseQ)
recQuality.type = vtWord
recQuality.Value = 999
recE1.Description = etxt1
recE1.Address = addr
recE1.OffsetCount = 1
recE1.Offset[0] = offsetE1
recE1.appendToEntry(baseE)
recE1.type = vtWord
recE1.Value = E1Value
recE2.Description = etxt2
recE2.Address = addr
recE2.OffsetCount = 1
recE2.Offset[0] = offsetE2
recE2.appendToEntry(baseE)
recE2.type = vtWord
recE2.Value = E2Value
recE3.Description = etxt3
recE3.Address = addr
recE3.OffsetCount = 1
recE3.Offset[0] = offsetE3
recE3.appendToEntry(baseE)
recE3.type = vtWord
recE3.Value = E3Value
recE4.Description = etxt4
recE4.Address = addr
recE4.OffsetCount = 1
recE4.Offset[0] = offsetE4
recE4.appendToEntry(baseE)
recE4.type = vtWord
recE4.Value = E4Value
recT1.Description = ttxt1
recT1.Address = addr
recT1.OffsetCount = 1
recT1.Offset[0] = offsetT1
recT1.appendToEntry(baseT)
recT1.type = vtWord
recT1.Value = T1Value
recT2.Description = ttxt2
recT2.Address = addr
recT2.OffsetCount = 1
recT2.Offset[0] = offsetT2
recT2.appendToEntry(baseT)
recT2.type = vtWord
recT2.Value = T2Value
recT3.Description = ttxt3
recT3.Address = addr
recT3.OffsetCount = 1
recT3.Offset[0] = offsetT3
recT3.appendToEntry(baseT)
recT3.type = vtWord
recT3.Value = T3Value
E1Value = E1Value + 4
E2Value = E2Value + 4
E3Value = E3Value + 4
E4Value = E4Value + 4
T1Value = T1Value + 3
T2Value = T2Value + 3
T3Value = T3Value + 3
IDValue = IDValue + 1
if IDValue == 208 then
IDValue = 237
elseif IDValue == 257 then
IDValue = 267
elseif IDValue == 280 then
IDValue = 289
elseif IDValue == 299 then
IDValue = 309
elseif IDValue == 324 then
IDValue = 329
elseif IDValue == 386 then
IDValue = 406
elseif IDValue == 436 then
IDValue = 456
elseif IDValue == 471 then
IDValue = 481
elseif IDValue == 493 then
IDValue = 503
elseif IDValue == 536 then
IDValue = 674
elseif IDValue == 677 then
IDValue = 678
elseif IDValue == 684 then
IDValue = 685
elseif IDValue == 691 then
IDValue = 692
elseif IDValue == 709 then
IDValue = 0
end
offsetE1 = offsetE1 + 0x42
offsetE2 = offsetE2 + 0x42
offsetE3 = offsetE3 + 0x42
offsetE4 = offsetE4 + 0x42
offsetT1 = offsetT1 + 0x42
offsetT2 = offsetT2 + 0x42
offsetT3 = offsetT3 + 0x42
offsetQuality = offsetQuality + 0x42
offsetID = offsetID + 0x42
slotnum = slotnum + 1
end
Only useful for manually verifying effects as is, but there it is.