def create(event, context): logger.debug(f'Event received: {json.dumps(event)}') data = _get_body(event) try: characters = data['characters'] character_list = [ Character(id=x['id'], attack_speed=x['attack_speed'], crit_chance=x['crit_chance'], curr_hp=x['curr_hp'], prev_hp=x['curr_hp'], base_hp=x['curr_hp'], min_damage=x['min_damage'], max_damage=x['max_damage']) for x in characters ] fight = FightModel(id=str(uuid4()), created_at=datetime.utcnow(), characters=character_list, connectionId=data.get('connectionId', '')) enemy_data = data['enemy'] enemy = Enemy(id=enemy_data['id'], can_block=enemy_data['can_block'], can_dodge=enemy_data['can_dodge'], block_amt=enemy_data['block_amt'], block_pct=enemy_data['block_pct'], dodge_pct=enemy_data['dodge_pct'], base_hp=enemy_data['hit_points'], curr_hp=enemy_data['hit_points'], prev_hp=enemy_data['hit_points'], min_damage=enemy_data.get('min_damage', 0), max_damage=enemy_data.get('max_damage', 0), can_crit=enemy_data.get('can_crit', False), crit_chance=enemy_data.get('crit_chance', 0), attack_speed=enemy_data.get('attack_speed', 0)) fight.enemy = enemy fight.save() for char in fight.characters: char_fight = CharacterFightModel(char_id=char.id, fight_id=fight.id, enemy_id=fight.enemy.id) char_fight.save() response = _get_response(200, json.dumps(fight, cls=ModelEncoder)) logger.debug(f'Response: {json.dumps(response)}') return response except Exception as ex: logger.error(f'Could not create fight: {ex}') response = _get_response(500, 'Could not create a fight') return response
fight = FightModel(id=str(uuid4())) enemy = Enemy(id="1", can_block=True, can_dodge=True, block_pct=0.05, block_amt=.54, dodge_pct=0.07, base_hp=2500, curr_hp=2500, prev_hp=2500) char1 = Character(id="1", attack_speed=1600, crit_chance=0.17, curr_hp=1000, prev_hp=1500, min_damage=55, max_damage=128) char2 = Character(id="2", attack_speed=2700, crit_chance=0.27, curr_hp=1250, prev_hp=3000, min_damage=65, max_damage=155) char3 = Character(id="3", attack_speed=1800, crit_chance=0.19, curr_hp=1300, prev_hp=1800, min_damage=51, max_damage=132) char4 = Character(id="4", attack_speed=2100, crit_chance=0.21, curr_hp=1199, prev_hp=3500, min_damage=35, max_damage=149) fight.enemy = enemy fight.characters = [char1, char2, char3, char4] fight.save() print(dict(fight)) party = [] for player in fight.characters: p = multiprocessing.Process(target=sim_player, args=(player, fight, )) party.append(p) px = multiprocessing.Process(target=get_fight, args=(fight.id, )) party.append(px) for p in party: p.start()