Commit 8a8fb3a6 authored by Nemo Ma's avatar Nemo Ma

fix

parent 153090a9
......@@ -36,39 +36,25 @@ end
function cm.mzfilter(c)
return c:IsAbleToDeckOrExtraAsCost() and c:GetLevel()>=1 and c:IsRace(RACE_PSYCHO) and (c:IsLocation(LOCATION_GRAVE) or c:IsFacedown())
end
function cm.fselect(g,lv,c)
local tp=c:GetControler()
return g:GetSum(Card.GetLevel)==lv and g:IsExists(Card.IsLocation,1,nil,LOCATION_GRAVE) and g:IsExists(Card.IsLocation,1,nil,LOCATION_REMOVED) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0
function cm.fselect(g)
return g:IsExists(Card.IsLocation,1,nil,LOCATION_GRAVE) and g:IsExists(Card.IsLocation,1,nil,LOCATION_REMOVED)
end
function cm.sprcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
local g=Duel.GetMatchingGroup(cm.mzfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
local lv=5
while lv<=g:GetSum(Card.GetLevel) do
local res=g:CheckSubGroup(cm.fselect,2,#g,lv,c)
if res then return true end
lv=lv+5
end
return false
return g:IsExists(Card.IsLocation,1,nil,LOCATION_GRAVE) and g:IsExists(Card.IsLocation,1,nil,LOCATION_REMOVED) and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0
end
function cm.sprtg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(cm.mzfilter,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,nil)
local tp=c:GetControler()
local list={}
local lv=5
while lv<=g:GetSum(Card.GetLevel) do
if g:CheckSubGroup(cm.fselect,2,#g,lv,c) then table.insert(list,lv) end
lv=lv+5
end
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,0))
local clv=Duel.AnnounceNumber(tp,table.unpack(list))
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local sg=g:SelectSubGroup(tp,cm.fselect,Duel.IsSummonCancelable(),2,#g,clv,c)
if sg then
local sg=g:SelectSubGroup(tp,cm.fselect,Duel.IsSummonCancelable(),4,#g)
if sg and sg:GetSum(Card.GetLevel)%5==0 then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
elseif sg and sg:GetSum(Card.GetLevel)%5~=0 then
assert(false,"选择的怪兽合计等级不是5的倍数")
else return false end
end
function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c)
......@@ -84,7 +70,8 @@ end
function cm.ertg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local tg=eg:Filter(cm.filter3,nil,tp)
if chk==0 then return #tg>0 and Duel.GetDecktopGroup(tp,1):IsAbleToRemove(tp,POS_FACEDOWN) end
local dg=Duel.GetDecktopGroup(tp,1)
if chk==0 then return #tg>0 and dg and #dg>0 and dg:GetFirst():IsAbleToRemove(tp,POS_FACEDOWN) end
Duel.SetTargetCard(tg)
Duel.SetOperationInfo(0,CATEGORY_TODECK,tg,#tg,0,0)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,tp,LOCATION_DECK)
......@@ -95,7 +82,7 @@ function cm.erop(e,tp,eg,ep,ev,re,r,rp)
if #tg>0 then
Duel.SendtoDeck(tg,nil,2,REASON_EFFECT)
local og=Duel.GetOperatedGroup()
local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_HAND+LOCATION_EXTRA)
local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK+LOCATION_EXTRA)
if ct>0 then
local rg=Duel.GetDecktopGroup(tp,ct)
Duel.DisableShuffleCheck()
......
......@@ -54,7 +54,8 @@ function c33200433.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,1,REASON_EFFECT)
local tc=Duel.GetOperatedGroup():GetFirst()
Duel.ConfirmCards(1-tp,tc)
if tc:IsType(TYPE_SPELL) then Duel.SendtoGrave(tc,REASON_EFFECT) end
if tc:IsType(TYPE_SPELL) then Duel.SendtoGrave(tc,REASON_EFFECT) end
Duel.ShuffleHand(tp)
end
end
......
--魔力联合 毒漆藤
function c33200436.initial_effect(c)
--spsummon proc
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,33200436+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(c33200436.spcon)
e1:SetOperation(c33200436.spop)
e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1)
--atk down
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(33200436,0))
e2:SetCategory(CATEGORY_SEARCH)
e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,33200437)
e2:SetTarget(c33200436.atktg)
e2:SetOperation(c33200436.atkop)
c:RegisterEffect(e2)
--immune spell
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_IMMUNE_EFFECT)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetRange(LOCATION_MZONE)
e3:SetValue(c33200436.efilter)
c:RegisterEffect(e3)
end
--e1
function c33200436.spfilter(c)
return c:IsType(TYPE_SPELL) and c:IsAbleToRemoveAsCost()
end
function c33200436.spcon(e,c)
if c==nil then return true end
local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and Duel.GetFieldGroupCount(tp,LOCATION_EXTRA,0)==0
and Duel.IsExistingMatchingCard(c33200436.spfilter,tp,0,LOCATION_GRAVE,2,nil)
end
function c33200436.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,c33200436.spfilter,tp,0,LOCATION_GRAVE,2,2,nil)
Duel.Remove(g,POS_FACEUP,REASON_COST)
end
--e2
function c33200436.efilter(e,te)
return te:IsActiveType(TYPE_SPELL)
end
--e3
function c33200436.atkfilter(c)
return c:IsFaceup() and not c:IsAttack(0)
end
function c33200436.atktg(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(Card.IsType,tp,0,LOCATION_GRAVE+LOCATION_REMOVED,nil,TYPE_SPELL)
if chk==0 then return Duel.IsExistingMatchingCard(c33200436.atkfilter,tp,0,LOCATION_MZONE,1,nil)
and g:GetCount()>0 end
end
function c33200436.atkop(e,tp,eg,ep,ev,re,r,rp)
local sg=Duel.GetMatchingGroup(c33200436.atkfilter,tp,0,LOCATION_MZONE,nil)
local g=Duel.GetMatchingGroup(Card.IsType,tp,0,LOCATION_GRAVE+LOCATION_REMOVED,nil,TYPE_SPELL)
if g:GetCount()==0 or sg:GetCount()==0 then return end
local atkval=g:GetCount()*-500
for tc in aux.Next(sg) do
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(atkval)
tc:RegisterEffect(e1)
if tc:IsAttack(0) then Duel.Destroy(tc,REASON_EFFECT) end
end
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