34 lines
989 B
Python
34 lines
989 B
Python
|
from abc import ABC
|
|||
|
from typing import Optional
|
|||
|
|
|||
|
from models.weapon.abstract_weapon import AbstractWeapon
|
|||
|
|
|||
|
|
|||
|
class AbstractBodyPart(ABC):
|
|||
|
"""
|
|||
|
Abstract body part
|
|||
|
"""
|
|||
|
|
|||
|
name: type[str] = "Пятая конечность"
|
|||
|
description: type[str] = "Непонятно откуда, но она у тебя есть"
|
|||
|
|
|||
|
hardness: type[int] = 0
|
|||
|
health: type[int] = 0
|
|||
|
|
|||
|
def punch(
|
|||
|
self,
|
|||
|
weapon: AbstractWeapon,
|
|||
|
):
|
|||
|
if weapon.get_hit_chance(self, weapon=weapon):
|
|||
|
if self.material.hardness <= 0:
|
|||
|
print(
|
|||
|
f"Вы ударились {weapon.name} об {self.name} и почуствовали ощутимую боль."
|
|||
|
)
|
|||
|
else:
|
|||
|
print(
|
|||
|
f"Вы ударились {weapon.name} обо что-то мягкое, этим оказалось {self.name} ."
|
|||
|
)
|
|||
|
|
|||
|
else:
|
|||
|
print("Вы промахнулись.")
|