Commit cc38c59e authored by POLYMER's avatar POLYMER

fix

parent f9accda4
...@@ -19,6 +19,7 @@ function cm.initial_effect(c) ...@@ -19,6 +19,7 @@ function cm.initial_effect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_TRIGGER_O+EFFECT_TYPE_SINGLE)
e2:SetCode(EVENT_REMOVE) e2:SetCode(EVENT_REMOVE)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCountLimit(1,m+1) e2:SetCountLimit(1,m+1)
e2:SetTarget(cm.sptg) e2:SetTarget(cm.sptg)
e2:SetOperation(cm.spop) e2:SetOperation(cm.spop)
......
...@@ -43,26 +43,25 @@ function cm.initial_effect(c) ...@@ -43,26 +43,25 @@ function cm.initial_effect(c)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function cm.srcost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.srcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.fit1,tp,LOCATION_HAND,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(cm.fit1,tp,LOCATION_HAND,0,1,nil,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONFIRM)
local g=Duel.SelectMatchingCard(tp,cm.fit1,tp,LOCATION_HAND,0,1,1,nil) local g=Duel.SelectMatchingCard(tp,cm.fit1,tp,LOCATION_HAND,0,1,1,nil,tp)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
Duel.ShuffleHand(tp) Duel.ShuffleHand(tp)
e:SetLabel(g:GetFirst():GetAttribute()) e:SetLabel(g:GetFirst():GetAttribute())
end end
function cm.fit1(c,tp) function cm.fit1(c,tp)
return not c:IsPublic() and Duel.IsExistingMatchingCard(cm.fit2,tp,LOCATION_DECK,0,1,nil,c:GetAttribute()) return not c:IsPublic() and c:IsType(TYPE_MONSTER) and Duel.IsExistingMatchingCard(cm.fit2,tp,LOCATION_DECK,0,1,nil,c:GetAttribute())
end end
function cm.fit2(c,attr) function cm.fit2(c,attr)
return c:IsAttribute() and c:IsAbleToHand() and c:IsSetCard(0xa450) return c:IsType(TYPE_MONSTER) and c:IsAttribute(attr) and c:IsAbleToHand() and c:IsSetCard(0xa450)
end end
function cm.srfilter(c,att) function cm.srfilter(c,att)
return c:IsSetCard(0xa450) and c:IsAttribute(att) and c:IsAbleToHand() return c:IsSetCard(0xa450) and c:IsAttribute(att) and c:IsAbleToHand()
end end
function cm.srtg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.srtg(e,tp,eg,ep,ev,re,r,rp,chk)
local attr=e:GetLabel()
if chk==0 then if chk==0 then
return Duel.IsExistingMatchingCard(cm.fit2,tp,LOCATION_DECK,0,1,nil,attr) return true
end end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK) Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_DECK)
end end
...@@ -70,7 +69,7 @@ function cm.fit(c) ...@@ -70,7 +69,7 @@ function cm.fit(c)
return (c:IsAbleToGrave() or c:IsAbleToRemove()) return (c:IsAbleToGrave() or c:IsAbleToRemove())
end end
function cm.srop(e,tp,eg,ep,ev,re,r,rp) function cm.srop(e,tp,eg,ep,ev,re,r,rp)
local att=e:GetLabel() local attr=e:GetLabel()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sg=Duel.SelectMatchingCard(tp,cm.srfilter,tp,LOCATION_DECK,0,1,1,nil,attr) local sg=Duel.SelectMatchingCard(tp,cm.srfilter,tp,LOCATION_DECK,0,1,1,nil,attr)
if #sg>0 and Duel.SendtoHand(sg,nil,REASON_EFFECT)>0 then if #sg>0 and Duel.SendtoHand(sg,nil,REASON_EFFECT)>0 then
...@@ -79,7 +78,7 @@ function cm.srop(e,tp,eg,ep,ev,re,r,rp) ...@@ -79,7 +78,7 @@ function cm.srop(e,tp,eg,ep,ev,re,r,rp)
if #dg>0 then if #dg>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local tg=dg:Select(tp,1,1,nil) local tg=dg:Select(tp,1,1,nil)
local tc=g:GetFirst() local tc=tg:GetFirst()
if tc and tc:IsAbleToGrave() and (not tc:IsAbleToRemove() or Duel.SelectOption(tp,1191,1192)==0) then if tc and tc:IsAbleToGrave() and (not tc:IsAbleToRemove() or Duel.SelectOption(tp,1191,1192)==0) then
Duel.SendtoGrave(tc,REASON_EFFECT) Duel.SendtoGrave(tc,REASON_EFFECT)
else else
......
...@@ -26,6 +26,7 @@ function cm.initial_effect(c) ...@@ -26,6 +26,7 @@ function cm.initial_effect(c)
e3:SetCode(EVENT_CHAINING) e3:SetCode(EVENT_CHAINING)
e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1,m)
e3:SetCondition(cm.negcon1) e3:SetCondition(cm.negcon1)
e3:SetCost(cm.negcost) e3:SetCost(cm.negcost)
e3:SetTarget(cm.negtg1) e3:SetTarget(cm.negtg1)
...@@ -38,6 +39,7 @@ function cm.initial_effect(c) ...@@ -38,6 +39,7 @@ function cm.initial_effect(c)
e4:SetCode(EVENT_CHAINING) e4:SetCode(EVENT_CHAINING)
e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e4:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1,m)
e4:SetCondition(cm.negcon2) e4:SetCondition(cm.negcon2)
e4:SetCost(cm.negcost) e4:SetCost(cm.negcost)
e4:SetTarget(cm.negtg2) e4:SetTarget(cm.negtg2)
...@@ -50,6 +52,7 @@ function cm.initial_effect(c) ...@@ -50,6 +52,7 @@ function cm.initial_effect(c)
e5:SetCode(EVENT_CHAINING) e5:SetCode(EVENT_CHAINING)
e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL) e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e5:SetRange(LOCATION_MZONE) e5:SetRange(LOCATION_MZONE)
e5:SetCountLimit(1,m)
e5:SetCondition(cm.negcon3) e5:SetCondition(cm.negcon3)
e5:SetCost(cm.negcost) e5:SetCost(cm.negcost)
e5:SetTarget(cm.negtg3) e5:SetTarget(cm.negtg3)
...@@ -61,7 +64,7 @@ function cm.initial_effect(c) ...@@ -61,7 +64,7 @@ function cm.initial_effect(c)
e6:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE) e6:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE)
e6:SetType(EFFECT_TYPE_IGNITION) e6:SetType(EFFECT_TYPE_IGNITION)
e6:SetRange(LOCATION_GRAVE) e6:SetRange(LOCATION_GRAVE)
e6:SetCountLimit(1,m) e6:SetCountLimit(1,m+1)
e6:SetCost(cm.adcost) e6:SetCost(cm.adcost)
e6:SetTarget(cm.adtg) e6:SetTarget(cm.adtg)
e6:SetOperation(cm.adop) e6:SetOperation(cm.adop)
......
...@@ -25,6 +25,7 @@ function cm.initial_effect(c) ...@@ -25,6 +25,7 @@ function cm.initial_effect(c)
e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetType(EFFECT_TYPE_QUICK_O)
e3:SetCode(EVENT_FREE_CHAIN) e3:SetCode(EVENT_FREE_CHAIN)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCountLimit(1,m)
e3:SetCondition(cm.syncon1) e3:SetCondition(cm.syncon1)
e3:SetTarget(cm.syntg) e3:SetTarget(cm.syntg)
e3:SetOperation(cm.synop) e3:SetOperation(cm.synop)
...@@ -36,6 +37,7 @@ function cm.initial_effect(c) ...@@ -36,6 +37,7 @@ function cm.initial_effect(c)
e4:SetCode(EVENT_FREE_CHAIN) e4:SetCode(EVENT_FREE_CHAIN)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetCondition(cm.descon) e4:SetCondition(cm.descon)
e4:SetCountLimit(1,m)
e4:SetTarget(cm.destg) e4:SetTarget(cm.destg)
e4:SetOperation(cm.desop) e4:SetOperation(cm.desop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
...@@ -53,7 +55,7 @@ function cm.initial_effect(c) ...@@ -53,7 +55,7 @@ function cm.initial_effect(c)
e6:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e6:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH)
e6:SetType(EFFECT_TYPE_IGNITION) e6:SetType(EFFECT_TYPE_IGNITION)
e6:SetRange(LOCATION_GRAVE) e6:SetRange(LOCATION_GRAVE)
e6:SetCountLimit(1,m) e6:SetCountLimit(1,m+1)
e6:SetCost(cm.thcost) e6:SetCost(cm.thcost)
e6:SetTarget(cm.thtg) e6:SetTarget(cm.thtg)
e6:SetOperation(cm.thop) e6:SetOperation(cm.thop)
......
...@@ -30,8 +30,7 @@ function cm.initial_effect(c) ...@@ -30,8 +30,7 @@ function cm.initial_effect(c)
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,0)) e3:SetDescription(aux.Stringid(m,0))
e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH) e3:SetCategory(CATEGORY_TOHAND+CATEGORY_SEARCH)
e3:SetType(EFFECT_TYPE_QUICK_O) e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetCode(EVENT_FREE_CHAIN)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetCondition(cm.thcon1) e3:SetCondition(cm.thcon1)
e3:SetTarget(cm.thtg1) e3:SetTarget(cm.thtg1)
...@@ -43,6 +42,7 @@ function cm.initial_effect(c) ...@@ -43,6 +42,7 @@ function cm.initial_effect(c)
e4:SetType(EFFECT_TYPE_QUICK_O) e4:SetType(EFFECT_TYPE_QUICK_O)
e4:SetCode(EVENT_FREE_CHAIN) e4:SetCode(EVENT_FREE_CHAIN)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1,m)
e4:SetCondition(cm.thcon2) e4:SetCondition(cm.thcon2)
e4:SetTarget(cm.thtg2) e4:SetTarget(cm.thtg2)
e4:SetOperation(cm.thop2) e4:SetOperation(cm.thop2)
...@@ -53,6 +53,7 @@ function cm.initial_effect(c) ...@@ -53,6 +53,7 @@ function cm.initial_effect(c)
e5:SetType(EFFECT_TYPE_QUICK_O) e5:SetType(EFFECT_TYPE_QUICK_O)
e5:SetCode(EVENT_FREE_CHAIN) e5:SetCode(EVENT_FREE_CHAIN)
e5:SetRange(LOCATION_MZONE) e5:SetRange(LOCATION_MZONE)
e5:SetCountLimit(1,m)
e5:SetCondition(cm.rmcon) e5:SetCondition(cm.rmcon)
e5:SetTarget(cm.rmtg) e5:SetTarget(cm.rmtg)
e5:SetOperation(cm.rmop) e5:SetOperation(cm.rmop)
...@@ -63,7 +64,7 @@ function cm.initial_effect(c) ...@@ -63,7 +64,7 @@ function cm.initial_effect(c)
e6:SetCategory(CATEGORY_TOGRAVE) e6:SetCategory(CATEGORY_TOGRAVE)
e6:SetType(EFFECT_TYPE_IGNITION) e6:SetType(EFFECT_TYPE_IGNITION)
e6:SetRange(LOCATION_GRAVE) e6:SetRange(LOCATION_GRAVE)
e6:SetCountLimit(1,m) e6:SetCountLimit(1,m+1)
e6:SetCost(cm.gvcost) e6:SetCost(cm.gvcost)
e6:SetTarget(cm.gvtg) e6:SetTarget(cm.gvtg)
e6:SetOperation(cm.gvop) e6:SetOperation(cm.gvop)
...@@ -147,7 +148,7 @@ function cm.thcon2(e,tp,eg,ep,ev,re,r,rp) ...@@ -147,7 +148,7 @@ function cm.thcon2(e,tp,eg,ep,ev,re,r,rp)
return c:IsAttackAbove(2000) and Duel.GetTurnPlayer()==1-tp return c:IsAttackAbove(2000) and Duel.GetTurnPlayer()==1-tp
end end
function cm.thfilter2(c) function cm.thfilter2(c)
return (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) and c:IsAbleToHand() return c:IsAbleToHand()
end end
function cm.thtg2(e,tp,eg,ep,ev,re,r,rp,chk) function cm.thtg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter2,tp,LOCATION_GRAVE+LOCATION_REMOVED,0,1,nil) end
...@@ -163,33 +164,27 @@ function cm.thop2(e,tp,eg,ep,ev,re,r,rp) ...@@ -163,33 +164,27 @@ function cm.thop2(e,tp,eg,ep,ev,re,r,rp)
end end
function cm.rmcon(e,tp,eg,ep,ev,re,r,rp) function cm.rmcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:IsAttackAbove(3000) and (Duel.GetTurnPlayer()==tp or Duel.GetTurnPlayer()==1-tp) return c:IsAttackAbove(3000)
and not c:IsHasEffect(EFFECT_CANNOT_USE_AS_COST) and e:GetHandler():GetFlagEffect(m)==0
end end
function cm.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.rmtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA)>0 end if chk==0 then return Duel.GetFieldGroupCount(tp,0,LOCATION_EXTRA)>0 end
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,LOCATION_EXTRA) Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,LOCATION_EXTRA)
end end
function cm.rmop(e,tp,eg,ep,ev,re,r,rp) function cm.rmop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA) local g=Duel.GetFieldGroup(tp,0,LOCATION_EXTRA)
if g:GetCount()==0 then return end if g:GetCount()==0 then return end
Duel.ConfirmCards(tp,g) Duel.ConfirmCards(tp,g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local sg=g:FilterSelect(tp,Card.IsAbleToRemove,1,1,nil) local sg=g:FilterSelect(tp,Card.IsAbleToRemove,1,1,nil)
Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT) Duel.Remove(sg,POS_FACEDOWN,REASON_EFFECT)
Duel.ShuffleExtra(1-tp)
local e1=Effect.CreateEffect(e:GetHandler()) if c:IsRelateToEffect(e) then
e1:SetType(EFFECT_TYPE_FIELD) c:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,2)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) end
e1:SetCode(EFFECT_CANNOT_USE_AS_COST)
e1:SetTargetRange(1,0)
e1:SetTarget(cm.costlimit)
e1:SetReset(RESET_PHASE+PHASE_END,2)
Duel.RegisterEffect(e1,tp)
end
function cm.costlimit(e,re,tp)
return re:GetHandler()==e:GetHandler() and re:IsHasType(EFFECT_TYPE_ACTIVATE)
end end
function cm.gvcost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.gvcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end
Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST)
......
...@@ -115,8 +115,11 @@ function cm.descon(e, tp, eg, ep, ev, re, r, rp) ...@@ -115,8 +115,11 @@ function cm.descon(e, tp, eg, ep, ev, re, r, rp)
end end
function cm.sptg(e, tp, eg, ep, ev, re, r, rp, chk) function cm.sptg(e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 end
local c = e:GetHandler() local c = e:GetHandler()
if chk == 0 then
return Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 and
c:IsCanBeSpecialSummoned(e, 0, tp, false, false)
end
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
end end
......
...@@ -3,241 +3,240 @@ local cm, m, ofs = GetID() ...@@ -3,241 +3,240 @@ local cm, m, ofs = GetID()
local yr = 13020010 local yr = 13020010
xpcall(function() dofile("expansions/script/c16670000.lua") end, function() dofile("script/c16670000.lua") end) --引用库 xpcall(function() dofile("expansions/script/c16670000.lua") end, function() dofile("script/c16670000.lua") end) --引用库
function cm.initial_effect(c) function cm.initial_effect(c)
aux.AddCodeList(c, yr) aux.AddCodeList(c, yr)
aux.AddEquipSpellEffect(c, true, true, Card.IsFaceup, nil) aux.AddEquipSpellEffect(c, true, true, Card.IsFaceup, nil)
local e3 = Effect.CreateEffect(c) local e3 = Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_ATTACK_ALL) e3:SetCode(EFFECT_ATTACK_ALL)
e3:SetValue(1) e3:SetValue(1)
local e33 = Effect.CreateEffect(c) local e33 = Effect.CreateEffect(c)
e33:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_GRANT) e33:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_GRANT)
e33:SetRange(LOCATION_SZONE) e33:SetRange(LOCATION_SZONE)
e33:SetTargetRange(LOCATION_MZONE, 0) e33:SetTargetRange(LOCATION_MZONE, 0)
e33:SetTarget(cm.eftg) e33:SetTarget(cm.eftg)
e33:SetLabelObject(e3) e33:SetLabelObject(e3)
c:RegisterEffect(e33) c:RegisterEffect(e33)
-- local e4 = Effect.CreateEffect(c) -- local e4 = Effect.CreateEffect(c)
-- e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS) -- e4:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
-- e4:SetCode(EVENT_LEAVE_FIELD_P) -- e4:SetCode(EVENT_LEAVE_FIELD_P)
-- e4:SetRange(LOCATION_SZONE) -- e4:SetRange(LOCATION_SZONE)
-- e4:SetOperation(cm.damp) -- e4:SetOperation(cm.damp)
-- c:RegisterEffect(e4) -- c:RegisterEffect(e4)
local e5 = Effect.CreateEffect(c) local e5 = Effect.CreateEffect(c)
e5:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS) e5:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e5:SetRange(LOCATION_SZONE) e5:SetRange(LOCATION_SZONE)
e5:SetCode(EFFECT_SEND_REPLACE) e5:SetCode(EFFECT_SEND_REPLACE)
e5:SetTarget(cm.reptg) e5:SetTarget(cm.reptg)
e5:SetOperation(cm.repop) e5:SetOperation(cm.repop)
e5:SetValue(cm.repval) e5:SetValue(cm.repval)
c:RegisterEffect(e5) c:RegisterEffect(e5)
local e1 = xg.epp2(c, m, 4, EVENT_LEAVE_FIELD, EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DELAY, QY_sk, nil, nil, local e1 = xg.epp2(c, m, 4, EVENT_LEAVE_FIELD, EFFECT_FLAG_DAMAGE_STEP + EFFECT_FLAG_DELAY, QY_sk, nil, nil,
cm.target, cm.target,
cm.operation, true) cm.operation, true)
e1:SetCountLimit(1, m) e1:SetCountLimit(1, m)
local e2 = e1:Clone() local e2 = e1:Clone()
e2:SetRange(QY_md) e2:SetRange(QY_md)
c:RegisterEffect(e2)
c:RegisterEffect(e2)
if not cm.global_check then
if not cm.global_check then cm.global_check = true
cm.global_check = true local e4 = Effect.CreateEffect(c)
local e4 = Effect.CreateEffect(c) e4:SetType(EFFECT_TYPE_CONTINUOUS + EFFECT_TYPE_FIELD)
e4:SetType(EFFECT_TYPE_CONTINUOUS + EFFECT_TYPE_FIELD) e4:SetCode(EVENT_ADJUST)
e4:SetCode(EVENT_ADJUST) e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_IGNORE_IMMUNE)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_IGNORE_IMMUNE) e4:SetOperation(cm.adop)
e4:SetOperation(cm.adop) Duel.RegisterEffect(e4, tp)
Duel.RegisterEffect(e4, tp) end
end
end end
function cm.eftg(e, c) function cm.eftg(e, c)
return c == e:GetHandler():GetEquipTarget() return c == e:GetHandler():GetEquipTarget()
end end
function cm.filter(c, tc, bc, tp) function cm.filter(c, tc, bc, tp)
-- Duel.ConfirmCards(tp, c) -- Duel.ConfirmCards(tp, c)
-- Debug.Message(c:IsReason(REASON_BATTLE) and c:IsType(TYPE_MONSTER) and c:GetReasonCard() == tc) -- Debug.Message(c:IsReason(REASON_BATTLE) and c:IsType(TYPE_MONSTER) and c:GetReasonCard() == tc)
-- Debug.Message(c:GetReasonCard() == tc) -- Debug.Message(c:GetReasonCard() == tc)
--return c:IsReason(REASON_BATTLE) and c:IsType(TYPE_MONSTER) and c:GetReasonCard() == tc --and bc and bc == c -- --return c:IsReason(REASON_BATTLE) and c:IsType(TYPE_MONSTER) and c:GetReasonCard() == tc --and bc and bc == c --
return c:IsReason(REASON_BATTLE) and c:IsType(TYPE_MONSTER) and c:GetReasonCard() == tc return c:IsReason(REASON_BATTLE) and c:IsType(TYPE_MONSTER) and c:GetReasonCard() == tc
end end
function cm.eqlimit(e, c) function cm.eqlimit(e, c)
return e:GetOwner() == c return e:GetOwner() == c
end end
function cm.damp(e, tp, eg, ep, ev, re, r, rp) function cm.damp(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler():GetEquipTarget() local c = e:GetHandler():GetEquipTarget()
local bc = c:GetBattleTarget() local bc = c:GetBattleTarget()
local g = eg:Filter(cm.filter, nil, c, bc, tp) local g = eg:Filter(cm.filter, nil, c, bc, tp)
-- Debug.Message(#g) -- Debug.Message(#g)
if #g == 0 then return end if #g == 0 then return end
for tc in aux.Next(g) do for tc in aux.Next(g) do
if Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 then if Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 then
-- Duel.MoveToField(tc, tp, tp, LOCATION_SZONE, POS_FACEUP, true) -- Duel.MoveToField(tc, tp, tp, LOCATION_SZONE, POS_FACEUP, true)
Duel.Equip(tp, tc, c, false) Duel.Equip(tp, tc, c, false)
tc:CancelToGrave() tc:CancelToGrave()
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_EQUIP_LIMIT) e1:SetCode(EFFECT_EQUIP_LIMIT)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetReset(RESET_EVENT + RESETS_STANDARD) e1:SetReset(RESET_EVENT + RESETS_STANDARD)
e1:SetValue(cm.eqlimit) e1:SetValue(cm.eqlimit)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP) e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetReset(RESET_EVENT + RESETS_STANDARD) e2:SetReset(RESET_EVENT + RESETS_STANDARD)
e2:SetValue(300) e2:SetValue(300)
tc:RegisterEffect(e2) tc:RegisterEffect(e2)
end end
end end
end end
function cm.reptg(e, tp, eg, ep, ev, re, r, rp, chk) function cm.reptg(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler():GetEquipTarget() local c = e:GetHandler():GetEquipTarget()
if not c then return end if not c then return end
local bc = c:GetBattleTarget() local bc = c:GetBattleTarget()
-- Duel.ConfirmCards(tp, bc) -- Duel.ConfirmCards(tp, bc)
-- Debug.Message(#eg) -- Debug.Message(#eg)
if chk == 0 then return eg:IsExists(cm.filter, 1, nil, c, bc) end if chk == 0 then return eg:IsExists(cm.filter, 1, nil, c, bc) end
-- e:strLabelObject(eg) -- e:strLabelObject(eg)
return true return true
end end
function cm.repop(e, tp, eg, ep, ev, re, r, rp, chk) function cm.repop(e, tp, eg, ep, ev, re, r, rp, chk)
local c = e:GetHandler():GetEquipTarget() local c = e:GetHandler():GetEquipTarget()
local tp = c:GetControler() local tp = c:GetControler()
local tc = c:GetBattleTarget() local tc = c:GetBattleTarget()
if not tc then return end if not tc then return end
if Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 then if Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 then
-- Duel.MoveToField(tc, tp, tp, LOCATION_SZONE, POS_FACEUP, true) -- Duel.MoveToField(tc, tp, tp, LOCATION_SZONE, POS_FACEUP, true)
Duel.Equip(tp, tc, c, false) Duel.Equip(tp, tc, c, false)
tc:CancelToGrave() tc:CancelToGrave()
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_EQUIP_LIMIT) e1:SetCode(EFFECT_EQUIP_LIMIT)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetReset(RESET_EVENT + RESETS_STANDARD) e1:SetReset(RESET_EVENT + RESETS_STANDARD)
e1:SetValue(cm.eqlimit) e1:SetValue(cm.eqlimit)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP) e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetCode(EFFECT_UPDATE_ATTACK) e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetReset(RESET_EVENT + RESETS_STANDARD) e2:SetReset(RESET_EVENT + RESETS_STANDARD)
e2:SetValue(300) e2:SetValue(300)
tc:RegisterEffect(e2) tc:RegisterEffect(e2)
end end
end end
function cm.repval(e, c) function cm.repval(e, c)
local tc = c:GetBattleTarget() local tc = c:GetBattleTarget()
return cm.filter(c, tc) --cm.repfilter(c, e:GetHandlerPlayer()) return cm.filter(c, tc) --cm.repfilter(c, e:GetHandlerPlayer())
end end
function cm.costfilter(c) function cm.costfilter(c)
return c:IsDiscardable() return c:IsDiscardable()
end end
function cm.Cost(e, tp, eg, ep, ev, re, r, rp, chk, chkc) function cm.Cost(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
local c = e:GetHandler() local c = e:GetHandler()
if chk == 0 then return Duel.IsExistingMatchingCard(cm.costfilter, tp, LOCATION_HAND, 0, 1, e:GetHandler()) end if chk == 0 then return Duel.IsExistingMatchingCard(cm.costfilter, tp, LOCATION_HAND, 0, 1, e:GetHandler()) end
Duel.DiscardHand(tp, cm.costfilter, 1, 1, REASON_COST + REASON_DISCARD) Duel.DiscardHand(tp, cm.costfilter, 1, 1, REASON_COST + REASON_DISCARD)
end end
function cm.repfilter(c, tp) function cm.repfilter(c, tp)
return c:IsType(TYPE_UNION) or c:IsType(TYPE_EQUIP) return c:IsType(TYPE_UNION) or c:IsType(TYPE_EQUIP)
end end
function cm.repfilter2(c, tp, tc) function cm.repfilter2(c, tp, tc)
return c:IsType(TYPE_UNION) or c:IsType(TYPE_EQUIP) and tc:CheckEquipTarget(c) return c:IsType(TYPE_UNION) or c:IsType(TYPE_EQUIP) and tc:CheckEquipTarget(c)
end end
function cm.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc) function cm.target(e, tp, eg, ep, ev, re, r, rp, chk, chkc)
local c = e:GetHandler() local c = e:GetHandler()
local kx, zzx, sxx, zzjc, sxjc, zzl = it.sxbl() local kx, zzx, sxx, zzjc, sxjc, zzl = it.sxbl()
local g1 = eg:Filter(cm.repfilter, nil, tp) local g1 = eg:Filter(cm.repfilter, nil, tp)
if chk == 0 then return zzx > 0 and #g1 > 0 and not eg:IsContains(c) end if chk == 0 then return zzx > 0 and #g1 > 0 and not eg:IsContains(c) end
local zz, sx, lv = it.sxblx(tp, kx, zzx, sxx, zzl) local zz, sx, lv = it.sxblx(tp, kx, zzx, sxx, zzl)
e:SetLabel(zz, sx, lv) e:SetLabel(zz, sx, lv)
Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0) Duel.SetOperationInfo(0, CATEGORY_SPECIAL_SUMMON, c, 1, 0, 0)
end end
function cm.operation(e, tp, eg, ep, ev, re, r, rp) function cm.operation(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
if not c:IsRelateToEffect(e) then return end if not c:IsRelateToEffect(e) then return end
local zz, sx, lv = e:GetLabel() local zz, sx, lv = e:GetLabel()
if not Duel.IsPlayerCanSpecialSummonMonster(tp, c:GetCode(), 0, TYPE_NORMAL + TYPE_MONSTER + TYPE_TUNER, 0, 0, lv, zz, sx) then return end if not Duel.IsPlayerCanSpecialSummonMonster(tp, c:GetCode(), 0, TYPE_NORMAL + TYPE_MONSTER + TYPE_TUNER, 0, 0, lv, zz, sx) then return end
it.AddMonsterate(c, TYPE_NORMAL + TYPE_MONSTER, sx, zz, lv, 0, 0) it.AddMonsterate(c, TYPE_NORMAL + TYPE_MONSTER, sx, zz, lv, 0, 0)
Duel.SpecialSummonStep(c, 0, tp, tp, true, false, POS_FACEUP_DEFENSE) Duel.SpecialSummonStep(c, 0, tp, tp, true, false, POS_FACEUP_DEFENSE)
Duel.SpecialSummonComplete() Duel.SpecialSummonComplete()
local g1 = eg:Filter(cm.repfilter2, nil, tp, c) local g1 = eg:Filter(cm.repfilter2, nil, tp, c)
if #g1 > 0 then if #g1 > 0 then
for tc in aux.Next(g1) do for tc in aux.Next(g1) do
if Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 then if Duel.GetLocationCount(tp, LOCATION_SZONE) > 0 then
if Duel.Equip(tp, tc, c) and aux.IsCodeListed(tc, yr) and Duel.SelectYesNo(tp, aux.Stringid(m, 0)) then if Duel.Equip(tp, tc, c) and aux.IsCodeListed(tc, yr) and Duel.SelectYesNo(tp, aux.Stringid(m, 0)) then
local te = cm[tc] local te = cm[tc]
if te then if te then
for _, ie in ipairs(te) do for _, ie in ipairs(te) do
Duel.BreakEffect() Duel.BreakEffect()
local tg = ie:GetTarget() local tg = ie:GetTarget()
if tg and tg(ie, tp, eg, ep, ev, re, r, rp, 0) then if tg and tg(ie, tp, eg, ep, ev, re, r, rp, 0) then
local op = ie:GetOperation() local op = ie:GetOperation()
if op then if op then
tg(ie, tp, eg, ep, ev, re, r, rp, 1) tg(ie, tp, eg, ep, ev, re, r, rp, 1)
op(ie, tp, eg, ep, ev, re, r, rp) op(ie, tp, eg, ep, ev, re, r, rp)
end end
end end
end end
end end
end end
-- local e1 = Effect.CreateEffect(c) -- local e1 = Effect.CreateEffect(c)
-- e1:SetType(EFFECT_TYPE_SINGLE) -- e1:SetType(EFFECT_TYPE_SINGLE)
-- e1:SetProperty(EFFECT_FLAG_OWNER_RELATE) -- e1:SetProperty(EFFECT_FLAG_OWNER_RELATE)
-- e1:SetCode(EFFECT_EQUIP_LIMIT) -- e1:SetCode(EFFECT_EQUIP_LIMIT)
-- e1:SetReset(RESET_EVENT + RESETS_STANDARD) -- e1:SetReset(RESET_EVENT + RESETS_STANDARD)
-- e1:SetValue(cm.eqlimit) -- e1:SetValue(cm.eqlimit)
-- tc:RegisterEffect(e1) -- tc:RegisterEffect(e1)
end end
end end
end end
end end
function cm.adop(e, tp, eg, ep, ev, re, r, rp) function cm.adop(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
local ng = Duel.GetMatchingGroup(cm.filsn, tp, LOCATION_HAND + LOCATION_ONFIELD + LOCATION_GRAVE + QY_kz, local ng = Duel.GetMatchingGroup(cm.filsn, tp, LOCATION_HAND + LOCATION_ONFIELD + LOCATION_GRAVE + QY_kz,
LOCATION_HAND + LOCATION_ONFIELD + LOCATION_GRAVE + QY_kz, c) LOCATION_HAND + LOCATION_ONFIELD + LOCATION_GRAVE + QY_kz, c)
local nc = ng:GetFirst() local nc = ng:GetFirst()
while nc do while nc do
if not cm.reg then if not cm.reg then
cm.reg = Card.RegisterEffect cm.reg = Card.RegisterEffect
Card.RegisterEffect = cm.reg2 Card.RegisterEffect = cm.reg2
end end
nc:RegisterFlagEffect(m, 0, 0, 1) nc:RegisterFlagEffect(m, 0, 0, 1)
nc:ReplaceEffect(nc:GetOriginalCodeRule(), 0) nc:ReplaceEffect(nc:GetOriginalCodeRule(), 0)
-- Card.RegisterEffect = cm.reg -- Card.RegisterEffect = cm.reg
nc = ng:GetNext() nc = ng:GetNext()
end end
end end
function cm.filsn(c) function cm.filsn(c)
return aux.IsCodeListed(c, yr) and c:IsType(TYPE_EQUIP) and c:GetFlagEffect(m) == 0 return aux.IsCodeListed(c, yr) and c:IsType(TYPE_EQUIP) and c:GetFlagEffect(m) == 0
and not c:IsOriginalCodeRule(m) and not c:IsOriginalCodeRule(m)
end end
function cm.reg2(c, ie, ob) function cm.reg2(c, ie, ob)
local b = ob or false local b = ob or false
local p = ie:GetCode() local p = ie:GetCode()
if not aux.IsCodeListed(c, yr) or p ~= EVENT_EQUIP then if not aux.IsCodeListed(c, yr) or p ~= EVENT_EQUIP then
return cm.reg(c, ie, b) return cm.reg(c, ie, b)
end end
if p == EVENT_EQUIP then if p == EVENT_EQUIP then
cm[c] = cm[c] or {} cm[c] = cm[c] or {}
cm[c][#cm[c] + 1] = ie cm[c][#cm[c] + 1] = ie
end end
return cm.reg(c, ie, b) return cm.reg(c, ie, b)
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