Commit 0939e433 authored by 未闻皂名's avatar 未闻皂名

2025/11/21 新增:死灵女仆诡计

parent 6447a505
Pipeline #41737 failed with stages
in 9 minutes and 27 seconds
No preview for this file type
......@@ -154,6 +154,14 @@ end
function RushDuel.AttachCannotTribute(e, card, value, desc, reset, forced)
return RushDuel.CreateSingleEffect(e, desc, card, EFFECT_UNRELEASABLE_SUM, value, reset, forced)
end
-- 赋予: 不能作为融合术召唤的素材
function RushDuel.AttachCannotBeFusionMaterial(e, card, value, desc, reset, forced)
return RushDuel.CreateSingleEffect(e, desc, card, EFFECT_CANNOT_BE_FUSION_MATERIAL, value, reset, forced)
end
-- 赋予: 不能作为仪式术召唤的素材
function RushDuel.AttachCannotBeRitualMaterial(e, card, value, desc, reset, forced)
return RushDuel.CreateSingleEffect(e, desc, card, EFFECT_CANNOT_BE_RITUAL_MATERIAL, value, reset, forced)
end
-- 赋予: 不能发动效果
function RushDuel.AttachCannotTrigger(e, card, desc, reset, forced)
return RushDuel.CreateSingleEffect(e, desc, card, EFFECT_CANNOT_TRIGGER, nil, reset, forced)
......
......@@ -30,6 +30,7 @@ EFFECT_CANNOT_TO_HAND_EFFECT = 120274001 -- 不会因效果回到手卡
EFFECT_CANNOT_TO_DECK_EFFECT = 120274002 -- 不会因效果回到卡组·额外卡组
EFFECT_CANNOT_CHANGE_POSITION_EFFECT = 120277011 -- 不会因效果改变表示形式
EFFECT_NO_COST_SEND_HAND_TO_GRAVE = 120294004 -- 不需要支付"把手卡送去墓地"的代价
EFFECT_CANNOT_BE_RITUAL_MATERIAL = 120294063 -- 不能作为仪式术召唤的素材
-- 标记
FLAG_SUMMON_TURN = 120000011 -- 召唤·特殊召唤的回合被盖放, 不再符合召唤·特殊召唤的回合的条件
......
......@@ -102,6 +102,24 @@ function RushDuel.RitualCheckAdditionalAttack(c, rc)
return x
end
end
-- 仪式召唤 - 可以作为仪式素材
function RushDuel.IsCanBeRitualMaterial(c, rc)
if not c:IsCanBeRitualMaterial(rc) then
return false
end
local effects = {c:IsHasEffect(EFFECT_CANNOT_BE_RITUAL_MATERIAL)}
for i, e in ipairs(effects) do
local value = e:GetValue()
if value == 1 then
return false
elseif type(value) == "function" and value(e, c, SUMMON_TYPE_RITUAL) then
return false
end
end
return true
end
-- 仪式召唤 - 素材过滤
function RushDuel.RitualMaterialFilter(c, type, filter, e)
return RushDuel.RitualTypeFilter(c, type) and (not filter or filter(c)) and (not e or not c:IsImmuneToEffect(e))
......@@ -118,7 +136,7 @@ function RushDuel.RitualSpecialSummonFilter(c, e, tp, type, mat, f, gc, chkf, fi
end
-- 仪式召唤 - 获取可用的仪式素材
function RushDuel.GetRitualMaterial(tp, rc, type, mat)
local mg = mat:Filter(Card.IsCanBeRitualMaterial, rc, rc)
local mg = mat:Filter(RushDuel.IsCanBeRitualMaterial, rc, rc)
if rc.mat_filter then
mg = mg:Filter(rc.mat_filter, rc, tp)
end
......
local cm,m=GetID()
cm.name="死灵女仆诡计"
function cm.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_POSITION)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(cm.condition)
e1:SetCost(cm.cost)
e1:SetTarget(cm.target)
e1:SetOperation(cm.activate)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e2)
end
--Activate
function cm.confilter(c,tp)
return c:GetSummonPlayer()==tp
end
function cm.costfilter(c)
return c:IsFaceup() and c:IsRace(RACE_ZOMBIE) and c:IsAbleToGraveAsCost()
end
function cm.filter(c,e,tp)
return c:IsAttackPos() and RD.IsCanChangePosition(c,e,tp,REASON_EFFECT)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.confilter,1,nil,1-tp)
end
cm.cost=RD.CostSendMZoneToGrave(cm.costfilter,1,1)
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,0,LOCATION_MZONE,1,nil,e,tp) end
local g=Duel.GetMatchingGroup(cm.filter,tp,0,LOCATION_MZONE,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_POSITION,g,1,0,0)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local filter=RD.Filter(cm.filter,e,tp)
RD.SelectAndDoAction(HINTMSG_POSCHANGE,filter,tp,0,LOCATION_MZONE,1,3,nil,function(g)
RD.ChangePosition(g,e,tp,REASON_EFFECT,POS_FACEUP_DEFENSE)
g:ForEach(function(tc)
local e1=RD.AttachCannotTribute(e,tc,cm.sumlimit,aux.Stringid(m,1),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
e1:SetLabel(tp)
local e2=RD.AttachCannotBeRitualMaterial(e,tc,cm.ritlimit,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
e2:SetLabel(tp)
end)
end)
end
function cm.sumlimit(e,c)
return e:GetHandlerPlayer()~=e:GetLabel()
end
function cm.ritlimit(e,c,sumtype)
return e:GetHandlerPlayer()~=e:GetLabel() and sumtype==SUMMON_TYPE_RITUAL
end
\ No newline at end of file
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