Commit 3763ff78 authored by jwyxym's avatar jwyxym Committed by GitHub

Add files via upload

parent 51a14325
......@@ -156,7 +156,7 @@ function VgD.CallFilter(c,tp,zone)
end
function VgD.CallOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local z=VgF.GetAvailableLocation(tp)
local z=bit.bnot(VgF.GetAvailableLocation(tp))
local rg=Duel.GetMatchingGroup(Card.IsPosition,sp,LOCATION_MZONE,0,nil,POS_FACEDOWN_ATTACK)
for tc in VgF.Next(rg) do
local szone=VgF.SequenceToGlobal(sp,tc:GetLocation(),tc:GetSequence())
......@@ -494,8 +494,10 @@ function VgD.MonsterAttackAnnounceCondition(e,c)
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()
return bc and Duel.GetAttackTarget()==bc and VgF.VMonsterFilter(c)
local a=c:GetFlagEffectLabel(AttackTriggerFlag) and c:GetFlagEffectLabel(AttackTriggerFlag)>0
return bc and Duel.GetAttackTarget()==bc and a
end
function VgD.MonsterAttackCost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
......@@ -549,10 +551,11 @@ end
function VgD.CardTriggerCondtion(chkcon)
return function (e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local rc=Duel.GetMatchingGroup(VgF.VMonsterFilter,tp,LOCATION_MZONE,0,nil):GetFirst()
local cp=tp
if chkcon==0 then cp=1-tp end
return Duel.GetTurnPlayer()==cp and c:IsLocation(LOCATION_TRIGGER) and (rc:GetFlagEffectLabel(AttackTriggerFlag) and rc:GetFlagEffectLabel(AttackTriggerFlag)>0)
if chkcon==0 then
cp=1-tp
end
return Duel.GetTurnPlayer()==cp and c:IsLocation(LOCATION_TRIGGER)
end
end
function VgD.CardTriggerOperation(chkop,f)
......
......@@ -293,11 +293,11 @@ function VgF.tgoval(e,re,rp)
end
function VgF.GetAvailableLocation(tp,zone)
local z
if zone then z=zone else z=0xe0 end
if zone then z=zone else z=0x1f end
local rg=Duel.GetMatchingGroup(Card.IsPosition,tp,LOCATION_MZONE,0,nil,POS_FACEDOWN_ATTACK)
for tc in VgF.Next(rg) do
local szone=VgF.SequenceToGlobal(tp,tc:GetLocation(),tc:GetSequence())
z=bit.bor(z,szone)
z=bit.bxor(z,szone)
end
return z
end
......@@ -316,6 +316,8 @@ function VgF.Call(g,sumtype,tp,zone,pos)
local ct=bit.ReturnCount(z)
local szone
if ct>1 then
z=bit.bnot(z)
z=bit.bor(z,0xffffff00)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CallZONE)
szone=Duel.SelectField(tp,1,LOCATION_MZONE,0,z)
else
......@@ -328,7 +330,8 @@ function VgF.Call(g,sumtype,tp,zone,pos)
return Duel.SpecialSummon(g,sumtype,tp,tp,false,false,pos,szone)
else
local sg
local z=VgF.GetAvailableLocation(tp)
local z=bit.bnot(VgF.GetAvailableLocation(tp))
z=bit.bor(z,0xffffff00)
if VgF.GetValueType(g)=="Card" then sg=Group.FromCards(g) else sg=Group.Clone(g) end
for sc in VgF.Next(sg) do
if sc:IsLocation(LOCATION_EXTRA) then
......
......@@ -31,7 +31,7 @@ end
function cm.con1(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_Call)
local g=vgf.GetVMonster(tp):GetOverlayGroup():FilterSelect(tp,cm.filter,1,1,nil,e,tp)
if g then
......
......@@ -3,6 +3,21 @@ function cm.initial_effect(c)
vgf.VgCard(c)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,vgf.OverlayCost(1),cm.condition)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_BATTLED,cm.operation1,nil,cm.condition1)
if not cm.global_check then
cm.global_check=true
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_SPSUMMON_SUCCESS)
ge1:SetCondition(cm.checkcon)
ge1:SetOperation(cm.checkop)
Duel.RegisterEffect(ge1,0)
end
end
function cm.checkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(Card.IsSummonType,1,nil,SUMMON_TYPE_SELFRIDE)
end
function cm.checkop(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......@@ -20,12 +35,14 @@ function cm.filter(c)
end
function cm.condition1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsSummonType(SUMMON_TYPE_SELFRIDE)
return Duel.GetFlagEffect(tp,m)>0
end
function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local zone=vgf.GetAvailableLocation(tp)
local zone=bit.bnot(vgf.GetAvailableLocation(tp))
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)
if g:GetCount()==1 then
......@@ -40,9 +57,9 @@ function cm.operation1(e,tp,eg,ep,ev,re,r,rp)
end
Duel.SpecialSummonStep(tc1,0,tp,tp,false,false,POS_FACEUP_ATTACK,szone)
if szone&0x11>0 then
zone=0xe
zone=0xf1
else
zone=0x11
zone=0xee
end
local tc2=g:GetNext()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CallZONE)
......
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