Skip to content

Commit

Permalink
ataque_fisico_boss funcionando
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasdray committed Feb 10, 2025
1 parent 5173f69 commit 015a2e3
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
4 changes: 2 additions & 2 deletions game/migrations/V52__triggers.sql
Original file line number Diff line number Diff line change
Expand Up @@ -283,9 +283,9 @@ BEGIN

UPDATE party
SET id_sala = (SELECT id_sala FROM public.sala_segura LIMIT 1) -- Usar parênteses no SELECT
WHERE party.id_player = OLD.id_player;

WHERE party.id_player = NEW.id_player;

NEW.hp_atual := NEW.hp_max / 2;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Expand Down
20 changes: 12 additions & 8 deletions game/migrations/V61__batalha.sql
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ DECLARE
chance_critico INT;
BEGIN
-- 🔹 1. Buscar um alvo com fraqueza ao elemento do Boss (Player ou Cavaleiro)
SELECT id_player AS id, 'player' AS tipo, player_nome as nome player_hp_atual AS hp, elemento_nome AS elemento
SELECT id_player AS id, 'player' AS tipo, player_nome AS nome, player_hp_atual AS hp, elemento_nome AS elemento
INTO alvo
FROM player_info_view
WHERE id_player = player_id
Expand All @@ -123,7 +123,7 @@ BEGIN

-- 🔹 2. Se não encontrou um alvo fraco, buscar um Cavaleiro do mesmo Player
IF alvo.id IS NULL THEN
SELECT id_cavaleiro AS id, 'cavaleiro' AS tipo, cavaleiro_hp_atual AS hp, cavaleiro_elemento AS elemento
SELECT id_cavaleiro AS id, 'cavaleiro' AS tipo, cavaleiro_nome AS nome, cavaleiro_hp_atual AS hp, cavaleiro_elemento AS elemento
INTO alvo
FROM party_cavaleiros_view
WHERE id_player = player_id
Expand All @@ -134,12 +134,12 @@ BEGIN

-- 🔹 3. Se ainda não encontrou, escolher aleatoriamente entre Player e Cavaleiro
IF alvo.id IS NULL THEN
SELECT id, tipo, hp, elemento INTO alvo FROM (
SELECT id_player AS id, 'player' AS tipo, player_hp_atual AS hp, elemento_nome AS elemento
SELECT id, tipo, nome, hp, elemento INTO alvo FROM (
SELECT id_player AS id, 'player' AS tipo, player_nome AS nome, player_hp_atual AS hp, elemento_nome AS elemento
FROM player_info_view
WHERE id_player = player_id AND player_hp_atual > 0
UNION ALL
SELECT id_cavaleiro AS id, 'cavaleiro' AS tipo, cavaleiro_hp_atual AS hp, cavaleiro_elemento AS elemento
SELECT id_cavaleiro AS id, 'cavaleiro' AS tipo, cavaleiro_nome AS nome, cavaleiro_hp_atual AS hp, cavaleiro_elemento AS elemento
FROM party_cavaleiros_view
WHERE id_player = player_id AND cavaleiro_hp_atual > 0
) AS alvos_possiveis
Expand Down Expand Up @@ -173,22 +173,26 @@ BEGIN

critico := (random() * 100) < parte_alvo.chance_critico;
IF critico THEN dano := dano * 1.5; END IF;


-- 🔹 8. Log do ataque
RAISE NOTICE 'Boss atacou % na % causando % de dano!', alvo.nome, parte_alvo.parte_corpo_nome, dano;

-- 🔹 7. Aplicar dano ao alvo correto
IF alvo.tipo = 'player' THEN
UPDATE player SET hp_atual = hp_atual - dano WHERE id_player = alvo.id;
ELSE
UPDATE instancia_cavaleiro SET hp_atual = hp_atual - dano WHERE id_cavaleiro = alvo.id;
END IF;

-- 🔹 8. Log do ataque
RAISE NOTICE 'Boss atacou % na % causando % de dano!', alvo.nome, parte_alvo.parte_corpo, dano;



END $$ LANGUAGE plpgsql;





UPDATE public.player
SET hp_max = 3000, hp_atual = 3000
WHERE id_player=1;
Expand Down

0 comments on commit 015a2e3

Please sign in to comment.