Decode reward keys and use mapping files
Add decoding for Monopoly reward keys and switch reward metadata to be looked up by decoded id. Implement decode_reward_key() and infer_reward_type(); replace the previous raw-key KNOWN_REWARDS approach with REWARDS_BY_ID built from mappings/*.json. Add mappings/items.json and expand mappings/arcs.json. Update decoder to produce reward_id, use REWARDS_BY_ID, and change guess_quantity() to accept reward_id. Refactor pool_mappings to reuse the new mapping loader, and update tests and docs to validate mapping files and document the reward key encoding/behavior.
This commit is contained in:
parent
401df44ecd
commit
354b0e9232
8 changed files with 197 additions and 113 deletions
|
|
@ -12,6 +12,6 @@ Known limitations:
|
|||
- Live capture currently uses Windows raw sockets and requires administrator permission.
|
||||
- The file adapter reads mitmproxy `.flows` captures for research and testing.
|
||||
- The more stable and reliable Npcap/libpcap capture is not implemented yet.
|
||||
- Reward mappings are research mappings and should be expanded as more samples are decoded.
|
||||
- Reward keys decode to their reward id string, so unknown rewards still export a usable `reward_id`; display names/ranks come from the mapping JSON files and should be expanded as new rewards appear.
|
||||
|
||||
Privacy guardrail: raw packet data must not be included in sanitized exports.
|
||||
|
|
|
|||
|
|
@ -22,7 +22,15 @@ Decoded fields:
|
|||
- `source_flag = -4` means Chase Reward
|
||||
- Timestamp is an 8-byte little-endian value
|
||||
- `unix_seconds = little_endian_u64(timestamp_raw) / 40000000 - 62135596800`
|
||||
- Rewards are identified by stable binary keys
|
||||
- Reward keys are the reward id string encoded one character per byte as
|
||||
`ASCII * 4` with carry chaining into the next byte. The final byte is the
|
||||
pending carry (`00` or `01`) acting as a terminator, or is omitted.
|
||||
Examples: `98bdc9ad7dd9a5b99501` decodes to `fork_vine`,
|
||||
`10a58d9539bdc9b585b101` to `DiceNormal`, `c4c0cccc00` to character id `1033`.
|
||||
Arc/Gashapon history uses the same scheme at `ASCII * 2`.
|
||||
- The decoder decodes the key to its id string and looks up display metadata
|
||||
in `mappings/arcs.json`, `mappings/characters.json`, and `mappings/items.json`.
|
||||
Unknown rewards still export their decoded id with empty name/rank.
|
||||
|
||||
Page and row numbers are research metadata only. They must not be used for permanent dedupe because they shift when new history appears.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue