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

2025/9/13 新增:外宇宙 直接驱动龙

parent d906bb71
Pipeline #40561 passed with stages
in 11 minutes and 14 seconds
No preview for this file type
......@@ -265,6 +265,34 @@ function RushDuel.CreateOnlyThatAttackEffect(e, card, code, player, s_range, o_r
card:RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET + reset, 0, 1)
card:RegisterFlagEffect(flag, RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET + reset, 0, 1)
end
-- 创建限制: 只能攻击宣言X次
function RushDuel.CreateLimitAttackCountEffect(e, desc, count, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
e1:SetLabel(0, count)
e1:SetCondition(function(e)
local ct1, ct2 = e:GetLabel()
return ct1 >= ct2
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_ATTACK_ANNOUNCE)
e2:SetLabelObject(e1)
e2:SetOperation(function(e)
local te = e:GetLabelObject()
local ct1, ct2 = te:GetLabel()
te:SetLabel(ct1 + 1, ct2)
end)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建限制: 不能发动卡的效果
function RushDuel.CreateCannotActivateMix(e, desc, player, s_range, o_range, reset, value)
local e1 = Effect.CreateEffect(e:GetHandler())
......@@ -284,9 +312,10 @@ function RushDuel.CreateCannotActivateEffect(e, desc, value, player, s_range, o_
end
-- 创建限制: 整个回合, 不能发动陷阱卡
function RushDuel.CreateCannotActivateTrapTurn(e, desc, player, s_range, o_range)
local e1 = RushDuel.CreateCannotActivateMix(e, desc, player, s_range, o_range, RESET_PHASE + PHASE_END, function(e, re, tp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP)
end)
local e1 = RushDuel.CreateCannotActivateMix(e, desc, player, s_range, o_range, RESET_PHASE + PHASE_END,
function(e, re, tp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP)
end)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_PLAYER_CANNOT_ACTIVATE_TRAP)
......@@ -298,10 +327,12 @@ function RushDuel.CreateCannotActivateTrapTurn(e, desc, player, s_range, o_range
end
-- 创建限制: 战斗阶段, 不能发动陷阱卡
function RushDuel.CreateCannotActivateTrapBattle(e, desc, player, s_range, o_range)
local e1 = RushDuel.CreateCannotActivateMix(e, desc, player, s_range, o_range, RESET_PHASE + PHASE_END, function(e, re, tp)
local ph = Duel.GetCurrentPhase()
return ph >= PHASE_BATTLE_START and ph <= PHASE_BATTLE and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP)
end)
local e1 = RushDuel.CreateCannotActivateMix(e, desc, player, s_range, o_range, RESET_PHASE + PHASE_END,
function(e, re, tp)
local ph = Duel.GetCurrentPhase()
return ph >= PHASE_BATTLE_START and ph <= PHASE_BATTLE and re:IsHasType(EFFECT_TYPE_ACTIVATE) and
re:IsActiveType(TYPE_TRAP)
end)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_PLAYER_CANNOT_ACTIVATE_TRAP_BATTLE)
......
local cm,m=GetID()
local list={CARD_CODE_OTS}
cm.name="外宇宙 直接驱动龙"
function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Change Code
RD.EnableChangeCode(c,list[1],LOCATION_GRAVE)
--Change Race
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_POSITION)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.condition)
e1:SetCost(cm.cost)
e1:SetOperation(cm.operation)
c:RegisterEffect(e1)
end
--Change Race
function cm.filter(c)
return c:IsFaceup() and c:IsType(TYPE_EFFECT) and c:IsLevel(4) and c:IsRace(RACE_GALAXY)
and RD.IsCanAttachDirectAttack(c)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return RD.IsSummonTurn(c) and RD.IsCanChangeRace(c,RACE_GALAXY)
end
cm.cost=RD.CostSendDeckTopToGrave(1)
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsFaceup() and c:IsRelateToEffect(e) then
RD.ChangeRace(e,c,RACE_GALAXY,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
RD.CanSelectAndDoAction(aux.Stringid(m,1),aux.Stringid(m,2),cm.filter,tp,LOCATION_MZONE,0,1,2,nil,function(g)
Duel.BreakEffect()
g:ForEach(function(tc)
RD.AttachDirectAttack(e,tc,aux.Stringid(m,3),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end)
RD.CreateLimitAttackCountEffect(e,aux.Stringid(m,4),2,tp,1,0,RESET_PHASE+PHASE_END)
end)
end
end
\ No newline at end of file
......@@ -32,34 +32,9 @@ function cm.operation(e,tp,eg,ep,ev,re,r,rp)
if c:IsFaceup() and c:IsRelateToEffect(e) then
RD.ChangeCode(e,c,list[2],RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,2))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(0,1)
e1:SetLabel(1-tp,0)
e1:SetCondition(cm.atkcon)
e1:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN)
Duel.RegisterEffect(e1,tp)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_ATTACK_ANNOUNCE)
e2:SetLabel(1-tp)
e2:SetLabelObject(e1)
e2:SetOperation(cm.atkop)
e2:SetReset(RESET_PHASE+PHASE_END+RESET_OPPO_TURN)
Duel.RegisterEffect(e2,tp)
local e1,e2=RD.CreateLimitAttackCountEffect(e,aux.Stringid(m,2),2,tp,0,1,RESET_PHASE+PHASE_END+RESET_OPPO_TURN)
e2:SetCondition(cm.atkcon)
end
function cm.atkcon(e)
local p,ct=e:GetLabel()
return Duel.GetTurnPlayer()==p and ct>=2
end
function cm.atkop(e)
local p=e:GetLabel()
local te=e:GetLabelObject()
if Duel.GetTurnPlayer()==p and Duel.GetAttacker():IsControler(p) then
local p,ct=te:GetLabel()
te:SetLabel(p,ct+1)
end
return Duel.GetTurnPlayer()~=e:GetHandlerPlayer()
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