forked from Cryz/battle_royale_sim
add random health, random damage and show full player stats with emoji
This commit is contained in:
2
bot.py
2
bot.py
@@ -77,7 +77,7 @@ async def bot_commands(update, context):
|
|||||||
await _bot_player.add_random_players(update, context, colors_names= True)
|
await _bot_player.add_random_players(update, context, colors_names= True)
|
||||||
|
|
||||||
Arena= context.application.bot_data['arena']
|
Arena= context.application.bot_data['arena']
|
||||||
players= [p.get_name() for p in Arena.get_players()]
|
players= [p.get_name_and_stats() for p in Arena.get_players()]
|
||||||
players_str= '\n'.join(players)
|
players_str= '\n'.join(players)
|
||||||
return await update.message.reply_text(f'Ecco i {len(players)} giocatori presenti nel mondo do gioco: \n{players_str}')
|
return await update.message.reply_text(f'Ecco i {len(players)} giocatori presenti nel mondo do gioco: \n{players_str}')
|
||||||
|
|
||||||
|
|||||||
@@ -21,21 +21,21 @@ async def add_random_players(update, context, colors_names= False):
|
|||||||
|
|
||||||
async def get_players(update, context):
|
async def get_players(update, context):
|
||||||
Arena= context.application.bot_data['arena']
|
Arena= context.application.bot_data['arena']
|
||||||
players= [p.get_name() for p in Arena.get_players()]
|
players= [p.get_name_and_stats() for p in Arena.get_players()]
|
||||||
players_str= '\n'.join(players)
|
players_str= '\n'.join(players)
|
||||||
print(f'get_players: {players_str}')
|
print(f'get_players: {players_str}')
|
||||||
await update.message.reply_text(f'Ecco i giocatori presenti nel mondo do gioco: \n{players_str}')
|
await update.message.reply_text(f'Ecco i giocatori presenti nel mondo do gioco: \n{players_str}')
|
||||||
|
|
||||||
async def get_alive_players(update, context):
|
async def get_alive_players(update, context):
|
||||||
Arena= context.application.bot_data['arena']
|
Arena= context.application.bot_data['arena']
|
||||||
alive= [a.get_name() for a in Arena.get_alive_players()]
|
alive= [a.get_name_and_stats() for a in Arena.get_alive_players()]
|
||||||
alive_str= '\n'.join(alive)
|
alive_str= '\n'.join(alive)
|
||||||
print(f'get_alive_players: {alive_str}')
|
print(f'get_alive_players: {alive_str}')
|
||||||
await update.message.reply_text(f'Ecco i giocatori ancora vivi: \n{alive_str}')
|
await update.message.reply_text(f'Ecco i giocatori ancora vivi: \n{alive_str}')
|
||||||
|
|
||||||
async def get_death_players(update, context):
|
async def get_death_players(update, context):
|
||||||
Arena= context.application.bot_data['arena']
|
Arena= context.application.bot_data['arena']
|
||||||
death= [d.get_name() for d in Arena.get_death_players()]
|
death= [d.get_name_and_stats() for d in Arena.get_death_players()]
|
||||||
death_str= '\n'.join(death)
|
death_str= '\n'.join(death)
|
||||||
print(f'get_death_players: {death_str}')
|
print(f'get_death_players: {death_str}')
|
||||||
await update.message.reply_text(f'Ecco i giocatori morti x.x: \n{death_str}')
|
await update.message.reply_text(f'Ecco i giocatori morti x.x: \n{death_str}')
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ def get_winner(Arena):
|
|||||||
except: pass
|
except: pass
|
||||||
day= Arena.day
|
day= Arena.day
|
||||||
if winner.player_gender_is_male():
|
if winner.player_gender_is_male():
|
||||||
msg= f'{winner.get_name()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contento con Guarino'
|
msg= f'{winner.get_name_and_stats()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contento con Guarino'
|
||||||
elif winner.player_gender_is_female():
|
elif winner.player_gender_is_female():
|
||||||
msg= f'{winner.get_name()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contenta con Guarino'
|
msg= f'{winner.get_name_and_stats()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contenta con Guarino'
|
||||||
else:
|
else:
|
||||||
msg= f'{winner.get_name()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e content# con Guarino'
|
msg= f'{winner.get_name_and_stats()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e content# con Guarino'
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
async def simulate_day(context, chat_id):
|
async def simulate_day(context, chat_id):
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ class BrSimPlayer():
|
|||||||
def __init__(self, name, inventory= None):
|
def __init__(self, name, inventory= None):
|
||||||
self.id= str(_uuid.uuid4())
|
self.id= str(_uuid.uuid4())
|
||||||
self.name= name
|
self.name= name
|
||||||
self.health= 1
|
self.stats= ''
|
||||||
|
self.health= _random.randint(1,3)
|
||||||
self.inventory= inventory or []
|
self.inventory= inventory or []
|
||||||
self.damage= 1 # this is the punch damage amount
|
self.damage= _random.randint(1,2) # this is the punch damage amount
|
||||||
self.max_weight= 5 # this is the max inventory weight
|
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(5,30) # chance to avoid an hit
|
||||||
self.kills= 0 # track the number of kills
|
self.kills= 0 # track the number of kills
|
||||||
|
self.accused_damage= 0
|
||||||
self.survived_days= 0 # track the number of the survived days
|
self.survived_days= 0 # track the number of the survived days
|
||||||
self.equipped_weapon= None
|
self.equipped_weapon= None
|
||||||
self.gender= _random.sample(['m', 'f', '-'], 1)[0] # for now get a random gender
|
self.gender= _random.sample(['m', 'f', '-'], 1)[0] # for now get a random gender
|
||||||
@@ -19,6 +21,16 @@ class BrSimPlayer():
|
|||||||
|
|
||||||
### control methods
|
### control methods
|
||||||
|
|
||||||
|
def get_name_and_stats(self):
|
||||||
|
health= '♥️' * self.health
|
||||||
|
strength= '⚔️' * self.damage
|
||||||
|
agility= f'🚀{self.agility}'
|
||||||
|
if self.player_gender_is_male(): gender= '♂'
|
||||||
|
elif self.player_gender_is_female(): gender= '♀'
|
||||||
|
else: gender= '⚩'
|
||||||
|
name= f'{self.name} {gender} {health} {strength} {agility}'
|
||||||
|
return name
|
||||||
|
|
||||||
def get_id(self):
|
def get_id(self):
|
||||||
return self.id
|
return self.id
|
||||||
|
|
||||||
@@ -66,6 +78,7 @@ class BrSimPlayer():
|
|||||||
return {
|
return {
|
||||||
'id': self.get_id(),
|
'id': self.get_id(),
|
||||||
'name': self.get_name(),
|
'name': self.get_name(),
|
||||||
|
'name_stats': self.get_name_and_stats(),
|
||||||
'gender': self.get_gender(),
|
'gender': self.get_gender(),
|
||||||
'inventory': self.get_inventory(),
|
'inventory': self.get_inventory(),
|
||||||
'inventory_weight': self.get_inventory_weight(),
|
'inventory_weight': self.get_inventory_weight(),
|
||||||
@@ -102,41 +115,42 @@ class BrSimPlayer():
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def accuses_damage(self, damage):
|
def accuses_damage(self, damage):
|
||||||
self.health -= damage
|
self.health-= damage
|
||||||
|
self.accused_damage+= damage
|
||||||
if self.health > 0: return self.get_health()
|
if self.health > 0: return self.get_health()
|
||||||
|
|
||||||
self.health = 0
|
self.health= 0
|
||||||
if self.player_gender_is_male():
|
if self.player_gender_is_male():
|
||||||
print(f'[{self.get_name()}]: Guarino, perdonami se sono morto x.x')
|
print(f'[{self.get_name_and_stats()}]: Guarino, perdonami se sono morto x.x')
|
||||||
elif self.player_gender_is_female():
|
elif self.player_gender_is_female():
|
||||||
print(f'[{self.get_name()}]: Guarino, perdonami se sono morta x.x')
|
print(f'[{self.get_name_and_stats()}]: Guarino, perdonami se sono morta x.x')
|
||||||
else:
|
else:
|
||||||
print(f'[{self.get_name()}]: Guarino, perdonami se sono mort* x.x')
|
print(f'[{self.get_name_and_stats()}]: Guarino, perdonami se sono mort* x.x')
|
||||||
return damage
|
return damage
|
||||||
|
|
||||||
def attack(self, target):
|
def attack(self, target):
|
||||||
self._equip_weapon()
|
self._equip_weapon()
|
||||||
if target.dodge():
|
if target.dodge():
|
||||||
if target.player_gender_is_male():
|
if target.player_gender_is_male():
|
||||||
msg= f'Ehhhh voleviiii!!! sei lentoo! {target.get_name()} schiva il colpo di {self.get_name()}'
|
msg= f'Ehhhh voleviiii!!! sei lentoo! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}'
|
||||||
elif target.player_gender_is_female():
|
elif target.player_gender_is_female():
|
||||||
msg= f'Ehhhh voleviiii!!! sei lentaa! {target.get_name()} schiva il colpo di {self.get_name()}'
|
msg= f'Ehhhh voleviiii!!! sei lentaa! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}'
|
||||||
else:
|
else:
|
||||||
msg= f'Ehhhh voleviiii!!! sei lent##! {target.get_name()} schiva il colpo di {self.get_name()}'
|
msg= f'Ehhhh voleviiii!!! sei lent##! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}'
|
||||||
return 0, msg
|
return 0, msg
|
||||||
target.accuses_damage(self.damage)
|
target.accuses_damage(self.damage)
|
||||||
msg= f'{self.get_name()} Colpisce {target.get_name()}'
|
msg= f'{self.get_name_and_stats()} Colpisce {target.get_name_and_stats()}'
|
||||||
self.kills+= 1
|
self.kills+= 1
|
||||||
return self.damage, msg
|
return self.damage, msg
|
||||||
|
|
||||||
def get_item(self, item):
|
def get_item(self, item):
|
||||||
if self.get_inventory_weight() + item.get_weight() >= self.get_max_weight():
|
if self.get_inventory_weight() + item.get_weight() >= self.get_max_weight():
|
||||||
if self.player_gender_is_male():
|
if self.player_gender_is_male():
|
||||||
print(f'Sono sovraccarico, {self.get_name} non puo\' prendere questo oggetto')
|
print(f'Sono sovraccarico, {self.get_name_and_stats} non puo\' prendere questo oggetto')
|
||||||
elif self.player_gender_is_female():
|
elif self.player_gender_is_female():
|
||||||
print(f'Sono sovraccarica, {self.get_name} non puo\' prendere questo oggetto')
|
print(f'Sono sovraccarica, {self.get_name_and_stats} non puo\' prendere questo oggetto')
|
||||||
else:
|
else:
|
||||||
print(f'Sono sovraccaric#, {self.get_name} non puo\' prendere questo oggetto')
|
print(f'Sono sovraccaric#, {self.get_name_and_stats} non puo\' prendere questo oggetto')
|
||||||
return False
|
return False
|
||||||
self.inventory.append(item)
|
self.inventory.append(item)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user