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

2025/9/24 传说卡机制更新

parent 412886e4
Pipeline #40712 passed with stages
in 8 minutes and 51 seconds
No preview for this file type
#[RD]
!RD
#Legend
$legend_monster 1
$legend_spell 1
$legend_trap 1
120102002 $legend_monster 1 -- 时间魔术师
120109040 $legend_monster 1 -- 模仿的幻想师
120109044 $legend_monster 1 -- 卡片炮击士
120109045 $legend_monster 1 -- 狱火帝皇
120109047 $legend_monster 1 -- 三头毒蛇
120109052 $legend_monster 1 -- 植物狮子
120109055 $legend_monster 1 -- 计算器人
120120000 $legend_monster 1 -- 青眼白龙
120125001 $legend_monster 1 -- 真红眼黑龙
120130000 $legend_monster 1 -- 黑魔术师
120145000 $legend_monster 1 -- 恶魔召唤
120155000 $legend_monster 1 -- 人造人-念力震慑者
120170000 $legend_monster 1 -- 破坏剑士
120183000 $legend_monster 1 -- 电子科技翼龙
120194001 $legend_monster 1 -- 千年盾
120194002 $legend_monster 1 -- 血腥魔兽人
120194003 $legend_monster 1 -- 圣精灵
120198001 $legend_monster 1 -- 青眼白龙
120199000 $legend_monster 1 -- 海龙-泰达路斯
120203015 $legend_monster 1 -- 黑魔术师
120203016 $legend_monster 1 -- 真红眼黑龙
120205000 $legend_monster 1 -- 创世神
120208000 $legend_monster 1 -- 左轮手枪龙
120214001 $legend_monster 1 -- 漆黑的战士 狼人
120214002 $legend_monster 1 -- 外星人士兵
120221001 $legend_monster 1 -- 蓝宝石龙
120222000 $legend_monster 1 -- 深渊士兵
120223101 $legend_monster 1 -- 双管手枪龙
120223102 $legend_monster 1 -- 幻影之龙
120223103 $legend_monster 1 -- 火焰支配者
120223104 $legend_monster 1 -- 恶魔士兵
120228000 $legend_monster 1 -- 堕天使 杰拉特
120229002 $legend_monster 1 -- 魔术女武神
120229101 $legend_monster 1 -- 真红眼黑龙
120231001 $legend_monster 1 -- 青眼白龙
120235000 $legend_monster 1 -- 闪电之战士 吉尔福德
120238002 $legend_monster 1 -- 百兽王 贝希摩斯
#120238008 $legend_monster 1 -- 虚无魔人
120238019 $legend_monster 1 -- 伟大魔兽 加泽特
120239060 $legend_monster 1 -- 海龙-泰达路斯
120244020 $legend_monster 1 -- 雷帝 扎博尔格
120247063 $legend_monster 1 -- 幻煌龙 螺旋
120247064 $legend_monster 1 -- 风帝 莱扎
120248001 $legend_monster 1 -- 炎帝 泰斯塔罗斯
120254001 $legend_monster 1 -- 黑魔术师
120254029 $legend_monster 1 -- 双生精灵
120257033 $legend_monster 1 -- 潜行狙击手
120257034 $legend_monster 1 -- 光鳞飞鱼
120260080 $legend_monster 1 -- 迷宫壁
120261033 $legend_monster 1 -- 地帝 格兰玛格
120263013 $legend_monster 1 -- 流浪勇者 弗里德
120264036 $legend_monster 1 -- 海牛头人
120267001 $legend_monster 1 -- 绿宝石龙
120271003 $legend_monster 1 -- 冰帝 美比乌斯
120271004 $legend_monster 1 -- 古代的机械巨人
120271069 $legend_monster 1 -- RAM云雄羊
120272065 $legend_monster 1 -- 元素英雄 棱镜侠
120274076 $legend_monster 1 -- 真红眼黑龙
120274078 $legend_monster 1 -- 超传导恐兽
120277000 $legend_monster 1 -- 恶魔召唤
120277001 $legend_monster 1 -- 甲虫装甲骑士
120277040 $legend_monster 1 -- 食魂者 巴祖
120285027 $legend_monster 1 -- 摩耳摩
120291001 $legend_monster 1 -- 邪帝 盖乌斯
120109039 $legend_spell 1 -- 魔导师之力
120140009 $legend_spell 1 -- 右手持盾左手持剑
120150048 $legend_spell 1 -- 手札抹杀
120151018 $legend_spell 1 -- 成金哥布林
120151023 $legend_spell 1 -- 对死者的供奉
120175003 $legend_spell 1 -- 死者转生
120181003 $legend_spell 1 -- 强欲之壶
120194004 $legend_spell 1 -- 死者苏生
120195004 $legend_spell 1 -- 死者苏生
120195005 $legend_spell 1 -- 天使的施舍
120196048 $legend_spell 1 -- 战士生还
120196049 $legend_spell 1 -- 天使的施舍
120203017 $legend_spell 1 -- 地碎
120214003 $legend_spell 1 -- 暗之量产工厂
120217099 $legend_spell 1 -- 噩梦再临
120217100 $legend_spell 1 -- 贪欲之壶
120229003 $legend_spell 1 -- 大风暴
120231069 $legend_spell 1 -- 黑洞
120231070 $legend_spell 1 -- 力量结合
120238022 $legend_spell 1 -- 最终战争
120238025 $legend_spell 1 -- 融合
120253056 $legend_spell 1 -- 海上打捞
120254058 $legend_spell 1 -- 槌击
120271001 $legend_spell 1 -- 天使的施舍
120271075 $legend_spell 1 -- 飓风
120274082 $legend_spell 1 -- 闪电旋涡
120277059 $legend_spell 1 -- 摆尾攻击
120280029 $legend_spell 1 -- 精神操作
120283020 $legend_spell 1 -- 贪欲之壶
120283052 $legend_spell 1 -- 鹰身女妖的羽毛扫
120285065 $legend_spell 1 -- 蒂迈欧之眼
120287086 $legend_spell 1 -- 团结之力
120291022 $legend_spell 1 -- 帝王的烈旋
120150019 $legend_trap 1 -- 落穴
120194005 $legend_trap 1 -- 炸裂装甲
120198003 $legend_trap 1 -- 神圣防护罩 -反射镜力-
120223105 $legend_trap 1 -- 激流葬
120232005 $legend_trap 1 -- 魔法筒
120234005 $legend_trap 1 -- 万能地雷 阔剑式
120237001 $legend_trap 1 -- 万能地雷 阔剑式
120238028 $legend_trap 1 -- 邪神之大灾害
120247065 $legend_trap 1 -- 神鸟攻击
120249065 $legend_trap 1 -- 攻击无力化
120254032 $legend_trap 1 -- 强制脱出装置
120263038 $legend_trap 1 -- 沙尘防护罩 -尘埃之力-
120272063 $legend_trap 1 -- 狡猾的落穴
120272064 $legend_trap 1 -- 第六感
120274084 $legend_trap 1 -- 波纹防护罩 -波浪之力-
120247065 $legend_trap 1 -- 神鸟攻击
120000000 1 -- 怪兽传说卡 (Legend Monster)
120000001 1 -- 魔法传说卡 (Legend Spell)
120000002 1 -- 陷阱传说卡 (Legend Trap)
......
......@@ -196,16 +196,10 @@ function RushDuel.ChangeRace(e, card, race, reset, forced)
end
-- 赋予: 改变卡名
function RushDuel.ChangeCode(e, card, code, reset, forced)
-- 使用 LinkCode 来判断传说卡
RushDuel.CreateSingleEffect(e, nil, card, EFFECT_ADD_LINK_CODE, code, reset, forced)
RushDuel.CreateSingleEffect(e, nil, card, EFFECT_ADD_FUSION_CODE, code, reset, forced)
return RushDuel.CreateSingleEffect(e, nil, card, EFFECT_CHANGE_CODE, code, reset, forced)
end
-- 赋予: 复制卡名
function RushDuel.CopyCode(e, card, target, reset, forced)
local code = RushDuel.GetCardCode(target)
-- 使用 LinkCode 来判断传说卡
RushDuel.CreateSingleEffect(e, nil, card, EFFECT_ADD_LINK_CODE, code, reset, forced)
RushDuel.CreateSingleEffect(e, nil, card, EFFECT_ADD_FUSION_CODE, code, reset, forced)
local code = target:GetCode()
return RushDuel.CreateSingleEffect(e, nil, card, EFFECT_CHANGE_CODE, code, reset, forced)
end
......@@ -261,21 +261,6 @@ function RushDuel.SetFusionMaterial(card, codes, min, max)
RushDuel.SetFusionMaterialData(card, codes, min, max)
end
-- 手动添加传说卡融合素材列表
function RushDuel.SetFusionLegendMaterial(card, codes, descs)
if card:IsStatus(STATUS_COPYING_EFFECT) then
return
end
local mt = getmetatable(card)
if mt.legend_material_codes == nil then
local legends = {}
for i in ipairs(codes) do
table.insert(legends, {codes[i], descs[i]})
end
mt.legend_material_codes = legends
end
end
-- 获取融合素材的卡名
function RushDuel.GetFusionMaterialCodes(card)
return card.material_codes or {}
......@@ -605,33 +590,10 @@ end
-- 宣言融合素材的卡名
function RushDuel.AnnounceFusionMaterialCode(player, card)
local legends = card.legend_material_codes or {}
local codes = card.material_codes or {}
local normal_count = #codes - #legends
local type = 0
if normal_count == 0 then
-- 只有传说怪兽素材
type = 2
elseif #legends == 0 then
-- 只有常规怪兽素材
type = 1
elseif #codes > 0 then
-- 选择宣言的种类
type = Duel.SelectOption(player, HINTMSG_ANNOUNCE_MONSTER, HINTMSG_ANNOUNCE_LEGEND) + 1
end
if type == 1 then
-- 宣言常规怪兽
if #codes > 0 then
return RushDuel.AnnounceCodes(player, codes)
elseif type == 2 then
-- 宣言传说怪兽
local legend, desc = {}, {}
for _, value in ipairs(legends) do
table.insert(legend, value[1])
table.insert(desc, value[2])
end
Duel.Hint(HINT_SELECTMSG, player, HINTMSG_CODE)
local index = Duel.SelectOption(player, table.unpack(desc)) + 1
return legend[index]
end
else
return nil
end
end
-- Rush Duel 编号
RushDuel = RushDuel or {}
LEGEND_MONSTER = 120000000
LEGEND_SPELL = 120000001
LEGEND_TRAP = 120000002
TYPE_LEGEND = 0x8 -- 传说卡
RushDuel.LegendCodes = {
-- 青眼白龙
{120120000, 120198001, 120231001},
-- 真红眼黑龙
{120125001, 120203016, 120229101, 120274076},
-- 黑魔术师
{120130000, 120203015, 120254001},
-- 恶魔召唤
{120145000, 120277000},
-- 海龙-泰达路斯
{120199000, 120239060},
-- 死者苏生
{120194004, 120195004},
-- 天使的施舍
{120196049, 120195005, 120271001},
-- 贪欲之壶
{120217100, 120283020}
}
-- LEGEND_MONSTER = 120000000
-- LEGEND_SPELL = 120000001
-- LEGEND_TRAP = 120000002
-- 初始化传说卡
function RushDuel.InitLegend()
local g = Duel.GetMatchingGroup(RushDuel.IsLegendCard, 0, 0xff, 0xff, nil, true)
g:ForEach(RushDuel.InitLegendCard)
-- local g = Duel.GetMatchingGroup(RushDuel.IsLegendCard, 0, 0xff, 0xff, nil, true)
-- g:ForEach(RushDuel.InitLegendCard)
end
function RushDuel.InitLegendCard(c)
local code = RushDuel.GetLegendCode(c:GetOriginalCode())
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_LEGEND_CARD)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_UNCOPYABLE + EFFECT_FLAG_SET_AVAILABLE)
e1:SetRange(0xff)
e1:SetValue(code)
e1:SetValue(c:GetOriginalCodeRule())
c:RegisterEffect(e1, true)
local e2 = e1:Clone()
e2:SetCode(EFFECT_ADD_LINK_CODE)
c:RegisterEffect(e2)
local e3 = e1:Clone()
e3:SetCode(EFFECT_ADD_FUSION_CODE)
c:RegisterEffect(e3)
-- 修改卡牌数据 (删除同名卡:传说卡)
-- c:SetEntityCode(code, true)
end
-- 获取传说卡原卡名
function RushDuel.GetLegendCode(code)
for _, codes in ipairs(RushDuel.LegendCodes) do
for _, legend_code in ipairs(codes) do
if (code == legend_code) then
return codes[1]
end
end
end
return code
end
-- 条件: 是否为传说卡
function RushDuel.IsLegendCard(card, original)
if original then
return card:IsOriginalCodeRule(LEGEND_MONSTER, LEGEND_SPELL, LEGEND_TRAP)
else
return card:IsHasEffect(EFFECT_LEGEND_CARD) ~= nil
end
end
-- 获取卡名
function RushDuel.GetCardCode(card)
local code1, code2 = card:GetLinkCode()
if code2 then
return code2
else
return code1
end
function RushDuel.IsLegendCard(card)
return card:IsType(TYPE_LEGEND) or card:IsHasEffect(EFFECT_LEGEND_CARD) ~= nil
end
-- 条件: 是否为传说卡的卡名
function RushDuel.IsLegendCode(card, ...)
return card:IsLinkCode(table.unpack({...}))
return card:IsCode(table.unpack({...}))
end
-- 条件: 是否为同名卡
function RushDuel.IsSameCode(card1, card2)
return card1:IsLinkCode(RushDuel.GetCardCode(card2))
return card1:IsCode(card2:GetCode())
end
-- 条件: 是否为原本卡名相同的卡
function RushDuel.IsSameOriginalCode(card1, card2)
if RushDuel.IsLegendCard(card1, true) and RushDuel.IsLegendCard(card2, true) then
local code1 = RushDuel.GetLegendCode(card1:GetOriginalCode())
local code2 = RushDuel.GetLegendCode(card2:GetOriginalCode())
return code1 == code2
else
return card1:IsOriginalCodeRule(card2:GetOriginalCodeRule())
end
end
-- 永续改变卡名
......@@ -114,13 +56,7 @@ function RushDuel.EnableChangeCode(c, code, location, condition)
end
e1:SetValue(code)
c:RegisterEffect(e1)
local e2 = e1:Clone()
e2:SetCode(EFFECT_ADD_LINK_CODE)
c:RegisterEffect(e2)
local e3 = e1:Clone()
e3:SetCode(EFFECT_ADD_FUSION_CODE)
c:RegisterEffect(e3)
return e1, e2, e3
return e1
end
-- 当作传说卡 (赝品)
......
......@@ -5,5 +5,4 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
end
\ No newline at end of file
......@@ -5,5 +5,4 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
end
\ No newline at end of file
local cm,m=GetID()
local list={120145052}
cm.name="海龙-泰达路斯"
function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Destroy
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetCost(cm.cost)
e1:SetTarget(cm.target)
e1:SetOperation(cm.operation)
c:RegisterEffect(e1)
end
--Destroy
function cm.costfilter(c,e,tp)
return c:IsFaceup() and c:IsCode(list[1]) and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,Group.FromCards(c,e:GetHandler()))
end
cm.cost=RD.CostSendOnFieldToGrave(cm.costfilter,1,1,false)
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,e:GetHandler()) end
local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,e:GetHandler())
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function cm.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,aux.ExceptThisCard(e))
if g:GetCount()>0 then
Duel.Destroy(g,REASON_EFFECT)
end
end
\ No newline at end of file
RD.AlternateCard(120199000)
\ No newline at end of file
......@@ -6,7 +6,6 @@ function cm.initial_effect(c)
--Fusion Material
RD.AddFusionProcedureSP(c,cm.matfilter,cm.check,2,3)
RD.SetFusionMaterial(c,{list[1]},3,3)
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
end
--Fusion Material
function cm.matfilter(c,fc,sub)
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,3)})
--Indes
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,3)})
--Atk Up
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1],list[2]},{aux.Stringid(m,3),aux.Stringid(m,4)})
--Atk Up
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
......
......@@ -5,5 +5,4 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1],list[2]},{aux.Stringid(m,1),aux.Stringid(m,2)})
end
\ No newline at end of file
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],cm.matfilter)
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,3)})
--Atk Up
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0))
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],cm.matfilter)
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
--Cannot To Hand & Deck & Extra
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],cm.matfilter)
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
--Atk Up
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],list[2])
RD.SetFusionLegendMaterial(c,{list[1],list[2]},{aux.Stringid(m,1),aux.Stringid(m,2)})
--Atk Up
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],cm.matfilter)
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
--Atk Up
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......
......@@ -5,7 +5,6 @@ function cm.initial_effect(c)
RD.AddCodeList(c,list)
--Fusion Material
RD.AddFusionProcedure(c,list[1],cm.matfilter)
RD.SetFusionLegendMaterial(c,{list[1]},{aux.Stringid(m,1)})
--Change Code
RD.EnableChangeCode(c,list[1],LOCATION_GRAVE)
--Indes
......
......@@ -6,23 +6,22 @@ function cm.initial_effect(c)
RD.AddRitualProcedure(c)
--Change Code
RD.EnableChangeCode(c,list[1],LOCATION_GRAVE)
local e1=RD.EnableChangeCode(c,list[1],LOCATION_MZONE)
--Atk Up
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_UPDATE_ATTACK)
e2:SetRange(LOCATION_MZONE)
e2:SetTargetRange(LOCATION_MZONE,0)
e2:SetTarget(cm.uptg)
e2:SetValue(500)
c:RegisterEffect(e2)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(LOCATION_MZONE,0)
e1:SetTarget(cm.uptg)
e1:SetValue(500)
c:RegisterEffect(e1)
-- Level Up
local e3=e2:Clone()
e3:SetCode(EFFECT_UPDATE_LEVEL)
e3:SetValue(5)
c:RegisterEffect(e3)
local e2=e1:Clone()
e2:SetCode(EFFECT_UPDATE_LEVEL)
e2:SetValue(5)
c:RegisterEffect(e2)
--Continuous Effect
RD.AddContinuousEffect(c,e1,e2,e3)
RD.AddContinuousEffect(c,e1,e2,RD.EnableChangeCode(c,list[1],LOCATION_MZONE))
end
--Atk Up
function cm.uptg(e,c)
......
......@@ -13,7 +13,7 @@ function cm.initial_effect(c)
end
--Activate
function cm.filter(c)
return RD.IsLegendCode(c,list[1]) or RD.IsLegendCode(c,list[2])
return RD.IsLegendCode(c,list[1],list[2])
end
function cm.matfilter(c)
return cm.filter(c) and c:IsOnField() and c:IsAbleToDeck()
......
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