Commit a67c6309 authored by Chen Bill's avatar Chen Bill Committed by GitHub

fix アルカナコール (#2755)

* move coin effect to initial_effect

* fix アルカナフォースⅩⅤ-THE DEVIL

* fix アルカナフォースEX-THE DARK RULER

* fix アルカナコール
parent bbc19cb8
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
function c23846921.initial_effect(c) function c23846921.initial_effect(c)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end
function c23846921.arcanareg(c,coin)
--coin effect --coin effect
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(23846921,1)) e1:SetDescription(aux.Stringid(23846921,1))
...@@ -16,7 +14,6 @@ function c23846921.arcanareg(c,coin) ...@@ -16,7 +14,6 @@ function c23846921.arcanareg(c,coin)
e1:SetCost(c23846921.skipcost) e1:SetCost(c23846921.skipcost)
e1:SetTarget(c23846921.skiptg) e1:SetTarget(c23846921.skiptg)
e1:SetOperation(c23846921.skipop) e1:SetOperation(c23846921.skipop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
-- --
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -29,9 +26,7 @@ function c23846921.arcanareg(c,coin) ...@@ -29,9 +26,7 @@ function c23846921.arcanareg(c,coin)
e2:SetCondition(c23846921.thcon) e2:SetCondition(c23846921.thcon)
e2:SetTarget(c23846921.thtg) e2:SetTarget(c23846921.thtg)
e2:SetOperation(c23846921.thop) e2:SetOperation(c23846921.thop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2) c:RegisterEffect(e2)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c23846921.skipcon(e,tp,eg,ep,ev,re,r,rp) function c23846921.skipcon(e,tp,eg,ep,ev,re,r,rp)
return ep==tp and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 return ep==tp and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
......
...@@ -16,6 +16,16 @@ function c34568403.initial_effect(c) ...@@ -16,6 +16,16 @@ function c34568403.initial_effect(c)
local e3=e1:Clone() local e3=e1:Clone()
e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS) e3:SetCode(EVENT_FLIP_SUMMON_SUCCESS)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--coin effect
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(34568403,1))
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCode(EVENT_BATTLE_DESTROYING)
e4:SetCondition(c34568403.spcon)
e4:SetTarget(c34568403.sptg)
e4:SetOperation(c34568403.spop)
c:RegisterEffect(e4)
end end
function c34568403.coinop(e,tp,eg,ep,ev,re,r,rp) function c34568403.coinop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -31,25 +41,11 @@ function c34568403.coinop(e,tp,eg,ep,ev,re,r,rp) ...@@ -31,25 +41,11 @@ function c34568403.coinop(e,tp,eg,ep,ev,re,r,rp)
if toss then if toss then
c:RegisterFlagEffect(FLAG_ID_REVERSAL_OF_FATE,RESET_EVENT+RESETS_STANDARD,0,1) c:RegisterFlagEffect(FLAG_ID_REVERSAL_OF_FATE,RESET_EVENT+RESETS_STANDARD,0,1)
end end
c34568403.arcanareg(c,res) c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,res,63-res)
if res==0 then if res==0 then
Duel.GetControl(c,1-tp) Duel.GetControl(c,1-tp)
end end
end end
function c34568403.arcanareg(c,coin)
--coin effect
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(34568403,1))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_BATTLE_DESTROYING)
e1:SetCondition(c34568403.spcon)
e1:SetTarget(c34568403.sptg)
e1:SetOperation(c34568403.spop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end
function c34568403.spcon(e,tp,eg,ep,ev,re,r,rp) function c34568403.spcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) return c:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 and c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE)
......
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
function c35781051.initial_effect(c) function c35781051.initial_effect(c)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end
function c35781051.arcanareg(c,coin)
--coin effect --coin effect
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(35781051,1)) e1:SetDescription(aux.Stringid(35781051,1))
...@@ -15,7 +13,6 @@ function c35781051.arcanareg(c,coin) ...@@ -15,7 +13,6 @@ function c35781051.arcanareg(c,coin)
e1:SetCondition(c35781051.spcon) e1:SetCondition(c35781051.spcon)
e1:SetTarget(c35781051.sptg) e1:SetTarget(c35781051.sptg)
e1:SetOperation(c35781051.spop) e1:SetOperation(c35781051.spop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetCode(EVENT_MSET) e2:SetCode(EVENT_MSET)
...@@ -30,12 +27,10 @@ function c35781051.arcanareg(c,coin) ...@@ -30,12 +27,10 @@ function c35781051.arcanareg(c,coin)
e3:SetCondition(c35781051.tgcon) e3:SetCondition(c35781051.tgcon)
e3:SetTarget(c35781051.tgtg) e3:SetTarget(c35781051.tgtg)
e3:SetOperation(c35781051.tgop) e3:SetOperation(c35781051.tgop)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=e3:Clone() local e4=e3:Clone()
e4:SetCode(EVENT_MSET) e4:SetCode(EVENT_MSET)
c:RegisterEffect(e4) c:RegisterEffect(e4)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c35781051.spcon(e,tp,eg,ep,ev,re,r,rp) function c35781051.spcon(e,tp,eg,ep,ev,re,r,rp)
return ep~=tp and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 return ep~=tp and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
......
...@@ -20,6 +20,29 @@ function c5861892.initial_effect(c) ...@@ -20,6 +20,29 @@ function c5861892.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SPSUMMON_SUCCESS)
--
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(5861892,1))
e3:SetCategory(CATEGORY_TOHAND)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetProperty(EFFECT_FLAG_CARD_TARGET)
e3:SetCode(EVENT_BATTLE_DESTROYING)
e3:SetCondition(c5861892.thcon)
e3:SetTarget(c5861892.thtg)
e3:SetOperation(c5861892.thop)
c:RegisterEffect(e3)
--
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(5861892,2))
e4:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY)
e4:SetType(EFFECT_TYPE_QUICK_F)
e4:SetCode(EVENT_CHAINING)
e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e4:SetRange(LOCATION_MZONE)
e4:SetCondition(c5861892.negcon)
e4:SetTarget(c5861892.negtg)
e4:SetOperation(c5861892.negop)
c:RegisterEffect(e4)
end end
function c5861892.spfilter(c) function c5861892.spfilter(c)
return c:IsAbleToGraveAsCost() return c:IsAbleToGraveAsCost()
...@@ -45,34 +68,6 @@ function c5861892.spop(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -45,34 +68,6 @@ function c5861892.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.SendtoGrave(g,REASON_SPSUMMON) Duel.SendtoGrave(g,REASON_SPSUMMON)
g:DeleteGroup() g:DeleteGroup()
end end
function c5861892.arcanareg(c,coin)
--coin effect
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(5861892,1))
e1:SetCategory(CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCode(EVENT_BATTLE_DESTROYING)
e1:SetCondition(c5861892.thcon)
e1:SetTarget(c5861892.thtg)
e1:SetOperation(c5861892.thop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1)
--
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(5861892,2))
e2:SetCategory(CATEGORY_NEGATE+CATEGORY_DESTROY)
e2:SetType(EFFECT_TYPE_QUICK_F)
e2:SetCode(EVENT_CHAINING)
e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e2:SetRange(LOCATION_MZONE)
e2:SetCondition(c5861892.negcon)
e2:SetTarget(c5861892.negtg)
e2:SetOperation(c5861892.negop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end
function c5861892.thcon(e,tp,eg,ep,ev,re,r,rp) function c5861892.thcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 and c:IsRelateToBattle() return c:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 and c:IsRelateToBattle()
......
...@@ -15,6 +15,29 @@ function s.initial_effect(c) ...@@ -15,6 +15,29 @@ function s.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
--heads: optional destroy
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(id,2))
e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_ATTACK_ANNOUNCE)
e2:SetRange(LOCATION_MZONE)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetCondition(s.odescon)
e2:SetTarget(s.odestg)
e2:SetOperation(s.odesop)
c:RegisterEffect(e2)
--tails: forced destroy
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(id,3))
e3:SetCategory(CATEGORY_DESTROY)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_ATTACK_ANNOUNCE)
e3:SetRange(LOCATION_MZONE)
e3:SetCondition(s.fdescon)
e3:SetTarget(s.fdestg)
e3:SetOperation(s.fdesop)
c:RegisterEffect(e3)
end end
function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk) function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -36,37 +59,9 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -36,37 +59,9 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
end end
end end
function s.arcanareg(c,coin)
--heads: optional destroy
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,2))
e1:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetRange(LOCATION_MZONE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetCondition(s.odescon)
e1:SetTarget(s.odestg)
e1:SetOperation(s.odesop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1)
--tails: forced destroy
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(id,3))
e2:SetCategory(CATEGORY_DESTROY)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e2:SetCode(EVENT_ATTACK_ANNOUNCE)
e2:SetRange(LOCATION_MZONE)
e2:SetCondition(s.fdescon)
e2:SetTarget(s.fdestg)
e2:SetOperation(s.fdesop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2)
c:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end
function s.odescon(e,tp,eg,ep,ev,re,r,rp) function s.odescon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) and c:GetFlagEffectLabel(id)==1 return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) and c:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
end end
function s.odestg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function s.odestg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) end if chkc then return chkc:IsLocation(LOCATION_MZONE) end
...@@ -82,7 +77,7 @@ function s.odesop(e,tp,eg,ep,ev,re,r,rp) ...@@ -82,7 +77,7 @@ function s.odesop(e,tp,eg,ep,ev,re,r,rp)
end end
function s.fdescon(e,tp,eg,ep,ev,re,r,rp) function s.fdescon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) and c:GetFlagEffectLabel(id)==0 return (Duel.GetAttacker()==c or Duel.GetAttackTarget()==c) and c:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==0
end end
function s.fdestg(e,tp,eg,ep,ev,re,r,rp,chk) function s.fdestg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -13,6 +13,20 @@ function c60953118.initial_effect(c) ...@@ -13,6 +13,20 @@ function c60953118.initial_effect(c)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
--coin effect
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetRange(LOCATION_MZONE)
e2:SetTargetRange(1,0)
e2:SetCode(EFFECT_CHANGE_BATTLE_DAMAGE)
e2:SetCondition(c60953118.rdcon1)
e2:SetValue(HALF_DAMAGE)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetTargetRange(0,1)
e3:SetCondition(c60953118.rdcon2)
c:RegisterEffect(e3)
end end
function c60953118.damcon(e,tp,eg,ep,ev,re,r,rp) function c60953118.damcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetBattleDamage(tp)>0 return Duel.GetBattleDamage(tp)>0
...@@ -30,24 +44,6 @@ function c60953118.damop(e,tp,eg,ep,ev,re,r,rp) ...@@ -30,24 +44,6 @@ function c60953118.damop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL) e1:SetReset(RESET_PHASE+PHASE_DAMAGE_CAL)
Duel.RegisterEffect(e1,tp) Duel.RegisterEffect(e1,tp)
end end
function c60953118.arcanareg(c,coin)
--coin effect
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(1,0)
e1:SetCode(EFFECT_CHANGE_BATTLE_DAMAGE)
e1:SetCondition(c60953118.rdcon1)
e1:SetValue(HALF_DAMAGE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetTargetRange(0,1)
e2:SetCondition(c60953118.rdcon2)
c:RegisterEffect(e2)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end
function c60953118.rdcon1(e) function c60953118.rdcon1(e)
return e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 return e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
end end
......
...@@ -3,20 +3,16 @@ ...@@ -3,20 +3,16 @@
function c61175706.initial_effect(c) function c61175706.initial_effect(c)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end
function c61175706.arcanareg(c,coin)
--coin effect --coin effect
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(LOCATION_MZONE,0) e1:SetTargetRange(LOCATION_MZONE,0)
e1:SetCondition(aux.ArcanaCondition)
e1:SetTarget(c61175706.atktg) e1:SetTarget(c61175706.atktg)
e1:SetValue(c61175706.atkval) e1:SetValue(c61175706.atkval)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c61175706.atktg(e,c) function c61175706.atktg(e,c)
return c:IsSetCard(0x5) return c:IsSetCard(0x5)
...@@ -24,5 +20,7 @@ end ...@@ -24,5 +20,7 @@ end
function c61175706.atkval(e,c) function c61175706.atkval(e,c)
if e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 then if e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 then
return 500 return 500
else return -500 end else
return -500
end
end end
...@@ -15,38 +15,35 @@ function c62892347.initial_effect(c) ...@@ -15,38 +15,35 @@ function c62892347.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end
function c62892347.poscon(e)
return e:GetHandler():IsPosition(POS_FACEUP_ATTACK)
end
function c62892347.arcanareg(c,coin)
--disable --disable
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_DISABLE)
e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
e1:SetTarget(c62892347.distg)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1)
--disable effect
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAIN_SOLVING)
e2:SetRange(LOCATION_MZONE)
e2:SetOperation(c62892347.disop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2)
--self destroy
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_SELF_DESTROY) e3:SetCode(EFFECT_DISABLE)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD) e3:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
e3:SetCondition(aux.ArcanaCondition)
e3:SetTarget(c62892347.distg) e3:SetTarget(c62892347.distg)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e3) c:RegisterEffect(e3)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin) --disable effect
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_CHAIN_SOLVING)
e4:SetRange(LOCATION_MZONE)
e4:SetCondition(aux.ArcanaCondition)
e4:SetOperation(c62892347.disop)
c:RegisterEffect(e4)
--self destroy
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_FIELD)
e5:SetCode(EFFECT_SELF_DESTROY)
e5:SetRange(LOCATION_MZONE)
e5:SetTargetRange(LOCATION_ONFIELD,LOCATION_ONFIELD)
e5:SetCondition(aux.ArcanaCondition)
e5:SetTarget(c62892347.distg)
c:RegisterEffect(e5)
end
function c62892347.poscon(e)
return e:GetHandler():IsPosition(POS_FACEUP_ATTACK)
end end
function c62892347.distg(e,c) function c62892347.distg(e,c)
local ec=e:GetHandler() local ec=e:GetHandler()
...@@ -54,7 +51,9 @@ function c62892347.distg(e,c) ...@@ -54,7 +51,9 @@ function c62892347.distg(e,c)
local val=ec:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN) local val=ec:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)
if val==1 then if val==1 then
return c:GetControler()==ec:GetControler() and c:GetCardTarget():IsContains(ec) return c:GetControler()==ec:GetControler() and c:GetCardTarget():IsContains(ec)
else return c:GetControler()~=ec:GetControler() and c:GetCardTarget():IsContains(ec) end else
return c:GetControler()~=ec:GetControler() and c:GetCardTarget():IsContains(ec)
end
end end
function c62892347.disop(e,tp,eg,ep,ev,re,r,rp) function c62892347.disop(e,tp,eg,ep,ev,re,r,rp)
local ec=e:GetHandler() local ec=e:GetHandler()
......
--アルカナフォースEX-THE DARK RULER --アルカナフォースEX-THE DARK RULER
local s,id,o=GetID()
---@param c Card ---@param c Card
function c69831560.initial_effect(c) function c69831560.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
...@@ -20,6 +21,35 @@ function c69831560.initial_effect(c) ...@@ -20,6 +21,35 @@ function c69831560.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SPSUMMON_SUCCESS)
--coin effect
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_EXTRA_ATTACK)
e3:SetCondition(c69831560.macon)
e3:SetValue(1)
c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetRange(LOCATION_MZONE)
e4:SetCode(EVENT_PHASE+PHASE_BATTLE)
e4:SetCountLimit(1)
e4:SetCondition(c69831560.poscon)
e4:SetOperation(c69831560.posop)
c:RegisterEffect(e4)
--
local e5=Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e5:SetCode(EVENT_LEAVE_FIELD_P)
e5:SetCondition(c69831560.descon1)
e5:SetOperation(c69831560.desop1)
c:RegisterEffect(e5)
--
local e6=Effect.CreateEffect(c)
e6:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e6:SetCode(EVENT_LEAVE_FIELD)
e6:SetCondition(c69831560.descon2)
e6:SetOperation(c69831560.desop2)
c:RegisterEffect(e6)
end end
function c69831560.spfilter(c) function c69831560.spfilter(c)
return c:IsAbleToGraveAsCost() return c:IsAbleToGraveAsCost()
...@@ -45,41 +75,6 @@ function c69831560.spop(e,tp,eg,ep,ev,re,r,rp,c) ...@@ -45,41 +75,6 @@ function c69831560.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.SendtoGrave(g,REASON_SPSUMMON) Duel.SendtoGrave(g,REASON_SPSUMMON)
g:DeleteGroup() g:DeleteGroup()
end end
function c69831560.arcanareg(c,coin)
--coin effect
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_EXTRA_ATTACK)
e1:SetCondition(c69831560.macon)
e1:SetValue(1)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetRange(LOCATION_MZONE)
e2:SetCode(EVENT_PHASE+PHASE_BATTLE)
e2:SetCountLimit(1)
e2:SetCondition(c69831560.poscon)
e2:SetOperation(c69831560.posop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2)
--
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_LEAVE_FIELD_P)
e3:SetOperation(c69831560.desop1)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e3)
--
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_LEAVE_FIELD)
e4:SetOperation(c69831560.desop2)
e4:SetReset(RESET_EVENT+RESET_OVERLAY+RESET_TOFIELD)
e4:SetLabelObject(e3)
c:RegisterEffect(e4)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end
function c69831560.macon(e) function c69831560.macon(e)
return e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 return e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
end end
...@@ -99,16 +94,20 @@ function c69831560.posop(e,tp,eg,ep,ev,re,r,rp) ...@@ -99,16 +94,20 @@ function c69831560.posop(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END+RESET_SELF_TURN,2)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function c69831560.descon1(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==0
end
function c69831560.desop1(e,tp,eg,ep,ev,re,r,rp) function c69831560.desop1(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsReason(REASON_DESTROY) and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==0 then local c=e:GetHandler()
e:SetLabel(1) c:RegisterFlagEffect(id,RESET_EVENT+RESET_TOFIELD+RESET_PHASE+PHASE_END,0,1)
else e:SetLabel(0) end end
function c69831560.descon2(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(id)>0
end end
function c69831560.desop2(e,tp,eg,ep,ev,re,r,rp) function c69831560.desop2(e,tp,eg,ep,ev,re,r,rp)
local e3=e:GetLabelObject() local c=e:GetHandler()
if e3 and e3:GetLabel()~=0 then
local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD) local g=Duel.GetFieldGroup(tp,LOCATION_ONFIELD,LOCATION_ONFIELD)
Duel.Hint(HINT_CARD,0,id)
Duel.Destroy(g,REASON_EFFECT) Duel.Destroy(g,REASON_EFFECT)
end c:ResetFlagEffect(id)
e:Reset()
end end
...@@ -3,17 +3,14 @@ ...@@ -3,17 +3,14 @@
function c8396952.initial_effect(c) function c8396952.initial_effect(c)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end --
function c8396952.arcanareg(c,coin)
--disable effect
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAIN_SOLVED) e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetCondition(aux.ArcanaCondition)
e1:SetOperation(c8396952.speop) e1:SetOperation(c8396952.speop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c8396952.speop(e,tp,eg,ep,ev,re,r,rp) function c8396952.speop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
function c97452817.initial_effect(c) function c97452817.initial_effect(c)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end
function c97452817.arcanareg(c,coin)
--coin effect --coin effect
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(97452817,1)) e1:SetDescription(aux.Stringid(97452817,1))
...@@ -16,7 +14,6 @@ function c97452817.arcanareg(c,coin) ...@@ -16,7 +14,6 @@ function c97452817.arcanareg(c,coin)
e1:SetCondition(c97452817.spcon) e1:SetCondition(c97452817.spcon)
e1:SetTarget(c97452817.sptg) e1:SetTarget(c97452817.sptg)
e1:SetOperation(c97452817.spop) e1:SetOperation(c97452817.spop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
-- --
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -30,9 +27,7 @@ function c97452817.arcanareg(c,coin) ...@@ -30,9 +27,7 @@ function c97452817.arcanareg(c,coin)
e2:SetCondition(c97452817.ctcon) e2:SetCondition(c97452817.ctcon)
e2:SetTarget(c97452817.cttg) e2:SetTarget(c97452817.cttg)
e2:SetOperation(c97452817.ctop) e2:SetOperation(c97452817.ctop)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2) c:RegisterEffect(e2)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c97452817.spcon(e,tp,eg,ep,ev,re,r,rp) function c97452817.spcon(e,tp,eg,ep,ev,re,r,rp)
return ep==tp and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 return ep==tp and e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
......
...@@ -3,15 +3,12 @@ ...@@ -3,15 +3,12 @@
function c97574404.initial_effect(c) function c97574404.initial_effect(c)
--coin --coin
aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS) aux.EnableArcanaCoin(c,EVENT_SUMMON_SUCCESS,EVENT_FLIP_SUMMON_SUCCESS,EVENT_SPSUMMON_SUCCESS)
end
function c97574404.arcanareg(c,coin)
--coin effect --coin effect
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DOUBLE_TRIBUTE) e1:SetCode(EFFECT_DOUBLE_TRIBUTE)
e1:SetCondition(c97574404.dtcon) e1:SetCondition(c97574404.dtcon)
e1:SetValue(c97574404.dtval) e1:SetValue(c97574404.dtval)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
-- --
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -22,12 +19,10 @@ function c97574404.arcanareg(c,coin) ...@@ -22,12 +19,10 @@ function c97574404.arcanareg(c,coin)
e2:SetTargetRange(1,1) e2:SetTargetRange(1,1)
e2:SetCondition(c97574404.sumcon) e2:SetCondition(c97574404.sumcon)
e2:SetTarget(c97574404.sumtg) e2:SetTarget(c97574404.sumtg)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e3=e2:Clone() local e3=e2:Clone()
e3:SetCode(EFFECT_CANNOT_MSET) e3:SetCode(EFFECT_CANNOT_MSET)
c:RegisterEffect(e3) c:RegisterEffect(e3)
c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,coin,63-coin)
end end
function c97574404.dtcon(e) function c97574404.dtcon(e)
return e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1 return e:GetHandler():GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)==1
......
...@@ -36,16 +36,13 @@ function c99189322.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -36,16 +36,13 @@ function c99189322.activate(e,tp,eg,ep,ev,re,r,rp)
if not regc:IsRelateToEffect(e) then return end if not regc:IsRelateToEffect(e) then return end
if Duel.Remove(regc,POS_FACEUP,REASON_EFFECT)==0 or not regc:IsLocation(LOCATION_REMOVED) then return end if Duel.Remove(regc,POS_FACEUP,REASON_EFFECT)==0 or not regc:IsLocation(LOCATION_REMOVED) then return end
if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetFlagEffect(FLAG_ID_REVERSAL_OF_FATE)~=0 and tc:GetFlagEffect(FLAG_ID_ARCANA_COIN)~=0 then if tc:IsRelateToEffect(e) and tc:IsFaceup() and tc:GetFlagEffect(FLAG_ID_REVERSAL_OF_FATE)~=0 and tc:GetFlagEffect(FLAG_ID_ARCANA_COIN)~=0 then
local regfun=regc.arcanareg local cid=tc:ReplaceEffect(regc:GetOriginalCode(),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
if not regfun then return end
local val=tc:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)
tc:ResetEffect(RESET_DISABLE,RESET_EVENT)
regfun(tc,val)
tc:RegisterFlagEffect(99189322,RESET_EVENT+RESETS_STANDARD+RESET_DISABLE+RESET_PHASE+PHASE_END,0,1) tc:RegisterFlagEffect(99189322,RESET_EVENT+RESETS_STANDARD+RESET_DISABLE+RESET_PHASE+PHASE_END,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:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetLabel(cid)
e1:SetLabelObject(tc) e1:SetLabelObject(tc)
e1:SetOperation(c99189322.rec_effect) e1:SetOperation(c99189322.rec_effect)
e1:SetReset(RESET_PHASE+PHASE_END) e1:SetReset(RESET_PHASE+PHASE_END)
...@@ -53,11 +50,8 @@ function c99189322.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -53,11 +50,8 @@ function c99189322.activate(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c99189322.rec_effect(e,tp,eg,ep,ev,re,r,rp) function c99189322.rec_effect(e,tp,eg,ep,ev,re,r,rp)
local cid=e:GetLabel()
local tc=e:GetLabelObject() local tc=e:GetLabelObject()
if tc:GetFlagEffect(99189322)==0 then return end if tc:GetFlagEffect(99189322)==0 then return end
local regfun=tc.arcanareg tc:ResetEffect(cid,RESET_COPY)
if not regfun then return end
local val=tc:GetFlagEffectLabel(FLAG_ID_ARCANA_COIN)
tc:ResetEffect(RESET_DISABLE,RESET_EVENT)
regfun(tc,val)
end end
...@@ -296,7 +296,13 @@ function Auxiliary.ArcanaCoinOperation(e,tp,eg,ep,ev,re,r,rp) ...@@ -296,7 +296,13 @@ function Auxiliary.ArcanaCoinOperation(e,tp,eg,ep,ev,re,r,rp)
if toss then if toss then
c:RegisterFlagEffect(FLAG_ID_REVERSAL_OF_FATE,RESET_EVENT+RESETS_STANDARD,0,1) c:RegisterFlagEffect(FLAG_ID_REVERSAL_OF_FATE,RESET_EVENT+RESETS_STANDARD,0,1)
end end
c.arcanareg(c,res) c:RegisterFlagEffect(FLAG_ID_ARCANA_COIN,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,res,63-res)
end
---condition of Arcana Force monster effect from coin toss
---@param e Effect
---@return boolean
function Auxiliary.ArcanaCondition(e)
return e:GetHandler():GetFlagEffect(FLAG_ID_ARCANA_COIN)>0
end end
function Auxiliary.IsUnionState(effect) function Auxiliary.IsUnionState(effect)
local c=effect:GetHandler() local c=effect:GetHandler()
......
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