Commit 07a3b35f authored by nanahira's avatar nanahira

Merge branch 'master' into beta

parents ade84bba eec2fef0
......@@ -124,7 +124,6 @@ cache:
- lua-5.3.4.tar.gz
- sqlite-amalgamation-3200100.zip
- irrKlang-32bit-1.5.0.zip
- irrKlang-pro-1.5.0.zip
- sqlite-amalgamation-3150200.zip
- premake-5.0.0-alpha10-windows.zip
- Redis-x64-3.2.100.zip
......
......@@ -37,7 +37,6 @@ function cm.tdop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)==0 then return end
local ct=1
if Card.IsHasEffect then
local exte={c:IsHasEffect(37564427)}
for _,te in ipairs(exte) do
if Duel.SelectEffectYesNo(tp,te:GetHandler()) then
......@@ -45,9 +44,6 @@ function cm.tdop(e,tp,eg,ep,ev,re,r,rp)
ct=ct+1
end
end
else
ct=ct+c:GetEffectCount(37564427)
end
Duel.ConfirmDecktop(tp,ct)
local ag=Duel.GetDecktopGroup(tp,ct)
local val={0}
......
......@@ -144,8 +144,7 @@ function cm.CheckGroup(g,f,cg,min,max,...)
if ct>=min and ct<=max and f(sg,...) then return true end
return g:IsExists(cm.CheckGroupRecursive,1,sg,sg,g,f,min,max,ext_params)
end
if Group.SelectUnselect then
function cm.SelectGroup(tp,desc,g,f,cg,min,max,...)
function cm.SelectGroup(tp,desc,g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
local ext_params={...}
......@@ -172,8 +171,8 @@ if Group.SelectUnselect then
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end
return sg
end
function cm.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
end
function cm.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
local ext_params={...}
......@@ -204,37 +203,6 @@ if Group.SelectUnselect then
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end
return sg
end
else
function cm.SelectGroup(tp,desc,g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
local ext_params={...}
local sg=Group.CreateGroup()
if cg then
sg:Merge(cg)
end
local ct=sg:GetCount()
local ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
while ct<max and ag:GetCount()>0 do
local minc=1
local finish=(ct>=min and ct<=max and f(sg,...))
if finish then
minc=0
if cm.master_rule_3_flag and not Duel.SelectYesNo(tp,210) then break end
end
Duel.Hint(HINT_SELECTMSG,tp,desc)
local tg=ag:Select(tp,minc,1,nil)
if tg:GetCount()==0 then break end
sg:Merge(tg)
ct=sg:GetCount()
ag=g:Filter(cm.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end
return sg
end
function cm.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
return cm.SelectGroup(tp,desc,g,f,cg,min,max,...)
end
end
--updated overlay
......@@ -833,7 +801,6 @@ function cm.PrismDamageCheckOperation(e,tp,eg,ep,ev,re,r,rp)
local bc=c:GetBattleTarget()
if ct==0 then return end
if c:IsRelateToEffect(e) and c:IsFaceup() then
if Card.IsHasEffect then
local exte={c:IsHasEffect(37564427)}
for _,te in ipairs(exte) do
if Duel.SelectEffectYesNo(tp,te:GetHandler()) then
......@@ -841,9 +808,6 @@ function cm.PrismDamageCheckOperation(e,tp,eg,ep,ev,re,r,rp)
ct=ct+1
end
end
else
ct=ct+c:GetEffectCount(37564427)
end
Duel.ConfirmDecktop(tp,ct)
local g=Duel.GetDecktopGroup(tp,ct)
local ag=g:Filter(cm.CheckPrism,nil)
......@@ -1089,9 +1053,6 @@ function cm.PConditionFilterNanahira(c,e,tp,lscale,rscale,f,tc)
return lv>lscale and lv<rscale and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,false,false)
and not c:IsForbidden() and (not f or f(c,tc))
end
function cm.PConditionFilterExtra(c)
return c:IsHasEffect(37564541) and c.pendulum_info
end
function cm.PendConditionNanahira()
return function(e,c,og)
if c==nil then return true end
......@@ -1111,7 +1072,6 @@ function cm.PendConditionNanahira()
else
g=Duel.GetMatchingGroup(aux.PConditionFilter,tp,LOCATION_HAND+LOCATION_EXTRA,0,nil,e,tp,lscale,rscale)
end
if Card.IsHasEffect then
local ext1={c:IsHasEffect(37564541)}
local ext2={rpz:IsHasEffect(37564541)}
for i,te in pairs(ext1) do
......@@ -1128,16 +1088,6 @@ function cm.PendConditionNanahira()
g:Merge(exg)
end
end
else
local cg=Group.FromCards(c,rpz):Filter(cm.PConditionFilterExtra,nil)
for tc in aux.Next(cg) do
local t=tc.pendulum_info
if (t.location==LOCATION_EXTRA and eft>0) or (t.location~=LOCATION_EXTRA and mft>0) then
local exg=Duel.GetMatchingGroup(cm.PConditionFilterNanahira,tp,t.location,0,nil,e,tp,lscale,rscale,t.filter,tc)
g:Merge(exg)
end
end
end
if mft<=0 then g=g:Filter(Card.IsLocation,nil,LOCATION_EXTRA) end
if eft<=0 then g:Remove(Card.IsLocation,nil,LOCATION_EXTRA) end
return g:GetCount()>0
......@@ -1171,7 +1121,6 @@ function cm.PendOperationNanahira()
else
tg=Duel.GetMatchingGroup(aux.PConditionFilter,tp,LOCATION_HAND+LOCATION_EXTRA,0,nil,e,tp,lscale,rscale)
end
if Card.IsHasEffect then
local ext1={c:IsHasEffect(37564541)}
local ext2={rpz:IsHasEffect(37564541)}
for i,te in pairs(ext1) do
......@@ -1196,20 +1145,6 @@ function cm.PendOperationNanahira()
end
end
end
else
local cg=Group.FromCards(c,rpz):Filter(cm.PConditionFilterExtra,nil)
for tc in aux.Next(cg) do
local t=tc.pendulum_info
if (t.location==LOCATION_EXTRA and eft>0) or (t.location~=LOCATION_EXTRA and mft>0) then
local exg=Duel.GetMatchingGroup(cm.PConditionFilterNanahira,tp,t.location,0,nil,e,tp,lscale,rscale,t.filter,tc)
tg:Merge(exg)
local mct=t.max_count
if mct and mct>0 and mct<ft then
maxlist[t.location]=mct
end
end
end
end
if mft<=0 then tg=tg:Filter(Card.IsLocation,nil,LOCATION_EXTRA) end
if eft<=0 then tg:Remove(Card.IsLocation,nil,LOCATION_EXTRA) end
local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and math.min(c29724053[tp],eft) or eft
......@@ -1228,65 +1163,6 @@ end
function cm.NanahiraPCardFilter(c)
return c.Senya_desc_with_nanahira
end
function cm.NanahiraLink(c,f,vf,gf,min,max)
cm.Nanahira(c)
c:EnableReviveLimit()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_EXTRA)
if max==nil then max=99 end
e1:SetCondition(cm.LinkConditionNanahira(f,vf,gf,min,max))
e1:SetOperation(cm.LinkOperationNanahira(f,vf,gf,min,max))
e1:SetValue(SUMMON_TYPE_LINK)
c:RegisterEffect(e1)
end
function cm.GetLinkCountNanahira(c,vf)
if c:IsType(TYPE_LINK) and c:GetLink()>1 then
return 1+0x10000*c:GetLink()
elseif vf then
local v=vf(c)
return v and 1+0x10000*v or 1
else return 1 end
end
function cm.LCheckRecursiveNanahira(c,tp,sg,mg,lc,ct,minc,maxc,vf,gf)
sg:AddCard(c)
ct=ct+1
local res=cm.LCheckGoalNanahira(tp,sg,lc,minc,ct,vf,gf)
or (ct<maxc and mg:IsExists(cm.LCheckRecursiveNanahira,1,sg,tp,sg,mg,lc,ct,minc,maxc,vf,gf))
sg:RemoveCard(c)
ct=ct-1
return res
end
function cm.LCheckGoalNanahira(tp,sg,lc,minc,ct,vf,gf)
return ct>=minc and sg:CheckWithSumEqual(cm.GetLinkCountNanahira,lc:GetLink(),ct,ct,vf) and Duel.GetLocationCountFromEx(tp,tp,sg,lc)>0 and (not gf or gf(sg,lc))
end
function cm.LinkConditionNanahira(f,vf,gf,minc,maxc)
return function(e,c)
if c==nil then return true end
if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end
local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(aux.LConditionFilter,tp,LOCATION_MZONE,0,nil,f,c)
local sg=Group.CreateGroup()
return mg:IsExists(cm.LCheckRecursiveNanahira,1,nil,tp,sg,mg,c,0,minc,maxc,vf,gf)
end
end
function cm.LinkOperationNanahira(f,vf,gf,minc,maxc)
return function(e,tp,eg,ep,ev,re,r,rp,c)
local mg=Duel.GetMatchingGroup(aux.LConditionFilter,tp,LOCATION_MZONE,0,nil,f,c)
local sg=Group.CreateGroup()
for i=0,maxc-1 do
local cg=mg:Filter(cm.LCheckRecursiveNanahira,sg,tp,sg,mg,c,i,minc,maxc,vf,gf)
if cg:GetCount()==0
or (cm.LCheckGoalNanahira(tp,sg,c,minc,i,vf,gf) and not Duel.SelectYesNo(tp,210)) then break end
local g=cg:Select(tp,1,1,nil)
sg:Merge(g)
end
c:SetMaterial(sg)
Duel.SendtoGrave(sg,REASON_MATERIAL+REASON_LINK)
end
end
function cm.NanahiraPCardCheck(e)
return Duel.IsExistingMatchingCard(cm.NanahiraPCardFilter,e:GetHandlerPlayer(),LOCATION_PZONE,0,1,e:GetHandler())
end
......@@ -1914,16 +1790,12 @@ function cm.enable_kaguya_check_3L()
Duel.RegisterEffect(ge3,0)
end
function cm.CheckKoishiCount(c)
if Card.IsHasEffect then
local t={c:IsHasEffect(37564826)}
local res=1
for i,te in pairs(t) do
res=math.max(res,te:GetValue())
end
return res
else
return c.custom_ctlm_3L or 1
end
end
--filter for effect gaining
--chkc=card to check if it can gain c's effect, nil for not checking
......@@ -2029,7 +1901,6 @@ function cm.RemoveEffect_3L(tp,tc,ct,maxct,chk,...)
local effect_list=cm.GetGainedList_3L(tc)
local avaliable_list={}
local omit_list={...}
if Card.IsHasEffect then
local oet={tc:IsHasEffect(37564827)}
for i,oe in pairs(oet) do
local of=cm.order_table[oe:GetValue()]
......@@ -2038,12 +1909,6 @@ function cm.RemoveEffect_3L(tp,tc,ct,maxct,chk,...)
table.insert(omit_list,oc:GetOriginalCode())
end
end
elseif tc:IsHasEffect(37564827) and tc.omit_group_3L then
local og=tc:omit_group_3L()
for oc in aux.Next(og) do
table.insert(omit_list,oc:GetOriginalCode())
end
end
for i,code in pairs(effect_list) do
local res=true
for j,ocode in pairs(omit_list) do
......@@ -2646,3 +2511,4 @@ function cm.AddAttackSE(c,desc)
end
cm.AttackSEList[c]=desc
end
--triggered a build on Dec 9
This diff is collapsed.
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