Commit 3262bee2 authored by Tachibana's avatar Tachibana

E

parent 7b908536
Pipeline #16266 passed with stages
in 29 minutes and 51 seconds
--剑之艺术 幽府妖刀
local m=10700231
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--spsummon
local e1=Effect.CreateEffect(c)
......@@ -25,11 +26,7 @@ function cm.initial_effect(c)
e3:SetTarget(cm.tgtg)
e3:SetOperation(cm.tgop)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EVENT_TO_HAND)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCondition(cm.excon)
c:RegisterEffect(e4)
youfu.ex_effect(c,m,e3)
end
function cm.costfilter(c)
return c:IsSetCard(0x3481) and c:IsType(TYPE_MONSTER) and not c:IsCode(m) and c:IsAbleToGraveAsCost()
......
--幽府轮转司 奈河
local m=10701051
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function c10701051.initial_effect(c)
--atkup
local e1=Effect.CreateEffect(c)
......@@ -23,10 +24,7 @@ function c10701051.initial_effect(c)
e2:SetTarget(cm.sptg)
e2:SetOperation(cm.spop)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EVENT_TO_HAND)
e3:SetCondition(cm.excon)
c:RegisterEffect(e3)
youfu.ex_effect(c,m,e2)
end
function cm.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsPreviousPosition(POS_FACEUP)
......
--幽府功曹司 城隍
local m=10701061
local cm=_G["c"..m]
function c10701061.initial_effect(c)
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--to hand
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
......@@ -28,11 +29,7 @@ function c10701061.initial_effect(c)
e3:SetTarget(cm.ntrtg)
e3:SetOperation(cm.ntrop)
c:RegisterEffect(e3)
local e31=e3:Clone()
e31:SetCode(EVENT_TO_HAND)
e31:SetProperty(EFFECT_FLAG_DELAY)
e31:SetCondition(cm.excon)
c:RegisterEffect(e31)
youfu.ex_effect(c,m,e3)
--SpecialSummon
local e4=e3:Clone()
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
......@@ -40,12 +37,7 @@ function c10701061.initial_effect(c)
e4:SetTarget(cm.sptg)
e4:SetOperation(cm.spop)
c:RegisterEffect(e4)
local e41=e4:Clone()
e41:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e41:SetCode(EVENT_TO_HAND)
e41:SetProperty(EFFECT_FLAG_DELAY)
e41:SetCondition(cm.excon)
c:RegisterEffect(e41)
youfu.ex_effect(c,m,e4)
end
--tohand
function cm.thfilter(c)
......
--幽府判官司 赏善
local m=10701071
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--special summon
local e1=Effect.CreateEffect(c)
......@@ -21,10 +22,7 @@ function cm.initial_effect(c)
e2:SetTarget(cm.stg)
e2:SetOperation(cm.sop)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EVENT_TO_HAND)
e3:SetCondition(cm.excon)
c:RegisterEffect(e3)
youfu.ex_effect(c,m,e2)
end
--SpecialSummon
function cm.ntfilter(c)
......
--幽府判官司 阴律
local m=10701081
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--set
local e1=Effect.CreateEffect(c)
......@@ -27,11 +28,7 @@ function cm.initial_effect(c)
e3:SetTarget(cm.sptg)
e3:SetOperation(cm.spop)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EVENT_TO_HAND)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCondition(cm.excon)
c:RegisterEffect(e4)
youfu.ex_effect(c,m,e3)
end
--set
function cm.setcon(e,tp,eg,ep,ev,re,r,rp)
......
--幽府判官司 罚恶
local m=10701091
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--special summon
local e2=Effect.CreateEffect(c)
......@@ -35,11 +36,7 @@ function cm.initial_effect(c)
e4:SetProperty(EFFECT_FLAG_DELAY+EFFECT_FLAG_DAMAGE_STEP)
e4:SetCondition(cm.tgcon2)
c:RegisterEffect(e4)
local e5=e3:Clone()
e5:SetCode(EVENT_TO_HAND)
e5:SetProperty(EFFECT_FLAG_DELAY)
e5:SetCondition(cm.excon)
c:RegisterEffect(e5)
youfu.ex_effect(c,m,e3)
end
--SpecialSummon
function cm.spfilter1(c,tp)
......
--幽府阴阳司 无常黑白
local m=10701121
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--nontuner
local e0=Effect.CreateEffect(c)
......@@ -30,17 +31,12 @@ function cm.initial_effect(c)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_LEAVE_FIELD)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetCountLimit(1,m+1)
e3:SetCountLimit(1,m)
e3:SetCondition(cm.condition)
e3:SetTarget(cm.target)
e3:SetOperation(cm.operation)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCode(EVENT_TO_HAND)
e4:SetProperty(EFFECT_FLAG_DELAY)
e4:SetCondition(cm.excon)
c:RegisterEffect(e4)
youfu.ex_effect(c,m,e3)
end
function cm.tnval(e,c)
return e:GetHandler():IsControler(c:GetControler()) and c:IsRace(RACE_ZOMBIE)
......@@ -51,23 +47,20 @@ function cm.discost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(e:GetHandler(),REASON_COST)
end
function cm.discon(e,tp,eg,ep,ev,re,r,rp)
local loc=Duel.GetChainInfo(0,CHAININFO_TRIGGERING_LOCATION)
local tc=re:GetHandler()
return tc:IsControler(1-tp) and loc==LOCATION_GRAVE and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainDisablable(ev)
return ep==1-tp and re:GetActivateLocation()==LOCATION_GRAVE and re:IsActiveType(TYPE_MONSTER) and Duel.IsChainNegatable(ev)
end
function cm.distg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 end
Duel.SetOperationInfo(0,CATEGORY_DISABLE,eg,1,0,0)
end
function cm.disop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and Duel.NegateEffect(ev) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 then
local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(cm.spfilter),tp,LOCATION_GRAVE,0,nil,e,tp)
if Duel.NegateEffect(ev) and Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 then
local sg=Duel.GetMatchingGroup(aux.NecroValleyFilter(cm.spfilter),tp,LOCATION_GRAVE,LOCATION_GRAVE,nil,e,tp)
if sg:GetCount() and Duel.SelectYesNo(tp,aux.Stringid(m,1)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local sc=sg:Select(tp,1,1,nil):GetFirst()
Duel.SpecialSummon(sc,0,tp,tp,false,false,POS_FACEUP)
local tc=sg:Select(tp,1,1,nil):GetFirst()
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
end
end
local e1=Effect.CreateEffect(c)
......@@ -114,19 +107,30 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.DiscardHand(1-tp,Card.IsDiscardable,1,1,REASON_EFFECT+REASON_DISCARD)>0 then
Duel.Hint(HINT_SELECTMSG,1-tp,HINTMSG_SPSUMMON)
local tc=Duel.SelectMatchingCard(1-tp,aux.NecroValleyFilter(cm.sppfilter),1-tp,LOCATION_GRAVE,0,1,1,nil,e,1-tp):GetFirst()
Duel.SpecialSummon(tc,0,1-tp,tp,false,false,POS_FACEUP)
Duel.SpecialSummonStep(tc,0,1-tp,tp,false,false,POS_FACEUP)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DISABLE)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_DISABLE_EFFECT)
e2:SetValue(RESET_TURN_SET)
e2:SetReset(RESET_EVENT+RESETS_STANDARD)
tc:RegisterEffect(e2)
local fid=c:GetFieldID()
tc:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD,0,1,fid)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCountLimit(1)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetLabel(fid)
e1:SetLabelObject(tc)
e1:SetCondition(cm.tdcon)
e1:SetOperation(cm.tdop)
Duel.RegisterEffect(e1,tp)
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_PHASE+PHASE_END)
e4:SetCountLimit(1)
e4:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e4:SetLabel(fid)
e4:SetLabelObject(tc)
e4:SetCondition(cm.tdcon)
e4:SetOperation(cm.tdop)
Duel.RegisterEffect(e4,tp)
--cannot be material
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
......@@ -134,10 +138,11 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
e3:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
e3:SetReset(RESET_EVENT+RESETS_STANDARD)
e3:SetValue(1)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL)
c:RegisterEffect(e4)
tc:RegisterEffect(e3)
local e5=e3:Clone()
e5:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL)
tc:RegisterEffect(e5)
Duel.SpecialSummonComplete()
end
elseif op==1 then
local ct=Duel.GetFieldGroupCount(1-tp,0,LOCATION_HAND)
......
--幽府速报司 包公
local m=10701131
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--tograve
local e1=Effect.CreateEffect(c)
......@@ -26,12 +27,7 @@ function cm.initial_effect(c)
e3:SetTarget(cm.settg)
e3:SetOperation(cm.setop)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCode(EVENT_TO_HAND)
e4:SetProperty(EFFECT_FLAG_DELAY)
e4:SetCondition(cm.excon)
c:RegisterEffect(e4)
youfu.ex_effect(c,m,e3)
end
function cm.cfilter(c,tp)
return c:IsPreviousLocation(LOCATION_HAND+LOCATION_ONFIELD) and c:IsPreviousControler(tp)
......
......@@ -17,13 +17,21 @@ function cm.initial_effect(c)
e2:SetCountLimit(1,m)
e2:SetCondition(cm.handcon)
c:RegisterEffect(e2)
--to grave
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e4:SetCode(EVENT_TO_GRAVE)
e4:SetCondition(cm.regcon)
e4:SetOperation(cm.regop)
c:RegisterEffect(e4)
--draw
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetCategory(CATEGORY_DRAW)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e3:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
e3:SetCode(EVENT_TO_GRAVE)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetRange(LOCATION_GRAVE)
e3:SetCountLimit(1,m+1)
e3:SetCondition(cm.thcon)
e3:SetCost(aux.bfgcost)
......@@ -45,30 +53,54 @@ function cm.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_DECK)
end
function cm.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISCARD)
local tc=Duel.SelectMatchingCard(tp,cm.cfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp):GetFirst()
if tc and Duel.SendtoGrave(tc,REASON_DISCARD+REASON_EFFECT)>0 and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_DECK,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
if tc:IsSetCard(0x3481) and tc:IsType(TYPE_TRAP) and tc:IsLocation(LOCATION_GRAVE) then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetTargetRange(0,1)
e1:SetValue(cm.aclimit)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
end
end
function cm.aclimit(e,re,tp)
local rc=re:GetHandler()
return re:IsActiveType(TYPE_MONSTER) and c:IsRace(RACE_ZOMBIE)
end
--hand
function cm.handcon(e)
return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_ONFIELD,0)==0
end
--tohand
function cm.regcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_HAND+LOCATION_DECK) and re:GetHandler():IsSetCard(0x3481)
end
function cm.regop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
c:RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
end
function cm.thcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsReason(REASON_EFFECT) and re:GetHandler():IsSetCard(0x3481)
return e:GetHandler():GetFlagEffect(m)>0
end
function cm.thfilter(c)
return c:IsRace(RACE_ZOMBIE) and c:IsAbleToHand()
end
function cm.tgfilter(c)
return c:IsSetCard(0x39) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave()
return c:IsSetCard(0x3481) and c:IsType(TYPE_MONSTER) and c:IsAbleToGrave()
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
and Duel.IsExistingMatchingCard(cm.tgfilter,tp,LOCATION_DECK,0,1,nil) end
and Duel.IsExistingMatchingCard(cm.tgfilter,tp,LOCATION_DECK,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK)
end
......
......@@ -13,8 +13,9 @@ function cm.initial_effect(c)
--SpecialSummon
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_SEARCH+CATEGORY_TOHAND)
e2:SetType(EFFECT_TYPE_ACTIVATE)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_HAND)
e2:SetCountLimit(1,m)
e2:SetCost(cm.spcost)
e2:SetTarget(cm.sptg)
e2:SetOperation(cm.spop)
......@@ -22,16 +23,16 @@ function cm.initial_effect(c)
end
--tograve
function cm.tgfilter(c)
return c:IsType(TYPE_MONSTER) and c:IsAbleToGrave()
return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x3481) and c:IsAbleToGrave()
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.GetMatchingGroup(Card.IsSetCard,tp,LOCATION_GRAVE,0,nil,0x3481)
if chk==0 then return Duel.IsExistingMatchingCard(cm.tgfilter,tp,LOCATION_DECK,0,1,nil)
and #g>0 end
local count=0
if g:Filter(Card.IsType,nil,TYPE_MONSTER) then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_SPELL) then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_TRAP) then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_MONSTER):GetCount()>0 then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_SPELL):GetCount()>0 then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_TRAP):GetCount()>0 then count=count+1 end
local dam=count*444
Duel.SetTargetPlayer(1-tp)
Duel.SetTargetParam(dam)
......@@ -45,9 +46,9 @@ function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local hg=Duel.SelectMatchingCard(tp,cm.tgfilter,tp,LOCATION_DECK,0,1,1,nil)
if hg:GetCount()>0 and Duel.SendtoGrave(hg,REASON_EFFECT)>0 then
local count=0
if g:Filter(Card.IsType,nil,TYPE_MONSTER) then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_SPELL) then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_TRAP) then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_MONSTER):GetCount()>0 then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_SPELL):GetCount()>0 then count=count+1 end
if g:Filter(Card.IsType,nil,TYPE_TRAP):GetCount()>0 then count=count+1 end
Duel.Damage(p,count*444,REASON_EFFECT)
end
end
......
......@@ -8,6 +8,7 @@ function cm.initial_effect(c)
e4:SetCategory(CATEGORY_DISABLE+CATEGORY_TODECK)
e4:SetType(EFFECT_TYPE_ACTIVATE)
e4:SetCode(EVENT_TO_GRAVE)
--e4:SetProperty(EFFECT_FLAG_DELAY)
e4:SetCountLimit(1,m)
e4:SetCondition(cm.condition)
e4:SetTarget(cm.target)
......@@ -26,25 +27,25 @@ function cm.initial_effect(c)
e2:SetOperation(cm.dcop)
c:RegisterEffect(e2)
end
function cm.cfilter(c)
return c:IsSetCard(0x3481) and c:IsType(TYPE_MONSTER) and c:IsReason(REASON_EFFECT)
function cm.cfilter(c,tp)
return c:IsPreviousControler(tp) and c:IsSetCard(0x3481) and c:IsType(TYPE_MONSTER) and c:IsReason(REASON_EFFECT) and c:IsPreviousLocation(LOCATION_MZONE)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.cfilter,1,nil)
return eg:IsExists(cm.cfilter,1,nil,tp)
end
function cm.tdfilter(c)
return c:IsSetCard(0x3481) and c:IsType(TYPE_MONSTER) and c:IsAbleToDeck()
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
local a1=Duel.IsExistingMatchingCard(aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,nil)
local a2=Duel.IsExistingMatchingCard(cm.tdfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,nil)
local a2=Duel.IsExistingMatchingCard(cm.tdfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,nil)
if chk==0 then return a1 or a2 end
Duel.SetOperationInfo(0,CATEGORY_DISABLE,nil,1,tp,LOCATION_ONFIELD)
Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,2,0,0)
end
function cm.disop(e,tp,eg,ep,ev,re,r,rp)
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local a1=Duel.IsExistingMatchingCard(aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,nil)
local a2=Duel.IsExistingMatchingCard(cm.tdfilter,tp,LOCATION_MZONE,0,1,nil) and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,nil)
local a2=Duel.IsExistingMatchingCard(cm.tdfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD+LOCATION_HAND,1,nil)
local op=-1
if a1 and a2 then op=Duel.SelectOption(tp,aux.Stringid(m,0),aux.Stringid(m,1))
elseif a1 then op=Duel.SelectOption(tp,aux.Stringid(m,0))
......@@ -53,7 +54,7 @@ function cm.disop(e,tp,eg,ep,ev,re,r,rp)
if op==0 then
local c=e:GetHandler()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local g=Duel.SelectMatchingCard(tp,aux.NegateAnyFilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil)
local g=Duel.SelectMatchingCard(tp,aux.NegateAnyFilter,tp,0,LOCATION_ONFIELD,1,1,nil)
if #g==0 then return end
Duel.HintSelection(g)
local tc=g:GetFirst()
......@@ -71,14 +72,14 @@ function cm.disop(e,tp,eg,ep,ev,re,r,rp)
tc:RegisterEffect(e2)
end
if op==1 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DISABLE)
local sg=Duel.SelectMatchingCard(tp,cm.tdfilter,tp,LOCATION_MZONE,0,1,1,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local sg=Duel.SelectMatchingCard(tp,cm.tdfilter,tp,LOCATION_GRAVE,0,1,1,nil)
local b1=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_HAND,nil)
local b2=Duel.GetMatchingGroup(Card.IsAbleToDeck,tp,0,LOCATION_ONFIELD,nil)
local opp=-1
if #b1>0 and #b2>0 then op=Duel.SelectOption(tp,aux.Stringid(m,2),aux.Stringid(m,3))
elseif #b1>0 then op=Duel.SelectOption(tp,aux.Stringid(m,2))
elseif #b2>0 then op=Duel.SelectOption(tp,aux.Stringid(m,3))+1
if #b1>0 and #b2>0 then opp=Duel.SelectOption(tp,aux.Stringid(m,2),aux.Stringid(m,3))
elseif #b1>0 then opp=Duel.SelectOption(tp,aux.Stringid(m,2))
elseif #b2>0 then opp=Duel.SelectOption(tp,aux.Stringid(m,3))+1
else return end
if opp==0 then
local sg1=b1:RandomSelect(tp,1)
......
......@@ -28,9 +28,9 @@ function cm.tdfilter(c)
return c:IsSetCard(0x3481) and c:IsAbleToDeck()
end
function cm.spfilter(c,e,tp)
local g=Duel.GetMatchingGroup(cm.tdfilter,tp,LOCATION_GRAVE,0,nil):Filter(aux.dncheck,nil)
local g=Duel.GetMatchingGroup(cm.tdfilter,tp,LOCATION_GRAVE,0,nil)
return c:IsType(TYPE_LINK) and c:IsSetCard(0x3481) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_LINK,tp,false,false)
and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0 and not c:IsPublic() and g:GetCount()>=c:GetLink()
and Duel.GetLocationCountFromEx(tp,tp,nil,c)>0 and g:GetCount()>=c:GetLink() and aux.dncheck(g)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_EXTRA,0,1,nil,e,tp) end
......@@ -38,16 +38,15 @@ function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
local g=Duel.SelectMatchingCard(tp,cm.spfilter,tp,LOCATION_EXTRA,0,1,1,nil,e,tp)
e:SetLabelObject(g:GetFirst())
Duel.ConfirmCards(1-tp,g)
Duel.ShuffleExtra(tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,g:GetFirst():GetLink(),tp,LOCATION_GRAVE)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetLabelObject()
local g=Duel.GetMatchingGroup(cm.tdfilter,tp,LOCATION_GRAVE,0,nil):Filter(aux.dncheck,nil)
if g:GetCount()>=tc:GetLink() then
local g=Duel.GetMatchingGroup(cm.tdfilter,tp,LOCATION_GRAVE,0,nil)
if g:GetClassCount(Card.GetCode)>=tc:GetLink() then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local dg=g:Select(tp,tc:GetLink(),tc:GetLink(),nil)
local dg=g:SelectSubGroup(tp,aux.dncheck,false,tc:GetLink(),tc:GetLink())
if Duel.SendtoDeck(dg,nil,2,REASON_EFFECT)>0 then
Duel.SpecialSummon(tc,SUMMON_TYPE_LINK,tp,tp,false,false,POS_FACEUP)
end
......
......@@ -53,6 +53,10 @@ end
function cm.tgfilter(c)
return c:IsSetCard(0x3481) and c:IsLevelBelow(4) and c:IsAbleToGrave()
end
function cm.tgtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,tp,LOCATION_DECK)
end
function cm.tgop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,cm.tgfilter,tp,LOCATION_DECK,0,1,1,nil)
......
--幽府阴鬼使 鬼王
local m=10701221
local cm=_G["c"..m]
xpcall(function() require("expansions/script/c51300039") end,function() require("script/c51300039") end)
function cm.initial_effect(c)
--lv up
local e1=Effect.CreateEffect(c)
......@@ -14,10 +15,23 @@ function cm.initial_effect(c)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e2)
c:RegisterEffect(e2)
--tograve and SpecialSummon
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(m,1))
e3:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW)
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_LEAVE_FIELD)
e3:SetProperty(EFFECT_FLAG_DELAY)
e3:SetCountLimit(1,m+1)
e3:SetCondition(cm.thcon)
e3:SetTarget(cm.thtg)
e3:SetOperation(cm.thop)
c:RegisterEffect(e3)
youfu.ex_effect(c,m,e3)
end
function cm.costfilter(c)
return c:IsFaceup() and c:GetLevel()>0 and c:IsSetCard(0x3481)
return c:IsSetCard(0x3481) and c:IsAbleToGraveAsCost()
end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.costfilter,tp,LOCATION_DECK,0,1,nil) end
......@@ -44,5 +58,32 @@ function cm.condition(e)
return not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NECRO_VALLEY)
and not Duel.IsPlayerAffectedByEffect(1-tp,EFFECT_NECRO_VALLEY)
end
--tohand
function cm.thcon(e,tp,eg,ep,ev,re,r,rp)
local tn=Duel.GetTurnPlayer()
local ph=Duel.GetCurrentPhase()
return tn~=tp and (ph==PHASE_MAIN1 or (ph>=PHASE_BATTLE_START and ph<=PHASE_BATTLE)) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) and e:GetHandler():IsPreviousPosition(POS_FACEUP)
end
function cm.thfilter(c)
return c:IsRace(RACE_ZOMBIE) and c:IsAbleToHand()
end
function cm.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.thfilter,tp,LOCATION_GRAVE,LOCATION_GRAVE,1,nil)
and Duel.IsPlayerCanDraw(tp,1) end
Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(1)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
end
function cm.thop(e,tp,eg,ep,ev,re,r,rp)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
local g=Duel.SelectMatchingCard(tp,aux.NecroValleyFilter(cm.thfilter),tp,LOCATION_GRAVE,LOCATION_GRAVE,1,1,nil)
if g:GetCount()>0 and Duel.SendtoHand(g,nil,REASON_EFFECT) then
Duel.ConfirmCards(1-tp,g)
Duel.BreakEffect()
Duel.Draw(p,d,REASON_EFFECT)
end
end
......@@ -137,4 +137,12 @@ function cm.setop(e,tp,eg,ep,ev,re,r,rp)
Duel.SetLP(1-tp,2000)
local turnp=Duel.GetTurnPlayer()
Duel.SkipPhase(turnp,PHASE_END,RESET_PHASE+PHASE_DRAW,1)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetCode(EFFECT_CANNOT_ACTIVATE)
e2:SetTargetRange(1,1)
e2:SetValue(1)
e2:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e2,tp)
end
\ No newline at end of file
......@@ -77,6 +77,7 @@ function c12852003.desop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local col=aux.GetColumn(e:GetHandler())
local tc=e:GetLabelObject():GetFirst()
if not tc then return end
if c:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
end
......
......@@ -122,6 +122,7 @@ function c12852004.desop1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local col=aux.GetColumn(e:GetHandler())
local tc=e:GetLabelObject():GetFirst()
if not tc then return end
if c:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
end
......
......@@ -69,6 +69,7 @@ function c12852005.desop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local col=aux.GetColumn(e:GetHandler())
local tc=e:GetLabelObject():GetFirst()
if not tc then return end
if c:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
end
......
......@@ -77,6 +77,7 @@ function c12852006.desop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local col=aux.GetColumn(e:GetHandler())
local tc=e:GetLabelObject():GetFirst()
if not tc then return end
if c:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
end
......
......@@ -68,6 +68,7 @@ function c12852007.desop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local col=aux.GetColumn(e:GetHandler())
local tc=e:GetLabelObject():GetFirst()
if not tc then return end
if c:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
end
......
......@@ -78,7 +78,7 @@ function cm.con2(e)
return not Duel.IsExistingMatchingCard(cm.filter2,e:GetHandlerPlayer(),LOCATION_MZONE,0,1,nil)
end
function cm.rmtarget(e,c)
return not c:IsLocation(0x80) and not c:IsSetCard(0x6a71)
return not c:IsSetCard(0x6a71)
end
function cm.checktg(e,c)
return not c:IsPublic()
......
......@@ -202,5 +202,36 @@ function huiye.tdop(e,tp,eg,ep,ev,re,r,rp)
end
end
youfu=youfu or {}
-----------------------------额外触发效果
function youfu.ex_effect(c,m,e1)
local e4=e1:Clone()
e4:SetCode(EVENT_TO_HAND)
e4:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e4:SetCondition(youfu.excon1)
c:RegisterEffect(e4)
local e2=e4:Clone()
e2:SetCode(EVENT_TO_GRAVE)
e2:SetCondition(youfu.excon2)
c:RegisterEffect(e2)
end
function youfu.excon1(e,tp,eg,ep,ev,re,r,rp)
return re and re:GetHandler():IsCode(10701101,10701141)
end
function youfu.excon2(e,tp,eg,ep,ev,re,r,rp)
return re and re:GetHandler():IsCode(10701211)
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