diff --git a/app/src/game/combat.py b/app/src/game/combat.py index 800e37f..796fe6c 100644 --- a/app/src/game/combat.py +++ b/app/src/game/combat.py @@ -241,25 +241,33 @@ def atacar_mob(connection, cursor, nomeUser, nomeMob, nomeFerramenta, estaEmEstr # Reviver o jogador em sua casa cursor.execute(""" - SELECT casa_chunk FROM Jogador WHERE nome = %s; + SELECT casa_chunk, nome_mapa FROM Jogador WHERE nome = %s; """, (nomeUser,)) - casa_chunk = cursor.fetchone()[0] + jogador_data = cursor.fetchone() + casa_chunk, mapa_atual = jogador_data - # Atualiza o jogador para sua casa e restaura a vida e fome ao máximo + # Verificar se o jogador está em um mapa que não seja a superfície + if mapa_atual != "Superfície": + novo_mapa = "Superfície" + else: + novo_mapa = mapa_atual + + # Atualiza o jogador para sua casa, coloca no mapa da superfície e restaura a vida e fome ao máximo cursor.execute(""" UPDATE Jogador SET numero_chunk = %s, + nome_mapa = %s, vida = 20, fome = 20 WHERE nome = %s; - """, (casa_chunk, nomeUser)) + """, (casa_chunk, novo_mapa, nomeUser)) + connection.commit() mostrar_texto_gradualmente(f"Você desmaiou e foi resgatado em sua casa. Sua vida e fome foram restauradas.", Fore.GREEN) time.sleep(2) return "morreu" - else: mostrar_texto_gradualmente(f"Sua vida agora é {vida_jogador}.", Fore.YELLOW) time.sleep(1.5) diff --git a/app/src/game/gameplay.py b/app/src/game/gameplay.py index b55bf85..5b4f884 100644 --- a/app/src/game/gameplay.py +++ b/app/src/game/gameplay.py @@ -225,7 +225,7 @@ def processar_comando(connection, cursor, nomeUser, movimentos): elif acao == "falar" and parametros: limpar_tela() nome_aldeao = formatar_nome_item(' '.join(parametros)) - falar_aldeao(connection, cursor, nomeUser, nome_aldeao) # Placeholder para quando a função estiver pronta + # falar_aldeao(connection, cursor, nomeUser, nome_aldeao) # Placeholder para quando a função estiver pronta break elif acao == "ver_construcoes": # Feito @@ -392,17 +392,24 @@ def mover_jogador(connection, cursor, nomeUser, direcao, movimentos): # Verifica se o jogador morreu if nova_vida <= 0: - # Buscar o `casa_chunk` do jogador - cursor.execute("SELECT casa_chunk FROM Jogador WHERE nome = %s;", (nomeUser,)) - casa_chunk = cursor.fetchone()[0] + # Buscar o `casa_chunk` e o mapa atual do jogador + cursor.execute("SELECT casa_chunk, nome_mapa FROM Jogador WHERE nome = %s;", (nomeUser,)) + jogador_data = cursor.fetchone() + casa_chunk, mapa_atual = jogador_data if casa_chunk is not None: + # Verificar se o jogador está em um mapa diferente da superfície + if mapa_atual != "Superfície": + novo_mapa = "Superfície" + else: + novo_mapa = mapa_atual # Se já estiver na superfície, mantém o mapa + # Ressuscitar o jogador na casa, com vida e fome máximas cursor.execute(""" UPDATE Jogador - SET numero_chunk = %s, fome = 20, vida = 20 + SET numero_chunk = %s, nome_mapa = %s, fome = 20, vida = 20 WHERE nome = %s; - """, (casa_chunk, nomeUser)) + """, (casa_chunk, novo_mapa, nomeUser)) connection.commit() mostrar_texto_gradualmente(f"Você desmaiou de fome... mas acordou milagrosamente em sua casa!", Fore.GREEN) @@ -413,6 +420,7 @@ def mover_jogador(connection, cursor, nomeUser, direcao, movimentos): return # Encerrar o movimento se o jogador morrer e ressuscitar + else: # Se a fome for maior que 0, recuperar 1 de vida (até o máximo de 20) if vida_atual < 20: