Archipelago/worlds/kdl3/gifting.py

286 lines
6.7 KiB
Python

# Small subfile to handle gifting info such as desired traits and giftbox management
import typing
if typing.TYPE_CHECKING:
from SNIClient import SNIContext
async def update_object(ctx: "SNIContext", key: str, value: typing.Dict[str, typing.Any]) -> None:
await ctx.send_msgs([
{
"cmd": "Set",
"key": key,
"default": {},
"want_reply": False,
"operations": [
{"operation": "update", "value": value}
]
}
])
async def pop_object(ctx: "SNIContext", key: str, value: str) -> None:
await ctx.send_msgs([
{
"cmd": "Set",
"key": key,
"default": {},
"want_reply": False,
"operations": [
{"operation": "pop", "value": value}
]
}
])
async def initialize_giftboxes(ctx: "SNIContext", giftbox_key: str, motherbox_key: str, is_open: bool) -> None:
ctx.set_notify(motherbox_key, giftbox_key)
await update_object(ctx, f"Giftboxes;{ctx.team}", {f"{ctx.slot}":
{
"IsOpen": is_open,
**kdl3_gifting_options
}})
ctx.client_handler.gifting = is_open
kdl3_gifting_options = {
"AcceptsAnyGift": True,
"DesiredTraits": [
"Consumable", "Food", "Drink", "Candy", "Tomato",
"Invincible", "Life", "Heal", "Health", "Trap",
"Goo", "Gel", "Slow", "Slowness", "Eject", "Removal"
],
"MinimumGiftVersion": 2,
}
kdl3_gifts = {
1: {
"ItemName": "1-Up",
"Amount": 1,
"ItemValue": 400000,
"Traits": [
{
"Trait": "Consumable",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Life",
"Quality": 1,
"Duration": 1
}
]
},
2: {
"ItemName": "Maxim Tomato",
"Amount": 1,
"ItemValue": 500000,
"Traits": [
{
"Trait": "Consumable",
"Quality": 5,
"Duration": 1,
},
{
"Trait": "Heal",
"Quality": 5,
"Duration": 1,
},
{
"Trait": "Food",
"Quality": 5,
"Duration": 1,
},
{
"Trait": "Tomato",
"Quality": 5,
"Duration": 1,
},
{
"Trait": "Vegetable",
"Quality": 5,
"Duration": 1,
}
]
},
3: {
"ItemName": "Energy Drink",
"Amount": 1,
"ItemValue": 100000,
"Traits": [
{
"Trait": "Consumable",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Heal",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Drink",
"Quality": 1,
"Duration": 1,
},
]
},
5: {
"ItemName": "Small Star Piece",
"Amount": 1,
"ItemValue": 10000,
"Traits": [
{
"Trait": "Currency",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Money",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Star",
"Quality": 1,
"Duration": 1
}
]
},
6: {
"ItemName": "Medium Star Piece",
"Amount": 1,
"ItemValue": 30000,
"Traits": [
{
"Trait": "Currency",
"Quality": 3,
"Duration": 1,
},
{
"Trait": "Money",
"Quality": 3,
"Duration": 1,
},
{
"Trait": "Star",
"Quality": 3,
"Duration": 1
}
]
},
7: {
"ItemName": "Large Star Piece",
"Amount": 1,
"ItemValue": 50000,
"Traits": [
{
"Trait": "Currency",
"Quality": 5,
"Duration": 1,
},
{
"Trait": "Money",
"Quality": 5,
"Duration": 1,
},
{
"Trait": "Star",
"Quality": 5,
"Duration": 1
}
]
},
}
kdl3_trap_gifts = {
0: {
"ItemName": "Gooey Bag",
"Amount": 1,
"ItemValue": 10000,
"Traits": [
{
"Trait": "Trap",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Goo",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Gel",
"Quality": 1,
"Duration": 1
}
]
},
1: {
"ItemName": "Slowness",
"Amount": 1,
"ItemValue": 10000,
"Traits": [
{
"Trait": "Trap",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Slow",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Slowness",
"Quality": 1,
"Duration": 1
}
]
},
2: {
"ItemName": "Eject Ability",
"Amount": 1,
"ItemValue": 10000,
"Traits": [
{
"Trait": "Trap",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Eject",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Removal",
"Quality": 1,
"Duration": 1
}
]
},
3: {
"ItemName": "Bad Meal",
"Amount": 1,
"ItemValue": 10000,
"Traits": [
{
"Trait": "Trap",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Damage",
"Quality": 1,
"Duration": 1,
},
{
"Trait": "Food",
"Quality": 1,
"Duration": 1
}
]
},
}