mirror of
https://github.com/Steffo99/lihzahrd.git
synced 2024-11-21 15:44:24 +00:00
Parse prefixes correctly
This commit is contained in:
parent
193ed2ec78
commit
7e0112a779
5 changed files with 129 additions and 28 deletions
|
@ -12,6 +12,5 @@ class Chest:
|
|||
self.contents: typing.List[ItemStack] = contents
|
||||
|
||||
def __repr__(self):
|
||||
if self.name:
|
||||
return f'<Chest "{self.name}" at {self.position} with {len(self.contents)} items>'
|
||||
return f"<Chest at {self.position} with {len(self.contents)} items>"
|
||||
return f'<Chest "{self.name}" at {self.position} ' \
|
||||
f'with {len(list(filter(lambda x: x is not None, self.contents)))} items>'
|
||||
|
|
|
@ -3,6 +3,7 @@ from .entitytype import EntityType
|
|||
from .itemtype import ItemType
|
||||
from .liquidtype import LiquidType
|
||||
from .walltype import WallType
|
||||
from .prefixtype import PrefixType
|
||||
|
||||
__all__ = [
|
||||
"BlockType",
|
||||
|
@ -10,4 +11,5 @@ __all__ = [
|
|||
"ItemType",
|
||||
"LiquidType",
|
||||
"WallType",
|
||||
"PrefixType",
|
||||
]
|
||||
|
|
99
lihzahrd/enums/prefixtype.py
Normal file
99
lihzahrd/enums/prefixtype.py
Normal file
|
@ -0,0 +1,99 @@
|
|||
from typing import *
|
||||
import enum
|
||||
|
||||
|
||||
class PrefixType(enum.IntEnum):
|
||||
Large = 1
|
||||
Massive = 2
|
||||
Dangerous = 3
|
||||
Savage = 4
|
||||
Sharp = 5
|
||||
Pointy = 6
|
||||
Tiny = 7
|
||||
Terrible = 8
|
||||
Small = 9
|
||||
Dull = 10
|
||||
Unhappy = 11
|
||||
Bulky = 12
|
||||
Shameful = 13
|
||||
Heavy = 14
|
||||
Light = 15
|
||||
Sighted = 16
|
||||
Rapid = 17
|
||||
Hasty = 18
|
||||
Intimidating = 19
|
||||
Deadly = 20
|
||||
Staunch = 21
|
||||
Awful = 22
|
||||
Lethargic = 23
|
||||
Awkward = 24
|
||||
Powerful = 25
|
||||
Mystic = 26
|
||||
Adept = 27
|
||||
Masterful = 28
|
||||
Inept = 29
|
||||
Ignorant = 30
|
||||
Deranged = 31
|
||||
Intense = 32
|
||||
Taboo = 33
|
||||
Celestial = 34
|
||||
Furious = 35
|
||||
Keen = 36
|
||||
Superior = 37
|
||||
Forceful = 38
|
||||
Broken = 39
|
||||
Damaged = 40
|
||||
Shoddy = 41
|
||||
Quick = 42
|
||||
Deadly2 = 43
|
||||
Agile = 44
|
||||
Nimble = 45
|
||||
Murderous = 46
|
||||
Slow = 47
|
||||
Sluggish = 48
|
||||
Lazy = 49
|
||||
Annoying = 50
|
||||
Nasty = 51
|
||||
Manic = 52
|
||||
Hurtful = 53
|
||||
Strong = 54
|
||||
Unpleasant = 55
|
||||
Weak = 56
|
||||
Ruthless = 57
|
||||
Frenzying = 58
|
||||
Godly = 59
|
||||
Demonic = 60
|
||||
Zealous = 61
|
||||
Hard = 62
|
||||
Guarding = 63
|
||||
Armored = 64
|
||||
Warding = 65
|
||||
Arcane = 66
|
||||
Precise = 67
|
||||
Lucky = 68
|
||||
Jagged = 69
|
||||
Spiked = 70
|
||||
Angry = 71
|
||||
Menacing = 72
|
||||
Brisk = 73
|
||||
Fleeting = 74
|
||||
Hasty2 = 75
|
||||
Quick2 = 76
|
||||
Wild = 77
|
||||
Rash = 78
|
||||
Intrepid = 79
|
||||
Violent = 80
|
||||
Legendary = 81
|
||||
Unreal = 82
|
||||
Mythical = 83
|
||||
Legendary2 = 84
|
||||
|
||||
@classmethod
|
||||
def get(cls, i: int) -> Optional["PrefixType"]:
|
||||
if i == 0:
|
||||
return None
|
||||
else:
|
||||
return cls(i)
|
||||
|
||||
def __repr__(self):
|
||||
return f"{self.__class__.__name__}.{self.name}"
|
|
@ -1,4 +1,5 @@
|
|||
from ..enums import ItemType
|
||||
from typing import Optional
|
||||
from ..enums import ItemType, PrefixType
|
||||
|
||||
|
||||
class ItemStack:
|
||||
|
@ -6,7 +7,7 @@ class ItemStack:
|
|||
def __init__(self,
|
||||
type_: ItemType,
|
||||
quantity: int = 1,
|
||||
modifier: int = 0):
|
||||
prefix: Optional[PrefixType] = None):
|
||||
|
||||
self.type: ItemType = type_
|
||||
"""The type of item represented in this stack."""
|
||||
|
@ -14,8 +15,8 @@ class ItemStack:
|
|||
self.quantity: int = quantity
|
||||
"""A number from 1 to 999 representing the number of items inside this stack."""
|
||||
|
||||
self.modifier: int = modifier
|
||||
self.prefix: Optional[PrefixType] = prefix
|
||||
"""The modifier of the item in this stack. Should be set only when quantity is 1."""
|
||||
|
||||
def __repr__(self):
|
||||
return f"<ItemStack of {self.quantity}x {repr(self.type)} ({self.modifier})>"
|
||||
return f"<ItemStack of {self.quantity}x {repr(self.type)} ({self.prefix})>"
|
||||
|
|
|
@ -691,10 +691,10 @@ class World:
|
|||
item_quantity = f.int2()
|
||||
if item_quantity > 0:
|
||||
item_type = ItemType(f.int4())
|
||||
item_modifier = f.uint1()
|
||||
item_modifier = PrefixType.get(f.uint1())
|
||||
item = ItemStack(quantity=item_quantity,
|
||||
type_=item_type,
|
||||
modifier=item_modifier)
|
||||
prefix=item_modifier)
|
||||
else:
|
||||
item = None
|
||||
chest_contents.append(item)
|
||||
|
@ -766,7 +766,7 @@ class World:
|
|||
# Item Frame
|
||||
elif te_type == 1:
|
||||
te_extra = ItemFrame(item=ItemStack(type_=ItemType(f.int2()),
|
||||
modifier=f.uint1(),
|
||||
prefix=PrefixType.get(f.uint1()),
|
||||
quantity=f.int2()))
|
||||
# Logic Sensor
|
||||
elif te_type == 2:
|
||||
|
@ -780,21 +780,21 @@ class World:
|
|||
for index, flag in enumerate(item_flags):
|
||||
if not flag:
|
||||
continue
|
||||
slot_item_id = ItemType(f.int2())
|
||||
slot_item_modifier = f.int1()
|
||||
slot_item_stack = f.int2()
|
||||
mannequin_items[index] = ItemStack(slot_item_id, slot_item_modifier, slot_item_stack)
|
||||
mannequin_items[index] = ItemStack(type_=ItemType(f.int2()),
|
||||
prefix=PrefixType.get(f.int1()),
|
||||
quantity=f.int2())
|
||||
for index, flag in enumerate(dye_flags):
|
||||
if not flag:
|
||||
continue
|
||||
slot_item_id = ItemType(f.int2())
|
||||
slot_item_modifier = f.int1()
|
||||
slot_item_stack = f.int2()
|
||||
mannequin_dyes[index] = ItemStack(slot_item_id, slot_item_modifier, slot_item_stack)
|
||||
mannequin_dyes[index] = ItemStack(type_=ItemType(f.int2()),
|
||||
prefix=PrefixType.get(f.int1()),
|
||||
quantity=f.int2())
|
||||
te_extra = Mannequin(mannequin_items, mannequin_dyes)
|
||||
# Weapon Rack
|
||||
elif te_type == 4:
|
||||
rack_item = ItemStack(ItemType(f.int2()), f.int1(), f.int2())
|
||||
rack_item = ItemStack(type_=ItemType(f.int2()),
|
||||
prefix=PrefixType.get(f.int1()),
|
||||
quantity=f.int2())
|
||||
te_extra = WeaponRack(rack_item)
|
||||
# Hat Rack
|
||||
elif te_type == 5:
|
||||
|
@ -806,21 +806,21 @@ class World:
|
|||
for index, flag in enumerate(item_flags[0:2]):
|
||||
if not flag:
|
||||
continue
|
||||
slot_item_id = ItemType(f.int2())
|
||||
slot_item_modifier = f.int1()
|
||||
slot_item_stack = f.int2()
|
||||
rack_items[index] = ItemStack(slot_item_id, slot_item_modifier, slot_item_stack)
|
||||
rack_items[index] = ItemStack(type_=ItemType(f.int2()),
|
||||
prefix=PrefixType.get(f.int1()),
|
||||
quantity=f.int2())
|
||||
for index, flag in enumerate(item_flags[2:4]):
|
||||
if not flag:
|
||||
continue
|
||||
slot_item_id = ItemType(f.int2())
|
||||
slot_item_modifier = f.int1()
|
||||
slot_item_stack = f.int2()
|
||||
rack_dyes[index] = ItemStack(slot_item_id, slot_item_modifier, slot_item_stack)
|
||||
rack_dyes[index] = ItemStack(type_=ItemType(f.int2()),
|
||||
prefix=PrefixType.get(f.int1()),
|
||||
quantity=f.int2())
|
||||
te_extra = HatRack(rack_items, rack_dyes)
|
||||
# Food Plate
|
||||
elif te_type == 6:
|
||||
plate_item = ItemStack(ItemType(f.int2()), f.int1(), f.int2())
|
||||
plate_item = ItemStack(type_=ItemType(f.int2()),
|
||||
prefix=PrefixType.get(f.int1()),
|
||||
quantity=f.int2())
|
||||
te_extra = Plate(plate_item)
|
||||
# Teleport Pylon
|
||||
elif te_type == 7:
|
||||
|
|
Loading…
Reference in a new issue