Commit c0f2ff9f authored by Nemo Ma's avatar Nemo Ma

f

parent f06f0798
......@@ -15,16 +15,18 @@ end
cm.SetCard_xxj_Mirror=true
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
e:SetLabel(c:GetSequence())
local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)
if chk==0 then return ct>0 and Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>=ct end
e:SetLabel(c:GetSequence())
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
Duel.SetChainLimit(cm.chainlm)
Duel.SetChainLimit(cm.chainlm(c))
end
end
function cm.chainlm(e,rp,tp)
local seq=e:GetLabel()
return tp==rp or aux.GetColumn(c,tp)==seq
function cm.chainlm(c)
return function(e,ep,tp)
return tp==ep or not e:GetHandler():GetColumnGroup():IsContains(c)
end
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_ONFIELD)
......
......@@ -18,12 +18,13 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
local sg=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,c)
Duel.SetOperationInfo(0,CATEGORY_REMOVE,sg,sg:GetCount(),0,0)
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
Duel.SetChainLimit(cm.chainlm)
Duel.SetChainLimit(cm.chainlm(c))
end
end
function cm.chainlm(e,rp,tp)
local seq=e:GetLabel()
return aux.GetColumn(c,tp)==seq
function cm.chainlm(c)
return function(e,ep,tp)
return tp==ep or not e:GetHandler():GetColumnGroup():IsContains(c)
end
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......@@ -42,7 +43,7 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoHand(tc,rtp,REASON_EFFECT)
end
end
tc=sg:GetNext()
tc=sg:GetNext()
end
end
end
......@@ -574,14 +574,14 @@ function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
if ret4[k]==1 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,p) then
v:SetValue(cm.chval(val,true,de))
end
end
if ret4[k]==5 then
if ret4[k]==2 then
local cost=v:GetCost()
if cost and not cost(v,de,p) then
local tg=v:GetTarget()
......
......@@ -492,14 +492,14 @@ function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
if ret4[k]==1 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,p) then
v:SetValue(cm.chval(val,true,de))
end
end
if ret4[k]==5 then
if ret4[k]==2 then
local cost=v:GetCost()
if cost and not cost(v,de,p) then
local tg=v:GetTarget()
......
......@@ -492,14 +492,14 @@ function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
if ret4[k]==1 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,p) then
v:SetValue(cm.chval(val,true,de))
end
end
if ret4[k]==5 then
if ret4[k]==2 then
local cost=v:GetCost()
if cost and not cost(v,de,p) then
local tg=v:GetTarget()
......
......@@ -492,14 +492,14 @@ function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
if ret4[k]==1 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,p) then
v:SetValue(cm.chval(val,true,de))
end
end
if ret4[k]==5 then
if ret4[k]==2 then
local cost=v:GetCost()
if cost and not cost(v,de,p) then
local tg=v:GetTarget()
......
......@@ -492,14 +492,14 @@ function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
if ret4[k]==1 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,de,p) then
v:SetValue(cm.chval(val,true,de))
end
end
if ret4[k]==5 then
if ret4[k]==2 then
local cost=v:GetCost()
if cost and not cost(v,de,p) then
local tg=v:GetTarget()
......
......@@ -702,14 +702,14 @@ function cm.adjustop(e,tp,eg,ep,ev,re,r,rp)
end
end
for k,v in pairs(ret3) do
if ret4[k]==4 then
if ret4[k]==1 then
local val=v:GetValue()
if aux.GetValueType(val)=="number" then val=aux.TRUE end
if val(v,te,p) then
v:SetValue(cm.chval(val,true,te))
end
end
if ret4[k]==5 then
if ret4[k]==2 then
local cost=v:GetCost()
if cost and not cost(v,te,p) then
local tg=v:GetTarget()
......
......@@ -27,6 +27,10 @@ function s.initial_effect(c)
ge0:SetCondition(s.wd)
ge0:SetValue(1)
Duel.RegisterEffect(ge0,tp)
local ge1=ge0:Clone()
ge1:SetTargetRange(0,1)
ge1:SetCondition(s.wd2)
Duel.RegisterEffect(ge1,tp)
if not s.global_check then
s.global_check=true
--set
......@@ -44,24 +48,27 @@ end
function s.wd(e,tp,eg,ep,ev,re,r,rp,chk)
return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_ONFIELD,0,1,nil) and Duel.GetFlagEffect(tp,id)==0
end
function s.wd2(e,tp,eg,ep,ev,re,r,rp,chk)
return Duel.IsExistingMatchingCard(s.cfilter,tp,LOCATION_ONFIELD,0,1,nil) and Duel.GetFlagEffect(tp,id+1)==0
end
function s.IsLpZone(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetLP(0)<=0 or Duel.GetLP(1)<=0
end
function s.checkop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLP(0)<=0 and Duel.GetFlagEffect(0,id)==0 then
local sg1=Duel.GetMatchingGroup(s.cfilter,0,LOCATION_ONFIELD,0,nil)
local sg2=Duel.GetMatchingGroup(s.cfilter,1,LOCATION_ONFIELD,0,nil)
if Duel.GetLP(0)<=0 and Duel.GetFlagEffect(0,id)==0 and Duel.SendtoGrave(sg1,REASON_EFFECT+REASON_REPLACE)>0 then
Duel.SetLP(0,0)
Duel.Recover(0,4000,REASON_EFFECT)
Duel.RegisterFlagEffect(0,id,nil,0,1)
local sg=Duel.GetMatchingGroup(s.cfilter,0,LOCATION_ONFIELD,0,nil)
Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REPLACE)
end
if Duel.GetLP(1)<=0 and Duel.GetFlagEffect(1,id)==0 then
if Duel.GetLP(1)<=0 and Duel.GetFlagEffect(1,id)==0 and Duel.SendtoGrave(sg2,REASON_EFFECT+REASON_REPLACE)>0 then
Duel.SetLP(1,0)
Duel.Recover(1,4000,REASON_EFFECT)
Duel.RegisterFlagEffect(1,id,nil,0,1)
local sg=Duel.GetMatchingGroup(s.cfilter,1,LOCATION_ONFIELD,0,nil)
Duel.SendtoGrave(sg,REASON_EFFECT+REASON_REPLACE)
end
Duel.RegisterFlagEffect(0,id+1,nil,0,1)
Duel.RegisterFlagEffect(1,id+1,nil,0,1)
end
function s.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()==nil
......
......@@ -14,7 +14,7 @@ function s.initial_effect(c)
c:RegisterEffect(e1)
--draw
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_HANDES+CATEGORY_DRAW)
e2:SetCategory(CATEGORY_TODECK)
e2:SetDescription(aux.Stringid(id,1))
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_GRAVE)
......
--苍炎之圣击 奈菲尼
function c75030013.initial_effect(c)
--SpecialSummon
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_END_PHASE)
e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,75030002)
e1:SetCondition(function(e)
return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 end)
e1:SetCost(c75030002.hspcost)
e1:SetTarget(c75030013.hsptg)
e1:SetOperation(c75030013.hspop)
c:RegisterEffect(e1)
--xx
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE)
e2:SetCountLimit(1,15030002+EFFECT_COUNT_CODE_DUEL)
e2:SetCondition(function(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFlagEffect(tp,75030002)>=6 end)
e2:SetTarget(c75030013.xxtg)
e2:SetOperation(c75030013.xxop)
c:RegisterEffect(e2)
if not c75030013.global_check then
c75030013.global_check=true
local ge1=Effect.CreateEffect(c)
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_ATTACK_ANNOUNCE)
ge1:SetOperation(c75030013.checkop)
Duel.RegisterEffect(ge1,0)
end
end
function c75030013.checkop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetAttacker()
if tc:IsSetCard(0x753) then
Duel.RegisterFlagEffect(tc:GetControler(),75030002,0,0,1)
end
end
function c75030013.hpbfil(c)
return c:IsType(TYPE_MONSTER) and c:IsRace(RACE_PYRO) and c:IsAttribute(ATTRIBUTE_LIGHT) and not c:IsCode(75030013) and not c:IsPublic()
end
function c75030013.hspcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c75030013.hpbfil,tp,LOCATION_HAND,0,1,nil) end
local g=Duel.SelectMatchingCard(tp,c75030013.hpbfil,tp,LOCATION_HAND,0,1,1,nil)
Duel.ConfirmCards(1-tp,g)
Duel.ShuffleHand(tp)
end
function c75030013.hsptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function c75030013.hthfil(c)
return c:IsAbleToHand() and c:IsSetCard(0x753) and c:IsType(TYPE_SPELL+TYPE_TRAP)
end
function c75030013.hspop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)~=0 and Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) and Duel.SelectYesNo(tp,aux.Stringid(75030013,0)) then
Duel.BreakEffect()
local g=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
Duel.Destroy(g,REASON_EFFECT)
end
end
function c75030013.xxtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
Duel.SetChainLimit(aux.FALSE)
end
end
function c75030013.xxop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(75030013,1))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(75030013)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(1,0)
Duel.RegisterEffect(e1,tp)
--damage
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CHANGE_BATTLE_DAMAGE)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(1,0)
e2:SetValue(HALF_DAMAGE)
e2:SetCondition(function(e)
local tp=e:GetHandlerPlayer()
return Duel.IsExistingMatchingCard(function(c) return c:IsFaceup() and c:IsSetCard(0x753) end,tp,LOCATION_MZONE+LOCATION_GRAVE,0,1,nil) end)
Duel.RegisterEffect(e2,tp)
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