Commit c82a765b authored by mercury233's avatar mercury233

fix aux.fus_mat_hack_check

parent 3d2e5726
...@@ -23,24 +23,31 @@ function c5370235.initial_effect(c) ...@@ -23,24 +23,31 @@ function c5370235.initial_effect(c)
e2:SetTarget(c5370235.tgtg) e2:SetTarget(c5370235.tgtg)
e2:SetOperation(c5370235.tgop) e2:SetOperation(c5370235.tgop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
-- --workaround
if not aux.fus_mat_hack_check then if not aux.fus_mat_hack_check then
aux.fus_mat_hack_check=true aux.fus_mat_hack_check=true
function aux.fus_mat_hack_exmat_filter(c) function aux.fus_mat_hack_exmat_filter(c)
return c:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,c:GetControler()) return c:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,c:GetControler())
end end
_GetFusionMaterial=Duel.GetFusionMaterial
function Duel.GetFusionMaterial(tp,loc)
if loc==nil then loc=LOCATION_HAND+LOCATION_MZONE end
local g=_GetFusionMaterial(tp,loc)
local exg=Duel.GetMatchingGroup(aux.fus_mat_hack_exmat_filter,tp,LOCATION_EXTRA,0,nil)
return g+exg
end
_SendtoGrave=Duel.SendtoGrave _SendtoGrave=Duel.SendtoGrave
function Duel.SendtoGrave(tg,reason) function Duel.SendtoGrave(tg,reason)
if reason~=REASON_EFFECT+REASON_MATERIAL+REASON_FUSION or aux.GetValueType(tg)~="Group" then if reason~=REASON_EFFECT+REASON_MATERIAL+REASON_FUSION or aux.GetValueType(tg)~="Group" then
return _SendtoGrave(tg,reason) return _SendtoGrave(tg,reason)
end end
local rg=tg:Filter(Card.IsLocation,nil,LOCATION_GRAVE) local tc=tg:Filter(Card.IsLocation,nil,LOCATION_EXTRA+LOCATION_GRAVE):Filter(aux.fus_mat_hack_exmat_filter,nil):GetFirst()
tg:Sub(rg)
local tc=rg:Filter(aux.fus_mat_hack_exmat_filter,nil):GetFirst()
if tc then if tc then
local te=tc:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,tc:GetControler()) local te=tc:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,tc:GetControler())
te:UseCountLimit(tc:GetControler()) te:UseCountLimit(tc:GetControler())
end end
local rg=tg:Filter(Card.IsLocation,nil,LOCATION_GRAVE)
tg:Sub(rg)
local ct1=_SendtoGrave(tg,reason) local ct1=_SendtoGrave(tg,reason)
local ct2=Duel.Remove(rg,POS_FACEUP,reason) local ct2=Duel.Remove(rg,POS_FACEUP,reason)
return ct1+ct2 return ct1+ct2
......
...@@ -32,18 +32,25 @@ function c72064891.initial_effect(c) ...@@ -32,18 +32,25 @@ function c72064891.initial_effect(c)
function aux.fus_mat_hack_exmat_filter(c) function aux.fus_mat_hack_exmat_filter(c)
return c:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,c:GetControler()) return c:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,c:GetControler())
end end
_GetFusionMaterial=Duel.GetFusionMaterial
function Duel.GetFusionMaterial(tp,loc)
if loc==nil then loc=LOCATION_HAND+LOCATION_MZONE end
local g=_GetFusionMaterial(tp,loc)
local exg=Duel.GetMatchingGroup(aux.fus_mat_hack_exmat_filter,tp,LOCATION_EXTRA,0,nil)
return g+exg
end
_SendtoGrave=Duel.SendtoGrave _SendtoGrave=Duel.SendtoGrave
function Duel.SendtoGrave(tg,reason) function Duel.SendtoGrave(tg,reason)
if reason~=REASON_EFFECT+REASON_MATERIAL+REASON_FUSION or aux.GetValueType(tg)~="Group" then if reason~=REASON_EFFECT+REASON_MATERIAL+REASON_FUSION or aux.GetValueType(tg)~="Group" then
return _SendtoGrave(tg,reason) return _SendtoGrave(tg,reason)
end end
local rg=tg:Filter(Card.IsLocation,nil,LOCATION_GRAVE) local tc=tg:Filter(Card.IsLocation,nil,LOCATION_EXTRA+LOCATION_GRAVE):Filter(aux.fus_mat_hack_exmat_filter,nil):GetFirst()
tg:Sub(rg)
local tc=rg:Filter(aux.fus_mat_hack_exmat_filter,nil):GetFirst()
if tc then if tc then
local te=tc:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,tc:GetControler()) local te=tc:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,tc:GetControler())
te:UseCountLimit(tc:GetControler()) te:UseCountLimit(tc:GetControler())
end end
local rg=tg:Filter(Card.IsLocation,nil,LOCATION_GRAVE)
tg:Sub(rg)
local ct1=_SendtoGrave(tg,reason) local ct1=_SendtoGrave(tg,reason)
local ct2=Duel.Remove(rg,POS_FACEUP,reason) local ct2=Duel.Remove(rg,POS_FACEUP,reason)
return ct1+ct2 return ct1+ct2
......
...@@ -23,8 +23,8 @@ function s.initial_effect(c) ...@@ -23,8 +23,8 @@ function s.initial_effect(c)
e2:SetOperation(s.fusop) e2:SetOperation(s.fusop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--workaround --workaround
if not aux.fus_mat_hack_check2 then if not aux.fus_mat_hack_check then
aux.fus_mat_hack_check2=true aux.fus_mat_hack_check=true
function aux.fus_mat_hack_exmat_filter(c) function aux.fus_mat_hack_exmat_filter(c)
return c:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,c:GetControler()) return c:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,c:GetControler())
end end
...@@ -40,13 +40,16 @@ function s.initial_effect(c) ...@@ -40,13 +40,16 @@ function s.initial_effect(c)
if reason~=REASON_EFFECT+REASON_MATERIAL+REASON_FUSION or aux.GetValueType(tg)~="Group" then if reason~=REASON_EFFECT+REASON_MATERIAL+REASON_FUSION or aux.GetValueType(tg)~="Group" then
return _SendtoGrave(tg,reason) return _SendtoGrave(tg,reason)
end end
local rg=tg:Filter(Card.IsLocation,nil,LOCATION_EXTRA) local tc=tg:Filter(Card.IsLocation,nil,LOCATION_EXTRA+LOCATION_GRAVE):Filter(aux.fus_mat_hack_exmat_filter,nil):GetFirst()
local tc=rg:Filter(aux.fus_mat_hack_exmat_filter,nil):GetFirst()
if tc then if tc then
local te=tc:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,tc:GetControler()) local te=tc:IsHasEffect(EFFECT_EXTRA_FUSION_MATERIAL,tc:GetControler())
te:UseCountLimit(tc:GetControler()) te:UseCountLimit(tc:GetControler())
end end
return _SendtoGrave(tg,reason) local rg=tg:Filter(Card.IsLocation,nil,LOCATION_GRAVE)
tg:Sub(rg)
local ct1=_SendtoGrave(tg,reason)
local ct2=Duel.Remove(rg,POS_FACEUP,reason)
return ct1+ct2
end end
end end
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