POH Tea has been implemented

Can now add milk to teas
Nettle tea now heals
Refactor of Beer Barrels, Larder, and Shelves
Checks are now made to ensure that the player cannot take Tea/Beer related items out from the POH
A few useless items (Bowl of Hot Water, Cup of Hot Water) have been implemented
This commit is contained in:
Syndromeramo
2026-01-22 10:59:35 +00:00
committed by Ryan
parent 8bdfc43fba
commit 683af41399
21 changed files with 738 additions and 649 deletions
+149 -78
View File
@@ -39175,7 +39175,7 @@
"id": "4237" "id": "4237"
}, },
{ {
"examine": "It's a bowl of (milky) nettle tea.", "examine": "It's a bowl of nettle tea.",
"durability": null, "durability": null,
"name": "Nettle tea", "name": "Nettle tea",
"weight": "0.9", "weight": "0.9",
@@ -39183,7 +39183,7 @@
"id": "4239" "id": "4239"
}, },
{ {
"examine": "It's a bowl of (milky) nettle tea.", "examine": "It's a bowl of milky nettle tea.",
"durability": null, "durability": null,
"name": "Nettle tea", "name": "Nettle tea",
"weight": "0.9", "weight": "0.9",
@@ -39191,7 +39191,7 @@
"id": "4240" "id": "4240"
}, },
{ {
"examine": "(In inventory) A handful of nettles (In ground) I better not get stung/I wouldn't like to get stung/I wish I could sting other people/Dock leaves at the ready/These may hurt/nettles sting my leggies(Draynor Village nettles)", "examine": "A handful of nettles.",
"durability": null, "durability": null,
"name": "Nettles", "name": "Nettles",
"archery_ticket_price": "0", "archery_ticket_price": "0",
@@ -39199,22 +39199,22 @@
}, },
{ {
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "A nice cup of nettle tea.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "4242" "id": "4242"
}, },
{ {
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "A milky cup of nettle tea.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "4243" "id": "4243"
@@ -39228,22 +39228,22 @@
}, },
{ {
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "Some nettle tea in a porcelain cup.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "4245" "id": "4245"
}, },
{ {
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "Some milky nettle tea in a porcelain cup.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "4246" "id": "4246"
@@ -70083,517 +70083,584 @@
"id": "7687" "id": "7687"
}, },
{ {
"bankable": "false",
"examine": "The kettle is empty.", "examine": "The kettle is empty.",
"durability": null, "durability": null,
"name": "Kettle", "name": "Kettle",
"tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7688" "id": "7688"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Kettle", "name": "Kettle",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7689" "id": "7689"
}, },
{ {
"bankable": "false",
"examine": "It's full of cold water.", "examine": "It's full of cold water.",
"durability": null, "durability": null,
"name": "Full kettle", "name": "Full kettle",
"tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7690" "id": "7690"
}, },
{ {
"bankable": "false",
"examine": "It's full of boiling water.", "examine": "It's full of boiling water.",
"durability": null, "durability": null,
"name": "Hot kettle", "name": "Hot kettle",
"tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7691" "id": "7691"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (4)", "name": "Pot of tea (4)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7692" "id": "7692"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (4)", "name": "Pot of tea (4)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7693" "id": "7693"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (3)", "name": "Pot of tea (3)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7694" "id": "7694"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (3)", "name": "Pot of tea (3)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7695" "id": "7695"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (2)", "name": "Pot of tea (2)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7696" "id": "7696"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (2)", "name": "Pot of tea (2)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7697" "id": "7697"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (1)", "name": "Pot of tea (1)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7698" "id": "7698"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (1)", "name": "Pot of tea (1)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7699" "id": "7699"
}, },
{ {
"bankable": "false",
"examine": "Add boiling water to make a tea.", "examine": "Add boiling water to make a tea.",
"durability": null, "durability": null,
"name": "Teapot with leaves", "name": "Teapot with leaves",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7700" "id": "7700"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Teapot with leaves", "name": "Teapot with leaves",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7701" "id": "7701"
}, },
{ {
"bankable": "false",
"examine": "This teapot is empty.", "examine": "This teapot is empty.",
"durability": null, "durability": null,
"name": "Teapot", "name": "Teapot",
"tradeable": "true", "tradeable": "false",
"weight": "0.4", "weight": "0.4",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7702" "id": "7702"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Teapot", "name": "Teapot",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7703" "id": "7703"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (4)", "name": "Pot of tea (4)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7704" "id": "7704"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (4)", "name": "Pot of tea (4)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7705" "id": "7705"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (3)", "name": "Pot of tea (3)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7706" "id": "7706"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (3)", "name": "Pot of tea (3)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7707" "id": "7707"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (2)", "name": "Pot of tea (2)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7708" "id": "7708"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (2)", "name": "Pot of tea (2)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7709" "id": "7709"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (1)", "name": "Pot of tea (1)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7710" "id": "7710"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (1)", "name": "Pot of tea (1)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7711" "id": "7711"
}, },
{ {
"bankable": "false",
"examine": "Add boiling water to make a tea.", "examine": "Add boiling water to make a tea.",
"durability": null, "durability": null,
"name": "Teapot with leaves", "name": "Teapot with leaves",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7712" "id": "7712"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Teapot with leaves", "name": "Teapot with leaves",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7713" "id": "7713"
}, },
{ {
"bankable": "false",
"examine": "This teapot is empty.", "examine": "This teapot is empty.",
"durability": null, "durability": null,
"name": "Teapot", "name": "Teapot",
"tradeable": "true", "tradeable": "false",
"weight": "0.4", "weight": "0.4",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7714" "id": "7714"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Teapot", "name": "Teapot",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7715" "id": "7715"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (4)", "name": "Pot of tea (4)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7716" "id": "7716"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (4)", "name": "Pot of tea (4)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7717" "id": "7717"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (3)", "name": "Pot of tea (3)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7718" "id": "7718"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (3)", "name": "Pot of tea (3)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7719" "id": "7719"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (2)", "name": "Pot of tea (2)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7720" "id": "7720"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (2)", "name": "Pot of tea (2)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7721" "id": "7721"
}, },
{ {
"bankable": "false",
"examine": "I'd really like a nice cup of tea.", "examine": "I'd really like a nice cup of tea.",
"durability": null, "durability": null,
"name": "Pot of tea (1)", "name": "Pot of tea (1)",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7722" "id": "7722"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Pot of tea (1)", "name": "Pot of tea (1)",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7723" "id": "7723"
}, },
{ {
"bankable": "false",
"examine": "Add boiling water to make a tea.", "examine": "Add boiling water to make a tea.",
"durability": null, "durability": null,
"name": "Teapot with leaves", "name": "Teapot with leaves",
"tradeable": "true", "tradeable": "false",
"weight": "1.5", "weight": "1.5",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7724" "id": "7724"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Teapot with leaves", "name": "Teapot with leaves",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7725" "id": "7725"
}, },
{ {
"bankable": "false",
"examine": "This teapot is empty.", "examine": "This teapot is empty.",
"durability": null, "durability": null,
"name": "Teapot", "name": "Teapot",
"tradeable": "true", "tradeable": "false",
"weight": "0.4", "weight": "0.4",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7726" "id": "7726"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Teapot", "name": "Teapot",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7727" "id": "7727"
}, },
{ {
"bankable": "false",
"shop_price": "1", "shop_price": "1",
"examine": "An empty cup.", "examine": "An empty cup.",
"grand_exchange_price": "7", "grand_exchange_price": "7",
"durability": null, "durability": null,
"name": "Empty cup", "name": "Empty cup",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7728" "id": "7728"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Empty cup", "name": "Empty cup",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7729" "id": "7729"
}, },
{ {
"bankable": "false",
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "A nice cup of nettle tea.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7730" "id": "7730"
}, },
{ {
"bankable": "false",
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "A milky cup of nettle tea.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7731" "id": "7731"
}, },
{ {
"bankable": "false",
"examine": "A porcelain cup.", "examine": "A porcelain cup.",
"durability": null, "durability": null,
"name": "Porcelain cup", "name": "Porcelain cup",
"tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7732" "id": "7732"
}, },
{ {
"bankable": "false",
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "Some nettle tea in a porcelain cup.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7733" "id": "7733"
}, },
{ {
"bankable": "false",
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "Some milky nettle tea in a porcelain cup.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7734" "id": "7734"
}, },
{ {
"bankable": "false",
"examine": "A porcelain cup.", "examine": "A porcelain cup.",
"durability": null, "durability": null,
"name": "Porcelain cup", "name": "Porcelain cup",
"tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7735" "id": "7735"
}, },
{ {
"bankable": "false",
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "Some nettle tea in a porcelain cup.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7736" "id": "7736"
}, },
{ {
"bankable": "false",
"shop_price": "10", "shop_price": "10",
"examine": "A nice cup of tea.", "examine": "Some milky nettle tea in a porcelain cup.",
"grand_exchange_price": "30", "grand_exchange_price": "30",
"durability": null, "durability": null,
"name": "Cup of tea", "name": "Cup of tea",
"tradeable": "true", "tradeable": "false",
"weight": "0.1", "weight": "0.1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7737" "id": "7737"
}, },
{ {
"bankable": "false",
"examine": "Mmm, how about a nice cup of tea?", "examine": "Mmm, how about a nice cup of tea?",
"durability": null, "durability": null,
"name": "Tea leaves", "name": "Tea leaves",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7738" "id": "7738"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Tea leaves", "name": "Tea leaves",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7739" "id": "7739"
}, },
{ {
"bankable": "false",
"examine": "A glass of frothy ale.", "examine": "A glass of frothy ale.",
"grand_exchange_price": "151", "grand_exchange_price": "151",
"durability": null, "durability": null,
"name": "Beer", "name": "Beer",
"tradeable": "true", "tradeable": "false",
"weight": "1", "weight": "1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7740" "id": "7740"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Beer", "name": "Beer",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7741" "id": "7741"
}, },
{ {
"bankable": "false",
"shop_price": "1", "shop_price": "1",
"examine": "I need to fill this with beer.", "examine": "I need to fill this with beer.",
"grand_exchange_price": "25", "grand_exchange_price": "25",
"durability": null, "durability": null,
"name": "Beer glass", "name": "Beer glass",
"tradeable": "true", "tradeable": "false",
"weight": "0.05", "weight": "0.05",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7742" "id": "7742"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Beer glass", "name": "Beer glass",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7743" "id": "7743"
}, },
{ {
"bankable": "false",
"shop_price": "3", "shop_price": "3",
"examine": "Probably the finest readily-available ale in Asgarnia.", "examine": "Probably the finest readily-available ale in Asgarnia.",
"grand_exchange_price": "131", "grand_exchange_price": "131",
"durability": null, "durability": null,
"name": "Asgarnian ale", "name": "Asgarnian ale",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7744" "id": "7744"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Asgarnian ale", "name": "Asgarnian ale",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7745" "id": "7745"
}, },
{ {
"bankable": "false",
"shop_price": "2", "shop_price": "2",
"examine": "A glass of frothy ale.", "examine": "A glass of frothy ale.",
"grand_exchange_price": "569", "grand_exchange_price": "569",
"durability": null, "durability": null,
"name": "Greenman's ale", "name": "Greenman's ale",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7746" "id": "7746"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Greenman's ale", "name": "Greenman's ale",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7747" "id": "7747"
}, },
{ {
"bankable": "false",
"shop_price": "2", "shop_price": "2",
"examine": "A glass of bitter.", "examine": "A glass of bitter.",
"grand_exchange_price": "523", "grand_exchange_price": "523",
"durability": null, "durability": null,
"name": "Dragon bitter", "name": "Dragon bitter",
"tradeable": "true", "tradeable": "false",
"weight": "1", "weight": "1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7748" "id": "7748"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Dragon bitter", "name": "Dragon bitter",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7749" "id": "7749"
}, },
@@ -70615,36 +70682,40 @@
"id": "7751" "id": "7751"
}, },
{ {
"bankable": "false",
"shop_price": "2", "shop_price": "2",
"examine": "A glass of Cider", "examine": "A glass of Cider",
"grand_exchange_price": "1539", "grand_exchange_price": "1539",
"durability": null, "durability": null,
"name": "Cider", "name": "Cider",
"tradeable": "true", "tradeable": "false",
"weight": "1", "weight": "1",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7752" "id": "7752"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Cider", "name": "Cider",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7753" "id": "7753"
}, },
{ {
"bankable": "false",
"examine": "A fruity, full-bodied ale.", "examine": "A fruity, full-bodied ale.",
"grand_exchange_price": "2371", "grand_exchange_price": "2371",
"durability": null, "durability": null,
"name": "Chef's delight", "name": "Chef's delight",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7754" "id": "7754"
}, },
{ {
"bankable": "false",
"durability": null, "durability": null,
"name": "Chef's delight", "name": "Chef's delight",
"tradeable": "true", "tradeable": "false",
"archery_ticket_price": "0", "archery_ticket_price": "0",
"id": "7755" "id": "7755"
}, },
@@ -201,6 +201,7 @@ public enum Consumables {
/** Ales */ /** Ales */
ASGOLDIAN_ALE(new FakeConsumable(7508, new String[] {"I don't think I'd like gold in beer thanks. Leave it for the dwarves."})), ASGOLDIAN_ALE(new FakeConsumable(7508, new String[] {"I don't think I'd like gold in beer thanks. Leave it for the dwarves."})),
ASGARNIAN_ALE(new Drink(new int[] {1905, 1919}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), "You drink the ale. You feel slightly reinvigorated...", "...and slightly dizzy too.")), ASGARNIAN_ALE(new Drink(new int[] {1905, 1919}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), "You drink the ale. You feel slightly reinvigorated...", "...and slightly dizzy too.")),
ASGARNIAN_ALE_POH(new Drink(new int[] {7744, 7742}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), "You drink the ale. You feel slightly reinvigorated...", "...and slightly dizzy too.")),
ASGARNIAN_ALE_KEG(new Drink(new int[] {5785, 5783, 5781, 5779, 5769}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), new Animation(2289), "You drink the ale. You feel slightly reinvigorated...", "...and slightly dizzy too.")), ASGARNIAN_ALE_KEG(new Drink(new int[] {5785, 5783, 5781, 5779, 5769}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), new Animation(2289), "You drink the ale. You feel slightly reinvigorated...", "...and slightly dizzy too.")),
ASGARNIAN_ALE_M(new Drink(new int[] {5739, 1919}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)))), ASGARNIAN_ALE_M(new Drink(new int[] {5739, 1919}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)))),
ASGARNIAN_ALE_M_KEG(new Drink(new int[] {5865, 5863, 5861, 5859, 5769}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)), new Animation(2289))), ASGARNIAN_ALE_M_KEG(new Drink(new int[] {5865, 5863, 5861, 5859, 5769}, new MultiEffect(new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)), new Animation(2289))),
@@ -210,17 +211,21 @@ public enum Consumables {
AXEMANS_FOLLY_M_KEG(new Drink(new int[] {5905, 5903, 5901, 5899, 5769}, new MultiEffect(new SkillEffect(Skills.WOODCUTTING, 2, 0), new HealingEffect(2), new SkillEffect(Skills.STRENGTH, -4, 0), new SkillEffect(Skills.ATTACK, -4, 0)), new Animation(2289))), AXEMANS_FOLLY_M_KEG(new Drink(new int[] {5905, 5903, 5901, 5899, 5769}, new MultiEffect(new SkillEffect(Skills.WOODCUTTING, 2, 0), new HealingEffect(2), new SkillEffect(Skills.STRENGTH, -4, 0), new SkillEffect(Skills.ATTACK, -4, 0)), new Animation(2289))),
BANDITS_BREW(new Drink(new int[] {4627, 1919}, new MultiEffect(new SkillEffect(Skills.THIEVING, 1, 0), new SkillEffect(Skills.ATTACK, 1, 0), new SkillEffect(Skills.STRENGTH, -1, 0), new SkillEffect(Skills.DEFENCE, -6, 0), new HealingEffect(1)), "You drink the beer. You feel slightly reinvigorated...", "...and slightly dizzy too.")), BANDITS_BREW(new Drink(new int[] {4627, 1919}, new MultiEffect(new SkillEffect(Skills.THIEVING, 1, 0), new SkillEffect(Skills.ATTACK, 1, 0), new SkillEffect(Skills.STRENGTH, -1, 0), new SkillEffect(Skills.DEFENCE, -6, 0), new HealingEffect(1)), "You drink the beer. You feel slightly reinvigorated...", "...and slightly dizzy too.")),
BEER(new Drink(new int[] {1917, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 0, 0.04), new SkillEffect(Skills.ATTACK, 0, -0.07)), "You drink the beer. You feel slightly reinvigorated...", "...and slightly dizzy too.")), BEER(new Drink(new int[] {1917, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 0, 0.04), new SkillEffect(Skills.ATTACK, 0, -0.07)), "You drink the beer. You feel slightly reinvigorated...", "...and slightly dizzy too.")),
BEER_POH(new Drink(new int[] {7740, 7742}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 0, 0.04), new SkillEffect(Skills.ATTACK, 0, -0.07)), "You drink the beer. You feel slightly reinvigorated...", "...and slightly dizzy too.")),
BEER_TANKARD(new Drink(new int[] {3803, 3805}, new MultiEffect(new SkillEffect(Skills.ATTACK, -9, 0), new SkillEffect(Skills.STRENGTH, 4, 0)), "You quaff the beer. You feel slightly reinvigorated...", "...but very dizzy too.")), BEER_TANKARD(new Drink(new int[] {3803, 3805}, new MultiEffect(new SkillEffect(Skills.ATTACK, -9, 0), new SkillEffect(Skills.STRENGTH, 4, 0)), "You quaff the beer. You feel slightly reinvigorated...", "...but very dizzy too.")),
KEG_OF_BEER(new Drink(new int[] {3801}, new KegOfBeerEffect(), new Animation(1330), "You chug the keg. You feel reinvigorated...", "...but extremely drunk too.")), KEG_OF_BEER(new Drink(new int[] {3801}, new KegOfBeerEffect(), new Animation(1330), "You chug the keg. You feel reinvigorated...", "...but extremely drunk too.")),
CHEFS_DELIGHT(new Drink(new int[] {5755, 1919}, new MultiEffect(new SkillEffect(Skills.COOKING, 1, 0.05), new HealingEffect(1), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)))), CHEFS_DELIGHT(new Drink(new int[] {5755, 1919}, new MultiEffect(new SkillEffect(Skills.COOKING, 1, 0.05), new HealingEffect(1), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)))),
CHEFS_DELIGHT_POH(new Drink(new int[] {7754, 7742}, new MultiEffect(new SkillEffect(Skills.COOKING, 1, 0.05), new HealingEffect(1), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)))),
CHEFS_DELIGHT_KEG(new Drink(new int[] {5833, 5831, 5829, 5827, 5769}, new MultiEffect(new SkillEffect(Skills.COOKING, 1, 0.05), new HealingEffect(1), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)), new Animation(2289))), CHEFS_DELIGHT_KEG(new Drink(new int[] {5833, 5831, 5829, 5827, 5769}, new MultiEffect(new SkillEffect(Skills.COOKING, 1, 0.05), new HealingEffect(1), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)), new Animation(2289))),
CHEFS_DELIGHT_M(new Drink(new int[] {5757, 1919}, new MultiEffect(new SkillEffect(Skills.COOKING, 2, 0.05), new HealingEffect(2), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0)))), CHEFS_DELIGHT_M(new Drink(new int[] {5757, 1919}, new MultiEffect(new SkillEffect(Skills.COOKING, 2, 0.05), new HealingEffect(2), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0)))),
CHEFS_DELIGHT_M_KEG(new Drink(new int[] {5913, 5911, 5909, 5907, 5769}, new MultiEffect(new SkillEffect(Skills.COOKING, 2, 0.05), new HealingEffect(2), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0)), new Animation(2289))), CHEFS_DELIGHT_M_KEG(new Drink(new int[] {5913, 5911, 5909, 5907, 5769}, new MultiEffect(new SkillEffect(Skills.COOKING, 2, 0.05), new HealingEffect(2), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0)), new Animation(2289))),
CIDER(new Drink(new int[] {5763, 1919}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 1, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0))))), CIDER(new Drink(new int[] {5763, 1919}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 1, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0))))),
CIDER_POH(new Drink(new int[] {7752, 7742}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 1, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0))))),
CIDER_KEG(new Drink(new int[] {5849, 5847, 5845, 5843, 5769}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 1, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0))), new Animation(2289))), CIDER_KEG(new Drink(new int[] {5849, 5847, 5845, 5843, 5769}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 1, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0))), new Animation(2289))),
MATURE_CIDER(new Drink(new int[] {5765, 1919}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 2, 0), new SkillEffect(Skills.ATTACK, -5, 0), new SkillEffect(Skills.STRENGTH, -5, 0))))), MATURE_CIDER(new Drink(new int[] {5765, 1919}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 2, 0), new SkillEffect(Skills.ATTACK, -5, 0), new SkillEffect(Skills.STRENGTH, -5, 0))))),
CIDER_M_KEG(new Drink(new int[] {5929, 5927, 5925, 5923, 5769}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 2, 0), new SkillEffect(Skills.ATTACK, -5, 0), new SkillEffect(Skills.STRENGTH, -5, 0))), new Animation(2289))), CIDER_M_KEG(new Drink(new int[] {5929, 5927, 5925, 5923, 5769}, new MultiEffect(new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.FARMING, 2, 0), new SkillEffect(Skills.ATTACK, -5, 0), new SkillEffect(Skills.STRENGTH, -5, 0))), new Animation(2289))),
DRAGON_BITTER(new Drink(new int[] {1911, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)))), DRAGON_BITTER(new Drink(new int[] {1911, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)))),
DRAGON_BITTER_POH(new Drink(new int[] {7748, 7742}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)))),
DRAGON_BITTER_KEG(new Drink(new int[] {5809, 5807, 5805, 5803, 5769}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), new Animation(2289))), DRAGON_BITTER_KEG(new Drink(new int[] {5809, 5807, 5805, 5803, 5769}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.STRENGTH, 2, 0), new SkillEffect(Skills.ATTACK, -4, 0)), new Animation(2289))),
DRAGON_BITTER_M(new Drink(new int[] {5745, 1919}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)))), DRAGON_BITTER_M(new Drink(new int[] {5745, 1919}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)))),
DRAGON_BITTER_M_KEG(new Drink(new int[] {5889, 5887, 5885, 5883, 5769}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)), new Animation(2289))), DRAGON_BITTER_M_KEG(new Drink(new int[] {5889, 5887, 5885, 5883, 5769}, new MultiEffect(new HealingEffect(2), new SkillEffect(Skills.STRENGTH, 3, 0), new SkillEffect(Skills.ATTACK, -6, 0)), new Animation(2289))),
@@ -229,6 +234,7 @@ public enum Consumables {
DWARVEN_STOUT_M(new Drink(new int[] {5747, 1919}, new MultiEffect(new SkillEffect(Skills.MINING, 2, 0), new SkillEffect(Skills.SMITHING, 2 ,0), new SkillEffect(Skills.ATTACK, -7, 0), new SkillEffect(Skills.STRENGTH, -7, 0), new SkillEffect(Skills.DEFENCE, -7, 0), new HealingEffect(1)))), DWARVEN_STOUT_M(new Drink(new int[] {5747, 1919}, new MultiEffect(new SkillEffect(Skills.MINING, 2, 0), new SkillEffect(Skills.SMITHING, 2 ,0), new SkillEffect(Skills.ATTACK, -7, 0), new SkillEffect(Skills.STRENGTH, -7, 0), new SkillEffect(Skills.DEFENCE, -7, 0), new HealingEffect(1)))),
DWARVEN_STOUT_M_KEG(new Drink(new int[] {5857, 5855, 5853, 5851, 5769}, new MultiEffect(new SkillEffect(Skills.MINING, 2, 0), new SkillEffect(Skills.SMITHING, 2 ,0), new SkillEffect(Skills.ATTACK, -7, 0), new SkillEffect(Skills.STRENGTH, -7, 0), new SkillEffect(Skills.DEFENCE, -7, 0), new HealingEffect(1)), new Animation(2289))), DWARVEN_STOUT_M_KEG(new Drink(new int[] {5857, 5855, 5853, 5851, 5769}, new MultiEffect(new SkillEffect(Skills.MINING, 2, 0), new SkillEffect(Skills.SMITHING, 2 ,0), new SkillEffect(Skills.ATTACK, -7, 0), new SkillEffect(Skills.STRENGTH, -7, 0), new SkillEffect(Skills.DEFENCE, -7, 0), new HealingEffect(1)), new Animation(2289))),
GREENMANS_ALE(new Drink(new int[] {1909, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 1, 0), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0), new SkillEffect(Skills.DEFENCE, -3, 0)))), GREENMANS_ALE(new Drink(new int[] {1909, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 1, 0), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0), new SkillEffect(Skills.DEFENCE, -3, 0)))),
GREENMANS_ALE_POH(new Drink(new int[] {7746, 7742}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 1, 0), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0), new SkillEffect(Skills.DEFENCE, -3, 0)))),
GREENMANS_ALE_KEG(new Drink(new int[] {5793, 5791, 5789, 5787, 5769}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 1, 0), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0), new SkillEffect(Skills.DEFENCE, -3, 0)), new Animation(2289))), GREENMANS_ALE_KEG(new Drink(new int[] {5793, 5791, 5789, 5787, 5769}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 1, 0), new SkillEffect(Skills.ATTACK, -3, 0), new SkillEffect(Skills.STRENGTH, -3, 0), new SkillEffect(Skills.DEFENCE, -3, 0)), new Animation(2289))),
GREENMANS_ALE_M(new Drink(new int[] {5743, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 2, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)))), GREENMANS_ALE_M(new Drink(new int[] {5743, 1919}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 2, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)))),
GREENMANS_ALE_M_KEG(new Drink(new int[] {5873, 5871, 5869, 5867, 5769}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 2, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)), new Animation(2289))), GREENMANS_ALE_M_KEG(new Drink(new int[] {5873, 5871, 5869, 5867, 5769}, new MultiEffect(new HealingEffect(1), new SkillEffect(Skills.HERBLORE, 2, 0), new SkillEffect(Skills.ATTACK, -2, 0), new SkillEffect(Skills.STRENGTH, -2, 0)), new Animation(2289))),
@@ -285,16 +291,19 @@ public enum Consumables {
/** Tea */ /** Tea */
CUP_OF_TEA(new Drink(new int[] {712, 1980}, new MultiEffect(new HealingEffect(3), new SkillEffect(Skills.ATTACK, 3, 0)), "Aaah, nothing like a nice cuppa tea!")), CUP_OF_TEA(new Drink(new int[] {712, 1980}, new MultiEffect(new HealingEffect(3), new SkillEffect(Skills.ATTACK, 3, 0)), "Aaah, nothing like a nice cuppa tea!")),
CUP_OF_TEA_NETTLE(new Drink(new int[] {4242, 1980}, new EnergyEffect(10))), NETTLE_WATER(new Drink(new int[] {Items.NETTLE_WATER_4237, Items.BOWL_1923}, new HealingEffect((1)))),
CUP_OF_TEA_MILKY_NETTLE(new Drink(new int[] {4243, 1980}, new EnergyEffect(10))), CUP_OF_TEA_NETTLE(new Drink(new int[] {4242, 1980}, new MultiEffect(new HealingEffect(3), new EnergyEffect(10)))),
NETTLE_TEA(new Drink(new int[] {4239, 1923}, new NettleTeaEffect())), CUP_OF_TEA_MILKY_NETTLE(new Drink(new int[] {4243, 1980}, new MultiEffect(new HealingEffect(3), new EnergyEffect(10)))),
NETTLE_TEA_MILKY(new Drink(new int[] {4240, 1980}, new NettleTeaEffect())), CUP_OF_TEA_NETTLE_PORCELAIN(new Drink(new int[] {4245, 4244}, new MultiEffect(new HealingEffect(3), new EnergyEffect(10)))),
CUP_OF_TEA_MILKY_NETTLE_PORCELAIN(new Drink(new int[] {4246, 4244}, new MultiEffect(new HealingEffect(3), new EnergyEffect(10)))),
NETTLE_TEA(new Drink(new int[] {4239, 1923}, new MultiEffect(new HealingEffect(3), new EnergyEffect(10)))),
NETTLE_TEA_MILKY(new Drink(new int[] {4240, 1923}, new MultiEffect(new HealingEffect(3), new EnergyEffect(10)))),
CUP_OF_TEA_CLAY(new Drink(new int[] {7730, 7728}, new SkillEffect(Skills.CONSTRUCTION, 1, 0), "You feel refreshed and ready for more building.")), CUP_OF_TEA_CLAY(new Drink(new int[] {7730, 7728}, new SkillEffect(Skills.CONSTRUCTION, 1, 0), "You feel refreshed and ready for more building.")),
CUP_OF_TEA_CLAY_MILKY(new Drink(new int[] {7731, 7728}, new SkillEffect(Skills.CONSTRUCTION, 1, 0))), CUP_OF_TEA_CLAY_MILKY(new Drink(new int[] {7731, 7728}, new SkillEffect(Skills.CONSTRUCTION, 1, 0), "You feel refreshed and ready for more building.")),
CUP_OF_TEA_WHITE(new Drink(new int[] {7733, 7732}, new SkillEffect(Skills.CONSTRUCTION, 2, 0), "You feel refreshed and ready for more building.")), CUP_OF_TEA_WHITE(new Drink(new int[] {7733, 7732}, new SkillEffect(Skills.CONSTRUCTION, 2, 0), "You feel refreshed and ready for more building.")),
CUP_OF_TEA_WHITE_MILKY(new Drink(new int[] {7734, 7732}, new SkillEffect(Skills.CONSTRUCTION, 2, 0))), CUP_OF_TEA_WHITE_MILKY(new Drink(new int[] {7734, 7732}, new SkillEffect(Skills.CONSTRUCTION, 2, 0), "You feel refreshed and ready for more building.")),
CUP_OF_TEA_GOLD(new Drink(new int[] {7736, 7735}, new SkillEffect(Skills.CONSTRUCTION, 3, 0), "You feel refreshed and ready for more building.")), CUP_OF_TEA_GOLD(new Drink(new int[] {7736, 7735}, new SkillEffect(Skills.CONSTRUCTION, 3, 0), "You feel refreshed and ready for more building.")),
CUP_OF_TEA_GOLD_MILKY(new Drink(new int[] {7737, 7735}, new SkillEffect(Skills.CONSTRUCTION, 3, 0))), CUP_OF_TEA_GOLD_MILKY(new Drink(new int[] {7737, 7735}, new SkillEffect(Skills.CONSTRUCTION, 3, 0), "You feel refreshed and ready for more building.")),
/** Miscellaneous */ /** Miscellaneous */
CHOCOLATE_BAR(new Food(new int[] {1973}, new HealingEffect(3))), CHOCOLATE_BAR(new Food(new int[] {1973}, new HealingEffect(3))),
@@ -1,20 +0,0 @@
package content.data.consumables.effects;
import core.game.consumable.ConsumableEffect;
import core.game.node.entity.player.Player;
public class NettleTeaEffect extends ConsumableEffect {
private final static int healing = 3;
@Override
public void activate(Player p) {
final ConsumableEffect effect = p.getSkills().getLifepoints() < p.getSkills().getMaximumLifepoints() ? new MultiEffect(new HealingEffect(3), new EnergyEffect(5)) : new HealingEffect(3);
effect.activate(p);
}
@Override
public int getHealthEffectValue(Player player) {
return healing;
}
}
@@ -43,6 +43,7 @@ class EmptyOptionListener : InteractionListener {
BUCKET_OF_SLIME(Items.BUCKET_OF_SLIME_4286, Items.BUCKET_1925, "You empty the contents of the bucket on the floor.", Sounds.LIQUID_2401), BUCKET_OF_SLIME(Items.BUCKET_OF_SLIME_4286, Items.BUCKET_1925, "You empty the contents of the bucket on the floor.", Sounds.LIQUID_2401),
VIAL_OF_WATER(Items.VIAL_OF_WATER_227, Items.VIAL_229, "You empty the vial.", Sounds.LIQUID_2401), VIAL_OF_WATER(Items.VIAL_OF_WATER_227, Items.VIAL_229, "You empty the vial.", Sounds.LIQUID_2401),
BOWL_OF_WATER(Items.BOWL_OF_WATER_1921, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401), BOWL_OF_WATER(Items.BOWL_OF_WATER_1921, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401),
BOWL_OF_HOT_WATER(Items.BOWL_OF_HOT_WATER_4456, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401),
JUG_OF_WATER(Items.JUG_OF_WATER_1937, Items.JUG_1935, "You empty the contents of the jug onto the floor.", Sounds.LIQUID_2401), JUG_OF_WATER(Items.JUG_OF_WATER_1937, Items.JUG_1935, "You empty the contents of the jug onto the floor.", Sounds.LIQUID_2401),
BURNT_PIE(Items.BURNT_PIE_2329, Items.PIE_DISH_2313, "You empty the pie dish."), BURNT_PIE(Items.BURNT_PIE_2329, Items.PIE_DISH_2313, "You empty the pie dish."),
POTION(Items.POTION_195, Items.VIAL_229, "You empty the vial.", Sounds.LIQUID_2401), POTION(Items.POTION_195, Items.VIAL_229, "You empty the vial.", Sounds.LIQUID_2401),
@@ -51,6 +52,30 @@ class EmptyOptionListener : InteractionListener {
CUP_OF_TEA(Items.CUP_OF_TEA_4242, Items.EMPTY_CUP_1980, "You empty the cup of tea.", Sounds.LIQUID_2401), CUP_OF_TEA(Items.CUP_OF_TEA_4242, Items.EMPTY_CUP_1980, "You empty the cup of tea.", Sounds.LIQUID_2401),
NETTLE_WATER(Items.NETTLE_WATER_4237, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401), NETTLE_WATER(Items.NETTLE_WATER_4237, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401),
NETTLE_TEA_MILKY(Items.NETTLE_TEA_4240, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401), NETTLE_TEA_MILKY(Items.NETTLE_TEA_4240, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401),
NETTLE_TEA_CUP(Items.CUP_OF_TEA_4242, Items.EMPTY_CUP_1980, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
NETTLE_TEA_CUP_MILKY(Items.CUP_OF_TEA_4243, Items.EMPTY_CUP_1980, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
TEA_CUP_WATER(Items.CUP_OF_WATER_4458, Items.EMPTY_CUP_1980, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
TEA_CUP_HOT_WATER(Items.CUP_OF_HOT_WATER_4460, Items.EMPTY_CUP_1980, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
NETTLE_TEA_PORCELAIN(Items.CUP_OF_TEA_4245, Items.PORCELAIN_CUP_4244, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
NETTLE_TEA_PORCELAIN_MILKY(Items.CUP_OF_TEA_4246, Items.PORCELAIN_CUP_4244, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
BUILDERS_TEA1(Items.CUP_OF_TEA_7730, Items.EMPTY_CUP_7728, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
BUILDERS_TEA1_MILKY(Items.CUP_OF_TEA_7731, Items.EMPTY_CUP_7728, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
BUILDERS_TEA2(Items.CUP_OF_TEA_7733, Items.PORCELAIN_CUP_7732, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
BUILDERS_TEA2_MILKY(Items.CUP_OF_TEA_7734, Items.PORCELAIN_CUP_7732, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
BUILDERS_TEA3(Items.CUP_OF_TEA_7736, Items.PORCELAIN_CUP_7735, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
BUILDERS_TEA3_MILKY(Items.CUP_OF_TEA_7737, Items.PORCELAIN_CUP_7735, "You empty the contents of the cup onto the floor.", Sounds.LIQUID_2401),
CLAY_POT_OF_TEA4(Items.POT_OF_TEA_4_7692, Items.TEAPOT_7702, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
CLAY_POT_OF_TEA3(Items.POT_OF_TEA_3_7694, Items.TEAPOT_7702, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
CLAY_POT_OF_TEA2(Items.POT_OF_TEA_2_7696, Items.TEAPOT_7702, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
CLAY_POT_OF_TEA1(Items.POT_OF_TEA_1_7698, Items.TEAPOT_7702, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
PORCELAIN_POT_OF_TEA4(Items.POT_OF_TEA_4_7704, Items.TEAPOT_7714, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
PORCELAIN_POT_OF_TEA3(Items.POT_OF_TEA_3_7706, Items.TEAPOT_7714, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
PORCELAIN_POT_OF_TEA2(Items.POT_OF_TEA_2_7708, Items.TEAPOT_7714, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
PORCELAIN_POT_OF_TEA1(Items.POT_OF_TEA_1_7710, Items.TEAPOT_7714, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
GOLD_PORCELAIN_POT_OF_TEA4(Items.POT_OF_TEA_4_7716, Items.TEAPOT_7726, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
GOLD_PORCELAIN_POT_OF_TEA3(Items.POT_OF_TEA_3_7718, Items.TEAPOT_7726, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
GOLD_PORCELAIN_POT_OF_TEA2(Items.POT_OF_TEA_2_7720, Items.TEAPOT_7726, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
GOLD_PORCELAIN_POT_OF_TEA1(Items.POT_OF_TEA_1_7722, Items.TEAPOT_7726, "You empty the contents of the pot onto the floor", Sounds.LIQUID_2401),
BURNT_CURRY(Items.BURNT_CURRY_2013, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401), BURNT_CURRY(Items.BURNT_CURRY_2013, Items.BOWL_1923, "You empty the contents of the bowl onto the floor.", Sounds.LIQUID_2401),
BURNT_GNOMEBOWL(Items.BURNT_GNOMEBOWL_2175, Items.GNOMEBOWL_MOULD_2166, "You empty the contents of the gnomebowl onto the floor."), BURNT_GNOMEBOWL(Items.BURNT_GNOMEBOWL_2175, Items.GNOMEBOWL_MOULD_2166, "You empty the contents of the gnomebowl onto the floor."),
BURNT_EGG(Items.BURNT_EGG_7090, Items.BOWL_1923, "You empty the contents of the bowl onto the floor."), BURNT_EGG(Items.BURNT_EGG_7090, Items.BOWL_1923, "You empty the contents of the bowl onto the floor."),
@@ -129,6 +129,14 @@ class WaterSourceListener : InteractionListener {
FISHBOWL( FISHBOWL(
inputs = intArrayOf(Items.FISHBOWL_6667), inputs = intArrayOf(Items.FISHBOWL_6667),
output = Items.FISHBOWL_6668 output = Items.FISHBOWL_6668
),
KETTLE(
inputs = intArrayOf(Items.KETTLE_7688),
output = Items.FULL_KETTLE_7690
),
CUP(
inputs = intArrayOf(Items.EMPTY_CUP_1980),
output = Items.CUP_OF_WATER_4458
); );
companion object companion object
@@ -1,6 +1,8 @@
package content.global.skill.construction; package content.global.skill.construction;
import core.api.Container;
import org.rs09.consts.Items;
import core.game.node.entity.Entity; import core.game.node.entity.Entity;
import core.game.node.entity.player.Player; import core.game.node.entity.player.Player;
import core.game.world.map.zone.MapZone; import core.game.world.map.zone.MapZone;
@@ -91,6 +93,7 @@ public final class HouseZone extends MapZone {
public boolean leave(Entity e, boolean logout) { public boolean leave(Entity e, boolean logout) {
if (e instanceof Player) { if (e instanceof Player) {
Player p = (Player) e; Player p = (Player) e;
remove_items(p);
// The below tears down the house if the owner was the one who left // The below tears down the house if the owner was the one who left
if (house == p.getHouseManager()) { if (house == p.getHouseManager()) {
house.expelGuests(p); house.expelGuests(p);
@@ -121,4 +124,11 @@ public final class HouseZone extends MapZone {
} }
return true; return true;
} }
private void remove_items(Player p) {
for (int item = Items.KETTLE_7688; item <= Items.CHEFS_DELIGHT_7755; item++) {//Removes all PoH versions of tea and beer barrel-related items
removeAll(p, item, Container.INVENTORY);
removeAll(p, item, Container.BoB);
}
}
} }
@@ -1,76 +0,0 @@
package content.global.skill.construction.decoration;
import core.game.interaction.NodeUsageEvent;
import core.game.interaction.UseWithHandler;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.game.node.scenery.Scenery;
import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import org.rs09.consts.Items;
/**
* Handles the Construction beer barrels.
* @author Splinter
*/
@Initializable
public class BeerBarrelPlugin extends UseWithHandler {
/**
* The object ids
*/
private static final int[] OBJECTS = new int[] {
13568, 13569, 13570, 13571, 13572, 13573
};
/**
* Constructs a new {@Code BeerBarrelPlugin} {@Code Object}
*/
public BeerBarrelPlugin() {
super(1919);
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
for (int id : OBJECTS) {
addHandler(id, OBJECT_TYPE, this);
}
return this;
}
@Override
public boolean handle(NodeUsageEvent event) {
Player player = event.getPlayer();
final Scenery object = (Scenery) event.getUsedWith();
if (player.getInventory().remove(new Item(Items.BEER_GLASS_1919))) {
player.animate(Animation.create(833));
player.sendMessage("You fill up your glass.");
player.getInventory().add(new Item(getReward(object.getId()), 1));
}
return true;
}
/**
* Get the beer reward based on the interaced barrel.
* @return the item to give.
*/
public int getReward(int barrelId) {
switch (barrelId) {
case 13568:
return 1917;
case 13569:
return 5763;
case 13570:
return 1905;
case 13571:
return 1909;
case 13572:
return 1911;
case 13573:
return 5755;
}
return 1917;
}
}
@@ -0,0 +1,78 @@
package content.global.skill.construction.decoration.kitchen
import core.api.addItem
import core.api.freeSlots
import core.api.sendDialogue
import core.game.dialogue.DialogueFile
import core.game.dialogue.Topic
import core.game.node.entity.player.Player
import core.tools.END_DIALOGUE
abstract class AbstractContainer(containerId: Int, containers: Map<Int,List<Pair<String, Int>>>, private val containerName: String) : DialogueFile() {
private val container = containers[containerId]!!
private val containerItemsNames = container.map { it.first }
private val containerItemsIds = container.map { it.second }
private val size = container.size
private val itemsPerPage = 4
private fun checkItem(player: Player, idx : Int){
val item = containerItemsIds[idx]
if (addItem(player, item)){
end()
}
else{
sendDialogue(player, "You need at least one free inventory space to take from the $containerName.").also { stage = END_DIALOGUE }
}
}
private fun createTopics(page: Int): MutableList<Topic<Int>> {
val startIndex = (page - 1) * itemsPerPage
val endIndex = (startIndex + itemsPerPage).coerceAtMost(size)
val topics = containerItemsNames.subList(startIndex, endIndex)
.mapIndexed { index, item -> Topic(item, startIndex + index + 1, skipPlayer = true) }
.toMutableList()
// Add "More" button if there's another page or to loop back
if (endIndex < size || page > 1) {
topics.add(Topic("More", endIndex + 1, skipPlayer = true))
}
return topics
}
override fun handle(componentID: Int, buttonID: Int) {
if (freeSlots(player!!) == 0) {
sendDialogue(player!!, "You need at least one free inventory space to take from the $containerName.").also { stage = END_DIALOGUE }
return
}
val itemsPerPage = 4
when (stage) {
0, size + 1 -> { // Initial stage or final more button clicked
val topics = createTopics(1)
showTopics(*topics.toTypedArray()).also { stage = 1 }
}
in 1..size -> {
val currentPage = (stage-1) / itemsPerPage
val startIndex = currentPage * itemsPerPage
if (buttonID == itemsPerPage + 1) { // "More" button clicked (but not the last one)
val topics = createTopics(currentPage + 1)
showTopics(*topics.toTypedArray()).also { stage = currentPage*itemsPerPage + 1 }
} else { // Handle item selection
val itemIndex = startIndex + (buttonID - 1)
if (itemIndex < size) {
checkItem(player!!, itemIndex)
}
}
}
else -> end()
}
}
}
@@ -0,0 +1,29 @@
package content.global.skill.construction.decoration.kitchen
import core.api.*
import core.game.interaction.InteractionListener
import org.rs09.consts.Items
class BeerBarrelInteraction : InteractionListener {
companion object{
private val barrelMap = mapOf(
org.rs09.consts.Scenery.BEER_BARREL_13568 to Items.BEER_7740,
org.rs09.consts.Scenery.CIDER_BARREL_13569 to Items.CIDER_7752,
org.rs09.consts.Scenery.ASGARNIAN_ALE_13570 to Items.ASGARNIAN_ALE_7744,
org.rs09.consts.Scenery.GREENMAN_S_ALE_13571 to Items.GREENMANS_ALE_7746,
org.rs09.consts.Scenery.DRAGON_BITTER_13572 to Items.DRAGON_BITTER_7748,
org.rs09.consts.Scenery.CHEF_S_DELIGHT_13573 to Items.CHEFS_DELIGHT_7754,
)
}
override fun defineListeners() {
onUseWith(SCENERY, Items.BEER_GLASS_7742, *barrelMap.keys.toIntArray()){ player, used, with ->
val drinkName = with.name.lowercase().replace("barrel", "").trim()+"."
if (removeItem(player, used)){
sendMessage(player, "You fill up your glass with $drinkName")
addItem(player, barrelMap[with.id]!!)
}
return@onUseWith true
}
}
}
@@ -1,77 +0,0 @@
package content.global.skill.construction.decoration.kitchen;
import core.game.interaction.NodeUsageEvent;
import core.game.interaction.UseWithHandler;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.game.node.scenery.Scenery;
import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import org.rs09.consts.Items;
/**
* Handles the Construction beer barrels.
* @author Splinter
*/
@Initializable
public class BeerBarrelPlugin extends UseWithHandler {
/**
* The object ids
*/
private static final int[] OBJECTS = new int[] {
13568, 13569, 13570, 13571, 13572, 13573
};
/**
* Constructs a new {@Code BeerBarrelPlugin} {@Code Object}
*/
public BeerBarrelPlugin() {
super(1919);
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
for (int id : OBJECTS) {
addHandler(id, OBJECT_TYPE, this);
}
return this;
}
@Override
public boolean handle(NodeUsageEvent event) {
Player player = event.getPlayer();
final Scenery object = (Scenery) event.getUsedWith();
if (player.getInventory().remove(new Item(Items.BEER_GLASS_1919))) {
player.animate(Animation.create(3661 + (object.getId() - 13569)));
player.sendMessage("You fill up your glass with " + object.getName().toLowerCase().replace("barrel", "").trim() + ".");
player.getInventory().add(new Item(getReward(object.getId()), 1));
}
return true;
}
/**
* Get the beer reward based on the interacted barrel.
* @return the item to give.
*/
public int getReward(int barrelId) {
switch (barrelId) {
case 13568:
return 1917;
case 13569:
return 5763;
case 13570:
return 1905;
case 13571:
return 1909;
case 13572:
return 1911;
case 13573:
return 5755;
}
return 1917;
}
}
@@ -0,0 +1,42 @@
package content.global.skill.construction.decoration.kitchen
import core.api.openDialogue
import core.game.interaction.IntType
import core.game.interaction.InteractionListener
import org.rs09.consts.Items
import org.rs09.consts.Scenery
class LarderListener : InteractionListener {
companion object {
private val wooden_larder_items = listOf(
"Tea Leaves" to Items.TEA_LEAVES_7738,
"Bucket of Milk" to Items.BUCKET_OF_MILK_1927
)
private val oak_larder_items = wooden_larder_items + listOf(
"Eggs" to Items.EGG_1944,
"Pot of Flour" to Items.POT_OF_FLOUR_1933
)
private val teak_larder_items = oak_larder_items + listOf(
"Potatoes" to Items.POTATO_1942,
"Garlic" to Items.GARLIC_1550,
"Onions" to Items.ONION_1957,
"Cheese" to Items.CHEESE_1985
)
val larders = mapOf(
Scenery.LARDER_13565 to wooden_larder_items,
Scenery.LARDER_13566 to oak_larder_items,
Scenery.LARDER_13567 to teak_larder_items
)
}
override fun defineListeners() {
on(larders.keys.toIntArray(), IntType.SCENERY, "Search") { player, node ->
openDialogue(player, LarderDialogue(node.id))
return@on true
}
}
class LarderDialogue(shelfId: Int) : AbstractContainer(shelfId, larders, "larder")
}
@@ -1,149 +0,0 @@
package content.global.skill.construction.decoration.kitchen;
import core.cache.def.impl.SceneryDefinition;
import core.plugin.Initializable;
import core.game.dialogue.DialoguePlugin;
import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.plugin.Plugin;
import core.plugin.ClassScanner;
import org.rs09.consts.Items;
/**
* Handles the interactions for the three Larders.
* @author Splinter
*/
@Initializable
public final class LarderPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ClassScanner.definePlugin(new LarderDialogue());
SceneryDefinition.forId(13565).getHandlers().put("option:search", this);
SceneryDefinition.forId(13566).getHandlers().put("option:search", this);
SceneryDefinition.forId(13567).getHandlers().put("option:search", this);
return this;
}
@Override
public boolean handle(Player player, Node node, String option) {
player.getDialogueInterpreter().open(42048, node.getId());
return true;
}
/**
* Dialogue options for the Larders.
* @author Splinter
* @version 1.0
*/
public final class LarderDialogue extends DialoguePlugin {
/**
* Constructs a new {@code LarderDialogue} {@code Object}.
*/
public LarderDialogue() {
/**
* empty.
*/
}
/**
* Constructs a new {@code LarderDialogue} {@code Object}.
*
* @param player
* the player.
*/
public LarderDialogue(Player player) {
super(player);
}
@Override
public DialoguePlugin newInstance(Player player) {
return new LarderDialogue(player);
}
@Override
public boolean open(Object... args) {
int id = (int) args[0];
switch (id) {
case 13565:
interpreter.sendOptions("Select an Option", "Tea Leaves", "Bucket of Milk");
stage = 1;
break;
case 13566:
interpreter.sendOptions("Select an Option", "Tea Leaves", "Bucket of Milk", "Eggs", "Pot of Flour");
stage = 1;
break;
case 13567:
interpreter.sendOptions("Select an Option", "Tea Leaves", "Bucket of Milk", "Eggs", "Pot of Flour", "More Options");
stage = 1;
break;
}
return true;
}
@Override
public boolean handle(int interfaceId, int buttonId) {
if (player.getInventory().freeSlots() < 1) {
player.sendMessage("You need at least one free inventory space to take from the larder.");
end();
return true;
}
switch (stage) {
case 1:
switch (buttonId) {
case 1:
player.getInventory().add(new Item(Items.TEA_LEAVES_7738, 1));
end();
break;
case 2:
player.getInventory().add(new Item(Items.BUCKET_OF_MILK_1927, 1));
end();
break;
case 3:
player.getInventory().add(new Item(Items.EGG_1944, 1));
end();
break;
case 4:
player.getInventory().add(new Item(Items.POT_OF_FLOUR_1933, 1));
end();
break;
case 5:
player.getDialogueInterpreter().sendOptions(
"Select an Option", "Potatoes", "Garlic", "Onions", "Cheese");
stage = 2;
break;
}
break;
case 2:
switch (buttonId) {
case 1:
player.getInventory().add(new Item(Items.POTATO_1942, 1));
end();
break;
case 2:
player.getInventory().add(new Item(Items.GARLIC_1550, 1));
end();
break;
case 3:
player.getInventory().add(new Item(Items.ONION_1957, 1));
end();
break;
case 4:
player.getInventory().add(new Item(Items.CHEESE_1985, 1));
end();
break;
}
}
return true;
}
@Override
public int[] getIds() {
return new int[] { 42048 };
}
}
}
@@ -0,0 +1,97 @@
package content.global.skill.construction.decoration.kitchen
import core.api.*
import core.game.interaction.IntType
import core.game.interaction.InteractionListener
import org.rs09.consts.Items
import org.rs09.consts.Scenery
class ShelfListener : InteractionListener {
companion object {
// Source for text https://www.youtube.com/watch?v=SNuqelEft3Y
private val woodshelf_1_items = listOf(
"Kettle" to Items.KETTLE_7688,
"Teapot" to Items.TEAPOT_7702,
"Cup" to Items.EMPTY_CUP_7728
)
private val woodshelf_2_items = woodshelf_1_items + listOf(
"Beer glass" to Items.BEER_GLASS_7742
)
private val woodshelf_3_items = woodshelf_2_items.map { (name, itemId) ->
when (name) {
"Cup" -> {
"Porcelain cup" to Items.PORCELAIN_CUP_7732
}
"Teapot" -> {
"Teapot" to Items.TEAPOT_7714
}
else -> {
name to itemId
}
}
} + listOf("Cake tin" to Items.CAKE_TIN_1887)
private val oakshelf_1_items = woodshelf_2_items + listOf("Cake tin" to Items.CAKE_TIN_1887) + listOf("Bowl" to Items.BOWL_1923)
private val oakshelf_2_items = oakshelf_1_items.map { (name, itemId) ->
when (name) {
"Cup" -> {
"Porcelain cup" to Items.PORCELAIN_CUP_7732
}
"Teapot" -> {
"Teapot" to Items.TEAPOT_7714
}
else -> {
name to itemId
}
}
} + listOf("Pie dish" to Items.PIE_DISH_2313)
private val teakshelf_1_items = oakshelf_2_items + listOf(
"Pot" to Items.EMPTY_POT_1931
)
private val teakshelf_2_items = teakshelf_1_items.map { (name, itemId) ->
when (name) {
"Porcelain cup" -> {
"Porcelain cup" to Items.PORCELAIN_CUP_7735
}
"Teapot" -> {
"Teapot" to Items.TEAPOT_7726
}
else -> {
name to itemId
}
}
} + listOf("Chef's Hat" to Items.CHEFS_HAT_1949)
val shelves = mapOf(
Scenery.SHELVES_13545 to woodshelf_1_items,
Scenery.SHELVES_13546 to woodshelf_2_items,
Scenery.SHELVES_13547 to woodshelf_3_items,
Scenery.SHELVES_13548 to oakshelf_1_items,
Scenery.SHELVES_13549 to oakshelf_2_items,
Scenery.SHELVES_13550 to teakshelf_1_items,
Scenery.SHELVES_13551 to teakshelf_2_items,
)
}
override fun defineListeners() {
on(shelves.keys.toIntArray(), IntType.SCENERY, "Search") { player, node ->
openDialogue(player, ShelfDialogue(node.id))
return@on true
}
}
class ShelfDialogue(shelfId: Int) : AbstractContainer(shelfId, shelves, "shelf")
}
@@ -1,239 +0,0 @@
package content.global.skill.construction.decoration.kitchen;
import core.cache.def.impl.SceneryDefinition;
import core.game.dialogue.DialoguePlugin;
import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.plugin.Initializable;
import core.plugin.Plugin;
import core.plugin.ClassScanner;
import org.rs09.consts.Items;
/**
* Handles the shelves in the kitchen room.
* @author Splinter
*/
@Initializable
public final class ShelfPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ClassScanner.definePlugin(new ShelfDialogue());
for (int i = 13545; i < 13552; i++) {
SceneryDefinition.forId(i).getHandlers().put("option:search", this);
}
return this;
}
@Override
public boolean handle(Player player, Node node, String option) {
player.getDialogueInterpreter().open(778341, node.getId());
return true;
}
/**
* Dialogue options for the shelves, what a mess!
* @author Splinter
* @version 1.0
*/
public final class ShelfDialogue extends DialoguePlugin {
/**
* Constructs a new {@code ShelfDialogue} {@code Object}.
*/
public ShelfDialogue() {
/**
* empty.
*/
}
/**
* Constructs a new {@code ShelfDialogue} {@code Object}.
* @param player the player.
*/
public ShelfDialogue(Player player) {
super(player);
}
@Override
public DialoguePlugin newInstance(Player player) {
return new ShelfDialogue(player);
}
@Override
public boolean open(Object... args) {
int id = (int) args[0];
switch (id) {
case 13545:// wood 1
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup");
stage = 1;
break;
case 13546:// wood 2
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass");
stage = 1;
break;
case 13547:// wood 3
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Cake tin");
stage = 1;
break;
case 13548:// oak 1
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Bowl");
stage = 2;
break;
case 13549:// oak 2
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
stage = 3;
break;
case 13550:// teak 1
case 13551:
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
stage = 5;
break;
}
return true;
}
@Override
public boolean handle(int interfaceId, int buttonId) {
if (player.getInventory().freeSlots() < 1) {
player.sendMessage("You need at least one free inventory space to take from the shelves.");
end();
return true;
}
switch (stage) {
case 1:// all wood shelves
switch (buttonId) {
case 1:
end();
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
break;
case 2:
end();
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
break;
case 3:
end();
player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
break;
case 4:
end();
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
break;
case 5:
end();
player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
break;
}
break;
case 2:// Oak shelf #1
switch (buttonId) {
case 1:
end();
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
break;
case 2:
end();
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
break;
case 3:
end();
player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
break;
case 4:
end();
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
break;
case 5:
end();
player.getInventory().add(new Item(Items.BOWL_1923, 1));
break;
}
break;
case 3:// Oak shelves #2 only
switch (buttonId) {
case 1:
end();
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
break;
case 2:
end();
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
break;
case 3:
end();
player.getInventory().add(new Item(Items.PORCELAIN_CUP_4244, 1));
break;
case 4:
end();
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
break;
case 5:
interpreter.sendOptions("Select an Option", "Bowl", "Cake tin");
stage = 4;
break;
}
break;
case 4:// Oak shelves #2 only
switch (buttonId) {
case 1:
end();
player.getInventory().add(new Item(Items.BOWL_1923, 1));
break;
case 2:
end();
player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
break;
}
case 5:// teak shelves
switch (buttonId) {
case 1:
end();
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
break;
case 2:
end();
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
break;
case 3:
end();
player.getInventory().add(new Item(Items.PORCELAIN_CUP_7735, 1));
break;
case 4:
end();
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
break;
case 5:
interpreter.sendOptions("Select an Option", "Bowl", "Pie dish", "Empty pot");
stage = 6;
break;
}
break;
case 6:// teak shelves
switch (buttonId) {
case 1:
end();
player.getInventory().add(new Item(Items.BOWL_1923, 1));
break;
case 2:
end();
player.getInventory().add(new Item(Items.PIE_DISH_2313, 1));
break;
case 3:
end();
player.getInventory().add(new Item(Items.EMPTY_POT_1931, 1));
break;
}
break;
}
return true;
}
@Override
public int[] getIds() {
return new int[] { 778341 };
}
}
}
@@ -0,0 +1,88 @@
package content.global.skill.construction.decoration.kitchen
import core.api.*
import core.game.interaction.InteractionListener
import core.game.interaction.QueueStrength
import org.rs09.consts.Scenery as SceneryConst
import org.rs09.consts.Items
import core.game.node.scenery.Scenery
import core.tools.secondsToTicks
class StoveInteraction : InteractionListener {
// Imagine if these indexes incremented logically...
companion object{
val valid_stoves = intArrayOf(
SceneryConst.FIREPIT_WITH_HOOK_13529,
SceneryConst.FIREPIT_WITH_POT_13531,
SceneryConst.SMALL_OVEN_13533,
SceneryConst.LARGE_OVEN_13536,
SceneryConst.STEEL_RANGE_13539,
SceneryConst.FANCY_RANGE_13542
)
val in_progress_stoves = intArrayOf(
SceneryConst.FIREPIT_WITH_HOOK_13530,
SceneryConst.FIREPIT_WITH_POT_13532,
SceneryConst.SMALL_OVEN_13534,
SceneryConst.LARGE_OVEN_13537,
SceneryConst.STEEL_RANGE_13541,
SceneryConst.FANCY_RANGE_13544
)
val stoves_with_kettle = intArrayOf(
SceneryConst.FIREPIT_WITH_HOOK_13530,
SceneryConst.FIREPIT_WITH_POT_13532,
SceneryConst.SMALL_OVEN_13535,
SceneryConst.LARGE_OVEN_13538,
SceneryConst.STEEL_RANGE_13540,
SceneryConst.FANCY_RANGE_13543
)
const val kettleBoiled = "kettle_boiled"
}
override fun defineListeners() {
onUseWith(SCENERY, Items.FULL_KETTLE_7690, *valid_stoves){ player, used, with ->
val idx = valid_stoves.indexOf(with.id)
if (removeItem(player, used)){
replaceScenery(with as Scenery, in_progress_stoves[idx], -1)
sendMessage(player, "You place the kettle over the fire.")
setAttribute(player, kettleBoiled, 1)
queueScript(player, secondsToTicks(10), QueueStrength.SOFT){ _ ->
sendMessage(player, "The kettle boils.")
// Of course they changed how these items work so we need 2 different cases
setAttribute(player, kettleBoiled, 2)
if (with.id in intArrayOf(SceneryConst.FIREPIT_WITH_HOOK_13529, SceneryConst.FIREPIT_WITH_POT_13531))
return@queueScript stopExecuting(player)
else{
getScenery(with.location)?.let { replaceScenery(it, stoves_with_kettle[idx], -1) }
return@queueScript stopExecuting(player)
}
}
}
return@onUseWith true
}
on(stoves_with_kettle, SCENERY, "take-kettle"){ player, node ->
if (getAttribute(player, kettleBoiled, 0) == 0){
sendMessage(player, "This is not your kettle.")
return@on false
}
else if (getAttribute(player, kettleBoiled, 0) == 1){
sendMessage(player, "The kettle has not boiled yet.")
return@on false
}
if(addItem(player, Items.HOT_KETTLE_7691)){
replaceScenery(node as Scenery, valid_stoves[stoves_with_kettle.indexOf(node.id)], -1)
setAttribute(player, kettleBoiled, 0)
return@on true
}
else {
sendMessage(player, "You do not have space to do that.")
return@on false
}
}
}
}
@@ -81,7 +81,7 @@ public enum CookableItems {
// bowl foods // bowl foods
BOWL_STEW(2003, 2001, 2005, 25, 117, 68, 392, 68, 392), BOWL_STEW(2003, 2001, 2005, 25, 117, 68, 392, 68, 392),
BOWL_CURRY(2011, 2009, 2013, 60, 280, 38, 332, 38, 332), BOWL_CURRY(2011, 2009, 2013, 60, 280, 38, 332, 38, 332),
BOWL_NETTLE(4239, 4237, 4239, 20, 52, 78, 412, 78, 412), BOWL_NETTLE(4239, 4237, 4239, 20, 53, 78, 412, 78, 412),
BOWL_EGG(7078, 7076, 7090, 13, 50, 0, 0, 90, 438), BOWL_EGG(7078, 7076, 7090, 13, 50, 0, 0, 90, 438),
BOWL_ONION(7084, 1871, 7092, 43, 60, 36, 322, 36, 322), BOWL_ONION(7084, 1871, 7092, 43, 60, 36, 322, 36, 322),
BOWL_MUSHROOM(7082, 7080, 7094, 46, 60, 16, 282, 16, 282), BOWL_MUSHROOM(7082, 7080, 7094, 46, 60, 16, 282, 16, 282),
@@ -33,6 +33,7 @@ class CookingRewrite : InteractionListener {
list.add(RAW_BEEF_2132) list.add(RAW_BEEF_2132)
list.add(RAW_BEAR_MEAT_2136) list.add(RAW_BEAR_MEAT_2136)
list.add(SEAWEED_401) list.add(SEAWEED_401)
list.add(Items.BOWL_OF_WATER_1921)
RAW_FOODS = list.toIntArray() RAW_FOODS = list.toIntArray()
} }
@@ -79,6 +80,10 @@ class CookingRewrite : InteractionListener {
player.packetDispatch.sendMessage("You need to cook this on a range.") player.packetDispatch.sendMessage("You need to cook this on a range.")
return@onUseWith false return@onUseWith false
} }
Items.BOWL_OF_WATER_1921 ->{
cook(player, obj, Items.BOWL_OF_WATER_1921, Items.BOWL_OF_HOT_WATER_4456, 1)
return@onUseWith true
}
} }
//cook a standard item //cook a standard item
@@ -0,0 +1,166 @@
package content.global.skill.cooking
import core.api.*
import core.game.interaction.InteractionListener
import core.game.node.Node
import core.game.node.entity.player.Player
import core.game.node.entity.skill.Skills
import org.rs09.consts.Items
/**
* This deals with all tea mixtures
* cup of tea
* nettle tea
* nettle water
* nettle tea (cup)
* poh tea
* clay
* porcelain
* gold trim
* Flask
*/
class TeaInteraction : InteractionListener {
private val teaMilkMap = mapOf(
Items.NETTLE_TEA_4239 to Items.NETTLE_TEA_4240,
Items.CUP_OF_TEA_4242 to Items.CUP_OF_TEA_4243,
Items.CUP_OF_TEA_4245 to Items.CUP_OF_TEA_4246,
Items.CUP_OF_TEA_7730 to Items.CUP_OF_TEA_7731,
Items.CUP_OF_TEA_7733 to Items.CUP_OF_TEA_7734,
Items.CUP_OF_TEA_7736 to Items.CUP_OF_TEA_7737,
)
private val teaCupMap = mapOf(
Items.NETTLE_TEA_4239 to Items.CUP_OF_TEA_4242,
Items.NETTLE_TEA_4240 to Items.CUP_OF_TEA_4243,
Items.BOWL_OF_HOT_WATER_4456 to Items.CUP_OF_HOT_WATER_4460
)
// This is specifically for the porcelain cup without a handle for Ghost Ahoy
private val teaCupPorcelainMap = mapOf(
Items.NETTLE_TEA_4239 to Items.CUP_OF_TEA_4245,
Items.NETTLE_TEA_4240 to Items.CUP_OF_TEA_4246
)
private val emptyTeaPot = intArrayOf(
Items.TEAPOT_7702,
Items.TEAPOT_7714,
Items.TEAPOT_7726
)
private val leafTeaPot = intArrayOf(
Items.TEAPOT_WITH_LEAVES_7700,
Items.TEAPOT_WITH_LEAVES_7712,
Items.TEAPOT_WITH_LEAVES_7724
)
private val filledTeaPot = intArrayOf(
Items.POT_OF_TEA_4_7692,
Items.POT_OF_TEA_3_7694,
Items.POT_OF_TEA_2_7696,
Items.POT_OF_TEA_1_7698,
Items.POT_OF_TEA_4_7704,
Items.POT_OF_TEA_3_7706,
Items.POT_OF_TEA_2_7708,
Items.POT_OF_TEA_1_7710,
Items.POT_OF_TEA_4_7716,
Items.POT_OF_TEA_3_7718,
Items.POT_OF_TEA_2_7720,
Items.POT_OF_TEA_1_7722,
)
private val emptyBuilderCup = intArrayOf(
Items.EMPTY_CUP_7728,
Items.PORCELAIN_CUP_7732,
Items.PORCELAIN_CUP_7735
)
override fun defineListeners() {
onUseWith(ITEM, teaMilkMap.keys.toIntArray(), Items.BUCKET_OF_MILK_1927){ player, used, with ->
if (removeItem(player, used) && removeItem(player, with)){
addItem(player, teaMilkMap[used.id]!!)
addItem(player, Items.BUCKET_1925)
}
return@onUseWith true
}
onUseWith(ITEM, teaCupMap.keys.toIntArray(), Items.EMPTY_CUP_1980){ player, used, with ->
if (used.id != Items.BOWL_OF_HOT_WATER_4456){
if (getDynLevel(player, Skills.COOKING) < 20){
sendDialogue(player, "You need a cooking level of 20 to make tea.")
return@onUseWith false
}
}
if (removeItem(player, used) && removeItem(player, with)) {
addItem(player, teaCupMap[used.id]!!)
addItem(player, Items.BOWL_1923)
}
return@onUseWith true
}
onUseWith(ITEM, Items.BOWL_OF_WATER_1921, Items.NETTLES_4241) { player, used, with ->
if (removeItem(player, used) && removeItem(player, with)){
addItem(player, Items.NETTLE_WATER_4237)
}
return@onUseWith true
}
onUseWith(ITEM, teaCupPorcelainMap.keys.toIntArray(), Items.PORCELAIN_CUP_4244){player, used, with ->
if (getDynLevel(player, Skills.COOKING) < 20){
sendDialogue(player, "You need a cooking level of 20 to make tea.")
return@onUseWith false
}
if(removeItem(player, used) && removeItem(player, with)){
addItem(player, teaCupPorcelainMap[used.id]!!)
addItem(player, Items.BOWL_1923)
}
return@onUseWith true
}
onUseWith(ITEM, emptyTeaPot, Items.TEA_LEAVES_7738) { player, used, with ->
if (removeItem(player, used) && removeItem(player, with)){
addItem(player, used.id - 2)
}
return@onUseWith true
}
onUseWith(ITEM, leafTeaPot, Items.HOT_KETTLE_7691) { player, used, with ->
if (getDynLevel(player, Skills.COOKING) < 20){
sendDialogue(player,"You need to be level 20 to make tea.")
return@onUseWith false
}
if (removeItem(player, used) && removeItem(player, with)){
addItem(player, Items.KETTLE_7688)
addItem(player, used.id - 8)
rewardXP(player, Skills.COOKING, 53.0)
}
return@onUseWith true
}
onUseWith(ITEM, filledTeaPot, *emptyBuilderCup) { player, used, with ->
return@onUseWith fillBuildersTea(player, used, with)
}
}
private fun fillBuildersTea(player: Player, used: Node, with: Node) : Boolean {
if (removeItem(player, used) && removeItem(player, with)){
// Thanks tea pot with tea leaves
if (used.id + 4 in emptyTeaPot){
addItem(player, used.id + 4)
}
else{
addItem(player, used.id + 2)
}
// Why do these cups have a noted form!
if (with.id == Items.EMPTY_CUP_7728){
addItem(player, with.id + 2)
}
else{
addItem(player, with.id + 1)
}
return true
}
return false
}
}
@@ -39,7 +39,7 @@ public final class DesertZone extends MapZone implements Plugin<Object> {
/** /**
* Represents data of water vessils to dry up. * Represents data of water vessils to dry up.
*/ */
private static final int[][] VESSILS = new int[][] { { 1937, 1935 }, { 1929, 1925 }, { 1921, 1923 }, { 227, 229 } }; private static final int[][] VESSILS = new int[][] { { 1937, 1935 }, { 1929, 1925 }, { 1921, 1923 }, { 227, 229 }, { 4458, 1980} };
/** /**
* Represents the animation of drinking water. * Represents the animation of drinking water.
+2 -1
View File
@@ -3,5 +3,6 @@ package core.api
enum class Container { enum class Container {
INVENTORY, INVENTORY,
BANK, BANK,
EQUIPMENT EQUIPMENT,
BoB
} }
+21
View File
@@ -341,6 +341,12 @@ fun <T> removeItem(player: Player, item: T, container: Container = Container.INV
Container.INVENTORY -> player.inventory.remove(it) Container.INVENTORY -> player.inventory.remove(it)
Container.BANK -> player.bank.remove(it) || player.bankSecondary.remove(it) Container.BANK -> player.bank.remove(it) || player.bankSecondary.remove(it)
Container.EQUIPMENT -> player.equipment.remove(it) Container.EQUIPMENT -> player.equipment.remove(it)
Container.BoB -> {
if (player.familiarManager.hasFamiliar() && player.familiarManager.familiar.isBurdenBeast)
(player.familiarManager.familiar as BurdenBeast).container.remove(it)
else
false
}
} }
} }
@@ -375,6 +381,12 @@ fun addItem(player: Player, id: Int, amount: Int = 1, container: Container = Con
Container.INVENTORY -> player.inventory Container.INVENTORY -> player.inventory
Container.BANK -> player.bank Container.BANK -> player.bank
Container.EQUIPMENT -> player.equipment Container.EQUIPMENT -> player.equipment
Container.BoB -> {
if(player.familiarManager.hasFamiliar() && player.familiarManager.familiar.isBurdenBeast)
(player.familiarManager.familiar as BurdenBeast).container
else
return false
}
} }
return cont.add(Item(id, amount)) return cont.add(Item(id, amount))
@@ -394,6 +406,7 @@ fun replaceSlot(player: Player, slot: Int, item: Item, currentItem: Item? = null
Container.INVENTORY -> player.inventory Container.INVENTORY -> player.inventory
Container.EQUIPMENT -> player.equipment Container.EQUIPMENT -> player.equipment
Container.BANK -> player.bank Container.BANK -> player.bank
Container.BoB -> (player.familiarManager.familiar as BurdenBeast).container
} }
if (item.id == 65535 || item.amount <= 0) { if (item.id == 65535 || item.amount <= 0) {
@@ -1684,6 +1697,14 @@ fun <T> removeAll(player: Player, item: T, container: Container = Container.INVE
player.bank.remove(Item(it, amountInPrimary)) && player.bankSecondary.remove(Item(it, amountInSecondary)) player.bank.remove(Item(it, amountInPrimary)) && player.bankSecondary.remove(Item(it, amountInSecondary))
} }
Container.INVENTORY -> player.inventory.remove(Item(it, amountInInventory(player, it))) Container.INVENTORY -> player.inventory.remove(Item(it, amountInInventory(player, it)))
Container.BoB -> {
if (player.familiarManager.hasFamiliar() && player.familiarManager.familiar.isBurdenBeast){
val cont = (player.familiarManager.familiar as BurdenBeast).container
cont.remove(Item(it, cont.getAmount(it)))
}
else
false
}
} }
} }