1
0

player stats review and minor bot improvements

This commit is contained in:
andrea
2025-07-26 18:07:14 +02:00
parent 079dcd6639
commit 4729a45c30
4 changed files with 35 additions and 20 deletions

View File

@@ -11,10 +11,11 @@ class BrSimPlayer():
self.inventory= inventory or []
self.damage= _random.randint(1,2) # this is the punch damage amount
self.max_weight= 5 # this is the max inventory weight
self.agility= _random.randint(5,30) # chance to avoid an hit
self.agility= _random.randint(1,3) # chance to avoid an hit
self.kills= 0 # track the number of kills
self.accused_damage= 0
self.survived_days= 0 # track the number of the survived days
self.dodges= 0
self.equipped_weapon= None
self.gender= _random.sample(['m', 'f', '-'], 1)[0] # for now get a random gender
self.reputation= 50 #Like RDR2 the player can be evil(0) or good(100). This should influence the sponsors and internal alliance
@@ -22,9 +23,9 @@ class BrSimPlayer():
### control methods
def get_name_and_stats(self):
health= '♥️' * self.health
health= '♥️' * self.health or '☠️'
strength= '⚔️' * self.damage
agility= f'🚀{self.agility}'
agility= '🚀' * self.agility
if self.player_gender_is_male(): gender= ''
elif self.player_gender_is_female(): gender= ''
else: gender= ''
@@ -54,19 +55,26 @@ class BrSimPlayer():
def get_inventory_weight(self):
weight= 0
for inv in self.get_inventory():
weight+= inv.get_weight()
for item in self.get_inventory():
weight+= item.get_weight()
return weight
def get_dodges(self):
return self.dodges
def get_max_weight(self):
return self.max_weight
def get_health(self):
return self.health
def get_equipped_weapon(self):
return self.equipped_weapon
def get_damage(self):
if not self.equipped_weapon: return self.damage
return self.equipped_weapon.damage
weapon= self.get_equipped_weapon()
if not weapon: return self.damage
return weapon.get_damage()
def get_agility(self):
return self.agility
@@ -100,18 +108,21 @@ class BrSimPlayer():
if not self.inventory: return
available_weapons= []
for inv in self.get_inventory():
for item in self.get_inventory():
# XXX
# i don't know yet if this is ok,
# we'll see it when weapon and items are defined
if not inv.damage: continue
available_weapons.append(inv)
# maybe we need item.is_weapon() method
if not item.damage: continue
available_weapons.append(item)
self.equipped_weapon= random.sample(available_weapons, 1)[0]
def dodge(self):
# maybe depend on the attack, if it is a gun shot it's quite impossible to dodge
rnd= _random.randint(0, 100)
if rnd < self.agility: return True
rnd= _random.randint(0, 10)
if rnd < self.agility:
self.dodges+= 1
return True
return False
def accuses_damage(self, damage):
@@ -139,7 +150,11 @@ class BrSimPlayer():
msg= f'Ehhhh voleviiii!!! sei lent##! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}'
return 0, msg
target.accuses_damage(self.damage)
msg= f'{self.get_name_and_stats()} Colpisce {target.get_name_and_stats()}'
weapon= self.get_equipped_weapon()
if weapon: msg+= f' con un {weapon.get_name}'
else: msg+= f' con un pugno'
self.kills+= 1
return self.damage, msg