Commit 3b32d977 authored by GuGu's avatar GuGu

Update c31060.lua

parent 73169b83
Pipeline #40744 passed with stage
in 6 seconds
--混乱的本源✿克劳恩皮丝 --混乱的本源✿克劳恩皮丝
function c31060.initial_effect(c) function c31060.initial_effect(c)
c:SetUniqueOnField(1,0,31060)
--synchro summon --synchro summon
aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0x208),1) aux.AddSynchroProcedure(c,nil,aux.NonTuner(Card.IsSetCard,0x208),1)
c:EnableReviveLimit() c:EnableReviveLimit()
--MAGA!! --MAGA!!
local custom_code=c31060.RegisterMergedEvent_ToSingleCard(c,31060,EVENT_TO_GRAVE)
local e0=Effect.CreateEffect(c) local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) e0:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e0:SetProperty(EFFECT_FLAG_SET_AVAILABLE) e0:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE)
e0:SetCode(EVENT_TO_GRAVE) e0:SetCode(custom_code)
e0:SetRange(LOCATION_EXTRA) e0:SetRange(LOCATION_EXTRA)
e0:SetCondition(c31060.magacon) e0:SetCondition(c31060.magacon)
e0:SetOperation(c31060.magaop) e0:SetOperation(c31060.magaop)
...@@ -36,18 +36,121 @@ function c31060.initial_effect(c) ...@@ -36,18 +36,121 @@ function c31060.initial_effect(c)
e4:SetValue(1) e4:SetValue(1)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
--
function c31060.RegisterMergedEvent_ToSingleCard(c,code,events)
local g=Group.CreateGroup()
g:KeepAlive()
local mt=getmetatable(c)
local seed=0
if type(events) == "table" then
for _, event in ipairs(events) do
seed = seed + event
end
else
seed = events
end
while(mt[seed]==true) do
seed = seed + 1
end
mt[seed]=true
local event_code_single = (code ~ (seed << 16)) | EVENT_CUSTOM
if type(events) == "table" then
for _, event in ipairs(events) do
c31060.RegisterMergedEvent_ToSingleCard_AddOperation(c,g,event,event_code_single)
end
else
c31060.RegisterMergedEvent_ToSingleCard_AddOperation(c,g,events,event_code_single)
end
--listened to again
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE)
e3:SetCode(EVENT_MOVE)
e3:SetLabelObject(g)
e3:SetOperation(c31060.ThisCardMovedToPublicResetCheck_ToSingleCard)
c:RegisterEffect(e3)
return event_code_single
end
function c31060.RegisterMergedEvent_ToSingleCard_AddOperation(c,g,event,event_code_single)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(event)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_SET_AVAILABLE)
e1:SetRange(0xff)
e1:SetLabel(event_code_single)
e1:SetLabelObject(g)
e1:SetOperation(c31060.MergedDelayEventCheck1_ToSingleCard)
c:RegisterEffect(e1)
local ec={
EVENT_CHAIN_ACTIVATING,
EVENT_CHAINING,
EVENT_ATTACK_ANNOUNCE,
EVENT_BREAK_EFFECT,
EVENT_CHAIN_SOLVING,
EVENT_CHAIN_SOLVED,
EVENT_CHAIN_END,
EVENT_SUMMON,
EVENT_SPSUMMON,
EVENT_MSET,
EVENT_BATTLE_DESTROYED
}
for _,code in ipairs(ec) do
local ce=e1:Clone()
ce:SetCode(code)
ce:SetOperation(c31060.MergedDelayEventCheck2_ToSingleCard)
c:RegisterEffect(ce)
end
end
function c31060.MergedDelayEventCheck1_ToSingleCard(e,tp,eg,ep,ev,re,r,rp)
local g=e:GetLabelObject()
local c=e:GetOwner()
g:Merge(eg)
if Duel.CheckEvent(EVENT_MOVE) then
local _,meg=Duel.CheckEvent(EVENT_MOVE,true)
if meg:IsContains(c) and (c:IsFaceup() or c:IsPublic()) then
g:Clear()
end
end
if Duel.GetCurrentChain()==0 and #g>0 and g:IsExists(Card.IsReason,1,nil,REASON_ADJUST|REASON_EFFECT) then
local _eg=g:Clone()
Duel.RaiseEvent(_eg,e:GetLabel(),re,r,rp,ep,ev)
g:Clear()
end
end
function c31060.MergedDelayEventCheck2_ToSingleCard(e,tp,eg,ep,ev,re,r,rp)
local g=e:GetLabelObject()
if Duel.CheckEvent(EVENT_MOVE) then
local _,meg=Duel.CheckEvent(EVENT_MOVE,true)
local c=e:GetOwner()
if meg:IsContains(c) and (c:IsFaceup() or c:IsPublic()) then
g:Clear()
end
end
if #g>0 then
local _eg=g:Clone()
Duel.RaiseEvent(_eg,e:GetLabel(),re,r,rp,ep,ev)
g:Clear()
end
end
function c31060.ThisCardMovedToPublicResetCheck_ToSingleCard(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetOwner()
local g=e:GetLabelObject()
if c:IsFaceup() or c:IsPublic() then
g:Clear()
end
end
--
function c31060.magafilter(c) function c31060.magafilter(c)
return c:IsSetCard(0x275) return c:IsSetCard(0x275) and c:IsReason(REASON_EFFECT)
end end
function c31060.magacon(e,tp,eg,ep,ev,re,r,rp,c) function c31060.magacon(e,tp,eg,ep,ev,re,r,rp,c)
local c=e:GetHandler() local c=e:GetHandler()
return #eg>=2 and eg:IsExists(c31060.magafilter,1,nil) and Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) return #eg>=2 and eg:IsExists(c31060.magafilter,1,nil) and Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil)
--and bit.band(r,REASON_EFFECT)~=0
end end
function c31060.magaop(e,tp,eg,ep,ev,re,r,rp,c) function c31060.magaop(e,tp,eg,ep,ev,re,r,rp,c)
if Duel.SelectYesNo(tp,aux.Stringid(31060,2)) then if Duel.SelectYesNo(tp,aux.Stringid(31060,2)) then
Duel.Hint(HINT_CARD,0,31060) Duel.Hint(HINT_CARD,0,31060)
Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD) Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_SPSUMMON+REASON_DISCARD)
Duel.SpecialSummon(e:GetHandler(),SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(e:GetHandler(),SUMMON_TYPE_SYNCHRO,tp,tp,false,false,POS_FACEUP)
e:GetHandler():CompleteProcedure() e:GetHandler():CompleteProcedure()
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