Commit 20c6885c authored by ikaros131417's avatar ikaros131417 Committed by GitHub

Merge branch 'vgdpro:main' into main

parents d597aafa 9f5f243f
......@@ -27,7 +27,7 @@ function VgD.RideUpFilter1(c,e,lv,code,rc)
if rc:IsAttribute(SKILL_SELF_RIDE) and c:IsCode(code) then
return false
end
return ((c:IsLevel(lv,lv+1) and c:IsLocation(LOCATION_HAND)) or (c:IsLevel(lv+1) and c:IsLocation(LOCATION_RIDE) and Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil))) and c:IsType(TYPE_MONSTER) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RIDE,tp,false,false,POS_FACEUP_ATTACK)
return ((c:IsLevel(lv,lv+1) and c:IsLocation(LOCATION_HAND)) or (c:IsLevel(lv+1) and c:IsLocation(LOCATION_RIDE) and Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,1,nil))) and c:IsType(TYPE_MONSTER)
end
function VgD.DisCardRideUpFilter(c,e,lv,code,rc)
local tp=c:GetControler()
......@@ -35,7 +35,7 @@ function VgD.DisCardRideUpFilter(c,e,lv,code,rc)
end
function VgD.RideUpFilter2(c,e,lv,code,rc)
local tp=e:GetHandlerPlayer()
return c:IsLevel(lv) and c:IsType(TYPE_MONSTER) and c:IsCode(code) and rc:IsAttribute(SKILL_SELF_RIDE) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_SELFRIDE,tp,false,false,POS_FACEUP_ATTACK)
return c:IsLevel(lv) and c:IsType(TYPE_MONSTER) and c:IsCode(code) and rc:IsAttribute(SKILL_SELF_RIDE)
end
function VgD.RideUpCondition(e,tp,eg,ep,ev,re,r,rp)
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
......@@ -77,18 +77,18 @@ function VgD.RideUpOperation(e,tp,eg,ep,ev,re,r,rp)
if sc:IsLocation(LOCATION_EXTRA) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local g=Duel.SelectMatchingCard(tp,VgD.DisCardRideUpFilter,tp,LOCATION_HAND,0,1,1,nil,e,lv,code,rc)
Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD)
VgF.Sendto(LOCATION_DROP,g,REASON_COST+REASON_DISCARD)
end
local mg=rc:GetOverlayGroup()
if mg:GetCount()~=0 then
Duel.Overlay(sc,mg)
VgF.Sendto(LOCATION_OVERLAY,mg,sc)
end
sc:SetMaterial(Group.FromCards(rc))
Duel.Overlay(sc,Group.FromCards(rc))
VgF.Call(sc,SUMMON_TYPE_RIDE,tp,0x20)
VgF.Sendto(LOCATION_OVERLAY,Group.FromCards(rc),sc)
vgf.Sendto(LOCATION_MZONE,sc,SUMMON_TYPE_RIDE,tp,0x20)
if Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_RIDE,0,1,nil,TYPE_EMBLEM) then
local tc=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_RIDE,0,nil,TYPE_EMBLEM):GetFirst()
Duel.Sendto(tc,tp,LOCATION_EMBLEM,POS_FACEUP_DEFENSE,REASON_EFFECT)
VgF.Sendto(LOCATION_EMBLEM,tc,tp,POS_FACEUP_DEFENSE,REASON_EFFECT)
end
elseif sel==0 or (sel==1 and a and b) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
......@@ -96,11 +96,11 @@ function VgD.RideUpOperation(e,tp,eg,ep,ev,re,r,rp)
local sc=sg:GetFirst()
local mg=rc:GetOverlayGroup()
if mg:GetCount()~=0 then
Duel.Overlay(sc,mg)
VgF.Sendto(LOCATION_OVERLAY,mg,sg)
end
sc:SetMaterial(Group.FromCards(rc))
Duel.Overlay(sc,Group.FromCards(rc))
VgF.Call(sc,SUMMON_TYPE_SELFRIDE,tp,0x20)
VgF.Sendto(LOCATION_OVERLAY,Group.FromCards(rc),sc)
vgf.Sendto(LOCATION_MZONE,sc,SUMMON_TYPE_SELFRIDE,tp,0x20)
Duel.Draw(tp,1,REASON_EFFECT)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
......@@ -113,24 +113,21 @@ function VgD.RideUpOperation(e,tp,eg,ep,ev,re,r,rp)
end
end
function VgD.SelfRideAtk(e,c)
return vgf.IsSequence(c,0,4,5)
return VgF.IsSequence(c,0,4,5)
end
function VgD.RideZeroCondition(e,tp,eg,ep,ev,re,r,rp)
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
if rc then return false end
local ct=Duel.GetMatchingGroupCount(VgD.RideZeroFilter,tp,LOCATION_RIDE,0,nil,e,tp)
local ct=Duel.GetMatchingGroupCount(VgF.IsLevel,tp,LOCATION_RIDE,0,nil,0)
return VgF.RuleTurnCondtion(e) and ct>0 and VgF.RuleCardCondtion(e)
end
function VgD.RideZeroOperation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(VgD.RideZeroFilter,tp,LOCATION_RIDE,0,nil,e,tp)
local g=Duel.GetMatchingGroup(VgF.IsLevel,tp,LOCATION_RIDE,0,nil,0)
if g:GetCount()>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
g=g:Select(tp,1,1,nil)
end
VgF.Call(g,SUMMON_TYPE_RIDE,tp,0x20)
end
function VgD.RideZeroFilter(c,e,tp)
return VgF.IsLevel(c,0) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RIDE,tp,false,false,POS_FACEUP_ATTACK)
vgf.Sendto(LOCATION_MZONE,g,SUMMON_TYPE_RIDE,tp,0x20)
end
--Call到R位
function VgD.CallToR(c)
......@@ -149,7 +146,7 @@ function VgD.CallCondition(e,c)
if c==nil then return true end
local tp=e:GetHandlerPlayer()
if VgF.GetAvailableLocation(tp)<=0 then return end
return VgF.LvCondition(e) and c:IsCanBeSpecialSummoned(e,SUMMON_VALUE_CALL,tp,false,false,POS_FACEUP_ATTACK)
return VgF.LvCondition(e)
end
function VgD.CallFilter(c,tp,zone)
return VgF.RMonsterFilter(c) and zone==VgF.SequenceToGlobal(tp,c:GetLocation(),c:GetSequence())
......@@ -166,7 +163,7 @@ function VgD.CallOperation(e,tp,eg,ep,ev,re,r,rp)
local zone=Duel.SelectField(tp,1,LOCATION_MZONE,0,z)
if Duel.IsExistingMatchingCard(VgD.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,zone) then
local tc=Duel.GetMatchingGroup(VgD.CallFilter,tp,LOCATION_MZONE,0,nil,tp,zone):GetFirst()
Duel.SendtoGrave(tc,REASON_COST)
VgF.Sendto(LOCATION_DROP,tc,REASON_COST)
end
e:SetValue(function () return SUMMON_VALUE_CALL,zone end)
end
......@@ -194,7 +191,7 @@ function VgD.OverDressCondition(f)
return function (e,c)
if c==nil then return true end
local tp=e:GetHandlerPlayer()
return VgF.LvCondition(e) and c:IsCanBeSpecialSummoned(e,SUMMON_VALUE_CALL,tp,false,false,POS_FACEUP_ATTACK) and Duel.IsExistingMatchingCard(VgD.OverDressFilter,tp,LOCATION_MZONE,0,1,nil,f)
return VgF.LvCondition(e) and Duel.IsExistingMatchingCard(VgD.OverDressFilter,tp,LOCATION_MZONE,0,1,nil,f)
end
end
function VgD.OverDressFilter(c,f,zone)
......@@ -241,15 +238,15 @@ function VgD.OverDressOperation(f)
if not tc then return end
local mg=tc:GetOverlayGroup()
if mg:GetCount()~=0 then
Duel.Overlay(c,mg)
VgF.Sendto(LOCATION_OVERLAY,mg,c)
end
c:SetMaterial(Group.FromCards(tc))
Duel.Overlay(c,Group.FromCards(tc))
VgF.Sendto(LOCATION_OVERLAY,Group.FromCards(tc),c)
end
end
function VgD.OverDressSum(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
c:RegisterFlagEffect(ConditionFlag,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,201,vgf.Stringid(10101006,0))
c:RegisterFlagEffect(ConditionFlag,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,201,VgF.Stringid(10101006,0))
end
--战斗阶段
......@@ -317,20 +314,19 @@ function VgD.MonsterBattle(c)
c:RegisterEffect(e9)
--防御
local e7=Effect.CreateEffect(c)
e7:SetCategory(CATEGORY_DEFENDER)
e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e7:SetCode(EVENT_BATTLE_START)
e7:SetRange(LOCATION_MZONE)
e7:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e7:SetCountLimit(1,EFFECT_COUNT_CODE_CHAIN)
e7:SetCondition(VgD.SendToGCondition(VgF.IsAbleToGZone))
e7:SetCondition(VgD.SendToGCondition(LOCATION_MZONE))
e7:SetOperation(VgD.SendToGOperation)
c:RegisterEffect(e7)
local e17=e7:Clone()
e17:SetRange(LOCATION_HAND)
e17:SetCost(VgD.SendToGCost)
e17:SetCondition(VgD.SendToGCondition(function (tc)
tc:IsType(TYPE_MONSTER)
end))
e17:SetCondition(VgD.SendToGCondition(LOCATION_HAND))
c:RegisterEffect(e17)
local e8=Effect.CreateEffect(c)
e8:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
......@@ -389,7 +385,7 @@ end
function VgD.TriggerCard(e,tp,eg,ep,ev,re,r,rp)
local tg=Duel.GetDecktopGroup(tp,1)
Duel.DisableShuffleCheck()
Duel.MoveToField(tg:GetFirst(),tp,tp,LOCATION_TRIGGER,POS_FACEUP,true)
VgF.Sendto(LOCATION_TRIGGER,tg:GetFirst(),tp,tp,POS_FACEUP,true)
end
function VgD.MonsterPosDefenseOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......@@ -445,13 +441,13 @@ function VgD.SupportValue(e)
local g=Duel.GetMatchingGroup(function (c)
return c:GetFlagEffect(SupportFlag)>0
end,tp,LOCATION_MZONE,0,nil)
for tc in vgf.Next(g) do
for tc in VgF.Next(g) do
atk=atk+tc:GetAttack()
end
return atk
elseif Duel.GetAttackTarget()==e:GetHandler() then
local g=Duel.GetMatchingGroup(nil,tp,LOCATION_GZONE,0,nil)
for tc in vgf.Next(g) do
for tc in VgF.Next(g) do
local def=tc:GetDefense()
if def<0 then def=0 end
atk=atk+def
......@@ -463,35 +459,34 @@ function VgD.SupportValue(e)
end
function VgD.SendToGCost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,OAFFECT_CODE_SENDTOG) or Duel.IsExistingMatchingCard(nil,tp,LOCATION_GZONE,0,1,nil) or Duel.IsExistingMatchingCard(VgF.IsAbleToGZone,tp,LOCATION_HAND,0,1,c) end
if chk==0 then return not Duel.IsPlayerAffectedByEffect(tp,OAFFECT_CODE_SENDTOG) or Duel.IsExistingMatchingCard(nil,tp,LOCATION_GZONE,0,1,nil) or Duel.IsExistingMatchingCard(VgF.IsAbleToGZone,tp,LOCATION_HAND,0,1,c,LOCATION_HAND) end
if Duel.IsPlayerAffectedByEffect(tp,OAFFECT_CODE_SENDTOG) and not Duel.IsExistingMatchingCard(nil,tp,LOCATION_GZONE,0,1,nil) then
local tc=Duel.SelectMatchingCard(tp,VgF.IsAbleToGZone,tp,LOCATION_HAND,0,1,1,c)
local tc=Duel.SelectMatchingCard(tp,VgF.IsAbleToGZone,tp,LOCATION_HAND,0,1,1,c,LOCATION_HAND)
tc=VgF.ReturnCard(tc)
Duel.ConfirmCards(1-tp,tc)
e:SetLabelObject(tc)
end
end
function VgD.SendToGCondition(f)
function VgD.SendToGCondition(loc)
return function(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local bc=Duel.GetAttackTarget()
return bc and bc:IsControler(tp) and bc~=c and (vgf.GetValueType(f)~="function" or f(c))
return bc and bc:IsControler(tp) and bc~=c and VgF.IsAbleToGZone(c,loc)
end
end
function VgD.SendToGOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local bc=Duel.GetAttackTarget()
local tc=e:GetLabelObject()
local g=Group.FromCards(c)
if tc then
tc=VgF.ReturnCard(tc)
g:AddCard(tc)
end
Duel.Sendto(g,tp,LOCATION_GZONE,POS_FACEUP,REASON_EFFECT)
VgF.Sendto(LOCATION_GZONE,g,tp,POS_FACEUP,REASON_EFFECT)
end
function VgD.GToGraveOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.SendtoGrave(c,REASON_RULE)
VgF.Sendto(LOCATION_DROP,c,REASON_RULE)
end
function VgD.MonsterAttackAnnounceCondition(e,c)
return e:GetHandler():IsPosition(POS_DEFENSE) or (VgF.IsSequence(e:GetHandler(),1,2,3) and e:GetHandler():GetFlagEffect(AttackAtRearFlag)==0)
......@@ -499,9 +494,8 @@ end
function VgD.MonsterAttackCondition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not VgF.VMonsterFilter(c) then return false end
local bc=c:GetBattleTarget()
local a=c:GetFlagEffectLabel(AttackTriggerFlag) and c:GetFlagEffectLabel(AttackTriggerFlag)>0
return bc and Duel.GetAttackTarget()==bc and a
return a and Duel.GetAttacker()==c
end
function VgD.MonsterAttackCost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
......@@ -589,7 +583,7 @@ function VgD.CardTriggerOperation(chkop,f)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODROP)
local tc=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_DAMAGE,0,1,1,nil):GetFirst()
if tc then
Duel.SendtoGrave(tc,REASON_TRIGGER)
VgF.Sendto(LOCATION_DROP,tc,REASON_TRIGGER)
Duel.Recover(tp,1,REASON_RULE)
end
end
......@@ -604,9 +598,9 @@ function VgD.CardTriggerOperation(chkop,f)
Duel.HintSelection(g)
VgF.AtkUp(c,g,100000000,nil)
Duel.Draw(tp,1,REASON_TRIGGER)
Duel.Exile(c,REASON_TRIGGER)
VgF.Sendto(LOCATION_EXILE,c,REASON_TRIGGER)
else
Duel.Sendto(c,tp,LOCATION_DAMAGE,POS_FACEUP_ATTACK,REASON_EFFECT)
VgF.Sendto(LOCATION_DAMAGE,c,tp,POS_FACEUP_ATTACK,REASON_EFFECT)
Duel.Damage(tp,1,REASON_TRIGGER)
end
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
......@@ -630,10 +624,9 @@ function VgD.CardTriggerOperation(chkop,f)
VgF.AtkUp(c,g,100000000,nil)
if f then f(e,tp,eg,ep,ev,re,r,rp) end
Duel.Draw(tp,1,REASON_TRIGGER)
Duel.Exile(c,REASON_TRIGGER)
VgF.Sendto(LOCATION_EXILE,c,REASON_TRIGGER)
else
Duel.SendtoHand(c,nil,REASON_TRIGGER)
Duel.ConfirmCards(1-tp,c)
VgF.Sendto(LOCATION_HAND,c,nil,REASON_TRIGGER)
end
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local label=rc:GetFlagEffectLabel(AttackTriggerFlag)
......@@ -784,7 +777,7 @@ function VgF.MixFilter(mg, cf, cval, bf, bmin, bmax, bval)
end
end
function VgD.MixCostFilter(c,e,tp,eg,ep,ev,re,r,rp,mc)
if Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_MIX_DIFFERENT_NAME) and c:IsCode(mc:GetCode()) then return false end
if Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_MIX_DIFFERENT_NAME) and c:IsCode(mc:GetCode()) then return false end
local ce = c:GetActivateEffect()
if not ce or (ce:GetCost() and not ce:GetCost()(e,tp,eg,ep,ev,re,r,rp,0)) then return false end
local cg, cval = mc.cos_g, mc.cos_val
......@@ -798,17 +791,17 @@ function VgD.MixCostFilter(c,e,tp,eg,ep,ev,re,r,rp,mc)
local bmin = table.remove(bval, 1)
local bmax = table.remove(bval, 1)
local mix_f = VgF.MixFilter(mg, cf, cval, bf, bmin, bmax, bval)
return mg:CheckSubGroup(mix_f, min, max) and c:IsAbleToRemoveAsCost() and VgF.LvCondition(c)
return mg:CheckSubGroup(mix_f, min, max) and VgF.LvCondition(c)
end
function VgD.MixCost(cost)
return function(e,tp,eg,ep,ev,re,r,rp,chk,bool)
local c=e:GetHandler()
if chk==0 then return VgF.GetValueType(cost)~="function" or cost(e,tp,eg,ep,ev,re,r,rp,0) end
if not bool and (Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_MIX) and Duel.IsExistingMatchingCard(VgD.MixCostFilter,tp,LOCATION_GRAVE,0,1,nil,e,tp,eg,ep,ev,re,r,rp,c) and Duel.SelectYesNo(tp,VgF.Stringid(VgID,6))) then
local bc=Duel.SelectMatchingCard(tp,VgD.MixCostFilter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp,c):GetFirst()
if not bool and (Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_MIX) and Duel.IsExistingMatchingCard(VgD.MixCostFilter,tp,LOCATION_DROP,0,1,nil,e,tp,eg,ep,ev,re,r,rp,c) and Duel.SelectYesNo(tp,VgF.Stringid(VgID,6))) then
local bc=Duel.SelectMatchingCard(tp,VgD.MixCostFilter,tp,LOCATION_DROP,0,1,1,nil,e,tp,eg,ep,ev,re,r,rp,c):GetFirst()
if cost then cost(e,tp,eg,ep,ev,re,r,rp) end
if bc then
Duel.Remove(bc,POS_FACEUP,REASON_COST)
VgF.Sendto(LOCATION_REMOVED,bc,POS_FACEUP,REASON_COST)
e:SetLabelObject(bc)
local bce = bc:GetActivateEffect()
if bce and bce:GetCost() then bce:GetCost()(e,tp,eg,ep,ev,re,r,rp,1,true) end
......@@ -972,25 +965,25 @@ function VgD.QuickSpell(c,code,op,cost,con,tg)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_BATTLE_START)
e1:SetCondition(VgD.LvCondition(con))
e1:SetCondition(function (e,tp,eg,ep,ev,re,r,rp)
if VgF.GetValueType(con)=="function" and not con(e,tp,eg,ep,ev,re,r,rp) then return false end
local bc=Duel.GetAttackTarget()
return bc and bc:IsControler(tp) and VgF.LvCondition(e)
end)
if VgF.GetValueType(cost)=="function" then e1:SetCost(cost) end
if VgF.GetValueType(tg)=="function" then e1:SetTarget(tg) end
if VgF.GetValueType(op)=="function" then e1:SetOperation(op) end
c:RegisterEffect(e1)
end
function VgD.LvCondition(con)
return function (e,tp,eg,ep,ev,re,r,rp)
if VgF.GetValueType(con)=="function" and not con(e,tp,eg,ep,ev,re,r,rp) then return false end
local bc=Duel.GetAttackTarget()
return bc and bc:IsControler(tp) and VgF.LvCondition(e)
end
end
function VgD.ContinuousSpell(c,cost,con,tg)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,VgID+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(VgD.LvCondition(con))
e1:SetCondition(function (e,tp,eg,ep,ev,re,r,rp)
if VgF.GetValueType(con)=="function" and not con(e,tp,eg,ep,ev,re,r,rp) then return false end
return VgF.LvCondition(e)
end)
if VgF.GetValueType(cost)=="function" then e1:SetCost(cost) end
if VgF.GetValueType(tg)=="function" then e1:SetTarget(tg) end
e1:SetOperation(VgD.ContinuousSpellOperation)
......@@ -998,21 +991,21 @@ function VgD.ContinuousSpell(c,cost,con,tg)
end
function VgD.ContinuousSpellOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Sendto(c,tp,LOCATION_ORDER,POS_FACEUP_ATTACK,REASON_RULE)
VgF.Sendto(LOCATION_ORDER,c,tp,POS_FACEUP_ATTACK,REASON_RULE)
end
function VgD.EffectTypeContinuousChangeAttack(c,typ,val,con,tg,mc,code,reset,loc,loc1,loc2)
function VgD.EffectTypeContinuousChangeAttack(c,typ,val,con,tg,mc,code,reset,loc,loc_self,loc_op)
if VgF.GetValueType(mc)~="Card" then mc=c end
if not typ then typ=EFFECT_TYPE_SINGLE end
if not code then code=EFFECT_UPDATE_ATTACK end
if not loc then loc=LOCATION_MZONE end
if not loc1 then loc1=0 end
if not loc2 then loc2=0 end
if not loc_self then loc_self=0 end
if not loc_op then loc_op=0 end
local e1=Effect.CreateEffect(c)
e1:SetType(typ)
e1:SetCode(code)
e1:SetRange(loc)
if reset and reset>0 then e1:SetReset(reset) end
if typ==EFFECT_TYPE_FIELD then e1:SetTargetRange(loc1,loc2) end
if typ==EFFECT_TYPE_FIELD then e1:SetTargetRange(loc_self,loc_op) end
if VgF.GetValueType(con)=="function" then e1:SetCondition(con) end
if VgF.GetValueType(tg)=="function" then e1:SetTarget(tg) end
e1:SetValue(val)
......
......@@ -94,6 +94,8 @@ TRRIGGER_DRAW =0x4 --抽牌触发
TRRIGGER_HEAL =0x8 --治愈触发
TRRIGGER_ADVANCE =0x10 --前列触发
TRRIGGER_SUPER =0x20 --超限触发
--Category 效果分类
CATEGORY_DEFENDER =0x1 --守护者
--Reason 卡片到当前位置的原因
REASON_DESTROY =0x1 --破坏
REASON_RELEASE =0x2 --解放
......@@ -675,6 +677,7 @@ EVENT_DAMAGE_TRIGGER =VgID+2 --受伤判定完毕时点
EVENT_RIDE_START =VgID+3 --骑升时点
EVENT_SUPPORT =VgID+4 --支援时点
EVENT_TRIGGERCOUNTUP =VgID+5 --驱动追加
EVENT_SING =VgID+6 --演唱时
--攻击时(EVENT_ATTACK_ANNOUNCE)
--支援时(EVENT_CUSTOM+EVENT_SUPPORT)
......@@ -742,8 +745,8 @@ HINTMSG_REMOVEXYZ =519 --请选择要取除的超量素材
HINTMSG_CONTROL =520 --请选择要改变控制权的怪兽
HINTMSG_DESREPLACE =521 --请选择要代替破坏的卡
HINTMSG_FACEUPATTACK =522 --
HINTMSG_FACEUPDEFENSE =523 --请选择表侧守备表示的怪兽
HINTMSG_FACEDOWNATTACK =524 --请选择里侧攻击表示的怪兽
HINTMSG_FACEUPDEFENSE =523 --
HINTMSG_FACEDOWNATTACK =524 --
HINTMSG_FACEDOWNDEFENSE =525 --请选择里侧守备表示的怪兽
HINTMSG_CONFIRM =526 --请选择给对方确认的卡
HINTMSG_TOFIELD =527 --请选择要放置到场上的卡
......@@ -784,6 +787,8 @@ HINTMSG_ATKUP =HINTMSG_FMATERIAL --请选择力量上升的卡
HINTMSG_CRITICAL_STRIKE =HINTMSG_SMATERIAL --请选择☆值上升的卡
HINTMSG_IMPRISON =HINTMSG_DESTROY --请选择要收容的卡
HINTMSG_VMONSTER =HINTMSG_FACEUPATTACK --请选择先导者
HINTMSG_RMONSTER =HINTMSG_FACEUPDEFENSE --请选择后防者
HINTMSG_MONSTER =HINTMSG_FACEDOWNATTACK --请选择单位
--Select --请选择
SELECT_HEADS =60 --正面
SELECT_TAILS =61 --反面
......@@ -867,12 +872,10 @@ ConditionFlag =VgID+4 --处于XX状态标识
SupportFlag =VgID+5 --支援状态标识
AttackAtRearFlag =VgID+6 --后列攻击
ImprisonFlag =VgID+7 --被收容
DamageFlag =VgID+8 --被收容
--AffectedByEffect
AFFECT_CODE_MIX =VgID --魔合成
AFFECT_CODE_MIX_DIFFERENT_NAME =VgID+1 --魔合成(卡名不同)
AFFECT_CODE_SENDTOG =VgID+2 --需要两张卡才能防御
AFFECT_CODE_SENDTOG_MZONE =VgID+3 --不能截击
POS_FACEUP_DEFENCE=POS_FACEUP_DEFENSE
......
......@@ -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
......@@ -44,6 +44,7 @@ function VgF.DefineArguments()
if not con then con=nil end
if not tg then tg=nil end
if not f then f=nil end
if not zone then zone=nil end
end
---根据控制者,区域和编号获取zone;不合法的数据会返回0
---@param p integer 控制者
......@@ -99,7 +100,7 @@ function VgF.GetValueType(v)
end
---如果g是Group的话,返回其第一张卡;如果g是Card的话,返回其本身;否则返回nil。
---@param g any 要操作的变量
---@return Card|nil
---@return Card
function VgF.ReturnCard(g)
local tc
if VgF.GetValueType(g)=="Group" then
......@@ -309,9 +310,12 @@ end
---@param zone integer 指示要Call到的格子。<br>前列的R:17; 后列的R:14; 全部的R:31; V:32
---@param pos integer 表示形式
---@return integer Call成功的数量
function VgF.Call(g,sumtype,tp,zone,pos)
function VgF.Call(g,sumtype,tp,zone,pos,chk)
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 chk==0 then
return Duel.SpecialSummon(g,sumtype,tp,tp,false,false,pos)
end
if zone and zone>0 then
local sc=VgF.ReturnCard(g)
local z=VgF.GetAvailableLocation(tp,zone)
......@@ -329,13 +333,13 @@ function VgF.Call(g,sumtype,tp,zone,pos)
local tc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local mg=tc:GetOverlayGroup()
if mg:GetCount()~=0 then
Duel.Overlay(sc,mg)
VgF.Sendto(LOCATION_OVERLAY,mg,sc)
end
sc:SetMaterial(Group.FromCards(tc))
Duel.Overlay(sc,Group.FromCards(tc))
VgF.Sendto(LOCATION_OVERLAY,Group.FromCards(tc),sc)
elseif Duel.IsExistingMatchingCard(VgD.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,szone) then
local tc=Duel.GetMatchingGroup(VgD.CallFilter,tp,LOCATION_MZONE,0,nil,tp,szone):GetFirst()
Duel.SendtoGrave(tc,REASON_COST)
VgF.Sendto(LOCATION_DROP,tc,REASON_COST)
end
return Duel.SpecialSummon(sc,sumtype,tp,tp,false,false,pos,szone)
else
......@@ -348,17 +352,17 @@ function VgF.Call(g,sumtype,tp,zone,pos)
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local mg=rc:GetOverlayGroup()
if mg:GetCount()~=0 then
Duel.Overlay(sc,mg)
VgF.Sendto(LOCATION_OVERLAY,mg,sc)
end
sc:SetMaterial(Group.FromCards(rc))
Duel.Overlay(sc,Group.FromCards(rc))
VgF.Sendto(LOCATION_OVERLAY,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_MZONE,0,z)
if Duel.IsExistingMatchingCard(VgD.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,szone) then
local tc=Duel.GetMatchingGroup(VgD.CallFilter,tp,LOCATION_MZONE,0,nil,tp,szone):GetFirst()
Duel.SendtoGrave(tc,REASON_COST)
VgF.Sendto(LOCATION_DROP,tc,REASON_COST)
end
Duel.SpecialSummonStep(sc,sumtype,tp,tp,false,false,pos,szone)
z=bit.bor(z,szone)
......@@ -490,179 +494,195 @@ end
---判断c是否可以以规则的手段到G区域。
---@param c Card 要判断的卡
---@return boolean 指示c能否去到G区域。
function VgF.IsAbleToGZone(c)
local tp=c:GetControler()
return c:IsAttribute(SKILL_BLOCK) and VgF.IsSequence(c,0,4) and not Duel.IsPlayerAffectedByEffect(tp,AFFECT_CODE_SENDTOG_MZONE) and c:IsLocation(LOCATION_MZONE) and c:IsFaceup()
function VgF.IsAbleToGZone(c,loc)
if loc==LOCATION_HAND then
return c:IsType(TYPE_MONSTER)
elseif loc==LOCATION_MZONE then
return c:IsAttribute(SKILL_BLOCK) and VgF.IsSequence(c,0,4) and c:IsLocation(LOCATION_MZONE) and c:IsFaceup()
end
return false
end
---用于效果的Operation。它返回一个执行“[计数回充num]”的函数。
---@param num integer 计数回充的数量
---@return function 效果的Operation函数
function VgF.DamageFill(num)
return function (e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,num,nil)
Duel.ChangePosition(g,POS_FACEUP_ATTACK)
return Duel.GetOperatedGroup():GetCount()
end
end
---用于效果的Cost。它返回一个执行“【费用】[将手牌中的num张卡舍弃]”的函数。
---@param num integer 要舍弃的卡的数量
---@return function 效果的Cost函数
function VgF.DisCardCost(num)
return function (e,tp,eg,ep,ev,re,r,rp,chk)
return VgF.DisCardCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function VgF.DisCardCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(Card.IsDiscardable,tp,LOCATION_HAND,0,nil)
cm.cos_val={nil,num,num}
if VgF.GetValueType(num)~="number" then return 0 end
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(nil,tp,LOCATION_HAND,0,nil)
cm.cos_val={nil,num,num}
end
return Duel.IsExistingMatchingCard(nil,tp,LOCATION_HAND,0,num,nil)
end
return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,num,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_HAND,0,num,num,nil)
return VgF.Sendto(LOCATION_DROP,g,REASON_COST+REASON_DISCARD)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local g=Duel.SelectMatchingCard(tp,Card.IsDiscardable,tp,LOCATION_HAND,0,num,num,nil)
Duel.SendtoGrave(g,REASON_COST+REASON_DISCARD)
return Duel.GetOperatedGroup():GetCount()
end
---用于效果的Cost。它返回一个执行“【费用】[能量爆发num]”的函数。
---@param num integer 能量爆发的数量
---@return function 效果的Cost函数
function VgF.EnergyCost(num)
return function (e,tp,eg,ep,ev,re,r,rp,chk)
return VgF.EnergyCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function VgF.EnergyCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EMBLEM,0,nil,10800730)
cm.cos_val={nil,num,num}
if VgF.GetValueType(num)~="number" then return 0 end
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EMBLEM,0,nil,10800730)
cm.cos_val={nil,num,num}
end
return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_EMBLEM,0,num,nil,10800730)
end
return Duel.IsExistingMatchingCard(Card.IsCode,tp,LOCATION_EMBLEM,0,num,nil,10800730)
local sg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EMBLEM,0,nil,10800730)
local g=VgF.GetCardsFromGroup(sg,num)
return VgF.Sendto(0,g,tp,POS_FACEUP,REASON_COST)
end
local sg=Duel.GetMatchingGroup(Card.IsCode,tp,LOCATION_EMBLEM,0,nil,10800730)
local g=VgF.GetCardsFromGroup(sg,num)
Duel.Sendto(g,tp,0,POS_FACEUP,REASON_COST)
return Duel.GetOperatedGroup():GetCount()
end
---用于效果的Cost。它返回一个执行“【费用】[灵魂爆发num]”的函数。
---@param num integer 灵魂爆发的数量
---@return function 效果的Cost函数
function VgF.OverlayCost(num)
return function (e,tp,eg,ep,ev,re,r,rp,chk)
return VgF.OverlayCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function VgF.OverlayCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)
cm.cos_val={nil,num,num}
if VgF.GetValueType(num)~="number" then return 0 end
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup()
cm.cos_val={nil,num,num}
end
return Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayCount()>=num
end
return Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)>=num
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,nil,num,num,nil)
return VgF.Sendto(LOCATION_DROP,g,REASON_COST)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,num,num,nil)
Duel.SendtoGrave(g,REASON_COST)
return Duel.GetOperatedGroup():GetCount()
end
---用于效果的Cost或Operation。它返回一个执行“【费用】[灵魂填充num]”的函数。
---@param num integer 灵魂填充的数量
---@return function 效果的Cost或Operation函数
function VgF.OverlayFill(num)
return function (e,tp,eg,ep,ev,re,r,rp,chk)
return VgF.OverlayFillOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function VgF.OverlayFillOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetFieldGroup(tp,LOCATION_DECK,0)
cm.cos_val={nil,num,num}
if VgF.GetValueType(num)~="number" then return 0 end
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetFieldGroup(tp,LOCATION_DECK,0)
cm.cos_val={nil,num,num}
end
return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=num
end
return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=num
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local g=Duel.GetDecktopGroup(tp,num)
Duel.DisableShuffleCheck()
return VgF.Sendto(LOCATION_OVERLAY,g,rc)
end
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local g=Duel.GetDecktopGroup(tp,num)
Duel.DisableShuffleCheck()
Duel.Overlay(rc,g)
return Duel.GetOperatedGroup():GetCount()
end
---用于效果的Cost。它返回一个执行“【费用】[计数爆发num]”的函数。
---@param num integer 计数爆发的数量
---@return function 效果的Cost函数
function VgF.DamageCost(num)
return function (e,tp,eg,ep,ev,re,r,rp,chk)
return VgF.DamageCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function VgF.DamageCostOP(num,e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_DAMAGE,0,nil)
cm.cos_val={nil,num,num}
if VgF.GetValueType(num)~="number" then return 0 end
local c=e:GetHandler()
local m=c:GetOriginalCode()
local cm=_G["c"..m]
if chk==0 then
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
cm.cos_g=Duel.GetMatchingGroup(Card.IsFaceup,tp,LOCATION_DAMAGE,0,nil)
cm.cos_val={nil,num,num}
end
return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,nil)
end
return Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DAMAGE)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,num,nil)
Duel.ChangePosition(g,POS_FACEDOWN_ATTACK)
return Duel.GetOperatedGroup():GetCount()
end
Debug.Message(chk)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DAMAGE)
local g=Duel.SelectMatchingCard(tp,Card.IsFaceup,tp,LOCATION_DAMAGE,0,num,num,nil)
Duel.ChangePosition(g,POS_FACEDOWN_ATTACK)
return Duel.GetOperatedGroup():GetCount()
end
---用于效果的Operation。执行“从loc中选取1张满足f的卡,返回手牌。”。
---@param loc integer 要选取的区域。不填则返回nil,而不是效果的Operation函数。
---用于效果的Operation。执行“从loc_from中选取最少int_min,最多int_max张满足f的卡,送去loc_to。”。
---@param loc_to integer 要送去的区域。不填则返回0。
---@param loc_from integer 要选取的区域。不填则返回0。
---@param f function 卡片过滤的条件
---@return function|nil 效果的Operation函数
function VgF.SearchCard(loc,f)
if not loc then return end
function VgF.SearchCard(loc_to,loc_from,f,int_max,int_min)
return function (e,tp,eg,ep,ev,re,r,rp)
VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
end
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)
if VgF.GetValueType(f)=="function" and not f(c) then return false end
return c:IsAbleToHand()
end,tp,loc,0,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
local sg=Duel.GetOperatedGroup()
return sg:GetCount()
end
---用于效果的Operation。执行“从loc中选取1张满足f的卡,Call到R上。”。
---@param loc integer 要选取的区域。不填则返回nil,而不是效果的Operation函数。
---@param f function 卡片过滤的条件
---@return function|nil 效果的Operation函数
function VgF.SearchCardSpecialSummon(loc,f)
if not loc then return end
return function (e,tp,eg,ep,ev,re,r,rp)
VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
end
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)
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)
if g:GetCount()>0 then
if loc&LOCATION_DECK+LOCATION_HAND+LOCATION_EXTRA==0 then Duel.HintSelection(g) end
VgF.Call(g,0,tp)
if not loc_to or not loc_from then return 0 end
if VgF.GetValueType(int_max)~="number" then int_max=1 end
if VgF.GetValueType(int_min)~="number" then int_min=int_max end
if loc_to==LOCATION_HAND then
local g=VgF.SelectMatchingCard(HINTMSG_ATOHAND,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
return VgF.Sendto(loc_to,g,nil,REASON_EFFECT)
end
elseif loc_to==LOCATION_MZONE then
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
return VgF.Sendto(loc_to,g,0,tp)
end
elseif loc_to==LOCATION_DROP then
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
return VgF.Sendto(loc_to,g,REASON_EFFECT)
end
elseif loc_to==LOCATION_REMOVED then
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
return VgF.Sendto(loc_to,g,POS_FACEUP,REASON_EFFECT)
end
elseif loc_to==LOCATION_EXILE then
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
return VgF.Sendto(loc_to,g,REASON_EFFECT)
end
elseif loc_to==LOCATION_OVERLAY then
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
local rc=VgF.GetVMonster(tp)
return VgF.Sendto(loc_to,g,rc)
end
elseif loc_to|0xf800>0 then
local g=VgF.SelectMatchingCard(HINTMSG_CALL,e,tp,function (c)
return VgF.GetValueType(f)~="function" or f(c)
end,tp,loc_from,0,int_min,int_max,nil)
if g:GetCount()>0 then
return VgF.Sendto(loc_to,g,tp,POS_FACEUP_ATTACK,REASON_EFFECT)
end
end
return 0
end
local sg=Duel.GetOperatedGroup()
return sg:GetCount()
end
function Group.CheckSubGroup(g,f,min,max,...)
min=min or 1
......@@ -724,23 +744,45 @@ function VgF.SendtoPrison(g,p)
local og=Duel.GetFieldGroup(p,LOCATION_ORDER,0)
local oc=og:Filter(VgF.PrisonFilter,nil,og:GetCount()):GetFirst()
if VgF.GetValueType(g)=="Card" then
Duel.Sendto(g,p,LOCATION_ORDER,POS_FACEUP_ATTACK,REASON_EFFECT)
g:RegisterFlagEffect(ImprisonFlag,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,vgf.Stringid(10105015,0))
VgF.Sendto(LOCATION_ORDER,g,p,POS_FACEUP_ATTACK,REASON_EFFECT)
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)
tc:RegisterFlagEffect(ImprisonFlag,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,vgf.Stringid(10105015,0))
VgF.Sendto(LOCATION_ORDER,tc,p,POS_FACEUP_ATTACK,REASON_EFFECT)
tc:RegisterFlagEffect(ImprisonFlag,RESET_EVENT+RESETS_STANDARD,EFFECT_FLAG_CLIENT_HINT,1,0,VgF.Stringid(10105015,0))
end
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)
......@@ -772,4 +814,151 @@ 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)
if VgF.GetValueType(f)=="function" then
g=g:FilterSelect(select_tp,f,int_min,int_max,except_g,...)
else
g=g:Select(select_tp,int_min,int_max,except_g)
end
end
local cg=g:Filter(function (tc)
return not tc:IsLocation(LOCATION_DECK+LOCATION_HAND+LOCATION_EXTRA)
end,nil)
if cg:GetCount()>0 then Duel.HintSelection(cg) end
if a then Duel.ShuffleDeck(select_tp) end
return g
end
---用于效果的Operation。执行“把卡sg,送去loc,第三个参数开始为额外参数,内容与原函数相同。”。
---@param loc integer 要送去的区域。不填则返回0。
---@param sg integer 要操作的卡|卡片组。
---@return number 具体操作的卡的数量
function VgF.Sendto(loc,sg,...)
local function AddOverlayGroup(g)
for tc in VgF.Next(g) do
if tc:GetOverlayCount()>0 then
local mg=tc:GetOverlayGroup()
g:Merge(mg)
end
end
end
local g=nil
if VgF.GetValueType(sg)=="Group" then
g=Group.Clone(sg)
elseif VgF.GetValueType(sg)=="Card" then
g=Group.FromCards(sg)
else return 0
end
if loc==LOCATION_DROP then
AddOverlayGroup(g)
return Duel.SendtoGrave(g,...)
elseif loc==LOCATION_DECK then
return Duel.SendtoDeck(g,...)
elseif loc==LOCATION_HAND then
local ct=Duel.SendtoHand(g,...)
local cg=Duel.GetOperatedGroup()
for tp=0,1 do
local confirm_group=cg:Filter(Card.IsControler,nil,tp)
if confirm_group:GetCount()>0 then
Duel.ConfirmCards(1-tp,confirm_group)
Duel.ShuffleHand(tp)
end
end
return ct
elseif loc==LOCATION_REMOVED then
AddOverlayGroup(g)
return Duel.Remove(g,...)
elseif loc==LOCATION_EXILE then
AddOverlayGroup(g)
return Duel.Exile(g,...)
elseif loc==LOCATION_OVERLAY then
AddOverlayGroup(g)
local list={...}
local c=nil
local ct=0
if #list>0 then
c=list[1]
Duel.Overlay(c,g)
ct=Duel.GetOperatedGroup():GetCount()
else
for tp=0,1 do
c=VgF.GetVMonster(tp)
local og=g:Filter(Card.IsControler,nil,tp)
if og:GetCount()>0 then
Duel.Overlay(c,og)
ct=ct+Duel.GetOperatedGroup():GetCount()
end
end
end
return ct
elseif loc==LOCATION_TRIGGER then
AddOverlayGroup(g)
local list={...}
local move_tp=list[1]
local target_tp=list[2]
local pos=list[3]
local enable=list[4]
local ct=0
for tc in VgF.Next(g) do
if Duel.MoveToField(tc,move_tp,target_tp,loc,pos,enable) then ct=ct+1 end
end
return ct
elseif loc==LOCATION_MZONE then
local list={...}
local sumtype=list[1]
local tp=list[2]
local zone=nil
if #list>2 then
zone=list[3]
end
local pos=nil
if #list>3 then
pos=list[4]
end
local chk=1
if #list>4 then
chk=list[5]
end
return VgF.Call(g,sumtype,tp,zone,pos,chk)
elseif loc|0xf800>0 then
AddOverlayGroup(g)
local list={...}
local tp=list[1]
local pos=list[2]
local reason=list[3]
if #list>=4 then
local seq=list[4]
Duel.Sendto(g,tp,loc,pos,reason,seq)
local return_group=Duel.GetOperatedGroup()
return return_group:GetCount()
end
Duel.Sendto(g,tp,loc,pos,reason)
local return_group=Duel.GetOperatedGroup()
return return_group:GetCount()
end
return 0
end
\ No newline at end of file
......@@ -4,13 +4,12 @@ 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
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
g=g:FilterSelect(tp,Card.IsDiscardable,1,1,nil,REASON_EFFECT)
Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD)
g=g:Select(tp,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT+REASON_DISCARD)
end
end
\ No newline at end of file
......@@ -2,7 +2,7 @@
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,vgf.SearchCardSpecialSummon(LOCATION_DROP,cm.filter),vgf.DisCardCost(1),nil,nil,1)
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,vgf.SearchCard(LOCATION_HAND,LOCATION_MZONE,LOCATION_DROP,cm.filter),vgf.DisCardCost(1),nil,nil,1)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.DamageCost(1))
end
function cm.filter(c)
......
......@@ -2,7 +2,7 @@
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.BeRidedByCard(c,m,10101001,vgf.SearchCard(LOCATION_DECK,cm.filter),vgf.OverlayCost(1))
vgd.BeRidedByCard(c,m,10101001,vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.filter),vgf.OverlayCost(1))
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
......
......@@ -2,15 +2,8 @@
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.BeRidedByCard(c,m,10101002,vgf.SearchCardSpecialSummon(LOCATION_DECK,cm.filter))
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.con)
e1:SetValue(2000)
c:RegisterEffect(e1)
vgd.BeRidedByCard(c,m,10101002,vgf.SearchCard(LOCATION_HAND,LOCATION_MZONE,LOCATION_DECK,cm.filter))
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,2000,cm.con)
end
function cm.filter(c)
return c:IsCode(10101009)
......
......@@ -9,14 +9,13 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED)
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)
if Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayCount()>=2 and Duel.SelectEffectYesNo(tp,vgf.stringid(VgID,10)) then
local cg=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,2,2,nil)
if vgf.Sendto(LOCATION_DROP,cg,REASON_COST)==2 then
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)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end
end
end
......
......@@ -2,12 +2,11 @@
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
VgD.CardTrigger(c,cm.operation)
vgd.CardTrigger(c,cm.operation)
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,11 +6,10 @@ 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)
vgf.AtkUp(c,g,5000,nil)
vgf.SearchCard(LOCATION_HAND,LOCATION_DROP,cm.filter)(e,tp,eg,ep,ev,re,r,rp)
end
function cm.filter(c)
return c:IsCode(10101006)
......
......@@ -6,14 +6,7 @@ function cm.initial_effect(c)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.RegisterFlagEffect(tp,ConditionFlag,RESET_PHASE+PHASE_END,0,1,m)
local e=Effect.CreateEffect(c)
e:SetType(EFFECT_TYPE_FIELD)
e:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
e:SetCode(m)
e:SetTargetRange(1,0)
e:SetDescription(vgf.Stringid(m,0))
Duel.RegisterEffect(e,tp)
Duel.RegisterFlagEffect(tp,ConditionFlag,RESET_PHASE+PHASE_END,EFFECT_FLAG_CLIENT_HINT,1,m,vgf.Stringid(m,0))
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and vgf.VMonsterCondition(e)
......
......@@ -14,15 +14,11 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
end
function cm.filter(c)
return c:IsCanOverlay() and vgf.RMonsterFilter(c)
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)
Duel.Overlay(c,g)
if chk==0 then return Duel.IsExistingMatchingCard(vgf.RMonsterFilter,tp,LOCATION_MZONE,0,1,nil) end
local g=vgf.SelectMatchingCard(HINTMSG_XMATERIAL,e,tp,vgf.RMonsterFilter,tp,LOCATION_MZONE,0,1,1,nil)
vgf.Sendto(LOCATION_OVERLAY,g,c)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
......@@ -16,13 +16,12 @@ function cm.con2(e,tp,eg,ep,ev,re,r,rp)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return vgf.IsSequence(c,5) and r==REASON_RIDEUP
return (c:IsSummonType(SUMMON_TYPE_RIDE) or c:IsSummonType(SUMMON_TYPE_SELFRIDE))
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
if vgf.GetAvailableLocation(tp)&0x4<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsCanBeSpecialSummoned,1,1,nil,e,0,tp,false,false,POS_FACEUP_ATTACK,0x4)
if vgf.Call(g,0,tp,0x4)>0 then
vgf.OverlayFillOP(num,e,tp,eg,ep,ev,re,r,rp)
end
local g=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,1,1,nil)
vgf.Sendto(LOCATION_MZONE,g,0,tp,0x4)
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp)
end
......@@ -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
......
......@@ -7,7 +7,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local num=1
if Duel.GetFlagEffectLabel(tp,ConditionFlag)==10102001 then num=num+1 end
VgF.OverlayFillOP(num,e,tp,eg,ep,ev,re,r,rp)
vgf.OverlayFill(num)(e,tp,eg,ep,ev,re,r,rp)
end
function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):IsCode(10102001)
......
......@@ -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_ATKUP)
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)
......
--天枪的骑士 勒克斯
local cm,m,o=GetID()
function cm.initial_effect(c)
VgF.VgCard(c)
vgf.VgCard(c)
vgd.BeRidedByCard(c,m,10103001,cm.operation,cm.cost)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......@@ -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)
......@@ -16,16 +15,15 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,1)
local tc=vgf.ReturnCard(g)
Duel.DisableShuffleCheck()
if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) then
vgf.Call(g,0,tp)
elseif tc:IsAbleToGrave() then
Duel.SendtoGrave(g,REASON_EFFECT)
if tc:IsType(TYPE_MONSTER) then
vgf.Sendto(LOCATION_MZONE,g,0,tp)
else
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end
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
......
--激烈的魔女 拉玛娜
local cm,m,o=GetID()
function cm.initial_effect(c)
VgF.VgCard(c)
vgf.VgCard(c)
--【自】【R】:这个单位攻击时,通过【费用】[计数爆发1],这次战斗中,这个单位的力量+5000。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.DamageCost(1),vgf.RMonsterCondition)
end
......
--斧钺的骑士 拉夫尔克
local cm,m,o=GetID()
function cm.initial_effect(c)
VgF.VgCard(c)
vgf.VgCard(c)
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,cm.operation,cm.cost,vgf.RMonsterCondition)
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)
vgf.AtkUp(c,g,10000,nil)
end
end
function cm.filter(c)
......@@ -18,7 +17,7 @@ function cm.filter(c)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return c:IsCanOverlay() end
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
Duel.Overlay(rc,c)
if chk==0 then return true end
local rc=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
vgf.Sendto(LOCATION_OVERLAY,c,rc)
end
\ No newline at end of file
--天贯的骑士 加尔斯
local cm,m,o=GetID()
function cm.initial_effect(c)
VgF.VgCard(c)
vgf.VgCard(c)
end
\ No newline at end of file
--圣裁之刻,来临
local cm,m,o=GetID()
function cm.initial_effect(c)
VgF.VgCard(c)
vgf.VgCard(c)
vgd.SpellActivate(c,m,cm.operation)
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)
vgf.AtkUp(c,g,5000)
end
end
\ No newline at end of file
......@@ -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
......
......@@ -13,10 +13,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,1)
local tc=vgf.ReturnCard(g)
Duel.DisableShuffleCheck()
if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) then
vgf.Call(g,0,tp)
elseif tc:IsAbleToHand() then
Duel.SendtoHand(g,nil,REASON_EFFECT)
if tc:IsType(TYPE_MONSTER) then
vgf.Sendto(LOCATION_MZONE,g,0,tp)
else
vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
end
......
......@@ -20,10 +20,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,1)
local tc=vgf.ReturnCard(g)
Duel.DisableShuffleCheck()
if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) and vgf.IsLevel(tc,0,1,2) then
vgf.Call(g,0,tp)
elseif tc:IsCanOverlay() then
Duel.Overlay(c,g)
if tc:IsType(TYPE_MONSTER) and vgf.IsLevel(tc,0,1,2) then
vgf.Sendto(LOCATION_MZONE,g,0,tp)
else
vgf.Sendto(LOCATION_OVERLAY,g,c)
end
end
function cm.con(e)
......
......@@ -17,11 +17,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
c:RegisterEffect(e2)
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)
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():GetOverlayCount()>=1 end
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)
Duel.SendtoGrave(g2,REASON_COST)
local g2=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,1,1,nil)
vgf.Sendto(LOCATION_DROP,g2,REASON_COST)
end
\ No newline at end of file
......@@ -11,10 +11,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,1)
local tc=vgf.ReturnCard(g)
Duel.DisableShuffleCheck()
if tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) then
vgf.Call(g,0,tp)
elseif tc:IsAbleToHand() then
Duel.SendtoHand(g,nil,REASON_EFFECT)
if tc:IsType(TYPE_MONSTER) then
vgf.Sendto(LOCATION_MZONE,g,0,tp)
else
vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g)
end
end
\ No newline at end of file
......@@ -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)
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.SearchCard(LOCATION_DECK,cm.filter),nil,cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.filter),nil,cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,cm.cost,cm.condition1)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
......@@ -22,11 +22,10 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
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)
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():GetOverlayCount()>=1 end
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)
Duel.SendtoGrave(g2,REASON_COST)
local g2=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,1,1,nil)
vgf.Sendto(LOCATION_DROP,g2,REASON_COST)
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,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
......@@ -2,7 +2,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,2000,con)
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,con,tg,c,EFFECT_UPDATE_DEFENSE,reset,LOCATION_GRAVE)
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,con,tg,c,EFFECT_UPDATE_DEFENSE,reset,LOCATION_DROP)
end
function cm.con(e,c)
local tp=e:GetHandler()
......
......@@ -9,34 +9,33 @@ function cm.con(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsLocation(LOCATION_ORDER)
end
function cm.cost1(e,tp,eg,ep,ev,re,r,rp,chk)
local a=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)>=1
local a=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayCount()>=1
local b=Duel.IsExistingMatchingCard(Card.IsFaceup,tp,LOCATION_DAMAGE,0,1,nil)
if chk==0 then return a or b end
local off=1
local ops={}
if a then
ops[off]=VgF.Stringid(VgID,11)
ops[off]=vgf.Stringid(VgID,11)
off=off+1
end
if b then
ops[off]=VgF.Stringid(VgID,12)
ops[off]=vgf.Stringid(VgID,12)
off=off+1
end
local sel=Duel.SelectOption(tp,table.unpack(ops))
if sel==0 and a then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,num,num,nil)
Duel.SendtoGrave(g,REASON_COST)
local g=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,1,1,nil)
vgf.Sendto(LOCATION_DROP,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,14 +44,13 @@ 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
vgf.Call(tc,0,tp)
if tc:IsType(TYPE_MONSTER) then
vgf.Sendto(LOCATION_MZONE,tc,0,tp)
else
Duel.SendtoGrave(tc,REASON_EFFECT)
vgf.Sendto(LOCATION_DROP,tc,REASON_EFFECT)
end
end
end
......
......@@ -32,7 +32,7 @@ function cm.con(e,c)
return Duel.GetFlagEffect(tp,m)>0
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return VgF.VMonsterFilter(e:GetHandler()) and vgf.VMonsterFilter(Duel.GetAttackTarget())
return vgf.VMonsterFilter(e:GetHandler()) and vgf.VMonsterFilter(Duel.GetAttackTarget())
end
function cm.check(g)
return g:GetClassCount(Card.GetLevel)==#g
......@@ -46,17 +46,17 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local sg=g:SelectSubGroup(tp,cm.check,true,4,4)
Duel.SendtoGrave(sg,REASON_EFFECT)
vgf.Sendto(LOCATION_DROP,sg,REASON_EFFECT)
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)
end
if Duel.IsExistingMatchingCard(tp,cm.filter,tp,0,LOCATION_MZONE,1,1,nil) then
VgF.StarUp(c,c,1)
vgf.StarUp(c,c,1)
end
end
function cm.filter(c)
......
......@@ -12,8 +12,8 @@ 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()
vgf.OverlayFillOP(1,e,tp,eg,ep,ev,re,r,rp)
if VgF.GetVMonster(tp):GetOverlayGroup():GetClassCount(Card.GetLevel)>=3 then
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp)
if vgf.GetVMonster(tp):GetOverlayGroup():GetClassCount(Card.GetLevel)>=3 then
Duel.Draw(tp,1,REASON_EFFECT)
end
end
......
......@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】:这个单位被「魔石龙 珠艾尼尔」骑升时,将这张卡召唤到R上。
vgd.BeRidedByCard(c,m,10202002,cm.operation,nil,cm.condition)
vgd.BeRidedByCard(c,m,10202002,cm.operation)
--【自】【R】:这个单位攻击或支援时,这次战斗中,这个单位的力量+5000。这次战斗结束时,将这个单位放置到灵魂里。(这个效果为强制执行。)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation2,nil,cm.condition2)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.operation2,nil,cm.condition3)
......@@ -11,14 +11,15 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetLabelObject()
if c:IsRelateToEffect() then
vgf.Call(c,0,tp)
if c:IsRelateToEffect(e) then
vgf.Sendto(LOCATION_MZONE,c,0,tp)
end
end
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect() then
VgF.AtkUp(c,c,5000,EVENT_BATTLED)
if c:IsRelateToEffect(e) then
local e2=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e2,EVENT_BATTLED)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_BATTLED)
......@@ -30,14 +31,12 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.condition2(e,tp,eg,ep,ev,re,r,rp)
return VgF.RMonsterFilter(e:GetHandler()) and Duel.GetAttacker()==e:GetHandler()
return vgf.RMonsterFilter(e:GetHandler()) and Duel.GetAttacker()==e:GetHandler()
end
function cm.condition3(e,tp,eg,ep,ev,re,r,rp)
return eg:GetFirst()==e:GetHandler()
end
function cm.operation3(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsCanOverlay() then
Duel.Overlay(VgF.GetVMonster(tp),e:GetHandler())
end
vgf.Sendto(LOCATION_OVERLAY,e:GetHandler(),vgf.GetVMonster(tp))
e:Reset()
end
......@@ -3,13 +3,14 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】【R】:这个单位攻击时,你有含有「道拉珠艾尔德」的先导者的话,通过【费用】[计数爆发1],这次战斗中,这个单位的力量+10000。这次战斗结束时,将这个单位放置到灵魂里。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,VgF.DamageCost(1),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.DamageCost(1),cm.condition)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
--无法设置重置时点于战斗结束时
local c=e:GetHandler()
if c:IsRelateToEffect() then
VgF.AtkUp(c,c,10000,EVENT_BATTLED)
if c:IsRelateToEffect(e) then
local e2=vgf.AtkUp(c,c,10000)
vgf.EffectReset(c,e2,EVENT_BATTLED)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_BATTLED)
......@@ -21,8 +22,9 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return VgF.RMonsterFilter(e:GetHandler()) and VgF.GetVMonster(tp):IsSetCard(0xe8)
return vgf.RMonsterFilter(e:GetHandler()) and vgf.GetVMonster(tp):IsSetCard(0xe8)
end
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
Duel.Overlay(VgF.GetVMonster(tp),e:GetHandler())
vgf.Sendto(LOCATION_OVERLAY,e:GetHandler(),vgf.GetVMonster(tp))
e:Reset()
end
......@@ -10,6 +10,6 @@ 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()
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
Duel.Overlay(rc,c)
local rc=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
vgf.Sendto(LOCATION_OVERLAY,c,rc)
end
......@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgf.VgCard(c)
--【自】【R】:这个单位支援等级2以上的单位时,你可以灵魂填充1。
--时点需要改成支援时
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,vgf.OverlayFill(1),VgF.True,cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,vgf.OverlayFill(1),vgf.True,cm.condition)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetAttacker():IsLevelAbove(3) and eg:GetFirst()==e:GetHandler()
......
......@@ -3,10 +3,10 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【起】【R】【1回合1次】:你有等级3以上的先导者的话,通过【费用】[计数爆发2],抽1张卡。
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,cm.operation,VgF.DamageCost(2),cm.condition,nil,1)
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,cm.operation,vgf.DamageCost(2),cm.condition,nil,1)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return VgF.RMonsterFilter(e:GetHandler()) and VgF.GetVMonster(tp):IsLevelAbove(4)
return vgf.RMonsterFilter(e:GetHandler()) and vgf.GetVMonster(tp):IsLevelAbove(4)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
......
......@@ -3,17 +3,16 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】:这个单位登场到R时,你有含有「道拉珠艾尔德」的先导者的话,通过【费用】[灵魂爆发1],选择你的弃牌区中的1张卡,放置到灵魂里,这个回合中,这个单位的力量+2000。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,VgF.OverlayCost(1),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.OverlayCost(1),cm.condition)
end
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.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_DROP,0,1,1,nil)
if g:GetCount()>0 then
Duel.Overlay(VgF.GetVMonster(tp),g)
vgf.Sendto(LOCATION_OVERLAY,g,vgf.GetVMonster(tp))
end
VgF.AtkUp(c,c,2000,nil)
vgf.AtkUp(c,c,2000,nil)
end
......@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】:这个单位从手牌登场到R时,通过【费用】[计数爆发1],查看你的牌堆顶的3张卡,选择1张卡,放置到灵魂里,然后牌堆洗切,你的灵魂里有4张以上的相互不同等级的卡的话,抽1张卡。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,VgF.DamageCost(1),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.DamageCost(1),cm.condition)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......@@ -16,10 +16,10 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local sc=g:FilterSelect(tp,Card.IsCanOverlay,1,1,nil):GetFirst()
if sc then
Duel.Overlay(VgF.GetVMonster(tp),sc)
vgf.Sendto(LOCATION_OVERLAY,sc,vgf.GetVMonster(tp))
end
Duel.ShuffleDeck(tp)
if VgF.GetVMonster(tp):GetOverlayGroup():GetClassCount(Card.GetLevel)>=4 then
if vgf.GetVMonster(tp):GetOverlayGroup():GetClassCount(Card.GetLevel)>=4 then
Duel.Draw(tp,1,REASON_EFFECT)
end
end
......@@ -6,7 +6,7 @@ function cm.initial_effect(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,nil,cm.condition)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return VgF.RMonsterFilter(e:GetHandler())
return vgf.RMonsterFilter(e:GetHandler())
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,2)
......@@ -15,7 +15,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
local sc=g:FilterSelect(tp,Card.IsCanOverlay,1,1,nil):GetFirst()
if sc then
Duel.Overlay(VgF.GetVMonster(tp),sc)
vgf.Sendto(LOCATION_OVERLAY,sc,vgf.GetVMonster(tp))
g:RemoveCard(sc)
end
if #g>1 then
......
......@@ -6,16 +6,15 @@ function cm.initial_effect(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,cm.operation,nil,cm.condition)
--【永】【R】:这个回合中曾有你的等级3以上的先导者登场过的话,这个单位的力量+5000。
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,cm.con)
VgD.GlobalCheckEffect(c,m,EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS,EVENT_SPSUMMON_SUCCESS,cm.checkcon,cm.checkop)
vgd.GlobalCheckEffect(c,m,EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS,EVENT_SPSUMMON_SUCCESS,cm.checkcon,cm.checkop)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,m)>0
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)
if vgf.Call(g,SUMMON_VALUE_REVOLT,tp,0x20)>0 then
local g=vgf.SelectMatchingCard(HINTMSG_CALL,e,tp,cm.filter,tp,LOCATION_HAND,0,1,1,nil)
if vgf.Sendto(LOCATION_MZONE,g,SUMMON_VALUE_REVOLT,tp,0x20)>0 then
local mg=Duel.GetOperatedGroup()
vgd.TriggerCountUp(c,-2,RESET_PHASE+PHASE_END,mg)
end
......@@ -24,8 +23,8 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return Duel.GetAttacker()==c
end
function cm.filter(c,e,tp)
return c:IsSetCard(0x76) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK)
function cm.filter(c)
return c:IsSetCard(0x76) and c:IsType(TYPE_MONSTER)
end
function cm.checkfilter(c)
return (c:IsSummonType(SUMMON_TYPE_SELFRIDE) or c:IsSummonType(SUMMON_TYPE_RIDE)) and c:IsLevelAbove(4)
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.BeRidedByCard(c,m,cm.filter,vgf.SearchCard(LOCATION_DROP,cm.filter1),VgF.DamageCost(1))
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.operation1,VgF.OverlayCost(1),cm.condition1)
vgd.BeRidedByCard(c,m,cm.filter,vgf.SearchCard(LOCATION_HAND,LOCATION_DROP,cm.filter1),vgf.DamageCost(1))
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.operation1,vgf.OverlayCost(1),cm.condition1)
end
function cm.filter(c)
return c:IsSetCard(0x202)
......
......@@ -29,14 +29,14 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:FilterSelect(tp,cm.filter,1,1,nil)
Duel.DisableShuffleCheck()
Duel.SendtoHand(sg,nil,REASON_EFFECT)
vgf.Sendto(LOCATION_HAND,sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
Duel.ShuffleHand(tp)
g:RemoveCard(vgf.ReturnCard(sg))
elseif (sel==1 and a and b) or (sel==0 and not a and b) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local sg=g:FilterSelect(tp,cm.filter1,1,1,nil,e,tp)
vgf.Call(sg,0,tp)
local sg=g:FilterSelect(tp,cm.filter1,1,1,nil,tp)
vgf.Sendto(LOCATION_MZONE,sg,0,tp)
g:RemoveCard(vgf.ReturnCard(sg))
end
if #g>1 then
......@@ -48,8 +48,8 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.filter(c)
return c:IsSetCard(0x77) and c:IsAbleToHand()
return c:IsSetCard(0x77)
end
function cm.filter1(c,e,tp)
return c:IsLevelBelow(3) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) and vgf.GetAvailableLocation(tp)>0
function cm.filter1(c,tp)
return c:IsLevelBelow(3) and c:IsType(TYPE_MONSTER) and vgf.GetAvailableLocation(tp)>0
end
\ No newline at end of file
......@@ -34,9 +34,8 @@ end
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_Call)
local g=vgf.GetVMonster(tp):GetOverlayGroup():FilterSelect(tp,cm.filter,1,1,nil,e,tp)
--Duel.Sendto(g,tp,0,POS_FACEUP,REASON_EFFECT)
vgf.Call(g,0,tp,0x20,POS_FACEDOWN_DEFENCE)
vgf.Sendto(LOCATION_MZONE,g,0,tp,0x20,POS_FACEDOWN_DEFENCE)
end
function cm.filter(c,e,tp)
return c:IsSetCard(0x202) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE)
return c:IsSetCard(0x202) and c:IsType(TYPE_MONSTER)
end
\ No newline at end of file
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_SPSUMMON_SUCCESS,cm.operation,VgF.DamageCost(1),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.DamageCost(1),cm.condition)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return VgF.RMonsterFilter(c) and eg:IsExists(cm.filter,1,nil,tp)
return vgf.RMonsterFilter(c) and eg:IsExists(cm.filter,1,nil,tp)
end
function cm.filter(c,tp)
return c:IsSummonType(SUMMON_VALUE_REVOLT) and vgf.VMonsterFilter(c) and c:IsControler(tp)
......
......@@ -9,5 +9,5 @@ end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if vgf.GetAvailableLocation(tp)<=0 then return end
vgf.Call(c,0,tp)
vgf.Sendto(LOCATION_MZONE,c,0,tp)
end
\ No newline at end of file
......@@ -5,14 +5,14 @@ function cm.initial_effect(c)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return vgf.RMonsterFilter(c) and VgF.VMonsterFilter(Duel.GetAttackTarget()) and Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,4,nil)
return vgf.RMonsterFilter(c) and vgf.VMonsterFilter(Duel.GetAttackTarget()) and Duel.IsExistingMatchingCard(nil,tp,LOCATION_MZONE,0,4,nil)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayGroup():FilterCount(Card.IsAbleToGraveAsCost,nil)>=1 and e:GetHandler():IsAbleToGraveAsCost() end
if chk==0 then return Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil,nil):GetFirst():GetOverlayCount()>=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVEXYZ)
local g=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():FilterSelect(tp,Card.IsAbleToGraveAsCost,1,1,nil)
local g=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst():GetOverlayGroup():Select(tp,1,1,nil)
g:AddCard(e:GetHandler())
Duel.SendtoGrave(g,REASON_COST)
vgf.Sendto(LOCATION_DROP,g,REASON_COST)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetDecktopGroup(tp,3)
......@@ -20,7 +20,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:FilterSelect(tp,cm.filter,0,1,nil)
if sg:GetCount()>0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
vgf.Sendto(LOCATION_HAND,sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
else
Duel.Draw(tp,1,REASON_EFFECT)
......@@ -28,5 +28,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.filter(c)
return c:IsLevelAbove(3) and c:IsType(TYPE_MONSTER) and c:IsAbleToHand()
return c:IsLevelAbove(3) and c:IsType(TYPE_MONSTER)
end
\ No newline at end of file
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.SpellActivate(c,m,vgf.SearchCard(LOCATION_DECK,cm.filter),vgf.DamageCost(1),cm.condition)
vgd.SpellActivate(c,m,vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.filter),vgf.DamageCost(1),cm.condition)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return vgf.GetVMonster(tp):IsSetCard(0x202)
......
......@@ -17,13 +17,12 @@ 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)
vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT)
end
function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsAbleToHand()
return vgf.RMonsterFilter(c)
end
function cm.condition1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......@@ -35,17 +34,16 @@ 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.IsType,tp,LOCATION_HAND,0,0,ct,nil,TYPE_MONSTER)
if g:GetCount()==1 then
vgf.Call(g,0,tp)
vgf.Sendto(LOCATION_MZONE,g,0,tp)
elseif g:GetCount()==2 then
local tc1=g:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CallZONE)
local szone=Duel.SelectField(tp,1,LOCATION_MZONE,0,zone)
if Duel.IsExistingMatchingCard(VgD.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,szone) then
local tc=Duel.GetMatchingGroup(VgD.CallFilter,tp,LOCATION_MZONE,0,nil,tp,szone):GetFirst()
Duel.SendtoGrave(tc,REASON_COST)
if Duel.IsExistingMatchingCard(vgd.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,szone) then
local tc=Duel.GetMatchingGroup(vgd.CallFilter,tp,LOCATION_MZONE,0,nil,tp,szone):GetFirst()
vgf.Sendto(LOCATION_DROP,tc,REASON_COST)
end
Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP_ATTACK,szone)
if szone&0x11>0 then
......@@ -56,9 +54,9 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local tc2=g:GetNext()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CallZONE)
szone=Duel.SelectField(tp,1,LOCATION_MZONE,0,zone)
if Duel.IsExistingMatchingCard(VgD.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,szone) then
local tc=Duel.GetMatchingGroup(VgD.CallFilter,tp,LOCATION_MZONE,0,nil,tp,szone):GetFirst()
Duel.SendtoGrave(tc,REASON_COST)
if Duel.IsExistingMatchingCard(vgd.CallFilter,tp,LOCATION_MZONE,0,1,nil,tp,szone) then
local tc=Duel.GetMatchingGroup(vgd.CallFilter,tp,LOCATION_MZONE,0,nil,tp,szone):GetFirst()
vgf.Sendto(LOCATION_DROP,tc,REASON_COST)
end
Duel.SpecialSummonStep(tc2,0,tp,tp,false,false,POS_FACEUP_ATTACK,szone)
Duel.SpecialSummonComplete()
......
......@@ -6,13 +6,12 @@ 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)
vgf.Sendto(LOCATION_HAND,g,nil,REASON_EFFECT)
end
function cm.filter(c)
return vgf.RMonsterFilter(c) and c:IsAbleToHand()
return vgf.RMonsterFilter(c)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_MZONE,0,1,nil,e:GetHandler()) and Duel.GetAttacker()==e:GetHandler() and vgf.RMonsterCondition(e)
......
......@@ -15,13 +15,12 @@ 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_DROP,0,1,1,nil)
Duel.HintSelection(g)
vgf.Call(g,0,tp,nil,POS_FACEUP_DEFENSE)
vgf.Sendto(LOCATION_MZONE,g,0,tp,nil,POS_FACEUP_DEFENSE)
end
function cm.filter(c,e,tp)
return c:IsLevel(c,0,1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK)
function cm.filter(c)
return c:IsLevel(c,0,1) and c:IsType(TYPE_MONSTER)
end
function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
......@@ -11,25 +11,19 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.DisableShuffleCheck()
local off=1
local ops={}
local a=tc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_ATTACK) and vgf.GetAvailableLocation(tp)>0
local b=tc:IsAbleToHand()
if not a and not b then return end
local a=tc:IsType(TYPE_MONSTERS) and vgf.GetAvailableLocation(tp)>0
if a then
ops[off]=1152
off=off+1
end
if b then
ops[off]=1190
off=off+1
end
ops[off]=1190
local sel=Duel.SelectOption(tp,table.unpack(ops))
if sel==0 and a then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP_ATTACK)
else
Duel.SendtoHand(g,nil,REASON_EFFECT)
vgf.Sendto(LOCATION_HAND,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)
Duel.SendtoGrave(tg,REASON_COST)
local tg=vgf.SelectMatchingCard(HINTMSG_DISCARD,e,tp,nil,tp,LOCATION_HAND,0,1,1,nil)
vgf.Sendto(LOCATION_DROP,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)
......
--能量发生器
local cm,m,o=GetID()
function cm.initial_effect(c)
VgD.Rule(c)
vgd.Rule(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_DELAY)
......@@ -23,7 +23,7 @@ function cm.initial_effect(c)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_EMBLEM)
e3:SetCountLimit(1)
e3:SetCost(VgF.EnergyCost(7))
e3:SetCost(vgf.EnergyCost(7))
e3:SetOperation(cm.op3)
c:RegisterEffect(e3)
end
......@@ -35,7 +35,7 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
for i = 1, 3, 1 do
local token=Duel.CreateToken(tp,20401001)
Duel.Sendto(token,tp,LOCATION_EMBLEM,POS_FACEUP,REASON_EFFECT)
vgf.Sendto(LOCATION_EMBLEM,token,tp,POS_FACEUP,REASON_EFFECT)
end
end
function cm.con2(e,tp,eg,ep,ev,re,r,rp)
......@@ -45,7 +45,7 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_EMBLEM,0,nil,20401001)>=10 then return end
local token=Duel.CreateToken(tp,20401001)
Duel.Sendto(token,tp,LOCATION_EMBLEM,POS_FACEUP,REASON_EFFECT)
vgf.Sendto(LOCATION_EMBLEM,token,tp,POS_FACEUP,REASON_EFFECT)
end
function cm.op3(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
......
......@@ -22,8 +22,8 @@ function cm.op(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 vgf.DamageCostOP(1,e,tp,eg,ep,ev,re,r,rp,chk) and vgf.DisCardCostOP(1,e,tp,eg,ep,ev,re,r,rp,chk)
return vgf.DamageCost(1)(e,tp,eg,ep,ev,re,r,rp,chk) and vgf.DisCardCost(1)(e,tp,eg,ep,ev,re,r,rp,chk)
end
vgf.DamageCostOP(1,e,tp,eg,ep,ev,re,r,rp,chk)
vgf.DisCardCostOP(1,e,tp,eg,ep,ev,re,r,rp,chk)
vgf.DamageCost(1)(e,tp,eg,ep,ev,re,r,rp,chk)
vgf.DisCardCost(1)(e,tp,eg,ep,ev,re,r,rp,chk)
end
\ No newline at end of file
......@@ -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,9 +15,8 @@ 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)
if g:GetCount()>0 then Duel.SendtoGrave(g,REASON_EFFECT) end
local g=vgf.SelectMatchingCard(HINTMSG_LEAVEONFIELD,e,tp,vgf.VMonsterFilter,tp,0,LOCATION_MZONE,1,1,nil)
if g:GetCount()>0 then vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT) end
vgf.AtkUp(c,c,10000)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
......@@ -31,14 +29,14 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(g)
local ct1=vgf.GetAvailableLocation(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CALL)
local sg=g:FilterSelect(tp,Card.IsCanBeSpecialSummoned,0,ct1,nil)
local sg=g:FilterSelect(tp,Card.IsType,0,ct1,nil,TYPE_MONSTER)
if sg:GetCount()>0 then
vgf.Call(sg,0,tp)
for tc in vgf.Next(sg) do g:RemoveCard(tc) end
vgf.Sendto(LOCATION_MZONE,sg,0,tp)
g:Sub(sg)
end
if g:GetCount()>0 then
local tc=vgf.GetVMonster(tp)
Duel.Overlay(tc,g)
vgf.Sendto(LOCATION_OVERLAY,g,tc)
end
end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -16,23 +16,11 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
local g2=Duel.GetMatchingGroup(vgf.RMonsterFilter,tp,0,LOCATION_MZONE,nil)
local tc1=vgf.GetVMonster(tp)
local tc2=vgf.GetVMonster(1-tp)
for tc in vgf.Next(g1) do
local og=tc:GetOverlayGroup()
if og:GetCount()>0 then
Duel.Overlay(tc1,og)
end
end
for tc in vgf.Next(g2) do
local og=tc:GetOverlayGroup()
if og:GetCount()>0 then
Duel.Overlay(tc2,og)
end
end
Duel.Overlay(tc1,g1)
Duel.Overlay(tc2,g2)
vgf.Sendto(LOCATION_OVERLAY,g1,tc1)
vgf.Sendto(LOCATION_OVERLAY,g2,tc2)
if vgf.GetAvailableLocation(tp)>0 then
local g=tc1:GetOverlayGroup():FilterSelect(tp,Card.IsCanBeSpecialSummoned,tp,0,2,nil,e,0,tp,false,false,POS_FACEUP_ATTACK)
vgf.Call(g,0,tp)
local g=tc1:GetOverlayGroup():FilterSelect(tp,Card.IsType,tp,0,2,nil,TYPE_MONSTER)
vgf.Sendto(LOCATION_MZONE,g,0,tp)
end
end
end
\ No newline at end of file
......@@ -20,10 +20,9 @@ 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)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end
end
\ No newline at end of file
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_BATTLED,cm.op,cm.cost,cm.con)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:GetFlagEffect(SupportFlag)>0 and vgf.RMonsterCondition(e)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then
return vgf.OverlayCost(1)(e,tp,eg,ep,ev,re,r,rp,chk)
end
vgf.OverlayCost(1)(e,tp,eg,ep,ev,re,r,rp,chk)
vgf.Sendto(LOCATION_DROP,c,REASON_COST)
end
\ No newline at end of file
......@@ -12,7 +12,7 @@ end
--效果二处理
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.SearchCardSpecialSummonOP(LOCATION_DROP,cm.fliter2,e,tp,eg,ep,ev,re,r,rp)
vgf.SearchCard(LOCATION_MZONE,LOCATION_DROP,cm.fliter2)(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetOperatedGroup()
vgf.AtkUp(c,g,5000)
end
......@@ -22,7 +22,7 @@ function cm.fliter2(c)
end
--计数爆发1,灵魂爆发1
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.DamageCostOP(1,e,tp,eg,ep,ev,re,r,rp,0) and vgf.OverlayCostOP(1,e,tp,eg,ep,ev,re,r,rp,0) end
vgf.DamageCostOP(1,e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayCostOP(1,e,tp,eg,ep,ev,re,r,rp,1)
if chk==0 then return vgf.DamageCost(1)(e,tp,eg,ep,ev,re,r,rp,0) and vgf.OverlayCost(1)(e,tp,eg,ep,ev,re,r,rp,0) end
vgf.DamageCost(1)(e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayCost(1)(e,tp,eg,ep,ev,re,r,rp,1)
end
......@@ -3,23 +3,21 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--追加效果——抽1张卡!选择你的1个单位,这个回合中,☆+1!将当前存在于前列的你所有的单位的力量+10000!你的伤害区中的卡的张数在对手的伤害区中的卡的张数以上的话,选择你的伤害区中的1张卡,回复!
VgD.CardTrigger(c,cm.operation)
vgd.CardTrigger(c,cm.operation)
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)
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)
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)
vgf.Sendto(LOCATION_DROP,tc,REASON_TRIGGER)
end
end
end
\ No newline at end of file
......@@ -8,20 +8,19 @@ function cm.initial_effect(c)
end
function cm.condition2(e,tp,eg,ep,ev,re,r,rp)
local c=Duel.GetAttacker()
return vgf.RMonsterCondition(e) and Duel.GetMatchingGroupCount(vgf.RMonsterFilter,tp,0,LOCATION_MZONE,nil)<=2 and VgF.VMonsterFilter(c)
return vgf.RMonsterCondition(e) and Duel.GetMatchingGroupCount(vgf.RMonsterFilter,tp,0,LOCATION_MZONE,nil)<=2 and vgf.VMonsterFilter(c)
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then return c:IsCanOverlay() end
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
Duel.Overlay(rc,c)
if chk==0 then return true end
local rc=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
vgf.Sendto(LOCATION_OVERLAY,c,rc)
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)
local e1=vgf.StarUp(c,g,1,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED)
end
end
\ No newline at end of file
......@@ -10,15 +10,14 @@ 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_DROP,0,0,1,nil)
if g:GetCount()>0 then
Duel.Overlay(VgF.GetVMonster(tp),g)
vgf.Sendto(LOCATION_OVERLAY,g,vgf.GetVMonster(tp))
end
end
function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.OverlayFillOP(1,e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp,1)
local e1=vgf.AtkUp(c,c,5000)
vgf.EffectReset(c,e1,EVENT_BATTLED)
end
......
......@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】:这个单位登场到R时,通过【费用】[计数爆发2],灵魂填充1,选择对手的1张后防者,退场。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,VgF.DamageCost(2),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.DamageCost(2),cm.condition)
end
--这个单位从手牌登场到R时
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
......@@ -12,10 +12,9 @@ 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()
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)
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp)
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)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end
end
......@@ -3,7 +3,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】【R】:这个单位的攻击击中时,通过【费用】[将手牌中的1张卡舍弃],抽1张卡。
vgd.EffectTypeTriggerWhenHitting(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.operation, VgF.DisCardCost(1))
vgd.EffectTypeTriggerWhenHitting(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.operation, vgf.DisCardCost(1))
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
......
......@@ -7,9 +7,9 @@ function cm.initial_effect(c)
end
--计数爆发1,灵魂爆发1
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return vgf.DamageCostOP(1,e,tp,eg,ep,ev,re,r,rp,0) and vgf.OverlayCostOP(1,e,tp,eg,ep,ev,re,r,rp,0) end
vgf.DamageCostOP(1,e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayCostOP(1,e,tp,eg,ep,ev,re,r,rp,1)
if chk==0 then return vgf.DamageCost(1)(e,tp,eg,ep,ev,re,r,rp,0) and vgf.OverlayCost(1)(e,tp,eg,ep,ev,re,r,rp,0) end
vgf.DamageCost(1)(e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayCost(1)(e,tp,eg,ep,ev,re,r,rp,1)
end
--选择对手的1张等级2以上的后防者
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
......@@ -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
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end
end
function cm.fliter(c)
return vgf.RMonsterFilter(c) and c:IsLevelAbove(3)
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.CardToG(c,nil,cm.op)
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=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
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1)
tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then
tc:RegisterFlagEffect(DefenseEntirelyFlag,RESET_EVENT+RESETS_STANDARD,0,1)
end
end
local sg=Duel.GetFieldGroup(tp,LOCATION_HAND,0)
if sg:GetCount()>=2 then
sg=sg:Select(tp,1,1,nil)
vgf.Sendto(LOCATION_DROP,sg,REASON_DISCARD+REASON_EFFECT)
end
end
\ No newline at end of file
......@@ -3,20 +3,20 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
--【自】:这个单位登场到R时,你有「重力的支配者 磁力重压」的先导者的话,灵魂填充2。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,VgF.OverlayFill(2),nil,cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.OverlayFill(2),nil,cm.condition)
--【起】【R】:你的灵魂在10张以上的话,通过【费用】[计数爆发2],这个回合中,将当前存在于前列的你所有的单位的力量+5000。
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,cm.operation,VgF.DamageCost(2),cm.condition1)
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,cm.operation,vgf.DamageCost(2),cm.condition1)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return not(c:IsSummonType(SUMMON_TYPE_RIDE) or c:IsSummonType(SUMMON_TYPE_SELFRIDE)) and VgF.GetVMonster(tp):IsCode(10401003)
return not(c:IsSummonType(SUMMON_TYPE_RIDE) or c:IsSummonType(SUMMON_TYPE_SELFRIDE)) and vgf.GetVMonster(tp):IsCode(10401003)
end
function cm.condition1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return vgf.RMonsterCondition(e) and VgF.GetVMonster(tp):GetOverlayCount()>=10
return vgf.RMonsterCondition(e) and vgf.GetVMonster(tp):GetOverlayCount()>=10
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g2=Duel.GetMatchingGroup(VgF.IsSequence,tp,LOCATION_MZONE,0,nil,0,4,5)
VgF.AtkUp(c,g2,10000,nil)
local g2=Duel.GetMatchingGroup(vgf.IsSequence,tp,LOCATION_MZONE,0,nil,0,4,5)
vgf.AtkUp(c,g2,10000,nil)
end
\ No newline at end of file
......@@ -5,25 +5,25 @@ function cm.initial_effect(c)
--【自】:这个单位被「重力的支配者 磁力重压」RIDE时,通过【费用】[将手牌中的1张卡放置到灵魂里],抽1张卡,灵魂填充1。
vgd.BeRidedByCard(c,m,10401003,cm.operation,cm.cost)
--【自】:这个单位登场到R时,通过【费用】[计数爆发1],灵魂填充2。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,VgF.DamageCost(1),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation1,vgf.DamageCost(1),cm.condition)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Draw(tp,1,REASON_EFFECT)
VgF.OverlayFillOP(1,e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp,1)
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)
Duel.HintSelection(g)
Duel.Overlay(rc,g)
local rc=Duel.GetMatchingGroup(vgf.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local g=vgf.SelectMatchingCard(HINTMSG_OVERLAY,e,tp,nil,tp,LOCATION_HAND,0,1,1,nil,e,tp)
Duel.HintSelection(g)
vgf.Sendto(LOCATION_OVERLAY,g,rc)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return not(c:IsSummonType(SUMMON_TYPE_RIDE) or c:IsSummonType(SUMMON_TYPE_SELFRIDE))
end
function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
vgf.OverlayFillOP(2,e,tp,eg,ep,ev,re,r,rp,1)
vgf.OverlayFill(2)(e,tp,eg,ep,ev,re,r,rp,1)
end
\ No newline at end of file
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.CardToG(c,nil,cm.op)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
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
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(1)
tc:RegisterEffect(e1)
vgf.EffectReset(c,e1,EVENT_BATTLED)
elseif vgf.VMonsterFilter(tc) then
tc:RegisterFlagEffect(DefenseEntirelyFlag,RESET_EVENT+RESETS_STANDARD,0,1)
end
end
local sg=Duel.GetFieldGroup(tp,LOCATION_HAND,0)
if sg:GetCount()>=2 then
sg=sg:Select(tp,1,1,nil)
vgf.Sendto(LOCATION_DROP,sg,REASON_DISCARD+REASON_EFFECT)
end
end
\ No newline at end of file
......@@ -7,14 +7,14 @@ function cm.initial_effect(c)
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,1)
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp,1)
Duel.BreakEffect()
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)
vgf.AtkUp(c,g,e2,nil)
if Duel.GetMatchingGroupCount(nil,tp,LOCATION_OVERLAY,0,nil)>=10 then
Duel.Draw(tp,1,REASON_EFFECT)
end
......
......@@ -2,9 +2,9 @@
local cm,m,o=GetID()
function cm.initial_effect(c)--这个函数下面用于注册效果
vgf.VgCard(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.SearchCard(LOCATION_DECK,cm.filter),VgF.DamageCost(1),cm.con2)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.filter),vgf.DamageCost(1),cm.con2)
-- 【自】【V】:这个单位的攻击击中时,抽1张卡,选择你的1张含有「诚意真心」的后防者,这个回合中,力量+5000。
vgd.EffectTypeTriggerWhenHitting(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.operation1,nil,VgF.VMonsterCondition)
vgd.EffectTypeTriggerWhenHitting(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.operation1,nil,vgf.VMonsterCondition)
end
function cm.con2(e)
local c=e:GetHandler()
......@@ -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
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeIgnition(c,m,LOCATION_MZONE,cm.op,vgf.DamageCost(1),vgf.VMonsterCondition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.op2,nil,cm.con2)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
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
function cm.filter(c)
return c:IsSetCard(0xa040) and c:IsPosition(POS_FACEUP)
end
function cm.con2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return vgf.RMonsterFilter(c) and Duel.IsExistingMatchingCard(Card.IsPosition,tp,LOCATION_ORDER,0,2,nil,POS_FACEDOWN)
end
function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
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)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(0,1)
e1:SetValue(cm.actlimit)
Duel.RegisterEffect(e1,tp)
vgf.EffectReset(c,e1,EVENT_BATTLED)
end
function cm.actlimit(e,te,tp)
local tc=te:GetHandler()
return te:IsHasCategory(CATEGORY_DEFENDER) and tc:IsType(TYPE_MONSTER) and tc:GetBaseDefense()==0 and tc:IsLocation(LOCATION_HAND)
end
\ No newline at end of file
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.GlobalCheckEffect(c,m,EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS,EVENT_CHANGE_POS,cm.checkcon,cm.checkop)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SUPPORT,cm.op,nil,cm.con)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return Duel.GetFlagEffect(tp,m)>0 and eg:IsContains(e:GetHandler()) and vgf.RMonsterFilter(c)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local e1=vgf.AtkUp(c,c,5000,nil)
vgf.EffectReset(c,e1,EVENT_BATTLED)
if vgf.IsSequence(c,2) then
vgf.DamageFill(1)(e,tp,eg,ep,ev,re,r,rp)
end
end
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())
end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.checkfilter,1,nil,tp,re)
end
function cm.checkop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end
\ No newline at end of file
......@@ -5,7 +5,7 @@ function cm.initial_effect(c)
-- 【永】【V】:你的回合中,你没有后防者的话,这个单位的力量+5000。
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,cm.con1)
--【自】:通过在「认真的挑战者 克拉莉萨」上RIDE的方式将这个单位登场到V时,通过【费用】[灵魂爆发1],查看你的牌堆顶的7张卡,选择至多1张等级2以下的含有「诚意真心」的卡,公开后加入手牌,将其余的卡洗切后放置到牌堆底。
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,VgF.OverlayCost(1),cm.con2)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.operation,vgf.OverlayCost(1),cm.con2)
end
function cm.con1(e)
local c=e:GetHandler()
......@@ -24,7 +24,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:FilterSelect(tp,cm.filter,0,1,nil)
if #sg > 0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
vgf.Sendto(LOCATION_HAND,sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
Duel.ShuffleHand(tp)
g:RemoveCard(vgf.ReturnCard(sg))
......@@ -35,7 +35,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.filter(c)
return c:IsSetCard(0xb6) and c:IsLevelBelow(3) and c:IsAbleToHand()
return c:IsSetCard(0xb6) and c:IsLevelBelow(3)
end
......@@ -4,7 +4,7 @@ function cm.initial_effect(c)
vgf.VgCard(c)
-- 【永】【V】:【永】【V】:你的回合中,你的指令区中有正面表示的歌曲卡的话,这个单位的力量+5000。
VgD.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,cm.con1)
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,cm.con1)
-- 【自】:这个单位被RIDE时,选择你的牌堆或手牌中的至多1张等级2的歌曲卡,公开后放置到指令区,从牌堆探寻了的话,牌堆洗切。从手牌放置了的话,抽卡1张。
vgd.BeRidedByCard(c,m,nil,cm.operation)
end
......@@ -20,12 +20,11 @@ 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)
Duel.Sendto(tc,tp,LOCATION_ORDER,POS_FACEUP_ATTACK,REASON_EFFECT)
vgf.Sendto(LOCATION_ORDER,tc,tp,POS_FACEUP_ATTACK,REASON_EFFECT)
Duel.ShuffleDeck(tp)
if chk then
Duel.Draw(tp,1,REASON_EFFECT)
......@@ -33,7 +32,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.filter(c)
return c:IsSetCard(0xa040) and c:IsAbleToHand() and vgf.IsLevel(c,2)
return c:IsSetCard(0xa040) and vgf.IsLevel(c,2)
end
......
......@@ -4,7 +4,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
-- 【永】【R】:你的回合中,你的指令区中有2张以上的卡的话,这个单位的力量+5000。
VgD.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,cm.con1)
vgd.EffectTypeContinuousChangeAttack(c,EFFECT_TYPE_SINGLE,5000,cm.con1)
end
function cm.con1(e)
......
......@@ -7,12 +7,11 @@ 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)
Duel.Sendto(tc,tp,LOCATION_ORDER,POS_FACEUP_ATTACK,REASON_EFFECT)
vgf.Sendto(LOCATION_ORDER,tc,tp,POS_FACEUP_ATTACK,REASON_EFFECT)
Duel.ShuffleDeck(tp)
if chk then
Duel.Draw(tp,1,REASON_EFFECT)
......@@ -20,5 +19,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.filter(c)
return c:IsSetCard(0xa040) and c:IsAbleToHand() and vgf.IsLevel(c,1)
return c:IsSetCard(0xa040) and vgf.IsLevel(c,1)
end
\ No newline at end of file
......@@ -24,7 +24,7 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=g:FilterSelect(tp,cm.filter,0,1,nil)
if #sg > 0 then
Duel.SendtoHand(sg,nil,REASON_EFFECT)
vgf.Sendto(LOCATION_HAND,sg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,sg)
Duel.ShuffleHand(tp)
g:RemoveCard(vgf.ReturnCard(sg))
......@@ -35,5 +35,5 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.filter(c)
return c:IsSetCard(0xb6) and c:IsLevelBelow(2) and c:IsAbleToHand()
return c:IsSetCard(0xb6) and c:IsLevelBelow(2)
end
\ No newline at end of file
local cm,m,o=GetID()
function cm.initial_effect(c)
vgf.VgCard(c)
vgd.ContinuousSpell(c)
vgd.EffectTypeTrigger(c,m,LOCATION_ORDER,EFFECT_TYPE_FIELD,EVENT_CUSTOM+EVENT_SING,cm.op,nil,cm.con)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.Draw(tp,1,REASON_EFFECT)
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
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return eg:IsContains(e:GetHandler())
end
\ No newline at end of file
--能量发生器
local cm,m,o=GetID()
function cm.initial_effect(c)
VgD.Rule(c)
vgd.Rule(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetProperty(EFFECT_FLAG_DELAY)
......@@ -22,7 +22,7 @@ function cm.initial_effect(c)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_EMBLEM)
e3:SetCountLimit(1)
e3:SetCost(VgF.EnergyCost(7))
e3:SetCost(vgf.EnergyCost(7))
e3:SetOperation(cm.op3)
c:RegisterEffect(e3)
end
......@@ -39,7 +39,7 @@ function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local token2=Duel.CreateToken(tp,code)
local token3=Duel.CreateToken(tp,code)
local g=Group.FromCards(token1,token2,token3)
Duel.Sendto(g,tp,LOCATION_EMBLEM,POS_FACEUP_ATTACK,REASON_EFFECT)
vgf.Sendto(LOCATION_EMBLEM,g,tp,POS_FACEUP_ATTACK,REASON_EFFECT)
end
function cm.con2(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and Duel.GetMatchingGroupCount(Card.IsCode,tp,LOCATION_EMBLEM,0,nil,code)<10
......@@ -55,8 +55,8 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local token2=Duel.CreateToken(tp,code)
local token3=Duel.CreateToken(tp,code)
local sg=Group.FromCards(token1,token2,token3)
local g=VgF.GetCardsFromGroup(sg,ct)
Duel.Sendto(g,tp,LOCATION_EMBLEM,POS_FACEUP_ATTACK,REASON_EFFECT)
local g=vgf.GetCardsFromGroup(sg,ct)
vgf.Sendto(LOCATION_EMBLEM,g,tp,POS_FACEUP_ATTACK,REASON_EFFECT)
end
function cm.op3(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
......
......@@ -10,7 +10,7 @@ end
--效果一处理
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.SearchCardOP(LOCATION_DECK,cm.fliter,e,tp,eg,ep,ev,re,r,rp)
vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.fliter)(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,c,10000,nil)
end
--返回效果一寻找卡密
......@@ -25,12 +25,11 @@ 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)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
end
vgf.AtkUp(c,c,5000)
VgF.StarUp(c,c,1)
vgf.StarUp(c,c,1)
end
\ No newline at end of file
......@@ -10,7 +10,7 @@ end
--效果一处理
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.SearchCardOP(LOCATION_DECK,cm.fliter,e,tp,eg,ep,ev,re,r,rp)
vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.fliter)(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,c,10000,nil)
end
--返回效果一寻找目标
......@@ -25,7 +25,7 @@ end
--效果二处理
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.SearchCardSpecialSummonOP(LOCATION_DROP,cm.fliter2,e,tp,eg,ep,ev,re,r,rp)
vgf.SearchCard(LOCATION_MZONE,LOCATION_DROP,cm.fliter2)(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetOperatedGroup()
vgf.AtkUp(c,g,10000)
end
......
......@@ -10,7 +10,7 @@ end
--效果一处理
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.SearchCardOP(LOCATION_DECK,cm.fliter,e,tp,eg,ep,ev,re,r,rp)
vgf.SearchCard(LOCATION_HAND,LOCATION_DECK,cm.fliter)(e,tp,eg,ep,ev,re,r,rp)
vgf.AtkUp(c,c,10000,nil)
end
--返回找的卡密
......@@ -25,7 +25,7 @@ end
--效果二处理
function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
vgf.SearchCardSpecialSummonOP(LOCATION_HAND,cm.fliter2,e,tp,eg,ep,ev,re,r,rp)
vgf.SearchCard(LOCATION_MZONE,LOCATION_HAND,cm.fliter2)(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetOperatedGroup()
vgf.AtkUp(c,g,10000)
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