Commit 215d58ff authored by root's avatar root

Refresh on 2024-07-04 16:36:00

parent 2549a5ae
...@@ -67,7 +67,7 @@ end ...@@ -67,7 +67,7 @@ end
--deck --deck
function s.scon(e,tp,eg,ep,ev,re,r,rp) function s.scon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
return re:GetHandler():IsRace(RACE_ROCK) and re:GetHandler():IsType(TYPE_TUNER) and return re:GetHandler():IsSetCard(0x140) and
c:GetSpecialSummonInfo(SUMMON_INFO_TYPE)&TYPE_MONSTER~=0 c:GetSpecialSummonInfo(SUMMON_INFO_TYPE)&TYPE_MONSTER~=0
end end
function s.sstg(e,tp,eg,ep,ev,re,r,rp,chk) function s.sstg(e,tp,eg,ep,ev,re,r,rp,chk)
......
...@@ -15,17 +15,17 @@ function s.initial_effect(c) ...@@ -15,17 +15,17 @@ function s.initial_effect(c)
e1:SetOperation(s.atkop) e1:SetOperation(s.atkop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon --spsummon
local e2=Effect.CreateEffect(c) -- local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(id,1)) -- e2:SetDescription(aux.Stringid(id,1))
e2:SetCategory(CATEGORY_SPECIAL_SUMMON) -- e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_IGNITION) -- e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_MZONE) -- e2:SetRange(LOCATION_MZONE)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET) -- e2:SetProperty(EFFECT_FLAG_CARD_TARGET)
e2:SetCountLimit(1) -- e2:SetCountLimit(1)
e2:SetCost(s.spcost) -- e2:SetCost(s.spcost)
e2:SetTarget(s.sptg) -- e2:SetTarget(s.sptg)
e2:SetOperation(s.spop) -- e2:SetOperation(s.spop)
c:RegisterEffect(e2) -- c:RegisterEffect(e2)
--negate --negate
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(id,2)) e3:SetDescription(aux.Stringid(id,2))
......
...@@ -4,7 +4,6 @@ function s.initial_effect(c) ...@@ -4,7 +4,6 @@ function s.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0))
e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW) e1:SetCategory(CATEGORY_TOGRAVE+CATEGORY_DRAW)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetCode(EVENT_SPSUMMON_SUCCESS)
...@@ -32,9 +31,9 @@ function s.initial_effect(c) ...@@ -32,9 +31,9 @@ function s.initial_effect(c)
e4:SetDescription(aux.Stringid(id,0)) e4:SetDescription(aux.Stringid(id,0))
e4:SetCategory(CATEGORY_REMOVE) e4:SetCategory(CATEGORY_REMOVE)
e4:SetType(EFFECT_TYPE_IGNITION) e4:SetType(EFFECT_TYPE_IGNITION)
e4:SetProperty(EFFECT_FLAG_NO_TURN_RESET)
e4:SetRange(LOCATION_MZONE) e4:SetRange(LOCATION_MZONE)
e4:SetCountLimit(1) e4:SetCountLimit(1,id+id+id)
e4:SetCost(s.rmcost)
e4:SetTarget(s.rmtg) e4:SetTarget(s.rmtg)
e4:SetOperation(s.rmop) e4:SetOperation(s.rmop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
...@@ -74,7 +73,7 @@ function s.spcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -74,7 +73,7 @@ function s.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsSummonType(SUMMON_TYPE_SYNCHRO) and e:GetLabel()>0 return e:GetHandler():IsSummonType(SUMMON_TYPE_SYNCHRO) and e:GetLabel()>0
end end
function s.spfilter(c,e,tp) function s.spfilter(c,e,tp)
return (c:IsType(TYPE_MONSTER) and c:IsSetCard(0x140) and not c:IsAttribute(ATTRIBUTE_EARTH) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0) or (c:IsSetCard(0x140) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() and Duel.GetLocationCount(tp,LOCATION_SZONE)>0) return (c:IsType(TYPE_MONSTER) and c:IsSetCard(0x140) and not c:IsType(TYPE_TUNER) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0) or (c:IsSetCard(0x140) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable() and Duel.GetLocationCount(tp,LOCATION_SZONE)>0)
end end
function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function s.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end if chk==0 then return Duel.IsExistingMatchingCard(s.spfilter,tp,LOCATION_DECK,0,1,nil,e,tp) end
...@@ -89,15 +88,24 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -89,15 +88,24 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.SSet(tp,tc) Duel.SSet(tp,tc)
end end
end end
function s.costfilter(c)
return c:IsSetCard(0x140) and c:IsAbleToRemoveAsCost()
end
function s.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(s.costfilter,tp,LOCATION_GRAVE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g=Duel.SelectMatchingCard(tp,s.costfilter,tp,LOCATION_GRAVE,0,1,1,nil)
Duel.Remove(g,POS_FACEUP,REASON_COST)
end
function s.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) function s.rmtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_GRAVE,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD+LOCATION_HAND+LOCATION_GRAVE,1,nil) end
local b1=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil) local b1=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_ONFIELD,1,nil)
local b2=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_HAND,1,nil) local b2=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_HAND,1,nil)
local b3=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil) local b3=Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_GRAVE,1,nil)
local op=aux.SelectFromOptions(tp, local op=aux.SelectFromOptions(tp,
{b1,aux.Stringid(id,1)}, {b1,aux.Stringid(id,2)},
{b2,aux.Stringid(id,2)}, {b2,aux.Stringid(id,3)},
{b3,aux.Stringid(id,3)}) {b3,aux.Stringid(id,4)})
e:SetLabel(op) e:SetLabel(op)
local oploc=({LOCATION_ONFIELD,LOCATION_HAND,LOCATION_GRAVE})[op] local oploc=({LOCATION_ONFIELD,LOCATION_HAND,LOCATION_GRAVE})[op]
Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,oploc) Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,1,1-tp,oploc)
......
...@@ -118,15 +118,17 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp) ...@@ -118,15 +118,17 @@ function s.desop(e,tp,eg,ep,ev,re,r,rp)
type = type | cc:GetType() type = type | cc:GetType()
end end
type=type & (TYPE_FUSION+TYPE_XYZ+TYPE_SYNCHRO+TYPE_LINK+TYPE_PENDULUM) type=type & (TYPE_FUSION+TYPE_XYZ+TYPE_SYNCHRO+TYPE_LINK+TYPE_PENDULUM)
local dg=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,type) local ng=Duel.GetMatchingGroup(Card.IsType,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,type)
for dc in aux.Next(dg) do local dg=Group.CreateGroup()
if dc:IsCanBeDisabledByEffect(e) then for dc in aux.Next(ng) do
if dc:IsCanBeDisabledByEffect(e,true) then
local e1=Effect.CreateEffect(e:GetHandler()) local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DISABLE) e1:SetCode(EFFECT_DISABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD) e1:SetReset(RESET_EVENT+RESETS_STANDARD)
dc:RegisterEffect(e1) dc:RegisterEffect(e1)
Duel.NegateRelatedChain(dc,RESET_TURN_SET) Duel.NegateRelatedChain(dc,RESET_TURN_SET)
dg=dg+dc
end end
end end
Duel.AdjustInstantly() Duel.AdjustInstantly()
......
local s,id,o=GetID() local s,id,o=GetID()
function s.initial_effect(c) function s.initial_effect(c)
aux.AddSynchroProcedure(c,nil,aux.NonTuner(nil),1) aux.AddSynchroProcedure(c,aux.FilterBoolFunction(Card.IsRace,RACE_WARRIOR),aux.NonTuner(Card.IsRace,RACE_WARRIOR),1)
c:EnableReviveLimit() c:EnableReviveLimit()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(id,0)) e1:SetDescription(aux.Stringid(id,0))
...@@ -55,6 +55,18 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -55,6 +55,18 @@ function s.thop(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoHand(g,nil,REASON_EFFECT) Duel.SendtoHand(g,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,g) Duel.ConfirmCards(1-tp,g)
end end
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_NO_EFFECT_DAMAGE)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetReset(RESET_PHASE+PHASE_END)
e2:SetTargetRange(0,1)
e2:SetValue(s.damval)
Duel.RegisterEffect(e2,tp)
end
function s.damval(e,re,val,r,rp,rc)
if bit.band(r,REASON_EFFECT)~=0 then return 0 end
return val
end end
function s.imetg(e,c) function s.imetg(e,c)
return c:IsRace(RACE_WARRIOR) return c:IsRace(RACE_WARRIOR)
......
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