Commit a0a3a028 authored by POLYMER's avatar POLYMER

fix

parent 014def48
...@@ -3,7 +3,15 @@ local cm=_G["c"..m] ...@@ -3,7 +3,15 @@ local cm=_G["c"..m]
cm.name="梦魂支配者 哆来咪·苏伊特" cm.name="梦魂支配者 哆来咪·苏伊特"
function cm.initial_effect(c) function cm.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddFusionProcFunRep2(c,cm.ffilter,4,99,true) local mt=getmetatable(c)
if mt.material_count==nil then mt.material_count={4,127} end
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_FUSION_MATERIAL)
e0:SetCondition(cm.fscon)
e0:SetOperation(cm.fsop)
c:RegisterEffect(e0)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
...@@ -102,7 +110,38 @@ function cm.initial_effect(c) ...@@ -102,7 +110,38 @@ function cm.initial_effect(c)
end--]] end--]]
end end
function cm.ffilter(c,fc,sub,mg,sg) function cm.ffilter(c,fc,sub,mg,sg)
return c:IsType(TYPE_TOKEN) and (not sg or not sg:IsExists(Card.IsFusionAttribute,1,c,c:GetFusionAttribute())) return c:IsType(TYPE_TOKEN) and (not sg or not sg:IsExists(Card.IsFusionAttribute,1,c,c:GetFusionAttribute())) and not c:IsHasEffect(6205579)
end
function cm.fcheck(sg,tp,fc,sub,chkfnf)
local chkf=chkfnf&0xff
local concat_fusion=chkfnf&0x200>0
if not concat_fusion and sg:IsExists(aux.TuneMagicianCheckX,1,nil,sg,EFFECT_TUNE_MAGICIAN_F) then return false end
if not aux.MustMaterialCheck(sg,tp,EFFECT_MUST_BE_FMATERIAL) then return false end
local g=Group.CreateGroup()
return sg:GetClassCount(Card.GetFusionAttribute)==#sg and not sg:IsExists(Card.IsHasEffect,1,nil,6205579) and (chkf==PLAYER_NONE or Duel.GetLocationCountFromEx(tp,tp,sg,fc)>0) and (not aux.FCheckAdditional or aux.FCheckAdditional(tp,sg,fc)) and (not aux.FGoalCheckAdditional or aux.FGoalCheckAdditional(tp,sg,fc))
end
function cm.fscon(e,g,gc,chkfnf)
if g==nil then return Auxiliary.MustMaterialCheck(nil,e:GetHandlerPlayer(),EFFECT_MUST_BE_FMATERIAL) end
if gc then return false end
local c=e:GetHandler()
local tp=c:GetControler()
local notfusion=chkfnf&0x100>0
local concat_fusion=chkfnf&0x200>0
local sub2=notfusion and not concat_fusion
local mg=g:Filter(aux.FConditionFilterMix,c,c,sub2,concat_fusion,cm.ffilter)
local sg=Group.CreateGroup()
return mg:CheckSubGroup(cm.fcheck,4,127,tp,c,sub2,chkfnf)
end
function cm.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local c=e:GetHandler()
local notfusion=chkfnf&0x100>0
local concat_fusion=chkfnf&0x200>0
local sub2=notfusion and not concat_fusion
local mg=eg:Filter(aux.FConditionFilterMix,c,c,sub2,concat_fusion,cm.ffilter)
if gc then Duel.SetSelectedCard(gc) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:SelectSubGroup(tp,cm.fcheck,false,4,127,tp,c,sub2,chkfnf)
Duel.SetFusionMaterial(sg)
end end
function cm.count(e,tp,eg,ep,ev,re,r,rp) function cm.count(e,tp,eg,ep,ev,re,r,rp)
cm.chaining=true cm.chaining=true
......
...@@ -28,7 +28,7 @@ function cm.initial_effect(c) ...@@ -28,7 +28,7 @@ function cm.initial_effect(c)
e3:SetCategory(CATEGORY_ATKCHANGE) e3:SetCategory(CATEGORY_ATKCHANGE)
e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetProperty(EFFECT_FLAG_CANNOT_INACTIVATE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE) e3:SetProperty(EFFECT_FLAG_CANNOT_INACTIVATE+EFFECT_FLAG_CANNOT_DISABLE)
e3:SetCode(EVENT_FREE_CHAIN) e3:SetCode(EVENT_FREE_CHAIN)
e3:SetCountLimit(1) e3:SetCountLimit(1)
e3:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e3:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END)
...@@ -85,4 +85,4 @@ function cm.indcon(e,tp) ...@@ -85,4 +85,4 @@ function cm.indcon(e,tp)
end end
function cm.efilter(e,te) function cm.efilter(e,te)
return te:GetOwner()~=e:GetOwner() return te:GetOwner()~=e:GetOwner()
end end
\ No newline at end of file
...@@ -64,10 +64,12 @@ function Auxiliary.PreloadUds() ...@@ -64,10 +64,12 @@ function Auxiliary.PreloadUds()
table_range[e]=r table_range[e]=r
return _SetRange(e,r,...) return _SetRange(e,r,...)
end end
local _IsCanTurnSet=Card.IsCanTurnSet --[[local _IsCanTurnSet=Card.IsCanTurnSet
function Card.IsCanTurnSet(c) function Card.IsCanTurnSet(c)
return (c:IsSSetable(true) and c:IsLocation(LOCATION_SZONE)) or ((_IsCanTurnSet(c) and not c:IsLocation(LOCATION_SZONE))) return (c:IsSSetable(true) and c:IsLocation(LOCATION_SZONE)) or ((_IsCanTurnSet(c) and not c:IsLocation(LOCATION_SZONE)))
end end--]]
EFFECT_FLAG_CANNOT_NEGATE=EFFECT_FLAG_CANNOT_NEGATE or 0x200 EFFECT_FLAG_CANNOT_NEGATE=EFFECT_FLAG_CANNOT_NEGATE or 0x200
--require("script/procedure.lua") --require("script/procedure.lua")
Duel.ResetTimeLimit(0,360)
Duel.ResetTimeLimit(1,360)
end end
\ No newline at end of file
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