Commit e082beb3 authored by DailyShana's avatar DailyShana

fix non-continuous returning control

所有者の刻印
http://yugioh-wiki.net/index.php?%A1%D4%BD%EA%CD%AD%BC%D4%A4%CE%B9%EF%B0%F5%A1%D5#faq
Q:《強奪》でコントロールを奪われたモンスターはどうなりますか。
A:《所有者の刻印》の効果処理を終えた後に、再度《強奪》の効果が適用されます。(13/02/08)

ゴヨウ・エンペラー
http://yugioh-wiki.net/index.php?%A1%D4%A5%B4%A5%E8%A5%A6%A1%A6%A5%A8%A5%F3%A5%DA%A5%E9%A1%BC%A1%D5#faq1
Q:《グレイドル・アリゲーター》が装備され相手にコントロールを奪われているモンスターが存在します。
  相手のこのカードの(3)の効果が発動した場合、そのモンスターのコントロールはどうなりますか?
A:(3)の効果が適用された場合、モンスターのコントロールは元々の持ち主に戻ります。
  その後、《グレイドル・アリゲーター》の効果であらためてコントロールが移ります。(17/05/11)
parent 942e3d98
--ラーの翼神竜-球体形 --ラーの翼神竜-球体形
function c10000080.initial_effect(c) function c10000080.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--summon with 3 tribute --summon with 3 tribute
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(10000080,0)) e1:SetDescription(aux.Stringid(10000080,0))
...@@ -110,13 +111,28 @@ function c10000080.retcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -110,13 +111,28 @@ function c10000080.retcon(e,tp,eg,ep,ev,re,r,rp)
end end
function c10000080.retop(e,tp,eg,ep,ev,re,r,rp) function c10000080.retop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetOwner() local c=e:GetOwner()
c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) local e1=Effect.CreateEffect(e:GetHandler())
local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_REMOVE_BRAINWASHING)
e1:SetCode(EFFECT_SET_CONTROL) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetValue(c:GetOwner()) e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetReset(RESET_EVENT+0xec0000) e1:SetLabelObject(c)
c:RegisterEffect(e1) e1:SetTarget(c10000080.rettg)
Duel.RegisterEffect(e1,tp)
--reset
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_ADJUST)
e2:SetLabelObject(e1)
e2:SetOperation(c10000080.reset)
Duel.RegisterEffect(e2,tp)
end
function c10000080.rettg(e,c)
return c==e:GetLabelObject() and c:GetFlagEffect(10000080)~=0
end
function c10000080.reset(e,tp,eg,ep,ev,re,r,rp)
e:GetLabelObject():Reset()
e:Reset()
end end
function c10000080.spcost(e,tp,eg,ep,ev,re,r,rp,chk) function c10000080.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
......
--ゴヨウ・エンペラー --ゴヨウ・エンペラー
function c59255742.initial_effect(c) function c59255742.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--fusion material --fusion material
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,c59255742.ffilter,2,false) aux.AddFusionProcFunRep(c,c59255742.ffilter,2,false)
...@@ -111,16 +112,50 @@ end ...@@ -111,16 +112,50 @@ end
function c59255742.ctop(e,tp,eg,ep,ev,re,r,rp) function c59255742.ctop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0)
local tc=g:GetFirst() local tc=g:GetFirst()
local tg=Group.CreateGroup()
local tc=g:GetFirst()
while tc do while tc do
if not tc:IsImmuneToEffect(e) then if not tc:IsImmuneToEffect(e) and tc:GetFlagEffect(59255742)==0 then
tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) tc:RegisterFlagEffect(59255742,RESET_EVENT+RESETS_STANDARD,0,1)
local e1=Effect.CreateEffect(e:GetHandler()) tg:AddCard(tc)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_CONTROL)
e1:SetValue(tc:GetOwner())
e1:SetReset(RESET_EVENT+0xec0000)
tc:RegisterEffect(e1)
end end
tc=g:GetNext() tc=g:GetNext()
end end
tg:KeepAlive()
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_REMOVE_BRAINWASHING)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetTarget(aux.TargetEqualFunction(Card.GetFlagEffect,1,59255742))
e1:SetLabelObject(tg)
Duel.RegisterEffect(e1,tp)
--force adjust
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAIN_SOLVED)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetLabelObject(e1)
Duel.RegisterEffect(e2,tp)
--reset
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_CHAIN_SOLVED)
e3:SetLabelObject(e2)
e3:SetLabel(Duel.GetChainInfo(0,CHAININFO_CHAIN_ID))
e3:SetOperation(c59255742.reset)
Duel.RegisterEffect(e3,tp)
end
function c59255742.reset(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID)==e:GetLabel() then
local e2=e:GetLabelObject()
local e1=e2:GetLabelObject()
local tg=e1:GetLabelObject()
for tc in aux.Next(tg) do
tc:ResetFlagEffect(59255742)
end
tg:DeleteGroup()
e1:Reset()
e2:Reset()
e:Reset()
end
end end
--トリック・ボックス --トリック・ボックス
function c93983867.initial_effect(c) function c93983867.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--activate --activate
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_CONTROL+CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_CONTROL+CATEGORY_SPECIAL_SUMMON)
...@@ -39,25 +40,53 @@ function c93983867.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -39,25 +40,53 @@ function c93983867.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.SelectMatchingCard(tp,c93983867.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,c93983867.spfilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
local tc=g:GetFirst() local tc=g:GetFirst()
if tc and Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP)~=0 then if tc and Duel.SpecialSummon(tc,0,tp,1-tp,false,false,POS_FACEUP)~=0 then
tc:RegisterFlagEffect(93983867,RESET_EVENT+RESETS_STANDARD,0,1)
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetRange(LOCATION_MZONE) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetLabelObject(tc)
e1:SetCondition(c93983867.retcon)
e1:SetOperation(c93983867.retop) e1:SetOperation(c93983867.retop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) Duel.RegisterEffect(e1,tp)
tc:RegisterEffect(e1)
end end
end end
end end
function c93983867.retcon(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject()
if tc:GetFlagEffect(93983867)~=0 then
return true
else
e:Reset()
return false
end
end
function c93983867.retop(e,tp,eg,ep,ev,re,r,rp) function c93983867.retop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local tc=e:GetLabelObject()
c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) local e1=Effect.CreateEffect(e:GetHandler())
local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_REMOVE_BRAINWASHING)
e1:SetCode(EFFECT_SET_CONTROL) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetValue(c:GetOwner()) e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetReset(RESET_EVENT+0xec0000) e1:SetLabelObject(tc)
c:RegisterEffect(e1) e1:SetTarget(c93983867.rettg)
Duel.RegisterEffect(e1,tp)
--reset
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_ADJUST)
e2:SetLabelObject(e1)
e2:SetOperation(c93983867.reset)
Duel.RegisterEffect(e2,tp)
end
function c93983867.rettg(e,c)
return c==e:GetLabelObject() and c:GetFlagEffect(93983867)~=0
end
function c93983867.reset(e,tp,eg,ep,ev,re,r,rp)
local e1=e:GetLabelObject()
local tc=e1:GetLabelObject()
tc:ResetFlagEffect(93983867)
e1:Reset()
e:Reset()
end end
--所有者の刻印 --所有者の刻印
function c9720537.initial_effect(c) function c9720537.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--Activate --Activate
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_CONTROL) e1:SetCategory(CATEGORY_CONTROL)
...@@ -17,17 +18,50 @@ function c9720537.target(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -17,17 +18,50 @@ function c9720537.target(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c9720537.activate(e,tp,eg,ep,ev,re,r,rp) function c9720537.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE) local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE)
local tg=Group.CreateGroup()
local tc=g:GetFirst() local tc=g:GetFirst()
while tc do while tc do
if not tc:IsImmuneToEffect(e) then if not tc:IsImmuneToEffect(e) and tc:GetFlagEffect(9720537)==0 then
tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE) tc:RegisterFlagEffect(9720537,RESET_EVENT+RESETS_STANDARD,0,1)
local e1=Effect.CreateEffect(e:GetHandler()) tg:AddCard(tc)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_CONTROL)
e1:SetValue(tc:GetOwner())
e1:SetReset(RESET_EVENT+0xec0000)
tc:RegisterEffect(e1)
end end
tc=g:GetNext() tc=g:GetNext()
end end
tg:KeepAlive()
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_REMOVE_BRAINWASHING)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetTarget(aux.TargetEqualFunction(Card.GetFlagEffect,1,9720537))
e1:SetLabelObject(tg)
Duel.RegisterEffect(e1,tp)
--force adjust
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAIN_SOLVED)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetLabelObject(e1)
Duel.RegisterEffect(e2,tp)
--reset
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_CHAIN_SOLVED)
e3:SetLabelObject(e2)
e3:SetLabel(Duel.GetChainInfo(0,CHAININFO_CHAIN_ID))
e3:SetOperation(c9720537.reset)
Duel.RegisterEffect(e3,tp)
end
function c9720537.reset(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID)==e:GetLabel() then
local e2=e:GetLabelObject()
local e1=e2:GetLabelObject()
local tg=e1:GetLabelObject()
for tc in aux.Next(tg) do
tc:ResetFlagEffect(9720537)
end
tg:DeleteGroup()
e1:Reset()
e2:Reset()
e:Reset()
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