Commit ae8efffc authored by Huangnan's avatar Huangnan

fix

parent 08f1e028
Pipeline #35147 passed with stages
in 46 minutes and 34 seconds
No preview for this file type
......@@ -41,15 +41,17 @@ function cm.desfilter(c,s,tp)
return seq<5 and math.abs(seq-s)==1 and c:IsControler(tp)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
--local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
local lg=tc:GetColumnGroup()
local seq=tc:GetSequence()
local dg=Group.CreateGroup()
if seq<5 then dg=Duel.GetMatchingGroup(cm.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,seq,tc:GetControler()) end
dg:AddCard(tc)
local ct=dg:GetCount()
if ct>0 then Duel.Destroy(dg,REASON_EFFECT) end
if tc:IsRelateToEffect(e) then --debug
local lg=tc:GetColumnGroup()
local seq=tc:GetSequence()
local dg=Group.CreateGroup()
if seq<5 then dg=Duel.GetMatchingGroup(cm.desfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil,seq,tc:GetControler()) end
dg:AddCard(tc)
local ct=dg:GetCount()
if ct>0 then Duel.Destroy(dg,REASON_EFFECT) end
end
end
function cm.setfilter(c)
......
......@@ -7,6 +7,7 @@ function c16310015.initial_effect(c)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_SUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCountLimit(1,16310015)
e2:SetTarget(c16310015.eqtg)
e2:SetOperation(c16310015.eqop)
c:RegisterEffect(e2)
......
......@@ -118,7 +118,7 @@ function c16349300.activate(e,tp,eg,ep,ev,re,r,rp)
end
end
function c16349300.matfilter(c)
return c:IsLinkRace(RACE_WARRIOR) or (c:IsSetCard(0x3dc2) and c:IsType(TYPE_CONTINUOUS))
return c:IsLinkRace(RACE_WARRIOR) and c:IsType(0x1) or c:IsSetCard(0x3dc2) and c:IsType(TYPE_CONTINUOUS)
end
function c16349300.LConditionFilter(c,f,lc)
return (c:IsFaceup() or not c:IsLocation(LOCATION_MZONE)) and (c:IsCanBeLinkMaterial(lc) or c:IsSetCard(0x3dc2) and c:IsType(TYPE_CONTINUOUS)) and (not f or f(c))
......
......@@ -47,7 +47,7 @@ function s.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.PayLPCost(tp,Duel.GetLP(tp)//2)
end
function s.rmtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler()) end
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end
local g=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler())
Duel.SetOperationInfo(0,CATEGORY_REMOVE,g,#g,0,0)
end
......
......@@ -229,7 +229,7 @@ function s.mfilter(c,xyzc)
end
function s.spcon(e,tp,eg,ep,ev,re,r,rp)
local p,loc=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_CONTROLER,CHAININFO_TRIGGERING_LOCATION)
return rp==1-tp and loc&LOCATION_ONFIELD~=0 and e:GetHandler():GetOverlayCount()>0
return rp==1-tp and loc&LOCATION_ONFIELD~=0 and e:GetHandler():GetOverlayCount()>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0
end
function s.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.SelectEffectYesNo(tp,e:GetHandler(),aux.Stringid(id,3)) then
......
......@@ -32,7 +32,7 @@ function s.initial_effect(c)
e4:SetType(EFFECT_TYPE_QUICK_O)
e4:SetCode(EVENT_FREE_CHAIN)
e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1,id)
e4:SetCountLimit(1,id+o)
e4:SetCondition(s.xyzcon)
e4:SetTarget(s.xyztg)
e4:SetOperation(s.xyzop)
......
......@@ -46,18 +46,20 @@ function s.initial_effect(c)
e1:SetValue(1)
c:RegisterEffect(e1)
--atk
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_SET_ATTACK_FINAL)
e2:SetCategory(CATEGORY_ATKCHANGE)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e2:SetRange(LOCATION_SZONE)
e2:SetTargetRange(0,LOCATION_MZONE)
e2:SetCondition(s.atkcon)
e2:SetValue(s.atkval)
e2:SetOperation(s.atkop)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EFFECT_SET_DEFENSE_FINAL)
e3:SetValue(s.defval)
e3:SetCategory(CATEGORY_DEFCHANGE)
e3:SetOperation(s.defop)
c:RegisterEffect(e3)
--装备
......@@ -77,17 +79,36 @@ function s.eqlimit(e,c)
return c:IsSetCard(0xc22) and c:IsFaceup()
end
function s.atkcon(e)
function s.atkcon(e,tp,eg,ep,ev,re,r,rp)
local ec=e:GetHandler():GetEquipTarget()
return Duel.GetAttacker()==ec
local tc=ec:GetBattleTarget()
return ec and tc and tc:IsFaceup() and tc:IsControler(1-tp)
end
function s.atkval(e,c)
return c:GetAttack()+500
function s.atkop(e,tp,eg,ep,ev,re,r,rp)
local ec=e:GetHandler():GetEquipTarget()
local tc=ec:GetBattleTarget()
if ec and tc and ec:IsFaceup() and tc:IsFaceup() then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_ATTACK_FINAL)
e1:SetValue(tc:GetAttack()+500)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL)
ec:RegisterEffect(e1)
end
end
function s.defval(e,c)
return c:GetDefense()+500
function s.defop(e,tp,eg,ep,ev,re,r,rp)
local ec=e:GetHandler():GetEquipTarget()
local tc=ec:GetBattleTarget()
if ec and tc and ec:IsFaceup() and tc:IsFaceup() then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_DEFENSE_FINAL)
e1:SetValue(tc:GetDefense()+500)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL)
ec:RegisterEffect(e1)
end
end
function s.eqcon(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -72,7 +72,7 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
local ct=#g
local correct=0
local tdisable={}
local tdisable=0
for i=1,ct do
local tc=g:GetFirst()
......@@ -90,11 +90,11 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
local declaredType=opval[Duel.SelectOption(tp,table.unpack(opt))+1]
Duel.ConfirmCards(tp,tc)
if (declaredType==TYPE_MONSTER and tc:IsType(TYPE_MONSTER))
or (declaredType==TYPE_SPELL and tc:IsType(TYPE_SPELL))
or (declaredType==TYPE_TRAP and tc:IsType(TYPE_TRAP)) then
if (declaredType==TYPE_MONSTER and tc:IsType(TYPE_MONSTER))
or (declaredType==TYPE_SPELL and tc:IsType(TYPE_SPELL))
or (declaredType==TYPE_TRAP and tc:IsType(TYPE_TRAP)) then
correct=correct+1
table.insert(tdisable,tc)
tdisable=tdisable|declaredType
end
if tc:IsLocation(LOCATION_HAND) then
......@@ -108,26 +108,22 @@ function s.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.Draw(tp,correct,REASON_EFFECT)
if Duel.IsExistingMatchingCard(s.ksrfilter,tp,LOCATION_MZONE,0,1,nil)
and Duel.SelectYesNo(tp,aux.Stringid(id,3)) then
for _,tc in ipairs(tdisable) do
if tc:IsLocation(LOCATION_SZONE) and tc:IsRelateToEffect(e) and tc:IsFacedown() and tc:IsControler(1-tp) then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_TRIGGER)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
elseif tc:IsLocation(LOCATION_HAND) and tc:IsControler(1-tp) then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_CANNOT_TRIGGER)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
end
end
and Duel.SelectYesNo(tp,aux.Stringid(id,3)) then
local e1= Effect. CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetTargetRange(0,1)
e1:SetLabel(tdisable)
e1:SetValue(s.aclimit)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
end
end
function s.aclimit(e,re,tp)
return re:IsActiveType(e:GetLabel())
end
function s.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(s.ksrfilter,tp,LOCATION_MZONE,0,1,nil)
end
......@@ -55,8 +55,8 @@ function s.initial_effect(c)
e4:SetCode(EVENT_FREE_CHAIN)
e4:SetRange(LOCATION_MZONE)
e4:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE)
e4:SetCountLimit(1,EFFECT_COUNT_CODE_CHAIN)
e4:SetTarget(s.exctarget)
e4:SetCountLimit(1)
e4:SetCost(s.exccost)
e4:SetOperation(s.excop)
c:RegisterEffect(e4)
end
......@@ -77,9 +77,8 @@ end
-- 检索效果
function s.thfilter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP)
return aux.IsCodeListed(c,60000211) and not c:IsCode(id)
and c:IsAbleToHand()
and aux.IsCodeListed(c,id)
end
function s.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.NecroValleyFilter(s.thfilter),tp,LOCATION_DECK+LOCATION_GRAVE,0,1,nil) end
......@@ -97,52 +96,57 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
end
-- 除外效果
function s.exctarget(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToRemove() end
Duel.SetOperationInfo(0,CATEGORY_REMOVE,e:GetHandler(),1,0,0)
function s.exccost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end
local tc=e:GetHandler()
if tc:IsRelateToEffect(e) and Duel.Remove(tc,0,REASON_COST+REASON_TEMPORARY)~=0
and tc:IsLocation(LOCATION_REMOVED) then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(id,1))
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_STANDBY)
e1:SetLabelObject(tc)
e1:SetCountLimit(1)
e1:SetCondition(s.retcon)
e1:SetOperation(s.retop)
if Duel.GetTurnPlayer()==tp and Duel.GetCurrentPhase()<=PHASE_STANDBY then
e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,2)
e1:SetValue(Duel.GetTurnCount())
tc:RegisterFlagEffect(id,RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,2)
else
e1:SetReset(RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN)
e1:SetValue(0)
tc:RegisterFlagEffect(id,RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN,0,1)
end
Duel.RegisterEffect(e1,tp)
end
end
function s.excop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsAbleToRemove() then
if Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_EFFECT)>0 then
-- 速攻魔法发动权限
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(id,1))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_QP_ACT_IN_NTPHAND)
e1:SetTargetRange(LOCATION_HAND,0)
e1:SetTarget(s.acttg)
e1:SetCountLimit(1)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
-- 陷阱发动权限
local e2=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(id,1))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_TRAP_ACT_IN_HAND)
e2:SetTargetRange(LOCATION_HAND,0)
e2:SetTarget(s.acttg)
e2:SetCountLimit(1)
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
local desc=math.random(5,10)
Duel.Hint(24,0,aux.Stringid(id,desc))
-- 回归效果
local c=e:GetHandler()
c:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD,0,1)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_PHASE+PHASE_STANDBY)
e3:SetCountLimit(1)
e3:SetLabel(Duel.GetTurnCount())
e3:SetCondition(s.retcon)
e3:SetOperation(s.retop)
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_STANDBY,2)
Duel.RegisterEffect(e3,tp)
end
end
-- 速攻魔法发动权限
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(id,1))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_QP_ACT_IN_NTPHAND)
e1:SetTargetRange(LOCATION_HAND,0)
e1:SetTarget(s.acttg)
e1:SetCountLimit(1)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
-- 陷阱发动权限
local e2=Effect.CreateEffect(e:GetHandler())
e1:SetDescription(aux.Stringid(id,1))
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_TRAP_ACT_IN_HAND)
e2:SetTargetRange(LOCATION_HAND,0)
e2:SetTarget(s.acttg)
e2:SetCountLimit(1)
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
local desc=math.random(5,10)
Duel.Hint(24,0,aux.Stringid(id,desc))
end
-- 发动权限筛选
......@@ -155,12 +159,10 @@ function s.actop(e,tp,eg,ep,ev,re,r,rp)
end
-- 回归效果
function s.retcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnCount()~=e:GetLabel() and e:GetOwner():GetFlagEffect(id)>0
if Duel.GetTurnPlayer()~=tp or Duel.GetTurnCount()==e:GetValue() then return false end
return e:GetLabelObject():GetFlagEffect(id)~=0
end
function s.retop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetOwner()
if c:IsLocation(LOCATION_REMOVED) and c:IsFaceup() then
Duel.ReturnToField(c)
end
e:Reset()
local tc=e:GetLabelObject()
Duel.ReturnToField(tc)
end
\ No newline at end of file
--异梦奏进-神代心春
Duel.LoadScript("c71400001.lua")
if not c71400001 then dofile("expansions/script/c71400001.lua") end
function c71402000.initial_effect(c)
--pendulum summon
aux.EnablePendulumAttribute(c)
......@@ -51,14 +51,14 @@ function c71402000.counterfilter(c)
end
function c71402000.sctg(e,tp,eg,ep,ev,re,r,rp,chk)
local sc=Duel.GetFirstMatchingCard(nil,tp,LOCATION_PZONE,0,e:GetHandler())
if chk==0 then return e:GetHandler():GetLeftScale()<13 end
if chk==0 then return sc and sc:GetLeftScale()<13 end
Duel.SetTargetCard(sc)
Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1)
end
function c71402000.scop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if not (c:IsRelateToEffect(e) and tc:IsRelateToEffect(e)) or tc:GetLeftScale()>=13 then return end
if not (tc and tc:IsRelateToChain()) or tc:GetLeftScale()>=13 then return end
local dc=Duel.TossDice(tp,1)
local sch=math.min(13-c:GetLeftScale(),dc)
local e1=Effect.CreateEffect(c)
......@@ -88,7 +88,7 @@ function c71402000.eftg(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_DICE,nil,0,tp,1)
end
function c71402000.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(Card.IsType(TYPE_LINK),tp,LOCATION_MZONE,0,1,nil)
return Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_MZONE,0,1,nil,TYPE_LINK)
end
function c71402000.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
......@@ -122,10 +122,10 @@ function c71402000.efop(e,tp,eg,ep,ev,re,r,rp)
elseif dc==3 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,c71402000.filter2,tp,LOCATION_DECK,0,1,1,nil)
if g:GetCount()>0 then Duel.SendtoGrave(g,REASON_EFFECT) end
if g:GetCount()>0 then Duel.SendtoGrave(g,REASON_EFFECT)>0 end
elseif dc==4 then
local thg=Duel.GetMatchingGroup(c71402000.filter3,tp,LOCATION_GRAVE,0,nil)
if thg:GetCount()>0 then
if thg:GetCount()>0
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local sc=thg:Select(tp,1,1,nil):GetFirst()
Duel.SendtoHand(sc,nil,REASON_EFFECT)
......
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