Commit d9b8d63f authored by wyykak's avatar wyykak

remove useless files

Signed-off-by: wyykak's avatarwyykak <wyy_1414@126.com>
parent 6d0ba635
Pipeline #29055 passed with stage
in 20 seconds
--min/max value
MIN_ID =1000 --4 digit, by DataManager::GetDesc()
MAX_ID =268435455 --9 digit, by DataManager::GetDesc()
MAX_COUNTER =65535 --max number for adding/removing counters, by card::add_counter(), field::remove_counter()
--Locations 区域
LOCATION_DECK =0x01 --卡组
LOCATION_HAND =0x02 --手牌
LOCATION_MZONE =0x04 --怪兽区
LOCATION_SZONE =0x08 --魔陷区(0~4)+场地区(5)
LOCATION_GRAVE =0x10 --墓地
LOCATION_REMOVED =0x20 --除外区
LOCATION_EXTRA =0x40 --额外
LOCATION_OVERLAY =0x80 --超量素材
LOCATION_ONFIELD =0x0c --场上(LOCATION_MZONE+LOCATION_SZONE)
--Locations (for redirect) 若在重定向类效果中指定LOCATION_DECK则为弹回卡组顶部
LOCATION_DECKBOT =0x10001 --弹回卡组底部
LOCATION_DECKSHF =0x20001 --弹回卡组并洗牌
--Locations of spell cards
LOCATION_FZONE =0x100 --场地区
LOCATION_PZONE =0x200 --灵摆区
--Positions 表示形式
POS_FACEUP_ATTACK =0x1 --表侧攻击
POS_FACEDOWN_ATTACK =0x2 --(reserved)
POS_FACEUP_DEFENSE =0x4 --表侧守备
POS_FACEDOWN_DEFENSE =0x8 --里侧守备
POS_FACEUP =0x5 --正面表示
POS_FACEDOWN =0xa --背面表示
POS_ATTACK =0x3 --攻击表示
POS_DEFENSE =0xc --守备表示
NO_FLIP_EFFECT =0x10000--不发动反转效果
--Types 卡片类型
TYPE_MONSTER =0x1 --怪兽卡
TYPE_SPELL =0x2 --魔法卡
TYPE_TRAP =0x4 --陷阱卡
TYPE_NORMAL =0x10 --通常怪兽
TYPE_EFFECT =0x20 --效果
TYPE_FUSION =0x40 --融合
TYPE_RITUAL =0x80 --仪式
TYPE_TRAPMONSTER =0x100 --陷阱怪兽
TYPE_SPIRIT =0x200 --灵魂
TYPE_UNION =0x400 --同盟
TYPE_DUAL =0x800 --二重
TYPE_TUNER =0x1000 --调整
TYPE_SYNCHRO =0x2000 --同调
TYPE_TOKEN =0x4000 --衍生物
TYPE_QUICKPLAY =0x10000 --速攻
TYPE_CONTINUOUS =0x20000 --永续
TYPE_EQUIP =0x40000 --装备
TYPE_FIELD =0x80000 --场地
TYPE_COUNTER =0x100000 --反击
TYPE_FLIP =0x200000 --翻转
TYPE_TOON =0x400000 --卡通
TYPE_XYZ =0x800000 --超量
TYPE_PENDULUM =0x1000000 --灵摆
TYPE_SPSUMMON =0x2000000 --特殊召唤
TYPE_LINK =0x4000000 --连接
--Attributes 属性
ATTRIBUTE_EARTH =0x01 --地
ATTRIBUTE_WATER =0x02 --水
ATTRIBUTE_FIRE =0x04 --炎
ATTRIBUTE_WIND =0x08 --风
ATTRIBUTE_LIGHT =0x10 --光
ATTRIBUTE_DARK =0x20 --暗
ATTRIBUTE_DIVINE =0x40 --神
--Races 种族
RACE_ALL =0x1ffffff --全种族
RACE_WARRIOR =0x1 --战士
RACE_SPELLCASTER =0x2 --魔法师
RACE_FAIRY =0x4 --天使
RACE_FIEND =0x8 --恶魔
RACE_ZOMBIE =0x10 --不死
RACE_MACHINE =0x20 --机械
RACE_AQUA =0x40 --水
RACE_PYRO =0x80 --炎
RACE_ROCK =0x100 --岩石
RACE_WINDBEAST =0x200 --鸟兽
RACE_PLANT =0x400 --植物
RACE_INSECT =0x800 --昆虫
RACE_THUNDER =0x1000 --雷
RACE_DRAGON =0x2000 --龙
RACE_BEAST =0x4000 --兽
RACE_BEASTWARRIOR =0x8000 --兽战士
RACE_DINOSAUR =0x10000 --恐龙
RACE_FISH =0x20000 --鱼
RACE_SEASERPENT =0x40000 --海龙
RACE_REPTILE =0x80000 --爬虫类
RACE_PSYCHO =0x100000 --念动力
RACE_DIVINE =0x200000 --幻神兽
RACE_CREATORGOD =0x400000 --创造神
RACE_WYRM =0x800000 --幻龙
RACE_CYBERSE =0x1000000 --电子界
--Reason 卡片到当前位置的原因
REASON_DESTROY =0x1 --破坏
REASON_RELEASE =0x2 --解放
REASON_TEMPORARY =0x4 --暂时
REASON_MATERIAL =0x8 --作为融合/同调/超量素材或用於儀式/升級召喚
REASON_SUMMON =0x10 --召唤
REASON_BATTLE =0x20 --战斗破坏
REASON_EFFECT =0x40 --效果
REASON_COST =0x80 --用於代價或無法支付代價而破壞
REASON_ADJUST =0x100 --调整(御前试合)
REASON_LOST_TARGET =0x200 --失去装备对象
REASON_RULE =0x400 --规则
REASON_SPSUMMON =0x800 --特殊召唤
REASON_DISSUMMON =0x1000 --召唤失败
REASON_FLIP =0x2000 --翻转
REASON_DISCARD =0x4000 --丢弃
REASON_RDAMAGE =0x8000 --回復轉換後的傷害
REASON_RRECOVER =0x10000 --傷害轉換後的回復
REASON_RETURN =0x20000 --回到墓地
REASON_FUSION =0x40000 --用於融合召喚
REASON_SYNCHRO =0x80000 --用於同调召喚
REASON_RITUAL =0x100000 --用於仪式召喚
REASON_XYZ =0x200000 --用於超量召喚
REASON_REPLACE =0x1000000 --代替
REASON_DRAW =0x2000000 --抽卡
REASON_REDIRECT =0x4000000 --改变去向(大宇宙,带菌等)
REASON_REVEAL =0x8000000 --翻开卡组(森罗)
REASON_LINK =0x10000000 --用于连接召唤
REASON_LOST_OVERLAY =0x20000000 --超量素材随着超量怪兽离场
--Location Reason
LOCATION_REASON_TOFIELD =0x1 --Duel.GetLocationCount()預設值,凱薩競技場
LOCATION_REASON_CONTROL =0x2 --Card.IsControlerCanBeChanged()使用
--Summon Type --召唤类型
SUMMON_TYPE_NORMAL =0x10000000 --通常召唤(EFFECT_SUMMON_PROC,EFFECT_SET_PROC 可用Value修改數值)
SUMMON_TYPE_ADVANCE =0x11000000 --上级召唤
SUMMON_TYPE_DUAL =0x12000000 --再度召唤(二重)
SUMMON_TYPE_FLIP =0x20000000 --翻转召唤
SUMMON_TYPE_SPECIAL =0x40000000 --特殊召唤(EFFECT_SPSUMMON_PROC,EFFECT_SPSUMMON_PROC_G 可用Value修改數值)
SUMMON_TYPE_FUSION =0x43000000 --融合召唤
SUMMON_TYPE_RITUAL =0x45000000 --仪式召唤
SUMMON_TYPE_SYNCHRO =0x46000000 --同调召唤
SUMMON_TYPE_XYZ =0x49000000 --超量召唤
SUMMON_TYPE_PENDULUM =0x4a000000 --灵摆召唤
SUMMON_TYPE_LINK =0x4c000000 --连接召唤
--Summon Value --特定的召唤方式
SUMMON_VALUE_SELF =0x1 --自身效果或条件
SUMMON_VALUE_BLACK_GARDEN =0x10 --黑色花园
SUMMON_VALUE_SYNCHRO_MATERIAL =0x11 --特殊召唤并作为同调素材(黑羽-东云之东风检查)
SUMMON_VALUE_DARK_SANCTUARY =0x12 --暗黑圣域
SUMMON_VALUE_LV =0x1000 --对应LV怪兽的效果
SUMMON_VALUE_GLADIATOR =0x2000 --剑斗兽
SUMMON_VALUE_EVOLTILE =0x4000 --进化虫
--Status --卡片当前状态
STATUS_DISABLED =0x0001 --效果被无效
STATUS_TO_ENABLE =0x0002 --将变成有效
STATUS_TO_DISABLE =0x0004 --将变成无效
STATUS_PROC_COMPLETE =0x0008 --完成正规召唤(解除苏生限制)
STATUS_SET_TURN =0x0010 --在本回合覆盖
STATUS_NO_LEVEL =0x0020 --无等级
STATUS_BATTLE_RESULT =0x0040 --傷害計算結果預計要破壞的怪獸
STATUS_SPSUMMON_STEP =0x0080 --效果特召處理中
STATUS_FORM_CHANGED =0x0100 --改变过表示形式
STATUS_SUMMONING =0x0200 --召唤中
STATUS_EFFECT_ENABLED =0x0400 --卡片準備就緒(不在移動、召喚、魔法陷阱發動中)
STATUS_SUMMON_TURN =0x0800 --在本回合召喚/SET
STATUS_DESTROY_CONFIRMED =0x1000 --破坏确定
STATUS_LEAVE_CONFIRMED =0x2000 --連鎖處理完後送去墓地的魔法陷阱
STATUS_BATTLE_DESTROYED =0x4000 --战斗破坏确定後尚未移動
STATUS_COPYING_EFFECT =0x8000 --复制效果
STATUS_CHAINING =0x10000 --正在連鎖串中
STATUS_SUMMON_DISABLED =0x20000 --召唤无效後尚未移動
STATUS_ACTIVATE_DISABLED =0x40000 --发动无效後尚未移動
STATUS_EFFECT_REPLACED =0x80000 --效果被替代(红莲霸权)
STATUS_FUTURE_FUSION =0x100000 --未来融合特殊召唤(不触发融合素材效果)
STATUS_ATTACK_CANCELED =0x200000 --若其為攻擊者,則攻擊中止
STATUS_INITIALIZING =0x400000 --初始化..
STATUS_ACTIVATED =0x800000 --N/A
STATUS_JUST_POS =0x1000000 --已改變表示形式(用於STATUS_CONTINUOUS_POS判定)
STATUS_CONTINUOUS_POS =0x2000000 --改變後再次設定成其他表示形式
STATUS_FORBIDDEN =0x4000000 --不能play
STATUS_ACT_FROM_HAND =0x8000000 --從手牌发动
STATUS_OPPO_BATTLE =0x10000000 --和對手的怪兽戰鬥
STATUS_FLIP_SUMMON_TURN =0x20000000 --在本回合反转召唤
STATUS_SPSUMMON_TURN =0x40000000 --在本回合特殊召唤
--Assume
ASSUME_CODE =1
ASSUME_TYPE =2
ASSUME_LEVEL =3
ASSUME_RANK =4
ASSUME_ATTRIBUTE =5
ASSUME_RACE =6
ASSUME_ATTACK =7
ASSUME_DEFENSE =8
--Link Marker
LINK_MARKER_BOTTOM_LEFT =0x001 -- ↙
LINK_MARKER_BOTTOM =0x002 -- ↓
LINK_MARKER_BOTTOM_RIGHT =0x004 -- ↘
LINK_MARKER_LEFT =0x008 -- ←
LINK_MARKER_RIGHT =0x020 -- →
LINK_MARKER_TOP_LEFT =0x040 -- ↖
LINK_MARKER_TOP =0x080 -- ↑
LINK_MARKER_TOP_RIGHT =0x100 -- ↗
--Counter --指示物
COUNTER_WITHOUT_PERMIT =0x1000 --可以放置在非特定對象的指示物
COUNTER_NEED_ENABLE =0x2000 --在卡片本身放置上述指示物的標記(卡片守衛)
--Phase --阶段
PHASE_DRAW =0x01 --抽卡阶段
PHASE_STANDBY =0x02 --准备阶段
PHASE_MAIN1 =0x04 --主要阶段1
PHASE_BATTLE_START =0x08 --战斗阶段开始
PHASE_BATTLE_STEP =0x10 --战斗步驟
PHASE_DAMAGE =0x20 --伤害步驟
PHASE_DAMAGE_CAL =0x40 --伤害计算时
PHASE_BATTLE =0x80 --战斗阶段結束
PHASE_MAIN2 =0x100 --主要阶段2
PHASE_END =0x200 --结束阶段
--Player --玩家
PLAYER_NONE =2 --2个玩家都不是
PLAYER_ALL =3 --2个玩家都是
--Chain info --连锁信息
CHAININFO_CHAIN_COUNT =0x01 --连锁数
CHAININFO_TRIGGERING_EFFECT =0x02 --连锁的效果
CHAININFO_TRIGGERING_PLAYER =0x04 --连锁的玩家
CHAININFO_TRIGGERING_CONTROLER =0x08 --连锁的卡的控制者
CHAININFO_TRIGGERING_LOCATION =0x10 --连锁的位置
CHAININFO_TRIGGERING_SEQUENCE =0x20 --连锁的位置的编号(指怪兽和魔陷区的格子)
CHAININFO_TARGET_CARDS =0x40 --连锁的效果的对象(以下3个需要在target函数里设置)
CHAININFO_TARGET_PLAYER =0x80 --连锁的效果的对象(玩家)
CHAININFO_TARGET_PARAM =0x100 --连锁的效果的参数值
CHAININFO_DISABLE_REASON =0x200 --无效的原因
CHAININFO_DISABLE_PLAYER =0x400 --无效的玩家
CHAININFO_CHAIN_ID =0x800 --连锁ID
CHAININFO_TYPE =0x1000 --连锁类型
CHAININFO_EXTTYPE =0x2000 --连锁额外类型
CHAININFO_TRIGGERING_POSITION =0x4000 --连锁发生时的表示形式
CHAININFO_TRIGGERING_CODE =0x8000 --连锁发生时的密码
CHAININFO_TRIGGERING_CODE2 =0x10000 --连锁发生时的其他密码
CHAININFO_TRIGGERING_LEVEL =0x40000 --连锁发生时的等级
CHAININFO_TRIGGERING_RANK =0x80000 --连锁发生时的阶级
CHAININFO_TRIGGERING_ATTRIBUTE =0x100000 --连锁发生时的属性
CHAININFO_TRIGGERING_RACE =0x200000 --连锁发生时的种族
CHAININFO_TRIGGERING_ATTACK =0x400000 --连锁发生时的攻击力
CHAININFO_TRIGGERING_DEFENSE =0x800000 --连锁发生时的守备力
--========== Reset ========== --重置条件(注意:重置条件可以多个相加)
RESET_SELF_TURN =0x10000000 --自己回合的階段重置
RESET_OPPO_TURN =0x20000000 --对方回合的階段重置
RESET_PHASE =0x40000000 --阶段结束重置(一般和上面那些阶段配合使用)
RESET_CHAIN =0x80000000 --连锁结束重置
RESET_EVENT =0x1000 --指定的條件下重置(一般和下面这些事件配合使用)
RESET_CARD =0x2000 --重置Owner為指定卡片的效果
RESET_CODE =0x4000 --重置指定Code的single效果(不含EFFECT_FLAG_SINGLE_RANGE)
RESET_COPY =0x8000 --重置以复制取得的效果
RESET_DISABLE =0x00010000 --效果无效重置(只適用於owner==handler的效果)
RESET_TURN_SET =0x00020000 --变里侧重置
RESET_TOGRAVE =0x00040000 --去墓地重置(以下皆為事件觸發前重置)
RESET_REMOVE =0x00080000 --除外重置
RESET_TEMP_REMOVE =0x00100000 --暂时除外重置
RESET_TOHAND =0x00200000 --回手牌或加入手牌重置
RESET_TODECK =0x00400000 --回卡组重置
RESET_LEAVE =0x00800000 --从场上移到其他位置/超量叠放重置
RESET_TOFIELD =0x01000000 --到场上重置(move_to_field())
RESET_CONTROL =0x02000000 --控制者变更重置
RESET_OVERLAY =0x04000000 --超量叠放重置
RESET_MSCHANGE =0x08000000 --从怪兽区到魔法区,或者从魔法区到怪兽区(move_to_field()、寶玉獸)
----组合时点
RESETS_STANDARD =0x1fe0000 --RESET_TOFIELD+RESET_LEAVE+RESET_TODECK+RESET_TOHAND+RESET_TEMP_REMOVE+RESET_REMOVE+RESET_TOGRAVE+RESET_TURN_SET
RESETS_REDIRECT =0xc7e0000 --RESETS_STANDARD+RESET_OVERLAY+RESET_MSCHANGE-RESET_TOFIELD-RESET_LEAVE (EFFECT_LEAVE_FIELD_REDIRECT)
--========== Types ========== --效果类型(定义效果触发类型,和codes一起使用)
EFFECT_TYPE_SINGLE =0x0001 --自己状态变化时触发
EFFECT_TYPE_FIELD =0x0002 --场上所有卡状态变化时触发
EFFECT_TYPE_EQUIP =0x0004 --装备效果
EFFECT_TYPE_ACTIONS =0x0008 --触发型,以下類型會自動添加此屬性(对峙的G)
EFFECT_TYPE_ACTIVATE =0x0010 --魔陷发动
EFFECT_TYPE_FLIP =0x0020 --翻转效果
EFFECT_TYPE_IGNITION =0x0040 --起动效果
EFFECT_TYPE_TRIGGER_O =0x0080 --诱发选发效果
EFFECT_TYPE_QUICK_O =0x0100 --诱发即时效果
EFFECT_TYPE_TRIGGER_F =0x0200 --诱发必发效果
EFFECT_TYPE_QUICK_F =0x0400 --诱发即时必发效果(熊猫龙等)
EFFECT_TYPE_CONTINUOUS =0x0800 --由事件觸發的輔助用效果/永續效果
EFFECT_TYPE_XMATERIAL =0x1000 --作为超量素材时超量怪兽获得的效果(十二兽)
EFFECT_TYPE_GRANT =0x2000 --使其他卡片获得效果(天气模样)
EFFECT_TYPE_TARGET =0x4000 --影响持续取的对象的效果(基本只用于魔陷)
--========== Flags ========== --效果的特殊性质
EFFECT_FLAG_INITIAL =0x0001 --可以发动的
EFFECT_FLAG_FUNC_VALUE =0x0002 --此效果的Value属性是函数
EFFECT_FLAG_COUNT_LIMIT =0x0004 --发动次数限制
EFFECT_FLAG_FIELD_ONLY =0x0008 --此效果是注册给全局环境的
EFFECT_FLAG_CARD_TARGET =0x0010 --取对象效果
EFFECT_FLAG_IGNORE_RANGE =0x0020 --影响所有区域的卡(大宇宙)
EFFECT_FLAG_ABSOLUTE_TARGET =0x0040 --Target Range不会因为控制权的改变而改变
EFFECT_FLAG_IGNORE_IMMUNE =0x0080 --无视效果免疫
EFFECT_FLAG_SET_AVAILABLE =0x0100 --影响场上里侧的卡/裡側狀態可發動
EFFECT_FLAG_CANNOT_NEGATE =0x0200 --含有"此效果不會被無效"的敘述
EFFECT_FLAG_CANNOT_DISABLE =0x0400 --效果不会被无效
EFFECT_FLAG_PLAYER_TARGET =0x0800 --以玩家为对象
EFFECT_FLAG_BOTH_SIDE =0x1000 --双方都能使用(部分场地,弹压)
EFFECT_FLAG_COPY_INHERIT =0x2000 --若由复制的效果產生則继承其Reset属性
EFFECT_FLAG_DAMAGE_STEP =0x4000 --可以在伤害步骤发动
EFFECT_FLAG_DAMAGE_CAL =0x8000 --可以在伤害计算时发动
EFFECT_FLAG_DELAY =0x10000 --場合型誘發效果、用於永續效果的EFFECT_TYPE_CONTINUOUS、神之化身/恐惧之源的攻击力变化最后计算
EFFECT_FLAG_SINGLE_RANGE =0x20000 --只对自己有效
EFFECT_FLAG_UNCOPYABLE =0x40000 --不能复制(效果外文本)
EFFECT_FLAG_OATH =0x80000 --誓约效果
EFFECT_FLAG_SPSUM_PARAM =0x100000 --指定召喚/规则特殊召唤的位置和表示形式(熔岩魔神)
EFFECT_FLAG_REPEAT =0x200000 --神之化身的攻击力重复计算
EFFECT_FLAG_NO_TURN_RESET =0x400000 --发条等“这张卡在场上只能发动一次”的效果
EFFECT_FLAG_EVENT_PLAYER =0x800000 --视为对方玩家的效果(动作?)
EFFECT_FLAG_OWNER_RELATE =0x1000000 --与效果owner关联的效果
EFFECT_FLAG_CANNOT_INACTIVATE =0x2000000 --發動不會被無效
EFFECT_FLAG_CLIENT_HINT =0x4000000 --客户端提示
EFFECT_FLAG_CONTINUOUS_TARGET =0x8000000 --建立持續對象的永續魔法、永續陷阱、早埋系以外的裝備魔法卡
EFFECT_FLAG_LIMIT_ZONE =0x10000000 --限制魔法·陷阱卡发动时可以放置的区域
EFFECT_FLAG_COF =0x20000000 --N/A
EFFECT_FLAG_CVAL_CHECK =0x40000000 --N/A
EFFECT_FLAG_IMMEDIATELY_APPLY =0x80000000 --卡在发动时效果就立即适用
EFFECT_FLAG2_NAGA =0x0001 --N/A
EFFECT_FLAG2_COF =0x0002 --通常魔法卡在MP1以外发动(邪恶的仪式的特殊处理)
--========== Codes ========== --对永续性效果表示效果类型(EFFECT开头),对诱发型效果表示触发效果的事件/时点(EVENT开头)
EFFECT_IMMUNE_EFFECT =1 --效果免疫
EFFECT_DISABLE =2 --效果无效(技能抽取)
EFFECT_CANNOT_DISABLE =3 --效果不能被无效
EFFECT_SET_CONTROL =4 --设置控制权
EFFECT_CANNOT_CHANGE_CONTROL =5 --不能改变控制权
EFFECT_CANNOT_ACTIVATE =6 --玩家不能发动效果
EFFECT_CANNOT_TRIGGER =7 --卡不能发动效果
EFFECT_DISABLE_EFFECT =8 --效果无效(聖杯)
EFFECT_DISABLE_CHAIN =9 --在連鎖串中無效(processor.cpp)
EFFECT_DISABLE_TRAPMONSTER =10 --陷阱怪兽无效
EFFECT_CANNOT_INACTIVATE =12 --发动不能被无效
EFFECT_CANNOT_DISEFFECT =13 --效果處理時不能被无效
EFFECT_CANNOT_CHANGE_POSITION =14 --不能改变表示形式
EFFECT_TRAP_ACT_IN_HAND =15 --陷阱可以从手牌发动
EFFECT_TRAP_ACT_IN_SET_TURN =16 --陷阱可以在盖放的回合发动
EFFECT_REMAIN_FIELD =17 --X回合内留在场上(光之护封剑等)
EFFECT_MONSTER_SSET =18 --怪兽可以在魔陷区放置
EFFECT_CANNOT_SUMMON =20 --不能召唤怪兽
EFFECT_CANNOT_FLIP_SUMMON =21 --不能翻转召唤怪兽
EFFECT_CANNOT_SPECIAL_SUMMON =22 --不能特殊召唤怪兽
EFFECT_CANNOT_MSET =23 --不能覆盖怪兽
EFFECT_CANNOT_SSET =24 --不能覆盖魔陷
EFFECT_CANNOT_DRAW =25 --不能抽卡
EFFECT_CANNOT_DISABLE_SUMMON =26 --召唤不会无效
EFFECT_CANNOT_DISABLE_SPSUMMON =27 --特殊召唤不会无效
EFFECT_SET_SUMMON_COUNT_LIMIT =28 --限制每回合放置怪兽次数
EFFECT_EXTRA_SUMMON_COUNT =29 --增加召唤(通常召唤)次数
EFFECT_SPSUMMON_CONDITION =30 --特殊召唤条件
EFFECT_REVIVE_LIMIT =31 --有苏生限制的怪獸(Card.EnableReviveLimit())
EFFECT_SUMMON_PROC =32 --召唤规则效果
EFFECT_LIMIT_SUMMON_PROC =33 --召唤规则限制
EFFECT_SPSUMMON_PROC =34 --特殊召唤规则
EFFECT_EXTRA_SET_COUNT =35 --增加盖放(通常召唤)次数
EFFECT_SET_PROC =36 --放置(通常召唤)规则
EFFECT_LIMIT_SET_PROC =37 --放置(通常召唤)规则限制
EFFECT_DEVINE_LIGHT =38 --神圣光辉(魔术礼帽)
EFFECT_CANNOT_DISABLE_FLIP_SUMMON =39 --翻转召唤不会无效
EFFECT_INDESTRUCTABLE =40 --不会被破坏
EFFECT_INDESTRUCTABLE_EFFECT =41 --不会被效果破坏
EFFECT_INDESTRUCTABLE_BATTLE =42 --不会被战斗破坏
EFFECT_UNRELEASABLE_SUM =43 --不能做上级召唤的祭品
EFFECT_UNRELEASABLE_NONSUM =44 --不能做上级召唤以外的祭品
EFFECT_DESTROY_SUBSTITUTE =45 --必選的代替破壞(此卡被破壞時用其他卡代替)
EFFECT_CANNOT_RELEASE =46 --不能进行解放行为
EFFECT_INDESTRUCTABLE_COUNT =47 --一回合几次不会被破坏
EFFECT_UNRELEASABLE_EFFECT =48 --不能被解放
EFFECT_DESTROY_REPLACE =50 --可選的代替破壞(將破壞改成其他動作)
EFFECT_RELEASE_REPLACE =51 --代替解放
EFFECT_SEND_REPLACE =52 --可以不送去XX而送去OO(甜点城堡等)
EFFECT_CANNOT_DISCARD_HAND =55 --不能丢弃手牌
EFFECT_CANNOT_DISCARD_DECK =56 --不能把卡组的卡送去墓地
EFFECT_CANNOT_USE_AS_COST =57 --不能作为COST使用
EFFECT_CANNOT_PLACE_COUNTER =58 --不能放置counter
EFFECT_CANNOT_TO_GRAVE_AS_COST =59 --不能作为COST送去墓地
EFFECT_LEAVE_FIELD_REDIRECT =60 --离场时重新指定去向
EFFECT_TO_HAND_REDIRECT =61 --回手牌时重新指定去向
EFFECT_TO_DECK_REDIRECT =62 --回卡组时重新指定去向
EFFECT_TO_GRAVE_REDIRECT =63 --去墓地时重新指定去向
EFFECT_REMOVE_REDIRECT =64 --除外时重新指定去向
EFFECT_CANNOT_TO_HAND =65 --不能加入手牌
EFFECT_CANNOT_TO_DECK =66 --不能回卡组
EFFECT_CANNOT_REMOVE =67 --不能除外
EFFECT_CANNOT_TO_GRAVE =68 --不能去墓地
EFFECT_CANNOT_TURN_SET =69 --不能变里侧
EFFECT_CANNOT_BE_BATTLE_TARGET =70 --不能成为攻击对象
EFFECT_CANNOT_BE_EFFECT_TARGET =71 --不能成为效果对象
EFFECT_IGNORE_BATTLE_TARGET =72 --不能成为攻击对象-鶸型(传说的渔人)
EFFECT_CANNOT_DIRECT_ATTACK =73 --不能直接攻击
EFFECT_DIRECT_ATTACK =74 --可以直接攻击
EFFECT_DUAL_STATUS =75 --二重状态
EFFECT_EQUIP_LIMIT =76 --装备对象限制
EFFECT_DUAL_SUMMONABLE =77 --可以再度召唤
EFFECT_UNION_LIMIT =78 --
EFFECT_REVERSE_DAMAGE =80 --伤害变回复
EFFECT_REVERSE_RECOVER =81 --回复变伤害
EFFECT_CHANGE_DAMAGE =82 --改变伤害数值
EFFECT_REFLECT_DAMAGE =83 --反射伤害
EFFECT_CANNOT_ATTACK =85 --不能攻击
EFFECT_CANNOT_ATTACK_ANNOUNCE =86 --不能攻击宣言
EFFECT_CANNOT_CHANGE_POS_E =87 --不会被卡的效果变成守备表示(攻击性云魔物)
EFFECT_ACTIVATE_COST =90 --发动代价(魔力之枷)
EFFECT_SUMMON_COST =91 --召唤代价
EFFECT_SPSUMMON_COST =92 --特殊召唤代价(暴君龙)
EFFECT_FLIPSUMMON_COST =93 --翻转召唤代价
EFFECT_MSET_COST =94 --怪兽放置代价
EFFECT_SSET_COST =95 --魔陷放置代价
EFFECT_ATTACK_COST =96 --攻击代价(霞之谷猎鹰)
EFFECT_UPDATE_ATTACK =100 --改变攻击力(攻击力增加/减少)
EFFECT_SET_ATTACK =101 --设置攻击力(永續型效果、攻擊力變成X特殊召喚)
EFFECT_SET_ATTACK_FINAL =102 --设置最终攻击力(所有入連鎖的改變攻擊力)
EFFECT_SET_BASE_ATTACK =103 --设置原本攻击力
EFFECT_UPDATE_DEFENSE =104 --改变防御力
EFFECT_SET_DEFENSE =105 --设置防御力
EFFECT_SET_DEFENSE_FINAL =106 --设置最终防御力
EFFECT_SET_BASE_DEFENSE =107 --设置原本防御力
EFFECT_REVERSE_UPDATE =108 --倒置改变攻击力、防御力(天邪鬼)
EFFECT_SWAP_AD =109 --交换攻防(超級漏洞人)
EFFECT_SWAP_BASE_AD =110 --交换原本攻防
EFFECT_SWAP_ATTACK_FINAL =111 --N/A
EFFECT_SWAP_DEFENSE_FINAL =112 --N/A
EFFECT_ADD_CODE =113 --增加卡名
EFFECT_CHANGE_CODE =114 --改变卡名
EFFECT_ADD_TYPE =115 --增加卡片种类(types)
EFFECT_REMOVE_TYPE =116 --删除卡片种类
EFFECT_CHANGE_TYPE =117 --改变卡片种类
EFFECT_ADD_RACE =120 --增加种族
EFFECT_REMOVE_RACE =121 --删除种族
EFFECT_CHANGE_RACE =122 --改变种族
EFFECT_ADD_ATTRIBUTE =125 --增加属性
EFFECT_REMOVE_ATTRIBUTE =126 --删除属性
EFFECT_CHANGE_ATTRIBUTE =127 --改变属性
EFFECT_UPDATE_LEVEL =130 --改变等级
EFFECT_CHANGE_LEVEL =131 --设置等级
EFFECT_UPDATE_RANK =132 --改变阶级
EFFECT_CHANGE_RANK =133 --设置阶级
EFFECT_UPDATE_LSCALE =134 --改变左刻度
EFFECT_CHANGE_LSCALE =135 --设置左刻度
EFFECT_UPDATE_RSCALE =136 --改变右刻度
EFFECT_CHANGE_RSCALE =137 --设置右刻度
EFFECT_SET_POSITION =140 --設定表示形式
EFFECT_SELF_DESTROY =141 --不入連鎖的破壞(罪系列等)
EFFECT_SELF_TOGRAVE =142 --不入連鎖的送墓
EFFECT_DOUBLE_TRIBUTE =150 --可以作为2个祭品
EFFECT_DECREASE_TRIBUTE =151 --减少祭品
EFFECT_DECREASE_TRIBUTE_SET =152 --减少放置怪兽的祭品
EFFECT_EXTRA_RELEASE =153 --必須使用的代替解放(灵魂交错)
EFFECT_TRIBUTE_LIMIT =154 --祭品限制
EFFECT_EXTRA_RELEASE_SUM =155 --代替召唤解放(帝王的烈旋)
EFFECT_TRIPLE_TRIBUTE =156 --N/A
EFFECT_ADD_EXTRA_TRIBUTE =157 --增加可使用的祭品(真龙)
EFFECT_EXTRA_RELEASE_NONSUM =158 --代替效果COST的解放(闇黒世界)
EFFECT_PUBLIC =160 --公开手牌
EFFECT_COUNTER_PERMIT =0x10000--允许放置指示物类型
EFFECT_COUNTER_LIMIT =0x20000--允许放置指示物数量
EFFECT_RCOUNTER_REPLACE =0x30000--代替取除指示物
EFFECT_LPCOST_CHANGE =170 --改变生命值代价數值
EFFECT_LPCOST_REPLACE =171 --以其他動作代替生命值代价
EFFECT_SKIP_DP =180 --跳过抽卡阶段
EFFECT_SKIP_SP =181 --跳过准备阶段
EFFECT_SKIP_M1 =182 --跳过主要阶段1
EFFECT_SKIP_BP =183 --跳过战斗阶段
EFFECT_SKIP_M2 =184 --跳过主要阶段2
EFFECT_CANNOT_BP =185 --不能进入战斗阶段
EFFECT_CANNOT_M2 =186 --不能进入主要阶段2
EFFECT_CANNOT_EP =187 --不能进入结束阶段
EFFECT_SKIP_TURN =188 --跳过整个回合
EFFECT_DEFENSE_ATTACK =190 --可以守备表示攻击
EFFECT_MUST_ATTACK =191 --必须攻击
EFFECT_FIRST_ATTACK =192 --必须第一个攻击
EFFECT_ATTACK_ALL =193 --可以攻击所有怪兽
EFFECT_EXTRA_ATTACK =194 --增加攻击次数
EFFECT_MUST_BE_ATTACKED =195 --N/A
EFFECT_ONLY_BE_ATTACKED =196 --只能攻击此卡
EFFECT_ATTACK_DISABLED =197 --攻击已被無效(Duel.NegateAttack()成功的標記)
EFFECT_NO_BATTLE_DAMAGE =200 --不会给对方造成战斗伤害
EFFECT_AVOID_BATTLE_DAMAGE =201 --不会对自己造成战斗伤害
EFFECT_REFLECT_BATTLE_DAMAGE =202 --反弹战斗伤害
EFFECT_PIERCE =203 --贯穿伤害
EFFECT_BATTLE_DESTROY_REDIRECT =204 --战斗破坏时重新指定去向
EFFECT_BATTLE_DAMAGE_TO_EFFECT =205 --战斗伤害视为效果伤害
EFFECT_BOTH_BATTLE_DAMAGE =206 --战斗伤害由双方承受
EFFECT_ALSO_BATTLE_DAMAGE =207 --对自己的战斗伤害让对方也承受
EFFECT_CHANGE_BATTLE_DAMAGE =208 --改变战斗伤害
EFFECT_TOSS_COIN_REPLACE =220 --重新抛硬币
EFFECT_TOSS_DICE_REPLACE =221 --重新掷骰子
EFFECT_FUSION_MATERIAL =230 --指定融合素材的條件
EFFECT_CHAIN_MATERIAL =231 --玩家受到連鎖物質的效果影響
EFFECT_SYNCHRO_MATERIAL =232 --可以当作同调素材
EFFECT_XYZ_MATERIAL =233 --可以当作超量素材
EFFECT_FUSION_SUBSTITUTE =234 --代替融合素材
EFFECT_CANNOT_BE_FUSION_MATERIAL =235--不能做融合素材
EFFECT_CANNOT_BE_SYNCHRO_MATERIAL =236--不能做同调素材
EFFECT_SYNCHRO_MATERIAL_CUSTOM =237--自定义Tuner的同调过程
EFFECT_CANNOT_BE_XYZ_MATERIAL =238--不能做超量素材
EFFECT_CANNOT_BE_LINK_MATERIAL =239--不能做连接素材
EFFECT_SYNCHRO_LEVEL =240--做同调素材时的等级
EFFECT_RITUAL_LEVEL =241--做仪式祭品时的等级
EFFECT_XYZ_LEVEL =242--做超量素材时的等级
EFFECT_EXTRA_RITUAL_MATERIAL =243--在墓地当做仪式祭品
EFFECT_NONTUNER =244--同时当作调整以外的怪兽(幻影王 幽骑)
EFFECT_OVERLAY_REMOVE_REPLACE =245--代替去除超量素材
EFFECT_SCRAP_CHIMERA =246--废铁奇美拉
EFFECT_TUNE_MAGICIAN_X =247--调弦之魔术师超量素材限制
EFFECT_TUNE_MAGICIAN_F =248--调弦之魔术师融合素材限制
EFFECT_PRE_MONSTER =250 --可存取怪獸的各項數值(Card.AddMonsterAttribute()專用)
EFFECT_MATERIAL_CHECK =251 --检查素材
EFFECT_DISABLE_FIELD =260 --无效区域(扰乱王等)
EFFECT_USE_EXTRA_MZONE =261 --怪兽区域封锁
EFFECT_USE_EXTRA_SZONE =262 --魔法区域封锁
EFFECT_MAX_MZONE =263 --怪獸区格數上限
EFFECT_MAX_SZONE =264 --魔陷区格數上限
EFFECT_MUST_USE_MZONE =265 --必须使用怪兽区的格子
EFFECT_HAND_LIMIT =270 --手牌数量限制
EFFECT_DRAW_COUNT =271 --抽卡阶段的抽卡数
EFFECT_SPIRIT_DONOT_RETURN =280 --灵魂怪兽不返回手牌
EFFECT_SPIRIT_MAYNOT_RETURN =281 --灵魂怪兽可以不返回手牌
EFFECT_CHANGE_ENVIRONMENT =290 --改变场地
EFFECT_NECRO_VALLEY =291 --王家长眠之谷
EFFECT_FORBIDDEN =292 --不能Play(禁止令)
EFFECT_NECRO_VALLEY_IM =293 --不受「王家长眠之谷」的影响
EFFECT_REVERSE_DECK =294 --翻转卡组
EFFECT_REMOVE_BRAINWASHING =295 --洗脑解除
EFFECT_BP_TWICE =296 --2次战斗阶段
EFFECT_UNIQUE_CHECK =297 --場上只能存在1張(Card.SetUniqueOnField()專用)
EFFECT_MATCH_KILL =300 --Match胜利(胜利龙)
EFFECT_SYNCHRO_CHECK =310 --基因组斗士
EFFECT_QP_ACT_IN_NTPHAND =311 --对方回合从自己手卡发动(失乐的圣女)
EFFECT_MUST_BE_SMATERIAL =312 --必须作为同调素材(波动龙 声子龙)
EFFECT_TO_GRAVE_REDIRECT_CB =313 --重新指定去向(寶玉獸)
EFFECT_CHANGE_LEVEL_FINAL =314 --N/A
EFFECT_CHANGE_RANK_FINAL =315 --N/A
EFFECT_MUST_BE_FMATERIAL =316 --必须作为融合素材
EFFECT_MUST_BE_XMATERIAL =317 --必须作为超量素材
EFFECT_MUST_BE_LMATERIAL =318 --必须作为连接素材
EFFECT_SPSUMMON_PROC_G =320 --P召唤规则
EFFECT_SPSUMMON_COUNT_LIMIT =330 --特殊召唤次数限制
EFFECT_LEFT_SPSUMMON_COUNT =331 --剩餘召喚次數(召喚限制網)
EFFECT_CANNOT_SELECT_BATTLE_TARGET =332 --對手不能選擇為攻擊對象
EFFECT_CANNOT_SELECT_EFFECT_TARGET =333 --對手不能選擇為效果對象
EFFECT_ADD_SETCODE =334 --视为「XX」字段的效果
EFFECT_NO_EFFECT_DAMAGE =335 --玩家已受到"效果傷害變成0"的效果影響
EFFECT_UNSUMMONABLE_CARD =336 --N/A
EFFECT_DISABLE_CHAIN_FIELD =337 --N/A
EFFECT_DISCARD_COST_CHANGE =338 --反制陷阱捨棄手牌的代價改變(解放之阿里阿德涅)
EFFECT_HAND_SYNCHRO =339 --用手牌的怪獸當作同步素材
EFFECT_ADD_FUSION_CODE =340 --作为融合素材时可以当作某一卡名(融合识别)
EFFECT_ADD_FUSION_SETCODE =341 --作为融合素材时可以当作某一字段(魔玩具改造)
EFFECT_RISE_TO_FULL_HEIGHT =342 --N/A
EFFECT_ONLY_ATTACK_MONSTER =343 --只能攻擊X
EFFECT_MUST_ATTACK_MONSTER =344 --若攻擊則必須攻擊X
EFFECT_PATRICIAN_OF_DARKNESS =345 --由對手選擇攻擊對象(黑暗貴族)
EFFECT_EXTRA_ATTACK_MONSTER =346 --對怪獸攻擊X次
EFFECT_UNION_STATUS =347 --同盟状态
EFFECT_OLDUNION_STATUS =348 --旧同盟状态
EFFECT_ADD_FUSION_ATTRIBUTE =349 --reserve
EFFECT_REMOVE_FUSION_ATTRIBUTE =350 --reserve
EFFECT_CHANGE_FUSION_ATTRIBUTE =351 --用作融合素材时的属性
EFFECT_EXTRA_FUSION_MATERIAL =352 --增加融合素材(万溶炼金师)
EFFECT_TUNER_MATERIAL_LIMIT =353 --同调素材限制
EFFECT_ADD_LINK_CODE =354 --用作连接素材时的卡名
EFFECT_ADD_LINK_SETCODE =355 --reserve
EFFECT_ADD_LINK_ATTRIBUTE =356 --用作连接素材时的属性
EFFECT_ADD_LINK_RACE =357 --用作连接素材时的种族
EFFECT_EXTRA_LINK_MATERIAL =358 --手卡的连接素材
EFFECT_QP_ACT_IN_SET_TURN =359 --速攻魔法可以在盖放的回合发动
EFFECT_EXTRA_PENDULUM_SUMMON =360 --extra pendulum summon
EFFECT_MATERIAL_LIMIT =361 --
EFFECT_SET_BATTLE_ATTACK =362 --战斗的伤害计算用设置的攻击力进行
EFFECT_SET_BATTLE_DEFENSE =363 --战斗的伤害计算用设置的守备力进行
EFFECT_OVERLAY_RITUAL_MATERIAL =364 --此卡的超量素材也能用于仪式召唤
--下面是诱发效果的诱发事件、时点 (如果是TYPE_SINGLE则自己发生以下事件后触发,如果TYPE_FIELD则场上任何卡发生以下事件都触发)
EVENT_STARTUP =1000 --N/A
EVENT_FLIP =1001 --翻转时
EVENT_FREE_CHAIN =1002 --自由时点(强脱等,还有昴星团等诱发即时效果)
EVENT_DESTROY =1010 --確定被破壞的卡片移動前
EVENT_REMOVE =1011 --除外时
EVENT_TO_HAND =1012 --加入手牌时
EVENT_TO_DECK =1013 --回卡组时
EVENT_TO_GRAVE =1014 --送去墓地时(不含REASON_RETURN)
EVENT_LEAVE_FIELD =1015 --离场时
EVENT_CHANGE_POS =1016 --表示形式变更时
EVENT_RELEASE =1017 --解放时
EVENT_DISCARD =1018 --丢弃手牌时
EVENT_LEAVE_FIELD_P =1019 --離場的卡片移動前
EVENT_CHAIN_SOLVING =1020 --连锁处理开始时(EVENT_CHAIN_ACTIVATING之後)
EVENT_CHAIN_ACTIVATING =1021 --连锁处理准备中
EVENT_CHAIN_SOLVED =1022 --连锁处理结束时
EVENT_CHAIN_ACTIVATED =1023 --N/A
EVENT_CHAIN_NEGATED =1024 --连锁发动无效时(EVENT_CHAIN_ACTIVATING之後)
EVENT_CHAIN_DISABLED =1025 --连锁效果无效时
EVENT_CHAIN_END =1026 --连锁串结束时
EVENT_CHAINING =1027 --效果发动时
EVENT_BECOME_TARGET =1028 --成为效果对象时
EVENT_DESTROYED =1029 --被破坏时
EVENT_MOVE =1030 --移動卡片(急兔馬)
EVENT_ADJUST =1040 --adjust_all()调整後(御前试合)
EVENT_BREAK_EFFECT =1050 --Duel.BreakEffect()被调用时
EVENT_SUMMON_SUCCESS =1100 --通常召唤成功时
EVENT_FLIP_SUMMON_SUCCESS =1101 --翻转召唤成功时
EVENT_SPSUMMON_SUCCESS =1102 --特殊召唤成功时
EVENT_SUMMON =1103 --召唤之际(怪兽还没上场、神宣等时点)
EVENT_FLIP_SUMMON =1104 --翻转召唤之际
EVENT_SPSUMMON =1105 --特殊召唤之际
EVENT_MSET =1106 --放置怪兽时
EVENT_SSET =1107 --放置魔陷时
EVENT_BE_MATERIAL =1108 --作为融合/仪式同调/超量素材时
EVENT_BE_PRE_MATERIAL =1109 --将要作为融合/仪式同调/超量素材时
EVENT_DRAW =1110 --抽卡时
EVENT_DAMAGE =1111 --造成战斗/效果伤害时
EVENT_RECOVER =1112 --回复生命值时
EVENT_PREDRAW =1113 --抽卡阶段通常抽卡前
EVENT_SUMMON_NEGATED =1114 --召唤被无效时
EVENT_FLIP_SUMMON_NEGATED =1115 --反转召唤被无效时
EVENT_SPSUMMON_NEGATED =1116 --特殊召唤被无效时
EVENT_CONTROL_CHANGED =1120 --控制权变更
EVENT_EQUIP =1121 --装备卡装备时
EVENT_ATTACK_ANNOUNCE =1130 --攻击宣言时
EVENT_BE_BATTLE_TARGET =1131 --被选为攻击对象时
EVENT_BATTLE_START =1132 --伤害步骤开始时(反转前)
EVENT_BATTLE_CONFIRM =1133 --伤害计算前(反转後)
EVENT_PRE_DAMAGE_CALCULATE =1134 --伤害计算时(羽斬)
EVENT_DAMAGE_CALCULATING =1135 --N/A
EVENT_PRE_BATTLE_DAMAGE =1136 --即将产生战斗伤害(只能使用EFFECT_TYPE_CONTINUOUS)
EVENT_BATTLE_END =1137 --N/A
EVENT_BATTLED =1138 --伤害计算后(异女、同反转效果时点)
EVENT_BATTLE_DESTROYING =1139 --以战斗破坏怪兽送去墓地时(BF-苍炎之修罗)
EVENT_BATTLE_DESTROYED =1140 --被战斗破坏送去墓地时(杀人番茄等)
EVENT_DAMAGE_STEP_END =1141 --伤害步骤结束时
EVENT_ATTACK_DISABLED =1142 --攻击无效时(翻倍机会)
EVENT_BATTLE_DAMAGE =1143 --造成战斗伤害时
EVENT_TOSS_DICE =1150 --掷骰子的结果产生后
EVENT_TOSS_COIN =1151 --抛硬币的结果产生后
EVENT_TOSS_COIN_NEGATE =1152 --重新抛硬币
EVENT_TOSS_DICE_NEGATE =1153 --重新掷骰子
EVENT_LEVEL_UP =1200 --等级上升时
EVENT_PAY_LPCOST =1201 --支付生命值时
EVENT_DETACH_MATERIAL =1202 --去除超量素材时
EVENT_RETURN_TO_GRAVE =1203 --回到墓地时
EVENT_TURN_END =1210 --回合结束时
EVENT_PHASE =0x1000 --阶段结束时
EVENT_PHASE_START =0x2000 --阶段开始时
EVENT_ADD_COUNTER =0x10000 --增加指示物时
EVENT_REMOVE_COUNTER =0x20000 --去除指示物时(A指示物),Card.RemoveCounter()必須手動觸發此事件
EVENT_CUSTOM =0x10000000 --自訂事件
--Categorys 效果分类(表示这个效果将要发生什么事,OperationInfo设置了效果分类才能触发针对这一类型发动的卡,如破坏->星尘龙
CATEGORY_DESTROY =0x1 --破坏效果
CATEGORY_RELEASE =0x2 --解放效果
CATEGORY_REMOVE =0x4 --除外效果
CATEGORY_TOHAND =0x8 --回手牌效果
CATEGORY_TODECK =0x10 --回卡组效果
CATEGORY_TOGRAVE =0x20 --送去墓地效果
CATEGORY_DECKDES =0x40 --包含從卡组送去墓地或特殊召唤效果
CATEGORY_HANDES =0x80 --捨棄手牌效果
CATEGORY_SUMMON =0x100 --含召唤的效果
CATEGORY_SPECIAL_SUMMON =0x200 --含特殊召唤的效果
CATEGORY_TOKEN =0x400 --含衍生物效果
CATEGORY_GRAVE_ACTION =0x800 --包含特殊召喚以外移動墓地的卡的效果(屋敷わらし)
CATEGORY_POSITION =0x1000 --改变表示形式效果
CATEGORY_CONTROL =0x2000 --改变控制权效果
CATEGORY_DISABLE =0x4000 --使效果无效效果
CATEGORY_DISABLE_SUMMON =0x8000 --无效召唤效果
CATEGORY_DRAW =0x10000 --抽卡效果
CATEGORY_SEARCH =0x20000 --检索卡组效果
CATEGORY_EQUIP =0x40000 --装备效果
CATEGORY_DAMAGE =0x80000 --伤害效果
CATEGORY_RECOVER =0x100000 --回复效果
CATEGORY_ATKCHANGE =0x200000 --改变攻击效果
CATEGORY_DEFCHANGE =0x400000 --改变防御效果
CATEGORY_COUNTER =0x800000 --指示物效果
CATEGORY_COIN =0x1000000 --硬币效果
CATEGORY_DICE =0x2000000 --骰子效果
CATEGORY_LEAVE_GRAVE =0x4000000 --涉及墓地的效果(王家長眠之谷)
CATEGORY_LVCHANGE =0x8000000 --改变等级效果(为THC兼容性保留)
--CATEGORY_GRAVE_SPSUMMON =0x8000000 --包含從墓地特殊召喚的效果(屋敷わらし、冥神)
CATEGORY_NEGATE =0x10000000 --使发动无效效果
CATEGORY_ANNOUNCE =0x20000000 --發動時宣言卡名的效果
CATEGORY_FUSION_SUMMON =0x40000000 --融合召唤效果(暴走魔法阵)
CATEGORY_TOEXTRA =0x80000000 --回额外卡组效果
--Hint
HINT_EVENT =1
HINT_MESSAGE =2
HINT_SELECTMSG =3
HINT_OPSELECTED =4
HINT_EFFECT =5
HINT_RACE =6
HINT_ATTRIB =7
HINT_CODE =8
HINT_NUMBER =9
HINT_CARD =10
HINT_ZONE =11
--Card Hint
CHINT_TURN =1
CHINT_CARD =2
CHINT_RACE =3
CHINT_ATTRIBUTE =4
CHINT_NUMBER =5
CHINT_DESC =6
--Opcode
OPCODE_ADD =0x40000000
OPCODE_SUB =0x40000001
OPCODE_MUL =0x40000002
OPCODE_DIV =0x40000003
OPCODE_AND =0x40000004
OPCODE_OR =0x40000005
OPCODE_NEG =0x40000006
OPCODE_NOT =0x40000007
OPCODE_ISCODE =0x40000100
OPCODE_ISSETCARD =0x40000101
OPCODE_ISTYPE =0x40000102
OPCODE_ISRACE =0x40000103
OPCODE_ISATTRIBUTE =0x40000104
--
DOUBLE_DAMAGE =0x80000000
HALF_DAMAGE =0x80000001
--Hint Message --提示消息,显示在窗口的上面
HINTMSG_RELEASE =500 --请选择要解放的卡
HINTMSG_DISCARD =501 --请选择要丢弃的手牌
HINTMSG_DESTROY =502 --请选择要破坏的卡
HINTMSG_REMOVE =503 --请选择要除外的卡
HINTMSG_TOGRAVE =504 --请选择要送去墓地的卡
HINTMSG_RTOHAND =505 --请选择要返回手牌的卡
HINTMSG_ATOHAND =506 --请选择要加入手牌的卡
HINTMSG_TODECK =507 --请选择要返回卡组的卡
HINTMSG_SUMMON =508 --请选择要召唤的卡
HINTMSG_SPSUMMON =509 --请选择要特殊召唤的卡
HINTMSG_SET =510 --请选择要盖放的卡
HINTMSG_FMATERIAL =511 --请选择要作为融合素材的卡
HINTMSG_SMATERIAL =512 --请选择要作为同调素材的卡
HINTMSG_XMATERIAL =513 --请选择要作为超量素材的卡
HINTMSG_FACEUP =514 --请选择表侧表示的卡
HINTMSG_FACEDOWN =515 --请选择里侧表示的卡
HINTMSG_ATTACK =516 --请选择攻击表示的怪兽
HINTMSG_DEFENSE =517 --请选择守备表示的怪兽
HINTMSG_EQUIP =518 --请选择要装备的卡
HINTMSG_REMOVEXYZ =519 --请选择要取除的超量素材
HINTMSG_CONTROL =520 --请选择要改变控制权的怪兽
HINTMSG_DESREPLACE =521 --请选择要代替破坏的卡
HINTMSG_FACEUPATTACK =522 --请选择表侧攻击表示的怪兽
HINTMSG_FACEUPDEFENSE =523 --请选择表侧守备表示的怪兽
HINTMSG_FACEDOWNATTACK =524 --请选择里侧攻击表示的怪兽
HINTMSG_FACEDOWNDEFENSE =525 --请选择里侧守备表示的怪兽
HINTMSG_CONFIRM =526 --请选择给对方确认的卡
HINTMSG_TOFIELD =527 --请选择要放置到场上的卡
HINTMSG_POSCHANGE =528 --请选择要改变表示形式的怪兽
HINTMSG_SELF =529 --请选择自己的卡
HINTMSG_OPPO =530 --请选择对方的卡
HINTMSG_TRIBUTE =531 --请选择上级召唤用需要解放的怪兽
HINTMSG_DEATTACHFROM =532 --请选择要取除超量素材的怪兽
HINTMSG_LMATERIAL =533 --请选择要作为连接素材的卡
HINTMSG_ATTACKTARGET =549 --请选择攻击的对象
HINTMSG_EFFECT =550 --请选择要发动的效果
HINTMSG_TARGET =551 --请选择效果的对象
HINTMSG_COIN =552 --请选择硬币的正反面
HINTMSG_DICE =553 --请选择骰子的结果
HINTMSG_CARDTYPE =554 --请选择一个种类
HINTMSG_OPTION =555 --请选择一个选项
HINTMSG_RESOLVEEFFECT =556 --请选择要发动/处理的效果
HINTMSG_SELECT =560 --请选择
HINTMSG_POSITION =561 --请选择表示形式
HINTMSG_ATTRIBUTE =562 --请选择要宣言的属性
HINTMSG_RACE =563 --请选择要宣言的种族
HINTMSG_CODE =564 --请宣言一个卡名
HINGMSG_NUMBER =565 --请选择一个数字
HINGMSG_LVRANK =567 --请宣言一个等级
HINTMSG_RESOLVECARD =568 --请选择要处理效果的卡
HINTMSG_ZONE =569 --请选择[%ls]的位置
HINTMSG_DISABLEZONE =570 --请选择要变成不能使用的卡片区域
HINTMSG_TOZONE =571 --请选择要移动到的位置
HINTMSG_COUNTER =572 --请选择要放置指示物的卡
HINTMSG_DISABLE =573 --请选择要无效的卡
HINTMSG_OPERATECARD =574 --请选择要操作的卡
--Select --请选择
SELECT_HEADS =60 --正面
SELECT_TAILS =61 --反面
--Timing --提示时点,可以给freechain卡片增加自动提示时点
TIMING_DRAW_PHASE =0x1 --抽卡阶段时点
TIMING_STANDBY_PHASE =0x2 --准备阶段时点
TIMING_MAIN_END =0x4 --主要阶段结束时点
TIMING_BATTLE_START =0x8 --战斗阶段开始时点
TIMING_BATTLE_END =0x10 --战斗阶段结束时点
TIMING_END_PHASE =0x20 --结束阶段时点
TIMING_SUMMON =0x40 --召唤时点
TIMING_SPSUMMON =0x80 --特殊召唤时点
TIMING_FLIPSUMMON =0x100 --翻转召唤时点
TIMING_MSET =0x200 --放置怪兽时点
TIMING_SSET =0x400 --放置魔陷时点
TIMING_POS_CHANGE =0x800 --表示形式变更时点
TIMING_ATTACK =0x1000 --攻击宣言时点
TIMING_DAMAGE_STEP =0x2000 --伤害步骤时点
TIMING_DAMAGE_CAL =0x4000 --伤害计算时点
TIMING_CHAIN_END =0x8000 --连锁结束时点
TIMING_DRAW =0x10000 --抽卡时点(不是抽卡阶段
TIMING_DAMAGE =0x20000 --造成伤害时点
TIMING_RECOVER =0x40000 --回复时点
TIMING_DESTROY =0x80000 --破坏时点
TIMING_REMOVE =0x100000 --除外时点
TIMING_TOHAND =0x200000 --加入手牌时点(检索、回收等)
TIMING_TODECK =0x400000 --回卡组时点
TIMING_TOGRAVE =0x800000 --进墓地时点
TIMING_BATTLE_PHASE =0x1000000 --战斗阶段时点
TIMING_EQUIP =0x2000000 --装备时点
TIMING_BATTLE_STEP_END =0x4000000 --戰鬥步驟結束時
TIMING_BATTLED =0x8000000 --伤害计算后时点
----组合时点
TIMINGS_CHECK_MONSTER =0x1c0 -- 怪兽正面上场
--Global flag --特殊标记
GLOBALFLAG_DECK_REVERSE_CHECK =0x1 --卡组翻转标记
GLOBALFLAG_BRAINWASHING_CHECK =0x2 --洗脑解除标记
GLOBALFLAG_SCRAP_CHIMERA =0x4 --废铁奇美拉标记
GLOBALFLAG_DELAYED_QUICKEFFECT =0x8 --N/A
GLOBALFLAG_DETACH_EVENT =0x10 --EVENT_DETACH_MATERIAL
GLOBALFLAG_MUST_BE_SMATERIAL =0x20 --必须作为同调素材(波动龙 声子龙)
GLOBALFLAG_SPSUMMON_COUNT =0x40 --玩家的特殊召唤次数限制
GLOBALFLAG_XMAT_COUNT_LIMIT =0x80 --超量素材数量限制标记(光天使 天座)
GLOBALFLAG_SELF_TOGRAVE =0x100 --不入連鎖的送墓檢查(EFFECT_SELF_TOGRAVE)
GLOBALFLAG_SPSUMMON_ONCE =0x200 --1回合只能特殊召喚1次(Card.SetSPSummonOnce())
GLOBALFLAG_TUNE_MAGICIAN =0x400 --超量素材检查标记(调弦之魔术师)
--count_code
EFFECT_COUNT_CODE_OATH =0x10000000 --发动次数限制(誓约次数, 发动被无效不计数)
EFFECT_COUNT_CODE_DUEL =0x20000000 --决斗中使用次数
EFFECT_COUNT_CODE_SINGLE =0x1 --同一张卡的多个效果公共使用次数
--特殊选项
DUEL_TEST_MODE =0x01 --测试模式(目前暫無)
DUEL_ATTACK_FIRST_TURN =0x02 --第一回合可以攻击(用于残局)
DUEL_NO_CHAIN_HINT =0x04 --N/A
DUEL_OBSOLETE_RULING =0x08 --使用舊規則
DUEL_PSEUDO_SHUFFLE =0x10 --不洗牌
DUEL_TAG_MODE =0x20 --双打PP
DUEL_SIMPLE_AI =0x40 --AI(用于残局)
--Activity counter
--global: 1-6 (binary: 5,6)
--custom: 1-5,7 (binary: 1-5)
ACTIVITY_SUMMON =1 --
ACTIVITY_NORMALSUMMON =2 --
ACTIVITY_SPSUMMON =3 --
ACTIVITY_FLIPSUMMON =4 --
ACTIVITY_ATTACK =5 --
ACTIVITY_BATTLE_PHASE =6 -- not available in custom counter
ACTIVITY_CHAIN =7 -- only available in custom counter
--cards with double names
CARD_MARINE_DOLPHIN =78734254 --海洋海豚
CARD_TWINKLE_MOSS =13857930 --光輝苔蘚
CARD_QUESTION =38723936 --谜题
--
Gds={}
--
local Gdslist = {}
local Gdsflag=86300000
local Gdsflag2=86400000
--梦符自定义时点
function Gds.Adjustdreamsequence(c)
if Gds.Adjustdream == nil then
Gds.Adjustdream = true
--adjust
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PHASE_START+PHASE_DRAW)
e1:SetOperation(Gds.dsop)
Duel.RegisterEffect(e1,0)
local e2=Effect.GlobalEffect()
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_ADJUST)
e2:SetOperation(Gds.dsop2)
Duel.RegisterEffect(e2,0)
end
end
function Gds.dsop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(0,Gdsflag)>0 then return end
Duel.RegisterFlagEffect(0,Gdsflag,RESET_PHASE+PHASE_END,0,1)
local g=Duel.GetMatchingGroup(aux.TRUE,0,0xff,0xff,nil)
if g:GetCount()>0 then
local gc=g:GetCount()
for i=1,gc do
Gdslist[i]={}
end
local tc=g:GetFirst()
local ti=1
while tc do
Gdslist[ti][1]=tc
Gdslist[ti][2]=tc:GetSequence()
Gdslist[ti][3]=tc:GetFieldID()
tc:RegisterFlagEffect(Gdsflag+ti,RESET_PHASE+PHASE_END,0,1)
ti=ti+1
tc=g:GetNext()
end
end
end
function Gds.dsop2(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(0,Gdsflag)<=0 then return end
local g=Duel.GetMatchingGroup(aux.TRUE,0,LOCATION_DECK,LOCATION_DECK,nil):Filter(Card.IsOriginalSetCard,nil,0x279)
local tc=g:GetFirst()
while tc do
local ti=1
local ci=1
while ti>0 do
if tc:GetFlagEffect(Gdsflag+ti)>0 then
ci=ti
ti=0
else
ti=ti+1
end
end
local seq=tc:GetSequence()
local fid=tc:GetFieldID()
local dtseq=Duel.GetFieldGroupCount(tc:GetControler(),LOCATION_DECK,0)-1
if seq==0 and seq~=Gdslist[ci][2] and fid==Gdslist[ci][3] and tc:IsLocation(LOCATION_DECK) then
Duel.RaiseEvent(tc,EVENT_CUSTOM+86379010,e,0,0,tc:GetControler(),seq)
end
if seq==dtseq and seq~=Gdslist[ci][2] and fid==Gdslist[ci][3] and tc:IsLocation(LOCATION_DECK) then
tc:RegisterFlagEffect(Gdsflag2,RESET_EVENT+0x1fe0000,0,1)
if tc:GetFlagEffect(Gdsflag2)<2 then
Duel.RaiseEvent(tc,EVENT_CUSTOM+86379010,e,0,0,tc:GetControler(),seq)
end
end
if seq~=dtseq then
if tc:GetFlagEffect(Gdsflag2)>0 then
tc:ResetFlagEffect(Gdsflag2)
end
end
Gdslist[ci][2]=tc:GetSequence()
Gdslist[ci][3]=tc:GetFieldID()
tc=g:GetNext()
end
end
--检查卡组中公开的卡
function Gds.Checkdeckpublic(c)
if Gds.Checkdeck == nil then
Gds.Checkdeck = true
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(86379011,2))
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetRange(LOCATION_DECK)
e1:SetCondition(Gds.cdpcon)
e1:SetOperation(Gds.cdpop)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_GRANT)
e2:SetTargetRange(LOCATION_DECK,LOCATION_DECK)
e2:SetTarget(Gds.efcdptg)
e2:SetLabelObject(e1)
Duel.RegisterEffect(e2,0)
end
end
function Gds.cdpcon(e,tp,eg,ep,ev,re,r,rp)
local tp=e:GetHandlerPlayer()
local c=e:GetHandler()
return Duel.GetCurrentChain()==0 and (c:IsFaceup() or Duel.IsPlayerAffectedByEffect(tp,31027))
end
function Gds.cdpfilter(c)
return c:IsFaceup() or Duel.IsPlayerAffectedByEffect(c:GetControler(),31027)
end
function Gds.cdpop(e,tp,eg,ep,ev,re,r,rp)
local tp=e:GetHandlerPlayer()
local g=Duel.GetMatchingGroup(Gds.cdpfilter,tp,LOCATION_DECK,0,nil)
if g:GetCount()>0 then
Duel.ConfirmCards(tp,g)
end
end
function Gds.efcdptg(e,c)
local tp=c:GetControler()
local g=Duel.GetMatchingGroup(Gds.cdpfilter,tp,LOCATION_DECK,0,nil)
if g:GetCount()<=0 then return false end
return g:IsContains(c)
end
Arcol={}
function Arcol.GetLostCode(c)
if c:GetOriginalCode()==22001 then
return 22035
elseif c:GetOriginalCode()==20026 then
return 20044
elseif c:IsOriginalSetCard(0x338) then
return 999101
elseif c:IsOriginalSetCard(0x300) then
return 86379247
elseif c:IsOriginalSetCard(0xaa5) then
return 86379744
elseif c:IsOriginalSetCard(0x226,0x703) then
return 86379009
else return false end
end
\ No newline at end of file
Millux={}
os=require('os')
table=require('table')
io=require('io')
function Millux.rabat_return(c,code,num)
--return
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetOperation
(function(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(code,num))
e1:SetCategory(CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e1:SetRange(LOCATION_MZONE)
e1:SetCountLimit(1)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCondition(
function(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsHasEffect(50008207)
end)
e1:SetTarget(
function(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0)
end)
e1:SetOperation(
function(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) then
Duel.SendtoHand(c,nil,REASON_EFFECT)
end
end)
e1:SetReset(RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetProperty(0)
e2:SetCondition(
function(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsHasEffect(50008207)
end)
c:RegisterEffect(e2)
end)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e2)
end
function Millux.return_con(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousPosition(POS_FACEUP) and e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
end
function Millux.penlimit(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_CANNOT_NEGATE)
e1:SetRange(LOCATION_PZONE)
e1:SetTargetRange(1,0)
e1:SetTarget(Millux.splimit)
c:RegisterEffect(e1)
end
function Millux.splimit(e,c,sump,sumtype,sumpos,targetp)
if c:IsRitualType(TYPE_RITUAL) then return false end
return bit.band(sumtype,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end
Millux.loaded_metatable_list=Millux.loaded_metatable_list or {}
function Millux.LoadMetatable(code)
local m1=_G["c"..code]
if m1 then return m1 end
local m2=Millux.loaded_metatable_list[code]
if m2 then return m2 end
_G["c"..code]={}
if pcall(function() dofile("expansions/script/c"..code..".lua") end) or pcall(function() dofile("script/c"..code..".lua") end) then
local mt=_G["c"..code]
_G["c"..code]=nil
if mt then
Millux.loaded_metatable_list[code]=mt
return mt
end
else
_G["c"..code]=nil
end
end
function Millux.is_series(c,series,v,f,...)
local codet=nil
if type(c)=="number" then
codet={c}
elseif type(c)=="table" then
codet=c
elseif type(c)=="userdata" then
local f=f or Card.GetCode
codet={f(c)}
end
local ncodet={...}
for i,code in pairs(codet) do
for i,ncode in pairs(ncodet) do
if code==ncode then return true end
end
local mt=Millux.LoadMetatable(code)
if mt and mt["is_series_with_"..series] and (not v or mt["is_series_with_"..series]==v) then return true end
end
return false
end
function Millux.cannot_acctivate(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_CANNOT_ACTIVATE)
e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(0,1)
e1:SetValue(aclimit)
e1:SetCondition(actcon)
c:RegisterEffect(e1)
end
function aclimit(e,re,tp)
return not re:GetHandler():IsImmuneToEffect(e)
end
function actcon(e)
return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()
end
return Millux
--
Afi={}
--AFI
local AFI = false
EVENT_ADJ_LOC = 2000
EVENT_ADJ_ATK = 2001
EVENT_ADJ_DEF = 2002
EVENT_ADJ_LEV = 2003
EVENT_ADJ_RANK = 2004
EVENT_ADJ_RACE = 2005
EVENT_ADJ_ATTR = 2006
EVENT_ADJ_DISABLE = 2007
local ms = {}
ms[0] = {}
ms[1] = {}
for i = 0, 6 do
ms[0][i] = {}
ms[1][i] = {}
end
local lasts = {}
function Afi.AdjustFieldInfoStore(c)
if AFI == true then return end
AFI = true
--store
local g=Group.CreateGroup()
g:KeepAlive()
--adjust
local e0 = Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e0:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE)
e0:SetCode(EVENT_ADJUST)
e0:SetOperation(Afi.AdjustFieldInfoCheck)
e0:SetLabelObject(g)
Duel.RegisterEffect(e0, 0)
end
function Afi.AdjustFieldInfoCheck(e,tp,eg,ep,ev,re,r,rp)
--define
local g = Duel.GetMatchingGroup(aux.TRUE, tp, LOCATION_MZONE, LOCATION_MZONE, nil)
local preg = e:GetLabelObject()
if g:GetCount()>0 then
--check
Afi.AdjustFieldInfoCheckMI(g, preg, e)
--renew
preg:Clear()
preg:Merge(g)
Afi.AdjustFieldInfoRenewMI(g)
else
if preg:GetCount()==0 then return end
preg:Clear()
end
end
function Afi.AdjustFieldInfoCheckMI(g, preg, e)
local n = -1 -- now seq
local p = -1 -- now player
local pn = -1 -- pre seq
local pp = -1 -- pre player
local tempg1 = {} -- up group(newVal > oldVal or cannot compare)
local tempg2 = {} -- down group(newVal < oldVal)
local isChange = not g:Equal(preg)
for i = 0, 7 do
tempg1[i] = Group.CreateGroup()
tempg2[i] = Group.CreateGroup()
end
local tempc = g:GetFirst()
while(tempc) do
p = tempc:GetControler()
n = tempc:GetSequence()
if preg:IsContains(tempc) then
pp, pn = Afi.AdjustFieldInfoFindMI(tempc)
if pp < 0 or pn < 0 or ms[pp][pn][-1] ~= tempc:GetFieldID() then
-- do nothing
else
if n ~= pn and p == pp then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_LOC, e, 0, 0, 0, pn)
tempg1[0]:AddCard(tempc)
end
--
local attack = ms[pp][pn][1]
if attack ~= tempc:GetAttack() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_ATK, e, 0, 0, 0, attack)
if attack < tempc:GetAttack() then
tempg1[1]:AddCard(tempc)
else
tempg2[1]:AddCard(tempc)
end
end
--
local def = ms[pp][pn][2]
if def ~= tempc:GetDefense() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_DEF, e, 0, 0, 0, def)
if def < tempc:GetDefense() then
tempg1[2]:AddCard(tempc)
else
tempg2[2]:AddCard(tempc)
end
end
--
local lv = ms[pp][pn][3]
if lv ~= tempc:GetLevel() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_LEV, e, 0, 0, 0, lv)
if lv < tempc:GetLevel() then
tempg1[3]:AddCard(tempc)
else
tempg2[3]:AddCard(tempc)
end
end
--
local rank = ms[pp][pn][4]
if rank ~= tempc:GetRank() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_RANK, e, 0, 0, 0, rank)
if rank < tempc:GetRank() then
tempg1[4]:AddCard(tempc)
else
tempg2[4]:AddCard(tempc)
end
end
--
local race = ms[pp][pn][5]
if race ~= tempc:GetRace() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_RACE, e, 0, 0, 0, race)
tempg1[5]:AddCard(tempc)
end
--
local attr = ms[pp][pn][6]
if attr ~= tempc:GetAttribute() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_ATTR, e, 0, 0, 0, attr)
tempg1[6]:AddCard(tempc)
end
--
local disable = ms[pp][pn][7]
if disable ~= tempc:IsDisabled() then
if tempc:IsDisabled() then
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_DISABLE, e, 0, 0, 0, 1)
else
Duel.RaiseSingleEvent(tempc, EVENT_ADJ_DISABLE, e, 0, 0, 0, 2)
end
if disable == false then
tempg1[7]:AddCard(tempc)
else
tempg2[7]:AddCard(tempc)
end
end
end
end
tempc = g:GetNext()
end
for i = 0, 7 do
if tempg1[i]:GetCount() > 0 then
Duel.RaiseEvent(tempg1[i], 2000+i, e, 0, 0, 0, 1)
isChange = true
end
if tempg2[i]:GetCount() > 0 then
Duel.RaiseEvent(tempg2[i], 2000+i, e, 0, 0, 0, 2)
isChange = true
end
end
if isChange then
lasts = Nef.DeepCopy(ms)
end
end
function Afi.AdjustFieldInfoRenewMI(g)
local n = -1
local p = -1
for i = 0, 6 do
ms[0][i][0] = nil
ms[1][i][0] = nil
end
tempc = g:GetFirst()
while(tempc) do
n = tempc:GetSequence()
p = tempc:GetControler()
ms[p][n][0] = tempc
ms[p][n][-1] = tempc:GetFieldID()
ms[p][n][1] = tempc:GetAttack()
ms[p][n][2] = tempc:GetDefense()
ms[p][n][3] = tempc:GetLevel()
ms[p][n][4] = tempc:GetRank()
ms[p][n][5] = tempc:GetRace()
ms[p][n][6] = tempc:GetAttribute()
ms[p][n][7] = tempc:IsDisabled()
tempc = g:GetNext()
end
end
function Afi.AdjustFieldInfoFindMI(c)
local i, j
for i = 0, 1 do
for j = 0, 6 do
if ms[i][j][0] == c then return i, j end
end
end
return -1, -1
end
function Afi.AFIFindLastMI(c)
local i, j
for i = 0, 1 do
for j = 0, 6 do
if lasts[i][j][0] == c then return i, j end
end
end
return -1, -1
end
\ No newline at end of file
CardList = CardList or {}
CardList.Main={
10000,
10001,
10002,
10007,
10010,
10011,
-- 10013,
10014,
10015,
-- 10016,
10018,
10020,
10027,
10051,
10054,
10057,
10060,
10067,
10068,
10069,
10071,
10072,
10073,
10074,
10086,
10087,
10089,
10099,
10100,
10101,
10102,
10113,
10114,
10115,
10116,
10204,
10207,
10222,
10246,
10255,
10256,
10258,
10260,
10262,
10270,
10271,
10273,
10275,
10276,
10278,
10281,
10282,
10283,
10285,
10286,
10289,
10304,
10307,
10322,
10330,
10333,
10335,
10356,
10358,
10361,
10362,
10363,
10364,
10365,
10366,
10368,
10369,
10370,
10371,
10372,
10373,
10374,
10375,
10376,
10377,
10380,
10381,
10382,
10383,
10386,
11001,
11004,
11007,
11010,
11011,
11036,
11038,
12001,
12002,
12004,
12006,
12012,
12014,
12016,
12020,
13001,
13005,
13006,
13009,
13014,
13016,
13021,
13031,
13033,
13035,
13039,
13040,
13041,
13044,
13047,
13049,
13051,
13052,
13053,
13054,
13055,
13056,
13057,
13058,
13059,
13060,
13068,
13069,
13070,
13072,
13075,
13078,
13080,
13083,
13084,
13085,
14001,
14003,
14007,
14010,
14013,
14021,
14022,
14023,
14026,
14028,
14029,
14030,
14033,
14034,
14035,
14036,
14037,
14038,
14039,
14041,
14042,
14044,
14046,
14051,
14052,
14053,
14055,
14056,
14058,
14061,
14062,
14075,
15001,
15004,
15007,
15010,
15013,
15016,
15019,
15020,
15024,
15025,
15026,
15029,
15030,
15032,
15037,
15038,
15039,
15040,
15041,
15043,
15045,
15046,
-- 15050,
15055,
15056,
15057,
15062,
15063,
15064,
15065,
15066,
15067,
15068,
15069,
15077,
15080,
15099,
19001,
19002,
19003,
19005,
19032,
20001,
20003,
20004,
20007,
20018,
20020,
20022,
20025,
20026,
20027,
20031,
20032,
20044,
20048,
20049,
20050,
20052,
20053,
20054,
20055,
20056,
20057,
20058,
20059,
20068,
20069,
20070,
20071,
20073,
20075,
20076,
20078,
20080,
20083,
20084,
20085,
20086,
20088,
20090,
20091,
20092,
20093,
20094,
20095,
20096,
20097,
20098,
20099,
20101,
20104,
20107,
20110,
20114,
20115,
20116,
20117,
20118,
20119,
20120,
20123,
20128,
20135,
20136,
20140,
20142,
20144,
20146,
20148,
20149,
20150,
20151,
20153,
20155,
20156,
20157,
20158,
20159,
20160,
20161,
20162,
20163,
20166,
20168,
20170,
20171,
20172,
20173,
20174,
20175,
20176,
20177,
20178,
20179,
20181,
20184,
20187,
20188,
20190,
20191,
20192,
20193,
20194,
20195,
20196,
20197,
20198,
20199,
20200,
20201,
20202,
20203,
20204,
20205,
20206,
20207,
20208,
20209,
20210,
20211,
20212,
20214,
20216,
20217,
20218,
20219,
20220,
20223,
20224,
20225,
20226,
20227,
20228,
20235,
20236,
20237,
20238,
20239,
20240,
20241,
20248,
20252,
20254,
20255,
20256,
20257,
20258,
20259,
20261,
20263,
20265,
20267,
20269,
20290,
20299,
-- 20300,
20301,
20302,
21001,
21003,
21005,
21006,
21009,
21012,
21013,
21014,
21027,
21028,
21029,
21031,
21033,
21034,
21036,
21039,
21041,
21042,
21043,
21044,
21045,
21046,
21047,
21048,
21049,
21050,
21051,
21052,
21053,
21054,
21055,
21056,
21057,
21058,
21069,
21071,
21074,
21077,
21080,
21083,
21085,
21091,
21094,
21099,
21100,
21101,
21102,
21103,
21105,
21109,
21113,
21119,
21120,
21121,
21122,
21123,
21124,
21125,
21126,
21127,
21128,
21129,
21130,
21131,
21133,
21136,
21139,
21145,
21146,
21147,
21153,
21154,
21160,
21164,
21200,
22001,
22002,
22004,
22005,
22008,
22009,
22011,
22012,
22014,
22015,
22017,
22018,
22020,
22021,
22033,
22035,
22056,
22057,
22060,
22061,
22064,
22066,
22075,
22076,
22077,
22084,
22085,
22086,
22087,
22088,
22089,
22090,
22093,
22100,
22103,
22104,
22105,
22106,
22107,
22108,
22109,
22110,
22111,
22112,
22113,
22114,
22115,
22116,
22117,
22118,
22120,
22121,
22122,
22123,
22124,
22127,
22130,
22131,
22132,
22133,
22134,
22135,
22161,
22162,
22191,
22200,
22201,
22202,
22204,
22205,
22206,
22207,
22211,
22212,
22215,
22216,
22218,
22221,
22222,
22223,
22225,
22249,
22250,
22251,
22252,
22255,
22299,
22300,
22301,
22400,
22661,
22662,
22666,
23001,
23004,
23007,
23010,
23013,
23016,
23019,
23020,
23021,
23028,
23034,
23035,
23036,
23037,
23038,
23039,
23040,
23041,
23042,
23045,
23046,
23047,
23050,
23051,
23052,
23053,
23056,
23057,
23058,
23059,
23060,
23073,
23076,
23080,
23081,
23082,
23083,
23086,
23087,
23090,
23093,
23096,
23099,
23101,
23107,
23120,
23123,
23137,
23138,
23139,
23140,
23143,
23144,
23145,
23146,
23156,
23168,
23175,
23178,
23179,
23185,
23188,
23191,
23194,
23197,
23200,
23201,
23202,
23203,
23204,
23205,
23206,
23210,
23230,
23234,
23235,
23236,
23237,
23238,
23240,
23241,
23242,
23249,
23252,
23253,
23254,
23257,
23300,
24001,
24002,
24004,
24005,
24007,
24008,
24010,
24011,
24016,
24017,
24018,
24019,
24020,
24025,
24031,
24033,
24034,
24035,
24036,
24037,
24038,
24039,
24040,
24041,
24042,
24043,
24044,
24045,
24047,
24049,
24051,
24053,
24054,
24055,
24057,
24059,
24061,
24062,
24065,
24074,
24077,
24078,
24079,
24083,
24086,
24088,
24091,
24094,
24099,
24104,
24105,
24106,
24107,
24108,
24111,
24115,
24116,
24117,
24121,
24123,
24135,
24136,
24137,
24138,
24142,
24145,
24148,
24151,
24152,
24153,
24161,
24162,
24235,
24240,
25020,
25021,
25022,
25029,
25030,
25031,
25032,
25040,
25041,
25043,
25044,
25046,
25048,
25049,
25050,
25051,
25053,
25056,
25059,
25060,
25061,
25064,
25067,
25068,
25069,
25070,
25071,
25072,
25073,
25074,
25075,
25081,
25082,
25083,
25084,
25085,
25091,
25093,
25095,
25096,
25098,
25099,
25101,
25102,
25103,
25104,
25105,
25106,
25107,
25108,
25115,
25116,
25117,
25118,
25119,
25122,
25127,
25128,
25129,
25130,
25131,
25133,
25138,
25139,
25144,
25147,
25150,
25151,
25152,
25153,
25154,
25155,
25164,
25167,
25175,
25176,
25301,
25304,
25307,
25310,
25313,
25316,
25319,
25322,
25325,
25328,
25331,
25334,
25337,
25343,
25346,
25349,
25350,
25351,
25352,
25353,
26001,
26004,
26007,
26009,
26011,
26012,
26013,
26014,
26049,
26050,
26051,
26052,
26053,
26054,
26055,
26056,
26057,
26058,
26059,
26060,
26061,
26062,
26063,
26064,
26065,
26066,
26067,
26068,
26069,
26070,
26071,
26075,
26076,
26077,
26081,
26082,
26084,
26085,
26086,
26087,
26088,
26091,
26092,
26093,
26100,
26103,
26106,
26108,
26110,
26113,
26116,
26119,
26122,
26125,
26126,
26135,
26136,
26137,
26138,
26139,
26140,
-- 26142,
26143,
26144,
26145,
26150,
26185,
26186,
27001,
27002,
27004,
27005,
27007,
27008,
27010,
27011,
27013,
27014,
27016,
27017,
27021,
27022,
27023,
27024,
27025,
27026,
27027,
27028,
27029,
27030,
27033,
27036,
27041,
27042,
27043,
27046,
27052,
27061,
27062,
27063,
27064,
27067,
27071,
27073,
27076,
27079,
27088,
27089,
27092,
27093,
27096,
27097,
27098,
27099,
27101,
27106,
27107,
27108,
27109,
27110,
27111,
27113,
27115,
27119,
27122,
27125,
27127,
27130,
27133,
27136,
27139,
27145,
27146,
27147,
27148,
28001,
28002,
28003,
28006,
28007,
28008,
28011,
28012,
28016,
28017,
28022,
28025,
28035,
28036,
28037,
28039,
28041,
28044,
28050,
28064,
29001,
29003,
29006,
29009,
29012,
29014,
29016,
29019,
29030,
29035,
29036,
29037,
29038,
29039,
29040,
29041,
29042,
29043,
29044,
29084,
31001,
31004,
31007,
31010,
31011,
31013,
31018,
31021,
31051,
31052,
31053,
31054,
31055,
31063,
32001,
32004,
32007,
32009,
32012,
32015,
32018,
32020,
32022,
32035,
32039,
32042,
32045,
32047,
40001,
40003,
40006,
40009,
40012,
40016,
40019,
40022,
40025,
40028,
40030,
40031,
40032,
40033,
40034,
40035,
40036,
40037,
40039,
51105,
51106,
51107,
51108,
51109,
51110,
51111,
51112,
51201,
51203,
51204,
51205,
51206,
51207,
60001,
60005,
60010,
60015,
60020,
60024,
60026,
60029,
60033,
60038,
60040,
60042,
60081,
60082,
60083,
60084,
60085,
60087,
60088,
60090,
60091,
60105,
60203,
60218,
60404,
60419,
60505,
60520,
60605,
60707,
60722,
60806,
60822,
61007,
61023,
61107,
61122,
61207,
64010,
70001,
70007,
70013,
70019,
70023,
70027,
70030,
70036,
70042,
70047,
70052,
70053,
70054,
70055,
70060,
70061,
70062,
70063,
70064,
70065,
70066,
70081,
70082,
70083,
70084,
70091,
70093,
70094,
71101,
71102,
71103,
71104,
71105,
71106,
71107,
71108,
71201,
71202,
71204,
71205,
71207,
71208,
82430,
82431,
82432,
82434,
82435,
91211,
200001,
200002,
200003,
200004,
200005,
200006,
200009,
200010,
200012,
200013,
200014,
200015,
200016,
200017,
200018,
200019,
200020,
200021,
200201,
200202,
200203,
200204,
200205,
200206,
200207,
200208,
200209,
200210,
200211,
200212,
200213,
200214,
200215,
200216,
200217,
200218,
200219,
200220,
200221,
200301,
200302,
200304,
200305,
210001,
210002,
210003,
210004,
210005,
210006,
210007,
210011,
210012,
210013,
210014,
210015,
210016,
210017,
210018,
210019,
210020,
210021,
401103,
401104,
401105,
401106,
401107,
401108,
401109,
401110,
401203,
401205,
401206,
401207,
401208,
401401,
401402,
401403,
401404,
401405,
401421,
421401,
421402,
421403,
421404,
421405,
421406,
421407,
421408,
912104,
999004,
999006,
999007,
999010,
999011,
999101,
999102,
999103,
999104,
999105,
999106,
999107,
999108,
999109,
999110,
999201,
999202,
999203,
999204,
999205,
999207,
999210,
999211,
999212,
999214,
999215,
999301,
999302,
999305,
999306,
999307,
999308,
999309,
999310,
999401,
999402,
999403,
999404,
999405,
999406,
999407,
999408,
999410,
999411,
999501,
999505,
999506,
999509,
999510,
999511,
999512,
999514,
999515,
999516,
999517,
999601,
999602,
999603,
999604,
999605,
999606,
999701,
999703,
999705,
999710,
999711,
999712,
999713,
999714,
999715,
999716,
999717,
999901,
999902,
999903,
999904,
999905,
999906,
999907,
999908,
999909,
999910,
999911,
999912,
999913,
999918,
999920,
1153201,
1153211,
1153301,
1153602,
1153607,
1158001,
1192020,
1199001,
4031101,
4031102,
4031103,
4031104,
4031105,
4031106,
4031201,
7001000,
7001001,
7001100,
7001101,
7001102,
7001103,
7001104,
7001200,
7001201,
7770005,
7770006,
7770007,
7770017,
7770018,
7770020,
7770021,
7770025,
7770057,
7770063,
7770069,
7770072,
7770075,
7770081,
7770093,
7770102,
7770108,
7770114,
7770133,
7770187,
7770196,
10000000,
10000001,
13000000,
13000003,
13000006,
13000009,
13000012,
13000015,
13001000,
13001015,
13001018,
13001021,
13001024,
13001027,
13001030,
13001033,
13001036,
13002000,
13002003,
13002018,
13940000,
13940001,
13940003,
13940004,
13940006,
13940007,
13940008,
13940009,
13940010,
-- 14000021,
-- 14000022,
-- 14000023,
-- 14000024,
-- 14000025,
-- 14000027,
-- 14000028,
-- 14000029,
-- 14000030,
-- 14000032,
-- 14000033,
-- 14000036,
-- 14000037,
14000055,
14000056,
14000057,
14000058,
14000059,
14000066,
14000067,
14000068,
-- 14000145,
-- 14000146,
-- 14000147,
-- 14000148,
-- 14000149,
-- 14000150,
-- 14000151,
-- 14000152,
-- 14000153,
14000260,
14000262,
14000267,
14000268,
14000269,
14000270,
14000272,
14000273,
14000274,
14000275,
14000276,
14000277,
14000284,
-- 14000351,
-- 14000352,
-- 14000353,
-- 14000354,
-- 14000355,
-- 14000356,
-- 14000357,
-- 14000358,
-- 14000359,
-- 14000360,
-- 14000361,
-- 14000362,
-- 14000363,
-- 14000364,
-- 14000365,
-- 14000366,
-- 14000367,
-- 14000368,
14000531,
14000532,
14000533,
14000534,
14000535,
14000536,
14000537,
14000556,
14000557,
14000558,
14000559,
14000560,
14000561,
14000562,
14000563,
14050011,
14050012,
14050013,
14050014,
14050015,
14050016,
14050017,
14050018,
14050019,
14050020,
14090016,
14090017,
14090018,
14090019,
14090020,
14090021,
14090025,
14090026,
14090027,
14090030,
15511551,
15511554,
15511557,
15511560,
15511563,
15511566,
16000002,
16000006,
16000007,
16000009,
16001001,
16001101,
16001102,
16001104,
16002001,
16010002,
16010003,
16011201,
16011202,
16011501,
16030000,
16030001,
16030002,
16030003,
16030004,
16031201,
16032001,
16040000,
16040001,
16041001,
16041002,
16041201,
16041301,
16041501,
16061002,
16061201,
16061501,
17029010,
17029230,
17030010,
17030020,
17030030,
17030040,
17030050,
17030060,
17030070,
17030080,
17030090,
17030100,
17030120,
17030160,
17030170,
17030180,
17030190,
17030210,
17030220,
17030600,
17030601,
17033000,
17035010,
17035020,
17035021,
17035022,
17035023,
17035030,
17035040,
17035200,
17035210,
17035220,
17035230,
17035250,
17035410,
17035411,
17035420,
17035430,
17035440,
17035450,
17035460,
17035461,
17045007,
17050904,
17050931,
17052929,
17052930,
17052931,
17052932,
17052933,
17052935,
17052938,
17060810,
17060820,
17060830,
17060840,
17060850,
17060860,
17060870,
17060880,
17060945,
17061030,
17061080,
17061120,
17061121,
17061160,
17061210,
17061220,
17061610,
17061620,
17061630,
19114515,
19114517,
19114520,
19114521,
19114522,
19214520,
19214524,
19214530,
19214535,
19214538,
19214543,
21470001,
21470002,
21470003,
21470004,
21470005,
21470006,
21470007,
21470008,
21470009,
21470010,
21470011,
21470012,
21470013,
21470017,
21470018,
21470019,
21470020,
21470022,
21470023,
21470101,
21470102,
21470103,
22200001,
22200002,
22200003,
22201001,
22201002,
22201003,
22201004,
22201007,
22201008,
22201101,
22201102,
22201103,
22201104,
22201105,
22202001,
22202002,
22202003,
22202004,
22202005,
22202007,
22202008,
22202009,
22202010,
22202101,
22202102,
22202103,
22202201,
22202202,
-- 22230001,
-- 22230002,
-- 22230003,
-- 22230004,
-- 22230005,
-- 22230006,
-- 22230007,
-- 22230008,
-- 22231001,
-- 22232001,
-- 22232101,
22260001,
22260002,
22260003,
22260901,
22260902,
22260903,
22261101,
22261102,
22261103,
22262201,
-- 22271101,
-- 22271102,
-- 22271103,
-- 22271104,
-- 22271105,
-- 22271106,
22291001,
22291102,
22292001,
22292002,
22292003,
22292004,
22292005,
22292006,
22292007,
22292009,
22292011,
22292012,
22292101,
22292201,
33330078,
-- 50008100,
-- 50008101,
-- 50008102,
-- 50008103,
-- 50008106,
-- 50008108,
-- 50008109,
66915001,
66915002,
66915003,
66915004,
66915005,
66915008,
66915009,
66915010,
66915011,
66915012,
66915013,
66915014,
66915015,
66915017,
66915018,
66915021,
66915023,
66915025,
66915027,
66915028,
66915029,
66915030,
66915032,
66915034,
66915035,
66915036,
66915040,
66915041,
66916000,
66916001,
66916002,
66916006,
66916009,
66917000,
66917001,
66917015,
66917016,
66919000,
66919002,
66919003,
66919004,
66919005,
66919006,
66919008,
74560001,
74560002,
74560003,
74560004,
74560005,
74560006,
74560007,
74560009,
74560010,
74560011,
74560016,
74560017,
74560018,
74560019,
74561002,
74561003,
74561005,
74561009,
74561010,
74561011,
74561013,
74561015,
74561019,
74561020,
74561021,
74561023,
74561032,
74561037,
74561405,
74561415,
74562002,
74562005,
74562008,
74562009,
74562010,
74562011,
74562012,
74562013,
74562014,
74562015,
74562016,
74562017,
86379106,
86379108,
86379110,
86379112,
86379114,
86379116,
86379122,
86379144,
86379146,
86379152,
86379162,
86379164,
86379166,
86379168,
86379172,
86379184,
86379186,
86379201,
86379203,
86379205,
86379207,
86379209,
86379211,
86379213,
86379215,
86379217,
86379219,
86379221,
86379223,
86379225,
86379231,
86379233,
86379237,
86379239,
86379241,
86379243,
86379245,
86379247,
86379251,
86379253,
86379255,
86379257,
86379259,
86379261,
86379265,
86379267,
86379269,
86379270,
86379273,
86379301,
86379303,
86379305,
86379307,
86379309,
86379315,
86379317,
86379319,
86379321,
86379323,
86379325,
86379327,
86379329,
86379331,
86379333,
86379335,
86379337,
86379341,
86379343,
86379345,
86379347,
86379401,
86379417,
86379419,
86379421,
86379423,
86379425,
86379429,
86379431,
86379433,
86379435,
86379439,
86379501,
-- 86379503,
-- 86379505,
86379507,
86379509,
86379519,
86379601,
86379603,
86379605,
86379607,
86379609,
86379611,
86379613,
86379617,
86379619,
86379627,
86379629,
86379631,
86379633,
86379656,
86379658,
86379660,
86379666,
86379668,
86379700,
86379702,
86379703,
86379704,
86379706,
86379708,
86379710,
86379712,
86379716,
86379718,
86379720,
86379722,
86379724,
86379726,
86379728,
86379734,
86379736,
86379738,
86379740,
86379742,
86379744,
86379746,
86379748,
86379750,
86379752,
86379754,
86379758,
86379760,
86379762,
86379766,
86379768,
86379770,
86379772,
86379774,
86379776,
86379779,
86379781,
86379785,
86379787,
86379789,
86379791,
86379795,
86379796,
86379797,
86379798,
86379801,
86379803,
86379805,
86379807,
86379809,
86379811,
86379813,
86379815,
86379817,
86379819,
86379850,
86379852,
86379854,
86379856,
86379900,
86379901,
86379903,
86379905,
86379907,
86379921,
86379923,
86379925,
86379927,
86379931,
86379933,
-- 86379935,
86379937,
-- 86379939,
86379999,
99677002,
99677703,
99677704,
99677707,
99677708,
99677709,
99677711,
99677712,
99677713,
99677714,
99677715,
99677720,
99677797,
-- 99677799,
17061480, --1.999z2
60305,
20304,
86379821,
25135,
17035570,
86379823,
20100225, --1.999z4
20100227,
20100204,
20100206,
20100208,
20100200,
20100202,
20100239,
20100240,
-- 86379837,
99999001,
20100235,
20100241,
20100243,
20100245,
20100247,
20100249,
20100251,
20100253,
20100255,
20100257,
20100259,
20100262,
20100264,
20100266,
20100268,
20100270,
20100272,
20100233,
20100236,
27059,
20305,
27035,
27039,
27038
}
CardList.Extra={
10003,
10004,
10005,
10006,
10008,
10009,
10012,
10019,
10021,
10226,
10229,
10238,
10240,
10242,
10250,
10350,
10501,
10502,
10504,
10511,
10512,
10514,
11016,
11018,
11022,
11024,
11026,
11027,
11029,
11031,
12018,
12022,
12024,
12026,
12028,
12030,
13066,
13081,
14016,
14019,
14057,
14063,
14064,
14070,
15051,
15053,
15059,
15060,
15070,
15071,
15075,
15076,
19011,
19012,
19013,
19014,
19015,
19016,
19017,
19018,
19019,
19020,
19025,
19026,
19027,
19030,
19033,
19036,
19037,
19038,
19039,
19040,
19045,
19047,
19050,
19051,
19052,
19055,
19056,
19058,
19060,
19061,
19062,
19063,
20013,
20016,
20024,
20028,
20030,
20035,
20036,
20038,
20039,
20041,
20042,
20043,
20061,
20112,
20125,
20132,
20133,
20134,
20138,
20242,
20243,
20245,
20246,
20247,
20272,
20275,
20280,
20350,
20501,
20502,
20504,
20505,
20506,
20507,
20811,
21018,
21021,
21024,
21025,
21059,
21061,
21062,
21064,
21066,
21068,
21088,
21142,
21161,
21167,
21501,
21504,
22024,
22025,
22028,
22029,
22038,
22040,
22043,
22046,
22049,
22050,
22052,
22053,
22094,
22097,
22098,
22099,
22234,
22236,
22238,
22240,
22501,
22502,
22503,
22504,
22507,
22510,
22513,
22516,
23022,
23025,
23031,
23061,
23064,
23067,
23070,
23126,
23129,
23150,
23153,
23162,
23165,
23212,
23243,
23261,
23501,
23504,
23507,
23510,
24013,
24014,
24022,
24023,
24030,
24071,
24072,
24073,
24080,
24100,
24125,
24126,
24127,
24128,
24129,
24130,
24164,
24165,
24166,
24167,
24501,
24502,
24504,
24507,
25001,
25004,
25005,
25007,
25010,
25016,
25019,
25086,
25109,
25110,
25120,
25141,
25171,
25200,
25340,
25501,
25502,
25503,
25504,
25505,
25506,
25508,
25509,
25511,
25512,
25514,
26015,
26016,
26018,
26020,
26021,
26072,
26073,
26074,
26078,
26079,
26501,
26504,
26507,
27019,
27020,
27082,
27085,
27142,
27150,
27501,
27504,
28501,
28504,
28507,
29024,
29027,
29050,
29501,
30001,
30002,
30003,
30004,
30011,
30012,
31024,
31027,
31030,
31035,
31040,
31043,
31046,
31049,
31060,
31501,
31502,
31503,
40029,
51113,
60051,
60054,
60064,
60073,
60075,
60077,
60320,
60621,
60922,
61221,
64001,
64004,
64007,
70004,
70010,
70016,
70021,
70025,
70029,
70033,
70039,
70045,
70050,
70070,
70080,
70100,
82436,
82437,
82438,
82439,
82440,
82444,
82445,
82446,
82448,
82450,
82451,
82452,
82456,
82457,
82458,
82459,
82461,
82462,
82463,
82466,
82467,
82468,
82470,
82471,
82472,
82473,
82479,
82480,
82481,
88888,
200007,
200008,
200011,
200303,
210008,
210009,
210010,
401307,
401308,
401310,
401311,
431401,
431402,
431403,
501101,
501102,
501104,
501105,
501107,
501108,
999001,
999002,
999003,
999005,
999008,
999009,
999012,
999013,
999206,
999208,
999209,
999213,
999216,
999217,
999218,
-- 999219,
999303,
999304,
999311,
999507,
999508,
999513,
999702,
999704,
999706,
999708,
999709,
999718,
999719,
999720,
999721,
999914,
999915,
999916,
999917,
999919,
1153605,
1154003,
1156013,
1156019,
7001041,
7001060,
7001061,
7001080,
7001081,
7001082,
7770019,
7770060,
7770099,
13001003,
13001006,
13001009,
13001012,
13002006,
13002009,
13002012,
-- 14000026,
14000060,
14000061,
14000062,
14000063,
14000064,
14000065,
14000069,
14000070,
14000261,
14000263,
14000264,
14000265,
14000266,
14000271,
14000278,
14000279,
14000280,
14000281,
14000282,
14000283,
14000538,
14000539,
14000555,
14000564,
14090022,
14090023,
14090024,
14090028,
14090029,
16000161,
16010141,
16010161,
16030101,
16030102,
16040121,
17012001,
17012002,
17013103,
17029130,
17030000,
17030110,
17030130,
17030150,
17030200,
17035000,
17035130,
17050927,
17050932,
17050933,
17050936,
17052936,
17052940,
17060882,
17060890,
17060907,
17060938,
17060940,
17061010,
17061020,
17061040,
17061060,
19114514,
19214521,
19214541,
21470014,
21470015,
21470016,
22200122,
-- 22200161,
22200162,
-- 22230141,
-- 22230143,
-- 22230161,
22260161,
22260162,
-- 50008104,
-- 50008105,
-- 50008107,
-- 50008110,
66915000,
66915006,
66915007,
66915016,
66915019,
66915020,
66915022,
66915024,
66915026,
66915031,
66915033,
66915037,
66915038,
66915043,
66917002,
66917003,
66917004,
66917005,
66917006,
66917007,
66917009,
66917010,
66917011,
66917012,
66917013,
66917014,
66917017,
66919007,
66919009,
66919010,
66919011,
66919012,
66919014,
74560013,
74560014,
74560015,
74561001,
74561004,
74561006,
74561007,
74561008,
74561012,
74561014,
74561016,
74561017,
74561018,
74561022,
74561025,
74561030,
74561031,
74561033,
74561034,
74561035,
74561036,
74561038,
74561040,
74561041,
74561042,
74561043,
74561044,
74561045,
74561048,
74561050,
74561051,
74561099,
74561100,
74562001,
74562003,
74562004,
74562006,
74562007,
74562020,
86379154,
86379158,
86379160,
86379170,
86379174,
86379227,
86379311,
86379313,
86379339,
86379403,
86379405,
86379407,
86379409,
86379411,
86379413,
86379415,
86379427,
86379437,
86379615,
86379621,
86379623,
86379625,
86379635,
86379662,
86379664,
86379714,
86379730,
86379764,
86379777,
86379778,
86379799,
86379800,
-- 86379911,
-- 86379913,
-- 86379915,
-- 86379917,
99677001,
99677793,
99677794,
99677795,
99677796,
17030230, --1.999z2
13002015,
23100101,
20100218, --1.999z4
20100216,
20100231,
20100210,
20100214,
20100212
}
\ No newline at end of file
--dark synchro summon
DS = {}
function DS.AddDarkSynchroProcedure(c,f1,f2,dslv)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(DS.syncon(f1,f2,dslv))
e1:SetTarget(DS.syntg(f1,f2,dslv))
e1:SetOperation(DS.synop(f1,f2,dslv))
e1:SetValue(SUMMON_TYPE_SYNCHRO)
c:RegisterEffect(e1)
end
function DS.AddDarkSynchroProcedureWithDesc(c,f1,f2,dslv,desc)
local e1=Effect.CreateEffect(c)
e1:SetDescription(desc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(DS.syncon(f1,f2,dslv))
e1:SetTarget(DS.syntg(f1,f2,dslv))
e1:SetOperation(DS.synop(f1,f2,dslv))
e1:SetValue(SUMMON_TYPE_SYNCHRO)
c:RegisterEffect(e1)
end
--dark synchro summon
--暗黑调整过滤
function DS.matfilter1(c,syncard,f1)
return c:IsSetCard(0x6208) and c:IsType(TYPE_TUNER) and c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and (not f1 or f1(c))
end
--非调整过滤
function DS.matfilter2(c,syncard,f2)
return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) and not c:IsType(TYPE_TUNER) and (not f2 or f2(c))
end
function DS.selfilter(c,syncard,lv,f1,f2,smg)
return DS.matfilter1(c,syncard,f1) and smg:IsExists(DS.selfilter2,1,c,syncard,c:GetSynchroLevel(syncard)-lv,c,f2)
end
function DS.selfilter2(c,syncard,lv,tuner,f2)
local tp=syncard:GetControler()
local clv=c:GetSynchroLevel(syncard)
if c:GetFlagEffect(30000)>0 then
clv=-clv
end
return DS.matfilter2(c,syncard,f2) and clv==lv and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,tuner),syncard)>0
end
function DS.syncon(f1,f2,dslv)
return function (e,c,tuner,mg)
if c==nil then return true end
local tp=c:GetControler()
local smg=mg
if not smg then
smg=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,nil)
end
local lv=dslv or c:GetLevel()
if tuner then
return DS.selfilter(tuner,c,lv,f1,f2,smg)
else
return smg:IsExists(DS.selfilter,1,nil,c,lv,f1,f2,smg)
end
end
end
function DS.syntg(f1,f2,dslv)
return function(e,tp,eg,ep,ev,re,r,rp,chk,c,tuner,mg)
local smg=mg
if not smg then
smg=Duel.GetMatchingGroup(nil,tp,LOCATION_MZONE,0,nil)
end
local lv = dslv or c:GetLevel()
--选择调整
local tc
if not (tuner and DS.selfilter(tuner,c,lv,f1,f2,smg)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
tc=smg:FilterSelect(tp,DS.selfilter,1,1,nil,c,lv,f1,f2,smg):GetFirst()
else
tc=tuner
end
if not tc then return false end
--选择非调整
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local ntc=smg:FilterSelect(tp,DS.selfilter2,1,1,tc,c,tc:GetSynchroLevel(c)-lv,tc,f2):GetFirst()
if ntc then
local g=Group.FromCards(tc,ntc)
g:KeepAlive()
e:SetLabelObject(g)
return true
else
return false
end
end
end
function DS.synop(f1,f2,dslv)
return function (e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
local g=e:GetLabelObject()
c:SetMaterial(g)
Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO+REASON_RULE)
g:DeleteGroup()
end
end
--黑暗同调怪兽通用限制
function DS.DarkSynLimit(c)
--cannot xyz
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_MZONE)
e1:SetValue(1)
c:RegisterEffect(e1)
--cannot synchro
local e2=e1:Clone()
e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
c:RegisterEffect(e2)
end
--黑暗同调怪兽通用限制2(可做黑暗同调素材使用,黑暗同调黑暗调整
function DS.DarkSynTunerLimit(c)
--cannot xyz
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_BE_XYZ_MATERIAL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_MZONE)
e1:SetValue(1)
c:RegisterEffect(e1)
--cannot synchro
local e2=e1:Clone()
e2:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
e2:SetValue(DS.synlimit)
c:RegisterEffect(e2)
end
--黑暗调整怪兽通用限制
function DS.DarkTunerLimit(c)
--synchro summon
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_BE_SYNCHRO_MATERIAL)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetValue(DS.synlimit)
c:RegisterEffect(e1)
end
--synlimit
function DS.synlimit(e,c)
if c and not c:IsSetCard(0x5208) then return true end
end
--高级黑暗同调怪兽不能用同调以外方法特殊召唤及特招不会被无效属性
function DS.CantSp(c)
--cannot special summon
local e3=Effect.CreateEffect(c)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_SPSUMMON_CONDITION)
e3:SetValue(aux.FALSE)
c:RegisterEffect(e3)
--CANNOT_DISABLE_SPSUMMON
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetCode(EFFECT_CANNOT_DISABLE_SPSUMMON)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
c:RegisterEffect(e4)
end
\ No newline at end of file
--
Dss={}
local dssflag = false
--rewrite
-- function Auxiliary.Stringid(code,id)
-- if dssflag==true then
-- dssflag = false
-- Dss.setting()
-- end
-- return code*16+id
-- end
function Dss.setting()
local e2=Effect.GlobalEffect()
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_PREDRAW)
e2:SetCondition(Dss.drawcon)
e2:SetTarget(Dss.drawtg)
e2:SetOperation(Dss.drawop)
Duel.RegisterEffect(e2, 0)
end
function Dss.drawcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnCount()==1
end
function Dss.drawtg(e,tp,eg,ep,ev,re,r,rp,chk)
local dt=Duel.GetDrawCount(Duel.GetTurnPlayer())
if dt~=0 then
_replace_count=0
_replace_max=dt
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EFFECT_DRAW_COUNT)
e1:SetTargetRange(1,0)
e1:SetReset(RESET_PHASE+PHASE_DRAW)
e1:SetValue(0)
Duel.RegisterEffect(e1,Duel.GetTurnPlayer())
local e0=Effect.GlobalEffect()
e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e0:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE)
e0:SetCode(EVENT_PHASE+PHASE_END)
e0:SetCondition(Dss.drawcon2)
e0:SetReset(RESET_PHASE+PHASE_END)
e0:SetOperation(Dss.drawop2)
Duel.RegisterEffect(e0, Duel.GetTurnPlayer())
end
end
function Dss.drawop(e,tp,eg,ep,ev,re,r,rp)
_replace_count=_replace_count+1
if _replace_count>_replace_max then return end
end
function Dss.drawcon2(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_END
end
function Dss.drawop2(e,tp,eg,ep,ev,re,r,rp)
-- if Duel.SelectYesNo(Duel.GetTurnPlayer(), 25096*16+0) then
Duel.Draw(Duel.GetTurnPlayer(),1,REASON_RULE)
-- end
e:Reset()
end
\ No newline at end of file
--
Elf={}
local ElfGlobalAttr = {}
ElfGlobalAttr[0] = 0
ElfGlobalAttr[1] = 0
function Elf.GetElfAttr(tp)
return ElfGlobalAttr[tp]
end
function Elf.SetElfAttr(tp,attr)
ElfGlobalAttr[tp] = attr
end
--
Ets={}
--ETS
local ETStore = {}
function Ets.EffectTempStore(e,num)
if ETStore[num]==nil then ETStore[num]=e end
end
function Ets.EffectTempCloneConChange(c,num,f)
if ETStore[num]~=nil then
local e0=ETStore[num]:Clone()
e0:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_DAMAGE_STEP)
e0:SetCondition(f)
e0:SetLabel(num)
c:RegisterEffect(e0)
end
end
function Ets.RegCommonEffect(c)
local e0=Effect.CreateEffect(c)
e0:SetDescription(aux.Stringid(c:GetOriginalCode(),0))
e0:SetCategory(CATEGORY_DESTROY)
e0:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e0:SetCode(EVENT_BATTLE_DESTROYING)
e0:SetCondition(Ets.con0)
e0:SetTarget(Ets.tg)
e0:SetOperation(Ets.op)
c:RegisterEffect(e0)
local e1=e0:Clone()
e1:SetCondition(Ets.con1)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
c:RegisterEffect(e1)
return e0,e1
end
function Ets.con0(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:GetFlagEffect(999100)>0 then return false end
local bc=c:GetBattleTarget()
return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER)
end
function Ets.con1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:GetFlagEffect(999100)<1 then return false end
local bc=c:GetBattleTarget()
return c:IsRelateToBattle() and bc:IsType(TYPE_MONSTER)
end
function Ets.tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_DESTROY,c,1,0,0)
end
function Ets.op(e,tp,eg,ep,ev,re,r,rp)
Duel.Destroy(e:GetHandler(),REASON_EFFECT)
end
\ No newline at end of file
--module for fusion material func
--script by Nanahira
Fus=Fus or {}
local table=require("table")
function Fus.CodeFilter(code)
return function(c)
return c:IsFusionCode(code)
end
end
function Fus.AddFusionProcCode2(c,code1,code2,sub,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={Fus.CodeFilter(code1),Fus.CodeFilter(code2)}
aux.AddFusionProcCode2(c,code1,code2,sub,insf)
end
function Fus.AddFusionProcCode3(c,code1,code2,code3,sub,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={Fus.CodeFilter(code1),Fus.CodeFilter(code2),Fus.CodeFilter(code3)}
aux.AddFusionProcCode3(c,code1,code2,code3,sub,insf)
end
function Fus.AddFusionProcCode4(c,code1,code2,code3,code4,sub,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={Fus.CodeFilter(code1),Fus.CodeFilter(code2),Fus.CodeFilter(code3),Fus.CodeFilter(code4)}
aux.AddFusionProcCode4(c,code1,code2,code3,code4,sub,insf)
end
function Fus.AddFusionProcCodeFun(c,code1,f,cc,sub,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={Fus.CodeFilter(code1),f}
aux.AddFusionProcCodeFun(c,code1,f,cc,sub,insf)
end
function Fus.AddFusionProcFun2(c,f1,f2,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={f1,f2}
aux.AddFusionProcFun2(c,f1,f2,insf)
end
function Fus.AddFusionProcCodeRep(c,code1,cc,sub,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={}
for i=1,cc do
table.insert(mt.hana_mat,Fus.CodeFilter(code1))
end
aux.AddFusionProcCodeRep(c,code1,cc,sub,insf)
end
function Fus.AddFusionProcFunRep(c,f,cc,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={}
for i=1,cc do
table.insert(mt.hana_mat,f)
end
aux.AddFusionProcFunRep(c,f,cc,insf)
end
function Fus.AddFusionProcFunFunRep(c,f1,f2,minc,maxc,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={f1}
for i=1,maxc do
table.insert(mt.hana_mat,f2)
end
aux.AddFusionProcFunFunRep(c,f1,f2,minc,maxc,insf)
end
function Fus.AddFusionProcCodeFunRep(c,code1,f,minc,maxc,sub,insf)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat={Fus.CodeFilter(code1)}
for i=1,maxc do
table.insert(mt.hana_mat,f)
end
aux.AddFusionProcCodeFunRep(c,code1,f,minc,maxc,sub,insf)
end
function Fus.AddFusionProcFunMulti(c,insf,...)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local funs={...}
local mt=_G["c"..c:GetOriginalCode()]
mt.hana_mat=funs
local n=#funs
aux.AddFusionProcMix(c,true,insf,...)
end
function Fus.NonImmuneFilter(c,e)
return not c:IsImmuneToEffect(e)
end
function Fus.FusionMaterialFilter(c,oppo)
if oppo and c:IsLocation(LOCATION_ONFIELD+LOCATION_REMOVED) and c:IsFacedown() then return false end
return c:IsCanBeFusionMaterial() and c:IsType(TYPE_MONSTER)
end
function Fus.GetFusionMaterial(tp,loc,oloc,f,gc,e,...)
local g1=Duel.GetFusionMaterial(tp)
if loc then
local floc=bit.band(loc,LOCATION_ONFIELD+LOCATION_HAND)
if floc~=0 then
g1=g1:Filter(Card.IsLocation,nil,floc)
else
g1:Clear()
end
local eloc=loc-floc
if eloc~=0 then
local g2=Duel.GetMatchingGroup(Fus.FusionMaterialFilter,tp,eloc,0,nil)
g1:Merge(g2)
end
end
if oloc and oloc~=0 then
local g3=Duel.GetMatchingGroup(Fus.FusionMaterialFilter,tp,0,oloc,nil,true)
g1:Merge(g3)
end
if f then g1=g1:Filter(f,nil,...) end
if gc then g1:RemoveCard(gc) end
if e then g1=g1:Filter(Fus.NonImmuneFilter,nil,e) end
return g1
end
function Fus.CheckMaterialSingle(c,fc,mc)
local tp=fc:GetControler()
if not c:IsCanBeFusionMaterial(fc) or Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc),fc)<=0 then return false end
local t=fc.hana_mat
if not t then return false end
for i,f in pairs(t) do
if f(c) then return true end
end
return false
end
\ No newline at end of file
--
Msc={}
--mscarr
local mscarr = {}
local mscarr2 = {}
for i=0,7 do
mscarr[i] = {}
for j=0,7 do
mscarr[i][j] = 0
end
end
for i=0,5 do
mscarr2[i] = {}
for j=1,4 do
mscarr2[i][j] = 0
end
end
--
mscarr[1][5] = 888184
mscarr[1][6] = 888183
mscarr[2][5] = 888185
mscarr[5][6] = 888186
mscarr[2][3] = 888167
mscarr[3][4] = 888168
mscarr[0][3] = 888169
mscarr[1][2] = 888170
mscarr[1][3] = 888171
mscarr[2][4] = 888172
mscarr[0][2] = 888174
mscarr[0][1] = 888175
mscarr[0][4] = 888173
--mscarr[0][4] = 888176
--mscarr[0][4] = 888194
--
mscarr2[3][2] = 888136
mscarr2[2][2] = 888137
mscarr2[1][2] = 888138
mscarr2[0][2] = 888139
mscarr2[4][2] = 888140
mscarr2[3][3] = 888151
mscarr2[2][3] = 888152
mscarr2[1][3] = 888153
mscarr2[0][3] = 888154
mscarr2[4][3] = 888155
function unpack(t, i)
i = i or 1
if t[i] then
return t[i], unpack(t, i + 1)
end
end
function Msc.GetScSetCard(c1)
local sn1 = -1
if c1:IsSetCard(0x178) then sn1 = 3
elseif c1:IsSetCard(0x179) then sn1 = 2
elseif c1:IsSetCard(0x180) then sn1 = 1
elseif c1:IsSetCard(0x181) then sn1 = 0
elseif c1:IsSetCard(0x182) then sn1 = 4
elseif c1:IsSetCard(0x183) then sn1 = 5
elseif c1:IsSetCard(0x184) then sn1 = 6
elseif c1:GetOriginalCode()==22200 then sn1 = 7 end
return sn1
end
function Msc.IsCanMix2(c1,c2)
local sn1 = Msc.GetScSetCard(c1)
local sn2 = Msc.GetScSetCard(c2)
if sn1==7 or sn2==7 then return true end
if sn1<0 or sn1>6 then return false end
if sn2<0 or sn2>6 then return false end
if bit.bor(mscarr[sn1][sn2],mscarr[sn2][sn1])~=0 then return true end
return false
end
function Msc.GetMix2(c1,c2,tp)
local sn1 = Msc.GetScSetCard(c1)
local sn2 = Msc.GetScSetCard(c2)
local code = bit.bor(mscarr[sn1][sn2],mscarr[sn2][sn1])
if code == 888173 then
local temp = Duel.SelectOption(tp, 22200*16+10, 22200*16+11, 22200*16+12)
if temp == 0 then code = 888173
elseif temp == 1 then code = 888176
elseif temp == 2 then code = 888194
end
end
return code
end
function Msc.GetMix2or3(sn1,num,tp)
local code = mscarr2[sn1][num]
return code
end
function Msc.ScMix(g,tp)
local c1 = g:GetFirst()
local c2 = g:GetNext()
local code = Msc.GetMix2(c1,c2,tp)
local token=Duel.CreateToken(tp,code)
return token
end
function Msc.ScMix2(g,tp,flag)
local c1 = g:GetFirst()
local sn1 = Msc.GetScSetCard(c1)
local num = g:GetCount()
local code = Msc.GetMix2or3(sn1,num+flag,tp)
local token=Duel.CreateToken(tp,code)
return token
end
function Msc.ScMixWithLW(g,tp)
local c1 = g:GetFirst()
local sn1 = Msc.GetScSetCard(c1)
local code = 0
local temp = 0
local select_tabel_string = {}
local select_tabel_int = {}
local tabel_hpoint = 1
while temp<7 do
if bit.bor(mscarr[sn1][temp],mscarr[temp][sn1]) ~= 0 then
select_tabel_string[tabel_hpoint] = 22200*16+temp
select_tabel_int[tabel_hpoint] = temp
tabel_hpoint = tabel_hpoint + 1
end
temp = temp + 1
end
if tabel_hpoint>0 then
temp = Duel.SelectOption(tp, unpack(select_tabel_string))
temp = temp + 1
code = bit.bor(mscarr[sn1][select_tabel_int[temp]],mscarr[select_tabel_int[temp]][sn1])
if code == 888173 then
local temp2 = Duel.SelectOption(tp, 22200*16+10, 22200*16+11, 22200*16+12)
if temp2 == 0 then code = 888173
elseif temp2 == 1 then code = 888176
elseif temp2 == 2 then code = 888194
end
end
local token=Duel.CreateToken(tp,code)
return token
end
return 0
-- while code == 0 do
-- temp = Duel.SelectOption(tp, 22200*16+0, 22200*16+1, 22200*16+2, 22200*16+3, 22200*16+4, 22200*16+5, 22200*16+6)
-- code = bit.bor(mscarr[sn1][temp],mscarr[temp][sn1])
-- if code==0 then Duel.SelectOption(tp,22200*16+7) end
-- end
-- if code == 888173 then
-- local temp2 = Duel.SelectOption(tp, 22200*16+10, 22200*16+11, 22200*16+12)
-- if temp2 == 0 then code = 888173
-- elseif temp2 == 1 then code = 888176
-- elseif temp2 == 2 then code = 888194
-- end
-- end
-- local token=Duel.CreateToken(tp,code)
-- return token
end
function Msc.RegScMixEffect(c)
local e3=Effect.CreateEffect(c)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e3:SetType(EFFECT_TYPE_IGNITION)
e3:SetDescription(aux.Stringid(22200,8))
e3:SetCountLimit(1)
e3:SetRange(LOCATION_SZONE)
e3:SetTarget(Msc.RegScMixEffectTarget)
e3:SetOperation(Msc.RegScMixEffectOperation)
c:RegisterEffect(e3)
local e4=e3:Clone()
e4:SetDescription(aux.Stringid(22200,9))
e4:SetTarget(Msc.RegScMixEffectTarget2)
e4:SetOperation(Msc.RegScMixEffectOperation2)
c:RegisterEffect(e4)
end
function Msc.RScMEdactfilter(c)
return c:IsFaceup() and c:IsSetCard(0x811)
end
function Msc.RScMEmfilter1(c,this_card)
return c:IsFaceup() and Msc.IsCanMix2(c,this_card)
end
function Msc.RScMEmfilter2(c,setcode)
local sn = Msc.GetScSetCard(c)
return c:IsFaceup() and (sn==setcode or sn==7)
end
function Msc.RScMEmfilterForTheLW(c)
return c:GetOriginalCode()==22200
end
function Msc.RegScMixEffectTarget(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local mq=Duel.IsExistingMatchingCard(Msc.RScMEdactfilter,tp,LOCATION_MZONE,0,1,nil)
if chk==0 then return (mq or Duel.CheckLPCost(tp,1000)) and
Duel.IsExistingMatchingCard(Msc.RScMEmfilter1,tp,LOCATION_SZONE,0,1,c,c) end
if not mq then
Duel.PayLPCost(tp,1000)
end
Duel.SetChainLimit(aux.FALSE)
end
function Msc.RegScMixEffectOperation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c then return end
if not c:IsRelateToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,Msc.RScMEmfilter1,tp,LOCATION_SZONE,0,1,1,c,c)
if g:GetCount()>0 then g:AddCard(c) end
local flag = g:FilterCount(Msc.RScMEmfilterForTheLW,nil)
if flag==1 then
if Duel.SendtoGrave(g,REASON_MATERIAL)~=0 then
--if not e:GetHandler():GetActivateEffect():IsActivatable(tp) then return end
g:Remove(Msc.RScMEmfilterForTheLW,nil)
local tc = Msc.ScMixWithLW(g,tp)
if tc ~= 0 then
Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEDOWN,false)
Duel.ConfirmCards(1-tp,tc)
end
end
elseif flag==0 then
if Duel.SendtoGrave(g,REASON_MATERIAL)~=0 then
--if not e:GetHandler():GetActivateEffect():IsActivatable(tp) then return end
local tc = Msc.ScMix(g,tp)
Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEDOWN,false)
Duel.ConfirmCards(1-tp,tc)
end
end
end
function Msc.RegScMixEffectTarget2(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
local sn=Msc.GetScSetCard(c)
local mq=Duel.IsExistingMatchingCard(Msc.RScMEdactfilter,tp,LOCATION_MZONE,0,1,nil)
if chk==0 then return (mq or Duel.CheckLPCost(tp,1000))
and sn>=0 and sn<=4
and Duel.IsExistingMatchingCard(Msc.RScMEmfilter2,tp,LOCATION_SZONE,0,1,c,sn) end
if not mq then
Duel.PayLPCost(tp,1000)
end
Duel.SetChainLimit(aux.FALSE)
end
function Msc.RegScMixEffectOperation2(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c then return end
if not c:IsRelateToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,Msc.RScMEmfilter2,tp,LOCATION_SZONE,0,1,2,c,Msc.GetScSetCard(c))
if g:GetCount()>0 then g:AddCard(c) end
local flag = g:FilterCount(Msc.RScMEmfilterForTheLW,nil)
if flag==1 then g:Remove(Msc.RScMEmfilterForTheLW,nil) end
if Duel.SendtoGrave(g,REASON_MATERIAL)~=0 then
--if not e:GetHandler():GetActivateEffect():IsActivatable(tp) then return end
local tc = Msc.ScMix2(g,tp,flag)
Duel.MoveToField(tc,tp,tp,LOCATION_SZONE,POS_FACEDOWN,false)
Duel.ConfirmCards(1-tp,tc)
end
end
\ No newline at end of file
--
Nef = Nef or {}
local os = require("os")
-- require "nef/cardList"
function Nef.unpack(t, i)
i = i or 1
if t[i] then
return t[i], Nef.unpack(t, i + 1)
end
end
function Nef.unpackOneMember(t, member, i)
i = i or 1
if t[i] and t[i][member] then
return t[i][member], Nef.unpackOneMember(t, member, i+1)
end
end
function Nef.AddSynchroProcedureWithDesc(c,f1,f2,ct,desc)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_EXTRA)
e1:SetDescription(desc)
e1:SetCondition(Auxiliary.SynCondition(f1,f2,ct,99))
e1:SetTarget(Auxiliary.SynTarget(f1,f2,ct,99))
e1:SetOperation(Auxiliary.SynOperation(f1,f2,ct,99))
e1:SetValue(SUMMON_TYPE_SYNCHRO)
c:RegisterEffect(e1)
return e1
end
function Nef.AddRitualProcEqual(c,filter,desc)
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(Auxiliary.RitualUltimateTarget(filter,Card.GetOriginalLevel,"Equal",LOCATION_HAND,nil,nil))
e1:SetOperation(Auxiliary.RitualUltimateOperation(filter,Card.GetOriginalLevel,"Equal",LOCATION_HAND,nil,nil))
e1:SetDescription(desc)
c:RegisterEffect(e1)
return e1
end
function Nef.AddXyzProcedureWithDesc(c,f,lv,ct,desc,maxct,alterf,op)
if c.xyz_filter==nil then
local code=c:GetOriginalCode()
local mt=_G["c" .. code]
if f then
mt.xyz_filter=function(mc) return f(mc) and mc:IsXyzLevel(c,lv) end
else
mt.xyz_filter=function(mc) return mc:IsXyzLevel(c,lv) end
end
mt.xyz_count=ct
end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_EXTRA)
e1:SetDescription(desc)
if not maxct then maxct=ct end
if alterf then
e1:SetCondition(Auxiliary.XyzCondition2(f,lv,ct,maxct,alterf,desc,op))
e1:SetTarget(Auxiliary.XyzTarget2(f,lv,ct,maxct,alterf,desc,op))
e1:SetOperation(Auxiliary.XyzOperation2(f,lv,ct,maxct,alterf,desc,op))
else
e1:SetCondition(Auxiliary.XyzCondition(f,lv,ct,maxct))
e1:SetTarget(Auxiliary.XyzTarget(f,lv,ct,maxct))
e1:SetOperation(Auxiliary.XyzOperation(f,lv,ct,maxct))
end
e1:SetValue(SUMMON_TYPE_XYZ)
c:RegisterEffect(e1)
return e1
end
function Auxiliary.EnablePendulumAttribute(c,reg)
local argTable = {1}
return Nef.EnablePendulumAttributeSP(c,99,Auxiliary.TRUE,argTable,reg,nil)
end
function Nef.GetExtraPendulumEffect(c, code, count)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC_G)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE)
e1:SetRange(LOCATION_PZONE)
e1:SetCountLimit(count or 1, code or 10000000)
e1:SetCondition(Nef.PendConditionSP())
e1:SetOperation(Nef.PendOperationSP())
e1:SetValue(SUMMON_TYPE_PENDULUM)
return e1
end
function Nef.EnablePendulumAttributeSP(c,num,filter,argTable,reg,tag)
local code=c:GetOriginalCode()
local mt=_G["c" .. code]
local mlist={}
mlist.pend_filter=filter
mlist.pend_arg=argTable
mlist.pend_num=num
mlist.pend_tag=tag
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(10000001)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_PZONE)
e2:SetValue(Nef.order_table_new(mlist))
c:RegisterEffect(e2)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC_G)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE)
e1:SetRange(LOCATION_PZONE)
e1:SetCountLimit(1, 10000000)
e1:SetCondition(Nef.PendConditionSP())
e1:SetOperation(Nef.PendOperationSP())
e1:SetValue(SUMMON_TYPE_PENDULUM)
c:RegisterEffect(e1)
-- 由于utility处加载nef,不需要再无效效果
-- --disable HINTMSG_SPSUMMON
-- local e2=Effect.CreateEffect(c)
-- e2:SetType(EFFECT_TYPE_FIELD)
-- e2:SetRange(LOCATION_PZONE)
-- e2:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
-- e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE)
-- e2:SetTargetRange(1,0)
-- e2:SetTarget(Nef.PendSummonLimitTarget)
-- c:RegisterEffect(e2)
--register by default
if reg==nil or reg then
local e3=Effect.CreateEffect(c)
e3:SetDescription(1160)
e3:SetType(EFFECT_TYPE_ACTIVATE)
e3:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e3)
end
mt.pend_effect1 = e1
--mt.pend_effect2 = e2
end
function Nef.PendSummonCheck(c,e,tp,lscale,rscale,filter,argTable,filter2,argTable2,lpc,rpc)
local eset1={lpc:IsHasEffect(10000001)}
local eset2={rpc:IsHasEffect(10000001)}
if c:IsType(TYPE_RITUAL) then
for _,te in ipairs(eset1) do
local mt=Nef.order_table[te:GetValue()]
if mt.pend_tag and mt.pend_tag:find("GodSprite") then
return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,true,false)
end
end
for _,te in ipairs(eset2) do
local mt=Nef.order_table[te:GetValue()]
if mt.pend_tag and mt.pend_tag:find("GodSprite") then
return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,true,false)
end
end
end
return c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,false,false)
end
function Nef.PConditionFilterSP(c,e,tp,lscale,rscale,filter,argTable,filter2,argTable2,lpz,rpz)
local lv=0
if c.pendulum_level then
lv=c.pendulum_level
else
lv=c:GetLevel()
end
local normalCondition = (c:IsLocation(LOCATION_HAND) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM)))
and lv>lscale and lv<rscale and not c:IsForbidden()
and Nef.PendSummonCheck(c,e,tp,lscale,rscale,filter,argTable,filter2,argTable2,lpz,rpz)
local spCondition = filter(c,Nef.unpack(argTable)) and filter2(c,Nef.unpack(argTable2))
return spCondition and normalCondition
end
function Nef.PConditionFilterSP2(c,e,tp,lscale,rscale,filter,argTable,filter2,argTable2,lpz,rpz)
local lv=0
if c.pendulum_level then
lv=c.pendulum_level
else
lv=c:GetLevel()
end
local normalCondition = lv>lscale and lv<rscale and not c:IsForbidden()
and Nef.PendSummonCheck(c,e,tp,lscale,rscale,filter,argTable,filter2,argTable2,lpz,rpz)
local spCondition = filter(c,Nef.unpack(argTable)) and filter2(c,Nef.unpack(argTable2))
return spCondition and normalCondition
end
function Nef.PendConditionSP()
return function(e,c,og)
if c==nil then return true end
local tp=c:GetControler()
local lpz=Duel.GetFieldCard(tp, LOCATION_PZONE, 0)
local rpz=Duel.GetFieldCard(tp, LOCATION_PZONE, 1)
if not (lpz and rpz) then return false end
local n1, filter1, argTable1, tag1, pexfunc1 = Nef.GetPendSPInfo(lpz)
local n2, filter2, argTable2, tag2, pexfunc2 = Nef.GetPendSPInfo(rpz)
local lscale=lpz:GetLeftScale()
local rscale=rpz:GetRightScale()
if lscale>rscale then lscale,rscale=rscale,lscale end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
if ft<=0 then return false end
if n1 == 0 or n2 == 0 then return end
if pexfunc1 and pexfunc1(lpz):IsExists(Nef.PConditionFilterSP2,1,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz) then
return true
end
if pexfunc2 and pexfunc2(rpz):IsExists(Nef.PConditionFilterSP2,1,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz) then
return true
end
local loc = 0
if Duel.GetLocationCount(tp, LOCATION_MZONE) > 0 then loc = loc + LOCATION_HAND end
if Duel.GetLocationCountFromEx(tp, tp, nil, TYPE_PENDULUM) > 0 then loc = loc + LOCATION_EXTRA end
if loc == 0 then return false end
local g = nil
if og then
g = og:Filter(Card.IsLocation, nil, loc)
return g:IsExists(Nef.PConditionFilterSP,1,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz)
else
return Duel.IsExistingMatchingCard(Nef.PConditionFilterSP,tp,loc,0,1,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz)
end
end
end
function Nef.PendOperationSP()
return function(e,tp,eg,ep,ev,re,r,rp,c,sg,og)
local lpz = Duel.GetFieldCard(tp, LOCATION_PZONE, 0)
local rpz = Duel.GetFieldCard(tp, LOCATION_PZONE, 1)
local n1, filter1, argTable1, tag1, pexfunc1 = Nef.GetPendSPInfo(lpz)
local n2, filter2, argTable2, tag2, pexfunc2 = Nef.GetPendSPInfo(rpz)
local lscale = lpz:GetLeftScale()
local rscale = rpz:GetRightScale()
if lscale > rscale then lscale, rscale = rscale, lscale end
local ft1 = Duel.GetLocationCount(tp, LOCATION_MZONE)
local ft2 = Duel.GetLocationCountFromEx(tp, tp, nil, TYPE_PENDULUM)
local ft = Duel.GetUsableMZoneCount(tp)
if Duel.IsPlayerAffectedByEffect(tp, 59822133) then
if ft1 > 0 then ft1 = 1 end
if ft2 > 0 then ft2 = 1 end
ft = 1
end
ft = math.min(ft, n1, n2)
local loc = 0
if ft1 > 0 then loc = loc + LOCATION_HAND end
if ft2 > 0 then loc = loc + LOCATION_EXTRA end
local exg = Group.CreateGroup()
if pexfunc1 then exg:Merge(pexfunc1(lpz)) end
if pexfunc2 then exg:Merge(pexfunc2(rpz)) end
local tg = nil
if og then
tg=exg:Filter(Nef.PConditionFilterSP2,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz)
local g2=og:Filter(Card.IsLocation,nil,loc):Filter(Nef.PConditionFilterSP,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz)
tg:Merge(g2)
else
tg=exg:Filter(Nef.PConditionFilterSP2,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz)
local g2=Duel.GetFieldGroup(tp,loc,0):Filter(Nef.PConditionFilterSP,nil,e,tp,lscale,rscale,filter1,argTable1,filter2,argTable2,lpz,rpz)
tg:Merge(g2)
end
ft1 = math.min(ft1, tg:FilterCount(Card.IsLocation, nil, 0x3ff-LOCATION_EXTRA))
ft2 = math.min(ft2, tg:FilterCount(Card.IsLocation, nil, LOCATION_EXTRA))
local ect = c29724053 and Duel.IsPlayerAffectedByEffect(tp, 29724053) and c29724053[tp]
if ect and ect < ft2 then ft2 = ect end
while true do
local ct1 = tg:FilterCount(Card.IsLocation, nil, 0x3ff-LOCATION_EXTRA)
local ct2 = tg:FilterCount(Card.IsLocation, nil, LOCATION_EXTRA)
local ct = ft
if ct1 > ft1 then ct = math.min(ct, ft1) end
if ct2 > ft2 then ct = math.min(ct, ft2) end
if ct <= 0 then break end
if sg:GetCount() > 0 and not Duel.SelectYesNo(tp, 210) then ft = 0 break end
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
local g = tg:Select(tp, 1, ct, nil)
tg:Sub(g)
sg:Merge(g)
if g:GetCount() < ct then ft = 0 break end
ft = ft - g:GetCount()
ft1 = ft1 - g:FilterCount(Card.IsLocation, nil, 0x3ff-LOCATION_EXTRA)
ft2 = ft2 - g:FilterCount(Card.IsLocation, nil, LOCATION_EXTRA)
end
if ft > 0 then
local tg1 = tg:Filter(Card.IsLocation, nil, 0x3ff-LOCATION_EXTRA)
local tg2 = tg:Filter(Card.IsLocation, nil, LOCATION_EXTRA)
if ft1 > 0 and ft2 == 0 and tg1:GetCount() > 0 and (sg:GetCount() == 0 or Duel.SelectYesNo(tp, 210)) then
local ct = math.min(ft1, ft)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
local g = tg1:Select(tp, 1, ct, nil)
sg:Merge(g)
end
if ft1 == 0 and ft2 > 0 and tg2:GetCount() > 0 and (sg:GetCount() == 0 or Duel.SelectYesNo(tp, 210)) then
local ct = math.min(ft2, ft)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_SPSUMMON)
local g = tg2:Select(tp, 1, ct, nil)
sg:Merge(g)
end
end
Duel.HintSelection(Group.FromCards(lpz))
Duel.HintSelection(Group.FromCards(rpz))
end
end
function Nef.SetPendMaxNum(c, num, reset_flag, property, reset_count)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(10000002)
local property=property or 0
e1:SetProperty(bit.bor(property,EFFECT_FLAG_CANNOT_DISABLE))
e1:SetValue(num)
if reset_flag then
e1:SetReset(reset_flag,reset_count)
end
c:RegisterEffect(e1,true)
end
function Nef.SetPendExTarget(c, filter_func)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(10000003)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_PZONE)
e2:SetValue(filter_func)
c:RegisterEffect(e2)
end
function Nef.GetPendMaxNum(c)
local ret=0
local eset={c:IsHasEffect(10000002)}
for _,te in ipairs(eset) do
local v=te:GetValue()
if v and type(v)=="number" then ret=math.max(ret,v) end
end
return ret
end
function Nef.GetPendSPInfo(c)
local eset={c:IsHasEffect(10000001)}
local eset_ex={c:IsHasEffect(10000003)}
local pend_num = 99
local pend_filter = Auxiliary.TRUE
local pend_arg = {1}
local pend_tag = ""
local pend_extra_func = function() return Group.CreateGroup() end
for _,te in ipairs(eset) do
local mt=Nef.order_table[te:GetValue()]
if mt then
if mt.pend_num then
local pnum = type(mt.pend_num) == "number" and mt.pend_num or mt.pend_num(c)
pend_num = math.min(pend_num, pnum)
end
if mt.pend_filter then
local f1=pend_filter
local arg=mt.pend_arg or {1}
local f2_ori=mt.pend_filter
local f2=function(c)
return not f2_ori or f2_ori(c,table.unpack(arg))
end
pend_filter=function(c) return f1(c) and f2(c) end
end
pend_arg=mt.pend_arg or pend_arg
pend_tag=mt.pend_tag and pend_tag..mt.pend_tag or pend_tag
end
end
for _,te in ipairs(eset_ex) do
local f=te:GetValue()
local oldf=pend_extra_func
pend_extra_func=function(...)
local g=oldf(...)
g:Merge(f(...))
return g
end
end
local max_pend_num = Nef.GetPendMaxNum(c)
if max_pend_num>0 then pend_num = math.min(pend_num,max_pend_num) end
return pend_num, pend_filter, pend_arg, pend_tag, pend_extra_func
end
function Nef.GetFieldLeftScale(tp)
local lpz=Duel.GetFieldCard(tp, LOCATION_PZONE, 0)
if lpz then
return lpz:GetLeftScale()
else
return
end
end
function Nef.GetFieldRightScale(tp)
local rpz=Duel.GetFieldCard(tp, LOCATION_PZONE, 1)
if rpz then
return rpz:GetRightScale()
else
return
end
end
-- function Nef.PendSummonLimitTarget(e,c,sump,sumtype,sumpos,targetp)
-- local c = nil
-- if e then c = e:GetHandler() end
-- return c and sumtype==SUMMON_TYPE_PENDULUM and _G["c" .. c:GetOriginalCode()].pend_filter==nil
-- and (c == Duel.GetFieldCard(tp,LOCATION_SZONE, 6) or c == Duel.GetFieldCard(tp,LOCATION_SZONE, 7))
-- end
function Nef.EnableDualAttributeSP(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DUAL_SUMMONABLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
c:RegisterEffect(e1)
end
function Nef.EnableDualAttribute(c, flag)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_DUAL_SUMMONABLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_CHANGE_TYPE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_MZONE)
e2:SetCondition(aux.DualNormalCondition)
e2:SetValue(TYPE_NORMAL+TYPE_DUAL+TYPE_MONSTER+flag)
c:RegisterEffect(e2)
end
function Nef.IsDate(Year, Month, Day)
local year = Year or -1
local month = Month or -1
local day = Day or -1
local date = os.date("*t")
return (date.year==year or year<0) and (date.month==month or month<0) and (date.day==day or day<0)
end
function Nef.GetDate()
local date = os.date("*t")
return date.year, date.month, date.day
end
function Nef.Log(message)
-- if AI and AI.Chat ~= nil then AI.Chat(message) end
end
function Nef.LogFormat(fmt, ...)
Debug.Message(string.format(fmt, ...))
end
function Nef.GetRandomCardCode(num, command)
-- local result = {}
-- local commandList = {
-- [0] = "Main",
-- [1] = "Extra"
-- }
-- local cardType = commandList[command]
-- for i=1,num do
-- local r = math.random(1,#CardList[cardType])
-- result[i] = CardList[cardType][r]
-- end
-- return result
end
function Nef.kangbazi(e,te)
if te:IsActiveType(TYPE_MONSTER) and te:IsActivated() then
local ec=te:GetOwner()
if ec:IsType(TYPE_XYZ) then
return ec:GetOriginalRank()<=10 and ec:GetOriginalRank()>=4
else
return ec:GetOriginalLevel()<=10 and ec:GetOriginalLevel()>=4
end
else
return false
end
end
Nef.order_table=Nef.order_table or {}
Nef.order_count=Nef.order_count or 0
function Nef.order_table_new(v)
Nef.order_count=Nef.order_count+1
Nef.order_table[Nef.order_count]=v
return Nef.order_count
end
function Nef.CheckGroupRecursive(c,sg,g,f,min,max,ext_params)
sg:AddCard(c)
local ct=sg:GetCount()
local res=(ct>=min and ct<=max and f(sg,table.unpack(ext_params)))
or (ct<max and g:IsExists(Nef.CheckGroupRecursive,1,sg,sg,g,f,min,max,ext_params))
sg:RemoveCard(c)
return res
end
function Nef.CheckGroup(g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
if min>max then return false end
local ext_params={...}
local sg=Group.CreateGroup()
if cg then sg:Merge(cg) end
local ct=sg:GetCount()
if ct>=min and ct<=max and f(sg,...) then return true end
return g:IsExists(Nef.CheckGroupRecursive,1,sg,sg,g,f,min,max,ext_params)
end
function Nef.SelectGroup(tp,desc,g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
local ext_params={...}
local sg=Group.CreateGroup()
local cg=cg or Group.CreateGroup()
sg:Merge(cg)
local ct=sg:GetCount()
local ag=g:Filter(Nef.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
while ct<max and ag:GetCount()>0 do
local finish=(ct>=min and ct<=max and f(sg,...))
local seg=sg:Clone()
local dmin=min-cg:GetCount()
local dmax=math.min(max-cg:GetCount(),g:GetCount())
seg:Sub(cg)
Duel.Hint(HINT_SELECTMSG,tp,desc)
local tc=ag:SelectUnselect(seg,tp,finish,finish,dmin,dmax)
if not tc then break end
if sg:IsContains(tc) then
sg:RemoveCard(tc)
else
sg:AddCard(tc)
end
ct=sg:GetCount()
ag=g:Filter(Nef.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end
return sg
end
function Nef.SelectGroupWithCancel(tp,desc,g,f,cg,min,max,...)
local min=min or 1
local max=max or g:GetCount()
local ext_params={...}
local sg=Group.CreateGroup()
local cg=cg or Group.CreateGroup()
sg:Merge(cg)
local ct=sg:GetCount()
local ag=g:Filter(Nef.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
while ct<max and ag:GetCount()>0 do
local finish=(ct>=min and ct<=max and f(sg,...))
local cancel=finish or ct==0
local seg=sg:Clone()
local dmin=min-cg:GetCount()
local dmax=math.min(max-cg:GetCount(),g:GetCount())
seg:Sub(cg)
Duel.Hint(HINT_SELECTMSG,tp,desc)
local tc=ag:SelectUnselect(seg,tp,finish,cancel,dmin,dmax)
if not tc then
if not finish then return end
break
end
if sg:IsContains(tc) then
sg:RemoveCard(tc)
else
sg:AddCard(tc)
end
ct=sg:GetCount()
ag=g:Filter(Nef.CheckGroupRecursive,sg,sg,g,f,min,max,ext_params)
end
return sg
end
function Nef.OverlayCard(c,tc,xm,nchk)
if not nchk and (not c:IsLocation(LOCATION_MZONE) or c:IsFacedown() or not c:IsType(TYPE_XYZ) or tc:IsType(TYPE_TOKEN)) then return end
if tc:IsStatus(STATUS_LEAVE_CONFIRMED) then
tc:CancelToGrave()
end
if tc:GetOverlayCount()>0 then
local og=tc:GetOverlayGroup()
if xm then
Duel.Overlay(c,og)
else
Duel.SendtoGrave(og,REASON_RULE)
end
end
Duel.Overlay(c,tc)
end
function Nef.OverlayFilter(c,nchk)
return nchk or not c:IsType(TYPE_TOKEN)
end
function Nef.OverlayGroup(c,g,xm,nchk)
if not nchk and (not c:IsLocation(LOCATION_MZONE) or c:IsFacedown() or g:GetCount()<=0 or not c:IsType(TYPE_XYZ)) then return end
local tg=g:Filter(Nef.OverlayFilter,nil,nchk)
if tg:GetCount()==0 then return end
local og=Group.CreateGroup()
for tc in aux.Next(tg) do
if tc:IsStatus(STATUS_LEAVE_CONFIRMED) then
tc:CancelToGrave()
end
og:Merge(tc:GetOverlayGroup())
end
if og:GetCount()>0 then
if xm then
Duel.Overlay(c,og)
else
Duel.SendtoGrave(og,REASON_RULE)
end
end
Duel.Overlay(c,tg)
end
function Nef.CheckFieldFilter(g,tp,c,f,...)
return Duel.GetLocationCountFromEx(tp,tp,g,c)>0 and (not f or f(g,...))
end
function Nef.AddXyzProcedureCustom(c,func,gf,minc,maxc,xm,...)
local ext_params={...}
if c.xyz_filter==nil then
local code=c:GetOriginalCode()
local mt=_G["c" .. code]
mt.xyz_filter=func or aux.TRUE
mt.xyz_count=minc
end
local maxc=maxc or minc
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_EXTRA)
e1:SetCondition(Nef.XyzProcedureCustomCondition(func,gf,minc,maxc,ext_params))
e1:SetTarget(Nef.XyzProcedureCustomTarget(func,gf,minc,maxc,ext_params))
e1:SetOperation(Nef.XyzProcedureCustomOperation(xm))
e1:SetValue(SUMMON_TYPE_XYZ)
c:RegisterEffect(e1)
return e1
end
function Nef.XyzProcedureCustomTuneMagicianFilter(c,te)
local f=te:GetValue()
return f(te,c)
end
function Nef.XyzProcedureCustomTuneMagicianCheck(c,g)
local eset={c:IsHasEffect(EFFECT_TUNE_MAGICIAN_X)}
for _,te in ipairs(eset) do
if g:IsExists(Nef.XyzProcedureCustomTuneMagicianFilter,1,c,te) then return true end
end
return false
end
function Nef.XyzProcedureCustomCheck(g,xyzc,tp,gf)
if g:IsExists(Nef.XyzProcedureCustomTuneMagicianCheck,1,nil,g) then return false end
return not gf or gf(g,xyzc,tp)
end
function Nef.XyzProcedureCustomFilter(c,xyzcard,func,ext_params)
if c:IsLocation(LOCATION_ONFIELD+LOCATION_REMOVED) and c:IsFacedown() then return false end
return c:IsCanBeXyzMaterial(xyzcard) and (not func or func(c,xyzcard,table.unpack(ext_params)))
end
function Nef.XyzProcedureCustomCondition(func,gf,minct,maxct,ext_params)
return function(e,c,og,min,max)
if c==nil then return true end
if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end
local tp=c:GetControler()
local minc=minct or 2
local maxc=maxct or minct or 63
if min then
minc=math.max(minc,min)
maxc=math.min(maxc,max)
end
local mg=nil
if og then
mg=og:Filter(Nef.XyzProcedureCustomFilter,nil,c,func,ext_params)
else
mg=Duel.GetMatchingGroup(Nef.XyzProcedureCustomFilter,tp,LOCATION_MZONE,0,nil,c,func,ext_params)
end
local sg=Group.CreateGroup()
local ce={Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_XMATERIAL)}
for _,te in ipairs(ce) do
local tc=te:GetHandler()
if not mg:IsContains(tc) then return false end
sg:AddCard(tc)
end
return maxc>=minc and Nef.CheckGroup(mg,Nef.CheckFieldFilter,sg,minc,maxc,tp,c,Nef.XyzProcedureCustomCheck,c,tp,gf)
end
end
function Nef.XyzProcedureCustomTarget(func,gf,minct,maxct,ext_params)
return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,min,max)
local g=nil
if og and not min then
g=og
else
local mg=nil
if og then
mg=og:Filter(Nef.XyzProcedureCustomFilter,nil,c,func,ext_params)
else
mg=Duel.GetMatchingGroup(Nef.XyzProcedureCustomFilter,tp,LOCATION_MZONE,0,nil,c,func,ext_params)
end
local minc=minct or 2
local maxc=maxct or minct or 63
if min then
minc=math.max(minc,min)
maxc=math.min(maxc,max)
end
local ce={Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_XMATERIAL)}
for _,te in ipairs(ce) do
local tc=te:GetHandler()
sg:AddCard(tc)
end
g=Nef.SelectGroupWithCancel(tp,HINTMSG_XMATERIAL,mg,Nef.CheckFieldFilter,sg,minc,maxc,tp,c,Nef.XyzProcedureCustomCheck,c,tp,gf)
end
if g then
g:KeepAlive()
e:SetLabelObject(g)
return true
else return false end
end
end
function Nef.XyzProcedureCustomOperation(xm)
return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max)
local g=e:GetLabelObject()
c:SetMaterial(g)
Nef.OverlayGroup(c,g,xm,true)
g:DeleteGroup()
end
end
function Nef.CommonCounterGroup(c, code)
Nef.ccg = Nef.ccg or {}
Nef.counter = Nef.counter or {[0] = {}, [1] = {},}
if not Nef.ccg[code] then
Nef.ccg[code] = Group.CreateGroup()
Nef.ccg[code]:KeepAlive()
Nef.counter[0][code] = 0
Nef.counter[1][code] = 0
end
if not Nef.ccg[code]:IsContains(c) then
Nef.ccg[code]:AddCard(c)
end
end
function Nef.AddCommonCounter(num, code, tp)
if not tp then
Nef.AddCommonCounter(num, code, 0)
Nef.AddCommonCounter(num, code, 1)
return
end
if Nef.ccg[code] then
Nef.counter[tp][code] = Nef.counter[tp][code] + num
if Nef.counter[tp][code] < 0 then Nef.counter[tp][code] = 0 end
local tag = math.min(Nef.counter[tp][code], 11)
local tc = Nef.ccg[code]:GetFirst()
while tc do
if tc:IsControler(tp) then
tc:ResetFlagEffect(999900+code)
if tc:IsLocation(LOCATION_ONFIELD) and tag > 0 then
tc:RegisterFlagEffect(999900+code, RESET_EVENT+0xfe0000, EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE, 0, 0,
aux.Stringid(code, tag))
end
end
tc = Nef.ccg[code]:GetNext()
end
end
end
function Nef.SetCommonCounter(num, code, tp)
if not tp then
Nef.SetCommonCounter(num, code, 0)
Nef.SetCommonCounter(num, code, 1)
return
end
if Nef.ccg[code] then
Nef.counter[tp][code] = num
Nef.AddCommonCounter(0, code, tp)
end
end
function Nef.GetCommonCounter(code, tp)
local result = 0
if Nef.counter[tp] then
result = Nef.counter[tp][code] or 0
end
return result
end
function Nef.RefreshCommonCounter(c, code)
local tag = math.min(Nef.counter[c:GetControler()][code], 11)
c:ResetFlagEffect(999900+code)
if tag > 0 then
c:RegisterFlagEffect(999900+code, RESET_EVENT+0xfe0000, EFFECT_FLAG_CLIENT_HINT+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE, 0, 0,
aux.Stringid(code, tag))
end
end
function Nef.AddSummonMusic(c,desc,stype)
if c:IsStatus(STATUS_COPYING_EFFECT) then return end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE)
if stype then
e1:SetCondition(Nef.SummonTypeCondition(stype))
end
e1:SetOperation(function()
Duel.Hint(11,0,desc)
end)
c:RegisterEffect(e1)
local e2=e1:Clone()
e2:SetCode(EVENT_FLIP_SUMMON_SUCCESS)
c:RegisterEffect(e2)
local e3=e1:Clone()
e3:SetCode(EVENT_SPSUMMON_SUCCESS)
c:RegisterEffect(e3)
end
function Nef.AddLinkProcedureWithDesc(c,f,min,max,gf,desc)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE)
e1:SetRange(LOCATION_EXTRA)
e1:SetDescription(desc or 1166)
if max==nil then max=c:GetLink() end
e1:SetCondition(Auxiliary.LinkCondition(f,min,max,gf))
e1:SetTarget(Auxiliary.LinkTarget(f,min,max,gf))
e1:SetOperation(Auxiliary.LinkOperation(f,min,max,gf))
e1:SetValue(SUMMON_TYPE_LINK)
c:RegisterEffect(e1)
return e1
end
function Nef.DeepCopy(tbl)
local t = {}
for k, v in pairs(tbl) do
if type(v) == "table" then
t[k] = Nef.DeepCopy(v)
else
t[k] = v
end
end
return t
end
function Nef.GetAllArrow(c)
local res = {}
local list = {
LINK_MARKER_BOTTOM_LEFT,
LINK_MARKER_BOTTOM,
LINK_MARKER_BOTTOM_RIGHT,
LINK_MARKER_LEFT,
LINK_MARKER_RIGHT,
LINK_MARKER_TOP_LEFT,
LINK_MARKER_TOP,
LINK_MARKER_TOP_RIGHT,
}
for i = 1, #list do
if c:IsLinkMarker(list[i]) then
res[#res+1] = list[i]
end
end
return res
end
-- this group include cards in szone
function Nef.GetLinkArrowGroup(c)
local g = Group.CreateGroup()
if c:IsOnField() then
local tp = c:GetControler()
local loc = c:GetLocation()
local seq = c:GetSequence()
if c:IsLinkMarker(LINK_MARKER_TOP) then
local tc = Nef.getDir8CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_TOP_LEFT) then
local tc = Nef.getDir7CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_TOP_RIGHT) then
local tc = Nef.getDir9CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_LEFT) then
local tc = Nef.getDir4CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_RIGHT) then
local tc = Nef.getDir6CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_BOTTOM) then
local tc = Nef.getDir2CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_BOTTOM_LEFT) then
local tc = Nef.getDir1CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
if c:IsLinkMarker(LINK_MARKER_BOTTOM_RIGHT) then
local tc = Nef.getDir3CardByPos(tp, loc, seq)
if tc then g:AddCard(tc) end
end
end
return g
end
function Nef.getDir8CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if seq == 1 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 5)
elseif seq == 3 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 6)
elseif seq == 5 then
return Duel.GetFieldCard(1-tp, LOCATION_MZONE, 3)
elseif seq == 6 then
return Duel.GetFieldCard(1-tp, LOCATION_MZONE, 1)
end
else
return Duel.GetFieldCard(tp, LOCATION_MZONE, seq)
end
end
function Nef.getDir7CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if seq == 2 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 5)
elseif seq == 4 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 6)
elseif seq == 5 then
return Duel.GetFieldCard(1-tp, LOCATION_MZONE, 4)
elseif seq == 6 then
return Duel.GetFieldCard(1-tp, LOCATION_MZONE, 2)
end
else
if seq > 0 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, seq-1)
end
end
end
function Nef.getDir9CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if seq == 0 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 5)
elseif seq == 2 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 6)
elseif seq == 5 then
return Duel.GetFieldCard(1-tp, LOCATION_MZONE, 2)
elseif seq == 6 then
return Duel.GetFieldCard(1-tp, LOCATION_MZONE, 4)
end
else
if seq < 4 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, seq+1)
end
end
end
function Nef.getDir4CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if 1 < seq and seq < 5 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, seq-1)
end
else
if 1 < seq and seq < 5 then
return Duel.GetFieldCard(tp, LOCATION_SZONE, seq-1)
end
end
end
function Nef.getDir6CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if 0 < seq and seq < 4 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, seq+1)
end
else
if 0 < seq and seq < 4 then
return Duel.GetFieldCard(tp, LOCATION_SZONE, seq+1)
end
end
end
function Nef.getDir2CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if seq == 5 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 1)
elseif seq == 6 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 3)
else
return Duel.GetFieldCard(tp, LOCATION_SZONE, seq)
end
end
end
function Nef.getDir1CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if seq == 5 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 0)
elseif seq == 6 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 2)
elseif seq > 0 then
return Duel.GetFieldCard(tp, LOCATION_SZONE, seq-1)
end
end
end
function Nef.getDir3CardByPos(tp, loc, seq)
if loc == LOCATION_MZONE then
if seq == 5 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 2)
elseif seq == 6 then
return Duel.GetFieldCard(tp, LOCATION_MZONE, 4)
elseif seq < 4 then
return Duel.GetFieldCard(tp, LOCATION_SZONE, seq+1)
end
end
end
function Nef.RegisterBigFiendEffect(c,e)
c:RegisterEffect(e)
local ex=e:Clone()
ex:SetRange(LOCATION_HAND)
local con=e:GetCondition()
ex:SetCondition(function(e,tp,eg,ep,ev,re,r,rp)
return (not con or con(e,tp,eg,ep,ev,re,r,rp)) and Duel.IsPlayerAffectedByEffect(tp,22211) and e:GetHandler():IsSetCard(0x222)
end)
if ex:IsHasType(EFFECT_TYPE_IGNITION) then
ex:SetType((ex:GetType() & ~EFFECT_TYPE_IGNITION) | EFFECT_TYPE_QUICK_O)
ex:SetCode(EVENT_FREE_CHAIN)
ex:SetHintTiming(0,0x1c0)
end
c:RegisterEffect(ex)
end
function Auxiliary.NonTuner(f,...)
local ext_params={...}
return function(target,syncard)
return (not syncard or target:IsNotTuner(syncard)) and (not f or f(target,table.unpack(ext_params)))
end
end
if not Nef.SeedField then
local class = {}
class.seeds = {}
class.hint = true
function class.readZone(zone)
local zone0 = zone & 0xff
local zone1 = zone >> 16
local flag0 = math.log(zone0, 2)
local flag1 = math.log(zone1, 2)
return math.log(zone, 2), flag0, flag1, zone0, zone1
end
-- 换算zone为seq,>=16在对方场上
function class.getSeq(zone)
local a, b = class.readZone(zone)
if b > 4 then
return b
else
return a
end
end
-- 换算zone为seq,>=16在玩家1场上,因为extra区算玩家0的,所以转换一下22和21为5和6
function class.getSeq0(zone)
local seq0 = class.getSeq(zone)
if seq0 > 20 then seq0 = 27 - seq0 end
return seq0
end
-- 换算为玩家0的相对zone, extra区域算玩家0的
function class.fmtZone(tp, zone)
if tp == 0 then
return zone
else
local seq, seqTP, seqNTP, zoneTP, zoneNTP = class.readZone(zone)
if seqTP == 5 or seqTP == 6 then
return zoneTP << 16 | zoneNTP
else
if seq >= 16 then
return 1 << (seq - 16)
else
return 1 << (seq + 16)
end
end
end
end
--[[
tp 种子持有者
zone 目标区域
]]
function class.addSeed(e, tp, zoneTP)
local zone = class.fmtZone(tp, zoneTP)
local seq = class.getSeq0(zone)
local p = 0
local pseq = seq
if pseq >= 16 then
p = 1
pseq = pseq - 16
end
if class.isHasSeed(0, seq) or (not Duel.CheckLocation(p, LOCATION_MZONE, seq)) then return false end
local c = e:GetHandler()
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetTarget(class.tg)
e1:SetOperation(class.op)
e1:SetLabel(seq)
Duel.RegisterEffect(e1, tp)
local e2=e1:Clone()
e2:SetCode(EVENT_SUMMON_SUCCESS)
Duel.RegisterEffect(e2, tp)
class.seeds[seq] = {tp, e1, e2}
class.showSeedZone()
return true
end
--[[
tp 种子持有者
p seq的玩家
seq 相对玩家p目标区域序号
]]
function class.addSeedWithSeq(e, tp, p, seq)
local fix = p == tp and 0 or 16
return class.addSeed(e, tp, 1 << (seq + fix))
end
function class.showSeedZone()
if class.hint == false then return end
local zone00, zone01 = 0, 0
local zone10, zone11 = 0, 0
for i = 0, 4 do
if class.seeds[i] then
local p = class.seeds[i][1]
if p == 0 then
zone00 = zone00 | 1<<i
zone10 = zone10 | 1<<(i+16)
else
zone01 = zone01 | 1<<i
zone11 = zone11 | 1<<(i+16)
end
end
if class.seeds[i+16] then
local p = class.seeds[i+16][1]
if p == 0 then
zone00 = zone00 | 1<<(i+16)
zone10 = zone10 | 1<<i
else
zone01 = zone01 | 1<<(i+16)
zone11 = zone11 | 1<<i
end
end
end
for i = 5, 6 do
if class.seeds[i] then
local p = class.seeds[i][1]
if p == 0 then
zone00 = zone00 | 1<<i | 1<<(i+16)
zone10 = zone10 | 1<<i | 1<<(i+16)
else
zone01 = zone01 | 1<<i | 1<<(i+16)
zone11 = zone11 | 1<<i | 1<<(i+16)
end
end
end
if zone10 > 0 then
Duel.Hint(HINT_CODE, 1, 999399)
Duel.Hint(HINT_ZONE, 1, zone10)
else
Duel.Hint(HINT_CODE, 1, 999398)
end
if zone11 > 0 then
Duel.Hint(HINT_CODE, 1, 999397)
Duel.Hint(HINT_ZONE, 1, zone11)
else
Duel.Hint(HINT_CODE, 1, 999396)
end
if zone01 > 0 then
Duel.Hint(HINT_CODE, 0, 999399)
Duel.Hint(HINT_ZONE, 0, zone01)
else
Duel.Hint(HINT_CODE, 0, 999398)
end
if zone00 > 0 then
Duel.Hint(HINT_CODE, 0, 999397)
Duel.Hint(HINT_ZONE, 0, zone00)
else
Duel.Hint(HINT_CODE, 0, 999396)
end
end
function class.addStep()
class.hint = false
end
function class.addComplete()
class.hint = true
class.showSeedZone()
end
function class.getSeedOwner(tp, seq)
local zone0 = class.fmtZone(tp, 1 << seq)
local seq0 = class.getSeq0(zone0)
return class.seeds[seq0] and class.seeds[seq0][1]
end
-- 相对于tp的seq位置是否有种子
function class.isHasSeed(tp, seq)
return class.getSeedOwner(tp, seq) ~= nil
end
-- 相对于tp的seq位置是否有种子, 或该位置上的怪兽是否有种子指示物
function class.isHasSeedEx(tp, seq)
local zc = Duel.GetFieldCard(tp, LOCATION_MZONE, seq)
return class.isHasSeed(tp, seq) or (zc and zc:GetCounter(0x10a2) > 0)
end
-- 删除相对于tp的seq位置的种子
function class.delSeed(tp, seq)
local zone0 = class.fmtZone(tp, 1 << seq)
local seq0 = class.getSeq0(zone0)
local t = class.seeds[seq0]
t[2]:Reset()
t[3]:Reset()
class.seeds[seq0] = nil
class.showSeedZone()
end
function class.isHasSeedOnField()
for _, v in pairs(class.seeds) do
return true
end
return false
end
function class.cfilter(c, seq)
if c:IsLocation(LOCATION_MZONE) then
local p = c:GetControler()
local cseq = c:GetSequence()
if p == 1 then
p = 0
if cseq < 5 then
cseq = cseq + 16
else
cseq = 11 - cseq
end
end
return cseq == seq and class.isHasSeed(p, cseq) and c:IsFaceup()
end
end
function class.tg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk == 0 then
local seq = e:GetLabel()
return eg:IsExists(class.cfilter, 1, nil, seq)
end
end
function class.op(e,tp,eg,ep,ev,re,r,rp)
local seq = e:GetLabel()
local g = eg:Filter(class.cfilter, nil, seq)
local tg = g:Filter(Card.IsLocation, nil, LOCATION_MZONE)
if tg:GetCount() > 0 then
local c = tg:GetFirst()
local p = class.getSeedOwner(0, seq)
if (c:GetControler() == p) then
Duel.Hint(HINT_CARD, 0, 999312)
-- up atk
local e1=Effect.CreateEffect(e:GetOwner())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+0x1fe0000)
e1:SetValue(400)
c:RegisterEffect(e1)
-- can not be target
local e2=Effect.CreateEffect(e:GetOwner())
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
e2:SetValue(aux.tgoval)
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END)
c:RegisterEffect(e2)
else
Duel.Hint(HINT_CARD, 0, 999312)
-- down atk
local e1=Effect.CreateEffect(e:GetOwner())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+0x1fe0000)
e1:SetValue(-400)
c:RegisterEffect(e1)
-- change race
if not c:IsRace(RACE_PLANT) then
local e1 = Effect.CreateEffect(e:GetOwner())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CHANGE_RACE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e1:SetValue(RACE_PLANT)
e1:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e1)
end
-- change level
if not c:IsType(TYPE_XYZ) and not c:IsType(TYPE_LINK) then
local e2 = Effect.CreateEffect(e:GetOwner())
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetCode(EFFECT_UPDATE_LEVEL)
e2:SetReset(RESET_EVENT+0x1fe0000)
e2:SetValue(-1)
c:RegisterEffect(e2)
end
end
-- add counter
c:AddCounter(0x10a2, 1)
class.delSeed(0, seq)
end
end
Nef.SeedField = class
end
if not Nef.PLCounter then
local class = {}
class._e = {
[0] = {},
[1] = {},
}
class._n = {
[0] = {},
[1] = {},
}
function class.Add(tp, code, num)
local eg = class._e[tp][code]
if eg then
local e = eg:GetLabelObject()
e:Reset()
eg:Reset()
end
local e1 = Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CLIENT_HINT)
local eg1 = Effect.GlobalEffect()
eg1:SetType(EFFECT_TYPE_FIELD|EFFECT_TYPE_GRANT)
eg1:SetTargetRange(0xff, 0)
eg1:SetTarget(aux.TRUE)
local count = (class._n[tp][code] or 0) + num
class._e[tp][code] = eg1
class._n[tp][code] = count
e1:SetDescription(aux.Stringid(code, count))
eg1:SetLabelObject(e1)
Duel.RegisterEffect(eg1, tp)
end
function class.Get(tp, code)
return class._n[tp][code] or 0
end
Nef.PLCounter = class
end
\ No newline at end of file
--
require "expansions/script/nef/nef"
Uds={}
local Udsflag = true
Uds.dataList = {}
Uds.cardList = {}
--rewrite
function Auxiliary.PreloadUds()
Uds.regCardData()
Uds.regSelectCard()
end
function Uds.regCardData()
-- Uds.dataList = {
-- [1] = {desc=aux.Stringid(37001,1), code=37001, cost=6},
-- [2] = {desc=aux.Stringid(37001,2), code=37002, cost=6},
-- [3] = {desc=aux.Stringid(37001,3), code=37003, cost=3},
-- [4] = {desc=aux.Stringid(37001,4), code=37004, cost=3},
-- [5] = {desc=aux.Stringid(37001,5), code=37005, cost=2},
-- [6] = {desc=aux.Stringid(37001,6), code=37006, cost=5},
-- [7] = {desc=aux.Stringid(37001,7), code=37007, cost=5},
-- [8] = {desc=aux.Stringid(37001,8), code=37008, cost=4},
-- [9] = {desc=aux.Stringid(37001,9), code=37009, cost=9},
-- [10] = {desc=aux.Stringid(37001,10), code=37010, cost=4},
-- }
Uds.dataList = {
[37001] = 6,
[37002] = 6,
[37003] = 3,
[37004] = 3,
[37005] = 2,
[37006] = 5,
[37007] = 5,
[37008] = 4,
[37009] = 9,
[37010] = 4,
[37011] = 3,
[37012] = 2,
}
end
function Uds.regSelectCard()
local e1=Effect.GlobalEffect()
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetCode(EVENT_ADJUST)
-- e1:SetCode(EVENT_PHASE+PHASE_DRAW)
e1:SetOperation(Uds.rscop)
Duel.RegisterEffect(e1,0)
end
function Uds.rscop(e,tp,eg,ep,ev,re,r,rp)
--
if not Duel.SelectYesNo(tp,aux.Stringid(37000,2)) or not Duel.SelectYesNo(1-tp,aux.Stringid(37000,2)) then e:Reset()
return end
for k,v in pairs(Uds.dataList) do
local token0=Duel.CreateToken(0, k)
local token1=Duel.CreateToken(1, k)
Duel.Remove(token0,POS_FACEDOWN,REASON_RULE)
Duel.Remove(token1,POS_FACEDOWN,REASON_RULE)
end
local function checkCost(c, availableCost, trick)
local code = c:GetCode()
if code == 37000 then return trick < 2 end
return Uds.dataList[code] and Uds.dataList[code] <= availableCost
end
-- 初始选卡
for player=0,1 do
local availableCost=10
local trick = 0
while availableCost>0 do
if Duel.GetMatchingGroupCount(checkCost, player, LOCATION_REMOVED, 0, nil, availableCost, trick)>0 then
local g=Duel.SelectMatchingCard(player, checkCost, player, LOCATION_REMOVED, 0, 1, 1, nil, availableCost, trick)
local tc=g:GetFirst()
if tc:GetCode()~=37000 then
Uds.initCard(tc:GetCode(),player)
availableCost = availableCost - Uds.dataList[tc:GetCode()]
else
trick = trick + 1
end
else
availableCost = 0
end
end
-- -- 初始化table
-- local availableCost=10
-- local t={}
-- for k,v in pairs(Uds.dataList) do
-- t[k]=v
-- end
-- while availableCost>0 and #t>0 do
-- Duel.Hint(HINT_MESSAGE,player,aux.Stringid(37000,0))
-- local sel=Duel.SelectOption(player,Nef.unpackOneMember(t, "desc"))+1
-- local code=t[sel].code
-- Uds.initCard(code,player)
-- -- 维护table
-- availableCost=availableCost-t[sel].cost
-- for k=#t,1,-1 do
-- v=t[k]
-- if v.cost > availableCost then
-- table.remove(t, k)
-- end
-- end
-- end
-- local token=Duel.CreateToken(player,37000)
-- Duel.Remove(token,POS_FACEUP,REASON_RULE)
-- Duel.RaiseSingleEvent(e:GetHandler(),EVENT_REMOVE,e,REASON_RULE,player,player,0)
-- for i=1,2 do
-- if Duel.SelectYesNo(player,aux.Stringid(37000,1)) then
-- local token=Duel.CreateToken(player,37000)
-- Duel.Remove(token,POS_FACEDOWN,REASON_RULE)
-- end
-- end
end
--销毁本效果
e:Reset()
end
function Uds.initCard(code, player)
if Uds.cardList[code] == nil then
-- 初始化数据结构
Uds.cardList[code] = {}
Uds.cardList[code][0] = 0
Uds.cardList[code][1] = 0
end
-- 初始化符卡
-- local token=Duel.CreateToken(player,code)
-- Duel.Remove(token,POS_FACEDOWN,REASON_RULE)
-- 存储使用次数
Uds.cardList[code][player] = Uds.cardList[code][player] + 1
end
function Uds.regUdsEffect(e,code)
local e1=e:Clone()
e1:SetLabel(code)
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetOperation(Uds.setop)
Duel.RegisterEffect(e1,0)
local e2=e1:Clone()
Duel.RegisterEffect(e2,1)
end
function Uds.setop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_SZONE)==0 then return end
if Uds.cardList[e:GetLabel()] == nil then return end -- 排除没有被初始化的符卡
if Uds.cardList[e:GetLabel()][e:GetOwnerPlayer()] < 1 then return end -- 该玩家发动次数不足
if not Duel.SelectYesNo(tp,aux.Stringid(e:GetLabel(),0)) then return end
-- 维护发动次数
Uds.cardList[e:GetLabel()][e:GetOwnerPlayer()] = Uds.cardList[e:GetLabel()][e:GetOwnerPlayer()] - 1
-- 创建符卡
local token=Duel.CreateToken(e:GetOwnerPlayer(),e:GetLabel())
Duel.MoveToField(token, e:GetOwnerPlayer(), e:GetOwnerPlayer(), LOCATION_SZONE, POS_FACEDOWN, false)
end
Duel.LoadScript("nef/nef.lua")
Duel.LoadScript("nef/msc.lua")
Duel.LoadScript("nef/fus.lua")
Duel.LoadScript("nef/ets.lua")
Duel.LoadScript("nef/elf.lua")
Duel.LoadScript("nef/dss.lua")
Duel.LoadScript("nef/afi.lua")
-- require "expansions/script/nef/nef"
-- require "expansions/script/nef/msc"
-- require "expansions/script/nef/fus"
-- require "expansions/script/nef/ets"
-- require "expansions/script/nef/elf"
-- require "expansions/script/nef/dss"
-- require "expansions/script/nef/afi"
-- require "nef/nef"
-- require "nef/msc"
-- require "nef/fus"
-- require "nef/ets"
-- require "nef/elf"
-- require "nef/dss"
-- require "nef/afi"
\ 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