Skip to content

Commit

Permalink
correção trigger subir de nivel e add xp e dinheiro ao boss morrer
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasdray committed Feb 10, 2025
1 parent 3044b14 commit d40eb8e
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 16 deletions.
3 changes: 2 additions & 1 deletion game/migrations/V22__create_xp_necessaria_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ VALUES
(8, 40),
(9, 50),
(10, 80),
(11, 100);
(11, 100),
(12,9999);
25 changes: 15 additions & 10 deletions game/migrations/V52__triggers.sql
Original file line number Diff line number Diff line change
Expand Up @@ -97,27 +97,32 @@ EXECUTE FUNCTION verificar_dinheiro();
CREATE OR REPLACE FUNCTION subir_de_nivel()
RETURNS TRIGGER AS $$
DECLARE
nivel_atual INTEGER;
xp_atual INTEGER;
xp_prox_nivel INTEGER;
BEGIN
nivel_atual := OLD.nivel;
xp_atual := OLD.xp_atual;
LOOP
SELECT xp_necessaria INTO xp_prox_nivel
FROM xp_necessaria
WHERE nivel = NEW.nivel + 1;

IF xp_prox_nivel IS NULL OR NEW.xp_atual < xp_prox_nivel THEN
EXIT;
END IF;

NEW.xp_atual := NEW.xp_atual - xp_prox_nivel;
NEW.nivel := NEW.nivel + 1;
END LOOP;

IF xp_atual >= (SELECT xp_necessaria FROM xp_necessaria where nivel = nivel_atual + 1) THEN
NEW.xp_atual := xp_atual - xp_necessaria;
NEW.nivel := nivel_atual + 1;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;


CREATE TRIGGER trigger_subir_de_nivel_player
BEFORE UPDATE OF xp_atual ON Player
BEFORE UPDATE OF xp_atual ON player
FOR EACH ROW
WHEN (OLD.xp_atual <> NEW.xp_atual)
EXECUTE FUNCTION subir_de_nivel();


CREATE TRIGGER trigger_subir_de_nivel_instancia_cavaleiro
BEFORE UPDATE OF xp_atual ON instancia_cavaleiro
FOR EACH ROW
Expand Down
30 changes: 25 additions & 5 deletions game/src/usecases/iniciar_batalha.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ def criar_fila_turnos(player, cavaleiros, boss):
def executar_turnos(console, player, cavaleiros, boss):
"""Executa a batalha turn-based entre Player, Cavaleiros e Boss."""
boss_dict = {
"id": boss[0], "nome": boss[1], "hp": boss[5], "fala_derrotar_player": boss[13], "fala_derrotado": boss[14], "fala_condicao": boss[15]
"id": boss[0], "nome": boss[1], "xp_dropado": boss[3], "hp": boss[5], "dinheiro_dropado": boss[11], "fala_derrotar_player": boss[13], "fala_derrotado": boss[14], "fala_condicao": boss[15]
}
fila = criar_fila_turnos(player, cavaleiros, boss)

Expand All @@ -246,7 +246,6 @@ def executar_turnos(console, player, cavaleiros, boss):
cursor.execute("SELECT hp_atual FROM boss WHERE id_boss = %s", (boss_dict["id"],))
boss_hp = cursor.fetchone()
if boss_hp and boss_hp[0] <= 0:
console.print(Panel("[bold green]🎉 Vitória! O Boss foi derrotado![/bold green]", title="⚔️ Batalha Encerrada"))
break

# Verifica no SQL se todos os jogadores e cavaleiros foram derrotados
Expand Down Expand Up @@ -349,10 +348,31 @@ def executar_turnos(console, player, cavaleiros, boss):
SET status_missao = 'c'
WHERE id_missao = %s and id_player = %s;
""", (id_missao, player[0]))
console.print(f"[bold cyan]🏆 Missão concluída! Voce desbloqueou {cavaleiro_desbloqueado}[/bold cyan]")

console.print(f"[bold cyan]🏆 Missão concluída! Voce desbloqueou {cavaleiro_desbloqueado}[/bold cyan]"
)
# Exibe mensagem de vitória
console.print(Panel("[bold green]🎉 Vitória! O Boss foi derrotado![/bold green]", title="⚔️ Batalha Encerrada"))
# Exibir mensagem de vitória com as recompensas

cursor.execute("""
UPDATE inventario
SET dinheiro = dinheiro + %s
WHERE id_player = %s;
""", (boss_dict['dinheiro_dropado'], player[0]))

cursor.execute("""
UPDATE player
SET xp_atual = xp_atual + %s
WHERE id_player = %s;
""", (boss_dict['xp_dropado'], player[0]))

console.print(Panel(
f"\n[bold green]🎉 Vitória! O Boss foi derrotado![/bold green]\n\n"
f"[bold cyan]🏆 Recompensas:[/bold cyan]\n"
f"💰 Dinheiro ganho: [bold yellow]{boss_dict['dinheiro_dropado']}[/bold yellow]\n"
f"✨ XP ganho: [bold blue]{boss_dict['xp_dropado']}[/bold blue]\n",
title="⚔️ Batalha Encerrada"
))

return # 🔹 Sai da batalha imediatamente

else:
Expand Down

0 comments on commit d40eb8e

Please sign in to comment.