Commit 9283bfc8 authored by argon.sun's avatar argon.sun

fix

parent 90d9637e
...@@ -1511,6 +1511,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1511,6 +1511,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
} }
} }
if (field_confirm.size() > 0) { if (field_confirm.size() > 0) {
mainGame->WaitFrameSignal(5);
for(int i = 0; i < field_confirm.size(); ++i) { for(int i = 0; i < field_confirm.size(); ++i) {
pcard = field_confirm[i]; pcard = field_confirm[i];
c = pcard->controler; c = pcard->controler;
...@@ -1536,7 +1537,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1536,7 +1537,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->aniFrame = 5; pcard->aniFrame = 5;
} }
} }
mainGame->WaitFrameSignal(45); mainGame->WaitFrameSignal(90);
for(int i = 0; i < field_confirm.size(); ++i) { for(int i = 0; i < field_confirm.size(); ++i) {
mainGame->dField.MoveCard(field_confirm[i], 5); mainGame->dField.MoveCard(field_confirm[i], 5);
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <dirent.h> #include <dirent.h>
#endif #endif
const unsigned short PRO_VERSION = 0x12f0; const unsigned short PRO_VERSION = 0x1300;
namespace ygo { namespace ygo {
......
...@@ -1417,8 +1417,8 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc, ...@@ -1417,8 +1417,8 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
process_single_event(); process_single_event();
raise_event(target, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0); raise_event(target, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0);
process_instant_event(); process_instant_event();
adjust_all();
if(core.current_chain.size() == 0) { if(core.current_chain.size() == 0) {
adjust_all();
core.hint_timing[sumplayer] |= TIMING_SUMMON; core.hint_timing[sumplayer] |= TIMING_SUMMON;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, 0); add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, 0);
} }
...@@ -1690,8 +1690,8 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui ...@@ -1690,8 +1690,8 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
adjust_instant(); adjust_instant();
raise_event(target, EVENT_MSET, proc, 0, setplayer, setplayer, 0); raise_event(target, EVENT_MSET, proc, 0, setplayer, setplayer, 0);
process_instant_event(); process_instant_event();
adjust_all();
if(core.current_chain.size() == 0) { if(core.current_chain.size() == 0) {
adjust_all();
core.hint_timing[setplayer] |= TIMING_MSET; core.hint_timing[setplayer] |= TIMING_MSET;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE); add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE);
} }
...@@ -1766,8 +1766,8 @@ int32 field::sset(uint16 step, uint8 setplayer, uint8 toplayer, card * target) { ...@@ -1766,8 +1766,8 @@ int32 field::sset(uint16 step, uint8 setplayer, uint8 toplayer, card * target) {
adjust_instant(); adjust_instant();
raise_event(target, EVENT_SSET, 0, 0, setplayer, setplayer, 0); raise_event(target, EVENT_SSET, 0, 0, setplayer, setplayer, 0);
process_instant_event(); process_instant_event();
adjust_all();
if(core.current_chain.size() == 0) { if(core.current_chain.size() == 0) {
adjust_all();
core.hint_timing[setplayer] |= TIMING_SSET; core.hint_timing[setplayer] |= TIMING_SSET;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE); add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE);
} }
...@@ -1841,7 +1841,11 @@ int32 field::sset_g(uint16 step, uint8 setplayer, uint8 toplayer, group* ptarget ...@@ -1841,7 +1841,11 @@ int32 field::sset_g(uint16 step, uint8 setplayer, uint8 toplayer, group* ptarget
adjust_instant(); adjust_instant();
raise_event(&core.operated_set, EVENT_SSET, 0, 0, setplayer, setplayer, 0); raise_event(&core.operated_set, EVENT_SSET, 0, 0, setplayer, setplayer, 0);
process_instant_event(); process_instant_event();
adjust_all(); if(core.current_chain.size() == 0) {
adjust_all();
core.hint_timing[setplayer] |= TIMING_SSET;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, FALSE);
}
return TRUE; return TRUE;
} }
} }
...@@ -2015,8 +2019,8 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target) { ...@@ -2015,8 +2019,8 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target) {
process_single_event(); process_single_event();
raise_event(target, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0); raise_event(target, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0);
process_instant_event(); process_instant_event();
adjust_all();
if(core.current_chain.size() == 0) { if(core.current_chain.size() == 0) {
adjust_all();
core.hint_timing[sumplayer] |= TIMING_SPSUMMON; core.hint_timing[sumplayer] |= TIMING_SPSUMMON;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, 0); add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, FALSE, 0);
} }
......
...@@ -6,7 +6,7 @@ function c19667590.initial_effect(c) ...@@ -6,7 +6,7 @@ function c19667590.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetRange(LOCATION_GRAVE) e1:SetRange(LOCATION_GRAVE)
e1:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE+EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP) e1:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE+EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCondition(c19667590.spcon) e1:SetCondition(c19667590.spcon)
e1:SetCost(c19667590.spcost) e1:SetCost(c19667590.spcost)
......
...@@ -8,20 +8,27 @@ function c27632240.initial_effect(c) ...@@ -8,20 +8,27 @@ function c27632240.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE) e1:SetProperty(EFFECT_FLAG_CHAIN_UNIQUE)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_TO_HAND) e1:SetCode(EVENT_TO_HAND)
e1:SetCondition(c27632240.tgcon) e1:SetCondition(c27632240.tgcon1)
e1:SetCost(c27632240.tgcost) e1:SetCost(c27632240.tgcost)
e1:SetTarget(c27632240.tgtg) e1:SetTarget(c27632240.tgtg)
e1:SetOperation(c27632240.tgop) e1:SetOperation(c27632240.tgop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetCode(EVENT_TO_DECK) e2:SetCode(EVENT_TO_DECK)
e2:SetCondition(c27632240.tgcon2)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c27632240.cfilter(c) function c27632240.cfilter1(c)
return c:IsPreviousLocation(LOCATION_MZONE) return c:IsPreviousLocation(LOCATION_MZONE)
end end
function c27632240.tgcon(e,tp,eg,ep,ev,re,r,rp) function c27632240.tgcon1(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c27632240.cfilter,1,nil) return eg:IsExists(c27632240.cfilter1,1,nil)
end
function c27632240.cfilter2(c)
return c:IsPreviousLocation(LOCATION_MZONE) and c:IsLocation(LOCATION_DECK)
end
function c27632240.tgcon2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c27632240.cfilter2,1,nil)
end end
function c27632240.tgcost(e,tp,eg,ep,ev,re,r,rp,chk) function c27632240.tgcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFlagEffect(tp,27632240)==0 end if chk==0 then return Duel.GetFlagEffect(tp,27632240)==0 end
......
...@@ -41,7 +41,7 @@ function c39699564.setop(e,tp,eg,ep,ev,re,r,rp) ...@@ -41,7 +41,7 @@ function c39699564.setop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,c39699564.filter,tp,LOCATION_DECK,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,c39699564.filter,tp,LOCATION_DECK,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
Duel.SSet(tp,g) Duel.SSet(tp,g)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g:GetFirst())
end end
end end
function c39699564.sumop(e,tp,eg,ep,ev,re,r,rp) function c39699564.sumop(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -29,7 +29,7 @@ end ...@@ -29,7 +29,7 @@ end
function c47660516.activate(e,tp,eg,ep,ev,re,r,rp) function c47660516.activate(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end if Duel.GetLocationCount(tp,LOCATION_MZONE)<0 then return end
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) then return end if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c47660516.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,tc:GetRace(),e,tp) local g=Duel.SelectMatchingCard(tp,c47660516.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,tc:GetRace(),e,tp)
local sc=g:GetFirst() local sc=g:GetFirst()
......
...@@ -40,7 +40,7 @@ end ...@@ -40,7 +40,7 @@ end
function c68815132.operation(e,tp,eg,ep,ev,re,r,rp) function c68815132.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 then if tc:IsRelateToEffect(e) and Duel.SendtoHand(tc,nil,REASON_EFFECT)>0 and tc:IsLocation(LOCATION_HAND+LOCATION_EXTRA) then
if Duel.IsExistingMatchingCard(c68815132.sumfilter,tp,LOCATION_HAND,0,1,nil) if Duel.IsExistingMatchingCard(c68815132.sumfilter,tp,LOCATION_HAND,0,1,nil)
and Duel.SelectYesNo(tp,aux.Stringid(68815132,1)) then and Duel.SelectYesNo(tp,aux.Stringid(68815132,1)) then
Duel.BreakEffect() Duel.BreakEffect()
......
...@@ -19,11 +19,14 @@ function c86848580.discost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -19,11 +19,14 @@ function c86848580.discost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end if chk==0 then return e:GetHandler():CheckRemoveOverlayCard(tp,1,REASON_COST) end
e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST) e:GetHandler():RemoveOverlayCard(tp,1,1,REASON_COST)
end end
function c86848580.filter(c)
return c:IsFaceup() and c:IsType(TYPE_EFFECT)
end
function c86848580.distg(e,tp,eg,ep,ev,re,r,rp,chk) function c86848580.distg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,0,LOCATION_ONFIELD,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(c86848580.filter,tp,0,LOCATION_ONFIELD,1,nil) end
end end
function c86848580.disop(e,tp,eg,ep,ev,re,r,rp) function c86848580.disop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(Card.IsFaceup,tp,0,LOCATION_ONFIELD,nil) local g=Duel.GetMatchingGroup(c86848580.filter,tp,0,LOCATION_ONFIELD,nil)
local tc=g:GetFirst() local tc=g:GetFirst()
local c=e:GetHandler() local c=e:GetHandler()
while tc do while tc do
......
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