Commit c8adf691 authored by 未闻皂名's avatar 未闻皂名

2022/11/26 部分先行卡移动到正式卡,控制权相关调整(抗性,贯通)

parent 3e00c4d7
No preview for this file type
No preview for this file type
......@@ -44,7 +44,9 @@ function RushDuel.AttachBattleIndes(e, card, value, desc, reset, forced)
end
-- 赋予: 效果破坏抗性
function RushDuel.AttachEffectIndes(e, card, value, desc, reset, forced)
return RushDuel.CreateSingleEffect(e, desc, card, EFFECT_INDESTRUCTABLE_EFFECT, value, reset, forced)
local attach = RushDuel.CreateSingleEffect(e, desc, card, EFFECT_INDESTRUCTABLE_EFFECT, value, reset, forced)
attach:SetLabel(e:GetHandlerPlayer())
return attach
end
-- 赋予: 战斗, 效果破坏抗性 (有次数限制)
function RushDuel.AttachIndesCount(e, card, count, value, desc, reset, forced)
......
......@@ -27,6 +27,17 @@ function RushDuel._private_check_effect_values(value, values, decode)
end
return false
end
-- 内部方法:检测效果破坏抗性的控制权
function RushDuel._private_swap_effect_indes(value, swap)
if swap then
local check = value(nil)
return function()
return check[1], check[3], check[2]
end
else
return value
end
end
-- 条件: 卡片是否处于"极大模式"
function RushDuel.IsMaximumMode(card)
......@@ -154,9 +165,11 @@ function RushDuel.IsCanAttachBattleIndes(card, value)
return true
end
-- 条件: 可否赋予效果 - 效果破坏抗性
function RushDuel.IsCanAttachEffectIndes(card, value)
function RushDuel.IsCanAttachEffectIndes(card, player, value)
local swap = card:GetControler() ~= player
local check = RushDuel._private_swap_effect_indes(value, swap)
local values = RushDuel.GetEffectValues(card, EFFECT_INDESTRUCTABLE_EFFECT)
return RushDuel._private_check_effect_values(value, values, function(val)
return RushDuel._private_check_effect_values(check, values, function(val)
if val == 1 then
return {true, TYPE_MONSTER + TYPE_SPELL + TYPE_TRAP, TYPE_MONSTER + TYPE_SPELL + TYPE_TRAP}
else
......
......@@ -20,6 +20,9 @@ function RushDuel.ValueEffectIndesType(self_type, opponent_type, ignore)
return ignore or false, s_type or 0, o_type or 0
end
local tp = e:GetHandlerPlayer()
if e:GetLabel() ~= nil then
tp = e:GetLabel()
end
if rp == tp then
return s_type ~= 0 and re:IsActiveType(s_type)
else
......
......@@ -14,18 +14,19 @@ function cm.initial_effect(c)
end
--Indes Effect
cm.indval=RD.ValueEffectIndesType(0,TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP)
function cm.filter(c)
return RD.IsCanAttachEffectIndes(c,cm.indval)
function cm.filter(c,tp)
return RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
function cm.costfilter(c)
return c:IsRace(RACE_SPELLCASTER+RACE_DRAGON) and c:IsAbleToGraveAsCost()
end
cm.cost=RD.CostSendHandToGrave(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,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(aux.Stringid(m,1),cm.filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
local filter=RD.Filter(cm.filter,tp)
RD.SelectAndDoAction(aux.Stringid(m,1),filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
RD.AttachEffectIndes(e,g:GetFirst(),cm.indval,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end)
end
\ No newline at end of file
......@@ -19,15 +19,16 @@ end
function cm.costcheck(g)
return g:GetClassCount(Card.GetRace)==1
end
function cm.filter(c)
return c:IsFaceup() and c:IsLevelBelow(8) and RD.IsCanAttachEffectIndes(c,cm.indval)
function cm.filter(c,tp)
return c:IsFaceup() and c:IsLevelBelow(8) and RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
cm.cost=RD.CostSendGraveSubToDeck(cm.costfilter,cm.costcheck,2,2)
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(aux.Stringid(m,1),cm.filter,tp,LOCATION_MZONE,0,1,2,nil,function(g)
local filter=RD.Filter(cm.filter,tp)
RD.SelectAndDoAction(aux.Stringid(m,1),filter,tp,LOCATION_MZONE,0,1,2,nil,function(g)
g:ForEach(function(tc)
RD.AttachEffectIndes(e,tc,cm.indval,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end)
......
......@@ -19,7 +19,7 @@ end
--Indes
cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return RD.IsCanAttachEffectIndes(e:GetHandler(),cm.indval)
return RD.IsCanAttachEffectIndes(e:GetHandler(),tp,cm.indval)
end
cm.cost=RD.CostSendDeckTopToGrave(1)
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -16,17 +16,18 @@ cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.confilter(c)
return c:IsFaceup() and c:IsRace(RACE_WARRIOR+RACE_FAIRY+RACE_BEAST+RACE_WINDBEAST+RACE_REPTILE)
end
function cm.filter(c)
return c:IsFaceup() and RD.IsCanAttachEffectIndes(c,cm.indval)
function cm.filter(c,tp)
return c:IsFaceup() and RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsExistingMatchingCard(cm.confilter,tp,LOCATION_MZONE,0,1,nil)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(aux.Stringid(m,1),cm.filter,tp,LOCATION_MZONE,0,1,2,nil,function(g)
local filter=RD.Filter(cm.filter,tp)
RD.SelectAndDoAction(aux.Stringid(m,1),filter,tp,LOCATION_MZONE,0,1,2,nil,function(g)
g:ForEach(function(tc)
RD.AttachEffectIndes(e,tc,cm.indval,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end)
......
......@@ -14,15 +14,16 @@ function cm.initial_effect(c)
end
--Indes
cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.filter(c)
return c:IsFaceup() and c:IsRace(RACE_GALAXY) and RD.IsCanAttachEffectIndes(c,cm.indval)
function cm.filter(c,tp)
return c:IsFaceup() and c:IsRace(RACE_GALAXY) and RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
cm.cost=RD.CostSendHandToGrave(Card.IsAbleToGraveAsCost,1,1)
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(aux.Stringid(m,1),cm.filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
local filter=RD.Filter(cm.filter,tp)
RD.SelectAndDoAction(aux.Stringid(m,1),filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
RD.AttachEffectIndes(e,g:GetFirst(),cm.indval,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end)
end
\ No newline at end of file
......@@ -19,9 +19,9 @@ cm.indval=RD.ValueEffectIndesType(0,TYPE_MONSTER+TYPE_SPELL+TYPE_TRAP)
function cm.confilter(c,tp)
return c:GetSummonPlayer()==tp
end
function cm.filter(c)
function cm.filter(c,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_SPELLCASTER)
and RD.IsCanAttachEffectIndes(c,cm.indval)
and RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
function cm.exfilter(c)
return c:IsCode(list[1])
......@@ -30,12 +30,12 @@ function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(cm.confilter,1,nil,1-tp)
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
local tc=eg:GetFirst()
Duel.SetTargetCard(tc)
end
function cm.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_MZONE,0,nil)
local g=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_MZONE,0,nil,tp)
if g:GetCount()>0 then
g:ForEach(function(tc)
RD.AttachEffectIndes(e,tc,cm.indval,aux.Stringid(m,1),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
......
......@@ -16,7 +16,7 @@ end
--Indes
cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return RD.IsCanAttachEffectIndes(e:GetHandler(),cm.indval)
return RD.IsCanAttachEffectIndes(e:GetHandler(),tp,cm.indval)
end
cm.cost=RD.CostSendDeckBottomToGrave(1,function(g)
return g:GetFirst():GetRace()
......
......@@ -12,11 +12,21 @@ function cm.initial_effect(c)
c:RegisterEffect(e1)
--Pierce
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_PIERCE)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT)
e3:SetRange(LOCATION_SZONE)
e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e3:SetTarget(cm.prctg)
e3:SetLabelObject(e2)
c:RegisterEffect(e3)
end
--Activate
function cm.target(c,e,tp)
return c:IsControler(tp) and c:IsFaceup() and c:IsRace(RACE_MACHINE)
end
--Pierce
function cm.prctg(e,c)
return c==e:GetHandler():GetEquipTarget()
end
\ No newline at end of file
......@@ -14,8 +14,13 @@ function cm.initial_effect(c)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetCode(EFFECT_PIERCE)
e2:SetCondition(cm.prccon)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT)
e3:SetRange(LOCATION_SZONE)
e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e3:SetTarget(cm.prctg)
e3:SetLabelObject(e2)
c:RegisterEffect(e3)
end
--Activate
function cm.target(c,e,tp)
......@@ -29,6 +34,6 @@ function cm.upval(e,c)
return Duel.GetMatchingGroupCount(cm.upfilter,e:GetHandlerPlayer(),LOCATION_ONFIELD,0,nil)*200
end
--Pierce
function cm.prccon(e)
return e:GetHandler():GetEquipTarget():IsAttribute(ATTRIBUTE_DARK)
function cm.prctg(e,c)
return c==e:GetHandler():GetEquipTarget() and c:IsAttribute(ATTRIBUTE_DARK)
end
\ No newline at end of file
......@@ -14,9 +14,19 @@ function cm.initial_effect(c)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_EQUIP)
e2:SetCode(EFFECT_PIERCE)
c:RegisterEffect(e2)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT)
e3:SetRange(LOCATION_SZONE)
e3:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e3:SetTarget(cm.prctg)
e3:SetLabelObject(e2)
c:RegisterEffect(e3)
end
--Activate
function cm.target(c,e,tp)
return c:IsControler(tp) and c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsRace(RACE_GALAXY)
end
--Pierce
function cm.prctg(e,c)
return c==e:GetHandler():GetEquipTarget()
end
\ No newline at end of file
......@@ -14,15 +14,16 @@ function cm.initial_effect(c)
end
--Indes
cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.filter(c)
return c:IsFaceup() and c:IsLevelAbove(5) and c:IsRace(RACE_MACHINE) and RD.IsCanAttachEffectIndes(c,cm.indval)
function cm.filter(c,tp)
return c:IsFaceup() and c:IsLevelAbove(5) and c:IsRace(RACE_MACHINE) and RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
cm.cost=RD.CostSendHandToGrave(Card.IsAbleToGraveAsCost,1,1)
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(aux.Stringid(m,1),cm.filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
local filter=RD.Filter(cm.filter,tp)
RD.SelectAndDoAction(aux.Stringid(m,1),filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
local tc=g:GetFirst()
RD.AttachEffectIndes(e,tc,cm.indval,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
if tc:IsAttribute(ATTRIBUTE_LIGHT) then
......
local m=120231044
local cm=_G["c"..m]
cm.name="H·D·D"
cm.name="百神硬盘龙"
function cm.initial_effect(c)
--Draw Count
local e1=Effect.CreateEffect(c)
......
......@@ -19,18 +19,19 @@ cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.costfilter(c)
return c:IsRace(RACE_SPELLCASTER+RACE_DRAGON) and c:IsAbleToDeckOrExtraAsCost()
end
function cm.filter(c)
return c:IsFaceup() and RD.IsCanAttachEffectIndes(c,cm.indval)
function cm.filter(c,tp)
return c:IsFaceup() and RD.IsCanAttachEffectIndes(c,tp,cm.indval)
end
function cm.setfilter(c)
return c:IsCode(list[1]) and c:IsSSetable()
end
cm.cost=RD.CostSendGraveToDeck(cm.costfilter,4,4)
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_MZONE,0,1,nil,tp) end
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(aux.Stringid(m,1),cm.filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
local filter=RD.Filter(cm.filter,tp)
RD.SelectAndDoAction(aux.Stringid(m,1),filter,tp,LOCATION_MZONE,0,1,1,nil,function(g)
RD.AttachEffectIndes(e,g:GetFirst(),cm.indval,aux.Stringid(m,2),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
RD.CanSelectAndSet(aux.Stringid(m,3),aux.NecroValleyFilter(cm.setfilter),tp,LOCATION_GRAVE,0,1,1,nil,e)
end)
......
......@@ -13,7 +13,7 @@ function cm.initial_effect(c)
c:RegisterEffect(e1)
end
--Indes
cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP,true)
cm.indval=RD.ValueEffectIndesType(0,TYPE_TRAP)
function cm.target(e,c)
return c:IsFaceup() and c:IsLevelAbove(7) and c:IsRace(RACE_CELESTIALWARRIOR+RACE_WARRIOR)
end
\ No newline at end of file
local m=120231068
local cm=_G["c"..m]
cm.name="干活的话语"
cm.name="工作言语"
function cm.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
......
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