n = int(input()) dictionary_hp = {} dictionary_mp = {} for _ in range(n): line = input() line_split = line.split() hero_name = line_split[0] hp = int(line_split[1]) mp = int(line_split[2]) dictionary_hp[hero_name] = hp dictionary_mp[hero_name] = mp while True: data = input() if data == "End": break data_split = data.split(" - ") command = data_split[0] hero_name = data_split[1] if command == "CastSpell": mp_needed = int(data_split[2]) spell_name = data_split[3] if dictionary_mp[hero_name] > mp_needed: dictionary_mp[hero_name] -= mp_needed print(f"{hero_name} has successfully cast {spell_name} and now has {dictionary_mp[hero_name]} MP!") else: print(f"{hero_name} does not have enough MP to cast {spell_name}!") elif command == "TakeDamage": damage = int(data_split[2]) attacker = data_split[3] dictionary_hp[hero_name] -= damage if dictionary_hp[hero_name] > 0: print(f"{hero_name} was hit for {damage} HP by {attacker} and now has {dictionary_hp[hero_name]} HP left!") else: del dictionary_hp[hero_name] del dictionary_mp[hero_name] print(f"{hero_name} has been killed by {attacker}!") elif command == "Recharge": amount = int(data_split[2]) diff = abs(200 - dictionary_mp[hero_name]) dictionary_mp[hero_name] += amount if dictionary_mp[hero_name] > 200: print(f"{hero_name} recharged for {min(diff, amount)} MP!") dictionary_mp[hero_name] = 200 else: print(f"{hero_name} recharged for {max(200 - dictionary_mp[hero_name], amount)} MP!") else: amount = int(data_split[2]) diff = abs(100 - dictionary_hp[hero_name]) dictionary_hp[hero_name] += amount if dictionary_hp[hero_name] > 100: print(f"{hero_name} healed for {min(diff, amount)} HP!") dictionary_hp[hero_name] = 100 else: print(f"{hero_name} healed for {max(100 - dictionary_hp[hero_name], amount)} HP!") for hero_name in dictionary_hp.keys(): print(hero_name) hp = dictionary_hp[hero_name] mp = dictionary_mp[hero_name] print(f" HP: {hp}") print(f" MP: {mp}")