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("Вы промахнулись.")
|