Commit b8986b6a authored by CubeRuler's avatar CubeRuler

fixed

parent 13e48ff0
Pipeline #15195 passed with stages
in 33 minutes and 52 seconds
...@@ -81,7 +81,7 @@ end ...@@ -81,7 +81,7 @@ end
--效果2 --效果2
function cm.tgcon(e,tp,eg,ep,ev,re,r,rp) function cm.tgcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return c:IsLevel(1) return c:IsLevel(1) and Duel.GetCurrentPhase()~=PHASE_END
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -104,12 +104,12 @@ function cm.spfilter(c,e,tp) ...@@ -104,12 +104,12 @@ function cm.spfilter(c,e,tp)
return c.setname=="TaleSouls" and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevel(1) and not c:IsCode(m) return c.setname=="TaleSouls" and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and c:IsLevel(1) and not c:IsCode(m)
end end
function cm.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then return Duel.GetMZoneCount(tp,e:GetHandler())>0
and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE)
end end
function cm.tgop(e,tp,eg,ep,ev,re,r,rp) function cm.tgop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then if Duel.GetMZoneCount(tp,e:GetHandler())>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(cm.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(cm.spfilter),tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp)
if g:GetCount()>0 then if g:GetCount()>0 then
......
...@@ -121,7 +121,7 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp) ...@@ -121,7 +121,7 @@ function cm.operation2(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetValue(-200) e1:SetValue(-400)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e1) tc:RegisterEffect(e1)
......
...@@ -113,14 +113,14 @@ function cm.atkop(e,tp,eg,ep,ev,re,r,rp) ...@@ -113,14 +113,14 @@ function cm.atkop(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(bc:GetAttack()) e1:SetValue(bc:GetAttack())
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE) e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_EXTRA_ATTACK) e3:SetCode(EFFECT_EXTRA_ATTACK)
e3:SetValue(1) e3:SetValue(1)
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_BATTLE) e3:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e3) c:RegisterEffect(e3)
if dam<0 then dam=0 end if dam<0 then dam=0 end
Duel.Damage(1-tp,dam,REASON_EFFECT) Duel.Damage(1-tp,dam,REASON_EFFECT)
......
...@@ -17,16 +17,16 @@ function c33350005.initial_effect(c) ...@@ -17,16 +17,16 @@ function c33350005.initial_effect(c)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(0,LOCATION_MZONE) e3:SetTargetRange(0,LOCATION_MZONE)
e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) e3:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e3:SetValue(cm.atlimit) e3:SetTarget(cm.attack)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD) e4:SetType(EFFECT_TYPE_FIELD)
e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e4:SetCode(EFFECT_CANNOT_ACTIVATE) e4:SetCode(EFFECT_CANNOT_ACTIVATE)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetTargetRange(1,1) e4:SetTargetRange(0,LOCATION_MZONE)
e4:SetCondition(cm.actcon) e4:SetCondition(cm.actcon)
e4:SetValue(cm.aclimit) e4:SetValue(cm.atlimit)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
cm.setname="TaleSouls" cm.setname="TaleSouls"
...@@ -45,34 +45,35 @@ function cm.e01op(e,tp,eg,ep,ev,re,r,rp) ...@@ -45,34 +45,35 @@ function cm.e01op(e,tp,eg,ep,ev,re,r,rp)
local tp=e:GetHandlerPlayer() local tp=e:GetHandlerPlayer()
local c=e:GetHandler() local c=e:GetHandler()
local seq=c:GetSequence() local seq=c:GetSequence()
local g=Duel.GetFieldGroup(tp,0xff,0) local nseq=math.randomseed(0,4)
local seed=g:RandomSelect(tp,1)
local nseq=seed:GetFirst():GetSequence()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
e1:SetValue(300) e1:SetValue(300)
c:RegisterEffect(e1) c:RegisterEffect(e1)
while nseq>4 do nseq=nseq-5 end
if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then if Duel.GetLocationCount(tp,LOCATION_MZONE)==0 then
return false return false
else else
if nseq==seq then if Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq)then
if seq>=2 then
if Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq-1) then
Duel.MoveSequence(c,nseq-1)
end
else
if Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq+1) then
Duel.MoveSequence(c,nseq+1)
end
end
else
if Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq) then
Duel.MoveSequence(c,nseq) Duel.MoveSequence(c,nseq)
elseif seq~=4 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq+1)then
Duel.MoveSequence(c,nseq+1)
elseif seq~=0 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq-1) then
Duel.MoveSequence(c,nseq-1)
elseif nseq+2<=4 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq+2)then
Duel.MoveSequence(c,nseq+2)
elseif nseq-2>=0 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq-2)then
Duel.MoveSequence(c,nseq-2)
elseif nseq-3>=0 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq-3)then
Duel.MoveSequence(c,nseq-3)
elseif nseq+3<=4 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq+3)then
Duel.MoveSequence(c,nseq+3)
elseif nseq-4>=0 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq-4)then
Duel.MoveSequence(c,nseq-4)
elseif nseq+4<=4 and Duel.CheckLocation(e:GetHandlerPlayer(),LOCATION_MZONE,nseq+4)then
Duel.MoveSequence(c,nseq+4)
end end
end
end end
if Duel.IsExistingMatchingCard(cm.tgfilter,tp,0,LOCATION_MZONE,1,nil) if Duel.IsExistingMatchingCard(cm.tgfilter,tp,0,LOCATION_MZONE,1,nil)
and Duel.GetLocationCount(1-tp,LOCATION_MZONE,PLAYER_NONE,0)>0 and Duel.SelectYesNo(tp,aux.Stringid(m,0)) then and Duel.GetLocationCount(1-tp,LOCATION_MZONE,PLAYER_NONE,0)>0 and Duel.SelectYesNo(tp,aux.Stringid(m,0)) then
...@@ -91,7 +92,7 @@ function cm.e01op(e,tp,eg,ep,ev,re,r,rp) ...@@ -91,7 +92,7 @@ function cm.e01op(e,tp,eg,ep,ev,re,r,rp)
end end
end end
--效果1 --效果1
function cm.atlimit(e,c) function cm.atlimit(e,re)
local tc=re:GetHandler() local tc=re:GetHandler()
return tc:IsLocation(LOCATION_MZONE) and re:IsActiveType(TYPE_MONSTER) and e:GetHandler():GetColumnGroup():IsContains(tc) and tc:IsAttackBelow(e:GetHandler():GetAttack()) return tc:IsLocation(LOCATION_MZONE) and re:IsActiveType(TYPE_MONSTER) and e:GetHandler():GetColumnGroup():IsContains(tc) and tc:IsAttackBelow(e:GetHandler():GetAttack())
end end
...@@ -100,4 +101,10 @@ function cm.actcon(e,tp) ...@@ -100,4 +101,10 @@ function cm.actcon(e,tp)
end end
function cm.spfilter(c,e,tp) function cm.spfilter(c,e,tp)
return c:IsCode(33350001) and c:IsFaceup() return c:IsCode(33350001) and c:IsFaceup()
end
function cm.attack(e,c)
local ct1=aux.GetColumn(e:GetHandler())
local ct2=aux.GetColumn(c)
if not ct1 or not ct2 then return false end
return math.abs(ct1-ct2)==0
end end
\ No newline at end of file
...@@ -79,17 +79,20 @@ function cm.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -79,17 +79,20 @@ function cm.desop(e,tp,eg,ep,ev,re,r,rp)
end end
--效果1 --效果1
function cm.sccon(e,tp,eg,ep,ev,re,r,rp) function cm.sccon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local ph=Duel.GetCurrentPhase() local ph=Duel.GetCurrentPhase()
return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetTurnPlayer()==1-tp return not e:GetHandler():IsStatus(STATUS_CHAINING) and Duel.GetTurnPlayer()==1-c:GetControler()
and (ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or ph==PHASE_MAIN2) and not e:GetHandler():IsControler(tp) and (ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE) or ph==PHASE_MAIN2) and not e:GetHandler():IsControler(tp) and Duel.GetCurrentChain()==0
end end
function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,1-tp,LOCATION_HAND,0,1,e:GetHandler()) end if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2)
end end
function cm.drop(e,tp,eg,ep,ev,re,r,rp) function cm.drop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,0)) Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(m,0))
local ag=Duel.SelectMatchingCard(tp,aux.TRUE,tp,0,LOCATION_HAND,1,1,nil) local ag=Duel.SelectMatchingCard(tp,aux.TRUE,tp,LOCATION_HAND,0,1,1,nil)
local g1=Duel.GetDecktopGroup(tp,1) local g1=Duel.GetDecktopGroup(tp,1)
ag:Merge(g1) ag:Merge(g1)
if ag:GetCount()==2 then if ag:GetCount()==2 then
...@@ -97,9 +100,11 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp) ...@@ -97,9 +100,11 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(tp,ag) Duel.ConfirmCards(tp,ag)
Duel.ShuffleHand(tp) Duel.ShuffleHand(tp)
Duel.ShuffleHand(1-tp) Duel.ShuffleHand(1-tp)
Duel.BreakEffect() end
Duel.BreakEffect()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetCode(EFFECT_DISABLE) e1:SetCode(EFFECT_DISABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -109,5 +114,4 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp) ...@@ -109,5 +114,4 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp)
e2:SetValue(RESET_TURN_SET) e2:SetValue(RESET_TURN_SET)
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end
end end
\ No newline at end of file
...@@ -8,17 +8,17 @@ function c33350007.initial_effect(c) ...@@ -8,17 +8,17 @@ function c33350007.initial_effect(c)
e1:SetCategory(CATEGORY_SEARCH+CATEGORY_COIN+CATEGORY_TOHAND) e1:SetCategory(CATEGORY_SEARCH+CATEGORY_COIN+CATEGORY_TOHAND)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetCountLimit(1) e1:SetCountLimit(1)
e1:SetCondition(cm.conditon1) e1:SetCondition(cm.conditon1)
e1:SetTarget(cm.destg1) e1:SetTarget(cm.destg1)
e1:SetOperation(cm.desop1) e1:SetOperation(cm.desop1)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=e1:Clone() local e2=e1:Clone()
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetCondition(cm.conditon2) e2:SetCondition(cm.conditon2)
e2:SetTarget(cm.destg2) e2:SetTarget(cm.destg2)
e2:SetOperation(cm.desop2) e2:SetOperation(cm.desop2)
c:RegisterEffect(e2) c:RegisterEffect(e2)
local e4=Effect.CreateEffect(c) local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD) e4:SetType(EFFECT_TYPE_FIELD)
e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e4:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e4:SetCode(EFFECT_CANNOT_TO_HAND) e4:SetCode(EFFECT_CANNOT_TO_HAND)
...@@ -35,10 +35,10 @@ function cm.spfilter(c,e,tp) ...@@ -35,10 +35,10 @@ function cm.spfilter(c,e,tp)
return c:IsCode(33350001) and c:IsFaceup() return c:IsCode(33350001) and c:IsFaceup()
end end
function cm.conditon1(e,tp,eg,ep,ev,re,r,rp) function cm.conditon1(e,tp,eg,ep,ev,re,r,rp)
return not Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,1,nil,e,tp) return not Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,1,nil,e,tp)
end end
function cm.conditon2(e,tp,eg,ep,ev,re,r,rp) function cm.conditon2(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,1,nil,e,tp) return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,1,nil,e,tp)
end end
function cm.destg1(e,tp,eg,ep,ev,re,r,rp,chk) function cm.destg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.sfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end if chk==0 then return Duel.IsExistingMatchingCard(cm.sfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end
...@@ -49,8 +49,8 @@ function cm.desop1(e,tp,eg,ep,ev,re,r,rp) ...@@ -49,8 +49,8 @@ function cm.desop1(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(cm.sfilter,tp,LOCATION_DECK,0,nil) local g=Duel.GetMatchingGroup(cm.sfilter,tp,LOCATION_DECK,0,nil)
if g:GetCount()==0 then return end if g:GetCount()==0 then return end
local coin=Duel.AnnounceCoin(tp) local coin=Duel.AnnounceCoin(tp)
local c1=Duel.TossCoin(tp,1) local l1=Duel.TossCoin(tp,1)
local ct=c1 local ct=l1
if coin~=res then return end if coin~=res then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELECT) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELECT)
local dg=g:Select(tp,1,ct,nil):GetFirst() local dg=g:Select(tp,1,ct,nil):GetFirst()
...@@ -68,44 +68,50 @@ function cm.efilter(e,te) ...@@ -68,44 +68,50 @@ function cm.efilter(e,te)
return te:GetOwnerPlayer()~=e:GetHandlerPlayer() return te:GetOwnerPlayer()~=e:GetHandlerPlayer()
end end
function cm.desop2(e,tp,eg,ep,ev,re,r,rp) function cm.desop2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local g=Duel.GetMatchingGroup(cm.sfilter,tp,LOCATION_DECK,0,nil) local g=Duel.GetMatchingGroup(cm.sfilter,tp,LOCATION_DECK,0,nil)
local ng=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil) local ng=Duel.GetMatchingGroup(aux.TRUE,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
if g:GetCount()==0 then return end if g:GetCount()==0 then return end
local b=Duel.AnnounceCoin(tp) local b=Duel.AnnounceCoin(tp)
local s=Duel.AnnounceCoin(tp) local s=Duel.AnnounceCoin(tp)
local y=Duel.AnnounceCoin(tp) local y=Duel.AnnounceCoin(tp)
local c1,c2,c3=Duel.TossCoin(tp,3) local l1,l2,l3=Duel.TossCoin(tp,3)
if (b==c1 and s~=c2 and y~=c3) or(b~=c1 and s==c2 and y~=c3)or (b~=c1 and s~=c2 and y==c3) then local ic=0
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELECT) if l1~=b then ic=ic+1 end
local dg=g:Select(tp,1,ct,nil) if l2~=s then ic=ic+1 end
if g:GetCount()>0 then if l3~=y then ic=ic+1 end
Duel.SendtoHand(dg,nil,REASON_EFFECT) if ic~=0 then
Duel.ConfirmCards(1-tp,dg) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SELECT)
local dg=g:Select(tp,1,1,nil)
if g:GetCount()>0 then
Duel.SendtoHand(dg,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,dg)
end
if ic>1 then
local yg=ng:Select(tp,1,1,nil)
Duel.HintSelection(yg)
Duel.Destroy(yg,REASON_EFFECT)
end
if ic==3 then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_IMMUNE_EFFECT)
e1:SetValue(cm.efilter)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetValue(3000)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_DIRECT_ATTACK)
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e3)
end
end end
elseif (b==c1 and s==c2 and y~=c3) or (b==c1 and s~=c2 and y==c3) or (b~=c1 and s==c2 and y==c3) then
local yg=ng:Select(tp,1,1,nil)
Duel.HintSelection(yg)
Duel.Destroy(yg,REASON_EFFECT)
elseif b==c1 and s==c2 and y==c3 then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_IMMUNE_EFFECT)
e1:SetValue(cm.efilter)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetValue(3000)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_DIRECT_ATTACK)
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e3)
end
end end
--效果2 --效果2
......
...@@ -14,7 +14,7 @@ function c33350009.initial_effect(c) ...@@ -14,7 +14,7 @@ function c33350009.initial_effect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON) e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_ATTACK_ANNOUNCE) e2:SetCode(EVENT_ATTACK_ANNOUNCE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_SZONE)
e2:SetCondition(cm.condition) e2:SetCondition(cm.condition)
e2:SetTarget(cm.target) e2:SetTarget(cm.target)
e2:SetOperation(cm.operation) e2:SetOperation(cm.operation)
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
local m=33350010 local m=33350010
local cm=_G["c"..m] local cm=_G["c"..m]
function c33350010.initial_effect(c) function c33350010.initial_effect(c)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCountLimit(1,m+EFFECT_COUNT_CODE_OATH) e1:SetCountLimit(1,m+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.spcon) e1:SetCondition(cm.spcon)
e1:SetOperation(cm.spop) e1:SetOperation(cm.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -46,6 +46,7 @@ function cm.copyop(e,tp,eg,ep,ev,re,r,rp) ...@@ -46,6 +46,7 @@ function cm.copyop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget() local tc=Duel.GetFirstTarget()
if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and (tc:IsFaceup() or tc:IsLocation(LOCATION_GRAVE)) then if tc and c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) and (tc:IsFaceup() or tc:IsLocation(LOCATION_GRAVE)) then
local code=tc:GetOriginalCodeRule() local code=tc:GetOriginalCodeRule()
local cid=0
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
...@@ -53,41 +54,46 @@ function cm.copyop(e,tp,eg,ep,ev,re,r,rp) ...@@ -53,41 +54,46 @@ function cm.copyop(e,tp,eg,ep,ev,re,r,rp)
e1:SetValue(code) e1:SetValue(code)
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e11=Effect.CreateEffect(c)
e11:SetType(EFFECT_TYPE_SINGLE)
e11:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e11:SetCode(EFFECT_CHANGE_LEVEL)
e11:SetValue(tc:GetLevel())
e11:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e11)
if not tc:IsType(TYPE_TRAPMONSTER) then if not tc:IsType(TYPE_TRAPMONSTER) then
local cid=c:CopyEffect(code,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,1) cid=c:CopyEffect(code,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,1)
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e3:SetCountLimit(1)
e3:SetRange(LOCATION_MZONE)
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
e3:SetLabelObject(e1)
e3:SetLabel(cid)
e3:SetOperation(cm.rstop)
c:RegisterEffect(e3)
end end
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e3:SetCountLimit(1)
e3:SetRange(LOCATION_MZONE)
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
e3:SetLabelObject(e1)
e3:SetLabel(cid)
e3:SetOperation(cm.rstop)
c:RegisterEffect(e3)
end end
end end
function cm.rstop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local cid=e:GetLabel()
if cid~=0 then
c:ResetEffect(cid,RESET_COPY)
c:ResetEffect(RESET_DISABLE,RESET_EVENT)
end
local e1=e:GetLabelObject()
e1:Reset()
Duel.HintSelection(Group.FromCards(c))
Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription())
end
function cm.spfilter(c) function cm.spfilter(c)
return cm.setname=="TaleSouls" and c:IsAbleToGraveAsCost() return c.setname=="TaleSouls" and c:IsAbleToGraveAsCost()
end end
function cm.spcon(e,c) function cm.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,c) and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_HAND,0,1,c)
end end
function cm.spop(e,tp,eg,ep,ev,re,r,rp,c) function cm.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_HAND+LOCATION_ONFIELD,0,1,1,c) local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_HAND,0,1,1,c)
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
end end
...@@ -27,7 +27,6 @@ function c33350011.initial_effect(c) ...@@ -27,7 +27,6 @@ function c33350011.initial_effect(c)
e3:SetType(EFFECT_TYPE_IGNITION) e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
e3:SetProperty(EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_PLAYER_TARGET) e3:SetProperty(EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_PLAYER_TARGET)
e3:SetCountLimit(1,EFFECT_COUNT_CODE_SINGLE)
e3:SetCost(cm.effcost) e3:SetCost(cm.effcost)
e3:SetTarget(cm.drtg) e3:SetTarget(cm.drtg)
e3:SetOperation(cm.drop) e3:SetOperation(cm.drop)
...@@ -35,10 +34,10 @@ function c33350011.initial_effect(c) ...@@ -35,10 +34,10 @@ function c33350011.initial_effect(c)
end end
cm.setname="TaleSouls" cm.setname="TaleSouls"
function cm.mfilter(c,xyzc) function cm.mfilter(c,xyzc)
return cm.setname=="TaleSouls" and c:IsLevel(1) return c.setname=="TaleSouls" and c:IsLevel(1)
end end
function cm.spfilter(c,e,tp) function cm.spfilter(c,e,tp)
return c:IsCode(33350001) and c:IsFaceup() return c:IsCode(33350007) and c:IsFaceup()
end end
function cm.xyzop(c,e,tp) function cm.xyzop(c,e,tp)
return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,1,nil,e,tp) and c:IsFaceup() and c:IsCode(33350010) return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_REMOVED+LOCATION_GRAVE,0,1,nil,e,tp) and c:IsFaceup() and c:IsCode(33350010)
...@@ -48,14 +47,14 @@ function cm.effcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -48,14 +47,14 @@ function cm.effcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ) return e:GetHandler():IsSummonType(SUMMON_TYPE_XYZ)
end end
function cm.ofilter(c,e) function cm.ofilter(c,e)
return c:IsCanOverlay() and (not e or not c:IsImmuneToEffect(e)) return c:IsCanOverlay() and (not e or not c:IsImmuneToEffect(e)) and c.setname=="TaleSouls"
end end
function cm.gselect(g,mat) function cm.gselect(g,mat)
g:Merge(mat) g:Merge(mat)
return aux.dncheck(g) and g:GetClassCount(Card.GetOriginalCodeRule)==#g return aux.dncheck(g) and g:GetClassCount(Card.GetOriginalCodeRule)==#g
end end
function cm.tgfilter(c) function cm.tgfilter(c)
return c:IsCanOverlay() return c:IsCanOverlay() and c.setname=="TaleSouls"
end end
function cm.efftg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.efftg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
...@@ -98,7 +97,7 @@ end ...@@ -98,7 +97,7 @@ end
function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.drtg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return true end if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,c:GetControler(),500) Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,1-c:GetControler(),500)
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-c:GetControler(),800) Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1-c:GetControler(),800)
end end
function cm.drop(e,tp,eg,ep,ev,re,r,rp) function cm.drop(e,tp,eg,ep,ev,re,r,rp)
...@@ -118,6 +117,6 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp) ...@@ -118,6 +117,6 @@ function cm.drop(e,tp,eg,ep,ev,re,r,rp)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
Duel.BreakEffect() Duel.BreakEffect()
Duel.Recover(c:GetControler(),500,REASON_EFFECT) Duel.Recover(1-c:GetControler(),500,REASON_EFFECT)
Duel.Damage(1-c:GetControler(),800,REASON_EFFECT) Duel.Damage(1-c:GetControler(),800,REASON_EFFECT)
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