Update player.py

Updated how item type is portrayed at class level
This commit is contained in:
KansaiGaijin
2022-12-20 22:57:01 +13:00
committed by GitHub
parent 02ea2e4512
commit ae6e1d8952

110
player.py
View File

@@ -409,18 +409,20 @@ class Slots(Enum):
Cloak = auto() Cloak = auto()
LeftRing = auto() LeftRing = auto()
RightRing = auto() RightRing = auto()
Other = auto()
Attunement = auto() Attunement = auto()
class Item: class Item:
"""The base class for all items""" """The base class for all items"""
def __init__(self, name, description, value, magical): def __init__(self, name, description, value, magical, ItemType, attunement):
self.name = name self.name = name
self.description = description self.description = description
self.value = value self.value = value
self.magical = magical self.magical = magical
self.type = ItemType.Item self.itemType = ItemType
self.attunement = attunement
def __repr__(self): def __repr__(self):
return f"{self.name}\n=====\n{self.description}\nValue: {self.value}\n" return f"{self.name}\n=====\n{self.description}\nValue: {self.value}\n"
@@ -429,54 +431,79 @@ class Item:
class Money(Item): class Money(Item):
"""The currency item used in the world of Kanjin""" """The currency item used in the world of Kanjin"""
def __init__(self, name, amt, magical): def __init__(self, name, amt, magical, ItemType):
self.name = name self.name = name
self.amt = amt self.amt = amt
self.magical = magical self.magical = magical
self.type = ItemType.Money self.itemType = ItemType
super().__init__(name=self.name, super().__init__(name=self.name,
description=f"A small round coin made of {self.name.lower()} " description=f"A small round coin made of {self.name.lower()} "
f"with the imperial city logo stamped on the face.", f"with the imperial city logo stamped on the face.",
value=self.amt, value=self.amt,
magical=self.magical) magical=self.magical,
ItemType=ItemType.Money,
attunement=False)
class Weapon(Item): class Weapon(Item):
"""The base class for all weapons""" """The base class for all weapons"""
def __init__(self, name, description, value, slot, damage1H, damage2H, def __init__(self, name, description, value, slot, damage1H, damage2H, versatiledmg,
dmgType, dmgMod, versatile, thrown, magical): dmgType, dmgMod, versatile, thrown, ItemType, magical, attunement):
self.slot = slot self.slot = slot
self.damage1H = damage1H self.damage1H = damage1H
self.damage2H = damage2H self.damage2H = damage2H
self.versatiledmg = versatiledmg
self.dmgType = dmgType self.dmgType = dmgType
self.dmgMod = dmgMod self.dmgMod = dmgMod
self.versatile = versatile self.versatile = versatile
self.thrown = thrown self.thrown = thrown
self.itemType = ItemType.Weapon self.itemType = ItemType
self.attunement = False super().__init__(name, description, value, magical, ItemType, attunement)
super().__init__(name, description, value, magical)
def __repr__(self): def __str__(self):
if self.damage2H is None and self.damage1H is not None:
return f"{self.name}\n=====" \ return f"{self.name}\n=====" \
f"\n{self.description}" \ f"\n{self.description}" \
f"\nValue: {self.value}" \ f"\nValue: {self.value}" \
f"\nDamage: One Handed - {self.damage1H}" \ f"\nDamage: One Handed - {self.damage1H}" \
f"\nDamage Type: {self.dmgType.name.title()}" \
f"\nMagical: {self.magical}" \
f"\nAttunement: {'Required' if self.attunement else 'Not Required'}"
elif self.damage1H is None and self.damage2H is not None:
return f"{self.name}\n=====" \
f"\n{self.description}" \
f"\nValue: {self.value}" \
f"\nDamage: Two Handed - {self.damage2H}" \ f"\nDamage: Two Handed - {self.damage2H}" \
f"\nDamage Type: {self.dmgType.name.title()}" \ f"\nDamage Type: {self.dmgType.name.title()}" \
f"\nMagical: {self.magical}" f"\nMagical: {self.magical}" \
f"\nAttunement: {'Required' if self.attunement else 'Not Required'}"
elif self.versatile:
return f"{self.name}\n=====" \
f"\n{self.description}" \
f"\nValue: {self.value}" \
f"\nDamage: Versatile - {self.versatiledmg}" \
f"\nDamage Type: {self.dmgType.name.title()}" \
f"\nMagical: {self.magical}" \
f"\nAttunement: {'Required' if self.attunement else 'Not Required'}"
else:
return f"{self.name}\n=====" \
f"\n{self.description}" \
f"\nValue: {self.value}" \
f"\nMagical: {self.magical}" \
f"\nAttunement: {'Required' if self.attunement else 'Not Required'}"
class Armor(Item): class Armor(Item):
"""The base class for all armor""" """The base class for all armor"""
def __init__(self, name, description, value, grade, ac, disadvantage, dmgRes, magical): def __init__(self, name, description, value, grade, ac, disadvantage, dmgRes, ItemType, magical, attunement):
self.grade = grade self.grade = grade
self.ac = ac self.ac = ac
self.stealthDis = disadvantage self.stealthDis = disadvantage
self.dmgRes = dmgRes self.dmgRes = dmgRes
self.itemType = ItemType.Armor self.itemType = ItemType
super().__init__(name, description, value, magical) super().__init__(name, description, value, magical, ItemType, attunement)
def __repr__(self): def __repr__(self):
if self.stealthDis: if self.stealthDis:
@@ -496,37 +523,60 @@ class Armor(Item):
# Different types of coins # Different types of coins
GP1 = Money("Gold", 1, False) GP1 = Money("Gold", 1, False, ItemType.Money)
SP1 = Money("Silver", 1, False) SP1 = Money("Silver", 1, False, ItemType.Money)
CP1 = Money("Copper", 1, False) CP1 = Money("Copper", 1, False, ItemType.Money)
# starting equip # starting equip
rock = Weapon( rock = Weapon(
name="Rock", name="Rock",
description="A fist-sized rock, suitable for bludgeoning.", description="A fist-sized rock, suitable for bludgeoning.",
value=None, value=None,
slot=Slots.MainHand, slot="Main Hand",
damage1H='1d6', damage1H='1d6',
damage2H=None, damage2H=None,
versatiledmg=None,
dmgType=DamageType.Crushing, dmgType=DamageType.Crushing,
dmgMod=DamageMod.Strength, dmgMod=DamageMod.Strength,
versatile=False, versatile=False,
thrown=True, thrown=True,
magical=False magical=False,
ItemType=ItemType.Weapon,
attunement=True
) )
dagger = Weapon( dagger = Weapon(
name="Dagger", name="Dagger",
description="Pointy stabby-stab", description="Pointy stabby-stab",
value=None, value=None,
slot=Slots.MainHand, slot="Main Hand",
damage1H='1d6', damage1H=None,
damage2H=None, damage2H=None,
versatiledmg='1d6',
dmgType=DamageType.Slashing, dmgType=DamageType.Slashing,
dmgMod=DamageMod.Dexterity, dmgMod=DamageMod.Dexterity,
versatile=True,
thrown=True,
magical=False,
ItemType=ItemType.Weapon,
attunement=True
)
polearm = Weapon(
name="Polearm",
description="Long Pointy stabby-stab",
value=None,
slot="Two Handed",
damage1H=None,
damage2H="2d6",
versatiledmg=None,
dmgType=DamageType.Piercing,
dmgMod=DamageMod.Strength,
versatile=False, versatile=False,
thrown=True, thrown=True,
magical=False magical=False,
ItemType=ItemType.Weapon,
attunement=True
) )
tornRags = Armor( tornRags = Armor(
@@ -537,13 +587,17 @@ tornRags = Armor(
ac=0, ac=0,
disadvantage=True, disadvantage=True,
dmgRes="None", dmgRes="None",
magical=False magical=False,
ItemType=ItemType.Armor,
attunement=True
) )
paper = Item( paper = Item(
name="Paper", name="Paper",
description="A blank piece of paper", description="A blank piece of paper",
value=None, value=None,
magical=False magical=False,
ItemType=ItemType.Item,
attunement=True
) )
Inventory = { Inventory = {
@@ -553,6 +607,9 @@ Inventory = {
dagger: {"Count": 1, dagger: {"Count": 1,
"object": Weapon, "object": Weapon,
}, },
polearm: {"Count": 1,
"object": Weapon
},
paper: {"Count": 1, paper: {"Count": 1,
"object": Item "object": Item
}, },
@@ -576,6 +633,7 @@ Equipment = {
"Cloak": None, "Cloak": None,
"Left Ring": None, "Left Ring": None,
"Right Ring": None, "Right Ring": None,
"Attunement": None "Other": paper,
"Attunement": 0
} }