Commit 9f4e122e authored by jwyxym's avatar jwyxym Committed by GitHub

Add files via upload

parent d4b960bf
......@@ -10,8 +10,8 @@ vgf=VgF
function VgF.VgCard(c)
VgD.Rule(c)
VgF.DefineArguments()
VgD.RideUp(c)
if c:IsType(TYPE_MONSTER) then
VgD.RideUp(c)
VgD.CallToR(c)
VgD.MonsterBattle(c)
end
......@@ -646,8 +646,7 @@ function VgF.SearchCard(loc,f)
end
function VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
if not loc then return end
Duel.Hint(HINT_SELECTMSG,tp ,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,function (c)
local g=VgF.SelectMatchingCard(HINTMSG_ATOHAND,e,tp,function (c)
if VgF.GetValueType(f)=="function" and not f(c) then return false end
return c:IsAbleToHand()
end,tp,loc,0,1,1,nil)
......@@ -670,8 +669,7 @@ function VgF.SearchCardSpecialSummon(loc,f)
end
function VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
if not loc then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local g=Duel.SelectMatchingCard(tp,function (c)
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
if VgF.GetValueType(f)=="function" and not f(c) then return false end
return c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK)
end,tp,loc,0,1,1,nil)
......@@ -752,13 +750,35 @@ function VgF.SendtoPrison(g,p)
end
Duel.MoveSequence(oc,og:GetCount()-1)
end
--[[
function VgF.PrisonFilter(c,tp)
return c:IsSetCard(0x3040) and not Duel.IsExistingMatchingCard(function (tc)
return tc:GetSequence()<c:GetSequence()
end,tp,LOCATION_ORDER,0,1,c)
end
---收容g(中的每一张卡)到p的监狱。没有监狱时,不操作。
---@param g Card|Group
---@param p integer
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(ImprisonFlag,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(ImprisonFlag,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,vgf.Stringid(10105015,0))
end
end
end]]
---检测p场上有没有监狱。
---@param p integer
---@return boolean 指示p场上有没有监狱。
function VgF.CheckPrison(p)
local og=Duel.GetFieldGroup(p,LOCATION_ORDER,0)
local oc=og:Filter(VgF.PrisonFilter,nil,og:GetCount()):GetFirst()
return oc:IsSetCard(0x3040)
return og:IsExists(Card.IsSetCard,1,nil,0x3040)
end
--重置Effect
function VgF.EffectReset(c,e,code,con)
......@@ -790,4 +810,34 @@ 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.SelectMatchingCard(hintmsg,e,select_tp,f,tp,loc_self,loc_op,int_min,int_max,except_g,...)
local a=false
if ((select_tp==tp and loc_self|LOCATION_DECK>0) or (select_tp~=tp and loc_op|LOCATION_DECK>0)) and Duel.SelectYesNo(select_tp,VgF.Stringid(VgID,13)) then
local g=Duel.GetFieldGroup(select_tp,LOCATION_DECK,0)
Duel.DisableShuffleCheck()
Duel.ConfirmCards(select_tp,g)
a=true
end
local g=Group.CreateGroup()
if loc_self|LOCATION_MZONE>0 then
local g1=Duel.GetMatchingGroup(Card.IsCanBeEffectTarget,tp,LOCATION_MZONE,0,nil,e)
loc_self=loc_self-LOCATION_MZONE
if g1:GetCount()>0 then g:Merge(g1) end
end
if loc_op|LOCATION_MZONE>0 then
local g1=Duel.GetMatchingGroup(Card.IsCanBeEffectTarget,tp,0,LOCATION_MZONE,nil,e)
loc_op=loc_op-LOCATION_MZONE
if g1:GetCount()>0 then g:Merge(g1) end
end
local g1=Duel.GetMatchingGroup(nil,tp,0,loc_op,nil)
if g1:GetCount()>0 then g:Merge(g1) end
local g2=Duel.GetMatchingGroup(nil,tp,loc_self,0,nil)
if g2:GetCount()>0 then g:Merge(g2) end
if g:GetCount()>0 then
Duel.Hint(HINT_SELECTMSG,select_tp,hintmsg)
g=g:FilterSelect(select_tp,f,int_min,int_max,except_g,...)
end
if a then Duel.ShuffleDeck(select_tp) end
return g
end
\ No newline at end of file
......@@ -4,8 +4,7 @@ function cm.initial_effect(c)
vgd.CardToG(c,nil,cm.op)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELF)
local tg=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
local tg=vgf.SelectMatchingCard(HINTMSG_SELF,e,tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
if tg:GetCount()>0 then tg:GetFirst():RegisterFlagEffect(DefenseEntirelyFlag,RESET_EVENT+RESETS_STANDARD,0,1) end
local g=Duel.GetFieldGroup(tp,LOCATION_HAND,0)
if g:GetCount()>=2 then
......
......@@ -12,8 +12,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)>=2 and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
local cg=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,2,2,nil)
if Duel.SendtoGrave(cg,REASON_COST)==2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LEAVEONFIELD)
local g=Duel.SelectTarget(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local g=VgF.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
if g then
Duel.HintSelection(g)
Duel.SendtoGrave(g,REASON_EFFECT)
......
......@@ -6,8 +6,7 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
if g then
Duel.HintSelection(g)
vgf.AtkUp(c,g,100000000,nil)
......
......@@ -6,8 +6,7 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
Duel.HintSelection(g)
VgF.AtkUp(c,g,5000,nil)
vgf.SearchCardOP(LOCATION_DROP,cm.filter,e,tp,eg,ep,ev,re,r,rp)
......
......@@ -20,8 +20,7 @@ end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.Overlay(c,g)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -12,8 +12,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
vgf.OverlayFill(1)
Duel.BreakEffect()
if Duel.GetFlagEffectLabel(tp,ConditionFlag)==10102001 and Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,nil) and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DAMAGE)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_DAMAGE,e,tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,1,nil)
Duel.ChangePosition(g,POS_FACEDOWN_ATTACK)
vgf.AtkUp(c,c,15000)
end
......
......@@ -38,8 +38,7 @@ function cm.filter(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RMONSTER)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
if g:GetCount()>0 then
Duel.HintSelection(g)
Duel.ChangePosition(g,POS_FACEUP_ATTACK)
......
......@@ -25,8 +25,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(vgf.IsLevel,tp,LOCATION_HAND,0,3,nil,3) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local g=Duel.SelectMatchingCard(tp,vgf.IsLevel,tp,LOCATION_HAND,0,3,3,nil,3)
local g=vgf.SelectMatchingCard(HINTMSG_CONFIRM,e,tp,vgf.IsLevel,tp,LOCATION_HAND,0,3,3,nil,3)
Duel.ConfirmCards(1-tp,g)
end
function cm.condition(e,c)
......
......@@ -7,8 +7,7 @@ function cm.initial_effect(c)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(vgf.IsLevel,tp,LOCATION_HAND,0,2,nil,3) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local g=Duel.SelectMatchingCard(tp,vgf.IsLevel,tp,LOCATION_HAND,0,2,2,nil,3)
local g=vgf.SelectMatchingCard(HINTMSG_CONFIRM,e,tp,vgf.IsLevel,tp,LOCATION_HAND,0,2,2,nil,3)
Duel.ConfirmCards(1-tp,g)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
......@@ -24,8 +23,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
if g:GetCount()>0 then
vgf.AtkUp(c,g,5000)
end
......
......@@ -6,8 +6,7 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
if g then
Duel.HintSelection(g)
VgF.AtkUp(c,g,10000,nil)
......
......@@ -7,8 +7,7 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,2,REASON_EFFECT)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
if g then
Duel.HintSelection(g)
VgF.AtkUp(c,g,5000)
......
......@@ -9,8 +9,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local ct=1
if c:IsSummonType(SUMMON_TYPE_SELFRIDE) then ct=3 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,vgf.RMonsterFilter,tp,LOCATION_MZONE,0,1,ct,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.RMonsterFilter,tp,LOCATION_MZONE,0,1,ct,nil)
if g then
Duel.Hintselectgion(g)
for tc in vgf.Next(g) do
......
......@@ -18,8 +18,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,nil) and Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)>=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DAMAGE)
local g1=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,1,nil)
local g1=vgf.SelectMatchingCard(HINTMSG_DAMAGE,e,tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,1,nil)
Duel.ChangePosition(g1,POS_FACEDOWN)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g2=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil)
......
......@@ -7,8 +7,7 @@ function cm.initial_effect(c)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local atk=5000
if Duel.IsExistingMatchingCard(vgf.IsSequence,tp,LOCATION_MZONE,0,3,nil,1,2,3) then atk=15000 end
if g then
......
......@@ -14,7 +14,6 @@ function cm.filter(c)
end
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
if not vgf.CheckPrison(tp) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_IMPRISON)
local g1=Duel.SelectMatchingCard(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,2,2,nil)
local g1=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,2,2,nil)
vgf.SendtoPrison(g1,tp)
end
\ No newline at end of file
......@@ -7,8 +7,7 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not vgf.CheckPrison(tp) then return end
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_IMPRISON)
local g=Duel.SelectMatchingCard(1-tp,nil,tp,0,LOCATION_HAND,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,1-tp,nil,tp,0,LOCATION_HAND,1,1,nil)
vgf.SendtoPrison(g,tp)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -23,8 +23,7 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,nil) and Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)>=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DAMAGE)
local g1=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,1,nil)
local g1=vgf.SelectMatchingCard(HINTMSG_DAMAGE,e,tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,1,nil)
Duel.ChangePosition(g1,POS_FACEDOWN)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g2=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil)
......
......@@ -10,7 +10,6 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not vgf.CheckPrison(tp) then return end
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_IMPRISON)
local g=Duel.SelectMatchingCard(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,0,2,nil)
local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,0,2,nil)
vgf.SendtoPrison(g,tp)
end
\ No newline at end of file
......@@ -10,7 +10,6 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not vgf.CheckPrison(tp) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_IMPRISON)
local g=Duel.SelectMatchingCard(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_IMPRISON,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
vgf.SendtoPrison(g,tp)
end
\ No newline at end of file
......@@ -4,6 +4,14 @@ function cm.initial_effect(c)
vgd.ContinuousSpell(c)
vgd.EffectTypeTrigger(c,m,loc,EFFECT_TYPE_SINGLE,EVENT_MOVE,vgf.OverlayFill(3),cost,cm.con)
vgd.EffectTypeTrigger(c,m,LOCATION_ORDER,EFFECT_TYPE_FIELD,EVENT_SPSUMMON_SUCCESS,cm.op1,cm.cost1,cm.con1,tg,count,EFFECT_FLAG_BOTH_SIDE)
local e1=Effect.CreateEffect(c)
e1:SetRange(LOCATION_HAND)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetOperation(function (e,tp)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_HAND+LOCATION_DECK,0,1,1,nil)
Duel.Sendto(g,tp,LOCATION_DECK,POS_FACEUP_ATTACK,REASON_RULE,1)
end)
c:RegisterEffect(e1)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsLocation(LOCATION_ORDER)
......@@ -29,14 +37,13 @@ function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(g,REASON_COST)
e:SetLabel(1)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DAMAGE)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,num,nil)
local g=vgf.SelectMatchingCard(HINTMSG_DAMAGE,e,tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,num,nil)
Duel.ChangePosition(g,POS_FACEDOWN_ATTACK)
e:SetLabel(2)
end
end
function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.filter,1,nil,e) and eg:Count()==1
return eg:IsExists(cm.filter,1,nil,e) and eg:GetCount()==1
end
function cm.filter(c,e)
return c:IsSummonType(SUMMON_VALUE_CALL) and c:GetControler()~=e:GetHandler():GetControler()
......@@ -45,8 +52,7 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local zone=vgf.GetAvailableLocation(tp)
local ct=bit.ReturnCount(zone)
if ct>e:GetLabel() then ct=e:GetLabel() end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local g=Duel.SelectMatchingCard(tp,cm.filter1,tp,0,LOCATION_ORDER,ct,ct,nil,e,tp)
local g=vgf.SelectMatchingCard(HINTMSG_CALL,e,tp,cm.filter1,tp,0,LOCATION_ORDER,ct,ct,nil,e,tp)
Duel.HintSelection(g)
for tc in vgf.Next(g) do
if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) then
......
......@@ -50,7 +50,7 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.SelectTarget(tp,vgf.VMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil):GetFirst()
local tc=VgF.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.VMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil):GetFirst()
if tc:GetAttack()>1 then
local atk=tc:GetAttack()-1
vgf.AtkUp(c,tc,-atk)
......
......@@ -9,9 +9,8 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return VgF.GetVMonster(tp):IsSetCard(0xe8) and VgF.RMonsterFilter(e:GetHandler())
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local c=e:GetHandler()
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_GRAVE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,nil,tp,LOCATION_GRAVE,0,1,1,nil)
if g:GetCount()>0 then
Duel.Overlay(VgF.GetVMonster(tp),g)
end
......
......@@ -13,8 +13,7 @@ function cm.con(e,tp,eg,ep,ev,re,r,rp)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp)
local g=vgf.SelectMatchingCard(HINTMSG_CALL,e,tp,cm.filter,tp,LOCATION_HAND,0,1,1,nil,e,tp)
if vgf.Call(g,SUMMON_VALUE_REVOLT,tp,0x20)>0 then
local mg=Duel.GetOperatedGroup()
vgd.TriggerCountUp(c,-2,RESET_PHASE+PHASE_END,mg)
......
......@@ -17,8 +17,7 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,1,2,nil)
local g=vgf.SelectMatchingCard(HINTMSG_RTOHAND,e,tp,cm.filter,tp,LOCATION_MZONE,0,1,2,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
end
......@@ -35,8 +34,7 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local ct=bit.ReturnCount(zone)
zone=bit.bor(zone,0xffffff00)
if ct>2 then ct=2 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local g=Duel.SelectMatchingCard(tp,Card.IsCanBeSpecialSummoned,tp,LOCATION_HAND,0,0,ct,nil,e,0,tp,false,false,POS_FACEUP_ATTACK)
local g=vgf.SelectMatchingCard(HINTMSG_CALL,e,tp,Card.IsCanBeSpecialSummoned,tp,LOCATION_HAND,0,0,ct,nil,e,0,tp,false,false,POS_FACEUP_ATTACK)
if g:GetCount()==1 then
vgf.Call(g,0,tp)
elseif g:GetCount()==2 then
......
......@@ -6,8 +6,7 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_RTOHAND,e,tp,cm.filter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.HintSelection(g)
Duel.SendtoHand(g,nil,REASON_EFFECT)
end
......
......@@ -15,8 +15,7 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if vgf.GetAvailableLocation(tp)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_Call)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
local g=vgf.SelectMatchingCard(HINTMSG_Call,e,tp,cm.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
Duel.HintSelection(g)
vgf.Call(g,0,tp,nil,POS_FACEUP_DEFENSE)
end
......
......@@ -28,8 +28,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
else
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local tg=Duel.SelectMatchingCard(tp,Card.IsDiscardable,tp,LOCATION_HAND,0,1,1,nil,REASON_EFFECT)
local tg=vgf.SelectMatchingCard(HINTMSG_DISCARD,e,tp,Card.IsDiscardable,tp,LOCATION_HAND,0,1,1,nil,REASON_EFFECT)
Duel.SendtoGrave(tg,REASON_COST)
end
end
\ No newline at end of file
......@@ -6,8 +6,7 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_VMONSTER)
local g=Duel.SelectMatchingCard(tp,vgf.VMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,vgf.VMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_FIELD,5000,nil,cm.tg,g:GetFirst(),EFFECT_UPDATE_ATTACK,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,LOCATION_MZONE,LOCATION_MZONE)
end
function cm.tg(e,c)
......
......@@ -7,8 +7,7 @@ function cm.initial_effect(c)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,2,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_MZONE,0,2,2,nil)
local g=vgf.SelectMatchingCard(HINTMSG_POSCHANGE,e,tp,cm.filter,tp,LOCATION_MZONE,0,2,2,nil)
Duel.ChangePosition(g,POS_FACEUP_DEFENCE)
end
function cm.filter(c)
......@@ -16,8 +15,7 @@ function cm.filter(c)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LEAVEONFIELD)
local g=Duel.SelectTarget(tp,vgf.VMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local g=VgF.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.VMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
if g:GetCount()>0 then Duel.SendtoGrave(g,REASON_EFFECT) end
vgf.AtkUp(c,c,10000)
end
......
......@@ -20,8 +20,7 @@ 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)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LEAVEONFIELD)
local g=Duel.SelectTarget(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local g=VgF.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
if g then
Duel.HintSelection(g)
Duel.SendtoGrave(g,REASON_EFFECT)
......
......@@ -8,16 +8,14 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Draw(tp,1,REASON_TRIGGER)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CRITICAL_STRIKE)
local g1=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local g1=vgf.SelectMatchingCard(HINTMSG_CRITICAL_STRIKE,e,tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
Duel.HintSelection(g1)
VgF.StarUp(c,g1,1,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g2=Duel.GetMatchingGroup(VgF.IsSequence,tp,LOCATION_MZONE,0,nil,0,4,5)
VgF.AtkUp(c,g2,10000,nil)
if Duel.GetMatchingGroupCount(nil,tp,LOCATION_DAMAGE,0,nil)>=Duel.GetMatchingGroupCount(nil,tp,0,LOCATION_DAMAGE,nil) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODROP)
local tc=Duel.SelectMatchingCard(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()
if tc then
Duel.SendtoGrave(tc,REASON_TRIGGER)
end
......
......@@ -18,8 +18,7 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CRITICAL_STRIKE)
local g=Duel.SelectMatchingCard(tp,vgf.VMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_CRITICAL_STRIKE,e,tp,vgf.VMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
if g:GetCount()>0 then
local e1=VgF.StarUp(c,g,1,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED)
......
......@@ -10,8 +10,7 @@ function cm.initial_effect(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_GRAVE,0,0,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,nil,tp,LOCATION_GRAVE,0,0,1,nil)
if g:GetCount()>0 then
Duel.Overlay(VgF.GetVMonster(tp),g)
end
......
......@@ -13,8 +13,7 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.OverlayFillOP(1,e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LEAVEONFIELD)
local g=Duel.SelectTarget(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local g=VgF.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoGrave(g,REASON_EFFECT)
end
......
......@@ -18,11 +18,10 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LEAVEONFIELD)
local g=Duel.SelectTarget(tp,cm.fliter,tp,0,LOCATION_MZONE,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoGrave(g,REASON_EFFECT)
end
local g=VgF.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,cm.fliter,tp,0,LOCATION_MZONE,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoGrave(g,REASON_EFFECT)
end
end
function cm.fliter(c)
return vgf.RMonsterFilter(c) and c:IsLevelAbove(3)
......
......@@ -6,7 +6,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_MONSTER)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
if g:GetCount()>0 then
local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then
......
......@@ -16,7 +16,7 @@ end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetMatchingGroupCount(nil,tp,0,LOCATION_HAND,nil)>=1 end
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local g=Duel.SelectMatchingCard(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)
Duel.HintSelection(g)
Duel.Overlay(rc,g)
end
......
......@@ -5,8 +5,7 @@ function cm.initial_effect(c)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_MONSTER)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_MONSTER,e,tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
if g:GetCount()>0 then
local tc=g:GetFirst()
if vgf.RMonsterFilter(tc) then
......
......@@ -12,7 +12,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local e1=Duel.GetMatchingGroupCount(nil,tp,LOCATION_OVERLAY,0,nil)/5
local e2=e1*10000
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,nil,tp,LOCATION_MZONE,0,1,1,nil)
Duel.HintSelection(g)
VgF.AtkUp(c,g,e2,nil)
if Duel.GetMatchingGroupCount(nil,tp,LOCATION_OVERLAY,0,nil)>=10 then
......
......@@ -18,7 +18,7 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Draw(tp,1,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,cm.filter1,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,cm.filter1,tp,LOCATION_MZONE,0,1,1,nil)
vgf.AtkUp(c,g,5000)
end
......
......@@ -6,8 +6,7 @@ function cm.initial_effect(c)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_ORDER,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_FACEUP,e,tp,cm.filter,tp,LOCATION_ORDER,0,1,1,nil)
Duel.HintSelection(g)
Duel.RaiseEvent(g,EVENT_CUSTOM+EVENT_SING,e,0,tp,tp,0)
end
......@@ -20,8 +19,7 @@ function cm.con2(e,tp,eg,ep,ev,re,r,rp)
end
function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_ORDER,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_FACEUP,e,tp,cm.filter,tp,LOCATION_ORDER,0,1,1,nil)
Duel.HintSelection(g)
Duel.RaiseEvent(g,EVENT_CUSTOM+EVENT_SING,e,0,tp,tp,0)
local e1=Effect.CreateEffect(c)
......
......@@ -20,8 +20,7 @@ function cm.filter1(c)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_HAND+LOCATION_DECK,0,0,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_TOFIELD,e,tp,cm.filter,tp,LOCATION_HAND+LOCATION_DECK,0,0,1,nil)
if #g>0 then
local tc=g:GetFirst()
local chk=tc:IsLocation(LOCATION_HAND)
......
......@@ -7,8 +7,7 @@ function cm.initial_effect(c)
vgd.BeRidedByCard(c,m,nil,cm.operation,nil,nil)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOFIELD)
local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_HAND+LOCATION_DECK,0,0,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_TOFIELD,e,tp,cm.filter,tp,LOCATION_HAND+LOCATION_DECK,0,0,1,nil)
if #g>0 then
local tc=g:GetFirst()
local chk=tc:IsLocation(LOCATION_HAND)
......
......@@ -7,8 +7,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Draw(tp,1,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATKUP)
local g=Duel.SelectMatchingCard(tp,vgf.VMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATKUP,e,tp,vgf.VMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
vgf.AtkUp(c,g,5000)
Duel.ChangePosition(c,POS_FACEDOWN_ATTACK)
end
......
......@@ -25,8 +25,7 @@ end
--效果二处理
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LEAVEONFIELD)
local g=Duel.SelectTarget(tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
local g=VgF.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.RMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
if g then
Duel.HintSelection(g)
Duel.SendtoGrave(g,REASON_EFFECT)
......
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