Commit dc1dcd06 authored by xiaoye's avatar xiaoye

fix

parent a689b60c
...@@ -225,17 +225,17 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -225,17 +225,17 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local e1=vgf.AtkUp(c,c,5000,nil) local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.EffectReset(c,e1,EVENT_BATTLED)
end end
if vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil,nil):GetFirst():GetOverlayCount()>=2 and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then if vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil,nil):GetFirst():GetOverlayCount()>=2 and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
local cg=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst():GetOverlayGroup():Select(tp,2,2,nil) local cg=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst():GetOverlayGroup():Select(tp,2,2,nil)
if vgf.Sendto(LOCATION_DROP,cg,REASON_COST)==2 then if vgf.Sendto(LOCATION_DROP,cg,REASON_COST)==2 then
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
end end
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.con.IsR(e) and c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.filter.IsV(Duel.GetAttackTarget())
end end
``` ```
...@@ -294,7 +294,7 @@ vgd.AbilityContChangeAttack(c,m, loc, typ, val[, con, tg, loc_self, loc_op, rese ...@@ -294,7 +294,7 @@ vgd.AbilityContChangeAttack(c,m, loc, typ, val[, con, tg, loc_self, loc_op, rese
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgf.VgCard(c) vgf.VgCard(c)
vgd.AbilityContChangeAttack(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,5000,function(e) return vgf.RMonsterCondition(e) and cm.con(e) end) vgd.AbilityContChangeAttack(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,5000,function(e) return vgf.con.IsR(e) and cm.con(e) end)
vgd.AbilityContChangeDefense(c,m,EFFECT_TYPE_SINGLE,5000,cm.con) vgd.AbilityContChangeDefense(c,m,EFFECT_TYPE_SINGLE,5000,cm.con)
end end
function cm.con(e) function cm.con(e)
...@@ -358,7 +358,7 @@ function cm.initial_effect(c) ...@@ -358,7 +358,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE,0,3,nil,3) return vgf.con.IsV(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE,0,3,nil,3)
end end
``` ```
......
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,Card.IsFaceup,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,Card.IsFaceup,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_DROP,cm.filter),vgf.cost.Discard(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_DROP,cm.filter),vgf.cost.Discard(1),vgf.con.IsV,nil,1)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.CounterBlast(1),vgf.VMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.CounterBlast(1),vgf.con.IsV)
end end
function cm.filter(c) function cm.filter(c)
return c:IsLevel(0) return c:IsLevel(0)
......
...@@ -9,15 +9,15 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,15 +9,15 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000,nil) local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
if vgf.cost.SoulBlast(2)(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then if vgf.cost.SoulBlast(2)(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
vgf.cost.SoulBlast(2)(e,tp,eg,ep,ev,re,r,rp,1) vgf.cost.SoulBlast(2)(e,tp,eg,ep,ev,re,r,rp,1)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.con.IsR(e) and c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.filter.IsV(Duel.GetAttackTarget())
end end
\ No newline at end of file
...@@ -9,13 +9,13 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,13 +9,13 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,FLAG_CONDITION,RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,m,vgf.Stringid(m,0)) Duel.RegisterFlagEffect(tp,FLAG_CONDITION,RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,m,vgf.Stringid(m,0))
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and vgf.VMonsterCondition(e) return Duel.GetTurnPlayer()==tp and vgf.con.IsV(e)
end end
function cm.op2(e,tp,eg,ep,ev,re,r,rp) function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.GetMatchingGroup(vgf.IsSequence,tp,LOCATION_CIRCLE,0,nil,0,4) local g=vgf.GetMatchingGroup(Card.IsSequence,tp,LOCATION_CIRCLE,0,nil,0,4)
Duel.ChangePosition(g,POS_FACEUP_ATTACK) Duel.ChangePosition(g,POS_FACEUP_ATTACK)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION) local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION)
return vgf.GetValueType(ct)=="number" and ct==10102001 and vgf.VMonsterCondition(e) return vgf.GetValueType(ct)=="number" and ct==10102001 and vgf.con.IsV(e)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.VSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.con.RideOnVCircle)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
...@@ -9,8 +9,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,8 +9,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,nil) end if chk==0 then return vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,nil) end
local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.Sendto(LOCATION_SOUL,g,c) vgf.Sendto(LOCATION_SOUL,g,c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnVCircle)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
...@@ -11,7 +11,7 @@ end ...@@ -11,7 +11,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local g=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,vgf.IsCanBeCalled,1,1,nil,e,tp,nil,nil,0x4) local g=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,vgf.IsCanBeCalled,1,1,nil,e,tp,nil,nil,0x4)
vgf.Sendto(LOCATION_CIRCLE,g,0,tp,0x4) vgf.Sendto(LOCATION_CIRCLE,g,0,tp,0x4)
vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp) vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp)
end end
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -11,7 +11,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,7 +11,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
vgf.op.SoulCharge(num)(e,tp,eg,ep,ev,re,r,rp) vgf.op.SoulCharge(num)(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsCode(10102001) return vgf.con.IsR(e) and vgf.GetVMonster(tp):IsCode(10102001)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return cm.con1(e,tp,eg,ep,ev,re,r,rp) and eg:GetFirst()==e:GetHandler() return cm.con1(e,tp,eg,ep,ev,re,r,rp) and eg:GetFirst()==e:GetHandler()
......
...@@ -15,7 +15,7 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -15,7 +15,7 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetAttackTarget() and Duel.GetAttacker() and eg:IsExists(cm.checkfilter,1,nil,Duel.GetAttacker():GetControler()) return Duel.GetAttackTarget() and Duel.GetAttacker() and eg:IsExists(cm.checkfilter,1,nil,Duel.GetAttacker():GetControler())
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsDefensePos() return vgf.filter.IsR(c) and c:IsDefensePos()
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -27,16 +27,16 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -27,16 +27,16 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.VMonsterCondition(e) and Duel.GetFlagEffect(tp,m)>0 return vgf.con.IsV(e) and Duel.GetFlagEffect(tp,m)>0
end end
function cm.target(e,c) function cm.target(e,c)
return c:IsLevel(3) and Duel.GetTurnPlayer()==e:GetHandlerPlayer() return c:IsLevel(3) and Duel.GetTurnPlayer()==e:GetHandlerPlayer()
end end
function cm.con(e) function cm.con(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.VMonsterCondition(e) and Duel.GetTurnPlayer()==tp return vgf.con.IsV(e) and Duel.GetTurnPlayer()==tp
end end
function cm.checkop(e,tp,eg,ep,ev,re,r,rp) function cm.checkop(e,tp,eg,ep,ev,re,r,rp)
local e1=Duel.RegisterFlagEffect(Duel.GetAttacker():GetControler(),m,RESET_PHASE+PHASE_END,0,1) local e1=Duel.RegisterFlagEffect(Duel.GetAttacker():GetControler(),m,RESET_PHASE+PHASE_END,0,1)
vgf.EffectReset(e:GetHandler(),e1,EVENT_BATTLED) vgf.effect.Reset(e:GetHandler(),e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -25,5 +25,5 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -25,5 +25,5 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function cm.condition(e,c) function cm.condition(e,c)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE+LOCATION_G_CIRCLE,0,3,nil,3) and Duel.GetTurnPlayer()==tp return vgf.con.IsR(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE+LOCATION_G_CIRCLE,0,3,nil,3) and Duel.GetTurnPlayer()==tp
end end
\ No newline at end of file
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.BeRidedByCard(c,m,10103002,cm.operation,cm.cost) vgd.BeRidedByCard(c,m,10103002,cm.operation,cm.cost)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation2,vgf.cost.CounterBlast(1),vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation2,vgf.cost.CounterBlast(1),vgf.con.IsR,nil,1)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_HAND,0,2,nil,3) end if chk==0 then return vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_HAND,0,2,nil,3) end
...@@ -30,5 +30,5 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp) ...@@ -30,5 +30,5 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter(c) function cm.filter(c)
return c:IsLevel(3) and vgf.VMonsterFilter(c) return c:IsLevel(3) and vgf.filter.IsV(c)
end end
\ No newline at end of file
...@@ -3,12 +3,12 @@ local cm,m,o=GetID() ...@@ -3,12 +3,12 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这次战斗中,这个单位的力量+5000。 --【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这次战斗中,这个单位的力量+5000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.CounterBlast(1),vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.CounterBlast(1),vgf.con.IsR)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000,nil) local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,cm.cost,vgf.RMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,cm.cost,vgf.con.IsR)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -10,11 +10,11 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,11 +10,11 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,g,10000,nil) vgf.AtkUp(c,g,10000,nil)
end end
function cm.filter(c) function cm.filter(c)
return c:IsLevel(3) and vgf.RMonsterFilter(c) return c:IsLevel(3) and vgf.filter.IsR(c)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsRelateToEffect(e) end if chk==0 then return c:IsRelateToEffect(e) end
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
vgf.Sendto(LOCATION_SOUL,c,rc) vgf.Sendto(LOCATION_SOUL,c,rc)
end end
\ No newline at end of file
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【起】【R】:通过【费用】[灵魂爆发2],这个回合中,这个单位的力量+5000。 --【起】【R】:通过【费用】[灵魂爆发2],这个回合中,这个单位的力量+5000。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.SoulBlast(2),vgf.RMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.SoulBlast(2),vgf.con.IsR)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -9,7 +9,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local ct=1 local ct=1
if c:IsSummonType(SUMMON_TYPE_SELFRIDE) then ct=3 end if c:IsSummonType(SUMMON_TYPE_SELFRIDE) then ct=3 end
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,ct,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,ct,nil)
if g then if g then
Duel.Hintselectgion(g) Duel.Hintselectgion(g)
for tc in vgf.Next(g) do for tc in vgf.Next(g) do
...@@ -19,5 +19,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,5 +19,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterCondition(e) and Duel.GetAttacker()==e:GetHandler() return vgf.con.IsV(e) and Duel.GetAttacker()==e:GetHandler()
end end
\ No newline at end of file
...@@ -23,10 +23,10 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp) ...@@ -23,10 +23,10 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,10000) local e1=vgf.AtkUp(c,c,10000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.IsSequence(c,1,2,3) and vgf.VMonsterFilter(Duel.GetAttackTarget()) return Card.IsSequence(c,1,2,3) and vgf.filter.IsV(Duel.GetAttackTarget())
end end
\ No newline at end of file
...@@ -21,5 +21,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -21,5 +21,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.con(e) function cm.con(e)
return Duel.GetAttacker()==e:GetHandler() and vgf.IsSequence(c,1,2,3) return Duel.GetAttacker()==e:GetHandler() and Card.IsSequence(c,1,2,3)
end end
\ No newline at end of file
...@@ -6,5 +6,5 @@ end ...@@ -6,5 +6,5 @@ end
function cm.con(e) function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,4,c) return vgf.con.IsR(e) and vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,4,c)
end end
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,cm.cost,vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,cm.cost,vgf.con.IsR,nil,1)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【起】【R】【1回合1次】:通过【费用】[灵魂爆发2],公开你的牌堆顶的1张卡,那张卡是单位卡的话,CALL到R上,不是的话,加入手牌 --【起】【R】【1回合1次】:通过【费用】[灵魂爆发2],公开你的牌堆顶的1张卡,那张卡是单位卡的话,CALL到R上,不是的话,加入手牌
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.SoulBlast(2),vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.SoulBlast(2),vgf.con.IsR,nil,1)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
local atk=5000 local atk=5000
if vgf.IsExistingMatchingCard(vgf.IsSequence,tp,LOCATION_CIRCLE,0,3,nil,1,2,3) then atk=15000 end if vgf.IsExistingMatchingCard(Card.IsSequence,tp,LOCATION_CIRCLE,0,3,nil,1,2,3) then atk=15000 end
if g then if g then
vgf.AtkUp(c,g,atk) vgf.AtkUp(c,g,atk)
end end
......
...@@ -7,17 +7,17 @@ function cm.initial_effect(c) ...@@ -7,17 +7,17 @@ function cm.initial_effect(c)
end end
function cm.con(e,c) function cm.con(e,c)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return Duel.GetTurnPlayer()==tp and vgf.VMonsterCondition(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,1,nil) return Duel.GetTurnPlayer()==tp and vgf.con.IsV(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,1,nil)
end end
function cm.filter(c) function cm.filter(c)
return c:GetFlagEffect(FLAG_IMPRISON)>0 return c:GetFlagEffect(FLAG_IMPRISON)>0
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
if not vgf.CheckPrison(tp) then return end if not vgf.CheckPrison(tp) then return end
local g1=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,2,2,nil) local g1=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,2,2,nil)
vgf.SendtoPrison(g1,tp) vgf.SendtoPrison(g1,tp)
end end
function cm.con2(e,c) function cm.con2(e,c)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return Duel.GetTurnPlayer()==tp and vgf.VMonsterCondition(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,3,nil) return Duel.GetTurnPlayer()==tp and vgf.con.IsV(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,3,nil)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.con.RideOnVCircle)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 2000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 2000, cm.con)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -13,7 +13,7 @@ end ...@@ -13,7 +13,7 @@ end
function cm.con(e) function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterFilter(c) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,1,nil) return vgf.filter.IsR(c) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,1,nil)
end end
function cm.filter(c) function cm.filter(c)
return c:GetFlagEffect(FLAG_IMPRISON)>0 return c:GetFlagEffect(FLAG_IMPRISON)>0
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DECK,cm.filter),nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DECK,cm.filter),nil,vgf.con.RideOnVCircle)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,cm.cost,cm.condition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,cm.cost,cm.condition)
end end
function cm.filter(c) function cm.filter(c)
......
...@@ -5,11 +5,11 @@ function cm.initial_effect(c) ...@@ -5,11 +5,11 @@ function cm.initial_effect(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and vgf.IsSequence(Duel.GetAttackTarget(),5) return vgf.filter.IsR(c) and Card.IsSequence(Duel.GetAttackTarget(),5)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if not vgf.CheckPrison(tp) then return end if not vgf.CheckPrison(tp) then return end
local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,0,2,nil) local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,0,2,nil)
vgf.SendtoPrison(g,tp) vgf.SendtoPrison(g,tp)
end end
\ No newline at end of file
...@@ -5,11 +5,11 @@ function cm.initial_effect(c) ...@@ -5,11 +5,11 @@ function cm.initial_effect(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and vgf.CheckPrison(tp) return vgf.filter.IsR(c) and vgf.CheckPrison(tp)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if not vgf.CheckPrison(tp) then return end if not vgf.CheckPrison(tp) then return end
local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.SendtoPrison(g,tp) vgf.SendtoPrison(g,tp)
end end
\ No newline at end of file
...@@ -4,10 +4,10 @@ function cm.initial_effect(c) ...@@ -4,10 +4,10 @@ function cm.initial_effect(c)
vgf.AddRideMaterialCode(c,m,10406013) vgf.AddRideMaterialCode(c,m,10406013)
vgf.AddRideMaterialSetCard(c,m,0xc014,0x74) vgf.AddRideMaterialSetCard(c,m,0xc014,0x74)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,cm.cost,vgf.VMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,cm.cost,vgf.con.IsV)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(FLAG_SUPPORTED)>0 and Duel.GetAttacker()==e:GetHandler() and vgf.RMonsterCondition(e) return e:GetHandler():GetFlagEffect(FLAG_SUPPORTED)>0 and Duel.GetAttacker()==e:GetHandler() and vgf.con.IsR(e)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.Discard(1)(e,tp,eg,ep,ev,re,r,rp,chk) end if chk==0 then return vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.Discard(1)(e,tp,eg,ep,ev,re,r,rp,chk) end
...@@ -25,5 +25,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -25,5 +25,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseEvent(g,EVENT_CUSTOM+EVENT_SUPPORT,e,0,tp,tp,0) Duel.RaiseEvent(g,EVENT_CUSTOM+EVENT_SUPPORT,e,0,tp,tp,0)
end end
function cm.filter(c) function cm.filter(c)
return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSkill(SKILL_BOOST) and vgf.RMonsterFilter(c) return c:IsPosition(POS_FACEUP_ATTACK) and c:IsSkill(SKILL_BOOST) and vgf.filter.IsR(c)
end end
\ No newline at end of file
...@@ -33,7 +33,7 @@ function cm.con(e,c) ...@@ -33,7 +33,7 @@ function cm.con(e,c)
return Duel.GetFlagEffect(tp,m)>0 return Duel.GetFlagEffect(tp,m)>0
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterFilter(e:GetHandler()) and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.filter.IsV(e:GetHandler()) and vgf.filter.IsV(Duel.GetAttackTarget())
end end
function cm.check(g) function cm.check(g)
return g:GetClassCount(Card.GetLevel)==#g return g:GetClassCount(Card.GetLevel)==#g
...@@ -51,7 +51,7 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -51,7 +51,7 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.VMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil):GetFirst() local tc=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.filter.IsV,tp,0,LOCATION_CIRCLE,1,1,nil):GetFirst()
if tc:GetAttack()>1 then if tc:GetAttack()>1 then
local atk=tc:GetAttack()-1 local atk=tc:GetAttack()-1
vgf.AtkUp(c,tc,-atk) vgf.AtkUp(c,tc,-atk)
...@@ -61,5 +61,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -61,5 +61,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter(c) function cm.filter(c)
return vgf.VMonsterFilter(c) and c:IsLevelAbove(3) return vgf.filter.IsV(c) and c:IsLevelAbove(3)
end end
\ No newline at end of file
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
vgd.BeRidedByCard(c,m,cm.filter,cm.operation) vgd.BeRidedByCard(c,m,cm.filter,cm.operation)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.filter.IsV(Duel.GetAttackTarget())
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -19,7 +19,7 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,7 +19,7 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e2=vgf.AtkUp(c,c,5000) local e2=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e2,EVENT_BATTLED) vgf.effect.Reset(c,e2,EVENT_BATTLED)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_SET) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_SET)
e1:SetCode(EVENT_BATTLED) e1:SetCode(EVENT_BATTLED)
...@@ -31,7 +31,7 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp) ...@@ -31,7 +31,7 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.condition2(e,tp,eg,ep,ev,re,r,rp) function cm.condition2(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterFilter(e:GetHandler()) and Duel.GetAttacker()==e:GetHandler() return vgf.filter.IsR(e:GetHandler()) and Duel.GetAttacker()==e:GetHandler()
end end
function cm.condition3(e,tp,eg,ep,ev,re,r,rp) function cm.condition3(e,tp,eg,ep,ev,re,r,rp)
return eg:GetFirst()==e:GetHandler() return eg:GetFirst()==e:GetHandler()
......
...@@ -9,7 +9,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e2=vgf.AtkUp(c,c,10000) local e2=vgf.AtkUp(c,c,10000)
vgf.EffectReset(c,e2,EVENT_BATTLED) vgf.effect.Reset(c,e2,EVENT_BATTLED)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_SET) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_SET)
e1:SetCode(EVENT_BATTLED) e1:SetCode(EVENT_BATTLED)
...@@ -21,7 +21,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -21,7 +21,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterFilter(e:GetHandler()) and vgf.GetVMonster(tp):IsSetCard(0xe8) return vgf.filter.IsR(e:GetHandler()) and vgf.GetVMonster(tp):IsSetCard(0xe8)
end end
function cm.operation2(e,tp,eg,ep,ev,re,r,rp) function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
vgf.Sendto(LOCATION_SOUL,e:GetHandler(),vgf.GetVMonster(tp)) vgf.Sendto(LOCATION_SOUL,e:GetHandler(),vgf.GetVMonster(tp))
......
...@@ -10,6 +10,6 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,6 +10,6 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
if c:IsRelateToEffect(e) then vgf.Sendto(LOCATION_SOUL,c,rc) end if c:IsRelateToEffect(e) then vgf.Sendto(LOCATION_SOUL,c,rc) end
end end
...@@ -6,7 +6,7 @@ function cm.initial_effect(c) ...@@ -6,7 +6,7 @@ function cm.initial_effect(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(2),cm.condition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(2),cm.condition,nil,1)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterFilter(e:GetHandler()) and vgf.GetVMonster(tp):IsLevelAbove(3) return vgf.filter.IsR(e:GetHandler()) and vgf.GetVMonster(tp):IsLevelAbove(3)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
......
...@@ -6,7 +6,7 @@ function cm.initial_effect(c) ...@@ -6,7 +6,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.SoulBlast(1),cm.condition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.SoulBlast(1),cm.condition)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.GetVMonster(tp):IsSetCard(0xe8) and vgf.RMonsterFilter(e:GetHandler()) return vgf.GetVMonster(tp):IsSetCard(0xe8) and vgf.filter.IsR(e:GetHandler())
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】:这个单位从手牌登场到R时,通过【费用】[计数爆发1],查看你的牌堆顶的3张卡,选择1张卡,放置到灵魂里,然后牌堆洗切,你的灵魂里有4张以上的相互不同等级的卡的话,抽1张卡。 --【自】:这个单位从手牌登场到R时,通过【费用】[计数爆发1],查看你的牌堆顶的3张卡,选择1张卡,放置到灵魂里,然后牌堆洗切,你的灵魂里有4张以上的相互不同等级的卡的话,抽1张卡。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.CounterBlast(1),vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.CounterBlast(1),vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,3) local g=Duel.GetDecktopGroup(tp,3)
......
...@@ -6,7 +6,7 @@ function cm.initial_effect(c) ...@@ -6,7 +6,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,cm.condition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,cm.condition)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterFilter(e:GetHandler()) return vgf.filter.IsR(e:GetHandler())
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,2) local g=Duel.GetDecktopGroup(tp,2)
......
...@@ -29,7 +29,7 @@ function cm.filter(c,e,tp) ...@@ -29,7 +29,7 @@ function cm.filter(c,e,tp)
return c:IsSetCard(0x76) and vgf.IsCanBeCalled(c,e,tp) return c:IsSetCard(0x76) and vgf.IsCanBeCalled(c,e,tp)
end end
function cm.checkfilter(c) function cm.checkfilter(c)
return vgf.IsSummonTypeV(c) and c:IsLevelAbove(3) return vgf.filter.RideOnVCircle(c) and c:IsLevelAbove(3)
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.checkfilter,1,nil) return eg:IsExists(cm.checkfilter,1,nil)
......
...@@ -17,7 +17,7 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,7 +17,7 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000,nil) local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
function cm.cfilter(c,mc) function cm.cfilter(c,mc)
......
...@@ -31,13 +31,13 @@ function cm.checkop(e,tp,eg,ep,ev,re,r,rp) ...@@ -31,13 +31,13 @@ function cm.checkop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and vgf.RMonsterCondition(e) return Duel.GetTurnPlayer()==tp and vgf.con.IsR(e)
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_Call) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_Call)
local g=vgf.GetVMonster(tp):GetOverlayGroup():FilterSelect(tp,cm.filter,1,1,nil,e,tp) local g=vgf.GetVMonster(tp):GetOverlayGroup():FilterSelect(tp,cm.filter,1,1,nil,e,tp)
vgf.Sendto(LOCATION_CIRCLE,g,SUMMON_TYPE_RIDE,tp,"FromOverlayToV",POS_FACEDOWN_DEFENCE) vgf.Sendto(LOCATION_CIRCLE,g,SUMMON_TYPE_RIDE,tp,"FromSouloV",POS_FACEDOWN_DEFENCE)
end end
function cm.filter(c,e,tp) function cm.filter(c,e,tp)
return c:IsSetCard(0x202) and vgf.IsCanBeCalled(c,e,tp,SUMMON_TYPE_RIDE,POS_FACEDOWN_DEFENCE,"FromOverlayToV") return c:IsSetCard(0x202) and vgf.IsCanBeCalled(c,e,tp,SUMMON_TYPE_RIDE,POS_FACEDOWN_DEFENCE,"FromSouloV")
end end
\ No newline at end of file
...@@ -11,8 +11,8 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,8 +11,8 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1,nil) return vgf.filter.IsR(c) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1,nil)
end end
function cm.filter(c) function cm.filter(c)
return vgf.VMonsterFilter and c:IsSetCard(0x77) return vgf.filter.IsV and c:IsSetCard(0x77)
end end
\ No newline at end of file
...@@ -5,10 +5,10 @@ function cm.initial_effect(c) ...@@ -5,10 +5,10 @@ function cm.initial_effect(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and eg:IsExists(cm.filter,1,nil,tp) return vgf.filter.IsR(c) and eg:IsExists(cm.filter,1,nil,tp)
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsSummonType(SUMMON_VALUE_REVOLT) and vgf.VMonsterFilter(c) and c:IsControler(tp) return c:IsSummonType(SUMMON_VALUE_REVOLT) and vgf.filter.IsV(c) and c:IsControler(tp)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -10,10 +10,10 @@ end ...@@ -10,10 +10,10 @@ end
function cm.filter(e,tp,eg,ep,ev,re,r,rp) function cm.filter(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local e1=vgf.DefUp(c,c,10000) local e1=vgf.DefUp(c,c,10000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local e1=vgf.DefUp(c,c,10000) local e1=vgf.DefUp(c,c,10000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and vgf.VMonsterFilter(Duel.GetAttackTarget()) and vgf.IsExistingMatchingCard(nil,tp,LOCATION_CIRCLE+LOCATION_DROP,0,4,nil) return vgf.filter.IsR(c) and vgf.filter.IsV(Duel.GetAttackTarget()) and vgf.IsExistingMatchingCard(nil,tp,LOCATION_CIRCLE+LOCATION_DROP,0,4,nil)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,3) local g=Duel.GetDecktopGroup(tp,3)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.SoulBlast(1),vgf.VMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.SoulBlast(1),vgf.con.IsV)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,cm.operation1,nil,cm.condition1) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,cm.operation1,nil,cm.condition1)
vgd.GlobalCheckEffect(c,m,EVENT_SPSUMMON_SUCCESS,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_SPSUMMON_SUCCESS,cm.checkcon)
end end
...@@ -14,10 +14,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -14,10 +14,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT) vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT)
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) return vgf.filter.IsR(c)
end end
function cm.condition1(e,tp,eg,ep,ev,re,r,rp) function cm.condition1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and vgf.VMonsterCondition(e) and Duel.GetAttacker()==e:GetHandler() return Duel.GetFlagEffect(tp,m)>0 and vgf.con.IsV(e) and Duel.GetAttacker()==e:GetHandler()
end end
function cm.operation1(e,tp,eg,ep,ev,re,r,rp) function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.True,vgf.VMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.True,vgf.con.IsV)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -10,10 +10,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,10 +10,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT) vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT)
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) return vgf.filter.IsR(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_CIRCLE,0,1,nil,e:GetHandler()) and Duel.GetAttacker()==e:GetHandler() and vgf.RMonsterCondition(e) return vgf.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_CIRCLE,0,1,nil,e:GetHandler()) and Duel.GetAttacker()==e:GetHandler() and vgf.con.IsR(e)
end end
function cm.cfilter(c,mc) function cm.cfilter(c,mc)
return vgf.GetColumnGroup(c):IsContains(mc) and c:IsControler(mc:GetControler()) and c:GetFlagEffect(FLAG_SUPPORT)>0 return vgf.GetColumnGroup(c):IsContains(mc) and c:IsControler(mc:GetControler()) and c:GetFlagEffect(FLAG_SUPPORT)>0
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.True,vgf.VSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.True,vgf.con.RideOnVCircle)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,nil,cm.con2) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,nil,cm.con2)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.CounterBlast(1),vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.CounterBlast(1),vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.SoulBlast(1),vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.SoulBlast(1),vgf.con.IsR)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -6,9 +6,9 @@ function cm.initial_effect(c) ...@@ -6,9 +6,9 @@ function cm.initial_effect(c)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_FIELD, EFFECT_UPDATE_ATTACK, 5000, nil, cm.tg, LOCATION_CIRCLE, 0, RESET_PHASE+PHASE_END, g:GetFirst() vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_FIELD, EFFECT_UPDATE_ATTACK, 5000, nil, cm.tg, LOCATION_CIRCLE, 0, RESET_PHASE+PHASE_END, g:GetFirst()
end end
function cm.tg(e,c) function cm.tg(e,c)
return vgf.RMonsterFilter(c) return vgf.filter.IsR(c)
end end
\ No newline at end of file
...@@ -10,7 +10,7 @@ function cm.filter(c) ...@@ -10,7 +10,7 @@ function cm.filter(c)
end end
function cm.con(e) function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
return c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.RMonsterCondition(e) return c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.con.IsR(e)
end end
function cm.val(e) function cm.val(e)
local c=e:GetHandler() local c=e:GetHandler()
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,cm.cost,vgf.VMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,cm.cost,vgf.con.IsV)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op1,vgf.cost.SoulBlast(5),cm.con,nil,nil,nil,2) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op1,vgf.cost.SoulBlast(5),cm.con,nil,nil,nil,2)
vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.checkcon)
end end
...@@ -11,11 +11,11 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -11,11 +11,11 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.ChangePosition(g,POS_FACEUP_DEFENCE) Duel.ChangePosition(g,POS_FACEUP_DEFENCE)
end end
function cm.filter(c) function cm.filter(c)
return c:IsCanChangePosition() and c:IsPosition(POS_FACEUP_ATTACK) and vgf.RMonsterFilter(c) return c:IsCanChangePosition() and c:IsPosition(POS_FACEUP_ATTACK) and vgf.filter.IsR(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.VMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsV,tp,0,LOCATION_CIRCLE,1,1,nil)
if g:GetCount()>0 then vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) end if g:GetCount()>0 then vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) end
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
vgf.AtkUp(c,c,10000) vgf.AtkUp(c,c,10000)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,vgf.cost.CounterBlast(1),vgf.VMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,vgf.cost.CounterBlast(1),vgf.con.IsV)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -10,12 +10,12 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,12 +10,12 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
if ct>=10 then if ct>=10 then
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local t={vgf.AtkUp(c,c,10000),vgf.StarUp(c,c,1)} local t={vgf.AtkUp(c,c,10000),vgf.StarUp(c,c,1)}
vgf.EffectReset(c,t,EVENT_BATTLED) vgf.effect.Reset(c,t,EVENT_BATTLED)
end end
end end
if ct>=15 then if ct>=15 then
local g1=vgf.GetMatchingGroup(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,nil) local g1=vgf.GetMatchingGroup(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,nil)
local g2=vgf.GetMatchingGroup(vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,nil) local g2=vgf.GetMatchingGroup(vgf.filter.IsR,tp,0,LOCATION_CIRCLE,nil)
local tc1=vgf.GetVMonster(tp) local tc1=vgf.GetVMonster(tp)
local tc2=vgf.GetVMonster(1-tp) local tc2=vgf.GetVMonster(1-tp)
vgf.Sendto(LOCATION_SOUL,g1,tc1) vgf.Sendto(LOCATION_SOUL,g1,tc1)
......
...@@ -17,6 +17,6 @@ function cm.con1(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,6 +17,6 @@ function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and cm.con(e,tp,eg,ep,ev,re,r,rp) return Duel.GetFlagEffect(tp,m)>0 and cm.con(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
\ No newline at end of file
...@@ -3,7 +3,7 @@ function cm.initial_effect(c) ...@@ -3,7 +3,7 @@ function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, function(e) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, function(e)
vgd.AbilityCont(c, m, LOCATION_G_CIRCLE, EFFECT_TYPE_SINGLE, 5000, EFFECT_UPDATE_DEFENSE, cm.con) vgd.AbilityCont(c, m, LOCATION_G_CIRCLE, EFFECT_TYPE_SINGLE, 5000, EFFECT_UPDATE_DEFENSE, cm.con)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.cost.SoulBlast(1),vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.cost.SoulBlast(1),vgf.con.RideOnRCircle)
end end
function cm.con(e) function cm.con(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
...@@ -19,5 +19,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,5 +19,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter1(c) function cm.filter1(c)
return vgf.RMonsterFilter(c) and vgf.FrontFilter(c) return vgf.filter.IsR(c) and vgf.filter.Front(c)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.con.RideOnRCircle)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op1,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op1,nil,cm.con)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
...@@ -18,7 +18,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,7 +18,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE+LOCATION_G_CIRCLE,0,3,nil,3) return vgf.con.IsR(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE+LOCATION_G_CIRCLE,0,3,nil,3)
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -6,21 +6,21 @@ function cm.initial_effect(c) ...@@ -6,21 +6,21 @@ function cm.initial_effect(c)
vgd.GlobalCheckEffect(c,m,EVENT_SPSUMMON_SUCCESS,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_SPSUMMON_SUCCESS,cm.checkcon)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget() return vgf.con.IsV(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget()
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp) return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,10000) vgf.AtkUp(c,g,10000)
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsSummonType,1,nil,SUMMON_TYPE_SELFRIDE) return eg:IsExists(Card.IsSummonType,1,nil,SUMMON_TYPE_SELFRIDE)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and vgf.VMonsterCondition(e) return Duel.GetFlagEffect(tp,m)>0 and vgf.con.IsV(e)
end end
function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
......
...@@ -8,10 +8,10 @@ function cm.initial_effect(c) ...@@ -8,10 +8,10 @@ function cm.initial_effect(c)
e1:SetCode(AFFECT_CODE_ALCHEMAGIC) e1:SetCode(AFFECT_CODE_ALCHEMAGIC)
e1:SetRange(LOCATION_ORDER) e1:SetRange(LOCATION_ORDER)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
e1:SetCondition(vgf.VMonsterCondition) e1:SetCondition(vgf.con.IsV)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetCode(AFFECT_CODE_ALCHEMAGIC_DIFFERENT_NAME) e2:SetCode(AFFECT_CODE_ALCHEMAGIC_DIFFERENT_NAME)
c:RegisterEffect(e2) c:RegisterEffect(e2)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_DROP),vgf.cost.CounterBlast(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_DROP),vgf.cost.CounterBlast(1),vgf.con.IsV,nil,1)
end end
\ No newline at end of file
...@@ -5,10 +5,10 @@ function cm.initial_effect(c) ...@@ -5,10 +5,10 @@ function cm.initial_effect(c)
end end
function cm.con(e) function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.BackFilter(c) return vgf.filter.Back(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,c) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,c)
vgf.AtkUp(c,g,c:GetAttack()) vgf.AtkUp(c,g,c:GetAttack())
end end
\ No newline at end of file
...@@ -6,7 +6,7 @@ function cm.initial_effect(c) ...@@ -6,7 +6,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.RSummonCondition(e) return c:GetFlagEffectLabel(FLAG_CONDITION)==201 and vgf.con.RideOnRCircle(e)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -4,6 +4,6 @@ function cm.initial_effect(c) ...@@ -4,6 +4,6 @@ function cm.initial_effect(c)
vgf.AddEffectWhenTrigger(c,m,cm.op) vgf.AddEffectWhenTrigger(c,m,cm.op)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
Duel.ChangePosition(g,POS_FACEUP_ATTACK) Duel.ChangePosition(g,POS_FACEUP_ATTACK)
end end
\ No newline at end of file
...@@ -13,11 +13,11 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -13,11 +13,11 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,c) end if chk==0 then return vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,c) end
local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,c) local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,c)
vgf.Sendto(LOCATION_SOUL,g) vgf.Sendto(LOCATION_SOUL,g)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION) local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION)
return vgf.GetValueType(ct)=="number" and ct==10102001 and vgf.RMonsterCondition(e) return vgf.GetValueType(ct)=="number" and ct==10102001 and vgf.con.IsR(e)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.SoulCharge(1),nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.SoulCharge(1),nil,vgf.con.RideOnRCircle)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.SoulBlast(3),vgf.RMonsterCondition,nil,1) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.SoulBlast(3),vgf.con.IsR,nil,1)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
......
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetTargetRange(LOCATION_CIRCLE,0) e1:SetTargetRange(LOCATION_CIRCLE,0)
e1:SetValue(10000) e1:SetValue(10000)
e1:SetCondition(vgf.PlayerEffect) e1:SetCondition(vgf.con.PlayerEffect)
e1:SetTarget(cm.tg) e1:SetTarget(cm.tg)
Duel.RegisterEffect(e1,tp) Duel.RegisterEffect(e1,tp)
local e2=e1:Clone() local e2=e1:Clone()
...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterEffect(e2,tp) Duel.RegisterEffect(e2,tp)
end end
function cm.tg(e,c) function cm.tg(e,c)
return vgf.VMonsterFilter(c) return vgf.filter.IsV(c)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,cm.cost,vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,cm.cost,vgf.con.IsR,nil,1)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
...@@ -12,7 +12,7 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -12,7 +12,7 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
if not vgf.CheckPrison(tp) then return end if not vgf.CheckPrison(tp) then return end
local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.SendtoPrison(g,tp) vgf.SendtoPrison(g,tp)
if vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,3,nil) then if vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,3,nil) then
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
......
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.GetMatchingGroup(vgf.FrontFilter,tp,LOCATION_CIRCLE,0,nil) local g=vgf.GetMatchingGroup(vgf.filter.Front,tp,LOCATION_CIRCLE,0,nil)
vgf.AtkUp(c,g,"DOUBLE") vgf.AtkUp(c,g,"DOUBLE")
vgf.StarUp(c,g,"DOUBLE") vgf.StarUp(c,g,"DOUBLE")
end end
\ No newline at end of file
...@@ -2,7 +2,7 @@ local cm,m,o=GetID() ...@@ -2,7 +2,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.CannotBeTarget(c,m,LOCATION_R_CIRCLE) vgd.CannotBeTarget(c,m,LOCATION_R_CIRCLE)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.op,nil,vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.op,nil,vgf.con.IsR)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
vgf.CounterCharge(1)(e,tp,eg,ep,ev,re,r,rp) vgf.CounterCharge(1)(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -8,5 +8,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -8,5 +8,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:GetFlagEffect(FLAG_SUPPORT)>0 and vgf.RMonsterCondition(e) return c:GetFlagEffect(FLAG_SUPPORT)>0 and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -20,5 +20,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -20,5 +20,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and c:GetFlagEffect(FLAG_ALSO_CAN_TRIGGER)==0 and c:IsFaceup() return vgf.filter.IsR(c) and c:GetFlagEffect(FLAG_ALSO_CAN_TRIGGER)==0 and c:IsFaceup()
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnRCircle)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op1,vgf.cost.Retire(),vgf.RMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op1,vgf.cost.Retire(),vgf.con.IsR)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,3) local g=Duel.GetDecktopGroup(tp,3)
......
...@@ -7,7 +7,7 @@ function cm.initial_effect(c) ...@@ -7,7 +7,7 @@ function cm.initial_effect(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RSummonCondition(e) and c:IsSummonLocation(LOCATION_HAND) return vgf.con.RideOnRCircle(e) and c:IsSummonLocation(LOCATION_HAND)
end end
--效果二处理 --效果二处理
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -11,7 +11,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,7 +11,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g1=vgf.SelectMatchingCard(HINTMSG_CRITICAL_STRIKE,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g1=vgf.SelectMatchingCard(HINTMSG_CRITICAL_STRIKE,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.StarUp(c,g1,1,nil) vgf.StarUp(c,g1,1,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g2=vgf.GetMatchingGroup(vgf.IsSequence,tp,LOCATION_CIRCLE,0,nil,0,4,5) local g2=vgf.GetMatchingGroup(Card.IsSequence,tp,LOCATION_CIRCLE,0,nil,0,4,5)
vgf.AtkUp(c,g2,10000,nil) vgf.AtkUp(c,g2,10000,nil)
if vgf.GetMatchingGroupCount(nil,tp,LOCATION_DAMAGE,0,nil)>=vgf.GetMatchingGroupCount(nil,tp,0,LOCATION_DAMAGE,nil) then if vgf.GetMatchingGroupCount(nil,tp,LOCATION_DAMAGE,0,nil)>=vgf.GetMatchingGroupCount(nil,tp,0,LOCATION_DAMAGE,nil) then
local tc=vgf.SelectMatchingCard(HINTMSG_TODROP,e,tp,nil,tp,LOCATION_DAMAGE,0,1,1,nil):GetFirst() local tc=vgf.SelectMatchingCard(HINTMSG_TODROP,e,tp,nil,tp,LOCATION_DAMAGE,0,1,1,nil):GetFirst()
......
...@@ -8,19 +8,19 @@ function cm.initial_effect(c) ...@@ -8,19 +8,19 @@ function cm.initial_effect(c)
end end
function cm.condition2(e,tp,eg,ep,ev,re,r,rp) function cm.condition2(e,tp,eg,ep,ev,re,r,rp)
local c=Duel.GetAttacker() local c=Duel.GetAttacker()
return vgf.RMonsterCondition(e) and vgf.GetMatchingGroupCount(vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,nil)<=2 and vgf.VMonsterFilter(c) return vgf.con.IsR(e) and vgf.GetMatchingGroupCount(vgf.filter.IsR,tp,0,LOCATION_CIRCLE,nil)<=2 and vgf.filter.IsV(c)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsRelateToEffect(e) end if chk==0 then return c:IsRelateToEffect(e) end
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
vgf.Sendto(LOCATION_SOUL,c,rc) vgf.Sendto(LOCATION_SOUL,c,rc)
end end
function cm.operation2(e,tp,eg,ep,ev,re,r,rp) function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_CRITICAL_STRIKE,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_CRITICAL_STRIKE,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local e1=vgf.StarUp(c,g,1,nil) local e1=vgf.StarUp(c,g,1,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
\ No newline at end of file
...@@ -20,9 +20,9 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp) ...@@ -20,9 +20,9 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp,chk) vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp,chk)
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000) local e1=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
function cm.condition (e,tp,eg,ep,ev,re,r,rp) function cm.condition (e,tp,eg,ep,ev,re,r,rp)
return vgf.GetMatchingGroupCount(vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,nil)<=2 return vgf.GetMatchingGroupCount(vgf.filter.IsR,tp,0,LOCATION_CIRCLE,nil)<=2
end end
...@@ -3,12 +3,12 @@ local cm,m,o=GetID() ...@@ -3,12 +3,12 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】:这个单位登场到R时,通过【费用】[计数爆发2],灵魂填充1,选择对手的1张后防者,退场。 --【自】:这个单位登场到R时,通过【费用】[计数爆发2],灵魂填充1,选择对手的1张后防者,退场。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.CounterBlast(2),vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.cost.CounterBlast(2),vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp) vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】:这个单位登场到R时,通过【费用】[计数爆发1,灵魂爆发1],选择对手的1张等级2以上的后防者,退场。 --【自】:这个单位登场到R时,通过【费用】[计数爆发1,灵魂爆发1],选择对手的1张等级2以上的后防者,退场。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,cm.cost,vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,cm.cost,vgf.con.RideOnRCircle)
end end
--计数爆发1,灵魂爆发1 --计数爆发1,灵魂爆发1
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
...@@ -20,5 +20,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -20,5 +20,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsLevelAbove(2) return vgf.filter.IsR(c) and c:IsLevelAbove(2)
end end
\ No newline at end of file
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -9,14 +9,14 @@ vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(2),cm.cond ...@@ -9,14 +9,14 @@ vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(2),cm.cond
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsCode(10401003) return vgf.con.IsR(e) and vgf.GetVMonster(tp):IsCode(10401003)
end end
function cm.condition1(e,tp,eg,ep,ev,re,r,rp) function cm.condition1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):GetOverlayCount()>=10 return vgf.con.IsR(e) and vgf.GetVMonster(tp):GetOverlayCount()>=10
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.GetMatchingGroup(vgf.FrontFilter,tp,LOCATION_CIRCLE,0,nil) local g=vgf.GetMatchingGroup(vgf.filter.Front,tp,LOCATION_CIRCLE,0,nil)
vgf.AtkUp(c,g,5000,nil) vgf.AtkUp(c,g,5000,nil)
end end
\ No newline at end of file
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
--【自】:这个单位被「重力的支配者 磁力重压」RIDE时,通过【费用】[将手牌中的1张卡放置到灵魂里],抽1张卡,灵魂填充1。 --【自】:这个单位被「重力的支配者 磁力重压」RIDE时,通过【费用】[将手牌中的1张卡放置到灵魂里],抽1张卡,灵魂填充1。
vgd.BeRidedByCard(c,m,10401003,cm.operation,cm.cost) vgd.BeRidedByCard(c,m,10401003,cm.operation,cm.cost)
--【自】:这个单位登场到R时,通过【费用】[计数爆发1],灵魂填充2。 --【自】:这个单位登场到R时,通过【费用】[计数爆发1],灵魂填充2。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,vgf.cost.CounterBlast(1),vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,vgf.cost.CounterBlast(1),vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
...@@ -15,7 +15,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -15,7 +15,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.GetMatchingGroupCount(nil,tp,0,LOCATION_HAND,nil)>=1 end if chk==0 then return vgf.GetMatchingGroupCount(nil,tp,0,LOCATION_HAND,nil)>=1 end
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
local g=vgf.SelectMatchingCard(HINTMSG_OVERLAY,e,tp,nil,tp,LOCATION_HAND,0,1,1,nil,e,tp) local g=vgf.SelectMatchingCard(HINTMSG_OVERLAY,e,tp,nil,tp,LOCATION_HAND,0,1,1,nil,e,tp)
vgf.Sendto(LOCATION_SOUL,g,rc) vgf.Sendto(LOCATION_SOUL,g,rc)
end end
......
...@@ -13,9 +13,9 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -13,9 +13,9 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return vgf.IsExistingMatchingCard(nil,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,c) and vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end if chk==0 then return vgf.IsExistingMatchingCard(nil,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,c) and vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end
vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk)
local g=vgf.SelectMatchingCard(HINTMSG_OVERLAY,nil,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,c) local g=vgf.SelectMatchingCard(HINTMSG_OVERLAY,nil,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,c)
vgf.Sendto(LOCATION_SOUL,g) vgf.Sendto(LOCATION_SOUL,g)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -8,7 +8,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -8,7 +8,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,Card.IsFaceup,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,Card.IsFaceup,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -17,8 +17,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,8 +17,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.SoulBlast(1),vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.SoulBlast(1),vgf.con.IsR,nil,1)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -10,5 +10,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,5 +10,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
vgf.SendtoPrison(g,tp) vgf.SendtoPrison(g,tp)
end end
function cm.filter(c) function cm.filter(c)
return vgf.IsSequence(c,0,4) return Card.IsSequence(c,0,4)
end end
\ No newline at end of file
...@@ -10,11 +10,11 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,11 +10,11 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp) and not eg:IsContains(e:GetHandler()) return vgf.con.IsV(e) and eg:IsExists(cm.filter,1,nil,tp) and not eg:IsContains(e:GetHandler())
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsSetCard(0x5040) and c:IsLocation(LOCATION_ORDER) and c:IsControler(tp) return c:IsSetCard(0x5040) and c:IsLocation(LOCATION_ORDER) and c:IsControler(tp)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_ABYSSAL_DARK_NIGHT) and Duel.GetTurnPlayer()==tp return vgf.con.IsR(e) and Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_ABYSSAL_DARK_NIGHT) and Duel.GetTurnPlayer()==tp
end end
\ No newline at end of file
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_ABYSSAL_DARK_NIGHT) and vgf.RSummonCondition(e) return Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_ABYSSAL_DARK_NIGHT) and vgf.con.RideOnRCircle(e)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end if chk==0 then return vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end
......
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE+LOCATION_G_CIRCLE,0,3,nil,3) and vgf.RMonsterCondition(e) return vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_CIRCLE+LOCATION_G_CIRCLE,0,3,nil,3) and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -2,7 +2,7 @@ local cm,m,o=GetID() ...@@ -2,7 +2,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.BeRidedByCard(c,m,10401008,cm.op) vgd.BeRidedByCard(c,m,10401008,cm.op)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op2,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op2,nil,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,3) local g=Duel.GetDecktopGroup(tp,3)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.con.RideOnRCircle)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.op.Rest(e:GetHandler())(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end if chk==0 then return vgf.op.Rest(e:GetHandler())(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end
......
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_MOVE,vgf.CounterCharge(1),vgf.cost.SoulBlast(2),cm.con,nil,1) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_MOVE,vgf.CounterCharge(1),vgf.cost.SoulBlast(2),cm.con,nil,1)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget() return vgf.con.IsR(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget()
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp) return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp)
......
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DROP,cm.filter,1,0),nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DROP,cm.filter,1,0),nil,vgf.con.RideOnVCircle)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con2) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con2)
vgd.GlobalCheckEffect(c,m,EVENT_CHAINING,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_CHAINING,cm.checkcon)
end end
...@@ -12,5 +12,5 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -12,5 +12,5 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and vgf.RMonsterCondition(e) return Duel.GetFlagEffect(tp,m)>0 and vgf.con.IsR(e)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.Retire(),vgf.RMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.Retire(),vgf.con.IsR)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,7 +9,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,8 +18,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -5,11 +5,11 @@ function cm.initial_effect(c) ...@@ -5,11 +5,11 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RSummonCondition(e) return vgf.con.RideOnRCircle(e)
and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1,nil) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1,nil)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
function cm.filter(c) function cm.filter(c)
......
...@@ -4,12 +4,12 @@ function cm.initial_effect(c) ...@@ -4,12 +4,12 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,nil,cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.GetMatchingGroup(vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,nil):GetCount()<=2 and vgf.RMonsterCondition(e) return vgf.GetMatchingGroup(vgf.filter.IsR,tp,0,LOCATION_CIRCLE,nil):GetCount()<=2 and vgf.con.IsR(e)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000) local e1=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
\ No newline at end of file
...@@ -6,7 +6,7 @@ end ...@@ -6,7 +6,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local e1=vgf.DefUp(c,c,5000) local e1=vgf.DefUp(c,c,5000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_TO_GRAVE,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.Retire()),cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_TO_GRAVE,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.Retire()),cm.con)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
function cm.filter(c,tp) function cm.filter(c,tp)
......
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
end end
--你的主要阶段中对手的后防者退场时 --你的主要阶段中对手的后防者退场时
function cm.con(e,tp,eg,ep,re,r,rp) function cm.con(e,tp,eg,ep,re,r,rp)
return eg:IsExists(cm.filter,1,nil,tp) and Duel.GetCurrentPhase()==PHASE_MAIN1 and Duel.GetTurnPlayer()==tp and vgf.RMonsterCondition(e) return eg:IsExists(cm.filter,1,nil,tp) and Duel.GetCurrentPhase()==PHASE_MAIN1 and Duel.GetTurnPlayer()==tp and vgf.con.IsR(e)
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsPreviousLocation(LOCATION_CIRCLE) and c:IsPreviousControler(1-tp) and c:IsPreviousPosition(POS_FACEUP) return c:IsPreviousLocation(LOCATION_CIRCLE) and c:IsPreviousControler(1-tp) and c:IsPreviousPosition(POS_FACEUP)
......
...@@ -5,11 +5,7 @@ function cm.initial_effect(c) ...@@ -5,11 +5,7 @@ function cm.initial_effect(c)
--通过【费用】[使用1张以上的你希望的张数的卡进行计数爆发]施放! --通过【费用】[使用1张以上的你希望的张数的卡进行计数爆发]施放!
--由于这个费用支付的计数爆发1每有1张,选择对手的1张后防者,退场。 --由于这个费用支付的计数爆发1每有1张,选择对手的1张后防者,退场。
vgd.Order(c,m,cm.op,cm.cost) vgd.Order(c,m,cm.op,cm.cost)
vgf.AddAlchemagicFrom(c,m,"LOCATION_DAMAGE") VgF.AddAlchemagic(m,"LOCATION_DAMAGE","POSCHANGE",1,100,Card.IsFaceup)
vgf.AddAlchemagicTo(c,m,"POSCHANGE")
vgf.AddAlchemagicFilter(c,m,Card.IsFaceup)
vgf.AddAlchemagicCountMin(c,m,1)
vgf.AddAlchemagicCountMax(c,m,100)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local ct=vgf.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_DAMAGE,0,nil) local ct=vgf.GetMatchingGroupCount(Card.IsFaceup,tp,LOCATION_DAMAGE,0,nil)
......
...@@ -3,16 +3,16 @@ local cm,m,o=GetID() ...@@ -3,16 +3,16 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【自】【R】:这个单位的攻击击中时,灵魂填充1。 -- 【自】【R】:这个单位的攻击击中时,灵魂填充1。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,vgf.op.SoulCharge(1),nil,vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,vgf.op.SoulCharge(1),nil,vgf.con.IsR)
-- 【自】【R】:这个单位攻击的战斗结束时,你的灵魂在10张以上的话,通过【费用】[将这个单位放置到灵魂里],计数回充1 -- 【自】【R】:这个单位攻击的战斗结束时,你的灵魂在10张以上的话,通过【费用】[将这个单位放置到灵魂里],计数回充1
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,vgf.CounterCharge(1),cm.cost,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,vgf.CounterCharge(1),cm.cost,cm.con)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsRelateToEffect(e) end if chk==0 then return c:IsRelateToEffect(e) end
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
vgf.Sendto(LOCATION_SOUL,c,rc) vgf.Sendto(LOCATION_SOUL,c,rc)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.GetMatchingGroupCount(nil,tp,LOCATION_SOUL,0,nil)>=10 and vgf.RMonsterCondition(e) return vgf.GetMatchingGroupCount(nil,tp,LOCATION_SOUL,0,nil)>=10 and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -8,7 +8,7 @@ vgd.GlobalCheckEffect(c,m,EVENT_CUSTOM+EVENT_OVERLAY_FILL,cm.checkcon) ...@@ -8,7 +8,7 @@ vgd.GlobalCheckEffect(c,m,EVENT_CUSTOM+EVENT_OVERLAY_FILL,cm.checkcon)
end end
function cm.con(e) function cm.con(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and Duel.GetFlagEffect(tp,m)>0 return vgf.con.IsR(e) and Duel.GetFlagEffect(tp,m)>0
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and rp==tp return Duel.GetTurnPlayer()==tp and rp==tp
......
...@@ -7,7 +7,7 @@ function cm.initial_effect(c) ...@@ -7,7 +7,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and eg:IsContains(c) return vgf.filter.IsR(c) and eg:IsContains(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,12 +3,12 @@ local cm,m,o=GetID() ...@@ -3,12 +3,12 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【起】【R】:通过【费用】[将这个单位放置到灵魂里],选择你的1个单位,这个回合中,力量+2000。 -- 【起】【R】:通过【费用】[将这个单位放置到灵魂里],选择你的1个单位,这个回合中,力量+2000。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,cm.cost,vgf.RMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,cm.cost,vgf.con.IsR)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsRelateToEffect(e) end if chk==0 then return c:IsRelateToEffect(e) end
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
vgf.Sendto(LOCATION_SOUL,c,rc) vgf.Sendto(LOCATION_SOUL,c,rc)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】:这个单位登场到R时,选择你其他的1个与这个单位同纵列的单位,这个回合中,力量+2000。你处于“一气呵成之势”状态的话,力量不+2000而是+5000。 --【自】:这个单位登场到R时,选择你其他的1个与这个单位同纵列的单位,这个回合中,力量+2000。你处于“一气呵成之势”状态的话,力量不+2000而是+5000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and eg:IsContains(c) and vgf.GetVMonster(tp):GetOverlayCount()>=5 return vgf.filter.IsR(c) and eg:IsContains(c) and vgf.GetVMonster(tp):GetOverlayCount()>=5
end end
--对手要从手牌将卡CALL到G上之际,不将2张以上同时CALL的话则不能CALL出场。 --对手要从手牌将卡CALL到G上之际,不将2张以上同时CALL的话则不能CALL出场。
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
...@@ -21,7 +21,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -21,7 +21,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetOperation(cm.costop) e1:SetOperation(cm.costop)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e1) c:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
function cm.costtg(e,re,tp) function cm.costtg(e,re,tp)
e:SetLabelObject(re:GetHandler()) e:SetLabelObject(re:GetHandler())
......
...@@ -3,11 +3,11 @@ local cm,m,o=GetID() ...@@ -3,11 +3,11 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】:这个单位登场到V时,灵魂填充1 --【自】:这个单位登场到V时,灵魂填充1
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.SoulCharge(1),nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.SoulCharge(1),nil,vgf.con.RideOnVCircle)
--【永】【R】:你的回合中,你的灵魂在10张以上的话,这个单位的力量+10000。 --【永】【R】:你的回合中,你的灵魂在10张以上的话,这个单位的力量+10000。
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 10000, cm.con2) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 10000, cm.con2)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):GetOverlayCount()>=10 return vgf.con.IsR(e) and vgf.GetVMonster(tp):GetOverlayCount()>=10
end end
...@@ -10,5 +10,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,5 +10,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
local e1=vgf.AtkUp(c,g,15000) local e1=vgf.AtkUp(c,g,15000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,c) function cm.con(e,c)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,1,nil) and Duel.GetAttacker()==e:GetHandler() and vgf.RMonsterCondition(e) return vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,1,nil) and Duel.GetAttacker()==e:GetHandler() and vgf.con.IsR(e)
end end
function cm.filter(c) function cm.filter(c)
return c:GetFlagEffect(FLAG_IMPRISON)>0 return c:GetFlagEffect(FLAG_IMPRISON)>0
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DECK,Card.IsSetCard,1,0,0x5040),nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DECK,Card.IsSetCard,1,0,0x5040),nil,vgf.con.RideOnVCircle)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 2000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 2000, cm.con)
end end
function cm.filter(c) function cm.filter(c)
...@@ -12,5 +12,5 @@ function cm.con(e) ...@@ -12,5 +12,5 @@ function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
return (Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_DARK_NIGHT) or Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_ABYSSAL_DARK_NIGHT)) return (Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_DARK_NIGHT) or Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_ABYSSAL_DARK_NIGHT))
and (Duel.GetAttacker()==e:GetHandler() or c:GetFlagEffect(FLAG_SUPPORT)>0) and (Duel.GetAttacker()==e:GetHandler() or c:GetFlagEffect(FLAG_SUPPORT)>0)
and vgf.RMonsterCondition(e) and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.op,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.op,nil,cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:GetFirst()==e:GetHandler() return vgf.con.IsR(e) and eg:GetFirst()==e:GetHandler()
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -5,6 +5,6 @@ function cm.initial_effect(c) ...@@ -5,6 +5,6 @@ function cm.initial_effect(c)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,10000,nil) vgf.AtkUp(c,g,10000,nil)
end end
\ No newline at end of file
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
local e1=vgf.AtkUp(c,g,30000,nil) local e1=vgf.AtkUp(c,g,30000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -11,7 +11,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,7 +11,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and vgf.FrontFilter(c) return vgf.filter.IsR(c) and vgf.filter.Front(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsLocation(LOCATION_ORDER) return e:GetHandler():IsLocation(LOCATION_ORDER)
......
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_MOVE,cm.op,vgf.cost.CounterBlast(2),cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_MOVE,cm.op,vgf.cost.CounterBlast(2),cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget() return vgf.con.IsR(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget()
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp) return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp)
......
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_MOVE,cm.op,vgf.cost.SoulBlast(1),cm.con,nil,1) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_MOVE,cm.op,vgf.cost.SoulBlast(1),cm.con,nil,1)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget() return vgf.con.IsR(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget()
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp) return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp)
......
...@@ -8,7 +8,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -8,7 +8,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget() return vgf.con.IsR(e) and eg:IsExists(cm.filter,1,nil,tp) and Duel.GetTurnPlayer()==tp and Duel.GetAttackTarget()
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp) return c:IsTrigger(TRIGGER_CARDS) and c:IsLocation(LOCATION_TRIGGER) and c:IsControler(tp)
...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
vgf.Sendto(LOCATION_DECK,g,tp,SEQ_DECKSHUFFLE,REASON_EFFECT) vgf.Sendto(LOCATION_DECK,g,tp,SEQ_DECKSHUFFLE,REASON_EFFECT)
end end
function cm.filter2(c) function cm.filter2(c)
return vgf.FrontFilter(c) and vgf.RMonsterFilter(c) return vgf.filter.Front(c) and vgf.filter.IsR(c)
end end
\ No newline at end of file
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.op,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.op,nil,cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:GetFirst()==e:GetHandler() return vgf.con.IsR(e) and eg:GetFirst()==e:GetHandler()
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -2,17 +2,13 @@ local cm,m,o=GetID() ...@@ -2,17 +2,13 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.Order(c,m,cm.op,cm.cost) vgd.Order(c,m,cm.op,cm.cost)
vgf.AddAlchemagicFrom(c,m,"LOCATION_SOUL") VgF.AddAlchemagic(m,"LOCATION_SOUL","LOCATION_DROP",1,1,function (tc) return tc:IsLevel(3) end)
vgf.AddAlchemagicTo(c,m,"LOCATION_DROP")
vgf.AddAlchemagicFilter(c,m,function (tc) return tc:IsLevel(3) end)
vgf.AddAlchemagicCountMin(c,m,1)
vgf.AddAlchemagicCountMax(c,m,1)
end end
function cm.filter(c,p) function cm.filter(c,p)
return c:IsControler(p) and vgf.RMonsterFilter(c) return c:IsControler(p) and vgf.filter.IsR(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_OPPO,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_OPPO,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
if g:GetCount()==0 then return end if g:GetCount()==0 then return end
local sg=vgf.GetColumnGroup(g:GetFirst()):Filter(cm.filter,nil,1-tp) local sg=vgf.GetColumnGroup(g:GetFirst()):Filter(cm.filter,nil,1-tp)
if sg:GetCount()>0 then g:Sub(sg) end if sg:GetCount()>0 then g:Sub(sg) end
...@@ -28,9 +24,9 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -28,9 +24,9 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil,nil):GetFirst():GetOverlayGroup():IsExists(Card.IsLevel,1,nil,3) vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil,nil):GetFirst():GetOverlayGroup():IsExists(Card.IsLevel,1,nil,3)
end end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsLevel,1,1,nil,3) local g=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsLevel,1,1,nil,3)
vgf.Sendto(LOCATION_DROP,g,REASON_COST) vgf.Sendto(LOCATION_DROP,g,REASON_COST)
end end
\ No newline at end of file
...@@ -13,5 +13,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -13,5 +13,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
local e1=vgf.AtkUp(c,g,15000,EVENT_BATTLED) local e1=vgf.AtkUp(c,g,15000,EVENT_BATTLED)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -3,11 +3,11 @@ local cm,m,o=GetID() ...@@ -3,11 +3,11 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这次战斗中,这个单位的力量+5000。 --【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这次战斗中,这个单位的力量+5000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.CounterBlast(1),vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.CounterBlast(1),vgf.con.IsR)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local e1=vgf.AtkUp(c,c,5000,EVENT_BATTLED) local e1=vgf.AtkUp(c,c,5000,EVENT_BATTLED)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
...@@ -8,12 +8,12 @@ function cm.initial_effect(c) ...@@ -8,12 +8,12 @@ function cm.initial_effect(c)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition and vgf.VMonsterFilter(Duel.GetAttackTarget()) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_BIND,0,1,nil,TYPE_ORDER) return vgf.con.IsR and vgf.filter.IsV(Duel.GetAttackTarget()) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_BIND,0,1,nil,TYPE_ORDER)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local e1=vgf.AtkUp(c,c,5000,EVENT_BATTLED) local e1=vgf.AtkUp(c,c,5000,EVENT_BATTLED)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
function cm.filter(c,typ) function cm.filter(c,typ)
return c:IsType(typ) and c:IsFaceup() return c:IsType(typ) and c:IsFaceup()
......
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【起】【V】【1回合1次】:通过【费用】[灵魂爆发1],抽2张卡, --【起】【V】【1回合1次】:通过【费用】[灵魂爆发1],抽2张卡,
--选择你的手牌中的至多1张指令卡,舍弃,没有舍弃的话,选择手牌中的的2张卡舍弃。 --选择你的手牌中的至多1张指令卡,舍弃,没有舍弃的话,选择手牌中的的2张卡舍弃。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.SoulBlast(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.SoulBlast(1),vgf.con.IsV,nil,1)
--【永】【R】:这个回合中你施放过指令卡的话,这个单位的力量+2000。 --【永】【R】:这个回合中你施放过指令卡的话,这个单位的力量+2000。
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 2000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 2000, cm.con)
vgd.GlobalCheckEffect(c,m,EVENT_CHAINING,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_CHAINING,cm.checkcon)
...@@ -23,5 +23,5 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -23,5 +23,5 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and vgf.RMonsterCondition(e) return Duel.GetFlagEffect(tp,m)>0 and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -3,10 +3,10 @@ local cm,m,o=GetID() ...@@ -3,10 +3,10 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【自】:这个单位登场到R时,选择你其他的1张后防者,这个回合中,力量+5000。 --【自】:这个单位登场到R时,选择你其他的1张后防者,这个回合中,力量+5000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,c) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,c)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
end end
...@@ -4,13 +4,8 @@ local cm,m,o=GetID() ...@@ -4,13 +4,8 @@ local cm,m,o=GetID()
--抽1张卡,将这张卡放置到灵魂里,计数回充1。 --抽1张卡,将这张卡放置到灵魂里,计数回充1。
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.Order(c,m,cm.op,vgf.cost.Retire(vgf.RMonsterFilter,2,2)) vgd.Order(c,m,cm.op,vgf.cost.Retire(vgf.filter.IsR,2,2))
vgf.AddAlchemagicFrom(c,m,"LOCATION_CIRCLE") VgF.AddAlchemagic(m,"LOCATION_CIRCLE","LOCATION_DROP",2,2,vgf.filter.IsR)
vgf.AddAlchemagicTo(c,m,"LOCATION_DROP")
vgf.AddAlchemagicFilter(c,m,vgf.RMonsterFilter)
vgf.AddAlchemagicCountMin(c,m,2)
vgf.AddAlchemagicCountMax(c,m,2)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -9,6 +9,6 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -9,6 +9,6 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,5000,EVENT_BATTLED) vgf.AtkUp(c,g,5000,EVENT_BATTLED)
local sg=vgf.SelectMatchingCard(HINTMSG_RTOHAND,vgf.RMonsterFilter,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,Duel.GetAttackTarget()) local sg=vgf.SelectMatchingCard(HINTMSG_RTOHAND,vgf.filter.IsR,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,Duel.GetAttackTarget())
vgf.Sendto(LOCATION_HAND,sg,REASON_EFFECT) vgf.Sendto(LOCATION_HAND,sg,REASON_EFFECT)
end end
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_OPPO,e,tp,vgf.VMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_OPPO,e,tp,vgf.filter.IsV,tp,0,LOCATION_CIRCLE,1,1,nil)
local e1=vgf.StarUp(c,g,-1,EVENT_BATTLED) local e1=vgf.StarUp(c,g,-1,EVENT_BATTLED)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -20,12 +20,12 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -20,12 +20,12 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp) vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.filter(c) function cm.filter(c)
return c:IsCode(10101009) and vgf.RMonsterFilter(c) return c:IsCode(10101009) and vgf.filter.IsR(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetAttacker():IsCode(10101009) and vgf.GetVMonster(tp):IsCode(10101001) return Duel.GetAttacker():IsCode(10101009) and vgf.GetVMonster(tp):IsCode(10101001)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:GetFlagEffectLabel(FLAG_CONDITION)==201 and (vgf.RMonsterCondition(e) or not c:IsLocation(LOCATION_CIRCLE)) return c:GetFlagEffectLabel(FLAG_CONDITION)==201 and (vgf.con.IsR(e) or not c:IsLocation(LOCATION_CIRCLE))
end end
\ No newline at end of file
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
vgd.AbilityAct(c,m,LOCATION_SOUL,cm.op,cm.cost) vgd.AbilityAct(c,m,LOCATION_SOUL,cm.op,cm.cost)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.filter.IsV(Duel.GetAttackTarget())
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.Retire(e:GetHandler())(e,tp,eg,ep,ev,re,r,rp,chk) end if chk==0 then return vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.Retire(e:GetHandler())(e,tp,eg,ep,ev,re,r,rp,chk) end
...@@ -14,6 +14,6 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -14,6 +14,6 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,10000) vgf.AtkUp(c,g,10000)
end end
\ No newline at end of file
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.op,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.op,nil,cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsCode(10102001) return vgf.con.IsR(e) and vgf.GetVMonster(tp):IsCode(10102001)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_CALL,e,tp,cm.filter,tp,LOCATION_SOUL,0,0,1,nil,e,tp) local g=vgf.SelectMatchingCard(HINTMSG_CALL,e,tp,cm.filter,tp,LOCATION_SOUL,0,0,1,nil,e,tp)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, cm.val, vgf.RMonsterCondition) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, cm.val, vgf.con.IsR)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,cm.op,vgf.cost.Retire(10000001),cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,cm.op,vgf.cost.Retire(10000001),cm.con)
end end
function cm.val(e) function cm.val(e)
...@@ -13,9 +13,9 @@ function cm.val(e) ...@@ -13,9 +13,9 @@ function cm.val(e)
return val return val
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and Duel.GetAttacker()==e:GetHandler() return vgf.con.IsR(e) and Duel.GetAttacker()==e:GetHandler()
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,0,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,0,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
\ No newline at end of file
...@@ -6,17 +6,17 @@ function cm.initial_effect(c) ...@@ -6,17 +6,17 @@ function cm.initial_effect(c)
end end
function cm.con(e,c) function cm.con(e,c)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return Duel.GetTurnPlayer()==tp and vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,2,nil) return Duel.GetTurnPlayer()==tp and vgf.con.IsR(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_ORDER,0,2,nil)
end end
function cm.filter(c) function cm.filter(c)
return c:GetFlagEffect(FLAG_IMPRISON)>0 return c:GetFlagEffect(FLAG_IMPRISON)>0
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and vgf.FrontFilter(c) and eg:IsExists(cm.filter2,1,nil,tp) return vgf.con.IsR(e) and vgf.filter.Front(c) and eg:IsExists(cm.filter2,1,nil,tp)
end end
function cm.filter2(c,tp) function cm.filter2(c,tp)
return c:IsPreviousLocation(LOCATION_ORDER) and c:IsPreviousControler(tp) and c:IsControler(1-tp) and vgf.IsSummonTypeR(c) return c:IsPreviousLocation(LOCATION_ORDER) and c:IsPreviousControler(tp) and c:IsControler(1-tp) and vgf.filter.RideOnRCircle(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -17,7 +17,7 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,7 +17,7 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsSummonType,1,nil,SUMMON_TYPE_SELFRIDE) return eg:IsExists(Card.IsSummonType,1,nil,SUMMON_TYPE_SELFRIDE)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and vgf.RMonsterCondition(e) return Duel.GetFlagEffect(tp,m)>0 and vgf.con.IsR(e)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_SOUL,Card.IsSetCard,1,1,0x78),nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_SOUL,Card.IsSetCard,1,1,0x78),nil,vgf.con.RideOnVCircle)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.Retire(vgf.RMonsterFilter,3,3)),nil,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.Retire(vgf.filter.IsR,3,3)),nil,nil,1)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,2,2,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,2,2,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
vgf.AtkUp(c,c,10000) vgf.AtkUp(c,c,10000)
vgf.StarUp(c,c,1) vgf.StarUp(c,c,1)
......
...@@ -5,11 +5,11 @@ function cm.initial_effect(c) ...@@ -5,11 +5,11 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BECOME_TARGET,cm.op2,nil,cm.con2,nil,1) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_BECOME_TARGET,cm.op2,nil,cm.con2,nil,1)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RSummonCondition(e) and vgf.GetVMonster(tp):IsCode(10104001) return vgf.con.RideOnRCircle(e) and vgf.GetVMonster(tp):IsCode(10104001)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,nil)
local tc=vgf.ReturnCard(g) local tc=vgf.ReturnCard(g)
if tc then if tc then
vgf.AtkUp(c,tc,5000) vgf.AtkUp(c,tc,5000)
...@@ -17,7 +17,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -17,7 +17,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsContains(e:GetHandler()) and vgf.VMonsterFilter(re:GetHandler()) and vgf.RMonsterCondition(e) return eg:IsContains(e:GetHandler()) and vgf.filter.IsV(re:GetHandler()) and vgf.con.IsR(e)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,13 +3,13 @@ function cm.initial_effect(c) ...@@ -3,13 +3,13 @@ function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con)
vgd.GlobalCheckEffect(c,m,EVENT_CHAINING,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_CHAINING,cm.checkcon)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.con.RideOnRCircle)
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0 and vgf.RMonsterCondition(e) return Duel.GetFlagEffect(tp,m)>0 and vgf.con.IsR(e)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetFlagEffectLabel(tp,m) local ct=Duel.GetFlagEffectLabel(tp,m)
......
...@@ -12,7 +12,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -12,7 +12,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter(c) function cm.filter(c)
return vgf.FrontFilter(c) and vgf.RMonsterFilter(c) return vgf.filter.Front(c) and vgf.filter.IsR(c)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end if chk==0 then return vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.cost.SoulBlast(1)(e,tp,eg,ep,ev,re,r,rp,chk) end
......
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.checkcon) vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.checkcon)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and Duel.GetFlagEffect(tp,m)>0 return vgf.con.IsR(e) and Duel.GetFlagEffect(tp,m)>0
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -24,5 +24,5 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -24,5 +24,5 @@ function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.checkfilter,1,nil,tp) return eg:IsExists(cm.checkfilter,1,nil,tp)
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsLevelAbove(2) return vgf.filter.IsR(c) and c:IsLevelAbove(2)
end end
\ No newline at end of file
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000) local e1=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
if vgf.GetVMonster(tp):GetOverlayCount()>=10 then if vgf.GetVMonster(tp):GetOverlayCount()>=10 then
Duel.BreakEffect() Duel.BreakEffect()
......
...@@ -10,8 +10,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,8 +10,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local val=5000 local val=5000
if vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,3,c) then val=10000 end if vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,3,c) then val=10000 end
local e1=vgf.AtkUp(c,c,val) local e1=vgf.AtkUp(c,c,val)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
\ No newline at end of file
...@@ -7,11 +7,11 @@ function cm.con(e,tp,eg,ep,ev,re,r,rp) ...@@ -7,11 +7,11 @@ function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION) local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION)
if vgf.GetValueType(ct)~="number" or ct~=10102001 then return false end if vgf.GetValueType(ct)~="number" or ct~=10102001 then return false end
return eg:GetFirst()==c and Duel.GetAttacker()==vgf.GetVMonster(tp) and vgf.RMonsterCondition(e) return eg:GetFirst()==c and Duel.GetAttacker()==vgf.GetVMonster(tp) and vgf.con.IsR(e)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil):GetFirst() local tc=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil):GetFirst()
if tc:IsSkill(SKILL_TWINDRIVE) then if tc:IsSkill(SKILL_TWINDRIVE) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
......
...@@ -12,7 +12,7 @@ end ...@@ -12,7 +12,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=Duel.GetAttackTarget() local tc=Duel.GetAttackTarget()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -22,8 +22,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -22,8 +22,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetCondition(cm.con1) e1:SetCondition(cm.con1)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1,m) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1,m)
end end
end end
......
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return eg:GetFirst()==c and Duel.GetAttacker():IsCode(10000001) and vgf.RMonsterCondition(e) return eg:GetFirst()==c and Duel.GetAttacker():IsCode(10000001) and vgf.con.IsR(e)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -29,5 +29,5 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp) ...@@ -29,5 +29,5 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp)
e:Reset() e:Reset()
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return c:IsControler(tp) and vgf.RMonsterFilter(c) return c:IsControler(tp) and vgf.filter.IsR(c)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,vgf.CounterCharge(1),cm.cost,vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,vgf.CounterCharge(1),cm.cost,vgf.con.IsR,nil,1)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
......
...@@ -16,10 +16,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -16,10 +16,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
if a==0 then Duel.Draw(tp,1,REASON_EFFECT) else vgf.AtkUp(c,c,5000) vgf.StarUp(c,c,1) end if a==0 then Duel.Draw(tp,1,REASON_EFFECT) else vgf.AtkUp(c,c,5000) vgf.StarUp(c,c,1) end
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsLevel(3) return vgf.filter.IsR(c) and c:IsLevel(3)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,4,nil) and vgf.RMonsterCondition(e) return vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,4,nil) and vgf.con.IsR(e)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
......
...@@ -4,11 +4,11 @@ function cm.initial_effect(c) ...@@ -4,11 +4,11 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,nil,cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return not vgf.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,nil) and vgf.RMonsterCondition(e) return not vgf.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,nil) and vgf.con.IsR(e)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if not c:IsRelateToEffect(e) or c:IsFacedown() then return end if not c:IsRelateToEffect(e) or c:IsFacedown() then return end
local e1=vgf.AtkUp(c,c,5000) local e1=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
\ No newline at end of file
...@@ -6,7 +6,7 @@ end ...@@ -6,7 +6,7 @@ end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local tc=vgf.GetVMonster(tp) local tc=vgf.GetVMonster(tp)
return vgf.RSummonCondition(e) and c:IsSummonLocation(LOCATION_HAND) and tc:IsCode(10401008,10401046) return vgf.con.RideOnRCircle(e) and c:IsSummonLocation(LOCATION_HAND) and tc:IsCode(10401008,10401046)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,2) local g=Duel.GetDecktopGroup(tp,2)
......
...@@ -6,11 +6,11 @@ function cm.initial_effect(c) ...@@ -6,11 +6,11 @@ function cm.initial_effect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANMOVE_PARALLEL) e1:SetCode(EFFECT_CANMOVE_PARALLEL)
e1:SetRange(LOCATION_CIRCLE) e1:SetRange(LOCATION_CIRCLE)
e1:SetCondition(vgf.RMonsterCondition) e1:SetCondition(vgf.con.IsR)
e1:SetTargetRange(LOCATION_CIRCLE,0) e1:SetTargetRange(LOCATION_CIRCLE,0)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function cm.tg(e,tc) function cm.tg(e,tc)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.FrontFilter(tc) and vgf.GetColumnGroup(c):IsContains(tc) and tc:IsControler(c:GetControler()) return vgf.filter.Front(tc) and vgf.GetColumnGroup(c):IsContains(tc) and tc:IsControler(c:GetControler())
end end
\ No newline at end of file
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.Order(c,m,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.SoulBlast(1))) vgd.Order(c,m,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.SoulBlast(1)))
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp,chk) function cm.op(e,tp,eg,ep,ev,re,r,rp,chk)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,LOCATION_CIRCLE,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
local ct=bit.ReturnCount(vgf.GetAvailableLocation(tp)) local ct=bit.ReturnCount(vgf.GetAvailableLocation(tp))
......
...@@ -11,10 +11,10 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -11,10 +11,10 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
vgf.op.Rest(c)(e,tp,eg,ep,ev,re,r,rp,chk) vgf.op.Rest(c)(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsCode(10401002) return vgf.con.IsR(e) and vgf.GetVMonster(tp):IsCode(10401002)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
...@@ -23,5 +23,5 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp) ...@@ -23,5 +23,5 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,c,5000) vgf.AtkUp(c,c,5000)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return vgf.GetMatchingGroupCount(vgf.VMonsterFilter,tp,0,LOCATION_CIRCLE,nil)<=1 return vgf.GetMatchingGroupCount(vgf.filter.IsV,tp,0,LOCATION_CIRCLE,nil)<=1
end end
\ No newline at end of file
...@@ -22,5 +22,5 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp) ...@@ -22,5 +22,5 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsSetCard(0x79) return vgf.con.IsR(e) and vgf.GetVMonster(tp):IsSetCard(0x79)
end end
\ No newline at end of file
...@@ -4,13 +4,13 @@ function cm.initial_effect(c) ...@@ -4,13 +4,13 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,nil,cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,nil,cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsSetCard(0x79) return vgf.con.IsR(e) and vgf.GetVMonster(tp):IsSetCard(0x79)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000,nil) local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
Duel.BreakEffect() Duel.BreakEffect()
if vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then if vgf.cost.CounterBlast(1)(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
...@@ -20,5 +20,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -20,5 +20,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.filter(c) function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsLevelBelow(2) return vgf.filter.IsR(c) and c:IsLevelBelow(2)
end end
\ No newline at end of file
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_DROP,cm.filter),vgf.cost.CounterBlast(1),vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_CIRCLE,LOCATION_DROP,cm.filter),vgf.cost.CounterBlast(1),vgf.con.RideOnRCircle)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,vgf.cost.CounterBlast(1),vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,vgf.cost.CounterBlast(1),vgf.con.IsR)
end end
function cm.filter(c) function cm.filter(c)
return c:IsLevel(0) return c:IsLevel(0)
......
...@@ -2,12 +2,7 @@ local cm,m,o=GetID() ...@@ -2,12 +2,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.Order(c,m,cm.op,cm.cost) vgd.Order(c,m,cm.op,cm.cost)
vgf.AddAlchemagicFilter(c,m,cm.filter) VgF.AddAlchemagic(m,"LOCATION_HAND","LOCATION_DROP",1,1,cm.filter)
vgf.AddAlchemagicCountMin(c,m,1)
vgf.AddAlchemagicCountMax(c,m,1)
vgf.AddAlchemagicFrom(c,m,"LOCATION_HAND")
vgf.AddAlchemagicTo(c,m,"LOCATION_DROP")
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,2,REASON_EFFECT) Duel.Draw(tp,2,REASON_EFFECT)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.SoulBlast(1),vgf.RMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.SoulBlast(1),vgf.con.IsR)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION) local ct=Duel.GetFlagEffectLabel(tp,FLAG_CONDITION)
if vgf.GetValueType(ct)=="number" and ct==10102001 then if vgf.GetValueType(ct)=="number" and ct==10102001 then
Duel.BreakEffect() Duel.BreakEffect()
local g=vgf.GetMatchingGroup(vgf.FrontFilter,tp,LOCATION_CIRCLE,0,nil) local g=vgf.GetMatchingGroup(vgf.filter.Front,tp,LOCATION_CIRCLE,0,nil)
vgf.AtkUp(c,g,10000,nil) vgf.AtkUp(c,g,10000,nil)
end end
end end
\ No newline at end of file
...@@ -8,7 +8,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -8,7 +8,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.GetMatchingGroup(cm.filter,tp,LOCATION_CIRCLE,0,nil) local g=vgf.GetMatchingGroup(cm.filter,tp,LOCATION_CIRCLE,0,nil)
return g:GetCount()>0 and vgf.RMonsterCondition(e) return g:GetCount()>0 and vgf.con.IsR(e)
end end
function cm.filter(c) function cm.filter(c)
return c:GetFlagEffect(FLAG_SUPPORT)>0 and c:IsCode(10000001) return c:GetFlagEffect(FLAG_SUPPORT)>0 and c:IsCode(10000001)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,vgf.con.RideOnRCircle)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,3) local g=Duel.GetDecktopGroup(tp,3)
......
...@@ -4,7 +4,7 @@ function cm.initial_effect(c) ...@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.op.Rest(),cm.con) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.op.Rest(),cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetMatchingGroupCount(cm.filter,tp,LOCATION_ORDER,0,nil)<=1 return vgf.con.IsR(e) and vgf.GetMatchingGroupCount(cm.filter,tp,LOCATION_ORDER,0,nil)<=1
end end
function cm.filter(c) function cm.filter(c)
return c:GetFlagEffect(FLAG_IMPRISON)>0 return c:GetFlagEffect(FLAG_IMPRISON)>0
......
...@@ -11,7 +11,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -11,7 +11,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RSummonCondition(e) and vgf.GetVMonster(tp):IsCode(10401008) return vgf.con.RideOnRCircle(e) and vgf.GetVMonster(tp):IsCode(10401008)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,2) local g=Duel.GetDecktopGroup(tp,2)
......
...@@ -4,16 +4,16 @@ function cm.initial_effect(c) ...@@ -4,16 +4,16 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.cost.SoulBlast(1),cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.cost.SoulBlast(1),cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RSummonCondition(e) and vgf.GetVMonster(tp):IsSetCard(0x78) return vgf.con.RideOnRCircle(e) and vgf.GetVMonster(tp):IsSetCard(0x78)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
vgf.AtkUp(c,c,10000,nil) vgf.AtkUp(c,c,10000,nil)
end end
if vgf.cost.And(vgf.cost.SoulBlast(1),vgf.cost.Retire(vgf.RMonsterFilter,1,1,c))(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then if vgf.cost.And(vgf.cost.SoulBlast(1),vgf.cost.Retire(vgf.filter.IsR,1,1,c))(e,tp,eg,ep,ev,re,r,rp,0) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
Duel.BreakEffect() Duel.BreakEffect()
vgf.cost.And(vgf.cost.SoulBlast(1),vgf.cost.Retire(vgf.RMonsterFilter,1,1,c))(e,tp,eg,ep,ev,re,r,rp,0) vgf.cost.And(vgf.cost.SoulBlast(1),vgf.cost.Retire(vgf.filter.IsR,1,1,c))(e,tp,eg,ep,ev,re,r,rp,0)
local g=Duel.GetDecktopGroup(tp,5) local g=Duel.GetDecktopGroup(tp,5)
Duel.ConfirmCards(tp,g) Duel.ConfirmCards(tp,g)
Duel.DisableShuffleCheck() Duel.DisableShuffleCheck()
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.Retire(vgf.RMonsterFilter,1,1,c))) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.cost.And(vgf.cost.CounterBlast(1),vgf.cost.Retire(vgf.filter.IsR,1,1,c)))
vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.chkcon) vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.chkcon)
vgd.AbilityCont(c, m, LOCATION_R_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con) vgd.AbilityCont(c, m, LOCATION_R_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 5000, cm.con)
end end
......
...@@ -4,12 +4,12 @@ function cm.initial_effect(c)--这个函数下面用于注册效果 ...@@ -4,12 +4,12 @@ function cm.initial_effect(c)--这个函数下面用于注册效果
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DECK,cm.filter),vgf.cost.CounterBlast(1),cm.con2) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DECK,cm.filter),vgf.cost.CounterBlast(1),cm.con2)
-- 【自】【V】:这个单位的攻击击中时,抽1张卡,选择你的1张含有「诚意真心」的后防者,这个回合中,力量+5000。 -- 【自】【V】:这个单位的攻击击中时,抽1张卡,选择你的1张含有「诚意真心」的后防者,这个回合中,力量+5000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.operation1,nil,vgf.VMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.operation1,nil,vgf.con.IsV)
end end
function cm.con2(e) function cm.con2(e)
local c=e:GetHandler() local c=e:GetHandler()
local g=c:GetMaterial() local g=c:GetMaterial()
return vgf.VSummonCondition(e) and g:IsExists(Card.IsCode,1,nil,10501036) return vgf.con.RideOnVCircle(e) and g:IsExists(Card.IsCode,1,nil,10501036)
end end
function cm.filter(c) function cm.filter(c)
return c:IsCode(10501021) return c:IsCode(10501021)
...@@ -23,6 +23,6 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp) ...@@ -23,6 +23,6 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.filter1(c) function cm.filter1(c)
return c:IsSetCard(0xb6) and vgf.RMonsterFilter(c) return c:IsSetCard(0xb6) and vgf.filter.IsR(c)
end end
...@@ -2,7 +2,7 @@ local cm,m,o=GetID() ...@@ -2,7 +2,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【起】【V】【1回合1次】:通过【费用】[计数爆发1],选择你的指令区中的1张正面表示的歌曲卡,将其歌唱。(发动歌曲卡的能力,那个能力结算完毕后将那张卡转为背面表示。) -- 【起】【V】【1回合1次】:通过【费用】[计数爆发1],选择你的指令区中的1张正面表示的歌曲卡,将其歌唱。(发动歌曲卡的能力,那个能力结算完毕后将那张卡转为背面表示。)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.CounterBlast(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.CounterBlast(1),vgf.con.IsV,nil,1)
-- 补充一回合一次描述 -- 补充一回合一次描述
-- 【自】【V】:这个单位攻击时,你的指令区中的背面表示的卡有2张以上的话,选择你的指令区中的1张卡正面表示的歌曲卡,将其歌唱,这次战斗中,对手不能将守护者从手牌CALL到G上。 -- 【自】【V】:这个单位攻击时,你的指令区中的背面表示的卡有2张以上的话,选择你的指令区中的1张卡正面表示的歌曲卡,将其歌唱,这次战斗中,对手不能将守护者从手牌CALL到G上。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op2,nil,cm.con2) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op2,nil,cm.con2)
...@@ -17,7 +17,7 @@ function cm.filter(c) ...@@ -17,7 +17,7 @@ function cm.filter(c)
end end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and vgf.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_ORDER,0,2,nil,POS_FACEDOWN) return vgf.filter.IsR(c) and vgf.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_ORDER,0,2,nil,POS_FACEDOWN)
end end
function cm.op2(e,tp,eg,ep,ev,re,r,rp) function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -36,7 +36,7 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp) ...@@ -36,7 +36,7 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp)
e2:SetCode(AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE) e2:SetCode(AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE)
e2:SetTargetRange(0,1) e2:SetTargetRange(0,1)
Duel.RegisterEffect(e2,tp) Duel.RegisterEffect(e2,tp)
vgf.EffectReset(c,{e1,e2},EVENT_BATTLED) vgf.effect.Reset(c,{e1,e2},EVENT_BATTLED)
end end
function cm.actlimit(e,te,tp) function cm.actlimit(e,te,tp)
local tc=te:GetHandler() local tc=te:GetHandler()
......
...@@ -6,20 +6,20 @@ function cm.initial_effect(c) ...@@ -6,20 +6,20 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return Duel.GetFlagEffect(tp,m)>0 and eg:IsContains(e:GetHandler()) and vgf.RMonsterFilter(c) return Duel.GetFlagEffect(tp,m)>0 and eg:IsContains(e:GetHandler()) and vgf.filter.IsR(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=vgf.AtkUp(c,c,5000,nil) local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
if vgf.IsSequence(c,2) then if Card.IsSequence(c,2) then
vgf.CounterCharge(1)(e,tp,eg,ep,ev,re,r,rp) vgf.CounterCharge(1)(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function cm.checkfilter(c,tp,re) function cm.checkfilter(c,tp,re)
return c:IsLocation(LOCATION_ORDER) and c:IsSetCard(0xa040) and c:IsControler(tp) and c:IsPosition(POS_FACEDOWN) and vgf.VMonsterFilter(re:GetHandler()) return c:IsLocation(LOCATION_ORDER) and c:IsSetCard(0xa040) and c:IsControler(tp) and c:IsPosition(POS_FACEDOWN) and vgf.filter.IsV(re:GetHandler())
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.checkfilter,1,nil,tp,re) return eg:IsExists(cm.checkfilter,1,nil,tp,re)
......
...@@ -14,7 +14,7 @@ end ...@@ -14,7 +14,7 @@ end
function cm.con1(e) function cm.con1(e)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.VSummonCondition(e) return vgf.con.RideOnVCircle(e)
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
...@@ -29,12 +29,12 @@ end ...@@ -29,12 +29,12 @@ end
function cm.con2(e,tp,eg,ep,ev,re,r,rp) function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.VMonsterCondition(e) and vgf.WhiteWings(e) return vgf.con.IsV(e) and vgf.WhiteWings(e)
end end
function cm.op2(e,tp,eg,ep,ev,re,r,rp) function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
vgf.StarUp(c,c,1) vgf.StarUp(c,c,1)
end end
function cm.con3(e) function cm.con3(e)
return vgf.VMonsterCondition(e) and vgf.BlackWings(e) return vgf.con.IsV(e) and vgf.BlackWings(e)
end end
\ No newline at end of file
...@@ -17,11 +17,11 @@ end ...@@ -17,11 +17,11 @@ end
function cm.con1(e) function cm.con1(e)
local tp = e:GetHandlerPlayer() local tp = e:GetHandlerPlayer()
return vgf.IsExistingMatchingCard(cm.filter2,tp,LOCATION_CIRCLE,0,3,nil) and vgf.RMonsterCondition(e) and Duel.GetTurnPlayer()==tp return vgf.IsExistingMatchingCard(cm.filter2,tp,LOCATION_CIRCLE,0,3,nil) and vgf.con.IsR(e) and Duel.GetTurnPlayer()==tp
end end
function cm.filter2(c) function cm.filter2(c)
return c:IsSetCard(0xa013) and vgf.RMonsterFilter(c) return c:IsSetCard(0xa013) and vgf.filter.IsR(c)
end end
function cm.filter3(c) function cm.filter3(c)
......
...@@ -10,12 +10,12 @@ end ...@@ -10,12 +10,12 @@ end
function cm.con1(e) function cm.con1(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.VMonsterCondition(e) and not vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,nil) and Duel.GetTurnPlayer()==tp return vgf.con.IsV(e) and not vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,nil) and Duel.GetTurnPlayer()==tp
end end
function cm.con2(e) function cm.con2(e)
local c=e:GetHandler() local c=e:GetHandler()
local g=c:GetMaterial() local g=c:GetMaterial()
return vgf.VSummonCondition(e) and g:IsExists(Card.IsCode,1,nil,10501090) return vgf.con.RideOnVCircle(e) and g:IsExists(Card.IsCode,1,nil,10501090)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,7) local g=Duel.GetDecktopGroup(tp,7)
......
...@@ -11,7 +11,7 @@ function cm.con1(e) ...@@ -11,7 +11,7 @@ function cm.con1(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
local a=vgf.IsExistingMatchingCard(cm.filter1,tp,LOCATION_ORDER,0,1,c) local a=vgf.IsExistingMatchingCard(cm.filter1,tp,LOCATION_ORDER,0,1,c)
return vgf.VMonsterCondition(e) and a and Duel.GetTurnPlayer()==tp return vgf.con.IsV(e) and a and Duel.GetTurnPlayer()==tp
end end
function cm.filter1(c) function cm.filter1(c)
......
...@@ -9,7 +9,7 @@ function cm.initial_effect(c) ...@@ -9,7 +9,7 @@ function cm.initial_effect(c)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp and vgf.VMonsterCondition(e) return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp and vgf.con.IsV(e)
end end
function cm.val(e) function cm.val(e)
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【自】:这个单位登场到R时,选择你的弃牌区中的相互同名的至多2张宝石卡,将1张放置到牌堆底,其余的卡放置到灵魂里。 -- 【自】:这个单位登场到R时,选择你的弃牌区中的相互同名的至多2张宝石卡,将1张放置到牌堆底,其余的卡放置到灵魂里。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -6,7 +6,7 @@ function cm.initial_effect(c) ...@@ -6,7 +6,7 @@ function cm.initial_effect(c)
vgd.CannotBeAttackTarget(c, m, LOCATION_V_CIRCLE, EFFECT_TYPE_SINGLE, cm.val, vgf.BlackWings) vgd.CannotBeAttackTarget(c, m, LOCATION_V_CIRCLE, EFFECT_TYPE_SINGLE, cm.val, vgf.BlackWings)
end end
function cm.val(e,c) function cm.val(e,c)
return vgf.RMonsterFilter(c) return vgf.filter.IsR(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -9,7 +9,7 @@ end ...@@ -9,7 +9,7 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler() local c = e:GetHandler()
local ph = Duel.GetCurrentPhase() local ph = Duel.GetCurrentPhase()
return vgf.RSummonCondition(e) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) and Duel.GetTurnPlayer() == tp return vgf.con.RideOnRCircle(e) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) and Duel.GetTurnPlayer() == tp
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -19,5 +19,5 @@ end ...@@ -19,5 +19,5 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler() local c = e:GetHandler()
return vgf.RSummonCondition(e) and c:IsPreviousLocation(LOCATION_HAND) return vgf.con.RideOnRCircle(e) and c:IsPreviousLocation(LOCATION_HAND)
end end
\ No newline at end of file
...@@ -3,5 +3,5 @@ local cm,m,o=GetID() ...@@ -3,5 +3,5 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【自】:这个单位登场到R时,通过【费用】[灵魂爆发1,将手牌中的1张卡舍弃],选择你的弃牌区中的1张宝石卡,加入手牌。 -- 【自】:这个单位登场到R时,通过【费用】[灵魂爆发1,将手牌中的1张卡舍弃],选择你的弃牌区中的1张宝石卡,加入手牌。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DROP,Card.IsSetCard,1,1,0xc040),vgf.cost.And(vgf.cost.SoulBlast(1),vgf.cost.Discard(1)),vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.op.CardsFromTo(REASON_EFFECT,LOCATION_HAND,LOCATION_DROP,Card.IsSetCard,1,1,0xc040),vgf.cost.And(vgf.cost.SoulBlast(1),vgf.cost.Discard(1)),vgf.con.RideOnRCircle)
end end
\ No newline at end of file
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【自】:这个单位登场到R时,通过【费用】[计数爆发1,将手牌中的2张普通单位卡公开,按希望的顺序放置到牌堆底],选择你的1张先导者,从牌堆里探寻至多1张与那个单位同名的卡,公开后加入手牌,然后牌堆洗切。 -- 【自】:这个单位登场到R时,通过【费用】[计数爆发1,将手牌中的2张普通单位卡公开,按希望的顺序放置到牌堆底],选择你的1张先导者,从牌堆里探寻至多1张与那个单位同名的卡,公开后加入手牌,然后牌堆洗切。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,cm.cost,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -12,5 +12,5 @@ function cm.filter(c) ...@@ -12,5 +12,5 @@ function cm.filter(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RSummonCondition(e) and vgf.WhiteWings(e) return vgf.con.RideOnRCircle(e) and vgf.WhiteWings(e)
end end
\ No newline at end of file
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -10,7 +10,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,nil,tp,LOCATION_CIRCLE,0,1,1,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
local tc=g:GetFirst() local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then if vgf.filter.IsR(tc) then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,8 +19,8 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then elseif vgf.filter.IsV(tc) then
tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1) tc:RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY,RESET_EVENT+RESETS_STANDARD,0,1)
end end
end end
......
...@@ -8,8 +8,8 @@ end ...@@ -8,8 +8,8 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler() local c = e:GetHandler()
local ph = Duel.GetCurrentPhase() local ph = Duel.GetCurrentPhase()
return vgf.BackFilter(c) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) and Duel.GetTurnPlayer() == tp and eg:IsExists(cm.filter,1,c,tp) return vgf.filter.Back(c) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) and Duel.GetTurnPlayer() == tp and eg:IsExists(cm.filter,1,c,tp)
end end
function cm.filter(c,tp) function cm.filter(c,tp)
return vgf.IsSummonTypeR(c) and c:IsControler(tp) return vgf.filter.RideOnRCircle(c) and c:IsControler(tp)
end end
\ No newline at end of file
...@@ -14,6 +14,6 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -14,6 +14,6 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.VMonsterFilter(Duel.GetAttacker()) return vgf.con.IsR(e) and vgf.filter.IsV(Duel.GetAttacker())
end end
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【自】:这个单位登场到R时,选择你其他的1个单位,这个回合中,力量+10000。 -- 【自】:这个单位登场到R时,选择你其他的1个单位,这个回合中,力量+10000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -22,7 +22,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -22,7 +22,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.filter(c) function cm.filter(c)
return c:IsLevelAbove(3) and vgf.VMonsterFilter(c) return c:IsLevelAbove(3) and vgf.filter.IsV(c)
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -20,7 +20,7 @@ end ...@@ -20,7 +20,7 @@ end
function cm.op2(e,tp,eg,ep,ev,re,r,rp) function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.GetMatchingGroup(vgf.FrontFilter,tp,LOCATION_CIRCLE,0,nil) local g=vgf.GetMatchingGroup(vgf.filter.Front,tp,LOCATION_CIRCLE,0,nil)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
end end
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这个回合中,这个单位的力量+5000。 -- 【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这个回合中,这个单位的力量+5000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,vgf.cost.CounterBlast(1),vgf.RMonsterCondition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op,vgf.cost.CounterBlast(1),vgf.con.IsR)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler() local c = e:GetHandler()
......
...@@ -16,7 +16,7 @@ end ...@@ -16,7 +16,7 @@ end
function cm.con(e) function cm.con(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and Duel.GetFlagEffect(tp,m)>0 return vgf.con.IsR(e) and Duel.GetFlagEffect(tp,m)>0
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.RSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnRCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetFlagEffectLabel(tp,FLAG_ORDER_COUNT_LIMIT) local ct=Duel.GetFlagEffectLabel(tp,FLAG_ORDER_COUNT_LIMIT)
......
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return not c:IsPreviousLocation(LOCATION_HAND) and vgf.RSummonCondition(e) return not c:IsPreviousLocation(LOCATION_HAND) and vgf.con.RideOnRCircle(e)
end end
--对手要从手牌将卡CALL到G上之际,不将2张以上同时CALL的话则不能CALL出场。 --对手要从手牌将卡CALL到G上之际,不将2张以上同时CALL的话则不能CALL出场。
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -14,5 +14,5 @@ end ...@@ -14,5 +14,5 @@ end
function cm.con(e) function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and Duel.GetTurnPlayer()==tp return vgf.con.IsR(e) and Duel.GetTurnPlayer()==tp
end end
\ No newline at end of file
...@@ -15,12 +15,12 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -15,12 +15,12 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
g=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) g=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e)
local e1=vgf.AtkUp(c,g,10000) local e1=vgf.AtkUp(c,g,10000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=Group.FromCards(Duel.GetAttackTarget()) local g=Group.FromCards(Duel.GetAttackTarget())
return vgf.RMonsterCondition(c) and g:IsExists(Card.IsSetCard,1,nil,0xb6) return vgf.con.IsR(c) and g:IsExists(Card.IsSetCard,1,nil,0xb6)
end end
\ No newline at end of file
...@@ -10,7 +10,7 @@ end ...@@ -10,7 +10,7 @@ end
function cm.con(e) function cm.con(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and Duel.GetFlagEffect(tp,m)>0 and Duel.GetFlagEffect(tp,m+1)>0 return vgf.con.IsR(e) and Duel.GetFlagEffect(tp,m)>0 and Duel.GetFlagEffect(tp,m+1)>0
end end
function cm.checkcon1(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon1(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -4,12 +4,12 @@ function cm.initial_effect(c) ...@@ -4,12 +4,12 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.SoulBlast(1),cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.cost.SoulBlast(1),cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.BlackWings(e) return vgf.con.IsR(e) and vgf.BlackWings(e)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp) vgf.op.SoulCharge(1)(e,tp,eg,ep,ev,re,r,rp)
local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
local tc=vgf.ReturnCard(g) local tc=vgf.ReturnCard(g)
if tc then if tc then
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
...@@ -19,7 +19,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -19,7 +19,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
e1:SetLabel(e:GetHandlerPlayer()) e1:SetLabel(e:GetHandlerPlayer())
e1:SetCondition(cm.con1) e1:SetCondition(cm.con1)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_PHASE+PHASE_DRAW,cm.con2,e:GetHandlerPlayer()) vgf.effect.Reset(c,e1,EVENT_PHASE+PHASE_DRAW,cm.con2,e:GetHandlerPlayer())
end end
end end
function cm.con1(e,tp,eg,ep,ev,re,r,rp) function cm.con1(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
end end
function cm.con1(e) function cm.con1(e)
return cm.con2(e) and vgf.RMonsterCondition(e) return cm.con2(e) and vgf.con.IsR(e)
end end
function cm.con2(e) function cm.con2(e)
...@@ -18,5 +18,5 @@ function cm.con2(e) ...@@ -18,5 +18,5 @@ function cm.con2(e)
end end
function cm.filter(c) function cm.filter(c)
return c:IsSetCard(0xa013) and vgf.RMonsterFilter(c) return c:IsSetCard(0xa013) and vgf.filter.IsR(c)
end end
...@@ -21,5 +21,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -21,5 +21,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.BlackWings(e) and vgf.RSummonCondition(e) return vgf.BlackWings(e) and vgf.con.RideOnRCircle(e)
end end
\ No newline at end of file
...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.filter(c) function cm.filter(c)
return c:IsSetCard(0xb6) and vgf.RMonsterFilter(c) return c:IsSetCard(0xb6) and vgf.filter.IsR(c)
end end
\ No newline at end of file
...@@ -8,7 +8,7 @@ end ...@@ -8,7 +8,7 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler() local c = e:GetHandler()
local ph = Duel.GetCurrentPhase() local ph = Duel.GetCurrentPhase()
return vgf.RSummonCondition(e) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) and Duel.GetTurnPlayer() == tp return vgf.con.RideOnRCircle(e) and (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) and Duel.GetTurnPlayer() == tp
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
...@@ -16,6 +16,6 @@ end ...@@ -16,6 +16,6 @@ end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return c:IsRelateToEffect(e) end if chk==0 then return c:IsRelateToEffect(e) end
local rc=vgf.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,nil):GetFirst() local rc=vgf.GetMatchingGroup(vgf.filter.IsV,tp,LOCATION_CIRCLE,0,nil):GetFirst()
vgf.Sendto(LOCATION_SOUL,c,rc) vgf.Sendto(LOCATION_SOUL,c,rc)
end end
\ No newline at end of file
...@@ -8,5 +8,5 @@ end ...@@ -8,5 +8,5 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler() local c = e:GetHandler()
return vgf.RSummonCondition(e) and c:IsPreviousLocation(LOCATION_HAND) and vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,3,c) return vgf.con.RideOnRCircle(e) and c:IsPreviousLocation(LOCATION_HAND) and vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,3,c)
end end
...@@ -18,5 +18,5 @@ function cm.initial_effect(c) ...@@ -18,5 +18,5 @@ function cm.initial_effect(c)
end end
function cm.con(e) function cm.con(e)
local c = e:GetHandler() local c = e:GetHandler()
return vgf.BackFilter(c) return vgf.filter.Back(c)
end end
...@@ -14,5 +14,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -14,5 +14,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.filter(c) function cm.filter(c)
return c:IsPosition(POS_FACEUP_ATTACK) and vgf.BackFilter(c) return c:IsPosition(POS_FACEUP_ATTACK) and vgf.filter.Back(c)
end end
...@@ -10,5 +10,5 @@ function cm.con(e) ...@@ -10,5 +10,5 @@ function cm.con(e)
local c = e:GetHandler() local c = e:GetHandler()
local tp = e:GetHandlerPlayer() local tp = e:GetHandlerPlayer()
local a = vgf.IsExistingMatchingCard(nil,tp,LOCATION_ORDER,0,1,nil) local a = vgf.IsExistingMatchingCard(nil,tp,LOCATION_ORDER,0,1,nil)
return vgf.RMonsterCondition(e) and a and Duel.GetTurnPlayer()==tp return vgf.con.IsR(e) and a and Duel.GetTurnPlayer()==tp
end end
...@@ -14,5 +14,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -14,5 +14,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and eg:IsPreviousLocation(LOCATION_CIRCLE) return vgf.con.IsR(e) and eg:IsPreviousLocation(LOCATION_CIRCLE)
end end
...@@ -22,5 +22,5 @@ function cm.filter(c) ...@@ -22,5 +22,5 @@ function cm.filter(c)
end end
function cm.filter1(c) function cm.filter1(c)
return c:IsSetCard(0xa013) and vgf.RMonsterFilter(c) return c:IsSetCard(0xa013) and vgf.filter.IsR(c)
end end
\ No newline at end of file
...@@ -9,6 +9,6 @@ end ...@@ -9,6 +9,6 @@ end
function cm.con1(e) function cm.con1(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(nil,tp,LOCATION_ORDER,0,2,nil) and Duel.GetTurnPlayer()==tp return vgf.con.IsR(e) and vgf.IsExistingMatchingCard(nil,tp,LOCATION_ORDER,0,2,nil) and Duel.GetTurnPlayer()==tp
end end
...@@ -10,7 +10,7 @@ function cm.con(e) ...@@ -10,7 +10,7 @@ function cm.con(e)
local c=e:GetHandler() local c=e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
local a=vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1) local a=vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1)
return vgf.RMonsterCondition(e) and a and Duel.GetTurnPlayer()==tp return vgf.con.IsR(e) and a and Duel.GetTurnPlayer()==tp
end end
function cm.filter(c) function cm.filter(c)
......
...@@ -7,7 +7,7 @@ function cm.initial_effect(c) ...@@ -7,7 +7,7 @@ function cm.initial_effect(c)
e1:SetCode(AFFECT_CODE_OVERLAY_INSTEAD_WHEN_RIDE) e1:SetCode(AFFECT_CODE_OVERLAY_INSTEAD_WHEN_RIDE)
e1:SetRange(LOCATION_CIRCLE) e1:SetRange(LOCATION_CIRCLE)
e1:SetCondition(function (e,tp,eg,ep,ev,re,r,rp) e1:SetCondition(function (e,tp,eg,ep,ev,re,r,rp)
return vgf.WhiteWings(e) and vgf.VMonsterCondition(e) return vgf.WhiteWings(e) and vgf.con.IsV(e)
end) end)
e1:SetTargetRange(1,0) e1:SetTargetRange(1,0)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -17,13 +17,13 @@ function cm.initial_effect(c) ...@@ -17,13 +17,13 @@ function cm.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_CIRCLE) e2:SetRange(LOCATION_CIRCLE)
e2:SetCondition(function (e,tp,eg,ep,ev,re,r,rp) e2:SetCondition(function (e,tp,eg,ep,ev,re,r,rp)
return vgf.BlackWings(e) and vgf.VMonsterCondition(e) return vgf.BlackWings(e) and vgf.con.IsV(e)
end) end)
e2:SetValue(function (e,tc) e2:SetValue(function (e,tc)
return tc:IsLevelBelow(1) and vgf.RMonsterFilter(tc) return tc:IsLevelBelow(1) and vgf.filter.IsR(tc)
end) end)
c:RegisterEffect(e2) c:RegisterEffect(e2)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.VSummonCondition) vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,nil,vgf.con.RideOnVCircle)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,1) local g=Duel.GetDecktopGroup(tp,1)
......
...@@ -8,7 +8,7 @@ end ...@@ -8,7 +8,7 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local ca = Duel.GetAttacker() local ca = Duel.GetAttacker()
return vgf.VMonsterFilter(ca) and eg:GetFirst()==e:GetHandler() return vgf.filter.IsV(ca) and eg:GetFirst()==e:GetHandler()
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -23,5 +23,5 @@ function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -23,5 +23,5 @@ function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
vgf.Sendto(LOCATION_SOUL,g,rc) vgf.Sendto(LOCATION_SOUL,g,rc)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp and vgf.RMonsterCondition(e) return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp and vgf.con.IsR(e)
end end
...@@ -7,7 +7,7 @@ function cm.initial_effect(c) ...@@ -7,7 +7,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterCondition(e) and eg:IsExists(cm.filter,1,nil,tp,c) return vgf.con.IsR(e) and eg:IsExists(cm.filter,1,nil,tp,c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,11 +3,11 @@ local cm,m,o=GetID() ...@@ -3,11 +3,11 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
-- 【起】【R】【1回合1次】:通过【费用】[计数爆发1],选择你的1张先导者,这个回合中,力量+5000。 -- 【起】【R】【1回合1次】:通过【费用】[计数爆发1],选择你的1张先导者,这个回合中,力量+5000。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.CounterBlast(1),vgf.RMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.CounterBlast(1),vgf.con.IsR,nil,1)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
-- 选择你的1张先导者 -- 选择你的1张先导者
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
end end
\ No newline at end of file
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RMonsterFilter(c) and eg:IsContains(c) return vgf.filter.IsR(c) and eg:IsContains(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -9,7 +9,7 @@ function cm.initial_effect(c) ...@@ -9,7 +9,7 @@ function cm.initial_effect(c)
end end
function cm.con1(e) function cm.con1(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and Duel.GetFlagEffect(tp,m)>0 return vgf.con.IsR(e) and Duel.GetFlagEffect(tp,m)>0
end end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp) function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp return re:IsHasType(EFFECT_TYPE_ACTIVATE) and rp==tp
......
...@@ -9,12 +9,12 @@ function cm.initial_effect(c) ...@@ -9,12 +9,12 @@ function cm.initial_effect(c)
end end
function cm.con1(e) function cm.con1(e)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.VMonsterCondition(e) and not vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,nil) and Duel.GetTurnPlayer()==tp return vgf.con.IsV(e) and not vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,nil) and Duel.GetTurnPlayer()==tp
end end
function cm.con2(e) function cm.con2(e)
local c=e:GetHandler() local c=e:GetHandler()
local g=c:GetMaterial() local g=c:GetMaterial()
return vgf.VSummonCondition(e) and g:IsExists(Card.IsCode,1,nil,10501102) return vgf.con.RideOnVCircle(e) and g:IsExists(Card.IsCode,1,nil,10501102)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,7) local g=Duel.GetDecktopGroup(tp,7)
......
...@@ -7,5 +7,5 @@ function cm.initial_effect(c) ...@@ -7,5 +7,5 @@ function cm.initial_effect(c)
vgd.AbilityCont(c, m, LOCATION_G_CIRCLE, EFFECT_TYPE_SINGLE, 5000, EFFECT_UPDATE_DEFENSE, vgf.WhiteWings) vgd.AbilityCont(c, m, LOCATION_G_CIRCLE, EFFECT_TYPE_SINGLE, 5000, EFFECT_UPDATE_DEFENSE, vgf.WhiteWings)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.WhiteWings(e) and vgf.RMonsterCondition(e) return vgf.WhiteWings(e) and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -7,13 +7,13 @@ function cm.initial_effect(c) ...@@ -7,13 +7,13 @@ function cm.initial_effect(c)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,tp,vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,tp,vgf.filter.IsR,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.RSummonCondition(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1,c) return vgf.con.RideOnRCircle(e) and vgf.IsExistingMatchingCard(cm.filter,tp,LOCATION_CIRCLE,0,1,c)
end end
function cm.filter(c) function cm.filter(c)
return c:IsSetCard(0xa013) and vgf.RMonsterFilter(c) return c:IsSetCard(0xa013) and vgf.filter.IsR(c)
end end
\ No newline at end of file
...@@ -7,6 +7,6 @@ function cm.initial_effect(c) ...@@ -7,6 +7,6 @@ function cm.initial_effect(c)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local ct1=bit.ReturnCount(vgf.GetAvailableLocation(tp)) local ct1=bit.ReturnCount(vgf.GetAvailableLocation(tp))
local ct2=vgf.GetMatchingGroupCount(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,nil) local ct2=vgf.GetMatchingGroupCount(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,nil)
return ct1-ct2>=3 return ct1-ct2>=3
end end
\ No newline at end of file
...@@ -8,5 +8,5 @@ end ...@@ -8,5 +8,5 @@ end
function cm.con1(e) function cm.con1(e)
local c= e:GetHandler() local c= e:GetHandler()
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,3,c) return vgf.con.IsR(e) and vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,3,c)
end end
\ No newline at end of file
...@@ -15,5 +15,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -15,5 +15,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return eg:IsContains(c) and vgf.WhiteWings(e) and vgf.RMonsterCondition(e) return eg:IsContains(c) and vgf.WhiteWings(e) and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -7,5 +7,5 @@ function cm.initial_effect(c) ...@@ -7,5 +7,5 @@ function cm.initial_effect(c)
vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 10000, cm.con) vgd.AbilityCont(c, m, LOCATION_CIRCLE, EFFECT_TYPE_SINGLE, EFFECT_UPDATE_ATTACK, 10000, cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.WhiteWings(e) and Duel.GetTurnPlayer()==tp and vgf.RMonsterCondition(e) return vgf.WhiteWings(e) and Duel.GetTurnPlayer()==tp and vgf.con.IsR(e)
end end
\ No newline at end of file
...@@ -13,7 +13,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -13,7 +13,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
g=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e) g=g:FilterSelect(tp,Card.IsCanBeEffectTarget,1,1,nil,e)
local e1=vgf.AtkUp(c,g,30000) local e1=vgf.AtkUp(c,g,30000)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -21,7 +21,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -21,7 +21,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local ct=vgf.GetMatchingGroupCount(cm.filter,tp,LOCATION_CIRCLE,0,c) local ct=vgf.GetMatchingGroupCount(cm.filter,tp,LOCATION_CIRCLE,0,c)
local atk=5000*ct local atk=5000*ct
local e1=vgf.AtkUp(c,g,atk) local e1=vgf.AtkUp(c,g,atk)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_SET) e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_SET)
...@@ -32,7 +32,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -32,7 +32,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterEffect(e4,tp) Duel.RegisterEffect(e4,tp)
end end
function cm.repfilter(c,tp) function cm.repfilter(c,tp)
return c:IsControler(tp) and (c:IsLocation(LOCATION_G_CIRCLE) or vgf.RMonsterFilter(c)) and c:GetDestination()==LOCATION_DROP and c:IsType(TYPE_UNIT) and c:IsFaceup() and not cm.filter(c) return c:IsControler(tp) and (c:IsLocation(LOCATION_G_CIRCLE) or vgf.filter.IsR(c)) and c:GetDestination()==LOCATION_DROP and c:IsType(TYPE_UNIT) and c:IsFaceup() and not cm.filter(c)
end end
function cm.reptg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.reptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return eg:IsExists(cm.repfilter,1,nil,tp) end if chk==0 then return eg:IsExists(cm.repfilter,1,nil,tp) end
......
...@@ -8,10 +8,10 @@ end ...@@ -8,10 +8,10 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if vgf.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_CIRCLE,0,3,nil) then if vgf.IsExistingMatchingCard(vgf.filter.IsR,tp,LOCATION_CIRCLE,0,3,nil) then
local ac=Duel.GetAttackTarget() local ac=Duel.GetAttackTarget()
local e1=vgf.AtkUp(c,ac,15000,nil) local e1=vgf.AtkUp(c,ac,15000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED) vgf.effect.Reset(c,e1,EVENT_BATTLED)
end end
end end
...@@ -7,7 +7,7 @@ end ...@@ -7,7 +7,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.VMonsterFilter,tp,LOCATION_CIRCLE,0,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.filter.IsV,tp,LOCATION_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,5000) vgf.AtkUp(c,g,5000)
Duel.ChangePosition(c,POS_FACEDOWN_ATTACK) Duel.ChangePosition(c,POS_FACEDOWN_ATTACK)
end end
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【起】【V】【1回合1次】:通过【费用】[计数爆发1],从你的牌堆里探寻至多1张与这个单位同名的卡,公开后加入手牌,然后牌堆洗切,这个回合中,这个单位的力量+10000。 --【起】【V】【1回合1次】:通过【费用】[计数爆发1],从你的牌堆里探寻至多1张与这个单位同名的卡,公开后加入手牌,然后牌堆洗切,这个回合中,这个单位的力量+10000。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(1),vgf.con.IsV,nil,1)
--【自】【V】:这个单位攻击先导者时,通过【费用】[能量爆发4],选择对手的一张后方者,退场,这次战斗中,这个单位的力量+5000,⭐+1。 --【自】【V】:这个单位攻击先导者时,通过【费用】[能量爆发4],选择对手的一张后方者,退场,这次战斗中,这个单位的力量+5000,⭐+1。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,vgf.cost.EnergyBlast(4),cm.condition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,vgf.cost.EnergyBlast(4),cm.condition)
end end
...@@ -22,12 +22,12 @@ end ...@@ -22,12 +22,12 @@ end
--检测打的是不是v --检测打的是不是v
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.VMonsterFilter(c) and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.filter.IsV(c) and vgf.filter.IsV(Duel.GetAttackTarget())
end end
--效果二处理 --效果二处理
function cm.operation2(e,tp,eg,ep,ev,re,r,rp) function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_CIRCLE,1,1,nil) local g=vgf.SelectMatchingCard(HINTMSG_LEAVEFIELD,e,tp,vgf.filter.IsR,tp,0,LOCATION_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
if c:IsRelateToEffect(e) and c:IsFaceup() then if c:IsRelateToEffect(e) and c:IsFaceup() then
vgf.AtkUp(c,c,5000) vgf.AtkUp(c,c,5000)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.CounterBlast(1),vgf.VMonsterCondition) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.op,vgf.cost.CounterBlast(1),vgf.con.IsV)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op1,vgf.cost.EnergyBlast(4),cm.con) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op1,vgf.cost.EnergyBlast(4),cm.con)
end end
function cm.op(e,tp,eg,ep,ev,re,r,rp) function cm.op(e,tp,eg,ep,ev,re,r,rp)
...@@ -15,7 +15,7 @@ function cm.filter(c) ...@@ -15,7 +15,7 @@ function cm.filter(c)
return c:IsCode(m) return c:IsCode(m)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.VMonsterCondition(e) and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.con.IsV(e) and vgf.filter.IsV(Duel.GetAttackTarget())
end end
function cm.op1(e,tp,eg,ep,ev,re,r,rp) function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【起】【V】【1回合1次】:通过【费用】[计数爆发1],从你的牌堆里探寻至多1张与这个单位同名的卡,公开后加入手牌,然后牌堆洗切,这个回合中,这个单位的力量+10000。 --【起】【V】【1回合1次】:通过【费用】[计数爆发1],从你的牌堆里探寻至多1张与这个单位同名的卡,公开后加入手牌,然后牌堆洗切,这个回合中,这个单位的力量+10000。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(1),vgf.con.IsV,nil,1)
--【自】【V】:这个单位攻击先导者时,通过【费用】[能量爆发4],选择你的弃牌区中的1张等级3以下的普通单位卡,CALL到R上,这个回合中,那个单位的力量+10000。 --【自】【V】:这个单位攻击先导者时,通过【费用】[能量爆发4],选择你的弃牌区中的1张等级3以下的普通单位卡,CALL到R上,这个回合中,那个单位的力量+10000。
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,vgf.cost.EnergyBlast(4),cm.condition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,vgf.cost.EnergyBlast(4),cm.condition)
end end
...@@ -22,7 +22,7 @@ end ...@@ -22,7 +22,7 @@ end
--效果二检测被打的是v --效果二检测被打的是v
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.VMonsterFilter(c) and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.filter.IsV(c) and vgf.filter.IsV(Duel.GetAttackTarget())
end end
--效果二处理 --效果二处理
function cm.operation2(e,tp,eg,ep,ev,re,r,rp) function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -3,7 +3,7 @@ local cm,m,o=GetID() ...@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
--【起】【V】【1回合1次】:通过【费用】[计数爆发1],从你的牌堆里探寻至多1张与这个单位同名的卡,公开后加入手牌,然后牌堆洗切,这个回合中,这个单位的力量+10000。 --【起】【V】【1回合1次】:通过【费用】[计数爆发1],从你的牌堆里探寻至多1张与这个单位同名的卡,公开后加入手牌,然后牌堆洗切,这个回合中,这个单位的力量+10000。
vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(1),vgf.VMonsterCondition,nil,1) vgd.AbilityAct(c,m,LOCATION_CIRCLE,cm.operation,vgf.cost.CounterBlast(1),vgf.con.IsV,nil,1)
--自】【V】:这个单位攻击先导者时,通过【费用】[能量爆发4],选择你的1张后防者,返回手牌,选择你的手牌中的至多1张等级3以下的单位卡,CALL到不存在单位的R上,这个回合中,那个单位的力量+10000。(能量爆发4是通过消费4个能量来支付!) --自】【V】:这个单位攻击先导者时,通过【费用】[能量爆发4],选择你的1张后防者,返回手牌,选择你的手牌中的至多1张等级3以下的单位卡,CALL到不存在单位的R上,这个回合中,那个单位的力量+10000。(能量爆发4是通过消费4个能量来支付!)
vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,vgf.cost.EnergyBlast(4),cm.condition) vgd.AbilityAuto(c,m,LOCATION_CIRCLE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,vgf.cost.EnergyBlast(4),cm.condition)
end end
...@@ -22,7 +22,7 @@ end ...@@ -22,7 +22,7 @@ end
--效果二检测被打的是v --效果二检测被打的是v
function cm.condition(e,tp,eg,ep,ev,re,r,rp) function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return vgf.VMonsterFilter(c) and vgf.VMonsterFilter(Duel.GetAttackTarget()) return vgf.filter.IsV(c) and vgf.filter.IsV(Duel.GetAttackTarget())
end end
--效果二处理 --效果二处理
function cm.operation2(e,tp,eg,ep,ev,re,r,rp) function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -25,7 +25,7 @@ function VgD.Rule(c) ...@@ -25,7 +25,7 @@ function VgD.Rule(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCountLimit(1, VgID + 2) e1:SetCountLimit(1, VgID + 2)
e1:SetCondition(function (e, tp, eg, ep, ev, re, r, rp) e1:SetCondition(function (e, tp, eg, ep, ev, re, r, rp)
return VgF.RuleTurnCondtion(e) and VgF.RuleCardCondtion(e) return VgF.Condition.FirstTurn(e) and VgF.Condition.FirstCard(e)
end) end)
e1:SetOperation(function (e, tp, eg, ep, ev, re, r, rp) e1:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
local ct = Duel.GetFieldGroupCount(tp, LOCATION_HAND, 0) local ct = Duel.GetFieldGroupCount(tp, LOCATION_HAND, 0)
...@@ -61,7 +61,7 @@ function VgD.Rule(c) ...@@ -61,7 +61,7 @@ function VgD.Rule(c)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e3:SetRange(LOCATION_ALL) e3:SetRange(LOCATION_ALL)
e3:SetCountLimit(1, VgID + 3) e3:SetCountLimit(1, VgID + 3)
e3:SetCondition(VgF.RuleCardCondtion) e3:SetCondition(VgF.Condition.FirstCard)
e3:SetOperation(function (e, tp, eg, ep, ev, re, r, rp) e3:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
local tc = e:GetHandler() local tc = e:GetHandler()
if Duel.GetTurnPlayer() == tp then if Duel.GetTurnPlayer() == tp then
...@@ -76,14 +76,14 @@ function VgD.Rule(c) ...@@ -76,14 +76,14 @@ function VgD.Rule(c)
e10:SetRange(LOCATION_ALL) e10:SetRange(LOCATION_ALL)
e10:SetTargetRange(1, 0) e10:SetTargetRange(1, 0)
e10:SetValue(100) e10:SetValue(100)
e10:SetCondition(VgF.RuleCardCondtion) e10:SetCondition(VgF.Condition.FirstCard)
c:RegisterEffect(e10) c:RegisterEffect(e10)
local e11 = Effect.CreateEffect(c) local e11 = Effect.CreateEffect(c)
e11:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_SET) e11:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_SET)
e11:SetCode(EVENT_ADJUST) e11:SetCode(EVENT_ADJUST)
e11:SetRange(LOCATION_ALL) e11:SetRange(LOCATION_ALL)
e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e11:SetCondition(VgF.RuleCardCondtion) e11:SetCondition(VgF.Condition.FirstCard)
e11:SetOperation(function (e, tp, eg, ep, ev, re, r, rp) e11:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
if Duel.GetCurrentChain() > 0 then return end if Duel.GetCurrentChain() > 0 then return end
local g1 = Duel.GetFieldGroupCount(tp, LOCATION_DECK, 0) local g1 = Duel.GetFieldGroupCount(tp, LOCATION_DECK, 0)
...@@ -117,7 +117,7 @@ function VgD.Rule(c) ...@@ -117,7 +117,7 @@ function VgD.Rule(c)
e16:SetType(EFFECT_TYPE_FIELD) e16:SetType(EFFECT_TYPE_FIELD)
e16:SetCode(EFFECT_QP_ACT_IN_NTPHAND) e16:SetCode(EFFECT_QP_ACT_IN_NTPHAND)
e16:SetRange(LOCATION_ALL) e16:SetRange(LOCATION_ALL)
e16:SetCondition(VgF.RuleCardCondtion) e16:SetCondition(VgF.Condition.FirstCard)
e16:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e16:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e16:SetTargetRange(LOCATION_HAND, 0) e16:SetTargetRange(LOCATION_HAND, 0)
c:RegisterEffect(e16) c:RegisterEffect(e16)
...@@ -203,7 +203,7 @@ function VgD.RideFilter2(c, lv, code, rc) ...@@ -203,7 +203,7 @@ function VgD.RideFilter2(c, lv, code, rc)
return c:IsLevel(lv) and c:IsType(TYPE_UNIT) and c:IsCode(code) and rc:IsSkill(SKILL_PERSONA_RIDE) return c:IsLevel(lv) and c:IsType(TYPE_UNIT) and c:IsCode(code) and rc:IsSkill(SKILL_PERSONA_RIDE)
end end
function VgD.RideCondition(e, tp, eg, ep, ev, re, r, rp) function VgD.RideCondition(e, tp, eg, ep, ev, re, r, rp)
local rc = Duel.GetMatchingGroup(VgF.VMonsterFilter, tp, LOCATION_CIRCLE, 0, nil):GetFirst() local rc = Duel.GetMatchingGroup(vgf.filter.IsV, tp, LOCATION_CIRCLE, 0, nil):GetFirst()
if not rc then return false end if not rc then return false end
local lv = rc:GetLevel() local lv = rc:GetLevel()
local code = rc:GetCode() local code = rc:GetCode()
...@@ -211,7 +211,7 @@ function VgD.RideCondition(e, tp, eg, ep, ev, re, r, rp) ...@@ -211,7 +211,7 @@ function VgD.RideCondition(e, tp, eg, ep, ev, re, r, rp)
local rg2 = Duel.GetMatchingGroup(VgD.RideFilter2, tp, LOCATION_HAND, 0, nil, lv, code, rc) local rg2 = Duel.GetMatchingGroup(VgD.RideFilter2, tp, LOCATION_HAND, 0, nil, lv, code, rc)
local a = rg1:GetCount() > 0 local a = rg1:GetCount() > 0
local b = rg2:GetCount() > 0 local b = rg2:GetCount() > 0
return Duel.GetTurnPlayer() == tp and VgF.RuleCardCondtion(e) and (a or b) return Duel.GetTurnPlayer() == tp and VgF.Condition.FirstCard(e) and (a or b)
end end
function VgD.RideOperation(e, tp, eg, ep, ev, re, r, rp) function VgD.RideOperation(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
...@@ -277,7 +277,7 @@ function VgD.RideOperation(e, tp, eg, ep, ev, re, r, rp) ...@@ -277,7 +277,7 @@ function VgD.RideOperation(e, tp, eg, ep, ev, re, r, rp)
e1:SetTargetRange(LOCATION_CIRCLE, 0) e1:SetTargetRange(LOCATION_CIRCLE, 0)
e1:SetValue(10000) e1:SetValue(10000)
e1:SetTarget(function (te, tc) e1:SetTarget(function (te, tc)
return VgF.FrontFilter(tc) return vgf.filter.Front(tc)
end) end)
e1:SetReset(RESET_PHASE + PHASE_END) e1:SetReset(RESET_PHASE + PHASE_END)
Duel.RegisterEffect(e1, tp) Duel.RegisterEffect(e1, tp)
...@@ -285,10 +285,10 @@ function VgD.RideOperation(e, tp, eg, ep, ev, re, r, rp) ...@@ -285,10 +285,10 @@ function VgD.RideOperation(e, tp, eg, ep, ev, re, r, rp)
end end
function VgD.RideCondition_lv0(e, tp, eg, ep, ev, re, r, rp) function VgD.RideCondition_lv0(e, tp, eg, ep, ev, re, r, rp)
local rc = Duel.GetMatchingGroup(VgF.VMonsterFilter, tp, LOCATION_CIRCLE, 0, nil):GetFirst() local rc = Duel.GetMatchingGroup(vgf.filter.IsV, tp, LOCATION_CIRCLE, 0, nil):GetFirst()
if rc then return false end if rc then return false end
local ct = Duel.GetMatchingGroupCount(Card.IsLevel, tp, LOCATION_RIDE, 0, nil, 0) local ct = Duel.GetMatchingGroupCount(Card.IsLevel, tp, LOCATION_RIDE, 0, nil, 0)
return VgF.RuleTurnCondtion(e) and ct > 0 and VgF.RuleCardCondtion(e) return VgF.Condition.FirstTurn(e) and ct > 0 and VgF.Condition.FirstCard(e)
end end
function VgD.RideOperation_lv0(e, tp, eg, ep, ev, re, r, rp) function VgD.RideOperation_lv0(e, tp, eg, ep, ev, re, r, rp)
local g = Duel.GetMatchingGroup(Card.IsLevel, tp, LOCATION_RIDE, 0, nil, 0) local g = Duel.GetMatchingGroup(Card.IsLevel, tp, LOCATION_RIDE, 0, nil, 0)
...@@ -379,7 +379,7 @@ function VgD.CardTriggerOperation(chkop) ...@@ -379,7 +379,7 @@ function VgD.CardTriggerOperation(chkop)
end end
end end
elseif c:IsTrigger(TRIGGER_ADVANCE) then elseif c:IsTrigger(TRIGGER_ADVANCE) then
local g = Duel.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 0, 4, 5) local g = Duel.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 0, 4, 5)
local atk_up = c.trigger_atk_up or 10000 local atk_up = c.trigger_atk_up or 10000
if c:IsHasEffect(EFFECT_CHANGE_TRIGGER_ATK) then if c:IsHasEffect(EFFECT_CHANGE_TRIGGER_ATK) then
atk_up = c:IsHasEffect(EFFECT_CHANGE_TRIGGER_ATK):GetValue() atk_up = c:IsHasEffect(EFFECT_CHANGE_TRIGGER_ATK):GetValue()
...@@ -556,8 +556,8 @@ function VgD.CardTriggerOperation(chkop) ...@@ -556,8 +556,8 @@ function VgD.CardTriggerOperation(chkop)
Duel.Damage(tp, 1, REASON_EFFECT) Duel.Damage(tp, 1, REASON_EFFECT)
end end
end end
if VgF.GetValueType(VgF.EffectDamageE) ~= "Effect" then return end if VgF.GetValueType(vgf.effect.Damage) ~= "Effect" then return end
local bc = VgF.EffectDamageE:GetHandler() local bc = vgf.effect.Damage:GetHandler()
local label = bc:GetFlagEffectLabel(FLAG_DAMAGE_TRIGGER) local label = bc:GetFlagEffectLabel(FLAG_DAMAGE_TRIGGER)
if not label then return end if not label then return end
if label > 0 then if label > 0 then
...@@ -567,8 +567,8 @@ function VgD.CardTriggerOperation(chkop) ...@@ -567,8 +567,8 @@ function VgD.CardTriggerOperation(chkop)
bc:RegisterFlagEffect(FLAG_DAMAGE_TRIGGER, 0, 0, 1, label) bc:RegisterFlagEffect(FLAG_DAMAGE_TRIGGER, 0, 0, 1, label)
elseif label == 0 then elseif label == 0 then
bc:ResetFlagEffect(FLAG_DAMAGE_TRIGGER) bc:ResetFlagEffect(FLAG_DAMAGE_TRIGGER)
VgF.EffectDamageE:Reset() vgf.effect.Damage:Reset()
VgF.EffectDamageE = nil vgf.effect.Damage = nil
end end
end end
end end
...@@ -616,10 +616,10 @@ function VgD.CallCondition(e, c) ...@@ -616,10 +616,10 @@ function VgD.CallCondition(e, c)
if c == nil then return true end if c == nil then return true end
local tp = e:GetHandlerPlayer() local tp = e:GetHandlerPlayer()
if VgF.GetAvailableLocation(tp) <= 0 then return end if VgF.GetAvailableLocation(tp) <= 0 then return end
return VgF.LvCondition(e) return VgF.Condition.Level(e)
end end
function VgD.CallFilter(c, tp, zone) function VgD.CallFilter(c, tp, zone)
return VgF.RMonsterFilter(c) and zone == VgF.SequenceToGlobal(tp, c:GetLocation(), c:GetSequence()) return vgf.filter.IsR(c) and zone == VgF.SequenceToGlobal(tp, c:GetLocation(), c:GetSequence())
end end
function VgD.CallOperation(e) function VgD.CallOperation(e)
local c = e:GetHandler() local c = e:GetHandler()
...@@ -667,7 +667,7 @@ function VgD.MonsterBattle(c) ...@@ -667,7 +667,7 @@ function VgD.MonsterBattle(c)
e2:SetRange(LOCATION_ALL) e2:SetRange(LOCATION_ALL)
e2:SetCountLimit(1, VgID + 4) e2:SetCountLimit(1, VgID + 4)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetCondition(VgF.RuleCardCondtion) e2:SetCondition(VgF.Condition.FirstCard)
e2:SetOperation(function (e, tp, eg, ep, ev, re, r, rp) e2:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
local g = Duel.GetMatchingGroup(Card.IsPosition, tp, LOCATION_CIRCLE, 0, nil, POS_FACEUP_DEFENSE) local g = Duel.GetMatchingGroup(Card.IsPosition, tp, LOCATION_CIRCLE, 0, nil, POS_FACEUP_DEFENSE)
if g:GetCount() > 0 and Duel.GetTurnPlayer() == tp then if g:GetCount() > 0 and Duel.GetTurnPlayer() == tp then
...@@ -690,7 +690,7 @@ function VgD.MonsterBattle(c) ...@@ -690,7 +690,7 @@ function VgD.MonsterBattle(c)
local def = tc:GetAttack() local def = tc:GetAttack()
if Duel.GetAttackTarget():GetFlagEffect(FLAG_DEFENSE_ENTIRELY) > 0 and Duel.GetAttackTarget():GetFlagEffectLabel(FLAG_DEFENSE_ENTIRELY) == 10402017 and bc:IsLevelBelow(2) then return false end if Duel.GetAttackTarget():GetFlagEffect(FLAG_DEFENSE_ENTIRELY) > 0 and Duel.GetAttackTarget():GetFlagEffectLabel(FLAG_DEFENSE_ENTIRELY) == 10402017 and bc:IsLevelBelow(2) then return false end
if Duel.GetAttackTarget():GetFlagEffect(FLAG_DEFENSE_ENTIRELY) > 0 and Duel.GetAttackTarget():GetFlagEffectLabel(FLAG_DEFENSE_ENTIRELY) == 0 then return false end if Duel.GetAttackTarget():GetFlagEffect(FLAG_DEFENSE_ENTIRELY) > 0 and Duel.GetAttackTarget():GetFlagEffectLabel(FLAG_DEFENSE_ENTIRELY) == 0 then return false end
return VgF.VMonsterFilter(tc) and tc == Duel.GetAttackTarget() and atk >= def and bc:GetLeftScale() > 0 return vgf.filter.IsV(tc) and tc == Duel.GetAttackTarget() and atk >= def and bc:GetLeftScale() > 0
end) end)
e3:SetOperation(function (e, tp, eg, ep, ev, re, r, rp) e3:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
local bc = Duel.GetAttacker() local bc = Duel.GetAttacker()
...@@ -707,7 +707,7 @@ function VgD.MonsterBattle(c) ...@@ -707,7 +707,7 @@ function VgD.MonsterBattle(c)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e4:SetCondition(function (e, tp, eg, ep, ev, re, r, rp) e4:SetCondition(function (e, tp, eg, ep, ev, re, r, rp)
local tc = e:GetHandler() local tc = e:GetHandler()
if not VgF.VMonsterFilter(tc) and tc:GetFlagEffect(FLAG_ALSO_CAN_TRIGGER) == 0 then return false end if not vgf.filter.IsV(tc) and tc:GetFlagEffect(FLAG_ALSO_CAN_TRIGGER) == 0 then return false end
return tc:GetFlagEffectLabel(FLAG_ATTACK_TRIGGER) and tc:GetFlagEffectLabel(FLAG_ATTACK_TRIGGER) > 0 and Duel.GetAttacker() == tc return tc:GetFlagEffectLabel(FLAG_ATTACK_TRIGGER) and tc:GetFlagEffectLabel(FLAG_ATTACK_TRIGGER) > 0 and Duel.GetAttacker() == tc
end) end)
e4:SetCost(function (e, tp, eg, ep, ev, re, r, rp, chk) e4:SetCost(function (e, tp, eg, ep, ev, re, r, rp, chk)
...@@ -724,7 +724,7 @@ function VgD.MonsterBattle(c) ...@@ -724,7 +724,7 @@ function VgD.MonsterBattle(c)
e5:SetRange(LOCATION_CIRCLE) e5:SetRange(LOCATION_CIRCLE)
e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e5:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e5:SetCondition(function (e, tp, eg, ep, ev, re, r, rp) e5:SetCondition(function (e, tp, eg, ep, ev, re, r, rp)
return VgF.ReturnCard(eg):GetControler() == tp and VgF.VMonsterFilter(e:GetHandler()) and Duel.GetFlagEffect(tp, FLAG_EFFECT_DAMAGE) == 0 return VgF.ReturnCard(eg):GetControler() == tp and vgf.filter.IsV(e:GetHandler()) and Duel.GetFlagEffect(tp, FLAG_EFFECT_DAMAGE) == 0
end) end)
e5:SetOperation(VgD.Trigger) e5:SetOperation(VgD.Trigger)
c:RegisterEffect(e5) c:RegisterEffect(e5)
...@@ -803,7 +803,7 @@ function VgD.MonsterBattle(c) ...@@ -803,7 +803,7 @@ function VgD.MonsterBattle(c)
e8:SetCode(EVENT_DAMAGE_STEP_END) e8:SetCode(EVENT_DAMAGE_STEP_END)
e8:SetProperty(EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_DELAY) e8:SetProperty(EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_DELAY)
e8:SetRange(LOCATION_ALL) e8:SetRange(LOCATION_ALL)
e8:SetCondition(VgF.RuleCardCondtion) e8:SetCondition(VgF.Condition.FirstCard)
e8:SetOperation(function (e, tp, eg, ep, ev, re, r, rp) e8:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
local g = Duel.GetFieldGroup(tp, LOCATION_G_CIRCLE, 0) local g = Duel.GetFieldGroup(tp, LOCATION_G_CIRCLE, 0)
if g:GetCount() > 0 then VgF.Sendto(LOCATION_DROP, g, REASON_RULE) end if g:GetCount() > 0 then VgF.Sendto(LOCATION_DROP, g, REASON_RULE) end
...@@ -821,7 +821,7 @@ function VgD.MonsterBattle(c) ...@@ -821,7 +821,7 @@ function VgD.MonsterBattle(c)
e11:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) e11:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e11:SetCondition(function (e) e11:SetCondition(function (e)
return e:GetHandler():IsPosition(POS_DEFENSE) or (VgF.BackFilter(e:GetHandler()) and e:GetHandler():GetFlagEffect(FLAG_ATTACK_AT_REAR) == 0) return e:GetHandler():IsPosition(POS_DEFENSE) or (vgf.filter.Back(e:GetHandler()) and e:GetHandler():GetFlagEffect(FLAG_ATTACK_AT_REAR) == 0)
end) end)
c:RegisterEffect(e11) c:RegisterEffect(e11)
local e12 = Effect.CreateEffect(c) local e12 = Effect.CreateEffect(c)
...@@ -841,7 +841,7 @@ function VgD.MonsterBattle(c) ...@@ -841,7 +841,7 @@ function VgD.MonsterBattle(c)
e14:SetRange(LOCATION_CIRCLE) e14:SetRange(LOCATION_CIRCLE)
e14:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e14:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e14:SetCondition(function (e) e14:SetCondition(function (e)
return VgF.VMonsterFilter(e:GetHandler()) or Duel.GetAttacker() == e:GetHandler() return vgf.filter.IsV(e:GetHandler()) or Duel.GetAttacker() == e:GetHandler()
end) end)
e14:SetValue(1) e14:SetValue(1)
c:RegisterEffect(e14) c:RegisterEffect(e14)
...@@ -857,7 +857,7 @@ function VgD.MonsterBattle(c) ...@@ -857,7 +857,7 @@ function VgD.MonsterBattle(c)
e16:SetProperty(EFFECT_FLAG_SINGLE_RANGE + EFFECT_FLAG_CANNOT_DISABLE) e16:SetProperty(EFFECT_FLAG_SINGLE_RANGE + EFFECT_FLAG_CANNOT_DISABLE)
e16:SetRange(LOCATION_CIRCLE) e16:SetRange(LOCATION_CIRCLE)
e16:SetCondition(function (e) e16:SetCondition(function (e)
return VgF.BackFilter(e:GetHandler()) return vgf.filter.Back(e:GetHandler())
end) end)
e16:SetValue(VgF.True) e16:SetValue(VgF.True)
c:RegisterEffect(e16) c:RegisterEffect(e16)
...@@ -899,7 +899,7 @@ function VgD.OverDressCondition(filter) ...@@ -899,7 +899,7 @@ function VgD.OverDressCondition(filter)
return function (e, c) return function (e, c)
if c == nil then return true end if c == nil then return true end
local tp = e:GetHandlerPlayer() local tp = e:GetHandlerPlayer()
return VgF.LvCondition(e) and VgF.IsExistingMatchingCard(VgD.OverDressFilter, tp, LOCATION_CIRCLE, 0, 1, nil, filter) return VgF.Condition.Level(e) and VgF.IsExistingMatchingCard(VgD.OverDressFilter, tp, LOCATION_CIRCLE, 0, 1, nil, filter)
end end
end end
function VgD.OverDressFilter(c, filter, tp, zone) function VgD.OverDressFilter(c, filter, tp, zone)
...@@ -984,7 +984,7 @@ function VgD.Order(c, m, op, cost, con) ...@@ -984,7 +984,7 @@ function VgD.Order(c, m, op, cost, con)
end end
function VgD.OrderCondtion(con) function VgD.OrderCondtion(con)
return function(e, tp, eg, ep, ev, re, r, rp) return function(e, tp, eg, ep, ev, re, r, rp)
return VgF.LvCondition(e) and (not con or con(e, tp, eg, ep, ev, re, r, rp)) return VgF.Condition.Level(e) and (not con or con(e, tp, eg, ep, ev, re, r, rp))
end end
end end
function VgD.AlchemagicCost(cost) function VgD.AlchemagicCost(cost)
...@@ -1009,19 +1009,19 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc) ...@@ -1009,19 +1009,19 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc)
if Duel.IsPlayerAffectedByEffect(tp, AFFECT_CODE_ALCHEMAGIC_DIFFERENT_NAME) and c:IsCode(mc:GetCode()) then return false end if Duel.IsPlayerAffectedByEffect(tp, AFFECT_CODE_ALCHEMAGIC_DIFFERENT_NAME) and c:IsCode(mc:GetCode()) then return false end
--得到需要支付的费用(从哪来,几张卡,什么卡) --得到需要支付的费用(从哪来,几张卡,什么卡)
local cfrom, cval, cfilter, mcfrom, mcval, mcfilter local cfrom, cval, cfilter, mcfrom, mcval, mcfilter
table.copy(cfrom, c.cos_from) table.copy(cfrom, c.order_cost['from'])
table.copy(cval, c.cos_val) table.copy(cval, c.order_cost['min'])
table.copy(cfilter, c.cos_filter) table.copy(cfilter, c.order_cost['filter'])
table.copy(mcfrom, mc.cos_from) table.copy(mcfrom, mc.order_cost['from'])
table.copy(mcval, mc.cos_val) table.copy(mcval, mc.order_cost['min'])
table.copy(mcfilter, mc.cos_filter) table.copy(mcfilter, mc.order_cost['filter'])
--如果都有费用要付,则合成费用 --如果都有费用要付,则合成费用
if #cfrom > 0 and #mcfrom > 0 then if #cfrom > 0 and #mcfrom > 0 then
for cv = 1, #cfrom do for cv = 1, #cfrom do
local c_cost_from = LOCATION_LIST[cfrom[cv]] local c_cost_from = LOCATION_LIST[cfrom[cv]] or cfrom[cv]
local pos = 0 local pos = 0
for mcv = 1, #mcfrom do for mcv = 1, #mcfrom do
local mc_cost_from = LOCATION_LIST[mcfrom[mcv]] local mc_cost_from = LOCATION_LIST[mcfrom[mcv]] or mcfrom[mcv]
if mc_cost_from == c_cost_from then if mc_cost_from == c_cost_from then
local mc_cos_val = mcval[mcv] local mc_cos_val = mcval[mcv]
local c_cos_val = cval[cv] local c_cos_val = cval[cv]
...@@ -1083,7 +1083,7 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc) ...@@ -1083,7 +1083,7 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc)
--如果本体需要支付而合成的卡不需要支付 --如果本体需要支付而合成的卡不需要支付
elseif #mcfrom > 0 then elseif #mcfrom > 0 then
for mcv = 1, #mcfrom do for mcv = 1, #mcfrom do
local mc_cost_from = LOCATION_LIST[mcfrom[mcv]] local mc_cost_from = LOCATION_LIST[mcfrom[mcv]] or mcfrom[mcv]
local mc_cos_val = mcval[mcv] local mc_cos_val = mcval[mcv]
if VgF.GetValueType(mc_cos_val) ~= "number" then mc_cos_val = 0 end if VgF.GetValueType(mc_cos_val) ~= "number" then mc_cos_val = 0 end
--判断其他减少费用的效果 --判断其他减少费用的效果
...@@ -1101,7 +1101,7 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc) ...@@ -1101,7 +1101,7 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc)
--如果本体不需要支付而合成的卡需要支付 --如果本体不需要支付而合成的卡需要支付
elseif #cfrom > 0 then elseif #cfrom > 0 then
for cv = 1, #cfrom do for cv = 1, #cfrom do
local c_cost_from = LOCATION_LIST[cfrom[cv]] local c_cost_from = LOCATION_LIST[cfrom[cv]] or cfrom[cv]
local c_cos_val = mcval[cv] local c_cos_val = mcval[cv]
if VgF.GetValueType(c_cos_val) ~= "number" then c_cos_val = 0 end if VgF.GetValueType(c_cos_val) ~= "number" then c_cos_val = 0 end
--判断其他减少费用的效果 --判断其他减少费用的效果
...@@ -1119,21 +1119,21 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc) ...@@ -1119,21 +1119,21 @@ function VgD.AlchemagicCostFilter(c, e, tp, eg, ep, ev, re, r, rp, mc)
--都不需要支付 --都不需要支付
else return true else return true
end end
return VgF.LvCondition(c) return VgF.Condition.Level(c)
end end
function VgD.AlchemagicCostOperation(c, bc, tp) function VgD.AlchemagicCostOperation(c, bc, tp)
--得到需要支付的费用(从哪来,到哪去,最少几张卡,最多几张卡,什么卡) --得到需要支付的费用(从哪来,到哪去,最少几张卡,最多几张卡,什么卡)
local cfrom, cto, cval, cval_max, cfilter, bcfrom, bcto, bcval, bcval_max, bcfilter local cfrom, cto, cval, cval_max, cfilter, bcfrom, bcto, bcval, bcval_max, bcfilter
table.copy(cfrom, c.cos_from) table.copy(cfrom, c.order_cost['from'])
table.copy(cto, c.cos_to) table.copy(cto, c.order_cost['to'])
table.copy(cval, c.cos_val) table.copy(cval, c.order_cost['min'])
table.copy(cval_max, c.cos_val_max) table.copy(cval_max, c.order_cost['max'])
table.copy(cfilter, bc.cos_filter) table.copy(cfilter, c.order_cost['filter'])
table.copy(bcfrom, bc.cos_from) table.copy(bcfrom, bc.order_cost['from'])
table.copy(bcto, bc.cos_to) table.copy(bcto, bc.order_cost['to'])
table.copy(bcval, bc.cos_val) table.copy(bcval, bc.order_cost['min'])
table.copy(bcval_max, bc.cos_val_max) table.copy(bcval_max, bc.order_cost['max'])
table.copy(bcfilter, bc.cos_filter) table.copy(bcfilter, bc.order_cost['filter'])
local g_from = {} local g_from = {}
local g_to = {} local g_to = {}
local g_filter_c = {} local g_filter_c = {}
...@@ -1146,11 +1146,11 @@ function VgD.AlchemagicCostOperation(c, bc, tp) ...@@ -1146,11 +1146,11 @@ function VgD.AlchemagicCostOperation(c, bc, tp)
--在这里合成 --在这里合成
if #bcfrom > 0 and #cfrom > 0 then if #bcfrom > 0 and #cfrom > 0 then
for bcv = 1, #bcfrom do for bcv = 1, #bcfrom do
local bc_cost_from = LOCATION_LIST[bcfrom[bcv]] local bc_cost_from = LOCATION_LIST[bcfrom[bcv]] or bcfrom[bcv]
local pos = 0 local pos = 0
for cv = 1, #cfrom do for cv = 1, #cfrom do
local c_cost_from = LOCATION_LIST[cfrom[cv]] local c_cost_from = LOCATION_LIST[cfrom[cv]] or cfrom[cv]
if bc_cost_from == c_cost_from and LOCATION_LIST[cto[cv]] == LOCATION_LIST[bcto[bcv]] then if bc_cost_from == c_cost_from and (LOCATION_LIST[cto[cv]] or cto[cv]) == (LOCATION_LIST[bcto[bcv]] or bcto[bcv]) then
pos = bcv pos = bcv
table.insert(g_from, cfrom[cv]) table.insert(g_from, cfrom[cv])
table.insert(g_to, cto[cv]) table.insert(g_to, cto[cv])
...@@ -1204,8 +1204,8 @@ function VgD.AlchemagicCostOperation(c, bc, tp) ...@@ -1204,8 +1204,8 @@ function VgD.AlchemagicCostOperation(c, bc, tp)
end end
--开始支付合成完的费用 --开始支付合成完的费用
for i = 1, #g_from do for i = 1, #g_from do
local tg_from = LOCATION_LIST[g_from[i]] local tg_from = LOCATION_LIST[g_from[i]] or g_from[i]
local tg_to = LOCATION_LIST[g_to[i]] local tg_to = LOCATION_LIST[g_to[i]] or g_to[i]
local tg = VgF.GetMatchingGroup(nil, tp, tg_from, 0, except_group) local tg = VgF.GetMatchingGroup(nil, tp, tg_from, 0, except_group)
local tg_filter_c = g_filter_c[i] local tg_filter_c = g_filter_c[i]
local tg_filter_bc = g_filter_bc[i] local tg_filter_bc = g_filter_bc[i]
...@@ -1394,7 +1394,7 @@ function VgD.AbilityAuto(c, m, loc, typ, code, op, cost, con, tg, count, propert ...@@ -1394,7 +1394,7 @@ function VgD.AbilityAuto(c, m, loc, typ, code, op, cost, con, tg, count, propert
elseif code == EVENT_TO_G_CIRCLE then elseif code == EVENT_TO_G_CIRCLE then
typ = typ or (cost and EFFECT_TYPE_TRIGGER_O or EFFECT_TYPE_TRIGGER_F) typ = typ or (cost and EFFECT_TYPE_TRIGGER_O or EFFECT_TYPE_TRIGGER_F)
op = op or function (e, tp, eg, ep, ev, re, r, rp) op = op or function (e, tp, eg, ep, ev, re, r, rp)
if vgf.RMonsterFilter(Duel.GetAttackTarget()) then if vgf.filter.IsR(Duel.GetAttackTarget()) then
local e1 = Effect.CreateEffect(e:GetHandler()) local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
...@@ -1403,8 +1403,8 @@ function VgD.AbilityAuto(c, m, loc, typ, code, op, cost, con, tg, count, propert ...@@ -1403,8 +1403,8 @@ function VgD.AbilityAuto(c, m, loc, typ, code, op, cost, con, tg, count, propert
e1:SetReset(RESET_EVENT + RESETS_STANDARD) e1:SetReset(RESET_EVENT + RESETS_STANDARD)
e1:SetValue(1) e1:SetValue(1)
Duel.GetAttackTarget():RegisterEffect(e1) Duel.GetAttackTarget():RegisterEffect(e1)
vgf.EffectReset(e:GetHandler(), e1, EVENT_BATTLED) vgf.effect.Reset(e:GetHandler(), e1, EVENT_BATTLED)
elseif vgf.VMonsterFilter(Duel.GetAttackTarget()) then elseif vgf.filter.IsV(Duel.GetAttackTarget()) then
Duel.GetAttackTarget():RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY, RESET_EVENT + RESETS_STANDARD, 0, 1) Duel.GetAttackTarget():RegisterFlagEffect(FLAG_DEFENSE_ENTIRELY, RESET_EVENT + RESETS_STANDARD, 0, 1)
end end
end end
......
...@@ -25,7 +25,7 @@ LOCATION_CREST = 0x8000 --纹章区 ...@@ -25,7 +25,7 @@ LOCATION_CREST = 0x8000 --纹章区
LOCATION_ALL = 0xffff LOCATION_ALL = 0xffff
LOCATION_R_CIRCLE = 0x10000 -- 后防者圆阵导者圆阵 LOCATION_R_CIRCLE = 0x10000 -- 后防者圆阵导者圆阵
LOCATION_LIST = {["LOCATION_DECK"] = LOCATION_DECK, ["LOCATION_HAND"] = LOCATION_HAND, ["LOCATION_CIRCLE"] = LOCATION_CIRCLE, ["LOCATION_DROP"] = LOCATION_DROP, ["LOCATION_BIND"] = LOCATION_BIND, ["LOCATION_RIDE"] = LOCATION_RIDE, ["LOCATION_SOUL"] = LOCATION_SOUL, ["LOCATION_REMOVED"] = LOCATION_REMOVED, ["LOCATION_DAMAGE"] = LOCATION_DAMAGE, ["LOCATION_ORDER"] = LOCATION_ORDER, ["LOCATION_SPARE"] = LOCATION_SPARE, ["LOCATION_G_CIRCLE"] = LOCATION_G_CIRCLE, ["LOCATION_CREST"] = LOCATION_CREST} LOCATION_LIST = {["0"] = 0, ["LOCATION_DECK"] = LOCATION_DECK, ["LOCATION_HAND"] = LOCATION_HAND, ["LOCATION_CIRCLE"] = LOCATION_CIRCLE, ["LOCATION_DROP"] = LOCATION_DROP, ["LOCATION_BIND"] = LOCATION_BIND, ["LOCATION_RIDE"] = LOCATION_RIDE, ["LOCATION_SOUL"] = LOCATION_SOUL, ["LOCATION_REMOVED"] = LOCATION_REMOVED, ["LOCATION_DAMAGE"] = LOCATION_DAMAGE, ["LOCATION_ORDER"] = LOCATION_ORDER, ["LOCATION_SPARE"] = LOCATION_SPARE, ["LOCATION_G_CIRCLE"] = LOCATION_G_CIRCLE, ["LOCATION_CREST"] = LOCATION_CREST}
--Locations (for redirect) 若在重定向类效果中仅指定LOCATION_DECK则为弹回卡组顶部 --Locations (for redirect) 若在重定向类效果中仅指定LOCATION_DECK则为弹回卡组顶部
LOCATION_DECKBOT = 0x10001 --弹回卡组底部 LOCATION_DECKBOT = 0x10001 --弹回卡组底部
......
...@@ -3,8 +3,14 @@ VgF = {} ...@@ -3,8 +3,14 @@ VgF = {}
vgf = VgF vgf = VgF
VgF.Operation = {} VgF.Operation = {}
VgF.Cost = {} VgF.Cost = {}
VgF.Condition = {}
VgF.Filter = {}
VgF.Effect = {}
VgF.op = VgF.Operation VgF.op = VgF.Operation
VgF.cost = VgF.Cost VgF.cost = VgF.Cost
VgF.con = VgF.Condition
VgF.filter = VgF.Filter
vgf.effect = VgF.Effect
bit = {} bit = {}
---@class Card ---@class Card
...@@ -23,30 +29,19 @@ end ...@@ -23,30 +29,19 @@ end
function VgF.Stringid(code, id) function VgF.Stringid(code, id)
return code * 16 + id return code * 16 + id
end end
---根据控制者,区域和编号获取zone;不合法的数据会返回0
---@param p number 控制者
---@param loc number 所在区域,若不是LOCATION_CIRCLE或LOCATION_SZONE则返回0
---@param seq number 编号
---@return number 卡片所在的zone
function VgF.SequenceToGlobal(p, loc, seq)
if p ~= 0 and p ~= 1 then return 0 end
if loc==LOCATION_CIRCLE then
if seq <= 6 then return 0x0001 << (seq) end
elseif loc == LOCATION_SZONE then
if seq <= 4 then return 0x0100 << (16 * p + seq) end
end
return 0
end
---一个总是返回true的函数。 ---一个总是返回true的函数。
---@return true ---@return true
function VgF.True() function VgF.True()
return true return true
end end
---一个总是返回false的函数。 ---一个总是返回false的函数。
---@return false ---@return false
function VgF.False() function VgF.False()
return false return false
end end
---返回g中的“下一张卡”。第一次调用会返回第一张卡。没有下一张卡会返回nil。 ---返回g中的“下一张卡”。第一次调用会返回第一张卡。没有下一张卡会返回nil。
---@param g Group 要遍历的卡片组 ---@param g Group 要遍历的卡片组
---@return function 指示返回的卡的函数 ---@return function 指示返回的卡的函数
...@@ -57,6 +52,7 @@ function VgF.Next(g) ...@@ -57,6 +52,7 @@ function VgF.Next(g)
else return g:GetNext() end else return g:GetNext() end
end end
end end
---返回v在lua中的变量类型,以string方式呈现。 ---返回v在lua中的变量类型,以string方式呈现。
---@param v any 要获取类型的变量(或常量) ---@param v any 要获取类型的变量(或常量)
---@return string 以字符串形式呈现的类型 ---@return string 以字符串形式呈现的类型
...@@ -69,6 +65,7 @@ function VgF.GetValueType(v) ...@@ -69,6 +65,7 @@ function VgF.GetValueType(v)
else return "Card" end else return "Card" end
else return t end else return t end
end end
---如果g是Group的话,返回其第一张卡;如果g是Card的话,返回其本身;否则返回nil。 ---如果g是Group的话,返回其第一张卡;如果g是Card的话,返回其本身;否则返回nil。
---@param g any 要操作的变量 ---@param g any 要操作的变量
---@return Card ---@return Card
...@@ -87,7 +84,7 @@ function VgF.ReturnGroup(tc) ...@@ -87,7 +84,7 @@ function VgF.ReturnGroup(tc)
if VgF.GetValueType(tc) == "Group" then if VgF.GetValueType(tc) == "Group" then
return tc return tc
elseif VgF.GetValueType(g) == "Card" then elseif VgF.GetValueType(g) == "Card" then
g.AddCard(tc) g:AddCard(tc)
end end
return g return g
end end
...@@ -105,11 +102,20 @@ function VgF.GetCardsFromGroup(g, val) ...@@ -105,11 +102,20 @@ function VgF.GetCardsFromGroup(g, val)
return sg return sg
end end
end end
function bit.ReturnCount(n)
if n == 0 then ---根据控制者,区域和编号获取zone;不合法的数据会返回0
return 0 ---@param p number 控制者
---@param loc number 所在区域,若不是LOCATION_CIRCLE或LOCATION_SZONE则返回0
---@param seq number 编号
---@return number 卡片所在的zone
function VgF.SequenceToGlobal(p, loc, seq)
if p ~= 0 and p ~= 1 then return 0 end
if loc==LOCATION_CIRCLE then
if seq <= 6 then return 0x0001 << (seq) end
elseif loc == LOCATION_SZONE then
if seq <= 4 then return 0x0100 << (16 * p + seq) end
end end
return 1 + bit.ReturnCount(n & (n - 1)) return 0
end end
function table.copy(copy, original) function table.copy(copy, original)
...@@ -120,6 +126,13 @@ function table.copy(copy, original) ...@@ -120,6 +126,13 @@ function table.copy(copy, original)
end end
end end
function bit.ReturnCount(n)
if n == 0 then
return 0
end
return 1 + bit.ReturnCount(n & (n - 1))
end
---返回对a和b进行按位与运算的结果。 ---返回对a和b进行按位与运算的结果。
---@param a number 操作数1 ---@param a number 操作数1
---@param b number 操作数2 ---@param b number 操作数2
...@@ -161,72 +174,9 @@ end ...@@ -161,72 +174,9 @@ end
function bit.bnot(a) function bit.bnot(a)
return ~a return ~a
end end
---返回c是不是先导者。
---@param c Card 要判断的卡
---@return boolean 指示是否是先导者
function VgF.VMonsterFilter(c)
return VgF.IsSequence(c, 5)
end
---返回c是不是后防者。
---@param c Card 要判断的卡
---@return boolean 指示是否是后防者
function VgF.RMonsterFilter(c)
return c:GetSequence() < 5
end
---用于效果的Condition,判断e是否以后防者发动。
---@param e Effect
---@return boolean
function VgF.RMonsterCondition(e)
return VgF.RMonsterFilter(e:GetHandler())
end
---用于效果的Condition,判断e是否以先导者发动。
---@param e Effect
---@return boolean
function VgF.VMonsterCondition(e)
return VgF.VMonsterFilter(e:GetHandler())
end
function VgF.VSummonCondition(e)
local c = e:GetHandler()
return VgF.IsSummonTypeV(c)
end
function VgF.RSummonCondition(e)
return not VgF.VSummonCondition(e)
end
function VgF.IsSummonTypeV(c)
return c:IsSummonType(SUMMON_TYPE_RIDE) or c:IsSummonType(SUMMON_TYPE_SELFRIDE)
end
function VgF.IsSummonTypeR(c)
return not VgF.IsSummonTypeV(c)
end
---判断c是否在当前区域的某(几)个编号上
---@param c Card 要判断的卡
---@param ... number 编号
---@return boolean 指示是否在给定编号上
function VgF.IsSequence(c, ...)
for i, v in ipairs{...} do
if c:GetSequence() == v then
return true
end
end
return false
end
function VgF.RuleCardCondtion(e)
local tp = e:GetHandlerPlayer()
local g = Duel.GetMatchingGroup(nil, tp, LOCATION_ALL, 0, nil)
return e:GetHandler() == g:GetFirst()
end
function VgF.RuleTurnCondtion(e)
local tp = e:GetHandlerPlayer()
local a = Duel.GetTurnCount(tp)
local b = Duel.GetTurnCount(1 - tp)
return a + b == 1
end
---返回函数,该函数与f的结果总是相反的。 ---返回函数,该函数与f的结果总是相反的。
---@param f 要操作的函数 ---@param f function<boolean> 要操作的bool函数
---@return function 经过操作的函数 ---@return function 经过操作的函数
function VgF.Not(f) function VgF.Not(f)
return function(...) return function(...)
...@@ -240,140 +190,44 @@ function VgF.GetColumnGroup(c) ...@@ -240,140 +190,44 @@ function VgF.GetColumnGroup(c)
local tp = c:GetControler() local tp = c:GetControler()
local g = Group.CreateGroup() local g = Group.CreateGroup()
if c:GetSequence() == 0 then if c:GetSequence() == 0 then
local sg1 = VgF.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 1) local sg1 = VgF.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 1)
local sg2 = VgF.GetMatchingGroup(VgF.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 3, 4) local sg2 = VgF.GetMatchingGroup(Card.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 3, 4)
if sg1:GetCount() > 0 then g:Merge(sg1) end if sg1:GetCount() > 0 then g:Merge(sg1) end
if sg2:GetCount() > 0 then g:Merge(sg2) end if sg2:GetCount() > 0 then g:Merge(sg2) end
end end
if c:GetSequence() == 1 then if c:GetSequence() == 1 then
local sg1 = VgF.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 0) local sg1 = VgF.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 0)
local sg2 = VgF.GetMatchingGroup(VgF.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 3, 4) local sg2 = VgF.GetMatchingGroup(Card.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 3, 4)
if sg1:GetCount() > 0 then g:Merge(sg1) end if sg1:GetCount() > 0 then g:Merge(sg1) end
if sg2:GetCount() > 0 then g:Merge(sg2) end if sg2:GetCount() > 0 then g:Merge(sg2) end
end end
if c:GetSequence() == 2 then if c:GetSequence() == 2 then
local sg1 = VgF.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 5) local sg1 = VgF.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 5)
local sg2 = VgF.GetMatchingGroup(VgF.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 2, 5) local sg2 = VgF.GetMatchingGroup(Card.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 2, 5)
if sg1:GetCount() > 0 then g:Merge(sg1) end if sg1:GetCount() > 0 then g:Merge(sg1) end
if sg2:GetCount() > 0 then g:Merge(sg2) end if sg2:GetCount() > 0 then g:Merge(sg2) end
end end
if c:GetSequence() == 3 then if c:GetSequence() == 3 then
local sg1 = VgF.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 4) local sg1 = VgF.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 4)
local sg2 = VgF.GetMatchingGroup(VgF.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 0, 1) local sg2 = VgF.GetMatchingGroup(Card.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 0, 1)
if sg1:GetCount() > 0 then g:Merge(sg1) end if sg1:GetCount() > 0 then g:Merge(sg1) end
if sg2:GetCount() > 0 then g:Merge(sg2) end if sg2:GetCount() > 0 then g:Merge(sg2) end
end end
if c:GetSequence() == 4 then if c:GetSequence() == 4 then
local sg1 = VgF.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 3) local sg1 = VgF.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 3)
local sg2 = VgF.GetMatchingGroup(VgF.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 0, 1) local sg2 = VgF.GetMatchingGroup(Card.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 0, 1)
if sg1:GetCount() > 0 then g:Merge(sg1) end if sg1:GetCount() > 0 then g:Merge(sg1) end
if sg2:GetCount() > 0 then g:Merge(sg2) end if sg2:GetCount() > 0 then g:Merge(sg2) end
end end
if c:GetSequence() == 5 then if c:GetSequence() == 5 then
local sg1 = VgF.GetMatchingGroup(VgF.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 2) local sg1 = VgF.GetMatchingGroup(Card.IsSequence, tp, LOCATION_CIRCLE, 0, nil, 2)
local sg2 = VgF.GetMatchingGroup(VgF.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 2, 5) local sg2 = VgF.GetMatchingGroup(Card.IsSequence, tp, 0, LOCATION_CIRCLE, nil, 2, 5)
if sg1:GetCount() > 0 then g:Merge(sg1) end if sg1:GetCount() > 0 then g:Merge(sg1) end
if sg2:GetCount() > 0 then g:Merge(sg2) end if sg2:GetCount() > 0 then g:Merge(sg2) end
end end
return g return g
end end
function VgF.GetAvailableLocation(tp, zone)
local z
if zone then z = zone else z = 0x1f end
local rg = Duel.GetMatchingGroup(Card.IsPosition, tp, LOCATION_CIRCLE, 0, nil, POS_FACEDOWN_ATTACK)
for tc in VgF.Next(rg) do
local szone = VgF.SequenceToGlobal(tp, tc:GetLocation(), tc:GetSequence())
z = bit.bxor(z, szone)
end
return z
end
---将g(中的每一张卡)Call到单位区。返回Call成功的数量。
---@param g Card|Group 要Call的卡(片组)
---@param sumtype number Call的方式,默认填0
---@param tp number Call的玩家
---@param zone number|nil 指示要Call到的格子。<br>前列的R:17; 后列的R:14; 全部的R:31; V:32
---@param pos number|nil 表示形式
---@return number Call成功的数量
function VgF.Call(g, sumtype, tp, zone, pos)
if (VgF.GetValueType(g) ~= "Card" and VgF.GetValueType(g) ~= "Group") or (VgF.GetValueType(g) == "Group" and g:GetCount() == 0) then return 0 end
if VgF.GetValueType(pos) ~= "number" then pos = POS_FACEUP_ATTACK end
if VgF.GetValueType(zone) == "string" and zone == "NoMonster" then
return Duel.SpecialSummon(g, sumtype, tp, tp, false, false, pos)
elseif VgF.GetValueType(zone) == "string" and zone == "FromOverlayToV" then
local tc = VgF.ReturnCard(g)
if not VgF.IsCanBeCalled(tc, nil, tp, sumtype, pos, "FromOverlayToV") then return 0 end
VgF.Sendto(0, tc, tp, POS_FACEUP, REASON_EFFECT)
local _, code = tc:GetOriginalCode()
local c = Duel.CreateToken(tp, code)
return VgF.Call(c, sumtype, tp, 0x20, pos)
elseif VgF.GetValueType(zone) == "number" and zone > 0 then
local sc = VgF.ReturnCard(g)
local z = VgF.GetAvailableLocation(tp, zone)
local ct = bit.ReturnCount(z)
local szone
if ct > 1 then
z = bit.bnot(z)
z = bit.bor(z, 0xffffff00)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CallZONE)
szone = Duel.SelectField(tp, 1, LOCATION_CIRCLE, 0, z)
else
szone = z
end
if szone == 0x20 then
if VgF.GetVMonster(tp) then
local tc = VgF.GetVMonster(tp)
local mg = tc:GetOverlayGroup()
if mg:GetCount() ~= 0 then
VgF.Sendto(LOCATION_SOUL, mg, sc)
end
sc:SetMaterial(Group.FromCards(tc))
VgF.Sendto(LOCATION_SOUL, Group.FromCards(tc), sc)
end
elseif VgF.IsExistingMatchingCard(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, 1, nil, tp, szone) then
local tc = Duel.GetMatchingGroup(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, nil, tp, szone):GetFirst()
if bit.band(sumtype, SUMMON_VALUE_OVERDRESS) > 0 then VgF.Sendto(LOCATION_SOUL, Group.FromCards(tc), sc)
else VgF.Sendto(LOCATION_DROP, tc, REASON_COST)
end
end
return Duel.SpecialSummon(sc, sumtype, tp, tp, false, false, pos, szone)
else
local sg
local z = bit.bnot(VgF.GetAvailableLocation(tp))
z = bit.bor(z, 0xffffff00)
if VgF.GetValueType(g) == "Card" then sg = Group.FromCards(g) else sg = Group.Clone(g) end
for sc in VgF.Next(sg) do
if sc:IsLocation(LOCATION_RIDE) then
local rc = Duel.GetMatchingGroup(VgF.VMonsterFilter, tp, LOCATION_CIRCLE, 0, nil):GetFirst()
local mg = rc:GetOverlayGroup()
if mg:GetCount() ~= 0 then
VgF.Sendto(LOCATION_SOUL, mg, sc)
end
sc:SetMaterial(Group.FromCards(rc))
VgF.Sendto(LOCATION_SOUL, Group.FromCards(rc), sc)
Duel.SpecialSummonStep(sc, sumtype, tp, tp, false, false, pos, 0x20)
else
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CallZONE)
local szone = Duel.SelectField(tp, 1, LOCATION_CIRCLE, 0, z)
if VgF.IsExistingMatchingCard(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, 1, nil, tp, szone) then
local tc = Duel.GetMatchingGroup(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, nil, tp, szone):GetFirst()
VgF.Sendto(LOCATION_DROP, tc, REASON_COST)
end
Duel.SpecialSummonStep(sc, sumtype, tp, tp, false, false, pos, szone)
z = bit.bor(z, szone)
end
end
return Duel.SpecialSummonComplete()
end
end
function VgF.LvCondition(e_or_c)
local c = VgF.GetValueType(e_or_c) == "Effect" and e_or_c:GetHandler() or e_or_c
local tp, lv = c:GetControler(), c:GetLevel()
return VgF.IsExistingMatchingCard(VgF.LvConditionFilter, tp, LOCATION_CIRCLE, 0, 1, nil, lv)
end
function VgF.LvConditionFilter(c, lv)
return VgF.VMonsterFilter(c) and c:IsLevelAbove(lv)
end
---以c的名义,使g(中的每一张卡)的攻击力上升val,并在reset时重置。 ---以c的名义,使g(中的每一张卡)的攻击力上升val,并在reset时重置。
---@param c Card 要使卡上升攻击力的卡 ---@param c Card 要使卡上升攻击力的卡
---@param g Card|Group 要被上升攻击力的卡 ---@param g Card|Group 要被上升攻击力的卡
...@@ -463,7 +317,7 @@ function VgF.DefUp(c, g, val, reset, resetcount) ...@@ -463,7 +317,7 @@ function VgF.DefUp(c, g, val, reset, resetcount)
end end
---以c的名义,使g(中的每一张卡)的☆上升val,并在reset时重置。 ---以c的名义,使g(中的每一张卡)的☆上升val,并在reset时重置。
---@param c Card 要使卡上升☆的卡 ---@param c Card 要使卡上升☆的卡
---@param g Card|Group 要被上升☆的卡 ---@param g Card|Group 要被上升☆的卡
---@param val number|string 要上升的☆(可以为负) ---@param val number|string 要上升的☆(可以为负)
---@param reset number|nil 指示重置的时点,默认为“回合结束时”。无论如何,都会在离场时重置。 ---@param reset number|nil 指示重置的时点,默认为“回合结束时”。无论如何,都会在离场时重置。
function VgF.StarUp(c, g, val, reset, resetcount) function VgF.StarUp(c, g, val, reset, resetcount)
...@@ -567,11 +421,133 @@ function VgF.IsAbleToGCircle(c) ...@@ -567,11 +421,133 @@ function VgF.IsAbleToGCircle(c)
if Duel.IsPlayerAffectedByEffect(c:GetControler(), AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE) and c:GetBaseDefense() == 0 then return false end if Duel.IsPlayerAffectedByEffect(c:GetControler(), AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE) and c:GetBaseDefense() == 0 then return false end
return c:IsType(TYPE_UNIT) return c:IsType(TYPE_UNIT)
elseif c:IsLocation(LOCATION_CIRCLE) then elseif c:IsLocation(LOCATION_CIRCLE) then
return c:IsSkill(SKILL_INTERCEPT) and VgF.IsSequence(c, 0, 4) and c:IsLocation(LOCATION_CIRCLE) and c:IsFaceup() return c:IsSkill(SKILL_INTERCEPT) and Card.IsSequence(c, 0, 4) and c:IsLocation(LOCATION_CIRCLE) and c:IsFaceup()
end end
return false return false
end end
--Effect类函数-------------------------------------------------------------------------------
VgF.Effect.Damage = nil
function VgF.Effect.Reset(c, e, code, con)
if VgF.GetValueType(e) == "Effect" then
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_SET)
e1:SetCode(code)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetRange(LOCATION_ALL)
e1:SetLabelObject(e)
if VgF.GetValueType(con) == "function" then e1:SetCondition(con) end
e1:SetOperation(VgF.Effect.ResetOperation)
c:RegisterEffect(e1)
elseif VgF.GetValueType(e) == "table" then
for i, v in ipairs(e) do
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_SET)
e1:SetCode(code)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetRange(LOCATION_ALL)
e1:SetLabelObject(v)
if VgF.GetValueType(con) == "function" then e1:SetCondition(con) end
e1:SetOperation(VgF.Effect.ResetOperation)
c:RegisterEffect(e1)
end
end
end
function VgF.Effect.ResetOperation(e, tp, eg, ep, ev, re, r, rp)
local e1 = e:GetLabelObject()
if VgF.GetValueType(e1) == "Effect" then e1:Reset() end
e:Reset()
end
--Filter函数---------------------------------------------------------------------------------------
---返回c是不是先导者。
---@param c Card 要判断的卡
---@return boolean 指示是否是先导者
function VgF.Filter.IsV(c)
return Card.IsSequence(c, 5)
end
---返回c是不是后防者。
---@param c Card 要判断的卡
---@return boolean 指示是否是后防者
function VgF.Filter.IsR(c)
return c:GetSequence() < 5
end
function VgF.Filter.RideOnVCircle(c)
return c:IsSummonType(SUMMON_TYPE_RIDE) or c:IsSummonType(SUMMON_TYPE_SELFRIDE)
end
function VgF.Filter.RideOnRCircle(c)
return not VgF.Filter.RideOnVCircle(c)
end
---判断c是否在前列。
---@param c Card 要判断的卡
---@return boolean 指示c是否是前列的单位
function VgF.Filter.Front(c)
return Card.IsSequence(c, 0, 4, 5) and c:IsLocation(LOCATION_CIRCLE)
end
---判断c是否在后列。
---@param c Card 要判断的卡
---@return boolean 指示c是否是后列的单位
function VgF.Filter.Back(c)
return Card.IsSequence(c, 1, 2, 3) and c:IsLocation(LOCATION_CIRCLE)
end
--Condition函数------------------------------------------------------------------------------------
function VgF.Condition.FirstCard(e)
local tp = e:GetHandlerPlayer()
local g = Duel.GetMatchingGroup(nil, tp, LOCATION_ALL, 0, nil)
return e:GetHandler() == g:GetFirst()
end
function VgF.Condition.FirstTurn(e)
local tp = e:GetHandlerPlayer()
local a = Duel.GetTurnCount(tp)
local b = Duel.GetTurnCount(1 - tp)
return a + b == 1
end
function VgF.Condition.Level(e_or_c)
local c = VgF.GetValueType(e_or_c) == "Effect" and e_or_c:GetHandler() or e_or_c
local tp, lv = c:GetControler(), c:GetLevel()
return VgF.IsExistingMatchingCard(function (tc)
return VgF.Filter.IsV(tc) and tc:IsLevelAbove(lv)
end, tp, LOCATION_CIRCLE, 0, 1, nil)
end
---用于效果的Condition,判断e是否以后防者发动。
---@param e Effect
---@return boolean
function VgF.Condition.IsR(e)
return VgF.Filter.IsR(e:GetHandler())
end
---用于效果的Condition,判断e是否以先导者发动。
---@param e Effect
---@return boolean
function VgF.Condition.IsV(e)
return VgF.Filter.IsV(e:GetHandler())
end
function VgF.Condition.RideOnVCircle(e)
local c = e:GetHandler()
return VgF.Filter.RideOnVCircle(c)
end
function VgF.Condition.RideOnRCircle(e)
return not VgF.Condition.RideOnVCircle(e)
end
---用于效果的Condition,判断对玩家效果e是否受影响于零之命运者。
---@return boolean
function VgF.Condition.PlayerEffect(e, tp, eg, ep, ev, re, r, rp)
return true
end
--Cost函数---------------------------------------------------------------------------------------- --Cost函数----------------------------------------------------------------------------------------
---用于效果的Cost。执行“[将这个单位放置到灵魂里]”的函数。 ---用于效果的Cost。执行“[将这个单位放置到灵魂里]”的函数。
...@@ -607,11 +583,7 @@ function VgF.Cost.Discard(val) ...@@ -607,11 +583,7 @@ function VgF.Cost.Discard(val)
local m = c:GetOriginalCode() local m = c:GetOriginalCode()
if chk == 0 then if chk == 0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
VgF.AddAlchemagicFrom(c, m, "LOCATION_HAND") VgF.AddAlchemagic(m, "LOCATION_HAND", "LOCATION_DROP", val, val)
VgF.AddAlchemagicTo(c, m, "LOCATION_DROP")
VgF.AddAlchemagicFilter(c, m, nil)
VgF.AddAlchemagicCountMin(c, m, val)
VgF.AddAlchemagicCountMax(c, m, val)
end end
return VgF.IsExistingMatchingCard(nil, tp, LOCATION_HAND, 0, val, nil) return VgF.IsExistingMatchingCard(nil, tp, LOCATION_HAND, 0, val, nil)
end end
...@@ -630,11 +602,7 @@ function VgF.Cost.EnergyBlast(val) ...@@ -630,11 +602,7 @@ function VgF.Cost.EnergyBlast(val)
local m = c:GetOriginalCode() local m = c:GetOriginalCode()
if chk == 0 then if chk == 0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
VgF.AddAlchemagicFrom(c, m, "LOCATION_CREST") VgF.AddAlchemagic(m, "LOCATION_CREST", "0", val, val, function(tc) tc:IsCode(CARD_ENERGY) end)
VgF.AddAlchemagicTo(c, m, "0")
VgF.AddAlchemagicFilter(c, m, function(tc) tc:IsCode(CARD_ENERGY) end)
VgF.AddAlchemagicCountMin(c, m, val)
VgF.AddAlchemagicCountMax(c, m, val)
end end
return VgF.IsExistingMatchingCard(Card.IsCode, tp, LOCATION_CREST, 0, val, nil, CARD_ENERGY) return VgF.IsExistingMatchingCard(Card.IsCode, tp, LOCATION_CREST, 0, val, nil, CARD_ENERGY)
end end
...@@ -653,16 +621,12 @@ function VgF.Cost.SoulBlast(val) ...@@ -653,16 +621,12 @@ function VgF.Cost.SoulBlast(val)
local m = c:GetOriginalCode() local m = c:GetOriginalCode()
if chk == 0 then if chk == 0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
VgF.AddAlchemagicFrom(c, m, "LOCATION_SOUL") VgF.AddAlchemagic(m, "LOCATION_SOUL", "LOCATION_DROP", val, val)
VgF.AddAlchemagicTo(c, m, "LOCATION_DROP")
VgF.AddAlchemagicFilter(c, m, nil)
VgF.AddAlchemagicCountMin(c, m, val)
VgF.AddAlchemagicCountMax(c, m, val)
end end
return Duel.GetMatchingGroup(VgF.VMonsterFilter, tp, LOCATION_CIRCLE, 0, nil, nil):GetFirst():GetOverlayCount() >= val return Duel.GetMatchingGroup(VgF.Filter.IsV, tp, LOCATION_CIRCLE, 0, nil, nil):GetFirst():GetOverlayCount() >= val
end end
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_REMOVEXYZ) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_REMOVEXYZ)
local g = Duel.GetMatchingGroup(VgF.VMonsterFilter, tp, LOCATION_CIRCLE, 0, nil):GetFirst():GetOverlayGroup():Select(tp, nil, val, val, nil) local g = Duel.GetMatchingGroup(VgF.Filter.IsV, tp, LOCATION_CIRCLE, 0, nil):GetFirst():GetOverlayGroup():Select(tp, nil, val, val, nil)
return VgF.Sendto(LOCATION_DROP, g, REASON_COST) return VgF.Sendto(LOCATION_DROP, g, REASON_COST)
end end
end end
...@@ -677,11 +641,7 @@ function VgF.Cost.CounterBlast(val) ...@@ -677,11 +641,7 @@ function VgF.Cost.CounterBlast(val)
local m = c:GetOriginalCode() local m = c:GetOriginalCode()
if chk == 0 then if chk == 0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
VgF.AddAlchemagicFrom(c, m, "LOCATION_DAMAGE") VgF.AddAlchemagic(m, "LOCATION_DAMAGE", "POSCHANGE", val, val, Card.IsFaceup)
VgF.AddAlchemagicTo(c, m, "POSCHANGE")
VgF.AddAlchemagicFilter(c, m, Card.IsFaceup)
VgF.AddAlchemagicCountMin(c, m, val)
VgF.AddAlchemagicCountMax(c, m, val)
end end
return VgF.IsExistingMatchingCard(Card.IsFaceup, tp, LOCATION_DAMAGE, 0, val, nil) return VgF.IsExistingMatchingCard(Card.IsFaceup, tp, LOCATION_DAMAGE, 0, val, nil)
end end
...@@ -759,7 +719,7 @@ function VgF.IsCanBeCalled(c, e, tp, sumtype, pos, zone) ...@@ -759,7 +719,7 @@ function VgF.IsCanBeCalled(c, e, tp, sumtype, pos, zone)
else z = VgF.GetAvailableLocation(tp) zone = 0xff end else z = VgF.GetAvailableLocation(tp) zone = 0xff end
if VgF.GetValueType(sumtype) ~= "number" then sumtype = 0 end if VgF.GetValueType(sumtype) ~= "number" then sumtype = 0 end
if VgF.GetValueType(pos) ~= "number" then pos = POS_FACEUP_ATTACK end if VgF.GetValueType(pos) ~= "number" then pos = POS_FACEUP_ATTACK end
if VgF.GetValueType(zone) == "string" and zone == "FromOverlayToV" then if VgF.GetValueType(zone) == "string" and zone == "FromSouloV" then
local _, code = c:GetOriginalCode() local _, code = c:GetOriginalCode()
return Duel.IsPlayerCanSpecialSummonMonster(tp, code, nil, TYPE_UNIT + TYPE_NORMAL, c:GetBaseAttack(), c:GetBaseDefense(), c:GetOriginalLevel(), c:GetOriginalRace(), c:GetOriginalAttribute()) return Duel.IsPlayerCanSpecialSummonMonster(tp, code, nil, TYPE_UNIT + TYPE_NORMAL, c:GetBaseAttack(), c:GetBaseDefense(), c:GetOriginalLevel(), c:GetOriginalRace(), c:GetOriginalAttribute())
end end
...@@ -800,15 +760,11 @@ function VgF.Operation.SoulCharge(val) ...@@ -800,15 +760,11 @@ function VgF.Operation.SoulCharge(val)
local m = c:GetOriginalCode() local m = c:GetOriginalCode()
if chk == 0 then if chk == 0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
VgF.AddAlchemagicFrom(c, m, "LOCATION_DECK") VgF.AddAlchemagic(m, "LOCATION_DECK", "LOCATION_SOUL", val, val)
VgF.AddAlchemagicTo(c, m, "LOCATION_SOUL")
VgF.AddAlchemagicFilter(c, m, nil)
VgF.AddAlchemagicCountMin(c, m, val)
VgF.AddAlchemagicCountMax(c, m, val)
end end
return Duel.GetFieldGroupCount(tp, LOCATION_DECK, 0) >= val return Duel.GetFieldGroupCount(tp, LOCATION_DECK, 0) >= val
end end
local rc = Duel.GetMatchingGroup(VgF.VMonsterFilter, tp, LOCATION_CIRCLE, 0, nil):GetFirst() local rc = Duel.GetMatchingGroup(VgF.Filter.IsV, tp, LOCATION_CIRCLE, 0, nil):GetFirst()
local g = Duel.GetDecktopGroup(tp, val) local g = Duel.GetDecktopGroup(tp, val)
Duel.DisableShuffleCheck() Duel.DisableShuffleCheck()
Duel.RaiseEvent(g, EVENT_CUSTOM + EVENT_OVERLAY_FILL, e, 0, tp, tp, val) Duel.RaiseEvent(g, EVENT_CUSTOM + EVENT_OVERLAY_FILL, e, 0, tp, tp, val)
...@@ -867,7 +823,7 @@ function VgF.Operation.CardsFromTo(reason ,loc_to, loc_from, f, int_max, int_min ...@@ -867,7 +823,7 @@ function VgF.Operation.CardsFromTo(reason ,loc_to, loc_from, f, int_max, int_min
return VgF.GetValueType(f) ~= "function" or f(c, table.unpack(ext_params)) return VgF.GetValueType(f) ~= "function" or f(c, table.unpack(ext_params))
end, tp, loc_from, 0, int_min, int_max, nil) end, tp, loc_from, 0, int_min, int_max, nil)
if g:GetCount() > 0 then if g:GetCount() > 0 then
if loc_from == LOCATION_SOUL then return VgF.Sendto(loc_to, g, 0, tp, "FromOverlayToV") if loc_from == LOCATION_SOUL then return VgF.Sendto(loc_to, g, 0, tp, "FromSouloV")
else return VgF.Sendto(loc_to, g, 0, tp, 0x20) else return VgF.Sendto(loc_to, g, 0, tp, 0x20)
end end
end end
...@@ -921,6 +877,48 @@ function VgF.Operation.CardsFromTo(reason ,loc_to, loc_from, f, int_max, int_min ...@@ -921,6 +877,48 @@ function VgF.Operation.CardsFromTo(reason ,loc_to, loc_from, f, int_max, int_min
end end
end end
---效果伤害的operation函数
---@param val number 伤害的数值
---@param p number 受伤的玩家
function VgF.Operation.Damage(val, p)
return function (e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler()
c:RegisterFlagEffect(FLAG_DAMAGE_TRIGGER, RESET_EVENT + RESETS_STANDARD, 0, 1, val - 1)
Duel.RegisterFlagEffect(p, FLAG_EFFECT_DAMAGE, 0, 0, 1)
VgD.Trigger(e, p, eg, ep, ev, re, r, rp)
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_CUSTOM + EVENT_TRIGGER)
e1:SetRange(LOCATION_ALL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCondition(function (te, ttp, teg, tep, tev, tre, tr, trp)
return Duel.GetFlagEffect(p, FLAG_EFFECT_DAMAGE) > 0
end)
e1:SetOperation(VgD.Trigger)
c:RegisterEffect(e1)
if VgF.GetValueType(VgF.Effect.Damage) == "Effect" then
VgF.Effect.Damage:Reset()
VgF.Effect.Damage = nil
end
VgF.Effect.Damage = e1
end
end
--Card库自定义函数-----------------------------------------------------------------------
---判断c是否在当前区域的某(几)个编号上
---@param c Card 要判断的卡
---@param ... number 编号
---@return boolean 指示是否在给定编号上
function Card.IsSequence(c, ...)
for i, v in ipairs{...} do
if c:GetSequence() == v then
return true
end
end
return false
end
function Card.IsSkill(c, skill) function Card.IsSkill(c, skill)
return c:IsAttribute(skill) return c:IsAttribute(skill)
end end
...@@ -929,6 +927,8 @@ function Card.IsTrigger(c, skill) ...@@ -929,6 +927,8 @@ function Card.IsTrigger(c, skill)
return c:IsRace(skill) return c:IsRace(skill)
end end
--Group库自定义函数-----------------------------------------------------------------------
function Group.ForEach(g, f, ...) function Group.ForEach(g, f, ...)
local ext_params = {...} local ext_params = {...}
if #g == 0 then return end if #g == 0 then return end
...@@ -1056,69 +1056,35 @@ function Group.SelectDoubleSubGroup(g, p, f1, int_min1, int_max1, f2, int_min2, ...@@ -1056,69 +1056,35 @@ function Group.SelectDoubleSubGroup(g, p, f1, int_min1, int_max1, f2, int_min2,
result = Group.__add(result1, result2) result = Group.__add(result1, result2)
return result return result
end end
--Other--------------------------------------------------------------------------------------
---返回p场上的先导者。 ---返回p场上的先导者。
---@param p number 要获取先导者的玩家。不合法则返回nil。 ---@param p number 要获取先导者的玩家。不合法则返回nil。
---@return Card|nil p场上的先导者 ---@return Card|nil p场上的先导者
function VgF.GetVMonster(p) function VgF.GetVMonster(p)
if p ~= 0 and p ~= 1 then return end if p ~= 0 and p ~= 1 then return end
return Duel.GetMatchingGroup(VgF.VMonsterFilter, p, LOCATION_CIRCLE, 0, nil):GetFirst() return Duel.GetMatchingGroup(VgF.Filter.IsV, p, LOCATION_CIRCLE, 0, nil):GetFirst()
end
---判断c是否在前列。
---@param c Card 要判断的卡
---@return boolean 指示c是否是前列的单位
function VgF.FrontFilter(c)
return vgf.IsSequence(c, 0, 4, 5) and c:IsLocation(LOCATION_CIRCLE)
end
---判断c是否在后列。
---@param c Card 要判断的卡
---@return boolean 指示c是否是后列的单位
function VgF.BackFilter(c)
return vgf.IsSequence(c, 1, 2, 3) and c:IsLocation(LOCATION_CIRCLE)
end
function VgF.PrisonFilter(c, ct)
return c:GetSequence() == ct - 1
end end
---收容g(中的每一张卡)到p的监狱。没有监狱时,不操作。 ---收容g(中的每一张卡)到p的监狱。没有监狱时,不操作。
---@param g Card|Group ---@param g Card|Group
---@param p number ---@param p number
function VgF.SendtoPrison(g, p) function VgF.SendtoPrison(g, p)
if not VgF.CheckPrison(p) or not g then return end if not VgF.CheckPrison(p) or not g then return end
local og = Duel.GetFieldGroup(p, LOCATION_ORDER, 0) local og = Duel.GetFieldGroup(p, LOCATION_ORDER, 0)
local oc = og:Filter(VgF.PrisonFilter, nil, og:GetCount()):GetFirst() local oc = og:Filter(Card.IsSequence, nil, og:GetCount() - 1):GetFirst()
if VgF.GetValueType(g) == "Card" then if VgF.GetValueType(g) == "Card" then
VgF.Sendto(LOCATION_ORDER, g, p, POS_FACEUP_ATTACK, REASON_EFFECT) VgF.Sendto(LOCATION_ORDER, g, p, POS_FACEUP_ATTACK, REASON_EFFECT, oc:GetSequence() - 1)
g:RegisterFlagEffect(FLAG_IMPRISON, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, VgF.Stringid(10105015, 0)) g:RegisterFlagEffect(FLAG_IMPRISON, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, VgF.Stringid(10105015, 0))
elseif VgF.GetValueType(g) == "Group" then elseif VgF.GetValueType(g) == "Group" then
for tc in VgF.Next(g) do for tc in VgF.Next(g) do
VgF.Sendto(LOCATION_ORDER, tc, p, POS_FACEUP_ATTACK, REASON_EFFECT) VgF.Sendto(LOCATION_ORDER, tc, p, POS_FACEUP_ATTACK, REASON_EFFECT, oc:GetSequence() - 1)
tc:RegisterFlagEffect(FLAG_IMPRISON, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, VgF.Stringid(10105015, 0)) tc:RegisterFlagEffect(FLAG_IMPRISON, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, VgF.Stringid(10105015, 0))
end end
end end
Duel.MoveSequence(oc, og:GetCount() - 1)
end
--[[
function VgF.PrisonFilter(c, tp)
return c:IsSetCard(0x3040) and not VgF.IsExistingMatchingCard(function (tc)
return tc:GetSequence() < c:GetSequence()
end, tp, LOCATION_ORDER, 0, 1, c)
end end
---收容g(中的每一张卡)到p的监狱。没有监狱时,不操作。
---@param g Card|Group
---@param p number
function VgF.SendtoPrison(g, p)
if not VgF.CheckPrison(p) or not g then return end
local og = Duel.GetFieldGroup(p, LOCATION_ORDER, 0)
local oc = og:Filter(VgF.PrisonFilter, nil, p):GetFirst()
if VgF.GetValueType(g) == "Card" then
Duel.Sendto(g, p, LOCATION_ORDER, POS_FACEUP_ATTACK, REASON_EFFECT, 1)
g:RegisterFlagEffect(FLAG_IMPRISON, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, VgF.Stringid(10105015, 0))
elseif VgF.GetValueType(g) == "Group" then
for tc in VgF.Next(g) do
Duel.Sendto(tc, p, LOCATION_ORDER, POS_FACEUP_ATTACK, REASON_EFFECT, 1)
tc:RegisterFlagEffect(FLAG_IMPRISON, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 0, VgF.Stringid(10105015, 0))
end
end
end]]
---检测p场上有没有监狱。 ---检测p场上有没有监狱。
---@param p number ---@param p number
---@return boolean 指示p场上有没有监狱。 ---@return boolean 指示p场上有没有监狱。
...@@ -1126,37 +1092,7 @@ function VgF.CheckPrison(p) ...@@ -1126,37 +1092,7 @@ function VgF.CheckPrison(p)
local og = Duel.GetFieldGroup(p, LOCATION_ORDER, 0) local og = Duel.GetFieldGroup(p, LOCATION_ORDER, 0)
return og:IsExists(Card.IsSetCard, 1, nil, 0x3040) return og:IsExists(Card.IsSetCard, 1, nil, 0x3040)
end end
--重置Effect
function VgF.EffectReset(c, e, code, con)
if VgF.GetValueType(e) == "Effect" then
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_SET)
e1:SetCode(code)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetRange(LOCATION_ALL)
e1:SetLabelObject(e)
if VgF.GetValueType(con) == "function" then e1:SetCondition(con) end
e1:SetOperation(VgF.EffectResetOperation)
c:RegisterEffect(e1)
elseif VgF.GetValueType(e) == "table" then
for i, v in ipairs(e) do
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_SET)
e1:SetCode(code)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetRange(LOCATION_ALL)
e1:SetLabelObject(v)
if VgF.GetValueType(con) == "function" then e1:SetCondition(con) end
e1:SetOperation(VgF.EffectResetOperation)
c:RegisterEffect(e1)
end
end
end
function VgF.EffectResetOperation(e, tp, eg, ep, ev, re, r, rp)
local e1 = e:GetLabelObject()
if VgF.GetValueType(e1) == "Effect" then e1:Reset() end
e:Reset()
end
function VgF.IsExistingMatchingCard(f, tp, loc_self, loc_op, int, except_g, ...) function VgF.IsExistingMatchingCard(f, tp, loc_self, loc_op, int, except_g, ...)
return VgF.GetMatchingGroupCount(f, tp, loc_self, loc_op, except_g, ...) >= int return VgF.GetMatchingGroupCount(f, tp, loc_self, loc_op, except_g, ...) >= int
end end
...@@ -1178,13 +1114,13 @@ function VgF.SelectMatchingCard(hintmsg, e, select_tp, f, tp, loc_self, loc_op, ...@@ -1178,13 +1114,13 @@ function VgF.SelectMatchingCard(hintmsg, e, select_tp, f, tp, loc_self, loc_op,
end end
elseif bit.band(loc_self, LOCATION_V_CIRCLE) > 0 then elseif bit.band(loc_self, LOCATION_V_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_V_CIRCLE loc_self = loc_self - LOCATION_V_CIRCLE
loc_self_f = VgF.VMonsterFilter loc_self_f = VgF.Filter.IsV
if bit.band(loc_self, LOCATION_CIRCLE) == 0 then if bit.band(loc_self, LOCATION_CIRCLE) == 0 then
loc_self = loc_self + LOCATION_CIRCLE loc_self = loc_self + LOCATION_CIRCLE
end end
elseif bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then elseif bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_R_CIRCLE loc_self = loc_self - LOCATION_R_CIRCLE
loc_self_f = VgF.RMonsterFilter loc_self_f = VgF.Filter.IsR
if bit.band(loc_self, LOCATION_CIRCLE) == 0 then if bit.band(loc_self, LOCATION_CIRCLE) == 0 then
loc_self = loc_self + LOCATION_CIRCLE loc_self = loc_self + LOCATION_CIRCLE
end end
...@@ -1196,13 +1132,13 @@ function VgF.SelectMatchingCard(hintmsg, e, select_tp, f, tp, loc_self, loc_op, ...@@ -1196,13 +1132,13 @@ function VgF.SelectMatchingCard(hintmsg, e, select_tp, f, tp, loc_self, loc_op,
end end
elseif bit.band(loc_op, LOCATION_V_CIRCLE) > 0 then elseif bit.band(loc_op, LOCATION_V_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_V_CIRCLE loc_op = loc_op - LOCATION_V_CIRCLE
loc_op_f = VgF.VMonsterFilter loc_op_f = VgF.Filter.IsV
if bit.band(loc_op, LOCATION_CIRCLE) == 0 then if bit.band(loc_op, LOCATION_CIRCLE) == 0 then
loc_op = loc_op + LOCATION_CIRCLE loc_op = loc_op + LOCATION_CIRCLE
end end
elseif bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then elseif bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_R_CIRCLE loc_op = loc_op - LOCATION_R_CIRCLE
loc_op_f = VgF.RMonsterFilter loc_op_f = VgF.Filter.IsR
if bit.band(loc_op, LOCATION_CIRCLE) == 0 then if bit.band(loc_op, LOCATION_CIRCLE) == 0 then
loc_op = loc_op + LOCATION_CIRCLE loc_op = loc_op + LOCATION_CIRCLE
end end
...@@ -1266,13 +1202,13 @@ function VgF.GetMatchingGroup(f, tp, loc_self, loc_op, except_g, ...) ...@@ -1266,13 +1202,13 @@ function VgF.GetMatchingGroup(f, tp, loc_self, loc_op, except_g, ...)
end end
elseif bit.band(loc_self, LOCATION_V_CIRCLE) > 0 then elseif bit.band(loc_self, LOCATION_V_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_V_CIRCLE loc_self = loc_self - LOCATION_V_CIRCLE
loc_self_f = VgF.VMonsterFilter loc_self_f = VgF.Filter.IsV
if bit.band(loc_self, LOCATION_CIRCLE) == 0 then if bit.band(loc_self, LOCATION_CIRCLE) == 0 then
loc_self = loc_self + LOCATION_CIRCLE loc_self = loc_self + LOCATION_CIRCLE
end end
elseif bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then elseif bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_R_CIRCLE loc_self = loc_self - LOCATION_R_CIRCLE
loc_self_f = VgF.RMonsterFilter loc_self_f = VgF.Filter.IsR
if bit.band(loc_self, LOCATION_CIRCLE) == 0 then if bit.band(loc_self, LOCATION_CIRCLE) == 0 then
loc_self = loc_self + LOCATION_CIRCLE loc_self = loc_self + LOCATION_CIRCLE
end end
...@@ -1284,13 +1220,13 @@ function VgF.GetMatchingGroup(f, tp, loc_self, loc_op, except_g, ...) ...@@ -1284,13 +1220,13 @@ function VgF.GetMatchingGroup(f, tp, loc_self, loc_op, except_g, ...)
end end
elseif bit.band(loc_op, LOCATION_V_CIRCLE) > 0 then elseif bit.band(loc_op, LOCATION_V_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_V_CIRCLE loc_op = loc_op - LOCATION_V_CIRCLE
loc_op_f = VgF.VMonsterFilter loc_op_f = VgF.Filter.IsV
if bit.band(loc_op, LOCATION_CIRCLE) == 0 then if bit.band(loc_op, LOCATION_CIRCLE) == 0 then
loc_op = loc_op + LOCATION_CIRCLE loc_op = loc_op + LOCATION_CIRCLE
end end
elseif bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then elseif bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_R_CIRCLE loc_op = loc_op - LOCATION_R_CIRCLE
loc_op_f = VgF.RMonsterFilter loc_op_f = VgF.Filter.IsR
if bit.band(loc_op, LOCATION_CIRCLE) == 0 then if bit.band(loc_op, LOCATION_CIRCLE) == 0 then
loc_op = loc_op + LOCATION_CIRCLE loc_op = loc_op + LOCATION_CIRCLE
end end
...@@ -1418,6 +1354,95 @@ function VgF.Sendto(loc, sg, ...) ...@@ -1418,6 +1354,95 @@ function VgF.Sendto(loc, sg, ...)
return 0 return 0
end end
function VgF.GetAvailableLocation(tp, zone)
local z
if zone then z = zone else z = 0x1f end
local rg = Duel.GetMatchingGroup(Card.IsPosition, tp, LOCATION_CIRCLE, 0, nil, POS_FACEDOWN_ATTACK)
for tc in VgF.Next(rg) do
local szone = VgF.SequenceToGlobal(tp, tc:GetLocation(), tc:GetSequence())
z = bit.bxor(z, szone)
end
return z
end
---将g(中的每一张卡)Call到单位区。返回Call成功的数量。
---@param g Card|Group 要Call的卡(片组)
---@param sumtype number Call的方式,默认填0
---@param tp number Call的玩家
---@param zone number|string|nil 指示要Call到的格子。<br>前列的R:17; 后列的R:14; 全部的R:31; V:32
---@param pos number|nil 表示形式
---@return number Call成功的数量
function VgF.Call(g, sumtype, tp, zone, pos)
if (VgF.GetValueType(g) ~= "Card" and VgF.GetValueType(g) ~= "Group") or (VgF.GetValueType(g) == "Group" and g:GetCount() == 0) then return 0 end
if VgF.GetValueType(pos) ~= "number" then pos = POS_FACEUP_ATTACK end
if VgF.GetValueType(zone) == "string" and zone == "NoMonster" then
return Duel.SpecialSummon(g, sumtype, tp, tp, false, false, pos)
elseif VgF.GetValueType(zone) == "string" and zone == "FromSouloV" then
local tc = VgF.ReturnCard(g)
if not VgF.IsCanBeCalled(tc, nil, tp, sumtype, pos, "FromSouloV") then return 0 end
VgF.Sendto(0, tc, tp, POS_FACEUP, REASON_EFFECT)
local _, code = tc:GetOriginalCode()
local c = Duel.CreateToken(tp, code)
return VgF.Call(c, sumtype, tp, 0x20, pos)
elseif VgF.GetValueType(zone) == "number" and zone > 0 then
local sc = VgF.ReturnCard(g)
local z = VgF.GetAvailableLocation(tp, zone)
local ct = bit.ReturnCount(z)
local szone
if ct > 1 then
z = bit.bnot(z)
z = bit.bor(z, 0xffffff00)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CallZONE)
szone = Duel.SelectField(tp, 1, LOCATION_CIRCLE, 0, z)
else
szone = z
end
if szone == 0x20 then
if VgF.GetVMonster(tp) then
local tc = VgF.GetVMonster(tp)
local mg = tc:GetOverlayGroup()
if mg:GetCount() ~= 0 then
VgF.Sendto(LOCATION_SOUL, mg, sc)
end
sc:SetMaterial(Group.FromCards(tc))
VgF.Sendto(LOCATION_SOUL, Group.FromCards(tc), sc)
end
elseif VgF.IsExistingMatchingCard(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, 1, nil, tp, szone) then
local tc = Duel.GetMatchingGroup(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, nil, tp, szone):GetFirst()
if bit.band(sumtype, SUMMON_VALUE_OVERDRESS) > 0 then VgF.Sendto(LOCATION_SOUL, Group.FromCards(tc), sc)
else VgF.Sendto(LOCATION_DROP, tc, REASON_COST)
end
end
return Duel.SpecialSummon(sc, sumtype, tp, tp, false, false, pos, szone)
else
local sg
local z = bit.bnot(VgF.GetAvailableLocation(tp))
z = bit.bor(z, 0xffffff00)
if VgF.GetValueType(g) == "Card" then sg = Group.FromCards(g) else sg = Group.Clone(g) end
for sc in VgF.Next(sg) do
if sc:IsLocation(LOCATION_RIDE) then
local rc = Duel.GetMatchingGroup(VgF.Filter.IsV, tp, LOCATION_CIRCLE, 0, nil):GetFirst()
local mg = rc:GetOverlayGroup()
if mg:GetCount() ~= 0 then
VgF.Sendto(LOCATION_SOUL, mg, sc)
end
sc:SetMaterial(Group.FromCards(rc))
VgF.Sendto(LOCATION_SOUL, Group.FromCards(rc), sc)
Duel.SpecialSummonStep(sc, sumtype, tp, tp, false, false, pos, 0x20)
else
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CallZONE)
local szone = Duel.SelectField(tp, 1, LOCATION_CIRCLE, 0, z)
if VgF.IsExistingMatchingCard(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, 1, nil, tp, szone) then
local tc = Duel.GetMatchingGroup(VgD.CallFilter, tp, LOCATION_CIRCLE, 0, nil, tp, szone):GetFirst()
VgF.Sendto(LOCATION_DROP, tc, REASON_COST)
end
Duel.SpecialSummonStep(sc, sumtype, tp, tp, false, false, pos, szone)
z = bit.bor(z, szone)
end
end
return Duel.SpecialSummonComplete()
end
end
-- 白翼能力在你的封锁区中的卡只有奇数的等级的场合有效 -- 白翼能力在你的封锁区中的卡只有奇数的等级的场合有效
function VgF.WhiteWings(e) function VgF.WhiteWings(e)
local tp = e:GetHandlerPlayer() local tp = e:GetHandlerPlayer()
...@@ -1469,50 +1494,38 @@ function VgF.AddRideMaterialCode(c, m, ...) ...@@ -1469,50 +1494,38 @@ function VgF.AddRideMaterialCode(c, m, ...)
table.insert(cm.ride_code, v) table.insert(cm.ride_code, v)
end end
end end
function VgF.AddAlchemagicFrom(c, m, ...)
local cm = _G["c"..m] ---魔合成所用的cost记录
if VgF.GetValueType(cm.cos_from) ~= "table" then cm.cos_from = {} end ---@param m number 所记录的卡的卡号
for i, v in ipairs({...}) do ---@param from table|string|number 费用的卡属于哪个区域
table.insert(cm.cos_from, v) ---@param to table|string|number 费用的卡送去哪个区域
end ---@param min table|number|nil 费用的卡的最少数量
end ---@param max table|number|nil 费用的卡的最多数量
function VgF.AddAlchemagicTo(c, m, ...) ---@param filter table<function<boolean>>|function<boolean>|nil 费用的卡的过滤函数
local cm = _G["c"..m] function VgF.AddAlchemagic(m, from, to, min, max, filter)
if VgF.GetValueType(cm.cos_to) ~= "table" then cm.cos_to = {} end
for i, v in ipairs({...}) do
table.insert(cm.cos_to, v)
end
end
function VgF.AddAlchemagicCountMin(c, m, ...)
local cm = _G["c"..m]
if VgF.GetValueType(cm.cos_val) ~= "table" then cm.cos_val = {} end
for i, v in ipairs({...}) do
table.insert(cm.cos_val, v)
end
end
function VgF.AddAlchemagicCountMax(c, m, ...)
local cm = _G["c"..m]
if VgF.GetValueType(cm.cos_val_max) ~= "table" then cm.cos_val_max = {} end
for i, v in ipairs({...}) do
table.insert(cm.cos_val_max, v)
end
end
function VgF.AddAlchemagicFilter(c, m, ...)
local cm = _G["c"..m] local cm = _G["c"..m]
if VgF.GetValueType(cm.cos_filter) ~= "table" then cm.cos_filter = {} end if #from ~= #to then return end
for i, v in ipairs({...}) do if #from == 0 or #to == 0 then return end
table.insert(cm.cos_filter, v) cm.order_cost = cm.order_cost or {['from'] = {}, ['to'] = {}, ['min'] = {}, ['max'] = {}, ['filter'] = {}}
from = type(from) == "table" and from or { from }
to = type(to) == "table" and to or { to }
min = type(min) == "table" and min or { min }
max = type(max) == "table" and max or { max }
filter = type(filter) == "table" and filter or { filter }
for i, v in ipairs(type(from) == "table" and from or { from }) do
table.insert(cm.order_cost['from'], v)
table.insert(cm.order_cost['to'], to[i])
table.insert(cm.order_cost['min'], min[i] or 1)
table.insert(cm.order_cost['max'], (max[i] and max[i] >= min[i]) and max[i] or min[i])
table.insert(cm.order_cost['filter'], filter[i])
end end
end end
function VgF.AddEffectWhenTrigger(c, m, op, cost, con, tg, chk) function VgF.AddEffectWhenTrigger(c, m, op, cost, con, tg, chk)
local cm = _G["c"..m] local cm = _G["c"..m]
cm.effect_when_trigger = {op, cost, con, tg, chk} cm.effect_when_trigger = {op, cost, con, tg, chk}
end end
function VgF.PlayerEffect(e, tp, eg, ep, ev, re, r, rp)
return true
end
---创建一个函数检查器 检查func是否为nil或函数 ---创建一个函数检查器 检查func是否为nil或函数
function VgF.IllegalFunctionCheck(name, c) function VgF.IllegalFunctionCheck(name, c)
if VgF.GetValueType(c) ~= "Card" then Debug.Message("VgD."..name.." param c isn't Card") end if VgF.GetValueType(c) ~= "Card" then Debug.Message("VgD."..name.." param c isn't Card") end
...@@ -1531,42 +1544,13 @@ end ...@@ -1531,42 +1544,13 @@ end
function VgF.GetLocCondition(loc, con) function VgF.GetLocCondition(loc, con)
local con_exf = VgF.True local con_exf = VgF.True
if loc == LOCATION_R_CIRCLE then if loc == LOCATION_R_CIRCLE then
loc, con_exf = LOCATION_CIRCLE, VgF.RMonsterCondition loc, con_exf = LOCATION_CIRCLE, VgF.Condition.IsR
elseif loc == LOCATION_V_CIRCLE then elseif loc == LOCATION_V_CIRCLE then
loc, con_exf = LOCATION_CIRCLE, VgF.VMonsterCondition loc, con_exf = LOCATION_CIRCLE, VgF.Condition.IsV
end end
loc = loc or LOCATION_CIRCLE loc = loc or LOCATION_CIRCLE
local condition = function(e, tp, eg, ep, ev, re, r, rp) local condition = function(e, tp, eg, ep, ev, re, r, rp)
return (not con or con(e, tp, eg, ep, ev, re, r, rp)) and con_exf(e) return (not con or con(e, tp, eg, ep, ev, re, r, rp)) and con_exf(e)
end end
return loc, condition return loc, condition
end end
\ No newline at end of file
VgF.EffectDamageE = nil
---效果伤害的operation函数
---@param val number 伤害的数值
---@param p number 受伤的玩家
function VgF.EffectDamage(val, p)
return function (e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler()
c:RegisterFlagEffect(FLAG_DAMAGE_TRIGGER, RESET_EVENT + RESETS_STANDARD, 0, 1, val - 1)
Duel.RegisterFlagEffect(p, FLAG_EFFECT_DAMAGE, 0, 0, 1)
VgD.Trigger(e, p, eg, ep, ev, re, r, rp)
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_CUSTOM + EVENT_TRIGGER)
e1:SetRange(LOCATION_ALL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCondition(function (te, ttp, teg, tep, tev, tre, tr, trp)
return Duel.GetFlagEffect(p, FLAG_EFFECT_DAMAGE) > 0
end)
e1:SetOperation(VgD.Trigger)
c:RegisterEffect(e1)
if VgF.GetValueType(VgF.EffectDamageE) == "Effect" then
VgF.EffectDamageE:Reset()
VgF.EffectDamageE = nil
end
VgF.EffectDamageE = e1
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