Commit 977da4f6 authored by VanillaSalt's avatar VanillaSalt

fix

parent 92b10929
...@@ -425,7 +425,7 @@ public: ...@@ -425,7 +425,7 @@ public:
int32 process_idle_command(uint16 step); int32 process_idle_command(uint16 step);
int32 process_battle_command(uint16 step); int32 process_battle_command(uint16 step);
int32 process_damage_step(uint16 step); int32 process_damage_step(uint16 step);
void calculate_battle_damage(effect** pdamchange, card** preason_card, uint8 *battle_destroyed); void calculate_battle_damage(effect** pdamchange, card** preason_card, uint8* battle_destroyed);
int32 process_turn(uint16 step, uint8 turn_player); int32 process_turn(uint16 step, uint8 turn_player);
int32 add_chain(uint16 step); int32 add_chain(uint16 step);
......
...@@ -2072,9 +2072,9 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -2072,9 +2072,9 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
peffect = ifit->first; peffect = ifit->first;
if(peffect->is_chainable(ifit->second.triggering_player) && peffect->check_count_limit(ifit->second.triggering_player) if(peffect->is_chainable(ifit->second.triggering_player) && peffect->check_count_limit(ifit->second.triggering_player)
&& peffect->handler->is_has_relation(peffect)) { && peffect->handler->is_has_relation(peffect)) {
if (ifit->second.triggering_player == infos.turn_player){ if(ifit->second.triggering_player == infos.turn_player) {
act = true; act = true;
if (peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) { if(peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
for (auto cait = core.tpchain.begin(); cait != core.tpchain.end(); ++cait) { for (auto cait = core.tpchain.begin(); cait != core.tpchain.end(); ++cait) {
if (cait->triggering_effect->handler->data.code == peffect->handler->data.code) { if (cait->triggering_effect->handler->data.code == peffect->handler->data.code) {
act = false; act = false;
...@@ -2089,14 +2089,14 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -2089,14 +2089,14 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
} }
} }
} }
if (act){ if(act) {
core.tpchain.push_back(ifit->second); core.tpchain.push_back(ifit->second);
peffect->handler->set_status(STATUS_CHAINING, TRUE); peffect->handler->set_status(STATUS_CHAINING, TRUE);
peffect->dec_count(infos.turn_player); peffect->dec_count(infos.turn_player);
} }
} else { } else {
act = true; act = true;
if (peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) { if(peffect->flag & EFFECT_FLAG_CHAIN_UNIQUE) {
for (auto cait = core.ntpchain.begin(); cait != core.ntpchain.end(); ++cait) { for (auto cait = core.ntpchain.begin(); cait != core.ntpchain.end(); ++cait) {
if (cait->triggering_effect->handler->data.code == peffect->handler->data.code) { if (cait->triggering_effect->handler->data.code == peffect->handler->data.code) {
act = false; act = false;
...@@ -2111,7 +2111,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) { ...@@ -2111,7 +2111,7 @@ int32 field::process_quick_effect(int16 step, int32 special, uint8 priority) {
} }
} }
} }
if (act){ if(act) {
core.ntpchain.push_back(ifit->second); core.ntpchain.push_back(ifit->second);
peffect->handler->set_status(STATUS_CHAINING, TRUE); peffect->handler->set_status(STATUS_CHAINING, TRUE);
peffect->dec_count(1 - infos.turn_player); peffect->dec_count(1 - infos.turn_player);
...@@ -3476,7 +3476,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -3476,7 +3476,7 @@ int32 field::process_battle_command(uint16 step) {
core.attack_target->q_cache.defence = dd; core.attack_target->q_cache.defence = dd;
core.attack_target->set_status(STATUS_BATTLE_DESTROYED, FALSE); core.attack_target->set_status(STATUS_BATTLE_DESTROYED, FALSE);
pd = core.attack_target->current.controler; pd = core.attack_target->current.controler;
if(pa != pd){ if(pa != pd) {
core.attacker->set_status(STATUS_OPPO_BATTLE, TRUE); core.attacker->set_status(STATUS_OPPO_BATTLE, TRUE);
core.attack_target->set_status(STATUS_OPPO_BATTLE, TRUE); core.attack_target->set_status(STATUS_OPPO_BATTLE, TRUE);
} }
...@@ -3677,7 +3677,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -3677,7 +3677,7 @@ int32 field::process_battle_command(uint16 step) {
process_instant_event(); process_instant_event();
} }
if(!core.effect_damage_step || (core.effect_damage_step != 3)) { if(!core.effect_damage_step || (core.effect_damage_step != 3)) {
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE); add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE);
} else { } else {
break_effect(); break_effect();
} }
...@@ -3728,7 +3728,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -3728,7 +3728,7 @@ int32 field::process_battle_command(uint16 step) {
process_instant_event(); process_instant_event();
core.attacker->set_status(STATUS_BATTLE_DESTROYED, FALSE); core.attacker->set_status(STATUS_BATTLE_DESTROYED, FALSE);
core.attacker->set_status(STATUS_OPPO_BATTLE, FALSE); core.attacker->set_status(STATUS_OPPO_BATTLE, FALSE);
if(core.attack_target){ if(core.attack_target) {
core.attack_target->set_status(STATUS_BATTLE_DESTROYED, FALSE); core.attack_target->set_status(STATUS_BATTLE_DESTROYED, FALSE);
core.attack_target->set_status(STATUS_OPPO_BATTLE, FALSE); core.attack_target->set_status(STATUS_OPPO_BATTLE, FALSE);
} }
...@@ -3855,7 +3855,7 @@ int32 field::process_damage_step(uint16 step) { ...@@ -3855,7 +3855,7 @@ int32 field::process_damage_step(uint16 step) {
} }
return TRUE; return TRUE;
} }
void field::calculate_battle_damage(effect** pdamchange, card** preason_card, uint8 *battle_destroyed) void field::calculate_battle_damage(effect** pdamchange, card** preason_card, uint8* battle_destroyed)
{ {
uint32 aa = core.attacker->get_attack(), ad = core.attacker->get_defence(); uint32 aa = core.attacker->get_attack(), ad = core.attacker->get_defence();
uint32 da = 0, dd = 0, a = aa, d; uint32 da = 0, dd = 0, a = aa, d;
...@@ -4142,7 +4142,6 @@ int32 field::process_turn(uint16 step, uint8 turn_player) { ...@@ -4142,7 +4142,6 @@ int32 field::process_turn(uint16 step, uint8 turn_player) {
} }
case 3: { case 3: {
//Standby Phase //Standby Phase
shuffle(turn_player, LOCATION_HAND);
infos.phase = PHASE_STANDBY; infos.phase = PHASE_STANDBY;
core.phase_action = FALSE; core.phase_action = FALSE;
raise_event((card*)0, EVENT_PHASE_PRESTART + PHASE_STANDBY, 0, 0, 0, turn_player, 0); raise_event((card*)0, EVENT_PHASE_PRESTART + PHASE_STANDBY, 0, 0, 0, turn_player, 0);
......
...@@ -25,10 +25,11 @@ function c36693940.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -25,10 +25,11 @@ function c36693940.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then if tc:IsRelateToEffect(e) and Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)~=0 then
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(36693940,0))
e1:SetProperty(EFFECT_FLAG_CLIENT_HINT)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(36693940) e1:SetCode(36693940)
e1:SetReset(RESET_EVENT+0x1fe0000) e1:SetReset(RESET_EVENT+0x1fe0000)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
tc:RegisterFlagEffect(0,RESET_EVENT+0x1fe0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(36693940,0))
end end
end end
...@@ -19,6 +19,7 @@ function c4779091.initial_effect(c) ...@@ -19,6 +19,7 @@ function c4779091.initial_effect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_BATTLE_CONFIRM) e3:SetCode(EVENT_BATTLE_CONFIRM)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetCondition(c4779091.damcon)
e3:SetTarget(c4779091.damtg) e3:SetTarget(c4779091.damtg)
e3:SetOperation(c4779091.damop) e3:SetOperation(c4779091.damop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
...@@ -52,6 +53,9 @@ function c4779091.initial_effect(c) ...@@ -52,6 +53,9 @@ function c4779091.initial_effect(c)
e6:SetCode(EFFECT_SPSUMMON_CONDITION) e6:SetCode(EFFECT_SPSUMMON_CONDITION)
c:RegisterEffect(e6) c:RegisterEffect(e6)
end end
function c4779091.damcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler()==Duel.GetAttackTarget()
end
function c4779091.damtg(e,tp,eg,ep,ev,re,r,rp,chk) function c4779091.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAttackPos() end if chk==0 then return e:GetHandler():IsAttackPos() end
Duel.SetTargetPlayer(1-tp) Duel.SetTargetPlayer(1-tp)
......
...@@ -30,7 +30,7 @@ function c77901552.hspop(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -30,7 +30,7 @@ function c77901552.hspop(e,tp,eg,ep,ev,re,r,rp,c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCode(EFFECT_CANNOT_ATTACK) e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END) e1:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c77901552.spfilter(c,e,tp) function c77901552.spfilter(c,e,tp)
......
...@@ -18,6 +18,7 @@ function c78371393.initial_effect(c) ...@@ -18,6 +18,7 @@ function c78371393.initial_effect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_BATTLE_CONFIRM) e3:SetCode(EVENT_BATTLE_CONFIRM)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetCondition(c78371393.damcon)
e3:SetTarget(c78371393.damtg) e3:SetTarget(c78371393.damtg)
e3:SetOperation(c78371393.damop) e3:SetOperation(c78371393.damop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
...@@ -46,6 +47,9 @@ function c78371393.initial_effect(c) ...@@ -46,6 +47,9 @@ function c78371393.initial_effect(c)
e5:SetLabelObject(e4) e5:SetLabelObject(e4)
c:RegisterEffect(e5) c:RegisterEffect(e5)
end end
function c78371393.damcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler()==Duel.GetAttackTarget()
end
function c78371393.damtg(e,tp,eg,ep,ev,re,r,rp,chk) function c78371393.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAttackPos() end if chk==0 then return e:GetHandler():IsAttackPos() end
Duel.SetTargetPlayer(1-tp) Duel.SetTargetPlayer(1-tp)
......
...@@ -32,7 +32,7 @@ end ...@@ -32,7 +32,7 @@ end
function c82044279.condition(e,tp,eg,ep,ev,re,r,rp) function c82044279.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local rc=re:GetHandler() local rc=re:GetHandler()
local tgp,loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CONTROLER,CHAININFO_TRIGGERING_LOCATION) local loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_LOCATION)
return re:IsActiveType(TYPE_MONSTER) and rc~=c and rc:IsLevelAbove(5) and loc==LOCATION_MZONE return re:IsActiveType(TYPE_MONSTER) and rc~=c and rc:IsLevelAbove(5) and loc==LOCATION_MZONE
and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev) and not c:IsStatus(STATUS_BATTLE_DESTROYED) and Duel.IsChainNegatable(ev)
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment