Commit 636a66d1 authored by POLYMER's avatar POLYMER

fix

parent 6d744f0e
...@@ -5313,7 +5313,6 @@ ...@@ -5313,7 +5313,6 @@
77032563 0 77032563 0
77032564 0 77032564 0
77032565 0 77032565 0
89790163 0
#limit #limit
33403513 1 33403513 1
82204250 1 82204250 1
......
...@@ -5042,7 +5042,11 @@ function cm.HTAmvop(e,tp,eg,ep,ev,re,r,rp) ...@@ -5042,7 +5042,11 @@ function cm.HTAmvop(e,tp,eg,ep,ev,re,r,rp)
e1:SetDescription(aux.Stringid(53765000,14)) e1:SetDescription(aux.Stringid(53765000,14))
if te:GetCode()==EVENT_FREE_CHAIN then if te:GetCode()==EVENT_FREE_CHAIN then
if te:IsActiveType(TYPE_TRAP+TYPE_QUICKPLAY) then e1:SetType(EFFECT_TYPE_QUICK_O) else e1:SetType(EFFECT_TYPE_IGNITION) end if te:IsActiveType(TYPE_TRAP+TYPE_QUICKPLAY) then e1:SetType(EFFECT_TYPE_QUICK_O) else e1:SetType(EFFECT_TYPE_IGNITION) end
elseif te:GetCode()==EVENT_CHAINING and te:GetProperty()&EFFECT_FLAG_DELAY==0 then e1:SetType(EFFECT_TYPE_QUICK_O) elseif te:GetCode()~=0 then e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) else e1:SetType(EFFECT_TYPE_IGNITION) end elseif te:GetCode()==EVENT_CHAINING and te:GetProperty()&EFFECT_FLAG_DELAY==0 then
if te:GetType()&EFFECT_TYPE_QUICK_F~=0 then e1:SetType(EFFECT_TYPE_QUICK_O) end
elseif te:GetCode()~=0 then
if te:GetType()&EFFECT_TYPE_TRIGGER_F~=0 then e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) end
else e1:SetType(EFFECT_TYPE_IGNITION) end
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
local pro,pro2=te:GetProperty() local pro,pro2=te:GetProperty()
e1:SetProperty(pro|EFFECT_FLAG_UNCOPYABLE,pro2) e1:SetProperty(pro|EFFECT_FLAG_UNCOPYABLE,pro2)
......
if not require and dofile then function require(str) return dofile(str..".lua") end end
if not pcall(function() require("expansions/script/c53702500") end) then require("script/c53702500") end
local m=53716001 local m=53716001
local cm=_G["c"..m] local cm=_G["c"..m]
cm.name="断片折光 幻想匿国" cm.name="断片折光 幻想匿国"
function cm.initial_effect(c) function cm.initial_effect(c)
c:EnableReviveLimit()
local e0=Effect.CreateEffect(c) local e0=Effect.CreateEffect(c)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetType(EFFECT_TYPE_SINGLE) e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetCode(EFFECT_SPSUMMON_CONDITION) e0:SetCode(EFFECT_SPSUMMON_CONDITION)
e0:SetValue(aux.FALSE) e0:SetValue(aux.FALSE)
c:RegisterEffect(e0) c:RegisterEffect(e0)
local e1=Effect.CreateEffect(c) local e1,e1_1,e2,e3=SNNM.ActivatedAsSpellorTrap(c,0x20004,LOCATION_EXTRA)
e1:SetDescription(aux.Stringid(m,0)) e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetRange(LOCATION_EXTRA)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE)
e1:SetCountLimit(1,m) e1:SetCountLimit(1,m)
e1:SetCost(cm.cost) e1:SetCost(cm.cost)
e1:SetOperation(cm.op) e1:SetOperation(cm.op)
c:RegisterEffect(e1) SNNM.ActivatedAsSpellorTrapCheck(c)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_ACTIVATE_COST)
e3:SetRange(LOCATION_EXTRA)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetLabelObject(e1)
e3:SetTargetRange(1,1)
e3:SetTarget(cm.actarget)
e3:SetCost(cm.costchk)
e3:SetOperation(cm.costop)
c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_ADJUST)
e4:SetRange(LOCATION_EXTRA)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e4:SetLabelObject(e1)
e4:SetOperation(cm.adjustop)
c:RegisterEffect(e4)
local e6=Effect.CreateEffect(c)
e6:SetType(EFFECT_TYPE_SINGLE)
e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE)
e6:SetCode(m)
e6:SetRange(LOCATION_EXTRA)
c:RegisterEffect(e6)
Duel.AddCustomActivityCounter(m,ACTIVITY_CHAIN,cm.chainfilter) Duel.AddCustomActivityCounter(m,ACTIVITY_CHAIN,cm.chainfilter)
end end
function cm.chainfilter(re,tp,cid) function cm.chainfilter(re,tp,cid)
...@@ -101,267 +75,6 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -101,267 +75,6 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e7:SetOperation(cm.spop) e7:SetOperation(cm.spop)
c:RegisterEffect(e7) c:RegisterEffect(e7)
end end
function cm.actarget(e,te,tp)
return te:GetHandler()==e:GetHandler() and te==e:GetLabelObject()
end
function cm.costchk(e,te_or_c,tp)
local fdzone=0
for i=0,4 do if Duel.CheckLocation(tp,LOCATION_SZONE,i) then fdzone=fdzone|1<<i end end
if aux.GetValueType(te_or_c)=="Effect" and te_or_c:IsHasProperty(EFFECT_FLAG_LIMIT_ZONE) then
local zone=te_or_c:GetValue()
if aux.GetValueType(c)=="function" then
zone=zone(te_or_c,tp)
end
fdzone=fdzone&zone
e:SetLabel(fdzone)
end
return fdzone>0
end
function cm.costop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local te=e:GetLabelObject()
local zone=e:GetLabel()
if zone==0 then Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,false) else
local flag=Duel.SelectDisableField(tp,1,LOCATION_SZONE,0,~zone&0x1f00)
Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,false,2^(math.log(flag,2)-8))
end
e:SetLabel(0)
c:CreateEffectRelation(te)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetCode(EFFECT_CHANGE_TYPE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e0:SetValue(0x20004)
e0:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET)
c:RegisterEffect(e0,true)
local te2=te:Clone()
c:RegisterEffect(te2,true)
e:SetLabelObject(te2)
te:SetType(EFFECT_TYPE_ACTIVATE)
local ev0=Duel.GetCurrentChain()+1
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetCountLimit(1)
e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp) return ev==ev0 end)
e1:SetOperation(cm.rsop)
e1:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_CHAIN_NEGATED)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_REMAIN_FIELD)
e3:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_CANNOT_DISABLE)
e3:SetReset(RESET_CHAIN)
c:RegisterEffect(e3)
end
function cm.rsop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
if e:GetCode()==EVENT_CHAIN_SOLVED and rc:IsRelateToEffect(re) then
rc:SetStatus(STATUS_EFFECT_ENABLED,true)
end
if e:GetCode()==EVENT_CHAIN_NEGATED and rc:IsRelateToEffect(re) then
rc:SetStatus(STATUS_ACTIVATE_DISABLED,true)
rc:CancelToGrave(false)
end
re:Reset()
end
function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local te=e:GetLabelObject()
local re1={c:IsHasEffect(EFFECT_CANNOT_TRIGGER)}
local re2={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_ACTIVATE)}
local re3={Duel.IsPlayerAffectedByEffect(tp,EFFECT_ACTIVATE_COST)}
local t1,t2={},{}
for _,te1 in pairs(re1) do
table.insert(t1,te1)
if te1:GetType()==EFFECT_TYPE_SINGLE then
table.insert(t2,1)
end
if te1:GetType()==EFFECT_TYPE_EQUIP then
table.insert(t2,2)
end
if te1:GetType()==EFFECT_TYPE_FIELD then
table.insert(t2,3)
end
end
for _,te2 in pairs(re2) do
local val=te2:GetValue()
if aux.GetValueType(val)=="number" or val(te2,te,tp) then
table.insert(t1,te2)
table.insert(t2,4)
end
end
--[[Waiting for further repair
for _,te3 in pairs(re3) do
if not te3:GetLabelObject() then
local cost=te3:GetCost()
if cost and not cost(te3,te,tp) then
local tg=te3:GetTarget()
if not tg or tg(te3,e,tp) then
table.insert(t1,te3)
table.insert(t2,5)
end
end
end
end--]]
local dc=Duel.CreateToken(tp,m+50)
local de=dc:GetActivateEffect()
local ae2={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_ACTIVATE)}
local ae3={Duel.IsPlayerAffectedByEffect(tp,EFFECT_ACTIVATE_COST)}
local t3,t4={},{}
for _,te2 in pairs(ae2) do
local val=te2:GetValue()
if aux.GetValueType(val)=="number" or val(te2,de,tp) then
table.insert(t3,te2)
table.insert(t4,4)
end
end
--[[Waiting for further repair
for _,te3 in pairs(ae3) do
if not te3:GetLabelObject() then
local cost=te3:GetCost()
if cost and not cost(te3,de,tp) then
local tg=te3:GetTarget()
if not tg or tg(te3,de,tp) then
table.insert(t3,te3)
table.insert(t4,5)
end
end
end
end--]]
local ret1,ret2={},{}
for k,v1 in pairs(t1) do
local equal=false
for k,v2 in pairs(t3) do
if v1==v2 then
equal=true
break
end
end
if not equal then
table.insert(ret1,v1)
table.insert(ret2,t2[k])
end
end
local ret3,ret4={},{}
for k,v1 in pairs(t3) do
local equal=false
for k,v2 in pairs(t1) do
if v1==v2 then
equal=true
break
end
end
if not equal then
table.insert(ret3,v1)
table.insert(ret4,t4[k])
end
end
for k,v in pairs(ret1) do
if ret2[k]==1 then
local con=v:GetCondition()
if not con then con=aux.TRUE end
v:SetCondition(cm.chcon(con,false))
end
if ret2[k]==2 then
local con=v:GetCondition()
if not con then con=aux.TRUE end
v:SetCondition(cm.chcon2(con,false))
end
if ret2[k]==3 then
local tg=v:GetTarget()
if not tg then
v:SetTarget(cm.chtg(aux.TRUE,false))
elseif tg(v,c)==true then
v:SetTarget(cm.chtg(tg,false))
end
end
if ret2[k]==4 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,te,tp) then
v:SetValue(cm.chval(val,false))
end
end
if ret2[k]==5 then
if not v:GetLabelObject() then
local cost=v:GetCost()
if cost and not cost(v,te,tp) then
local tg=v:GetTarget()
if not tg then
v:SetTarget(cm.chtg2(aux.TRUE,false))
elseif tg(v,te,tp) then
v:SetTarget(cm.chtg2(tg,false))
end
end
end
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,tp) then
v:SetValue(cm.chval(val,true))
end
end
if ret4[k]==5 then
if not v:GetLabelObject() then
local cost=v:GetCost()
if cost and not cost(v,de,tp) then
local tg=v:GetTarget()
if not tg then
v:SetTarget(cm.chtg2(aux.TRUE,true))
elseif tg(v,de,tp) then
v:SetTarget(cm.chtg2(tg,true))
end
end
end
end
end
end
function cm.chcon(_con,res)
return function(e,...)
local x=e:GetHandler()
if x:IsHasEffect(m) then return res end
return _con(e,...)
end
end
function cm.chcon2(_con,res)
return function(e,...)
local x=e:GetHandler():GetEquipTarget()
if x:IsHasEffect(m) then return res end
return _con(e,...)
end
end
function cm.chtg(_tg,res)
return function(e,c,...)
if c:IsHasEffect(m) then return res end
return _tg(e,c,...)
end
end
function cm.chval(_val,res)
return function(e,re,...)
local x=nil
if aux.GetValueType(re)=="Effect" then x=re:GetHandler() elseif aux.GetValueType(re)=="Card" then
local rc=Duel.CreateToken(tp,m+50)
re=rc:GetActivateEffect()
else return res end
if x and x:IsHasEffect(m) then return res end
return _val(e,re,...)
end
end
function cm.chtg2(_tg,res)
return function(e,te,...)
local x=te:GetHandler()
if x:IsHasEffect(m) then return res end
return _tg(e,te,...)
end
end
function cm.disable(e,c) function cm.disable(e,c)
local ct1=aux.GetColumn(e:GetHandler()) local ct1=aux.GetColumn(e:GetHandler())
local ct2=aux.GetColumn(c) local ct2=aux.GetColumn(c)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
if not require and dofile then function require(str) return dofile(str..".lua") end end
if not pcall(function() require("expansions/script/c53702500") end) then require("script/c53702500") end
local m=53716013 local m=53716013
local cm=_G["c"..m] local cm=_G["c"..m]
cm.name="断片折光 幻想牲都" cm.name="断片折光 幻想牲都"
...@@ -9,45 +11,16 @@ function cm.initial_effect(c) ...@@ -9,45 +11,16 @@ function cm.initial_effect(c)
e0:SetCode(EFFECT_SPSUMMON_CONDITION) e0:SetCode(EFFECT_SPSUMMON_CONDITION)
e0:SetValue(aux.FALSE) e0:SetValue(aux.FALSE)
c:RegisterEffect(e0) c:RegisterEffect(e0)
local e1=Effect.CreateEffect(c) local e1,e1_1,e2,e3=SNNM.ActivatedAsSpellorTrap(c,0x20004,LOCATION_EXTRA)
e1:SetDescription(aux.Stringid(m,0)) e1:SetDescription(aux.Stringid(m,0))
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetRange(LOCATION_EXTRA)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE)
e1:SetCost(cm.cost) e1:SetCost(cm.cost)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAIN_SOLVING)
e2:SetRange(LOCATION_SZONE)
e2:SetOperation(cm.disop)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_ACTIVATE_COST)
e3:SetRange(LOCATION_EXTRA)
e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e3:SetLabelObject(e1)
e3:SetTargetRange(1,1)
e3:SetTarget(cm.actarget)
e3:SetCost(cm.costchk)
e3:SetOperation(cm.costop)
c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_ADJUST) e4:SetCode(EVENT_CHAIN_SOLVING)
e4:SetRange(LOCATION_EXTRA) e4:SetRange(LOCATION_SZONE)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e4:SetOperation(cm.disop)
e4:SetLabelObject(e1)
e4:SetOperation(cm.adjustop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
local e6=Effect.CreateEffect(c) SNNM.ActivatedAsSpellorTrapCheck(c)
e6:SetType(EFFECT_TYPE_SINGLE)
e6:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_CANNOT_DISABLE)
e6:SetCode(m)
e6:SetRange(LOCATION_EXTRA)
c:RegisterEffect(e6)
Duel.AddCustomActivityCounter(m,ACTIVITY_CHAIN,cm.chainfilter) Duel.AddCustomActivityCounter(m,ACTIVITY_CHAIN,cm.chainfilter)
end end
function cm.chainfilter(re,tp,cid) function cm.chainfilter(re,tp,cid)
...@@ -73,267 +46,6 @@ end ...@@ -73,267 +46,6 @@ end
function cm.aclimit(e,re,tp) function cm.aclimit(e,re,tp)
return re:IsActiveType(TYPE_MONSTER) return re:IsActiveType(TYPE_MONSTER)
end end
function cm.actarget(e,te,tp)
return te:GetHandler()==e:GetHandler() and te==e:GetLabelObject()
end
function cm.costchk(e,te_or_c,tp)
local fdzone=0
for i=0,4 do if Duel.CheckLocation(tp,LOCATION_SZONE,i) then fdzone=fdzone|1<<i end end
if aux.GetValueType(te_or_c)=="Effect" and te_or_c:IsHasProperty(EFFECT_FLAG_LIMIT_ZONE) then
local zone=te_or_c:GetValue()
if aux.GetValueType(c)=="function" then
zone=zone(te_or_c,tp)
end
fdzone=fdzone&zone
e:SetLabel(fdzone)
end
return fdzone>0
end
function cm.costop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local te=e:GetLabelObject()
local zone=e:GetLabel()
if zone==0 then Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,false) else
local flag=Duel.SelectDisableField(tp,1,LOCATION_SZONE,0,~zone&0x1f00)
Duel.MoveToField(c,tp,tp,LOCATION_SZONE,POS_FACEUP,false,2^(math.log(flag,2)-8))
end
e:SetLabel(0)
c:CreateEffectRelation(te)
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetCode(EFFECT_CHANGE_TYPE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e0:SetValue(0x20004)
e0:SetReset(RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET)
c:RegisterEffect(e0,true)
local te2=te:Clone()
c:RegisterEffect(te2,true)
e:SetLabelObject(te2)
te:SetType(EFFECT_TYPE_ACTIVATE)
local ev0=Duel.GetCurrentChain()+1
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetCountLimit(1)
e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp) return ev==ev0 end)
e1:SetOperation(cm.rsop)
e1:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_CHAIN_NEGATED)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_REMAIN_FIELD)
e3:SetProperty(EFFECT_FLAG_OATH+EFFECT_FLAG_CANNOT_DISABLE)
e3:SetReset(RESET_CHAIN)
c:RegisterEffect(e3)
end
function cm.rsop(e,tp,eg,ep,ev,re,r,rp)
local rc=re:GetHandler()
if e:GetCode()==EVENT_CHAIN_SOLVED and rc:IsRelateToEffect(re) then
rc:SetStatus(STATUS_EFFECT_ENABLED,true)
end
if e:GetCode()==EVENT_CHAIN_NEGATED and rc:IsRelateToEffect(re) then
rc:SetStatus(STATUS_ACTIVATE_DISABLED,true)
rc:CancelToGrave(false)
end
re:Reset()
end
function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local te=e:GetLabelObject()
local re1={c:IsHasEffect(EFFECT_CANNOT_TRIGGER)}
local re2={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_ACTIVATE)}
local re3={Duel.IsPlayerAffectedByEffect(tp,EFFECT_ACTIVATE_COST)}
local t1,t2={},{}
for _,te1 in pairs(re1) do
table.insert(t1,te1)
if te1:GetType()==EFFECT_TYPE_SINGLE then
table.insert(t2,1)
end
if te1:GetType()==EFFECT_TYPE_EQUIP then
table.insert(t2,2)
end
if te1:GetType()==EFFECT_TYPE_FIELD then
table.insert(t2,3)
end
end
for _,te2 in pairs(re2) do
local val=te2:GetValue()
if aux.GetValueType(val)=="number" or val(te2,te,tp) then
table.insert(t1,te2)
table.insert(t2,4)
end
end
--[[Waiting for further repair
for _,te3 in pairs(re3) do
if not te3:GetLabelObject() then
local cost=te3:GetCost()
if cost and not cost(te3,te,tp) then
local tg=te3:GetTarget()
if not tg or tg(te3,e,tp) then
table.insert(t1,te3)
table.insert(t2,5)
end
end
end
end--]]
local dc=Duel.CreateToken(tp,m+50)
local de=dc:GetActivateEffect()
local ae2={Duel.IsPlayerAffectedByEffect(tp,EFFECT_CANNOT_ACTIVATE)}
local ae3={Duel.IsPlayerAffectedByEffect(tp,EFFECT_ACTIVATE_COST)}
local t3,t4={},{}
for _,te2 in pairs(ae2) do
local val=te2:GetValue()
if aux.GetValueType(val)=="number" or val(te2,de,tp) then
table.insert(t3,te2)
table.insert(t4,4)
end
end
--[[Waiting for further repair
for _,te3 in pairs(ae3) do
if not te3:GetLabelObject() then
local cost=te3:GetCost()
if cost and not cost(te3,de,tp) then
local tg=te3:GetTarget()
if not tg or tg(te3,de,tp) then
table.insert(t3,te3)
table.insert(t4,5)
end
end
end
end--]]
local ret1,ret2={},{}
for k,v1 in pairs(t1) do
local equal=false
for k,v2 in pairs(t3) do
if v1==v2 then
equal=true
break
end
end
if not equal then
table.insert(ret1,v1)
table.insert(ret2,t2[k])
end
end
local ret3,ret4={},{}
for k,v1 in pairs(t3) do
local equal=false
for k,v2 in pairs(t1) do
if v1==v2 then
equal=true
break
end
end
if not equal then
table.insert(ret3,v1)
table.insert(ret4,t4[k])
end
end
for k,v in pairs(ret1) do
if ret2[k]==1 then
local con=v:GetCondition()
if not con then con=aux.TRUE end
v:SetCondition(cm.chcon(con,false))
end
if ret2[k]==2 then
local con=v:GetCondition()
if not con then con=aux.TRUE end
v:SetCondition(cm.chcon2(con,false))
end
if ret2[k]==3 then
local tg=v:GetTarget()
if not tg then
v:SetTarget(cm.chtg(aux.TRUE,false))
elseif tg(v,c)==true then
v:SetTarget(cm.chtg(tg,false))
end
end
if ret2[k]==4 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,te,tp) then
v:SetValue(cm.chval(val,false))
end
end
if ret2[k]==5 then
if not v:GetLabelObject() then
local cost=v:GetCost()
if cost and not cost(v,te,tp) then
local tg=v:GetTarget()
if not tg then
v:SetTarget(cm.chtg2(aux.TRUE,false))
elseif tg(v,te,tp) then
v:SetTarget(cm.chtg2(tg,false))
end
end
end
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,tp) then
v:SetValue(cm.chval(val,true))
end
end
if ret4[k]==5 then
if not v:GetLabelObject() then
local cost=v:GetCost()
if cost and not cost(v,de,tp) then
local tg=v:GetTarget()
if not tg then
v:SetTarget(cm.chtg2(aux.TRUE,true))
elseif tg(v,de,tp) then
v:SetTarget(cm.chtg2(tg,true))
end
end
end
end
end
end
function cm.chcon(_con,res)
return function(e,...)
local x=e:GetHandler()
if x:IsHasEffect(m) then return res end
return _con(e,...)
end
end
function cm.chcon2(_con,res)
return function(e,...)
local x=e:GetHandler():GetEquipTarget()
if x:IsHasEffect(m) then return res end
return _con(e,...)
end
end
function cm.chtg(_tg,res)
return function(e,c,...)
if c:IsHasEffect(m) then return res end
return _tg(e,c,...)
end
end
function cm.chval(_val,res)
return function(e,re,...)
local x=nil
if aux.GetValueType(re)=="Effect" then x=re:GetHandler() elseif aux.GetValueType(re)=="Card" then
local rc=Duel.CreateToken(tp,m+50)
re=rc:GetActivateEffect()
else return res end
if x and x:IsHasEffect(m) then return res end
return _val(e,re,...)
end
end
function cm.chtg2(_tg,res)
return function(e,te,...)
local x=te:GetHandler()
if x:IsHasEffect(m) then return res end
return _tg(e,te,...)
end
end
function cm.tgfilter(c) function cm.tgfilter(c)
return c:IsFaceup() and c:IsType(TYPE_TRAP) and c:IsAbleToGrave() return c:IsFaceup() and c:IsType(TYPE_TRAP) and c:IsAbleToGrave()
end end
......
This diff is collapsed.
--无尽镜界 --无尽镜界
if not require and loadfile then
function require(str)
require_list=require_list or {}
if not require_list[str] then
if string.find(str,"%.") then
require_list[str]=loadfile(str)
else
require_list[str]=loadfile(str..".lua")
end
require_list[str]()
return require_list[str]
end
return require_list[str]
end
end
if not pcall(require,"expansions/script/c65199999") then pcall(require,"script/c65199999") end if not pcall(require,"expansions/script/c65199999") then pcall(require,"script/c65199999") end
local s,id,o=GetID() local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
......
--无尽镜界 --无尽镜界
local s,id,o=GetID() local s,id,o=GetID()
if not require and loadfile then
function require(str)
require_list=require_list or {}
if not require_list[str] then
if string.find(str,"%.") then
require_list[str]=loadfile(str)
else
require_list[str]=loadfile(str..".lua")
end
require_list[str]()
return require_list[str]
end
return require_list[str]
end
end
if not pcall(require,"expansions/script/c65199999") then pcall(require,"script/c65199999") end if not pcall(require,"expansions/script/c65199999") then pcall(require,"script/c65199999") end
function s.initial_effect(c) function s.initial_effect(c)
--spsummon --spsummon
...@@ -103,7 +118,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -103,7 +118,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
if value==code then if value==code then
table.remove(Mirrors_World_Card,i) table.remove(Mirrors_World_Card,i)
break break
end end
end end
local cg=Group.CreateGroup() local cg=Group.CreateGroup()
......
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