0002 - Mapping¶
Most treasure maps cannot be traded normally, like an item (except for any gilded scroll case). For the ones that can, please check Items. Instead, a user would have to open a map scroll, then invite whoever they would like to invite into the map, or if a user wants to join a map, then they would have to request an invite.
Map instances¶
GNAWEX must have a record of all treasure maps, which we may refer to as such. If a user opens it, then it's an instance of the treasure map, or a treasure map instance. The instance must contain all the relevant details needed to distinguish it from other instances.
Note
Ideally, GNAWEX must automatically verify if the map even exists, and if the user creating the listing for it truly is the current maptain. But this might not be possible because of the restrictions around MH's API. Up for discussion.
An instance's MH map ID must be unique. One can get their MH map ID under Active Maps -> Map they want to check -> Hunters -> Share. It looks something like this: https://www.mousehuntgame.com/tm.php?map_id=000000 wherein the sequence of 0s is the MH map ID.
So, an instance must have the ff details:
ID | Map Record ID | MH Map ID | Delisted |
---|---|---|---|
The GNAWEX instance ID | The ID of a GNAWEX map record | Map ID of the instance in MouseHunt | true | false |
Once delisted, they must not be able to reverse this action.
Restrictions¶
There are two types of maps: an event map, and a normal map. Since a user may have one active instance per type, the restriction follows as well. A user must only have at most two map instances, if one of it is a normal instance, and the other is an event instance. They must not be able to have more than one active normal instance, for example.
If the user wishes to create another instance, they must delist their active instance first.
Instance roles¶
In an instance, the maptain must specify what role(s) they would like to invite. The number of roles that they may invite depends on the number of available slots that the map has.
These roles that the maptain may look for have specific duties to fulfill (the who invites). Others may also look for maps that have these roles available for invite (the joiner). The roles are best described by Aardwolf's mapping 103 guide. In short: a user may invite in at least one role, or join as only one role.
These are the supported roles that may be invited to an instance:
Role name | Description | Permanent slot | Slots consumed | Keeps chest contents | Pays to current Maptain for slot |
---|---|---|---|---|---|
Maptain | Map captain. Buying this role means you're buying the entire map. | Yes | All | Yes | Yes |
Helper | Helps complete the map | Yes | 1 | Yes | No |
Sniper/Looter | Clears off mice/items from the treasure map. Does not include LM/LL. | No | None | No | No, gets paid by maptain. |
Leecher | Doesn't help with the map | Yes | 1 | Yes | Yes |
Duster | Like leecher but dusts map with RMD | Yes | 1 | Yes | Less to none. May get paid. |
Closer | Like leecher but catches LM/LL | Yes | 1 | Yes | Discounted |
Role listings¶
A role listing describes a user's intent to invite others to/participate in a map instance. Hence, these can be categorized into two types: an invite listing, and a join request listing.
Depending on the role, certain columns may be set; for others, maybe not. But here's what all role listings must have recorded:
Listing ID | Role | Type |
---|---|---|
Role listing ID | Any supported role | INVITE or JOIN |
Roles, in-depth¶
Maptain¶
Giving away a maptain role means that you're going to give the entirety of an already-opened map. A user must not be able to sell a maptain alongside other roles because there are no other slots/roles that can be added. A user also must not be able to pick the maptain role to both invite/join for scroll cases that can be traded. But their dusted counterparts are eligible.
Listing ID | Instance ID | Role | Type | Cost |
---|---|---|---|---|
Role listing ID | ID of the map instance in GNAWEX | MAPTAIN | INVITE | If INVITE , current maptain is asking for this much for the other maptain to take over. If JOIN , user who wants to become the new maptain would pay the current one this much. |
Note
The old and new maptain must mark the transaction as complete as soon as the old maptain invites the new one, AND [the old maptain] leaves the map.
Sniper/Looter¶
Sniper/looter roles are considered temporary roles in a map instance because they do not stick around when it's complete (for the map chest). GNAWEX must also keep a record of all possible mice for the snipers and maptains to select.
For the maptain:
Listing ID | Instance ID | Role | Type | Cost | Mouse ID |
---|---|---|---|---|---|
Role listing ID | ID of the map instance in GNAWEX | SNIPER | INVITE | Amount for the maptain to pay for service | Mouse to snipe |
For the sniper:
Listing ID | Role | Type | Cost | Mouse ID |
---|---|---|---|---|
Role listing ID | SNIPER | JOIN | Amount the sniper wants to be paid by the maptain for their service | Mouse to snipe |
The sniper must not need to specify the instance, nor the map because all they're concerned with is dealing with the mouse/loot, nothing else.
Here's what the flow looks like:
- Maptain creates an invite listing with one available role: a sniper role and chooses the mouse/item to snipe/loot
- Match happens
- Sniper/looter clicks link and requests to join
- Maptain accepts invite
- Sniper/looter does their job & leaves
- Maptain and sniper/looter mark the transaction as complete
- GNAWEX frees up one extra role for the instance
With this, the maptain may look for a new role to invite.
Note
The maptain and sniper/looter must both mark the transaction as COMPLETE
when as soon as the sniper/looter completes their job and gets paid.
Helpers¶
Since helpers are expected help out with the map, no payment is involved.
For the maptain:
Listing ID | Instance ID | Role | Type |
---|---|---|---|
Role listing ID | ID of the map instance in GNAWEX | HELPER | INVITE |
For the helper:
Listing ID | Map ID | Role | Type |
---|---|---|---|
Role listing ID | ID of the map record in GNAWEX | HELPER | JOIN |
The helper must specify what kind of map they would like to help out with, but must not need to specify a particular instance because the matching is done by GNAWEX.
Leechers¶
Leechers are not expected to help out with the map, and they need to pay the maptain to join.
For the maptain:
Listing ID | Instance ID | Role | Type | Cost |
---|---|---|---|---|
Role listing ID | ID of the map instance in GNAWEX | LEECHER | INVITE | Amount the maptain will charge the leecher |
For the leecher:
Listing ID | Map ID | Role | Type | Cost |
---|---|---|---|---|
Role listing ID | ID of the map record in GNAWEX | LEECHER | JOIN | Amount the leecher will pay the maptain to join |
Dusters¶
Dusters are like leechers, but must dust the map. So they either get charged much less, or even get paid. If the maptain will pay the duster, then they must not set how much they [the maptain] will get paid.
For the maptain:
Listing ID | Instance ID | Role | Type | Cost for duster to get paid | Cost for maptain to get paid |
---|---|---|---|---|---|
Role listing ID | ID of the map instance in GNAWEX | DUSTER | INVITE | How much duster will earn | How much maptain will earn |
For the leecher:
Listing ID | Map ID | Role | Type | Cost for duster to get paid | Cost for maptain to get paid |
---|---|---|---|---|---|
Role listing ID | ID of the map record in GNAWEX | DUSTER | JOIN | How much duster will earn | How much maptain will earn |
Closers¶
Closers are like leechers. Except they must get the LM/LL, and they must pay the maptain to join. But a discount is usually provided.
For the maptain:
Listing ID | Instance ID | Role | Type | Cost |
---|---|---|---|---|
Role listing ID | ID of the map instance in GNAWEX | CLOSER | INVITE | Amount the maptain will charge |
For the closer:
Listing ID | Map ID | Role | Type | Cost |
---|---|---|---|---|
Role listing ID | ID of the map record in GNAWEX | CLOSER | JOIN | Amount the closer will pay the maptain to join |
Note
When the map is closed/complete for the helpers/leechers/dusters/closers, all parties involved must mark the transaction as COMPLETED
.
Role restrictions¶
Here are the current role restrictions:
Role name | Min. number | Max number |
---|---|---|
Maptain | 0 | 1 (blocks current maptain from inviting other roles) |
Helper | 0 | Max slots - 1 |
Sniper/looter | 0 | Max slots - 1 |
Duster | 0 | 1 |
Leecher | 0 | Max slots - 1 |
Closer | 0 | 1 |
Info
While the minimums are 0, the listing must have one role per slot to be sold.
Create a join request listing¶
A user may create a join request listing but must only be allowed to pick one role to join as. If they want to be two roles for the same kind of map (e.g Nice List), then they must create two join request listings. If their listing gets matched with another, all of their other join request listings will be temporarily delisted until the transaction is complete.
They may also choose their preferred LM, or select a group of mice that they would like to have as the LM. If they do not choose a LM, then this means anything goes.
Create an invite listing¶
Warning
You must be the current maptain to be able to create an invite listing.
An invite listing means the maptain is looking to invite others to the map to fulfill a single role. A maptain may have multiple role invite listnings if they need to look for multiple roles.
Updating a listing¶
A role listing may be updated but restrictions apply. Generally speaking, a listing must not be updated if it has already concluded.
Invite listing¶
A maptain may add new roles, or remove unfilled roles. They must not remove roles that are involved in a PENDING
or COMPLETED
transaction.
Concluding a listing¶
A role listing must be considered concluded if it was CANCELLED
, or COMPLETED
.
Transactions¶
Status¶
PENDING
- If the joiner is still fulfilling their duties/waiting for the map to complete/close. This must 'hold' the role.COMPLETED
- When the joiner has fulfilled their duties/the map is completed. This must 'indefinitely' hold the role.CANCELLED
- If both the maptain and the joiner are in mutual agreement, and decide to back off of their deal. Both need to mark it asCANCELLED
otherwise it will not be marked as such. Cancelling must release the role back.
FAQ¶
WIP