Commit 31362cc7 authored by 未闻皂名's avatar 未闻皂名

2024/12/23 接触融合术修改

parent 6384ba05
Pipeline #32021 passed with stages
in 9 minutes and 58 seconds
......@@ -252,6 +252,61 @@ function RushDuel.GetFusionMaterialCodes(card)
return card.material_codes or {}
end
-- 可以进行接触融合术
function RushDuel.EnableContactFusion(card, desc)
local e = Effect.CreateEffect(card)
e:SetDescription(desc)
e:SetType(EFFECT_TYPE_FIELD)
e:SetCode(EFFECT_SPSUMMON_PROC)
e:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE)
e:SetRange(LOCATION_EXTRA)
e:SetCondition(RushDuel.ContactFusionCondition)
e:SetTarget(RushDuel.ContactFusionTarget)
e:SetOperation(RushDuel.ContactFusionOperation)
e:SetValue(SUMMON_TYPE_FUSION)
card:RegisterEffect(e)
return e
end
-- 接触融合术: 素材过滤
function RushDuel.ContactFusionMaterialFilter(c, fc)
return c:IsFaceup() and c:IsCanBeFusionMaterial(fc) and c:IsAbleToDeckOrExtraAsCost()
end
-- 接触融合术: 条件
function RushDuel.ContactFusionCondition(e, c)
if c == nil then
return true
end
if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then
return false
end
local tp = c:GetControler()
local mg = Duel.GetMatchingGroup(RushDuel.ContactFusionMaterialFilter, tp, LOCATION_ONFIELD, 0, c, c)
return c:CheckFusionMaterial(mg, nil, tp)
end
-- 接触融合术: 对象
function RushDuel.ContactFusionTarget(e, tp, eg, ep, ev, re, r, rp, chk, c)
local mg = Duel.GetMatchingGroup(RushDuel.ContactFusionMaterialFilter, tp, LOCATION_ONFIELD, 0, c, c)
local g = Duel.SelectFusionMaterial(tp, c, mg, nil, tp)
if #g > 0 then
g:KeepAlive()
e:SetLabelObject(g)
return true
else
return false
end
end
-- 接触融合术: 处理
function RushDuel.ContactFusionOperation(e, tp, eg, ep, ev, re, r, rp, c)
local g = e:GetLabelObject()
c:SetMaterial(g)
local cg = g:Filter(Card.IsFacedown, nil)
if #cg > 0 then
Duel.ConfirmCards(1 - c:GetControler(), cg)
end
Duel.SendtoDeck(g, nil, SEQ_DECKSHUFFLE, REASON_MATERIAL + REASON_COST)
g:DeleteGroup()
end
-- 创建效果: 融合术/结合 召唤
function RushDuel.CreateFusionEffect(card, matfilter, spfilter, exfilter, s_range, o_range, mat_check, mat_move, target_action, operation_action, limit_action, including_self, self_leave)
local self_range = s_range or 0
......@@ -474,18 +529,6 @@ function RushDuel.FusionToDeckBottom(tp, mat)
Auxiliary.PlaceCardsOnDeckBottom(tp, mat, REASON_EFFECT + REASON_MATERIAL + REASON_FUSION)
end
-- 可以进行接触融合术
function RushDuel.EnableContactFusion(card, desc)
local e = aux.AddContactFusionProcedure(card, RushDuel.ContactFusionMaterialFilter, LOCATION_ONFIELD, 0, aux.tdcfop(card))
e:SetDescription(desc)
e:SetValue(SUMMON_TYPE_FUSION)
return e
end
-- 接触融合术: 素材过滤
function RushDuel.ContactFusionMaterialFilter(card)
return card:IsFaceup() and card:IsAbleToDeckOrExtraAsCost()
end
-- 宣言融合素材的卡名
function RushDuel.AnnounceFusionMaterialCode(player, card)
local legends = card.legend_material_codes or {}
......
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