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)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--summon with 3 tribute
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(10000080,0))
......@@ -110,13 +111,28 @@ function c10000080.retcon(e,tp,eg,ep,ev,re,r,rp)
end
function c10000080.retop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetOwner()
c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_CONTROL)
e1:SetValue(c:GetOwner())
e1:SetReset(RESET_EVENT+0xec0000)
c:RegisterEffect(e1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_REMOVE_BRAINWASHING)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetLabelObject(c)
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
function c10000080.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end
......
--ゴヨウ・エンペラー
function c59255742.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcFunRep(c,c59255742.ffilter,2,false)
......@@ -111,16 +112,50 @@ end
function c59255742.ctop(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,0)
local tc=g:GetFirst()
local tg=Group.CreateGroup()
local tc=g:GetFirst()
while tc do
if not tc:IsImmuneToEffect(e) then
tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_CONTROL)
e1:SetValue(tc:GetOwner())
e1:SetReset(RESET_EVENT+0xec0000)
tc:RegisterEffect(e1)
if not tc:IsImmuneToEffect(e) and tc:GetFlagEffect(59255742)==0 then
tc:RegisterFlagEffect(59255742,RESET_EVENT+RESETS_STANDARD,0,1)
tg:AddCard(tc)
end
tc=g:GetNext()
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
--トリック・ボックス
function c93983867.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_CONTROL+CATEGORY_SPECIAL_SUMMON)
......@@ -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 tc=g:GetFirst()
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())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetRange(LOCATION_MZONE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetCountLimit(1)
e1:SetLabelObject(tc)
e1:SetCondition(c93983867.retcon)
e1:SetOperation(c93983867.retop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
Duel.RegisterEffect(e1,tp)
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)
local c=e:GetHandler()
c:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_CONTROL)
e1:SetValue(c:GetOwner())
e1:SetReset(RESET_EVENT+0xec0000)
c:RegisterEffect(e1)
local tc=e:GetLabelObject()
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_REMOVE_BRAINWASHING)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetLabelObject(tc)
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
--所有者の刻印
function c9720537.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_BRAINWASHING_CHECK)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_CONTROL)
......@@ -17,17 +18,50 @@ function c9720537.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c9720537.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetFieldGroup(tp,LOCATION_MZONE,LOCATION_MZONE)
local tg=Group.CreateGroup()
local tc=g:GetFirst()
while tc do
if not tc:IsImmuneToEffect(e) then
tc:ResetEffect(EFFECT_SET_CONTROL,RESET_CODE)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_CONTROL)
e1:SetValue(tc:GetOwner())
e1:SetReset(RESET_EVENT+0xec0000)
tc:RegisterEffect(e1)
if not tc:IsImmuneToEffect(e) and tc:GetFlagEffect(9720537)==0 then
tc:RegisterFlagEffect(9720537,RESET_EVENT+RESETS_STANDARD,0,1)
tg:AddCard(tc)
end
tc=g:GetNext()
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
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