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

2024/3/24 新增:KP17的魔法师新卡,将对玩家的限制效果单独放到RDLimit里面

parent 4739d6bf
Pipeline #26008 passed with stages
in 6 minutes and 44 seconds
No preview for this file type
...@@ -59,254 +59,6 @@ function RushDuel.CreateHintEffect(e, desc, player, s_range, o_range, reset) ...@@ -59,254 +59,6 @@ function RushDuel.CreateHintEffect(e, desc, player, s_range, o_range, reset)
Duel.RegisterEffect(e1, player) Duel.RegisterEffect(e1, player)
return e1 return e1
end end
-- 创建效果: 只能用特定类型的怪兽攻击 (对玩家效果)
function RushDuel.CreateAttackLimitEffect(e, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建效果: 不能攻击 (对玩家效果)
function RushDuel.CreateCannotAttackEffect(e, hint, player, s_range, o_range, reset)
local s_target, o_traget = 0, 0
if s_range == 1 then
s_target = LOCATION_MZONE
end
if o_range == 1 then
o_traget = LOCATION_MZONE
end
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_target, o_traget)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetDescription(hint)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_PLAYER_CANNOT_ATTACK)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e2:SetTargetRange(s_range, o_range)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建效果: 不能用某些种族攻击 (对玩家效果)
function RushDuel.CreateRaceCannotAttackEffect(e, hint, race, player, s_range, o_range, reset)
local s_target, o_traget = 0, 0
if s_range == 1 then
s_target = LOCATION_MZONE
end
if o_range == 1 then
o_traget = LOCATION_MZONE
end
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_target, o_traget)
e1:SetTarget(function(e, c)
return c:IsRace(race)
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetDescription(hint)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_PLAYER_RACE_CANNOT_ATTACK)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e2:SetTargetRange(s_range, o_range)
e2:SetValue(race)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建效果: 不能直接攻击 (对玩家效果)
function RushDuel.CreateCannotDirectAttackEffect(e, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建效果: 不能选择攻击目标 (对玩家效果)
function RushDuel.CreateCannotSelectBattleTargetEffect(e, condition, target, value, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_range, o_range)
e1:SetCondition(function (e)
return not RushDuel.IsAttacking(e) and (not condition or condition(e))
end)
if target ~= nil then
e1:SetTarget(target)
end
if value ~= nil then
e1:SetValue(value)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建效果: 不能召唤怪兽 (对玩家效果)
function RushDuel.CreateCannotSummonEffect(e, desc, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建效果: 不能盖放怪兽 (对玩家效果)
function RushDuel.CreateCannotSetMonsterEffect(e, desc, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_MSET)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_LIMIT_SPECIAL_SUMMON_POSITION)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(s_range, o_range)
e2:SetTarget(function(e, c, sump, sumtype, sumpos, targetp)
return sumpos&POS_FACEDOWN > 0 and (not target or target(e, c))
end)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建效果: 不能特殊召唤怪兽 (对玩家效果)
function RushDuel.CreateCannotSpecialSummonEffect(e, desc, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建效果: 只能用1只怪兽进行攻击 (对玩家效果)
function RushDuel.CreateOnlySoleAttackEffect(e, code, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetOperation(function(e, tp, eg, ep, ev, re, r, rp)
if Duel.GetFlagEffect(tp, code) == 0 then
e:GetLabelObject():SetLabel(eg:GetFirst():GetFieldID())
Duel.RegisterFlagEffect(tp, code, reset, 0, 1)
end
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetTargetRange(s_range, o_range)
e2:SetCondition(function(e)
return Duel.GetFlagEffect(e:GetHandlerPlayer(), code) ~= 0
end)
e2:SetTarget(function(e, c)
return c:GetFieldID() ~= e:GetLabel()
end)
e1:SetLabelObject(e2)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
end
-- 创建效果: 只能用1只怪兽进行直接攻击 (对玩家效果)
function RushDuel.CreateOnlySoleDirectAttackEffect(e, code, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetOperation(function(e, tp, eg, ep, ev, re, r, rp)
if Duel.GetAttackTarget() == nil and Duel.GetFlagEffect(tp, code) == 0 then
e:GetLabelObject():SetLabel(eg:GetFirst():GetFieldID())
Duel.RegisterFlagEffect(tp, code, reset, 0, 1)
end
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetTargetRange(s_range, o_range)
e2:SetCondition(function(e)
return Duel.GetFlagEffect(e:GetHandlerPlayer(), code) ~= 0
end)
e2:SetTarget(function(e, c)
return c:GetFieldID() ~= e:GetLabel()
end)
e1:SetLabelObject(e2)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
end
-- 创建效果: 只能用这张卡进行攻击 (对玩家效果)
function RushDuel.CreateOnlyThisAttackEffect(e, code, player, s_range, o_range, reset)
local c = e:GetHandler()
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetLabelObject(c)
e1:SetTargetRange(s_range, o_range)
e1:SetTarget(function(e, c)
return not (c == e:GetLabelObject() and c:GetFlagEffect(code) ~= 0)
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
c:RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET + reset, 0, 1)
end
-- 创建效果: 不能把效果发动 (对玩家效果)
function RushDuel.CreateCannotActivateEffect(e, desc, value, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if value ~= nil then
e1:SetValue(value)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建效果: Buff类效果 -- 创建效果: Buff类效果
function RushDuel.CreateSingleEffect(e, desc, card, code, value, reset, forced) function RushDuel.CreateSingleEffect(e, desc, card, code, value, reset, forced)
local e1 = Effect.CreateEffect(e:GetHandler()) local e1 = Effect.CreateEffect(e:GetHandler())
......
-- Rush Duel 限制玩家操作
RushDuel = RushDuel or {}
-- 创建限制: 只能用特定类型的怪兽攻击
function RushDuel.CreateAttackLimitEffect(e, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建限制: 不能攻击
function RushDuel.CreateCannotAttackEffect(e, desc, player, s_range, o_range, reset)
local s_target, o_traget = 0, 0
if s_range == 1 then
s_target = LOCATION_MZONE
end
if o_range == 1 then
o_traget = LOCATION_MZONE
end
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_target, o_traget)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetDescription(desc)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_PLAYER_CANNOT_ATTACK)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e2:SetTargetRange(s_range, o_range)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建限制: 不能用某些种族攻击
function RushDuel.CreateRaceCannotAttackEffect(e, desc, race, player, s_range, o_range, reset)
local s_target, o_traget = 0, 0
if s_range == 1 then
s_target = LOCATION_MZONE
end
if o_range == 1 then
o_traget = LOCATION_MZONE
end
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_target, o_traget)
e1:SetTarget(function(e, c)
return c:IsRace(race)
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetDescription(desc)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_PLAYER_RACE_CANNOT_ATTACK)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e2:SetTargetRange(s_range, o_range)
e2:SetValue(race)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建限制: 不能直接攻击
function RushDuel.CreateCannotDirectAttackEffect(e, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_DIRECT_ATTACK)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建限制: 不能选择攻击目标
function RushDuel.CreateCannotSelectBattleTargetEffect(e, condition, target, value, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SELECT_BATTLE_TARGET)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetTargetRange(s_range, o_range)
e1:SetCondition(function(e)
return not RushDuel.IsAttacking(e) and (not condition or condition(e))
end)
if target ~= nil then
e1:SetTarget(target)
end
if value ~= nil then
e1:SetValue(value)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建限制: 不能召唤怪兽
function RushDuel.CreateCannotSummonEffect(e, desc, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建限制: 不能盖放怪兽
function RushDuel.CreateCannotSetMonsterEffect(e, desc, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_MSET)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_LIMIT_SPECIAL_SUMMON_POSITION)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetTargetRange(s_range, o_range)
e2:SetTarget(function(e, c, sump, sumtype, sumpos, targetp)
return sumpos & POS_FACEDOWN > 0 and (not target or target(e, c))
end)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
return e1, e2
end
-- 创建限制: 不能特殊召唤怪兽
function RushDuel.CreateCannotSpecialSummonEffect(e, desc, target, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if target ~= nil then
e1:SetTarget(target)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建限制: 只能用1只怪兽进行攻击
function RushDuel.CreateOnlySoleAttackEffect(e, code, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetOperation(function(e, tp, eg, ep, ev, re, r, rp)
if Duel.GetFlagEffect(tp, code) == 0 then
e:GetLabelObject():SetLabel(eg:GetFirst():GetFieldID())
Duel.RegisterFlagEffect(tp, code, reset, 0, 1)
end
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetTargetRange(s_range, o_range)
e2:SetCondition(function(e)
return Duel.GetFlagEffect(e:GetHandlerPlayer(), code) ~= 0
end)
e2:SetTarget(function(e, c)
return c:GetFieldID() ~= e:GetLabel()
end)
e1:SetLabelObject(e2)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
end
-- 创建限制: 只能用1只怪兽进行直接攻击
function RushDuel.CreateOnlySoleDirectAttackEffect(e, code, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetOperation(function(e, tp, eg, ep, ev, re, r, rp)
if Duel.GetAttackTarget() == nil and Duel.GetFlagEffect(tp, code) == 0 then
e:GetLabelObject():SetLabel(eg:GetFirst():GetFieldID())
Duel.RegisterFlagEffect(tp, code, reset, 0, 1)
end
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK)
e2:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e2:SetTargetRange(s_range, o_range)
e2:SetCondition(function(e)
return Duel.GetFlagEffect(e:GetHandlerPlayer(), code) ~= 0
end)
e2:SetTarget(function(e, c)
return c:GetFieldID() ~= e:GetLabel()
end)
e1:SetLabelObject(e2)
e2:SetReset(reset)
Duel.RegisterEffect(e2, player)
end
-- 创建限制: 只能用这张卡进行攻击
function RushDuel.CreateOnlyThisAttackEffect(e, code, player, s_range, o_range, reset)
local c = e:GetHandler()
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE)
e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetLabelObject(c)
e1:SetTargetRange(s_range, o_range)
e1:SetTarget(function(e, c)
return not (c == e:GetLabelObject() and c:GetFlagEffect(code) ~= 0)
end)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
c:RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET + reset, 0, 1)
end
-- 创建限制: 不能把效果发动
function RushDuel.CreateCannotActivateEffect(e, desc, value, player, s_range, o_range, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(s_range, o_range)
if value ~= nil then
e1:SetValue(value)
end
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
return e1
end
-- 创建限制: 特定卡的效果最多发动X次 (只能针对1名玩家)
function RushDuel.CreateActivateCountLimitEffect(e, desc, value, count, player, reset)
local e1 = Effect.CreateEffect(e:GetHandler())
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(1, 0)
e1:SetLabel(0)
e1:SetCondition(function(e)
return e:GetLabel() >= count
end)
e1:SetValue(value)
e1:SetReset(reset)
Duel.RegisterEffect(e1, player)
local e2 = Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_CHAINING)
e2:SetLabelObject(e1)
e2:SetOperation(function(e, tp, eg, ep, ev, re, r, rp)
if ep == tp and value(e, re, tp, true) then
local te = e:GetLabelObject()
te:SetLabel(te:GetLabel() + 1)
end
end)
Duel.RegisterEffect(e2, player)
local e3 = e2:Clone()
e3:SetCode(EVENT_CHAIN_NEGATED)
e3:SetOperation(function(e, tp, eg, ep, ev, re, r, rp)
if ep == tp and value(e, re, tp, false) then
local te = e:GetLabelObject()
local ct = te:GetLabel() - 1
if ct < 0 then
ct = 0
end
te:SetLabel(ct)
end
end)
return e1
end
...@@ -5,7 +5,7 @@ function cm.initial_effect(c) ...@@ -5,7 +5,7 @@ function cm.initial_effect(c)
--Discard Deck --Discard Deck
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0)) e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_DECKDES+CATEGORY_TOHAND+CATEGORY_GRAVE_ACTION) e1:SetCategory(CATEGORY_DECKDES)
e1:SetType(EFFECT_TYPE_IGNITION) e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE) e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.condition) e1:SetCondition(cm.condition)
......
...@@ -28,15 +28,7 @@ end ...@@ -28,15 +28,7 @@ end
function cm.activate(e,tp,eg,ep,ev,re,r,rp) function cm.activate(e,tp,eg,ep,ev,re,r,rp)
RD.Draw() RD.Draw()
if Duel.GetFlagEffect(tp,m)~=0 then return end if Duel.GetFlagEffect(tp,m)~=0 then return end
local e1=Effect.CreateEffect(e:GetHandler()) RD.CreateCannotActivateEffect(e,aux.Stringid(m,1),cm.aclimit,tp,1,0,RESET_PHASE+PHASE_END)
e1:SetDescription(aux.Stringid(m,1))
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CLIENT_HINT)
e1:SetTargetRange(1,0)
e1:SetValue(cm.aclimit)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1) Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end end
function cm.aclimit(e,re,tp) function cm.aclimit(e,re,tp)
......
local m=120261007
local list={120120024,120115001,120196050}
local cm=_G["c"..m]
cm.name="落单使魔女"
function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Special Summon
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_SPSUMMON+CATEGORY_TOHAND+CATEGORY_GRAVE_ACTION)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.condition)
e1:SetTarget(cm.target)
e1:SetOperation(cm.operation)
c:RegisterEffect(e1)
end
--Special Summon
function cm.spfilter(c,e,tp)
return c:IsCode(list[1],list[2]) and RD.IsCanBeSpecialSummoned(c,e,tp,POS_FACEUP)
end
function cm.thfilter(c)
return c:IsCode(list[3]) and c:IsAbleToHand()
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)<=1
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetMZoneCount(tp)>0
and Duel.IsExistingMatchingCard(cm.spfilter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_GRAVE)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
if RD.SelectAndSpecialSummon(aux.NecroValleyFilter(cm.spfilter),tp,LOCATION_GRAVE,0,1,1,nil,e,POS_FACEUP)~=0 then
RD.CanSelectAndDoAction(aux.Stringid(m,1),HINTMSG_ATOHAND,aux.NecroValleyFilter(cm.thfilter),tp,LOCATION_GRAVE,0,1,1,nil,function(g)
Duel.BreakEffect()
RD.SendToHandAndExists(g,1-tp)
end)
end
end
\ No newline at end of file
local m=120261008
local cm=_G["c"..m]
cm.name="莉莉丝杀戮者"
function cm.initial_effect(c)
--Discard Deck
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_DECKDES)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(cm.condition)
e1:SetTarget(cm.target)
e1:SetOperation(cm.operation)
c:RegisterEffect(e1)
end
--Discard Deck
cm.trival=RD.ValueDoubleTributeAttrRace(ATTRIBUTE_DARK,RACE_SPELLCASTER)
function cm.exfilter(c)
return c:IsRace(RACE_SPELLCASTER) and c:IsLocation(LOCATION_GRAVE)
end
function cm.filter(c)
return c:IsFaceup() and c:IsRace(RACE_PSYCHO) and RD.IsCanAttachDoubleTribute(c,cm.trival)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return RD.IsSummonTurn(e:GetHandler())
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDiscardDeck(tp,1) end
Duel.SetOperationInfo(0,CATEGORY_DECKDES,nil,0,tp,1)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
if RD.SendDeckTopToGraveAndExists(tp,1,cm.exfilter,1,nil) then
local c=e:GetHandler()
if c:IsFaceup() and c:IsRelateToEffect(e) then
RD.AttachDoubleTribute(e,c,cm.trival,aux.Stringid(m,1),RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
end
end
end
\ No newline at end of file
local m=120261045
local list={120115001}
local cm=_G["c"..m]
cm.name="七星道最终魔女"
function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],cm.matfilter)
--To Deck
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND+CATEGORY_GRAVE_ACTION)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetTarget(cm.target)
e1:SetOperation(cm.operation)
c:RegisterEffect(e1)
end
--Fusion Material
cm.unspecified_funsion=true
function cm.matfilter(c)
return c:IsType(TYPE_FUSION) and (c:IsRace(RACE_SPELLCASTER) or c:IsRace(RACE_MAGICALKNIGHT))
end
--To Deck
function cm.filter(c)
return c:IsType(TYPE_SPELL) and c:IsAbleToDeck()
end
function cm.thfilter(c)
return c:IsType(TYPE_SPELL) and c:IsAbleToHand()
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,0,LOCATION_GRAVE,1,nil) end
local g=Duel.GetMatchingGroup(cm.filter,tp,0,LOCATION_GRAVE,nil)
Duel.SetOperationInfo(0,CATEGORY_TODECK,g,1,0,0)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
RD.SelectAndDoAction(HINTMSG_TODECK,aux.NecroValleyFilter(cm.filter),tp,0,LOCATION_GRAVE,1,1,nil,function(g)
if RD.SendToDeckAndExists(g,cm.exfilter,1,nil) then
RD.CanSelectAndDoAction(aux.Stringid(m,1),HINTMSG_ATOHAND,aux.NecroValleyFilter(cm.thfilter),tp,LOCATION_GRAVE,0,1,1,nil,function(sg)
Duel.BreakEffect()
if RD.SendToHandAndExists(sg,1-tp) and Duel.GetFlagEffect(tp,m)==0 then
RD.CreateActivateCountLimitEffect(e,aux.Stringid(m,2),cm.aclimit,1,tp,RESET_PHASE+PHASE_END)
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end
end)
end
end)
end
function cm.aclimit(e,re,tp,chk)
return re:GetHandler():GetType()==TYPE_SPELL and re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL)
end
\ No newline at end of file
...@@ -9,6 +9,7 @@ Duel.LoadScript("RDCost.lua") ...@@ -9,6 +9,7 @@ Duel.LoadScript("RDCost.lua")
Duel.LoadScript("RDTarget.lua") Duel.LoadScript("RDTarget.lua")
Duel.LoadScript("RDValue.lua") Duel.LoadScript("RDValue.lua")
Duel.LoadScript("RDAttach.lua") Duel.LoadScript("RDAttach.lua")
Duel.LoadScript("RDLimit.lua")
Duel.LoadScript("RDAction.lua") Duel.LoadScript("RDAction.lua")
Duel.LoadScript("RDFusion.lua") Duel.LoadScript("RDFusion.lua")
Duel.LoadScript("RDEquip.lua") Duel.LoadScript("RDEquip.lua")
......
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