Commit a0f85d5b authored by jwyxym's avatar jwyxym Committed by GitHub

Add files via upload

parent a92b2235
...@@ -394,7 +394,7 @@ function VgD.MonsterPosDefenseOperation(e,tp,eg,ep,ev,re,r,rp) ...@@ -394,7 +394,7 @@ function VgD.MonsterPosDefenseOperation(e,tp,eg,ep,ev,re,r,rp)
elseif c:IsAttribute(SKILL_THRICE_TRIGGER) then elseif c:IsAttribute(SKILL_THRICE_TRIGGER) then
label=label+2 label=label+2
end end
c:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD+EVENT_PRE_BATTLE_DAMAGE,0,1,label) c:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD,0,1,label)
Duel.RaiseEvent(c,EVENT_CUSTOM+EVENT_TRIGGERCOUNTUP,e,0,tp,tp,0) Duel.RaiseEvent(c,EVENT_CUSTOM+EVENT_TRIGGERCOUNTUP,e,0,tp,tp,0)
end end
function VgD.MonsterPosAttackOperation(e,tp,eg,ep,ev,re,r,rp) function VgD.MonsterPosAttackOperation(e,tp,eg,ep,ev,re,r,rp)
...@@ -410,13 +410,13 @@ function VgD.MonsterBattleDamageCondition(e,tp,eg,ep,ev,re,r,rp) ...@@ -410,13 +410,13 @@ function VgD.MonsterBattleDamageCondition(e,tp,eg,ep,ev,re,r,rp)
if not bc or not bc:IsRelateToBattle() then return false end if not bc or not bc:IsRelateToBattle() then return false end
local atk=bc:GetAttack() local atk=bc:GetAttack()
local def=c:GetAttack() local def=c:GetAttack()
return VgF.VMonsterFilter(c) and c==Duel.GetAttackTarget() and atk>=def and bc:GetLeftScale()>0 and Duel.GetFlagEffect(tp,DefenseEntirelyFlag)==0 return VgF.VMonsterFilter(c) and c==Duel.GetAttackTarget() and atk>=def and bc:GetLeftScale()>0 and Duel.GetAttackTarget():GetFlagEffect(DefenseEntirelyFlag)==0
end end
function VgD.MonsterBattleDamageOperation(e,tp,eg,ep,ev,re,r,rp) function VgD.MonsterBattleDamageOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local bc=c:GetBattleTarget() local bc=c:GetBattleTarget()
local label=bc:GetLeftScale()-1 local label=bc:GetLeftScale()-1
bc:RegisterFlagEffect(DamageTriggerFlag,RESET_EVENT+RESETS_STANDARD+EVENT_PRE_BATTLE_DAMAGE,0,1,label) bc:RegisterFlagEffect(DamageTriggerFlag,RESET_EVENT+RESETS_STANDARD,0,1,label)
VgD.TriggerCard(e,tp,eg,ep,ev,re,r,rp) VgD.TriggerCard(e,tp,eg,ep,ev,re,r,rp)
end end
function VgD.MonsterNextTrigger(e,tp,eg,ep,ev,re,r,rp) function VgD.MonsterNextTrigger(e,tp,eg,ep,ev,re,r,rp)
...@@ -529,7 +529,7 @@ function VgD.CardToGCondition(e,tp,eg,ep,ev,re,r,rp) ...@@ -529,7 +529,7 @@ function VgD.CardToGCondition(e,tp,eg,ep,ev,re,r,rp)
return c:IsLocation(LOCATION_GZONE) and Duel.GetAttackTarget() return c:IsLocation(LOCATION_GZONE) and Duel.GetAttackTarget()
end end
function VgD.CardToGOperation(e,tp,eg,ep,ev,re,r,rp) function VgD.CardToGOperation(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterFlagEffect(tp,DefenseEntirelyFlag,RESET_EVENT+EVENT_DAMAGE_STEP_END,0,1) Duel.GetAttackTarget():RegisterFlagEffect(DefenseEntirelyFlag,RESET_EVENT+RESETS_STANDARD,0,1)
end end
--判定 --判定
...@@ -608,7 +608,7 @@ function VgD.CardTriggerOperation(chkop,f) ...@@ -608,7 +608,7 @@ function VgD.CardTriggerOperation(chkop,f)
label=label-1 label=label-1
Duel.RaiseEvent(c,EVENT_CUSTOM+EVENT_TRIGGER,e,0,tp,tp,0) Duel.RaiseEvent(c,EVENT_CUSTOM+EVENT_TRIGGER,e,0,tp,tp,0)
bc:ResetFlagEffect(DamageTriggerFlag) bc:ResetFlagEffect(DamageTriggerFlag)
bc:RegisterFlagEffect(DamageTriggerFlag,RESET_EVENT+RESETS_STANDARD+EVENT_DAMAGE_STEP_END,0,1,label) bc:RegisterFlagEffect(DamageTriggerFlag,RESET_EVENT+RESETS_STANDARD,0,1,label)
elseif label==0 then elseif label==0 then
bc:ResetFlagEffect(DamageTriggerFlag) bc:ResetFlagEffect(DamageTriggerFlag)
Duel.RaiseEvent(rc,EVENT_CUSTOM+EVENT_DAMAGE_TRIGGER,e,0,tp,tp,0) Duel.RaiseEvent(rc,EVENT_CUSTOM+EVENT_DAMAGE_TRIGGER,e,0,tp,tp,0)
...@@ -633,7 +633,7 @@ function VgD.CardTriggerOperation(chkop,f) ...@@ -633,7 +633,7 @@ function VgD.CardTriggerOperation(chkop,f)
label=label-1 label=label-1
Duel.RaiseEvent(c,EVENT_CUSTOM+EVENT_TRIGGER,e,0,tp,tp,0) Duel.RaiseEvent(c,EVENT_CUSTOM+EVENT_TRIGGER,e,0,tp,tp,0)
rc:ResetFlagEffect(AttackTriggerFlag) rc:ResetFlagEffect(AttackTriggerFlag)
rc:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD+EVENT_PRE_BATTLE_DAMAGE,0,1,label) rc:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD,0,1,label)
elseif label==0 then elseif label==0 then
rc:ResetFlagEffect(AttackTriggerFlag) rc:ResetFlagEffect(AttackTriggerFlag)
end end
...@@ -751,6 +751,7 @@ end ...@@ -751,6 +751,7 @@ end
function VgD.ResetOperation(e,tp,eg,ep,ev,re,r,rp) function VgD.ResetOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
if c:GetFlagEffect(SupportFlag)>0 then c:ResetFlagEffect(SupportFlag) end if c:GetFlagEffect(SupportFlag)>0 then c:ResetFlagEffect(SupportFlag) end
if c:GetFlagEffect(DefenseEntirelyFlag)>0 then c:ResetFlagEffect(DefenseEntirelyFlag) end
end end
--指令卡 --指令卡
...@@ -1027,9 +1028,9 @@ function VgD.TriggerCountUpOperation(num) ...@@ -1027,9 +1028,9 @@ function VgD.TriggerCountUpOperation(num)
if not label then if not label then
label=label+num label=label+num
c:ResetFlagEffect(AttackTriggerFlag) c:ResetFlagEffect(AttackTriggerFlag)
c:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD+EVENT_PRE_BATTLE_DAMAGE,0,1,label) c:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD,0,1,label)
else else
c:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD+EVENT_PRE_BATTLE_DAMAGE,0,1,num) c:RegisterFlagEffect(AttackTriggerFlag,RESET_EVENT+RESETS_STANDARD,0,1,num)
end end
end end
end end
\ No newline at end of file
...@@ -370,77 +370,26 @@ function VgF.AtkUp(c,g,val,reset) ...@@ -370,77 +370,26 @@ function VgF.AtkUp(c,g,val,reset)
if not reset then reset=RESET_PHASE+PHASE_END end if not reset then reset=RESET_PHASE+PHASE_END end
if not val or val==0 then return end if not val or val==0 then return end
if VgF.GetValueType(g)=="Group" and g:GetCount()>0 then if VgF.GetValueType(g)=="Group" and g:GetCount()>0 then
local e={}
for tc in VgF.Next(g) do for tc in VgF.Next(g) do
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetValue(val) e1:SetValue(val)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD+reset)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
local e2=Effect.CreateEffect(c) table.insert(e,e1)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(reset)
e2:SetRange(c:GetLocation())
e2:SetLabelObject(e1)
e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetOperation(function (e,tp,eg,ep,ev,re,r,rp)
local effect=e:GetLabelObject()
effect:Reset()
end)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(reset)
e3:SetRange(c:GetLocation())
e3:SetLabelObject(e1)
e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CANNOT_DISABLE)
e3:SetOperation(function (e,tp,eg,ep,ev,re,r,rp)
local effect=e:GetLabelObject()
effect:Reset()
end)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetLabelObject(e2)
tc:RegisterEffect(e4)
end end
return return e,#e
elseif VgF.GetValueType(g)=="Card" then elseif VgF.GetValueType(g)=="Card" then
local tc=VgF.ReturnCard(g) local tc=VgF.ReturnCard(g)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetValue(val) e1:SetValue(val)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD+reset)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
local e2=Effect.CreateEffect(c) return e1,1
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(reset)
e2:SetRange(c:GetLocation())
e2:SetLabelObject(e1)
e2:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CANNOT_DISABLE)
e2:SetOperation(function (e,tp,eg,ep,ev,re,r,rp)
local effect=e:GetLabelObject()
effect:Reset()
end)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(reset)
e3:SetRange(c:GetLocation())
e3:SetLabelObject(e1)
e3:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_CANNOT_DISABLE)
e3:SetOperation(function (e,tp,eg,ep,ev,re,r,rp)
local effect=e:GetLabelObject()
effect:Reset()
end)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetLabelObject(e2)
tc:RegisterEffect(e4)
end end
end end
---以c的名义,使g(中的每一张卡)的☆上升val,并在reset时重置。 ---以c的名义,使g(中的每一张卡)的☆上升val,并在reset时重置。
...@@ -453,6 +402,8 @@ function VgF.StarUp(c,g,val,reset) ...@@ -453,6 +402,8 @@ function VgF.StarUp(c,g,val,reset)
if not reset then reset=RESET_PHASE+PHASE_END end if not reset then reset=RESET_PHASE+PHASE_END end
if not val or val==0 then return end if not val or val==0 then return end
if VgF.GetValueType(g)=="Group" and g:GetCount()>0 then if VgF.GetValueType(g)=="Group" and g:GetCount()>0 then
local el={}
local er={}
for tc in VgF.Next(g) do for tc in VgF.Next(g) do
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
...@@ -465,21 +416,25 @@ function VgF.StarUp(c,g,val,reset) ...@@ -465,21 +416,25 @@ function VgF.StarUp(c,g,val,reset)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_RSCALE) e2:SetCode(EFFECT_UPDATE_RSCALE)
tc:RegisterEffect(e2) tc:RegisterEffect(e2)
table.insert(el,e1)
table.insert(er,er)
end end
return return el,er,#el,#er
elseif VgF.GetValueType(g)=="Card" then
local tc=VgF.ReturnCard(g)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_LSCALE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetValue(val)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+reset)
tc:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_RSCALE)
tc:RegisterEffect(e2)
return e1,e2,1,1
end end
local tc=VgF.ReturnCard(g)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_LSCALE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetValue(val)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+reset)
tc:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_RSCALE)
tc:RegisterEffect(e2)
end end
---判断c是否可以以规则的手段到G区域。 ---判断c是否可以以规则的手段到G区域。
---@param c Card 要判断的卡 ---@param c Card 要判断的卡
...@@ -603,8 +558,6 @@ function VgF.SearchCard(loc,f) ...@@ -603,8 +558,6 @@ function VgF.SearchCard(loc,f)
if not loc then return end if not loc then return end
return function (e,tp,eg,ep,ev,re,r,rp) return function (e,tp,eg,ep,ev,re,r,rp)
VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp) VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetOperatedGroup()
return sg:GetCount()
end end
end end
function VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp) function VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
...@@ -618,6 +571,8 @@ function VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp) ...@@ -618,6 +571,8 @@ function VgF.SearchCardOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
end end
local sg=Duel.GetOperatedGroup()
return sg:GetCount()
end end
---用于效果的Operation。执行“从loc中选取1张满足f的卡,Call到R上。”。 ---用于效果的Operation。执行“从loc中选取1张满足f的卡,Call到R上。”。
---@param loc integer 要选取的区域。不填则返回nil,而不是效果的Operation函数。 ---@param loc integer 要选取的区域。不填则返回nil,而不是效果的Operation函数。
...@@ -627,8 +582,6 @@ function VgF.SearchCardSpecialSummon(loc,f) ...@@ -627,8 +582,6 @@ function VgF.SearchCardSpecialSummon(loc,f)
if not loc then return end if not loc then return end
return function (e,tp,eg,ep,ev,re,r,rp) return function (e,tp,eg,ep,ev,re,r,rp)
VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp) VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetOperatedGroup()
return sg:GetCount()
end end
end end
function VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp) function VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
...@@ -642,6 +595,8 @@ function VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp) ...@@ -642,6 +595,8 @@ function VgF.SearchCardSpecialSummonOP(loc,f,e,tp,eg,ep,ev,re,r,rp)
if loc&LOCATION_DECK+LOCATION_HAND+LOCATION_EXTRA==0 then Duel.HintSelection(g) end if loc&LOCATION_DECK+LOCATION_HAND+LOCATION_EXTRA==0 then Duel.HintSelection(g) end
VgF.Call(g,0,tp) VgF.Call(g,0,tp)
end end
local sg=Duel.GetOperatedGroup()
return sg:GetCount()
end end
function Group.CheckSubGroup(g,f,min,max,...) function Group.CheckSubGroup(g,f,min,max,...)
min=min or 1 min=min or 1
......
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