diff --git a/assets/NTItemAlias.dbl b/assets/NTItemAlias.dbl index 416d456..b9c134d 100644 --- a/assets/NTItemAlias.dbl +++ b/assets/NTItemAlias.dbl @@ -100,6 +100,9 @@ NTIPAliasType["ruby"] = 99; NTIPAliasType["sapphire"] = 100; NTIPAliasType["topaz"] = 101; NTIPAliasType["skull"] = 102; +NTIPAliasType["swordsandknives"] = 103; +NTIPAliasType["spearsandpolearms"] = 104; +NTIPAliasType["grimoires"] = 105; var NTIPAliasClassID = {}; NTIPAliasClassID["hax"] = 0; NTIPAliasClassID["handaxe"] = 0; @@ -920,6 +923,7 @@ NTIPAliasStat["itemaddpaladinskills"] = [83,3]; NTIPAliasStat["paladinskills"] = NTIPAliasStat["itemaddbarbarianskills"] = [83,4]; NTIPAliasStat["barbarianskills"] = [83,4]; NTIPAliasStat["itemadddruidskills"] = [83,5]; NTIPAliasStat["druidskills"] = [83,5]; NTIPAliasStat["itemaddassassinskills"] = [83,6]; NTIPAliasStat["assassinskills"] = [83,6]; +NTIPAliasStat["itemaddwarlockskills"] = [83,7]; NTIPAliasStat["warlockskills"] = [83,7]; NTIPAliasStat["unsentparam1"] = 84; NTIPAliasStat["itemaddexperience"] = 85; diff --git a/assets/word_lists/all_words.txt b/assets/word_lists/all_words.txt index 6bb9579..9049886 100644 --- a/assets/word_lists/all_words.txt +++ b/assets/word_lists/all_words.txt @@ -76,6 +76,7 @@ AJHEED AKARA AKARAN AKARAT'S +AL'DIABOLOS ALACRITY ALADDIN'S ALARIC @@ -176,6 +177,7 @@ ARREAT ARREAT'S ARROW ARROWS +ARS ARSENAL ART ARTFUL @@ -964,6 +966,7 @@ DRULAN'S DRUS DRY DUE +DUL'MEPHISTOS DUN DUNE DUNES @@ -2149,6 +2152,7 @@ MAXIMUM MAY MCAULEY'S MEASURE +MEASURED MEAT MEATSCRAPE MECHANIC'S @@ -2358,6 +2362,7 @@ ONES ONLY ONLY) OOZE +OPALVEIN OPEN OPENS OPTIMAL @@ -3010,6 +3015,7 @@ SISTER'S SIX SIZE SIZE: +SLING SKELETAL SKELETON SKELETONS @@ -3442,6 +3448,7 @@ TOOTH TOOTHROW TOP TOPAZ +TOR'BAALOS TORC TORCH TORKEL diff --git a/src/bnip/NTIPAliasStat.py b/src/bnip/NTIPAliasStat.py index ef5c1e3..0fa24c9 100644 --- a/src/bnip/NTIPAliasStat.py +++ b/src/bnip/NTIPAliasStat.py @@ -95,6 +95,7 @@ NTIPAliasStat['sorceressskills']='83,1' NTIPAliasStat['barbarianskills']='83,4' NTIPAliasStat['druidskills']='83,5' NTIPAliasStat['assassinskills']='83,6' +NTIPAliasStat['warlockskills']='83,7' NTIPAliasStat['itemaddamazonskills']='83,0' NTIPAliasStat['amaskills']='83,0' NTIPAliasStat['itemaddamaskills']='83,0' @@ -128,6 +129,11 @@ NTIPAliasStat['assskills']='83,6' NTIPAliasStat['itemaddassskills']='83,6' NTIPAliasStat['sinskills']='83,6' NTIPAliasStat['itemaddsinskills']='83,6' +NTIPAliasStat['itemaddwarlockskills']='83,7' +NTIPAliasStat['warskills']='83,7' +NTIPAliasStat['itemaddwarskills']='83,7' +NTIPAliasStat['warskills']='83,7' +NTIPAliasStat['itemaddwarskills']='83,7' NTIPAliasStat['unsentparam1']='84' NTIPAliasStat['itemaddexperience']='85' NTIPAliasStat['itemhealafterkill']='86' diff --git a/src/bnip/NTIPAliasType.py b/src/bnip/NTIPAliasType.py index 367d643..9739c63 100644 --- a/src/bnip/NTIPAliasType.py +++ b/src/bnip/NTIPAliasType.py @@ -57,52 +57,51 @@ NTIPAliasType['secondhand']='54' NTIPAliasType['stavesandrods']='55' NTIPAliasType['missile']='56' NTIPAliasType['blunt']='57' -NTIPAliasType['expansion']='58' -NTIPAliasType['jewel']='59' -NTIPAliasType['classspecific']='60' -NTIPAliasType['amazonitem']='61' -NTIPAliasType['barbarianitem']='62' -NTIPAliasType['necromanceritem']='63' -NTIPAliasType['paladinitem']='64' -NTIPAliasType['sorceressitem']='65' -NTIPAliasType['assassinitem']='66' -NTIPAliasType['druiditem']='67' -NTIPAliasType['handtohand']='68' -NTIPAliasType['orb']='69' -NTIPAliasType['voodooheads']='70' -NTIPAliasType['auricshields']='71' -NTIPAliasType['primalhelm']='72' -NTIPAliasType['pelt']='73' -NTIPAliasType['cloak']='74' -NTIPAliasType['rune']='75' -NTIPAliasType['circlet']='76' -NTIPAliasType['healingpotion']='77' -NTIPAliasType['manapotion']='78' -NTIPAliasType['rejuvpotion']='79' -NTIPAliasType['staminapotion']='80' -NTIPAliasType['antidotepotion']='81' -NTIPAliasType['thawingpotion']='82' -NTIPAliasType['smallcharm']='83' -NTIPAliasType['mediumcharm']='84' -NTIPAliasType['largecharm']='85' -NTIPAliasType['amazonbow']='86' -NTIPAliasType['amazonspear']='87' -NTIPAliasType['amazonjavelin']='88' -NTIPAliasType['assassinclaw']='89' -NTIPAliasType['magicbowquiv']='90' -NTIPAliasType['magicxbowquiv']='91' -NTIPAliasType['chippedgem']='92' -NTIPAliasType['flawedgem']='93' -NTIPAliasType['standardgem']='94' -NTIPAliasType['flawlessgem']='95' -NTIPAliasType['perfectgem']='96' -NTIPAliasType['amethyst']='97' -NTIPAliasType['diamond']='98' -NTIPAliasType['emerald']='99' -NTIPAliasType['ruby']='100' -NTIPAliasType['sapphire']='101' -NTIPAliasType['topaz']='102' -NTIPAliasType['skull']='103' -NTIPAliasType['swordsandknives']='104' -NTIPAliasType['spearsandpolearms']='105' -NTIPAliasType['grimoires']='106' +NTIPAliasType['jewel']='58' +NTIPAliasType['classspecific']='59' +NTIPAliasType['amazonitem']='60' +NTIPAliasType['barbarianitem']='61' +NTIPAliasType['necromanceritem']='62' +NTIPAliasType['paladinitem']='63' +NTIPAliasType['sorceressitem']='64' +NTIPAliasType['assassinitem']='65' +NTIPAliasType['druiditem']='66' +NTIPAliasType['handtohand']='67' +NTIPAliasType['orb']='68' +NTIPAliasType['voodooheads']='69' +NTIPAliasType['auricshields']='70' +NTIPAliasType['primalhelm']='71' +NTIPAliasType['pelt']='72' +NTIPAliasType['cloak']='73' +NTIPAliasType['rune']='74' +NTIPAliasType['circlet']='75' +NTIPAliasType['healingpotion']='76' +NTIPAliasType['manapotion']='77' +NTIPAliasType['rejuvpotion']='78' +NTIPAliasType['staminapotion']='79' +NTIPAliasType['antidotepotion']='80' +NTIPAliasType['thawingpotion']='81' +NTIPAliasType['smallcharm']='82' +NTIPAliasType['mediumcharm']='83' +NTIPAliasType['largecharm']='84' +NTIPAliasType['amazonbow']='85' +NTIPAliasType['amazonspear']='86' +NTIPAliasType['amazonjavelin']='87' +NTIPAliasType['assassinclaw']='88' +NTIPAliasType['magicbowquiv']='89' +NTIPAliasType['magicxbowquiv']='90' +NTIPAliasType['chippedgem']='91' +NTIPAliasType['flawedgem']='92' +NTIPAliasType['standardgem']='93' +NTIPAliasType['flawlessgem']='94' +NTIPAliasType['perfectgem']='95' +NTIPAliasType['amethyst']='96' +NTIPAliasType['diamond']='97' +NTIPAliasType['emerald']='98' +NTIPAliasType['ruby']='99' +NTIPAliasType['sapphire']='100' +NTIPAliasType['topaz']='101' +NTIPAliasType['skull']='102' +NTIPAliasType['swordsandknives']='103' +NTIPAliasType['spearsandpolearms']='104' +NTIPAliasType['grimoires']='105' diff --git a/src/bnip/UniqueAndSetData.py b/src/bnip/UniqueAndSetData.py index 573d80b..1bfc13d 100644 --- a/src/bnip/UniqueAndSetData.py +++ b/src/bnip/UniqueAndSetData.py @@ -126,6 +126,20 @@ UniqueAndSetData = { "SPIKETHORN" ] ] + }, + "blasphemouscompendium": { + "uniques": [ + [ + "ARSTORBAALOS" + ] + ] + }, + "blasphemousgrimoire": { + "uniques": [ + [ + "ARSALDIABOLOS" + ] + ] }, "bloodspirit": { "uniques": [ @@ -222,6 +236,13 @@ UniqueAndSetData = { ] ] }, + "burnttext": { + "uniques": [ + [ + "MEASUREDWRATH" + ] + ] + }, "cantortrophy": { "sets": [ [ @@ -905,6 +926,13 @@ UniqueAndSetData = { ] ] }, + "occulttome": { + "uniques": [ + [ + "ARSDULMEPHISTOS" + ] + ] + }, "ogregauntlets": { "uniques": [ [ @@ -1457,7 +1485,9 @@ UniqueAndSetData = { "RAVENFROST", "NATURESPEACE", "WISPPROJECTOR", - "CARRIONWIND" + "CARRIONWIND", + "OPALVEIN", + "SLING" ] ], "sets": [ diff --git a/src/d2r_image/bnip_data.py b/src/d2r_image/bnip_data.py index c9ddc08..18f4298 100644 --- a/src/d2r_image/bnip_data.py +++ b/src/d2r_image/bnip_data.py @@ -365,6 +365,9 @@ BNIP_ALIAS_STAT_PATTERNS = { "{:d} to Assassin Skill Levels": [ "83,6" ], + "{:d} to Warlock Skill Levels": [ + "83,7" + ], "{:d} to Magic Arrow (Amazon only)": [ "107,6" ], diff --git a/src/d2r_image/d2data_data.py b/src/d2r_image/d2data_data.py index b8e6719..0971d1c 100644 --- a/src/d2r_image/d2data_data.py +++ b/src/d2r_image/d2data_data.py @@ -563,7 +563,7 @@ ITEM_ARMOR = { { "DisplayName": "Blasphemous Compendium", "NTIPAliasClassID": 672, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -578,13 +578,14 @@ ITEM_ARMOR = { } }, "dimensions": [2, 2], + "uniques": ["ARSTORBAALOS"], "NTIPAliasClass": 2 }, "blasphemousgrimoire": { "DisplayName": "Blasphemous Grimoire", "NTIPAliasClassID": 673, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -599,6 +600,7 @@ ITEM_ARMOR = { } }, "dimensions": [2, 2], + "uniques": ["ARSALDIABOLOS"], "NTIPAliasClass": 2 }, "bloodspirit": @@ -913,7 +915,7 @@ ITEM_ARMOR = { { "DisplayName": "Burnt Text", "NTIPAliasClassID": 664, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -928,6 +930,7 @@ ITEM_ARMOR = { } }, "dimensions": [2, 2], + "uniques": ["MEASUREDWRATH"], "NTIPAliasClass": 1 }, "cantortrophy": @@ -1189,7 +1192,7 @@ ITEM_ARMOR = { { "DisplayName": "Codex", "NTIPAliasClassID": 661, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -1233,7 +1236,7 @@ ITEM_ARMOR = { { "DisplayName": "Compendium", "NTIPAliasClassID": 662, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -1452,7 +1455,7 @@ ITEM_ARMOR = { { "DisplayName": "Dark Codex", "NTIPAliasClassID": 666, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -1473,7 +1476,7 @@ ITEM_ARMOR = { { "DisplayName": "Dark Tome", "NTIPAliasClassID": 665, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -2029,7 +2032,7 @@ ITEM_ARMOR = { { "DisplayName": "Forgotten Volume", "NTIPAliasClassID": 669, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -2509,7 +2512,7 @@ ITEM_ARMOR = { { "DisplayName": "Grimoire", "NTIPAliasClassID": 663, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -3802,7 +3805,7 @@ ITEM_ARMOR = { { "DisplayName": "Occult Codex", "NTIPAliasClassID": 671, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -3823,7 +3826,7 @@ ITEM_ARMOR = { { "DisplayName": "Occult Tome", "NTIPAliasClassID": 670, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -3838,6 +3841,7 @@ ITEM_ARMOR = { } }, "dimensions": [2, 2], + "uniques": ["ARSDULMEPHISTOS"], "NTIPAliasClass": 2 }, "ogregauntlets": @@ -3868,7 +3872,7 @@ ITEM_ARMOR = { { "DisplayName": "Old Book", "NTIPAliasClassID": 659, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -4030,7 +4034,7 @@ ITEM_ARMOR = { { "DisplayName": "Possessed Compendium", "NTIPAliasClassID": 667, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -4051,7 +4055,7 @@ ITEM_ARMOR = { { "DisplayName": "Possessed Grimoire", "NTIPAliasClassID": 668, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -5319,7 +5323,7 @@ ITEM_ARMOR = { { "DisplayName": "Tome", "NTIPAliasClassID": 660, - "NTIPAliasType": 106, + "NTIPAliasType": 105, "NTIPAliasStatProps": { "194": @@ -6728,7 +6732,7 @@ ITEM_MISC = { "NTIPAliasType": 10, "dimensions": [1, 1], "sets": ["ANGELICHALO", "CATHANSSEAL"], - "uniques": ["NAGELRING", "MANALDHEAL", "THESTONEOFJORDAN", "CONSTRICTINGRING", "BULKATHOSWEDDINGBAND", "DWARFSTAR", "RAVENFROST", "NATURESPEACE", "WISPPROJECTOR", "CARRIONWIND"] + "uniques": ["NAGELRING", "MANALDHEAL", "THESTONEOFJORDAN", "CONSTRICTINGRING", "BULKATHOSWEDDINGBAND", "DWARFSTAR", "RAVENFROST", "NATURESPEACE", "WISPPROJECTOR", "CARRIONWIND", "OPALVEIN", "SLING"] }, "ruby": { @@ -12009,6 +12013,80 @@ ITEM_UNIQUE_ITEMS = { "45": 30 } }, + "arsaldiabolos": + { + "DisplayName": "Ars Al'Diabolos", + "NTIPAliasClassID": 673, + "NTIPAliasType": 105, + "NTIPAliasStatProps": + { + "105": 25, + "16,0": + { + "min": 170, + "max": 200 + }, + "329": + { + "min": 15, + "max": 25 + }, + "39": + { + "min": 20, + "max": 30 + }, + "138": + { + "min": 5, + "max": 10 + } + } + }, + "arsdulmephistos": + { + "DisplayName": "Ars Dul'Mephistos", + "NTIPAliasClassID": 670, + "NTIPAliasType": 105, + "NTIPAliasStatProps": + { + "83,7": 2, + "16,0": + { + "min": 140, + "max": 170 + }, + "105": + { + "min": 20, + "max": 30 + }, + "80": + { + "min": 10, + "max": 25 + } + } + }, + "arstorbaalos": + { + "DisplayName": "Ars Tor'Baalos", + "NTIPAliasClassID": 672, + "NTIPAliasType": 105, + "NTIPAliasStatProps": + { + "16,0": + { + "min": 120, + "max": 150 + }, + "36": + { + "min": 5, + "max": 10 + } + } + }, "astreonsironward": { "DisplayName": "Astreon's Iron Ward", @@ -19737,6 +19815,42 @@ ITEM_UNIQUE_ITEMS = { } } }, + "measuredwrath": + { + "DisplayName": "Measured Wrath", + "NTIPAliasClassID": 664, + "NTIPAliasType": 105, + "NTIPAliasStatProps": + { + "83,7": 1, + "105": 25, + "16,0": + { + "min": 130, + "max": 180 + }, + "39": + { + "min": 20, + "max": 30 + }, + "41": + { + "min": 20, + "max": 30 + }, + "43": + { + "min": 20, + "max": 30 + }, + "45": + { + "min": 20, + "max": 30 + } + } + }, "medusasgaze": { "DisplayName": "Medusa's Gaze", @@ -25524,6 +25638,61 @@ ITEM_UNIQUE_ITEMS = { } } }, + "opalvein": + { + "DisplayName": "Opalvein", + "NTIPAliasClassID": 522, + "NTIPAliasType": 10, + "NTIPAliasStatProps": + { + "105": 10, + "138": + { + "min": 1, + "max": 3 + }, + "39": + { + "min": 6, + "max": 8 + }, + "41": + { + "min": 6, + "max": 8 + }, + "43": + { + "min": 6, + "max": 8 + }, + "45": + { + "min": 6, + "max": 8 + } + } + }, + "sling": + { + "DisplayName": "Sling", + "NTIPAliasClassID": 522, + "NTIPAliasType": 10, + "NTIPAliasStatProps": + { + "105": 10, + "1": + { + "min": 10, + "max": 15 + }, + "80": + { + "min": 10, + "max": 20 + } + } + }, "thetannrgorerod": { "DisplayName": "The Tannr Gorerod", @@ -35480,6 +35649,13 @@ REF_PATTERNS = { "itemaddassassinskills", "assassinskills" ], + "{:d} to Warlock Skill Levels": [ + "war", + "item_addclassskills", + "itemaddclassskills", + "itemaddwarlockskills", + "warlockskills" + ], "{:d} to Attack Rating": [ "att", "tohit", diff --git a/src/ui/view.py b/src/ui/view.py index 4a69c97..f31f3b2 100644 --- a/src/ui/view.py +++ b/src/ui/view.py @@ -51,7 +51,8 @@ def fast_save_and_exit() -> bool: keyboard.send("esc") #Ensure we close anything opened (chat box, inv, options etc) keyboard.send("space") #To ensure we are in proper state, press space to close menu if openned keyboard.send("esc") #Open save and exit menu - mouse.move(*save_and_exit_pos) #Move the mouse to the save & exit button + mouse.move(*save_and_exit_pos, delay_factor=(0.02, 0.05)) #Move the mouse to the save & exit + wait(0.02, 0.05) mouse.click("left") attempts += 1