diff --git a/assets/events.py b/assets/events.py index 1997596..c1fae94 100644 --- a/assets/events.py +++ b/assets/events.py @@ -7,8 +7,21 @@ EVENTS = [ 'success_percentage' : 80, 'fail_percentage' : 19, 'extreme_fail_percentage' : 1, - 'required_items' : [], + 'requirements' : {}, 'weight' : 1, + 'number_of_players' : 1, + }, + { + 'id' : 'BOMB_EXPLOSION' + 'text' : '{Player1} ha attacato {player2}', + 'resolve_text' : '{Player1} ha causato {effetto_collaterale}', + 'fail_text' : '{Player1} ha fallito, {player2} รจ indenne', + 'success_percentage' : 80, + 'fail_percentage' : 19, + 'extreme_fail_percentage' : 1, + 'requirements' : { + 'weapons' : ['BOMB'] + }, 'number_of_players' : 2, }, ] diff --git a/entities/event_picker.py b/entities/event_picker.py index 5c6e929..12ca329 100644 --- a/entities/event_picker.py +++ b/entities/event_picker.py @@ -7,7 +7,48 @@ class ArenaEventPicker(): self.event_list = EVENTS self.already_picked_players = [] - def pick_event(): - pass + def pick_a_player(): + the_player = _random.choice(self.players) + the_player_id = the_player.get('id') - + self.players = list(filter(lambda x : x.get('id') != the_player_id) + + def pick_event(the_player): + + player_inventory = the_player.get('inventory') or [] + status = the_player['health'] + reputation = the_player['reputation'] + + elegible_events = [] + for event in EVENTS: + requirements = event['requirements'] + + keys_to_check = ['item', 'weapon', 'status', 'reputation', 'number_of_players'] + + for check in keys_to_check: + if requirements.get(check) and check == 'item': + needed_items = requirements.get('check') + if needed_items in player_inventory: + elegible_events.append(event) + + if requirements.get(check) and check == 'weapon': + needed_weapons = requirements.get('check') + if needed_items in player_inventory: + elegible_events.append(event) + + if requirements.get(check) and check == 'status': + needed_health = requirements.get('check') + if '>' in requirements.get(check) and requirements.get(check) > in needed_health: + elegible_events.append(event) + if '<' in requirements.get(check) and requirements.get(check) < in needed_health: + elegible_events.append(event) + + if requirements.get(check) and check == 'reputation': + needed_reputation = requirements.get('reputation') + if '>' in requirements.get(check) and requirements.get(check) > in needed_reputation: + elegible_events.append(event) + if '<' in requirements.get(check) and requirements.get(check) < in needed_reputation: + elegible_events.append(event) + + the_event = _random.choice(elegible_events) + return the_event