Changed armor to go on armor slot instead of chest slot.

This commit is contained in:
kansaigaijin
2025-07-13 20:37:21 +12:00
parent 9d4017100f
commit 511b497580

View File

@@ -1,5 +1,5 @@
from random import randint from random import randint
from enum_list import DamageType, DamageMod, ItemType, Slots # Import specific enums from enum_list import DamageType, DamageMod, ItemType, Slots
# Define Item classes here, as they are fundamental building blocks # Define Item classes here, as they are fundamental building blocks
class Item: class Item:
@@ -15,6 +15,7 @@ class Item:
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"
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, ItemType): def __init__(self, name, amt, magical, ItemType):
@@ -30,14 +31,17 @@ class Money(Item):
itemType=ItemType.Money, itemType=ItemType.Money,
attunement=False) 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, versatiledmg, def __init__(self, name, description, value, slot, damage1H, damage2H, versatiledmg, light, finesse,
dmgType, dmgMod, versatile, thrown, ItemType, magical, attunement): 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.versatiledmg = versatiledmg
self.light = light
self.finesse = finesse
self.dmgType = dmgType self.dmgType = dmgType
self.dmgMod = dmgMod self.dmgMod = dmgMod
self.versatile = versatile self.versatile = versatile
@@ -77,6 +81,7 @@ class Weapon(Item):
f"Magical: {self.magical}\n" \ f"Magical: {self.magical}\n" \
f"Attunement: {'Required' if self.attunement else 'Not Required'}" f"Attunement: {'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, slot, grade, ac, disadvantage, dmgRes, ItemType, magical, attunement): def __init__(self, name, description, value, slot, grade, ac, disadvantage, dmgRes, ItemType, magical, attunement):
@@ -116,7 +121,7 @@ class Inventory:
Slots.OffHand: None, Slots.OffHand: None,
Slots.TwoHanded: None, Slots.TwoHanded: None,
Slots.Helm: None, Slots.Helm: None,
Slots.Chest: None, Slots.Armor: None,
Slots.Wrists: None, Slots.Wrists: None,
Slots.Feet: None, Slots.Feet: None,
Slots.Neck: None, Slots.Neck: None,
@@ -310,26 +315,30 @@ rock = Weapon(
damage1H='1d6', damage1H='1d6',
damage2H=None, damage2H=None,
versatiledmg=None, versatiledmg=None,
light=True,
finesse=False,
dmgType=DamageType.Bludgeoning, dmgType=DamageType.Bludgeoning,
dmgMod=DamageMod.Strength, dmgMod=DamageMod.Strength,
versatile=False, versatile=False,
thrown=True, thrown=True,
magical=False, magical=False,
ItemType=ItemType.Weapon, ItemType=ItemType.Weapon,
attunement=False # Rocks typically aren't attuned attunement=False
) )
dagger = Weapon( dagger = Weapon(
name="Dagger", name="Dagger",
description="Pointy stabby-stab", description="Pointy stabby-stab",
value=None, value=None,
slot=Slots.MainHand, # Can be main hand or off hand slot=Slots.MainHand,
damage1H='1d4', # Daggers are usually 1d4 damage1H='1d4',
damage2H=None, damage2H=None,
versatiledmg=None, # Daggers are not versatile in the D&D sense (they are light, finesse) versatiledmg=None,
dmgType=DamageType.Piercing, # Changed to piercing light=True,
finesse=True,
dmgType=DamageType.Piercing,
dmgMod=DamageMod.Dexterity, dmgMod=DamageMod.Dexterity,
versatile=False, # Changed to False, as D&D versatile means 1H or 2H damage versatile=False,
thrown=True, thrown=True,
magical=False, magical=False,
ItemType=ItemType.Weapon, ItemType=ItemType.Weapon,
@@ -344,6 +353,8 @@ polearm = Weapon(
damage1H=None, damage1H=None,
damage2H="1d10", # Polearms are typically 1d10 damage2H="1d10", # Polearms are typically 1d10
versatiledmg=None, versatiledmg=None,
light=False,
finesse=False,
dmgType=DamageType.Piercing, dmgType=DamageType.Piercing,
dmgMod=DamageMod.Strength, dmgMod=DamageMod.Strength,
versatile=False, versatile=False,
@@ -357,7 +368,7 @@ tornRags = Armor(
name="Torn Rags", name="Torn Rags",
description="A ripped and worn-out outfit.", description="A ripped and worn-out outfit.",
value=None, value=None,
slot=Slots.Chest, slot=Slots.Armor,
grade="Light", grade="Light",
ac=10, # Base AC for light armor without proficiency is 10 + Dex mod ac=10, # Base AC for light armor without proficiency is 10 + Dex mod
disadvantage=False, # Light armor usually doesn't give disadvantage disadvantage=False, # Light armor usually doesn't give disadvantage
@@ -430,9 +441,10 @@ class Player:
# Initial items and equipment (now with silent=True) # Initial items and equipment (now with silent=True)
self.inventory.add_item(rock, 1, silent=True) self.inventory.add_item(rock, 1, silent=True)
self.inventory.add_item(tornRags, 1, silent=True) self.inventory.add_item(tornRags, 1, silent=True)
# Equip initial items (using the inventory's equip method) # Equip initial items (using the inventory's equip method)
self.inventory.equip_item(rock, Slots.MainHand, silent=True) self.inventory.equip_item(rock, Slots.MainHand, silent=True)
self.inventory.equip_item(tornRags, Slots.Chest, silent=True) self.inventory.equip_item(tornRags, Slots.Armor, silent=True)
def getModifier(self): def getModifier(self):