Overview
Comment: | 0.0.333 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
748ed664c0deb8dcf6c6d7217cd9765c |
User & Date: | 顽雨沉风 on 2023-06-29 12:23:25 |
Other Links: | manifest | tags |
Context
2023-06-29
| ||
12:27 | 0.0.334 check-in: 46d5dbecb0 user: 顽雨沉风 tags: trunk | |
12:23 | 0.0.333 check-in: 748ed664c0 user: 顽雨沉风 tags: trunk | |
12:21 | 0.0.332 check-in: 6265c22598 user: 顽雨沉风 tags: trunk | |
Changes
Added script/strings.conf version [1260f13cd1].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 | #The first line is used for comment #line doesn't start with '!' is also neglected #called by DataManager::GetSysString(), DataManager::GetDesc() #system !system 1 通常召唤 !system 2 特殊召唤 !system 3 反转召唤 !system 4 通常召唤成功 !system 5 特殊召唤成功 !system 6 反转召唤成功 !system 7 发动 !system 10 取除指示物 !system 11 支付基本分 !system 12 取除本身的素材 !system 20 抽卡阶段中 !system 21 准备阶段中 !system 22 主要阶段中 !system 23 即将结束主要阶段 !system 24 战斗阶段中 !system 25 战斗阶段结束时 !system 26 结束阶段中 !system 27 抽卡前 !system 28 战斗阶段开始 !system 29 即将结束战斗步骤 !system 30 战斗回卷,是否继续攻击? !system 31 是否直接攻击? !system 40 伤害步骤开始时 !system 41 伤害计算前 !system 42 伤害计算时 !system 43 伤害计算后 !system 44 伤害步骤结束时 !system 60 正面 !system 61 反面 !system 62 表效果适用中 !system 63 里效果适用中 !system 64 二重状态 !system 65 使用效果 !system 66 持续公开 !system 67 原本持有者为对方 !system 70 怪兽卡 !system 71 魔法卡 !system 72 陷阱卡 !system 80 进入战斗阶段 !system 81 进入结束阶段 !system 90 是否不解放怪兽通常召唤? !system 91 是否使用额外的召唤机会? !system 92 是否要解放对方怪兽进行上级召唤? !system 93 是否要继续选择素材? !system 94 是否现在使用这张卡的效果? !system 95 是否使用[%ls]的效果? !system 96 是否使用[%ls]的效果代替破坏? !system 97 是否把[%ls]在魔法与陷阱区域放置? !system 98 是否要解放对方怪兽? !system 100 先攻 !system 101 后攻 !system 102 我方 !system 103 对方 !system 200 是否在[%ls]发动[%ls]的效果? !system 201 此时没有可以发动的效果 !system 202 是否要确认场上的情况? !system 203 是否要进行连锁? !system 204 请取除%d个[%ls] !system 205 请选择排列顺序 !system 206 请选择连锁顺序 !system 207 翻开卡组上方%d张卡: !system 208 确认%d张卡: !system 209 当前所选的卡已满足选择条件 !system 210 是否要继续选择? !system 211 回合计数: !system 212 已选择卡: !system 213 已选择种族: !system 214 已选择属性: !system 215 已选择数字: !system 216 在连锁%d发动 !system 217 被连锁%d的[%ls]选择为对象 !system 218 是否使用[%ls]的效果代替支付基本分? !system 219 是否使用[%ls]的效果代替取除超量素材? !system 220 是否使用[%ls]的效果代替取除指示物? !system 221 是否在[%ls]发动[%ls]的诱发类效果? !system 222 是否要发动诱发类效果? !system 223 稍后将询问其他可以发动的效果。 !system 224 已用正规方法特殊召唤 !system 225 叠放于[%ls](%d)下 !system 500 请选择要解放的卡 !system 501 请选择要丢弃的手卡 !system 502 请选择要破坏的卡 !system 503 请选择要除外的卡 !system 504 请选择要送去墓地的卡 !system 505 请选择要返回手卡的卡 !system 506 请选择要加入手卡的卡 !system 507 请选择要返回卡组的卡 !system 508 请选择要召唤的卡 !system 509 请选择要特殊召唤的卡 !system 510 请选择要盖放的卡 !system 511 请选择要作为融合素材的卡 !system 512 请选择要作为同调素材的卡 !system 513 请选择要作为超量素材的卡 !system 514 请选择表侧表示的卡 !system 515 请选择里侧表示的卡 !system 516 请选择攻击表示的怪兽 !system 517 请选择守备表示的怪兽 !system 518 请选择要装备的卡 !system 519 请选择要取除的超量素材 !system 520 请选择要改变控制权的怪兽 !system 521 请选择要代替破坏的卡 !system 522 请选择表侧攻击表示的怪兽 !system 523 请选择表侧守备表示的怪兽 !system 524 请选择里侧攻击表示的怪兽 !system 525 请选择里侧守备表示的怪兽 !system 526 请选择给对方确认的卡 !system 527 请选择要放置到场上的卡 !system 528 请选择要改变表示形式的怪兽 !system 529 请选择自己的卡 !system 530 请选择对方的卡 !system 531 请选择上级召唤用需要解放的怪兽 !system 532 请选择要取除超量素材的怪兽 !system 533 请选择要作为连接素材的卡 !system 534 请选择要保留在场上的卡 !system 549 请选择攻击的对象 !system 550 请选择要发动的效果 !system 551 请选择效果的对象 !system 552 请选择硬币的正反面 !system 553 请选择骰子的结果 !system 554 请选择一个种类 !system 555 请选择一个选项 !system 556 请选择要发动/处理的效果 !system 560 请选择 !system 561 请选择表示形式 !system 562 请选择要宣言的属性 !system 563 请选择要宣言的种族 !system 564 请宣言一个卡名 !system 565 请选择一个数字 !system 566 请选择要发动效果的卡 !system 567 请宣言一个等级 !system 568 请选择要处理效果的卡 !system 569 请选择[%ls]的位置 !system 570 请选择要变成不能使用的卡片区域 !system 571 请选择要移动到的位置 !system 572 请选择要放置指示物的卡 !system 573 请选择要无效的卡 !system 574 请选择要操作的卡 !system 1000 卡组 !system 1001 手卡 !system 1002 怪兽区 !system 1003 魔法陷阱区 !system 1004 墓地 !system 1005 除外 !system 1006 额外 !system 1007 叠放 !system 1008 场地区 !system 1009 灵摆区 !system 1010 地 !system 1011 水 !system 1012 炎 !system 1013 风 !system 1014 光 !system 1015 暗 !system 1016 神 !system 1020 战士 !system 1021 魔法师 !system 1022 天使 !system 1023 恶魔 !system 1024 不死 !system 1025 机械 !system 1026 水 !system 1027 炎 !system 1028 岩石 !system 1029 鸟兽 !system 1030 植物 !system 1031 昆虫 !system 1032 雷 !system 1033 龙 !system 1034 兽 !system 1035 兽战士 !system 1036 恐龙 !system 1037 鱼 !system 1038 海龙 !system 1039 爬虫类 !system 1040 念动力 !system 1041 幻神兽 !system 1042 创造神 !system 1043 幻龙 !system 1044 电子界 !system 1045 幻想魔 !system 1050 怪兽 !system 1051 魔法 !system 1052 陷阱 !system 1053 ??? !system 1054 通常 !system 1055 效果 !system 1056 融合 !system 1057 仪式 !system 1058 陷阱怪兽 !system 1059 灵魂 !system 1060 同盟 !system 1061 二重 !system 1062 调整 !system 1063 同调 !system 1064 衍生物 !system 1065 ??? !system 1066 速攻 !system 1067 永续 !system 1068 装备 !system 1069 场地 !system 1070 反击 !system 1071 反转 !system 1072 卡通 !system 1073 超量 !system 1074 灵摆 !system 1075 特殊召唤 !system 1076 连接 !system 1080 (N/A) !system 1081 额外怪兽区 #GUI !system 1100 魔陷破坏 !system 1101 怪兽破坏 !system 1102 卡片除外 !system 1103 送去墓地 !system 1104 返回手卡 !system 1105 返回卡组 !system 1106 手卡破坏 !system 1107 卡组破坏 !system 1108 抽卡辅助 !system 1109 卡组检索 !system 1110 卡片回收 !system 1111 表示形式 !system 1112 控制权 !system 1113 攻守变化 !system 1114 穿刺伤害 !system 1115 多次攻击 !system 1116 攻击限制 !system 1117 直接攻击 !system 1118 特殊召唤 !system 1119 衍生物 !system 1120 种族相关 !system 1121 属性相关 !system 1122 LP伤害 !system 1123 LP回复 !system 1124 破坏耐性 !system 1125 效果耐性 !system 1126 指示物 !system 1127 幸运 !system 1128 融合相关 !system 1129 同调相关 !system 1130 超量相关 !system 1131 效果无效 #actions !system 1150 发动 !system 1151 召唤 !system 1152 特殊召唤 !system 1153 盖放 !system 1154 反转召唤 !system 1155 守备表示 !system 1156 攻击表示 !system 1157 攻击 !system 1158 查看列表 !system 1159 当魔法卡盖放 !system 1160 在灵摆区域发动 !system 1161 效果处理 !system 1162 效果重置 !system 1163 灵摆召唤 !system 1164 同调召唤 !system 1165 超量召唤 !system 1166 连接召唤 !system 1167 上级召唤 !system 1168 仪式召唤 !system 1169 融合召唤 !system 1190 加入手卡 !system 1191 送去墓地 !system 1192 除外 !system 1193 回到卡组 #menu !system 1200 联机模式 !system 1201 单人模式 !system 1202 观看录像 !system 1203 N/A !system 1204 编辑卡组 !system 1210 退出 !system 1211 确定 !system 1212 取消 !system 1213 是 !system 1214 否 !system 1215 开始 !system 1216 消息 !system 1217 刷新主机 !system 1218 准备 !system 1219 取消准备 !system 1220 昵称: !system 1221 主机信息: !system 1222 主机密码: !system 1223 加入游戏 !system 1224 建立主机 !system 1225 卡片允许: !system 1226 禁限卡表: !system 1227 决斗模式: !system 1228 ↓额外选项(无特殊要求请勿修改) !system 1229 不检查卡组 !system 1230 不洗切卡组 !system 1231 初始基本分: !system 1232 初始手卡数: !system 1233 每回合抽卡: !system 1234 主机名称: !system 1235 主机密码: !system 1236 规则: !system 1237 每回合时间: !system 1238 不洗切时回卡组改为回顶端 !system 1244 单局模式 !system 1245 比赛模式 !system 1246 TAG !system 1247 标准对战 !system 1248 自定义 !system 1250 决斗准备 !system 1251 →决斗者 !system 1252 →观战 !system 1253 当前观战人数: !system 1254 卡组选择: !system 1255 准备完毕! !system 1260 大师规则 !system 1261 大师规则2 !system 1262 大师规则3 !system 1263 新大师规则 !system 1264 大师规则2020 !system 1270 卡片信息 !system 1271 消息记录 !system 1272 清除记录 !system 1273 系统设定 !system 1274 自动选择怪兽卡片位置 !system 1275 ↑随机选择位置 !system 1276 自动发动并排序必发效果 !system 1277 没有可连锁的卡时延迟回应 !system 1278 自动选择魔陷卡片位置 !system 1279 开启音效 !system 1280 开启音乐 !system 1281 按场景切换音乐 !system 1282 窗口大小 !system 1283 小 !system 1284 中 !system 1285 大 !system 1286 特大 !system 1287 只有连锁1也显示连锁动画 !system 1288 禁限卡表 !system 1289 隐藏玩家昵称 !system 1290 禁用聊天功能 !system 1291 忽略观战者发言 !system 1292 忽略时点 !system 1293 显示时点 !system 1294 可用时点 !system 1295 取消操作 !system 1296 完成选择 !system 1297 洗切手卡 !system 1298 辅助功能 !system 1299 加快动画效果 !system 1300 卡组分类: !system 1301 卡组列表: !system 1302 保存 !system 1303 另存 !system 1304 清空 !system 1305 排序 !system 1306 退出编辑 !system 1307 打乱 !system 1308 删除 !system 1309 重置 !system 1310 (无) !system 1311 种类: !system 1312 怪兽 !system 1313 魔法 !system 1314 陷阱 !system 1315 禁限: !system 1316 禁止 !system 1317 限制 !system 1318 准限制 !system 1319 属性: !system 1321 种族: !system 1322 攻击: !system 1323 守备: !system 1324 星数: !system 1325 关键字: !system 1326 效果 !system 1327 搜索 !system 1328 管理 !system 1329 系列: !system 1330 主卡组: !system 1331 额外卡组: !system 1332 副卡组: !system 1333 搜索结果: !system 1334 副卡组更换完成 !system 1335 保存成功 !system 1336 刻度: !system 1337 是否删除这个卡组? !system 1338 删除成功 !system 1339 是否清空正在编辑的卡组? !system 1340 是否保存录像? !system 1341 保存 !system 1342 录像文件: !system 1343 播放 !system 1344 暂停 !system 1345 下一步 !system 1346 切换视角 !system 1347 退出 !system 1348 载入录像 !system 1349 录像信息: !system 1350 离开 !system 1351 投降 !system 1352 主要信息: !system 1353 播放起始于回合: !system 1354 开局默认显示所有时点 !system 1356 此操作将放弃对当前卡组的修改,是否继续? !system 1357 不提示保留对卡组的修改 !system 1358 键入关键字后自动进行搜索 !system 1359 是否确定投降? !system 1360 上一步 !system 1361 删除录像 !system 1362 重命名 !system 1363 是否删除这个录像? !system 1364 重命名录像 !system 1365 重命名失败,可能存在同名文件 !system 1366 自动保存录像 !system 1367 录像已自动保存为%ls.yrp !system 1369 提取卡组 !system 1370 星数↑ !system 1371 攻击↑ !system 1372 守备↑ !system 1373 名称↓ !system 1374 连接标记 !system 1378 使用多个关键词搜索卡片 !system 1379 启用扩展卡包调试模式 !system 1380 人机模式 !system 1381 残局模式 !system 1382 人机信息: !system 1384 电脑锁定出剪刀 !system 1385 列表为空,可能未安装合适的人机 !system 1390 等待行动中... !system 1391 等待行动中.... !system 1392 等待行动中..... !system 1400 无法连接到主机。 !system 1401 连接已断开。 !system 1402 网络传输发生错误。 !system 1403 无法加入主机。 !system 1404 密码错误。 !system 1405 主机拒绝了连接。 !system 1406 无效卡组。 !system 1407 「%ls」的数量不符合当前禁限卡表设定。 !system 1408 更换副卡组失败。 !system 1409 等待更换副卡组中... !system 1410 卡组数量与先前不符合。 !system 1411 版本不匹配(%X.0%X.%X)。 !system 1412 无法解析主机地址。 !system 1413 「%ls」为OCG独有卡,不允许在当前设定下使用。 !system 1414 「%ls」为TCG独有卡,不允许在当前设定下使用。 !system 1415 卡组中「%ls(%d)」无法被主机识别。 !system 1416 卡组中「%ls」的总数量超过3张。 !system 1417 主卡组数量应为40-60张,当前卡组数量为%d张。 !system 1418 额外卡组数量应不超过15张,当前卡组数量为%d张。 !system 1419 副卡组数量应不超过15张,当前卡组数量为%d张。 !system 1420 有额外卡组卡片存在于主卡组,可能是额外卡组数量超过15张。 !system 1421 操作无效,请重试。 !system 1422 宣言的卡不符合条件,或无法被主机识别。 !system 1423 宣言的属性不符合条件。 !system 1424 宣言的种族不符合条件 !system 1425 宣言的数字不符合条件。 !system 1426 选择的选项不符合条件 !system 1427 选择的卡片不符合条件。 !system 1428 选择的连锁不符合条件。 !system 1429 选择的位置不符合条件。 !system 1430 选择的表示形式不符合条件。 !system 1431 选择的指示物不符合条件。 !system 1432 「%ls」不允许在当前设定下使用。 !system 1440 关闭大图 !system 1441 放大 !system 1442 缩小 !system 1443 原始尺寸 !system 1450 卡包展示 !system 1451 人机卡组 !system 1452 未分类卡组 !system 1453 -------- !system 1460 卡组管理 !system 1461 新建分类 !system 1462 重命名分类 !system 1463 删除分类 !system 1464 新建卡组 !system 1465 重命名卡组 !system 1466 删除卡组 !system 1467 移动到分类 !system 1468 复制到分类 !system 1469 请输入分类名: !system 1470 确实要删除此分类和分类下全部卡组吗? !system 1471 请输入卡组名: !system 1472 请选择要移动到的分类: !system 1473 请选择要复制到的分类: !system 1474 已存在同名分类 !system 1475 已存在同名卡组 !system 1476 删除失败 !system 1477 卡片数: !system 1481 OCG !system 1482 TCG !system 1483 简体中文 !system 1484 自定义卡片 !system 1485 无独有卡 !system 1486 所有卡片 !system 1500 决斗结束。 !system 1501 录像结束。 !system 1502 连接已断开。 !system 1510 玩家选择了:[%ls] !system 1511 玩家宣言了:[%ls] !system 1512 玩家选择了:[%d] !system 1600 卡片改变了表示形式 !system 1601 盖放了卡片 !system 1602 卡的控制权改变了 !system 1603 [%ls]召唤中 !system 1604 怪兽召唤成功 !system 1605 [%ls]特殊召唤中 !system 1606 怪兽特殊召唤成功 !system 1607 [%ls]反转召唤中 !system 1608 怪兽反转召唤成功 !system 1609 [%ls]的效果发动 !system 1610 [%ls](%ls,%d)成为对象或目标 !system 1611 我方抽了%d张卡 !system 1612 对方抽了%d张卡 !system 1613 我方受到%d伤害 !system 1614 对方受到%d伤害 !system 1615 我方回复%d基本分 !system 1616 对方回复%d基本分 !system 1617 [%ls]放置了%d个[%ls] !system 1618 [%ls]取除了%d个[%ls] !system 1619 [%ls]攻击[%ls] !system 1620 [%ls]直接攻击 !system 1621 攻击被无效 !system 1622 [%ls]错过时点 !system 1623 投掷硬币结果: !system 1624 投掷骰子结果: #tips !system 1700 可以用鼠标右键%ls #victory reason !victory 0x0 投降 !victory 0x1 基本分变成0 !victory 0x2 没有卡可抽 !victory 0x3 超时 !victory 0x4 失去连接 !victory 0x10 「被封印的艾克佐迪亚」特殊胜利 !victory 0x11 「终焉的倒计时」特殊胜利 !victory 0x12 「毒蛇神 维诺米纳迦」特殊胜利 !victory 0x13 「光之创造神 哈拉克提」特殊胜利 !victory 0x14 「究极封印神 艾克佐迪奥斯」特殊胜利 !victory 0x15 「通灵盘」特殊胜利 !victory 0x16 「最终一战!」特殊胜利 !victory 0x17 「No.88 机关傀儡-命运狮子」特殊胜利 !victory 0x18 「混沌No.88 机关傀儡-灾厄狮子」特殊胜利 !victory 0x19 「头奖壶7」特殊胜利 !victory 0x1a 「魂之接力」特殊胜利 !victory 0x1b 「鬼计惰天使」特殊胜利 !victory 0x1c 「幻煌龙的天涡」特殊胜利 !victory 0x1d 「方程式运动员胜利团队」特殊胜利 !victory 0x1e 「飞行象」特殊胜利 !victory 0x1f 「守护神 艾克佐迪亚」特殊胜利 !victory 0x20 「真艾克佐迪亚」特殊胜利 !victory 0x21 「混沌虚数No.1000 梦幻虚光神 原数天灵·原数天地」特殊胜利 !victory 0x22 「席取-六双丸」特殊胜利 !victory 0xffff 由于「%ls」获得比赛胜利 #counters !counter 0x1 魔力指示物 !counter 0x1002 楔指示物 !counter 0x3 武士道指示物 !counter 0x4 念力指示物 !counter 0x5 光指示物 !counter 0x6 宝玉指示物 !counter 0x7 指示物(剑斗兽之槛) !counter 0x8 变形斗士指示物 !counter 0x1009 毒指示物 !counter 0xa 次世代指示物 !counter 0xb 指示物(古代的机械城) !counter 0xc 雷指示物 !counter 0xd 强欲指示物 !counter 0x100e A指示物 !counter 0xf 虫指示物 !counter 0x10 黑羽指示物 !counter 0x11 超毒指示物 !counter 0x12 机巧指示物 !counter 0x13 混沌指示物 !counter 0x14 指示物(奇迹之侏罗纪蛋) !counter 0x1015 冰指示物 !counter 0x16 魔石指示物 !counter 0x17 橡子指示物 !counter 0x18 花指示物 !counter 0x1019 雾指示物 !counter 0x1a 倍倍指示物 !counter 0x1b 时计指示物 !counter 0x1c D指示物 !counter 0x1d 废品指示物 !counter 0x1e 门指示物 !counter 0x1f 指示物(巨大战舰) !counter 0x20 植物指示物 !counter 0x1021 守卫指示物 !counter 0x22 龙神指示物 !counter 0x23 海洋指示物 !counter 0x1024 线指示物 !counter 0x25 年代记指示物 !counter 0x26 指示物(金属射手) !counter 0x27 指示物(死亡蚊) !counter 0x28 指示物(暗黑弹射手) !counter 0x29 指示物(气球蜥蜴) !counter 0x102a 指示物(魔法防护器) !counter 0x2b 命运指示物 !counter 0x2c 遵命指示物 !counter 0x2d 指示物(踢火) !counter 0x2e 鲨指示物 !counter 0x2f 南瓜指示物 !counter 0x30 毅飞冲天指示物 !counter 0x31 希望剑指示物 !counter 0x32 气球指示物 !counter 0x33 妖仙指示物 !counter 0x34 指示物(纸箱拳击手) !counter 0x35 音响指示物 !counter 0x36 娱乐法师指示物 !counter 0x37 坏兽指示物 !counter 0x1038 方界指示物 !counter 0x1039 咕咚指示物 !counter 0x40 指示物(No.51 怪腕之必杀摔角手) !counter 0x1041 捕食指示物 !counter 0x42 指示物(爆竹鬼) !counter 0x43 缺陷指示物 !counter 0x44 指示物(弹带城壁龙) !counter 0x1045 鳞粉指示物 !counter 0x46 指示物(刚鬼死斗) !counter 0x47 指示物(限制代码) !counter 0x48 指示物(连接死亡炮塔) !counter 0x1049 警逻指示物 !counter 0x4a 运动员指示物 !counter 0x4b 枪管指示物 !counter 0x4c 召唤指示物 !counter 0x104d 信号指示物 !counter 0x4e 指示物(魂之灵摆) !counter 0x104f 蛊指示物 !counter 0x50 指示物(娱乐伙伴 掉头跑骑兵) !counter 0x51 指示物(蜂军巢) !counter 0x52 指示物(防火龙·暗流体) !counter 0x53 指示物(炽天蝶) !counter 0x54 指示物(星遗物引导的前路) !counter 0x55 指示物(隐居者的大釜) !counter 0x56 炎星指示物 !counter 0x57 幻魔指示物 !counter 0x58 指示物(祢须三破鸣比) !counter 0x59 落魂指示物 !counter 0x5a 指示物(战吼试炼) !counter 0x5b 指示物(北极天熊北斗星) !counter 0x105c 燃烧指示物 !counter 0x5d 指示物(机巧传-神使记纪图) !counter 0x5e 皇之键指示物 !counter 0x5f 拼图指示物 !counter 0x60 指示物(北极天熊辐射) !counter 0x61 指示物(命运的囚人) !counter 0x62 指示物(逐渐削减的生命) !counter 0x1063 幻觉指示物 !counter 0x64 G石人指示物 !counter 0x1065 兔耳指示物 !counter 0x66 指示物(推荐捏军贯) #setnames, using tab for comment !setname 0x1 正义盟军 A・O・J !setname 0x2 次世代 ジェネクス !setname 0x1002 真次世代 レアル·ジェネクス #!setname 0x2002 盟军·次世代 A・ジェネクス #setname 0x3 N/A !setname 0x4 亚马逊 アマゾネス !setname 0x5 秘仪之力 アルカナフォース !setname 0x6 暗黑界 暗黒界 !setname 0x7 古代的机械 アンティーク・ギア !setname 0x8 英雄 HERO !setname 0x3008 元素英雄 E・HERO !setname 0x5008 幻影英雄 V・HERO !setname 0x6008 邪心英雄 E-HERO !setname 0xa008 假面英雄 M・HERO !setname 0xc008 命运英雄 D-HERO !setname 0x9 新宇 ネオス !setname 0xa 入魔 ヴェルズ !setname 0x100a 侵入魔鬼 インヴェルズ !setname 0xb 永火 インフェルニティ !setname 0xc 外星 エーリアン !setname 0xd 剑士 セイバー !setname 0x100d X-剑士 X-セイバー #setname 0x300d XX-剑士 XX-セイバー !setname 0x400d 元素灵剑士 エレメントセイバー !setname 0xe 电气 エレキ !setname 0xf 扰乱 おジャマ !setname 0x10 薰风 ガスタ !setname 0x11 机巧 カラクリ !setname 0x12 青蛙 ガエル !setname 0x13 机皇 機皇 !setname 0x3013 机皇帝 機皇帝 !setname 0x5013 机皇神 機皇神 !setname 0x6013 机皇兵 機皇兵 #setname 0x14 N/A !setname 0x15 巨大战舰 巨大戦艦 !setname 0x16 机人 ロイド !setname 0x1016 交通机人 ビークロイド !setname 0x2016 疾行机人 スピードロイド !setname 0x17 同调 シンクロ !setname 0x1017 同调士 シンクロン !setname 0x2017 同调龙 シンクロ・ドラゴン !setname 0x18 云魔物 雲魔物 !setname 0x19 剑斗兽 剣闘獣 !setname 0x1a 黑蝎 黒蠍 !setname 0x1b 幻兽 幻獣 !setname 0x101b 幻兽机 幻獣機 !setname 0x1c 死之信息 死のメッセージ !setname 0x1d 核成 コアキメイル !setname 0x1e 茧状体 C(コクーン) !setname 0x1f 新空间侠 N(ネオスペーシアン) !setname 0x20 紫炎 紫炎 !setname 0x21 地缚 地縛 !setname 0x1021 地缚神 地縛神 !setname 0x22 朱罗纪 ジュラック !setname 0x23 罪 Sin !setname 0x24 废铁 スクラップ !setname 0x25 链 C(チェーン) !setname 0x26 变形斗士 D(ディフォーマー) !setname 0x27 科技属 TG(テックジーナス) !setname 0x28 电池人 電池メン !setname 0x29 龙骑兵团 ドラグニティ !setname 0x2a 自然 ナチュル !setname 0x2b 忍者 !setname 0x2c 炎狱 フレムベル #setname 0x2d N/A !setname 0x2e 守墓 墓守 !setname 0x2f 冰结界 氷結界 !setname 0x30 大日 ヴァイロン !setname 0x31 命运女郎 フォーチュンレディ !setname 0x32 火山 ヴォルカニック !setname 0x33 黑羽 BF(ブラックフェザー) !setname 0x1033 强袭黑羽 A BF(アサルト ブラックフェザー) !setname 0x34 宝玉 宝玉 !setname 0x1034 宝玉兽 宝玉獣 !setname 0x2034 究极宝玉神 究極宝玉神 !setname 0x5034 高等宝玉兽 A宝玉獣 !setname 0x35 魔轰神 魔轟神 !setname 0x36 机甲 マシンナーズ !setname 0x37 霞之谷 霞の谷 !setname 0x38 光道 ライトロード !setname 0x39 熔岩 ラヴァル !setname 0x3a 遗式 リチュア !setname 0x3b 真红眼 レッドアイズ !setname 0x3c 爬虫妖 レプティレス !setname 0x3d 六武众 六武衆 !setname 0x103d 影六武众 影六武衆 !setname 0x3e 异虫 ワーム !setname 0x3f 救世 セイヴァー !setname 0x40 被封印 封印されし !setname 0x41 LV LV(レベル) !setname 0x42 极星 極星 !setname 0x3042 极星天 極星天 !setname 0x5042 极星宝 極星宝 !setname 0x6042 极星兽 極星獣 !setname 0xa042 极星灵 極星霊 !setname 0x43 废品 ジャンク !setname 0x44 代行者 !setname 0x45 恶魔 デーモン !setname 0x1045 红莲魔|恶魔 レッド・デーモン !setname 0x46 融合 融合/フュージョン !setname 0x1046 融合龙 フュージョン・ドラゴン !setname 0x47 宝石 ジェム !setname 0x1047 宝石骑士 ジェムナイト !setname 0x48 No. No. !setname 0x1048 混沌No. CNo. !setname 0x49 铳士 銃士 !setname 0x4a 时械神 時械神 !setname 0x4b 极神 極神 !setname 0x4c 落穴 落とし穴 #setname 0x4d N/A #setname 0x4e 进化 エヴォル !setname 0x304e 进化虫 エヴォルド !setname 0x504e 进化帝 エヴォルカイザー !setname 0x604e 进化龙 エヴォルダー #setname 0x4f 爆裂 バスター !setname 0x104f /爆裂体 /バスター !setname 0x50 蛇毒 ヴェノム !setname 0x1050 凶饿毒|蛇毒 スターヴ・ヴェノム !setname 0x51 零件 ガジェット !setname 0x52 守护者 ガーディアン !setname 0x1052 门之守护神|守护者 Gate Guardian !setname 0x53 星圣 セイクリッド !setname 0x54 我我我 ガガガ !setname 0x55 光子 フォトン !setname 0x56 甲虫装机 甲虫装機 !setname 0x57 共鸣者 リゾネーター !setname 0x58 发条 ゼンマイ !setname 0x59 隆隆隆 ゴゴゴ !setname 0x5a 企鹅 ペンギン !setname 0x5b 番茄小子 トマボー !setname 0x5c 斯芬克斯 スフィンクス #setname 0x5d N/A #setname 0x5e N/A #setname 0x5f N/A !setname 0x60 竹光 !setname 0x61 忍法 !setname 0x62 卡通 トゥーン !setname 0x63 反应机 リアクター !setname 0x64 鹰身 ハーピィ !setname 0x65 侵略的 侵略の !setname 0x66 战士 ウォリアー !setname 0x1066 音响战士 音響戦士 !setname 0x2066 磁石战士 マグネット・ウォリアー #setname 0x67 钢铁 アイアン #setname 0x68 铁皮 ブリキ !setname 0x69 圣刻 聖刻 !setname 0x6a 幻蝶刺客 幻蝶の刺客 !setname 0x6b 保镖 バウンサー #setname 0x6c 光芒使者 ライトレイ !setname 0x6d 魔人 魔人(まじん) !setname 0x6e 魔导 魔導 !setname 0x106e 魔导书 魔導書 !setname 0x6f 英豪 ヒロイック !setname 0x106f 英豪挑战者 H・C #setname 0x206f 英豪冠军 H-C !setname 0x70 先史遗产 先史遺産 !setname 0x71 魔偶甜点 マドルチェ !setname 0x72 齿轮齿轮 ギアギア !setname 0x1072 齿轮齿轮人 ギアギアーノ !setname 0x73 超量 エクシーズ !setname 0x1073 混沌超量 CX(カオスエクシーズ) !setname 0x2073 超量龙 エクシーズ・ドラゴン !setname 0x74 水精鳞 水精鱗 !setname 0x75 深渊 アビス !setname 0x76 纹章兽 紋章獣 !setname 0x77 海皇 !setname 0x78 迅捷 素早い !setname 0x79 炎星 #setname 0x7a 圣 聖 !setname 0x107a 圣骑士 聖騎士(せいきし) !setname 0x207a 圣剑 聖剣(せいけん) !setname 0x507a 焰圣骑士 焔聖騎士 !setname 0x607a 焰圣剑 焔聖剣 !setname 0x7b 银河 ギャラクシー !setname 0x107b 银河眼 ギャラクシーアイズ !setname 0x307b 银河眼时空龙 ギャラクシーアイズ・タキオン・ドラゴン !setname 0x7c 炎舞 !setname 0x7d 阳炎 ヘイズ !setname 0x107d 阳炎兽 陽炎獣 !setname 0x7e 异热同心 ゼアル !setname 0x107e 异热同心武器 ZW(ゼアル・ウェポン) !setname 0x207e 异热同心从者 ZS(ゼアル・サーバス) !setname 0x7f 霍普 ホープ !setname 0x107f 希望皇 霍普 希望皇ホープ !setname 0x207f 未来皇 霍普 未来皇ホープ !setname 0x80 尘妖 ダストン !setname 0x81 炎王 !setname 0x1081 炎王兽 炎王獣 !setname 0x82 怒怒怒 ドドド !setname 0x83 人偶 パペット !setname 0x1083 机关傀儡 ギミック・パペット #setname 0x84 燃烧拳 バーニングナック !setname 0x1084 燃烧拳击手 BK(バーニングナックラー) !setname 0x2084 燃烧拳 バーニングナックル !setname 0x85 超级防卫机器人 SDロボ !setname 0x86 光天使 !setname 0x87 阴影 アンブラル !setname 0x88 武神 !setname 0x89 洞 ホール #setname 0x8a 虫惑 蟲惑 !setname 0x108a 虫惑魔 蟲惑魔 !setname 0x8b 食恶 マリスボラス #setname 0x8c 德鲁伊 ドルイド !setname 0x8d 鬼计 ゴーストリック !setname 0x8e 吸血鬼 ヴァンパイア !setname 0x8f 刷拉拉 ズババ !setname 0x90 森罗 森羅 !setname 0x91 王家长眠之谷 ネクロバレー !setname 0x92 纹章 メダリオン !setname 0x93 电子 サイバー !setname 0x1093 电子龙 サイバー・ドラゴン !setname 0x2093 电子化天使 サイバー・エンジェル !setname 0x4093 电子暗黑 サイバー・ダーク/サイバーダーク !setname 0x94 电子科技 サイバネティック !setname 0x95 升阶魔法 RUM !setname 0x96 电子鱼人|非「电子」 フィッシュボーグ !setname 0x97 古遗物 アーティファクト !setname 0x98 魔术师 魔術師 !setname 0x99 异色眼 オッドアイズ !setname 0x9a 超重武者 !setname 0x109a 超重武者装留 !setname 0x9b 幻奏 !setname 0x109b 幻奏的音姬 幻奏の音姫 !setname 0x9c 星骑士 テラナイト !setname 0x109c 星辉士|星骑士 ステラナイト !setname 0x9d 影依 シャドール !setname 0x9e 龙星 竜星 !setname 0x9f 娱乐伙伴 EM(エンタメイト) !setname 0xa0 传说的骑士 伝説の騎士 !setname 0xa1 传说之龙 伝説の竜 #setname 0xa2 魔术 マジシャン !setname 0x10a2 黑魔术 ブラック・マジシャン !setname 0x20a2 魔术少女 マジシャン・ガール !setname 0x30a2 黑魔术少女 ブラック・マジシャン・ガール !setname 0xa3 星尘 スターダスト !setname 0xa4 栗子球 クリボー !setname 0x10a4 羽翼栗子球 ハネクリボー !setname 0xa5 变化 チェンジ !setname 0xa6 幼芽 スプラウト !setname 0xa7 阿托利斯 アルトリウス !setname 0xa8 兰斯洛特 ランスロット !setname 0xa9 毛绒动物 ファーニマル !setname 0xaa 机壳 クリフォート !setname 0x10aa 隐藏的机壳 アポクリフォート !setname 0xab 文具电子人|非「电子」 ブンボーグ !setname 0xac 哥布林 ゴブリン !setname 0xad 魔玩具 デストーイ !setname 0xae 契约书 契約書 !setname 0xaf DD !setname 0x10af DDD !setname 0xb0 加特姆士 ガトムズ !setname 0xb1 彼岸 !setname 0xb2 超级运动员 U.A. !setname 0xb3 妖仙兽 妖仙獣 !setname 0xb4 影灵衣 影霊衣 !setname 0xb5 灵兽 霊獣 !setname 0x10b5 灵兽使 霊獣使い !setname 0x20b5 精灵兽 精霊獣 #!setname 0x30b5 精灵兽使 精霊獣使い !setname 0x40b5 圣灵兽骑 聖霊獣騎 !setname 0xb6 外神 !setname 0xb7 旧神 !setname 0xb8 古神 !setname 0xb9 烈焰加农炮 ブレイズ・キャノン !setname 0xba 急袭猛禽 RR(レイド・ラプターズ) !setname 0xbb 狱火机 インフェルノイド !setname 0xbc 人造人 人造人間 !setname 0xbd 暗黑骑士 盖亚 暗黒騎士ガイア !setname 0xbe 帝王 帝王 !setname 0xbf 灵使 霊使い !setname 0xc0 凭依 憑依 !setname 0x10c0 凭依装着 憑依装着 !setname 0xc1 PSY骨架 PSYフレーム !setname 0x10c1 PSY骨架装备 PSYフレームギア !setname 0xc2 动力工具 パワー・ツール !setname 0xc3 锋利小鬼 エッジインプ !setname 0xc4 神数 セフィラ !setname 0xc5 炼狱 煉獄 !setname 0xc6 娱乐法师 Em(エンタメイジ) !setname 0xc7 龙剑士 竜剣士 !setname 0xc8 点火骑士 イグナイト !setname 0xc9 芳香 アロマ !setname 0xca 魔装战士 魔装戦士 !setname 0xcb 以太神兵龙 イーサルウェポン !setname 0xcc 占术姬 占術姫 !setname 0xcd 水伶女 アクアアクトレス !setname 0xce 水族馆 アクアリウム !setname 0xcf 混沌 カオス !setname 0x10cf 混沌战士 カオス・ソルジャー !setname 0xd0 威风妖怪 マジェスペクター !setname 0xd1 灰篮 グレイドル !setname 0xd2 星际仙踪 Kozmo !setname 0xd3 坏兽 壊獣 !setname 0xd4 伯吉斯异兽 バージェストマ !setname 0xd5 但丁 ダンテ !setname 0xd6 破坏剑 破壊剣 !setname 0xd7 破坏之剑士 バスター・ブレイダー !setname 0xd8 雾动机龙 ダイナミスト !setname 0xd9 不知火 !setname 0x10d9 妖刀-不知火 妖刀-不知火 !setname 0xda 龙魔王 竜魔王 !setname 0xdb 幻影 ファントム !setname 0x10db 幻影骑士团 幻影騎士団 !setname 0xdc 超级量子 超量 !setname 0x10dc 超级量子战士 超量士 !setname 0x20dc 超级量子机兽 超量機獣 !setname 0xdd 青眼 ブルーアイズ !setname 0xde 艾克佐迪亚 エクゾディア !setname 0xdf 月光 ムーンライト !setname 0xe0 无形噬体 アモルファージ !setname 0xe1 炼装 メタルフォーゼ !setname 0xe2 三形金字塔 トラミッド !setname 0xe3 方界 !setname 0xe4 精灵剑士 エルフの剣士 !setname 0xe5 光波 サイファー !setname 0x10e5 光波龙 サイファー・ドラゴン !setname 0xe6 花札卫 花札衛 !setname 0xe7 沉默剑士 サイレント・ソードマン !setname 0xe8 沉默魔术师 サイレント・マジシャン !setname 0xe9 磁石战士 磁石の戦士(じしゃくのせんし) !setname 0xea 水晶机巧|非「机巧」 クリストロン !setname 0xeb 化合兽 化合獣 #!setname 0xec 魔界 魔界 !setname 0x10ec 魔界剧团 魔界劇団 !setname 0x20ec 魔界台本 魔界台本 !setname 0xed 地中族 サブテラー !setname 0x10ed 地中族邪界 サブテラーマリス !setname 0xee 秘旋谍 SPYRAL !setname 0x10ee 秘旋谍装备 SPYRAL GEAR !setname 0x20ee 秘旋谍任务 SPYRAL MISSION !setname 0xef 堕天使 !setname 0xf0 风魔女 WW(ウィンド・ウィッチ) !setname 0xf1 十二兽 十二獣 !setname 0xf2 灵摆 ペンデュラム !setname 0x10f2 灵摆龙 ペンデュラム・ドラゴン !setname 0x20f2 灵摆读阵 ペンデュラムグラフ !setname 0xf3 捕食 プレデター !setname 0x10f3 捕食植物 !setname 0xf4 召唤兽 召喚獣 !setname 0xf5 甘多拉 ガンドラ !setname 0xf6 摩天楼 !setname 0xf7 抒情歌鸲 LL(リリカル・ルスキニア) #!setname 0xf8 霸王 覇王 !setname 0x10f8 霸王门 覇王門 !setname 0x20f8 霸王眷龙 覇王眷竜 !setname 0xf9 真龙 真竜 !setname 0xfa 幻煌龙 幻煌龍 !setname 0xfb 淘气仙星 トリックスター !setname 0xfc 刚鬼 剛鬼 !setname 0xfd 星杯 !setname 0xfe 星遗物 星遺物 !setname 0xff 幻透翼 クリアウィング !setname 0x100 化学结合 ボンディング !setname 0x101 码语者 コード・トーカー !setname 0x102 弹丸 ヴァレット !setname 0x103 幻变骚灵 オルターガイスト !setname 0x104 机怪虫 クローラー !setname 0x105 玄化 メタファイズ !setname 0x106 复仇死者 ヴェンデット !setname 0x107 方程式运动员 F.A. !setname 0x108 魔弹 魔弾 !setname 0x109 天气 天気 !setname 0x10a 珀耳修斯 パーシアス !setname 0x10b 廷达魔三角 ティンダングル !setname 0x10c 机界骑士 ジャックナイツ !setname 0x10d 魔导兽|非「魔导」 魔導獣 !setname 0x10e 进化药 進化薬 !setname 0x10f 枪管 ヴァレル !setname 0x110 纳祭 サクリファイス !setname 0x1110 眼纳祭神 アイズ・サクリファイス !setname 0x111 武装龙 アームド・ドラゴン !setname 0x112 幻崩 トロイメア !setname 0x113 灵神 霊神 !setname 0x114 空牙团 空牙団 !setname 0x115 闪刀 閃刀 !setname 0x1115 闪刀姬 閃刀姫 !setname 0x116 圣像骑士 パラディオン !setname 0x117 魔神仪 魔神儀 !setname 0x118 电脑网 サイバネット !setname 0x119 转生炎兽 サラマングレイト !setname 0x11a 恐龙摔跤手 ダイナレスラー !setname 0x11b 自奏圣乐 オルフェゴール !setname 0x11c 雷龙 サンダー·ドラゴン !setname 0x11d 禁忌的 禁じられた !setname 0x11e 未界域 !setname 0x11f 奈芙提斯 ネフティス !setname 0x120 调皮宝贝 プランキッズ !setname 0x121 魔妖 !setname 0x122 女武神|非「武神」 ワルキューレ !setname 0x123 蔷薇 ローズ !setname 0x1123 蔷薇龙 ローズ・ドラゴン !setname 0x124 机械天使 機械天使 !setname 0x125 笑容 スマイル !setname 0x126 时间潜行者 クロノダイバー !setname 0x127 无限起动 無限起動 !setname 0x128 魔女术 ウィッチクラフト !setname 0x129 咒眼 呪眼 !setname 0x12a 恩底弥翁 エンディミオン !setname 0x12b 海晶少女 マリンセス !setname 0x12c 天威 !setname 0x12d 斯摩夫 シムルグ !setname 0x12e 占卜魔女 占い魔女 !setname 0x12f 蜂军 B・F(ビー・フォース) !setname 0x130 破械 !setname 0x1130 破械神 !setname 0x131 梦魔镜 夢魔鏡 !setname 0x132 斩机 斬機 !setname 0x133 半龙女仆 ドラゴンメイド !setname 0x134 王战 ジェネレイド !setname 0x135 @火灵天星 @イグニスター !setname 0x136 “艾” Ai(アイ) !setname 0x137 战华 戦華 !setname 0x138 巨石遗物 メガリス !setname 0x139 守护神官 守護神官 !setname 0x13a 拟声 オノマト !setname 0x13b 叛逆 リベリオン !setname 0x13c 代码破坏者 コードブレイカー !setname 0x13d 星义 ネメシス !setname 0x13e 巴巴罗斯 バルバロス !setname 0x13f 海造贼 海造賊 !setname 0x140 魔救 アダマシア !setname 0x141 六花 #setname 0x142 黄金国 エルド !setname 0x1142 黄金国巫妖 エルドリッチ !setname 0x2142 黄金国永生药 エルドリクシル !setname 0x143 黄金乡 黄金郷 !setname 0x144 幻魔 !setname 0x145 教导 ドラグマ !setname 0x146 童话动物 メルフィー !setname 0x147 波波 ポータン !setname 0x148 罗兰 ローラン !setname 0x149 化石 !setname 0x14a 源数 ヌメロン !setname 0x114a 源数之门 ゲート・オブ・ヌメロン !setname 0x14b 机块 機塊 #setname 0x14c 灵术 霊術 !setname 0x314c 地灵术 地霊術 !setname 0x514c 水灵术 水霊術 !setname 0x614c 火灵术 火霊術 !setname 0x914c 风灵术 風霊術 #setname 0xa14c 光灵术 光霊術 #setname 0xc14c 暗灵术 闇霊術 !setname 0x14d 铁兽 トライブリゲード !setname 0x14e 电脑堺 電脳堺 !setname 0x114e 电脑堺门 電脳堺門 !setname 0x14f 双天 !setname 0x150 大贤者 マギストス #setname 0x151 双子 Twin !setname 0x1151 直播☆双子 Live☆Twin !setname 0x2151 邪恶★双子 Evil★Twin !setname 0x152 姬丝基勒 キスキル !setname 0x153 璃拉 リィラ !setname 0x154 龙辉巧 ドライトロン !setname 0x155 护宝炮妖 スプリガンズ !setname 0x156 治安战警队 S-Force !setname 0x157 秘异三变 ミュートリア #setname 0x158 圣 サン !setname 0x1158 圣蔓 サンヴァイン !setname 0x2158 圣天树 サンアバロン !setname 0x4158 圣种 サンシード !setname 0x159 圣夜骑士 ホーリーナイツ !setname 0x15a 人偶怪兽 ドール・モンスター !setname 0x15b 惊乐 アメイズメント !setname 0x15c 游乐设施 アトラクション !setname 0x15d 烙印 !setname 0x15e 降阶魔法 RDM !setname 0x15f 战吼 ウォークライ !setname 0x160 原质炉 マテリアクトル !setname 0x161 溟界 !setname 0x162 七音服 ドレミコード !setname 0x1162 大钢琴之七音服 グランドレミコード !setname 0x163 北极天熊 ベアルクティ !setname 0x164 死狱乡 デスピア !setname 0x165 魔键 魔鍵 !setname 0x166 军贯 軍貫 !setname 0x1167 森之圣兽 森の聖獣 !setname 0x2167 森之圣灵 森の聖霊 !setname 0x168 隐形水母怪 ステルス・クラーゲン !setname 0x169 原数天灵 ヌメロニアス !setname 0x16a 编号系 ナンバーズ !setname 0x16b 相剑 相剣 !setname 0x16c 冰水 氷水 !setname 0x16d 随风旅鸟 ふわんだりぃず !setname 0x16e 拓扑 トポロジック !setname 0x16f 许珀里翁 ヒュペリオン !setname 0x170 骑甲虫 ビートルーパー !setname 0x171 朋克 P.U.N.K. !setname 0x172 救祓少女 エクソシスター !setname 0x173 恐啡肽狂龙 ダイノルフィア !setname 0x174 恶魔娘 悪魔嬢 !setname 0x175 七皇 セブンス !setname 0x176 异晶人的 バリアンズ !setname 0x177 海龙神 リバイアサン !setname 0x178 潜海 シー・ステルス !setname 0x179 兽带斗神 セリオンズ !setname 0x17a 恐吓爪牙族 スケアクロー !setname 0x17b 野蛮人 バーバリアン !setname 0x17c 书灵师 リブロマンサー !setname 0x17d 群豪 ヴァリアンツ !setname 0x17e 拉比林斯迷宫 ラビュリンス !setname 0x117e 拉比林斯迷宫欢迎 ウェルカム・ラビュリンス !setname 0x17f 神碑 !setname 0x180 卫星闪灵 スプライト !setname 0x181 珠泪哀歌族 ティアラメンツ !setname 0x182 春化精 !setname 0x183 悠悠 もけもけ !setname 0x184 翼侠 ウィングマン #setname 0x185 涂鸦 らくがき !setname 0x1185 涂鸦兽 らくがきじゅう !setname 0x2185 涂鸦本 らくがきちょう !setname 0x186 G石人 Gゴーレム !setname 0x187 桥梁 架け橋 !setname 0x188 深渊之兽 ビーステッド !setname 0x189 俱舍怒威族 クシャトリラ !setname 0x18a 魊影 Ghoti !setname 0x18b 救援ACE队 R-ACE !setname 0x18c 纯爱妖精 ピュアリィ !setname 0x18d 御巫 !setname 0x18e 仪水镜 儀水鏡 !setname 0x18f 防火 ファイアウォール !setname 0x190 末那愚子族 マナドゥム !setname 0x191 妮穆蕾莉娅 ネムレリア !setname 0x192 黄金荣耀 Gold Pride !setname 0x193 迷宫壁 Labyrinth Wall !setname 0x194 至爱 フェイバリット !setname 0x195 征服斗魂 VS(ヴァンキッシュ・ソウル) !setname 0x196 新式魔厨 ヌーベルズ !setname 0x197 食谱 レシピ !setname 0x198 维萨斯 ヴィサス !setname 0x199 反击 カウンター |
Added script/utility.txt version [76b8936037].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 | Auxiliary={} aux=Auxiliary POS_FACEUP_DEFENCE=POS_FACEUP_DEFENSE POS_FACEDOWN_DEFENCE=POS_FACEDOWN_DEFENSE RACE_CYBERS=RACE_CYBERSE function GetID() local offset=self_code<100000000 and 1 or 100 return self_table,self_code,offset end --the lua version of the bit32 lib, which is deprecated in lua 5.3 bit={} function bit.band(a,b) return a&b end function bit.bor(a,b) return a|b end function bit.bxor(a,b) return a~b end function bit.lshift(a,b) return a<<b end function bit.rshift(a,b) return a>>b end function bit.bnot(a) return ~a end local function fieldargs(f,width) w=width or 1 assert(f>=0,"field cannot be negative") assert(w>0,"width must be positive") assert(f+w<=32,"trying to access non-existent bits") return f,~(-1<<w) end function bit.extract(r,field,width) local f,m=fieldargs(field,width) return (r>>f)&m end function bit.replace(r,v,field,width) local f,m=fieldargs(field,width) return (r&~(m<<f))|((v&m)<< f) end --the table of xyz number Auxiliary.xyz_number={} function Auxiliary.GetXyzNumber(v) local id if Auxiliary.GetValueType(v)=="Card" then id=v:GetCode() end if Auxiliary.GetValueType(v)=="number" then id=v end return Auxiliary.xyz_number[id] end --the chain id of the results modified by EVENT_TOSS_DICE_NEGATE Auxiliary.idx_table=table.pack(1,2,3,4,5,6,7,8) function Auxiliary.Stringid(code,id) return code*16+id end function Auxiliary.Next(g) local first=true return function() if first then first=false return g:GetFirst() else return g:GetNext() end end end function Auxiliary.NULL() end function Auxiliary.TRUE() return true end function Auxiliary.FALSE() return false end function Auxiliary.AND(...) local function_list={...} return function(...) local res=false for i,f in ipairs(function_list) do res=f(...) if not res then return res end end return res end end function Auxiliary.OR(...) local function_list={...} return function(...) local res=false for i,f in ipairs(function_list) do res=f(...) if res then return res end end return res end end function Auxiliary.NOT(f) return function(...) return not f(...) end end function Auxiliary.BeginPuzzle(effect) local e1=Effect.GlobalEffect() e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_TURN_END) e1:SetCountLimit(1) e1:SetOperation(Auxiliary.PuzzleOp) Duel.RegisterEffect(e1,0) local e2=Effect.GlobalEffect() e2:SetType(EFFECT_TYPE_FIELD) e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e2:SetCode(EFFECT_SKIP_DP) e2:SetTargetRange(1,0) Duel.RegisterEffect(e2,0) local e3=Effect.GlobalEffect() e3:SetType(EFFECT_TYPE_FIELD) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e3:SetCode(EFFECT_SKIP_SP) e3:SetTargetRange(1,0) Duel.RegisterEffect(e3,0) end function Auxiliary.PuzzleOp(e,tp) Duel.SetLP(0,0) end --Duel.SelectOption with option condition --Return value starts from 1, different from Duel.SelectOption function Auxiliary.SelectFromOptions(tp,...) local options={...} local ops={} local opvals={} for i=1,#options do if options[i][1] then table.insert(ops,options[i][2]) table.insert(opvals,options[i][3] or i) end end if #ops==0 then return nil end local select=Duel.SelectOption(tp,table.unpack(ops)) return opvals[select+1] end function Auxiliary.IsDualState(effect) local c=effect:GetHandler() return not c:IsDisabled() and c:IsDualState() end function Auxiliary.IsNotDualState(effect) local c=effect:GetHandler() return c:IsDisabled() or not c:IsDualState() end function Auxiliary.DualNormalCondition(effect) local c=effect:GetHandler() return c:IsFaceup() and not c:IsDualState() end function Auxiliary.EnableDualAttribute(c) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_DUAL_SUMMONABLE) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_ADD_TYPE) e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_IGNORE_IMMUNE) e2:SetRange(LOCATION_MZONE+LOCATION_GRAVE) e2:SetCondition(aux.DualNormalCondition) e2:SetValue(TYPE_NORMAL) c:RegisterEffect(e2) local e3=e2:Clone() e3:SetCode(EFFECT_REMOVE_TYPE) e3:SetValue(TYPE_EFFECT) c:RegisterEffect(e3) end --register effect of return to hand for Spirit monsters function Auxiliary.EnableSpiritReturn(c,event1,...) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e1:SetCode(event1) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetOperation(Auxiliary.SpiritReturnReg) c:RegisterEffect(e1) for i,event in ipairs{...} do local e2=e1:Clone() e2:SetCode(event) c:RegisterEffect(e2) end end function Auxiliary.SpiritReturnReg(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e1:SetDescription(1104) e1:SetCategory(CATEGORY_TOHAND) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetReset(RESET_EVENT+0xd6e0000+RESET_PHASE+PHASE_END) e1:SetCondition(Auxiliary.SpiritReturnConditionForced) e1:SetTarget(Auxiliary.SpiritReturnTargetForced) e1:SetOperation(Auxiliary.SpiritReturnOperation) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCondition(Auxiliary.SpiritReturnConditionOptional) e2:SetTarget(Auxiliary.SpiritReturnTargetOptional) c:RegisterEffect(e2) end function Auxiliary.SpiritReturnConditionForced(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return not c:IsHasEffect(EFFECT_SPIRIT_DONOT_RETURN) and not c:IsHasEffect(EFFECT_SPIRIT_MAYNOT_RETURN) end function Auxiliary.SpiritReturnTargetForced(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 function Auxiliary.SpiritReturnConditionOptional(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return not c:IsHasEffect(EFFECT_SPIRIT_DONOT_RETURN) and c:IsHasEffect(EFFECT_SPIRIT_MAYNOT_RETURN) end function Auxiliary.SpiritReturnTargetOptional(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToHand() end Duel.SetOperationInfo(0,CATEGORY_TOHAND,e:GetHandler(),1,0,0) end function Auxiliary.SpiritReturnOperation(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 function Auxiliary.EnableNeosReturn(c,operation,set_category) --return local e1=Effect.CreateEffect(c) e1:SetDescription(1193) e1:SetCategory(CATEGORY_TODECK) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCondition(Auxiliary.NeosReturnConditionForced) e1:SetTarget(Auxiliary.NeosReturnTargetForced(set_category)) e1:SetOperation(operation) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e2:SetCondition(Auxiliary.NeosReturnConditionOptional) e2:SetTarget(Auxiliary.NeosReturnTargetOptional(set_category)) c:RegisterEffect(e2) return e1,e2 end function Auxiliary.NeosReturnConditionForced(e,tp,eg,ep,ev,re,r,rp) return not e:GetHandler():IsHasEffect(42015635) end function Auxiliary.NeosReturnTargetForced(set_category) return function(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return true end Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) if set_category then set_category(e,tp,eg,ep,ev,re,r,rp) end end end function Auxiliary.NeosReturnConditionOptional(e,tp,eg,ep,ev,re,r,rp) return e:GetHandler():IsHasEffect(42015635) end function Auxiliary.NeosReturnTargetOptional(set_category) return function(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToExtra() end Duel.SetOperationInfo(0,CATEGORY_TODECK,e:GetHandler(),1,0,0) if set_category then set_category(e,tp,eg,ep,ev,re,r,rp) end end end function Auxiliary.IsUnionState(effect) local c=effect:GetHandler() return c:IsHasEffect(EFFECT_UNION_STATUS) and c:GetEquipTarget() end --set EFFECT_EQUIP_LIMIT after equipping function Auxiliary.SetUnionState(c) local eset={c:IsHasEffect(EFFECT_UNION_LIMIT)} if #eset==0 then return end local e0=Effect.CreateEffect(c) e0:SetType(EFFECT_TYPE_SINGLE) e0:SetCode(EFFECT_EQUIP_LIMIT) e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e0:SetValue(eset[1]:GetValue()) e0:SetReset(RESET_EVENT+RESETS_STANDARD) c:RegisterEffect(e0) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_UNION_STATUS) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetReset(RESET_EVENT+RESETS_STANDARD) c:RegisterEffect(e1) if c.old_union then local e2=e1:Clone() e2:SetCode(EFFECT_OLDUNION_STATUS) c:RegisterEffect(e2) end end --uc: the union monster to be equipped, tc: the target monster function Auxiliary.CheckUnionEquip(uc,tc,exclude_modern_count) local modern_count,old_count=tc:GetUnionCount() if exclude_modern_count then modern_count=modern_count-exclude_modern_count end if uc.old_union then return modern_count==0 else return old_count==0 end end --EFFECT_DESTROY_SUBSTITUTE filter for modern union monsters function Auxiliary.UnionReplaceFilter(e,re,r,rp) return r&(REASON_BATTLE+REASON_EFFECT)~=0 end --add effect to modern union monsters function Auxiliary.EnableUnionAttribute(c,f) --destroy sub local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_EQUIP) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetCode(EFFECT_DESTROY_SUBSTITUTE) e1:SetValue(aux.UnionReplaceFilter) c:RegisterEffect(e1) --limit local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_UNION_LIMIT) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetValue(f) c:RegisterEffect(e2) end function Auxiliary.EnableChangeCode(c,code,location,condition) Auxiliary.AddCodeList(c,code) local loc=c:GetOriginalType()&TYPE_MONSTER~=0 and LOCATION_MZONE or LOCATION_SZONE loc=location or loc if condition==nil then condition=Auxiliary.TRUE end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetCode(EFFECT_CHANGE_CODE) e1:SetRange(loc) e1:SetCondition(condition) e1:SetValue(code) c:RegisterEffect(e1) return e1 end function Auxiliary.TargetEqualFunction(f,value,...) local ext_params={...} return function(effect,target) return f(target,table.unpack(ext_params))==value end end function Auxiliary.TargetBoolFunction(f,...) local ext_params={...} return function(effect,target) return f(target,table.unpack(ext_params)) end end function Auxiliary.FilterEqualFunction(f,value,...) local ext_params={...} return function(target) return f(target,table.unpack(ext_params))==value end end function Auxiliary.FilterBoolFunction(f,...) local ext_params={...} return function(target) return f(target,table.unpack(ext_params)) end end function Auxiliary.Tuner(f,...) local ext_params={...} return function(target,syncard) return target:IsTuner(syncard) and (not f or f(target,table.unpack(ext_params))) end end function Auxiliary.NonTuner(f,...) local ext_params={...} return function(target,syncard) return target:IsNotTuner(syncard) and (not f or f(target,table.unpack(ext_params))) end end function Auxiliary.GetValueType(v) local t=type(v) if t=="userdata" then local mt=getmetatable(v) if mt==Group then return "Group" elseif mt==Effect then return "Effect" else return "Card" end else return t end end function Auxiliary.MustMaterialCheck(v,tp,code) local g=Duel.GetMustMaterial(tp,code) if not v then if code==EFFECT_MUST_BE_XMATERIAL and Duel.IsPlayerAffectedByEffect(tp,67120578) then return false end return #g==0 end return Duel.CheckMustMaterial(tp,v,code) end function Auxiliary.MustMaterialCounterFilter(c,g) return not g:IsContains(c) end --Synchro monster, 1 tuner + min to max monsters function Auxiliary.AddSynchroProcedure(c,f1,f2,minc,maxc) if maxc==nil then maxc=99 end local e1=Effect.CreateEffect(c) e1:SetDescription(1164) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_EXTRA) e1:SetCondition(Auxiliary.SynCondition(f1,f2,minc,maxc)) e1:SetTarget(Auxiliary.SynTarget(f1,f2,minc,maxc)) e1:SetOperation(Auxiliary.SynOperation(f1,f2,minc,maxc)) e1:SetValue(SUMMON_TYPE_SYNCHRO) c:RegisterEffect(e1) end function Auxiliary.SynCondition(f1,f2,minc,maxc) return function(e,c,smat,mg,min,max) if c==nil then return true end if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end if smat and smat:IsTuner(c) and (not f1 or f1(smat)) then return Duel.CheckTunerMaterial(c,smat,f1,f2,minc,maxc,mg) end return Duel.CheckSynchroMaterial(c,f1,f2,minc,maxc,smat,mg) end end function Auxiliary.SynTarget(f1,f2,minc,maxc) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,smat,mg,min,max) local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end local g=nil if smat and smat:IsTuner(c) and (not f1 or f1(smat)) then g=Duel.SelectTunerMaterial(c:GetControler(),c,smat,f1,f2,minc,maxc,mg) else g=Duel.SelectSynchroMaterial(c:GetControler(),c,f1,f2,minc,maxc,smat,mg) end if g then g:KeepAlive() e:SetLabelObject(g) return true else return false end end end function Auxiliary.SynOperation(f1,f2,minct,maxc) return function(e,tp,eg,ep,ev,re,r,rp,c,smat,mg,min,max) local g=e:GetLabelObject() c:SetMaterial(g) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) g:DeleteGroup() end end --Synchro monster, 1 tuner + 1 monster --backward compatibility function Auxiliary.AddSynchroProcedure2(c,f1,f2) Auxiliary.AddSynchroProcedure(c,f1,f2,1,1) end --Synchro monster, f1~f3 each 1 MONSTER + f4 min to max monsters function Auxiliary.AddSynchroMixProcedure(c,f1,f2,f3,f4,minc,maxc,gc) local e1=Effect.CreateEffect(c) e1:SetDescription(1164) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_EXTRA) e1:SetCondition(Auxiliary.SynMixCondition(f1,f2,f3,f4,minc,maxc,gc)) e1:SetTarget(Auxiliary.SynMixTarget(f1,f2,f3,f4,minc,maxc,gc)) e1:SetOperation(Auxiliary.SynMixOperation(f1,f2,f3,f4,minc,maxc,gc)) e1:SetValue(SUMMON_TYPE_SYNCHRO) c:RegisterEffect(e1) end function Auxiliary.SynMaterialFilter(c,syncard) return c:IsFaceupEx() and c:IsCanBeSynchroMaterial(syncard) end function Auxiliary.SynLimitFilter(c,f,e,syncard) return f and not f(e,c,syncard) end function Auxiliary.GetSynchroLevelFlowerCardian(c) return 2 end function Auxiliary.GetSynMaterials(tp,syncard) local mg=Duel.GetSynchroMaterial(tp):Filter(Auxiliary.SynMaterialFilter,nil,syncard) if mg:IsExists(Card.GetHandSynchro,1,nil) then local mg2=Duel.GetMatchingGroup(Card.IsCanBeSynchroMaterial,tp,LOCATION_HAND,0,nil,syncard) if mg2:GetCount()>0 then mg:Merge(mg2) end end return mg end function Auxiliary.SynMixCondition(f1,f2,f3,f4,minc,maxc,gc) return function(e,c,smat,mg1,min,max) if c==nil then return true end if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end if smat and not smat:IsCanBeSynchroMaterial(c) then return false end local tp=c:GetControler() local mg local mgchk=false if mg1 then mg=mg1 mgchk=true else mg=Auxiliary.GetSynMaterials(tp,c) end if smat~=nil then mg:AddCard(smat) end return mg:IsExists(Auxiliary.SynMixFilter1,1,nil,f1,f2,f3,f4,minc,maxc,c,mg,smat,gc,mgchk) end end function Auxiliary.SynMixTarget(f1,f2,f3,f4,minc,maxc,gc) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,smat,mg1,min,max) local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end ::SynMixTargetSelectStart:: local g=Group.CreateGroup() local mg local mgchk=false if mg1 then mg=mg1 mgchk=true else mg=Auxiliary.GetSynMaterials(tp,c) end if smat~=nil then mg:AddCard(smat) end local c1 local c2 local c3 local cancel=Duel.IsSummonCancelable() Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) c1=mg:Filter(Auxiliary.SynMixFilter1,nil,f1,f2,f3,f4,minc,maxc,c,mg,smat,gc,mgchk):SelectUnselect(g,tp,false,cancel,1,1) if not c1 then return false end g:AddCard(c1) if f2 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) c2=mg:Filter(Auxiliary.SynMixFilter2,g,f2,f3,f4,minc,maxc,c,mg,smat,c1,gc,mgchk):SelectUnselect(g,tp,false,cancel,1,1) if not c2 then return false end if g:IsContains(c2) then goto SynMixTargetSelectStart end g:AddCard(c2) if f3 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) c3=mg:Filter(Auxiliary.SynMixFilter3,g,f3,f4,minc,maxc,c,mg,smat,c1,c2,gc,mgchk):SelectUnselect(g,tp,false,cancel,1,1) if not c3 then return false end if g:IsContains(c3) then goto SynMixTargetSelectStart end g:AddCard(c3) end end local g4=Group.CreateGroup() for i=0,maxc-1 do local mg2=mg:Clone() if f4 then mg2=mg2:Filter(f4,g,c,c1,c2,c3) else mg2:Sub(g) end local cg=mg2:Filter(Auxiliary.SynMixCheckRecursive,g4,tp,g4,mg2,i,minc,maxc,c,g,smat,gc,mgchk) if cg:GetCount()==0 then break end local finish=Auxiliary.SynMixCheckGoal(tp,g4,minc,i,c,g,smat,gc,mgchk) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) local c4=cg:SelectUnselect(g+g4,tp,finish,cancel,minc,maxc) if not c4 then if finish then break else return false end end if g:IsContains(c4) or g4:IsContains(c4) then goto SynMixTargetSelectStart end g4:AddCard(c4) end g:Merge(g4) if g:GetCount()>0 then g:KeepAlive() e:SetLabelObject(g) return true else return false end end end function Auxiliary.SynMixOperation(f1,f2,f3,f4,minct,maxc,gc) return function(e,tp,eg,ep,ev,re,r,rp,c,smat,mg,min,max) local g=e:GetLabelObject() c:SetMaterial(g) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) g:DeleteGroup() end end function Auxiliary.SynMixFilter1(c,f1,f2,f3,f4,minc,maxc,syncard,mg,smat,gc,mgchk) return (not f1 or f1(c,syncard)) and mg:IsExists(Auxiliary.SynMixFilter2,1,c,f2,f3,f4,minc,maxc,syncard,mg,smat,c,gc,mgchk) end function Auxiliary.SynMixFilter2(c,f2,f3,f4,minc,maxc,syncard,mg,smat,c1,gc,mgchk) if f2 then return f2(c,syncard,c1) and (mg:IsExists(Auxiliary.SynMixFilter3,1,Group.FromCards(c1,c),f3,f4,minc,maxc,syncard,mg,smat,c1,c,gc,mgchk) or minc==0 and Auxiliary.SynMixFilter4(c,nil,1,1,syncard,mg,smat,c1,nil,nil,gc,mgchk)) else return mg:IsExists(Auxiliary.SynMixFilter4,1,c1,f4,minc,maxc,syncard,mg,smat,c1,nil,nil,gc,mgchk) end end function Auxiliary.SynMixFilter3(c,f3,f4,minc,maxc,syncard,mg,smat,c1,c2,gc,mgchk) if f3 then return f3(c,syncard,c1,c2) and (mg:IsExists(Auxiliary.SynMixFilter4,1,Group.FromCards(c1,c2,c),f4,minc,maxc,syncard,mg,smat,c1,c2,c,gc,mgchk) or minc==0 and Auxiliary.SynMixFilter4(c,nil,1,1,syncard,mg,smat,c1,c2,nil,gc,mgchk)) else return mg:IsExists(Auxiliary.SynMixFilter4,1,Group.FromCards(c1,c2),f4,minc,maxc,syncard,mg,smat,c1,c2,nil,gc,mgchk) end end function Auxiliary.SynMixFilter4(c,f4,minc,maxc,syncard,mg1,smat,c1,c2,c3,gc,mgchk) if f4 and not f4(c,syncard,c1,c2,c3) then return false end local sg=Group.FromCards(c1,c) sg:AddCard(c1) if c2 then sg:AddCard(c2) end if c3 then sg:AddCard(c3) end local mg=mg1:Clone() if f4 then mg=mg:Filter(f4,sg,syncard,c1,c2,c3) else mg:Sub(sg) end return Auxiliary.SynMixCheck(mg,sg,minc-1,maxc-1,syncard,smat,gc,mgchk) end function Auxiliary.SynMixCheck(mg,sg1,minc,maxc,syncard,smat,gc,mgchk) local tp=syncard:GetControler() local sg=Group.CreateGroup() if minc<=0 and Auxiliary.SynMixCheckGoal(tp,sg1,0,0,syncard,sg,smat,gc,mgchk) then return true end if maxc==0 then return false end return mg:IsExists(Auxiliary.SynMixCheckRecursive,1,nil,tp,sg,mg,0,minc,maxc,syncard,sg1,smat,gc,mgchk) end function Auxiliary.SynMixCheckRecursive(c,tp,sg,mg,ct,minc,maxc,syncard,sg1,smat,gc,mgchk) sg:AddCard(c) ct=ct+1 local res=Auxiliary.SynMixCheckGoal(tp,sg,minc,ct,syncard,sg1,smat,gc,mgchk) or (ct<maxc and mg:IsExists(Auxiliary.SynMixCheckRecursive,1,sg,tp,sg,mg,ct,minc,maxc,syncard,sg1,smat,gc,mgchk)) sg:RemoveCard(c) ct=ct-1 return res end -- the material is in hand and don't has extra synchro material effect itself -- that mean some other tuner added it as material function Auxiliary.SynMixHandFilter(c,tp,syncard) if not c:IsLocation(LOCATION_HAND) then return false end local le={c:IsHasEffect(EFFECT_EXTRA_SYNCHRO_MATERIAL,tp)} for _,te in pairs(le) do local tf=te:GetValue() if Auxiliary.GetValueType(tf)=="function" then if tf(te,syncard) then return false end else if tf~=0 then return false end end end return true end function Auxiliary.SynMixCheckGoal(tp,sg,minc,ct,syncard,sg1,smat,gc,mgchk) if ct<minc then return false end local g=sg:Clone() g:Merge(sg1) if Duel.GetLocationCountFromEx(tp,tp,g,syncard)<=0 then return false end if gc and not gc(g) then return false end if smat and not g:IsContains(smat) then return false end if not Auxiliary.MustMaterialCheck(g,tp,EFFECT_MUST_BE_SMATERIAL) then return false end if not g:CheckWithSumEqual(Card.GetSynchroLevel,syncard:GetLevel(),g:GetCount(),g:GetCount(),syncard) and (not g:IsExists(Card.IsHasEffect,1,nil,89818984) or not g:CheckWithSumEqual(Auxiliary.GetSynchroLevelFlowerCardian,syncard:GetLevel(),g:GetCount(),g:GetCount(),syncard)) then return false end local hg=g:Filter(Auxiliary.SynMixHandFilter,nil,tp,syncard) local hct=hg:GetCount() if hct>0 and not mgchk then local found=false for c in aux.Next(g) do local he,hf,hmin,hmax=c:GetHandSynchro() if he then found=true if hf and hg:IsExists(Auxiliary.SynLimitFilter,1,c,hf,he,syncard) then return false end if (hmin and hct<hmin) or (hmax and hct>hmax) then return false end end end if not found then return false end end for c in aux.Next(g) do local le,lf,lloc,lmin,lmax=c:GetTunerLimit() if le then local lct=g:GetCount()-1 if lloc then local llct=g:FilterCount(Card.IsLocation,c,lloc) if llct~=lct then return false end end if lf and g:IsExists(Auxiliary.SynLimitFilter,1,c,lf,le,syncard) then return false end if (lmin and lct<lmin) or (lmax and lct>lmax) then return false end end end return true end --Checking Tune Magician function Auxiliary.TuneMagicianFilter(c,e) local f=e:GetValue() return f(e,c) end function Auxiliary.TuneMagicianCheckX(c,sg,ecode) local eset={c:IsHasEffect(ecode)} for _,te in pairs(eset) do if sg:IsExists(Auxiliary.TuneMagicianFilter,1,c,te) then return true end end return false end function Auxiliary.TuneMagicianCheckAdditionalX(ecode) return function(g) return not g:IsExists(Auxiliary.TuneMagicianCheckX,1,nil,g,ecode) end end function Auxiliary.XyzAlterFilter(c,alterf,xyzc,e,tp,alterop) return alterf(c) and c:IsCanBeXyzMaterial(xyzc) and Duel.GetLocationCountFromEx(tp,tp,c,xyzc)>0 and Auxiliary.MustMaterialCheck(c,tp,EFFECT_MUST_BE_XMATERIAL) and (not alterop or alterop(e,tp,0,c)) end --Xyz monster, lv k*n function Auxiliary.AddXyzProcedure(c,f,lv,ct,alterf,alterdesc,maxct,alterop) local e1=Effect.CreateEffect(c) e1:SetDescription(1165) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_EXTRA) if not maxct then maxct=ct end if alterf then e1:SetCondition(Auxiliary.XyzConditionAlter(f,lv,ct,maxct,alterf,alterdesc,alterop)) e1:SetTarget(Auxiliary.XyzTargetAlter(f,lv,ct,maxct,alterf,alterdesc,alterop)) e1:SetOperation(Auxiliary.XyzOperationAlter(f,lv,ct,maxct,alterf,alterdesc,alterop)) 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) end --Xyz Summon(normal) function Auxiliary.XyzCondition(f,lv,minc,maxc) --og: use special material 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=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end return Duel.CheckXyzMaterial(c,f,lv,minc,maxc,og) end end function Auxiliary.XyzTarget(f,lv,minc,maxc) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,min,max) if og and not min then return true end local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end end local g=Duel.SelectXyzMaterial(tp,c,f,lv,minc,maxc,og) if g then g:KeepAlive() e:SetLabelObject(g) return true else return false end end end function Auxiliary.XyzOperation(f,lv,minc,maxc) return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) if og and not min then local sg=Group.CreateGroup() local tc=og:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=og:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) c:SetMaterial(og) Duel.Overlay(c,og) else local mg=e:GetLabelObject() local sg=Group.CreateGroup() local tc=mg:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=mg:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) c:SetMaterial(mg) Duel.Overlay(c,mg) mg:DeleteGroup() end end end --Xyz summon(alterf) function Auxiliary.XyzConditionAlter(f,lv,minc,maxc,alterf,alterdesc,alterop) 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 mg=nil if og then mg=og else mg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) end if (not min or min<=1) and mg:IsExists(Auxiliary.XyzAlterFilter,1,nil,alterf,c,e,tp,alterop) then return true end local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end return Duel.CheckXyzMaterial(c,f,lv,minc,maxc,og) end end function Auxiliary.XyzTargetAlter(f,lv,minc,maxc,alterf,alterdesc,alterop) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,min,max) if og and not min then return true end local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end end local mg=nil if og then mg=og else mg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) end local altg=mg:Filter(Auxiliary.XyzAlterFilter,nil,alterf,c,e,tp,alterop) local b1=Duel.CheckXyzMaterial(c,f,lv,minc,maxc,og) local b2=(not min or min<=1) and #altg>0 local g=nil local cancel=Duel.IsSummonCancelable() if b2 and (not b1 or Duel.SelectYesNo(tp,alterdesc)) then e:SetLabel(1) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) local tc=altg:SelectUnselect(nil,tp,false,cancel,1,1) if tc then g=Group.FromCards(tc) if alterop then alterop(e,tp,1,tc) end end else e:SetLabel(0) g=Duel.SelectXyzMaterial(tp,c,f,lv,minc,maxc,og) end if g then g:KeepAlive() e:SetLabelObject(g) return true else return false end end end function Auxiliary.XyzOperationAlter(f,lv,minc,maxc,alterf,alterdesc,alterop) return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) if og and not min then local sg=Group.CreateGroup() local tc=og:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=og:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) c:SetMaterial(og) Duel.Overlay(c,og) else local mg=e:GetLabelObject() if e:GetLabel()==1 then local mg2=mg:GetFirst():GetOverlayGroup() if mg2:GetCount()~=0 then Duel.Overlay(c,mg2) end else local sg=Group.CreateGroup() local tc=mg:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=mg:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) end c:SetMaterial(mg) Duel.Overlay(c,mg) mg:DeleteGroup() end end end function Auxiliary.AddXyzProcedureLevelFree(c,f,gf,minc,maxc,alterf,alterdesc,alterop) local e1=Effect.CreateEffect(c) e1:SetDescription(1165) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_EXTRA) if alterf then e1:SetCondition(Auxiliary.XyzLevelFreeConditionAlter(f,gf,minc,maxc,alterf,alterdesc,alterop)) e1:SetTarget(Auxiliary.XyzLevelFreeTargetAlter(f,gf,minc,maxc,alterf,alterdesc,alterop)) e1:SetOperation(Auxiliary.XyzLevelFreeOperationAlter(f,gf,minc,maxc,alterf,alterdesc,alterop)) else e1:SetCondition(Auxiliary.XyzLevelFreeCondition(f,gf,minc,maxc)) e1:SetTarget(Auxiliary.XyzLevelFreeTarget(f,gf,minc,maxc)) e1:SetOperation(Auxiliary.XyzLevelFreeOperation(f,gf,minc,maxc)) end e1:SetValue(SUMMON_TYPE_XYZ) c:RegisterEffect(e1) end --Xyz Summon(level free) function Auxiliary.XyzLevelFreeFilter(c,xyzc,f) return (not c:IsOnField() or c:IsFaceup()) and c:IsCanBeXyzMaterial(xyzc) and (not f or f(c,xyzc)) end function Auxiliary.XyzLevelFreeGoal(g,tp,xyzc,gf) return (not gf or gf(g)) and Duel.GetLocationCountFromEx(tp,tp,g,xyzc)>0 end function Auxiliary.XyzLevelFreeCondition(f,gf,minct,maxct) 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 local maxc=maxct if min then minc=math.max(minc,min) maxc=math.min(maxc,max) end if maxc<minc then return false end local mg=nil if og then mg=og:Filter(Auxiliary.XyzLevelFreeFilter,nil,c,f) else mg=Duel.GetMatchingGroup(Auxiliary.XyzLevelFreeFilter,tp,LOCATION_MZONE,0,nil,c,f) end local sg=Duel.GetMustMaterial(tp,EFFECT_MUST_BE_XMATERIAL) if sg:IsExists(Auxiliary.MustMaterialCounterFilter,1,nil,mg) then return false end Duel.SetSelectedCard(sg) Auxiliary.GCheckAdditional=Auxiliary.TuneMagicianCheckAdditionalX(EFFECT_TUNE_MAGICIAN_X) local res=mg:CheckSubGroup(Auxiliary.XyzLevelFreeGoal,minc,maxc,tp,c,gf) Auxiliary.GCheckAdditional=nil return res end end function Auxiliary.XyzLevelFreeTarget(f,gf,minct,maxct) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,min,max) if og and not min then return true end local minc=minct local maxc=maxct if min then if min>minc then minc=min end if max<maxc then maxc=max end end local mg=nil if og then mg=og:Filter(Auxiliary.XyzLevelFreeFilter,nil,c,f) else mg=Duel.GetMatchingGroup(Auxiliary.XyzLevelFreeFilter,tp,LOCATION_MZONE,0,nil,c,f) end local sg=Duel.GetMustMaterial(tp,EFFECT_MUST_BE_XMATERIAL) Duel.SetSelectedCard(sg) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) local cancel=Duel.IsSummonCancelable() Auxiliary.GCheckAdditional=Auxiliary.TuneMagicianCheckAdditionalX(EFFECT_TUNE_MAGICIAN_X) local g=mg:SelectSubGroup(tp,Auxiliary.XyzLevelFreeGoal,cancel,minc,maxc,tp,c,gf) Auxiliary.GCheckAdditional=nil if g and g:GetCount()>0 then g:KeepAlive() e:SetLabelObject(g) return true else return false end end end function Auxiliary.XyzLevelFreeOperation(f,gf,minct,maxct) return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) if og and not min then local sg=Group.CreateGroup() local tc=og:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=og:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) c:SetMaterial(og) Duel.Overlay(c,og) else local mg=e:GetLabelObject() if e:GetLabel()==1 then local mg2=mg:GetFirst():GetOverlayGroup() if mg2:GetCount()~=0 then Duel.Overlay(c,mg2) end else local sg=Group.CreateGroup() local tc=mg:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=mg:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) end c:SetMaterial(mg) Duel.Overlay(c,mg) mg:DeleteGroup() end end end --Xyz summon(level free&alterf) function Auxiliary.XyzLevelFreeConditionAlter(f,gf,minct,maxct,alterf,alterdesc,alterop) 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 mg=nil if og then mg=og else mg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) end local altg=mg:Filter(Auxiliary.XyzAlterFilter,nil,alterf,c,e,tp,alterop) if (not min or min<=1) and altg:GetCount()>0 then return true end local minc=minct local maxc=maxct if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end mg=mg:Filter(Auxiliary.XyzLevelFreeFilter,nil,c,f) local sg=Duel.GetMustMaterial(tp,EFFECT_MUST_BE_XMATERIAL) if sg:IsExists(Auxiliary.MustMaterialCounterFilter,1,nil,mg) then return false end Duel.SetSelectedCard(sg) Auxiliary.GCheckAdditional=Auxiliary.TuneMagicianCheckAdditionalX(EFFECT_TUNE_MAGICIAN_X) local res=mg:CheckSubGroup(Auxiliary.XyzLevelFreeGoal,minc,maxc,tp,c,gf) Auxiliary.GCheckAdditional=nil return res end end function Auxiliary.XyzLevelFreeTargetAlter(f,gf,minct,maxct,alterf,alterdesc,alterop) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,min,max) if og and not min then return true end local minc=minct local maxc=maxct if min then if min>minc then minc=min end if max<maxc then maxc=max end end local mg=nil if og then mg=og else mg=Duel.GetFieldGroup(tp,LOCATION_MZONE,0) end local sg=Duel.GetMustMaterial(tp,EFFECT_MUST_BE_XMATERIAL) local altg=mg:Filter(Auxiliary.XyzAlterFilter,nil,alterf,c,e,tp,alterop) local mg2=mg:Filter(Auxiliary.XyzLevelFreeFilter,nil,c,f) Duel.SetSelectedCard(sg) local b1=mg2:CheckSubGroup(Auxiliary.XyzLevelFreeGoal,minc,maxc,tp,c,gf) local b2=(not min or min<=1) and #altg>0 local g=nil local cancel=Duel.IsSummonCancelable() if b2 and (not b1 or Duel.SelectYesNo(tp,alterdesc)) then e:SetLabel(1) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) local tc=altg:SelectUnselect(nil,tp,false,cancel,1,1) if tc then g=Group.FromCards(tc) if alterop then alterop(e,tp,1,tc) end end else e:SetLabel(0) Duel.SetSelectedCard(sg) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL) Auxiliary.GCheckAdditional=Auxiliary.TuneMagicianCheckAdditionalX(EFFECT_TUNE_MAGICIAN_X) g=mg2:SelectSubGroup(tp,Auxiliary.XyzLevelFreeGoal,cancel,minc,maxc,tp,c,gf) Auxiliary.GCheckAdditional=nil end if g and g:GetCount()>0 then g:KeepAlive() e:SetLabelObject(g) return true else return false end end end function Auxiliary.XyzLevelFreeOperationAlter(f,gf,minct,maxct,alterf,alterdesc,alterop) return function(e,tp,eg,ep,ev,re,r,rp,c,og,min,max) if og and not min then local sg=Group.CreateGroup() local tc=og:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=og:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) c:SetMaterial(og) Duel.Overlay(c,og) else local mg=e:GetLabelObject() if e:GetLabel()==1 then local mg2=mg:GetFirst():GetOverlayGroup() if mg2:GetCount()~=0 then Duel.Overlay(c,mg2) end else local sg=Group.CreateGroup() local tc=mg:GetFirst() while tc do local sg1=tc:GetOverlayGroup() sg:Merge(sg1) tc=mg:GetNext() end Duel.SendtoGrave(sg,REASON_RULE) end c:SetMaterial(mg) Duel.Overlay(c,mg) mg:DeleteGroup() end end end --material: names in material list --Fusion monster, mixed materials function Auxiliary.AddFusionProcMix(c,sub,insf,...) if c:IsStatus(STATUS_COPYING_EFFECT) then return end local val={...} local fun={} local mat={} for i=1,#val do if type(val[i])=='function' then fun[i]=function(c,fc,sub,mg,sg) return val[i](c,fc,sub,mg,sg) and not c:IsHasEffect(6205579) end elseif type(val[i])=='table' then fun[i]=function(c,fc,sub,mg,sg) for _,fcode in ipairs(val[i]) do if type(fcode)=='function' then if fcode(c,fc,sub,mg,sg) and not c:IsHasEffect(6205579) then return true end else if c:IsFusionCode(fcode) or (sub and c:CheckFusionSubstitute(fc)) then return true end end end return false end for _,fcode in ipairs(val[i]) do if type(fcode)~='function' then mat[fcode]=true end end else fun[i]=function(c,fc,sub) return c:IsFusionCode(val[i]) or (sub and c:CheckFusionSubstitute(fc)) end mat[val[i]]=true end end local mt=getmetatable(c) if mt.material==nil then mt.material=mat end if mt.material_count==nil then mt.material_count={#fun,#fun} end for index,_ in pairs(mat) do Auxiliary.AddCodeList(c,index) end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_FUSION_MATERIAL) e1:SetCondition(Auxiliary.FConditionMix(insf,sub,table.unpack(fun))) e1:SetOperation(Auxiliary.FOperationMix(insf,sub,table.unpack(fun))) c:RegisterEffect(e1) end function Auxiliary.FConditionMix(insf,sub,...) --g:Material group(nil for Instant Fusion) --gc:Material already used --chkf: check field, default:PLAYER_NONE --chkf&0x100: Not fusion summon --chkf&0x200: Concat fusion local funs={...} return function(e,g,gc,chkfnf) if g==nil then return insf and Auxiliary.MustMaterialCheck(nil,e:GetHandlerPlayer(),EFFECT_MUST_BE_FMATERIAL) end local c=e:GetHandler() local tp=c:GetControler() local notfusion=chkfnf&0x100>0 local concat_fusion=chkfnf&0x200>0 local sub=(sub or notfusion) and not concat_fusion local mg=g:Filter(Auxiliary.FConditionFilterMix,c,c,sub,concat_fusion,table.unpack(funs)) if gc then if not mg:IsContains(gc) then return false end Duel.SetSelectedCard(Group.FromCards(gc)) end return mg:CheckSubGroup(Auxiliary.FCheckMixGoal,#funs,#funs,tp,c,sub,chkfnf,table.unpack(funs)) end end function Auxiliary.FOperationMix(insf,sub,...) local funs={...} return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) local c=e:GetHandler() local tp=c:GetControler() local notfusion=chkfnf&0x100>0 local concat_fusion=chkfnf&0x200>0 local sub=(sub or notfusion) and not concat_fusion local mg=eg:Filter(Auxiliary.FConditionFilterMix,c,c,sub,concat_fusion,table.unpack(funs)) if gc then Duel.SetSelectedCard(Group.FromCards(gc)) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) local sg=mg:SelectSubGroup(tp,Auxiliary.FCheckMixGoal,false,#funs,#funs,tp,c,sub,chkfnf,table.unpack(funs)) Duel.SetFusionMaterial(sg) end end function Auxiliary.FConditionFilterMix(c,fc,sub,concat_fusion,...) local fusion_type=concat_fusion and SUMMON_TYPE_SPECIAL or SUMMON_TYPE_FUSION if not c:IsCanBeFusionMaterial(fc,fusion_type) then return false end for i,f in ipairs({...}) do if f(c,fc,sub) then return true end end return false end function Auxiliary.FCheckMix(c,mg,sg,fc,sub,fun1,fun2,...) if fun2 then sg:AddCard(c) local res=false if fun1(c,fc,false,mg,sg) then res=mg:IsExists(Auxiliary.FCheckMix,1,sg,mg,sg,fc,sub,fun2,...) elseif sub and fun1(c,fc,true,mg,sg) then res=mg:IsExists(Auxiliary.FCheckMix,1,sg,mg,sg,fc,false,fun2,...) end sg:RemoveCard(c) return res else return fun1(c,fc,sub,mg,sg) end end --if sg1 is subset of sg2 then not Auxiliary.FCheckAdditional(tp,sg1,fc) -> not Auxiliary.FCheckAdditional(tp,sg2,fc) Auxiliary.FCheckAdditional=nil Auxiliary.FGoalCheckAdditional=nil function Auxiliary.FCheckMixGoal(sg,tp,fc,sub,chkfnf,...) local chkf=chkfnf&0xff local concat_fusion=chkfnf&0x200>0 if not concat_fusion and sg:IsExists(Auxiliary.TuneMagicianCheckX,1,nil,sg,EFFECT_TUNE_MAGICIAN_F) then return false end if not Auxiliary.MustMaterialCheck(sg,tp,EFFECT_MUST_BE_FMATERIAL) then return false end local g=Group.CreateGroup() return sg:IsExists(Auxiliary.FCheckMix,1,nil,sg,g,fc,sub,...) and (chkf==PLAYER_NONE or Duel.GetLocationCountFromEx(tp,tp,sg,fc)>0) and (not Auxiliary.FCheckAdditional or Auxiliary.FCheckAdditional(tp,sg,fc)) and (not Auxiliary.FGoalCheckAdditional or Auxiliary.FGoalCheckAdditional(tp,sg,fc)) end --Fusion monster, mixed material * minc to maxc + material + ... function Auxiliary.AddFusionProcMixRep(c,sub,insf,fun1,minc,maxc,...) if c:IsStatus(STATUS_COPYING_EFFECT) then return end local val={fun1,...} local fun={} local mat={} for i=1,#val do if type(val[i])=='function' then fun[i]=function(c,fc,sub,mg,sg) return val[i](c,fc,sub,mg,sg) and not c:IsHasEffect(6205579) end elseif type(val[i])=='table' then fun[i]=function(c,fc,sub,mg,sg) for _,fcode in ipairs(val[i]) do if type(fcode)=='function' then if fcode(c,fc,sub,mg,sg) and not c:IsHasEffect(6205579) then return true end else if c:IsFusionCode(fcode) or (sub and c:CheckFusionSubstitute(fc)) then return true end end end return false end for _,fcode in ipairs(val[i]) do if type(fcode)~='function' then mat[fcode]=true end end else fun[i]=function(c,fc,sub) return c:IsFusionCode(val[i]) or (sub and c:CheckFusionSubstitute(fc)) end mat[val[i]]=true end end local mt=getmetatable(c) if mt.material==nil then mt.material=mat end if mt.material_count==nil then mt.material_count={#fun+minc-1,#fun+maxc-1} end for index,_ in pairs(mat) do Auxiliary.AddCodeList(c,index) end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_FUSION_MATERIAL) e1:SetCondition(Auxiliary.FConditionMixRep(insf,sub,fun[1],minc,maxc,table.unpack(fun,2))) e1:SetOperation(Auxiliary.FOperationMixRep(insf,sub,fun[1],minc,maxc,table.unpack(fun,2))) c:RegisterEffect(e1) end function Auxiliary.FConditionMixRep(insf,sub,fun1,minc,maxc,...) local funs={...} return function(e,g,gc,chkfnf) if g==nil then return insf and Auxiliary.MustMaterialCheck(nil,e:GetHandlerPlayer(),EFFECT_MUST_BE_FMATERIAL) end local c=e:GetHandler() local tp=c:GetControler() local notfusion=chkfnf&0x100>0 local concat_fusion=chkfnf&0x200>0 local sub=(sub or notfusion) and not concat_fusion local mg=g:Filter(Auxiliary.FConditionFilterMix,c,c,sub,concat_fusion,fun1,table.unpack(funs)) if gc then if not mg:IsContains(gc) then return false end local sg=Group.CreateGroup() return Auxiliary.FSelectMixRep(gc,tp,mg,sg,c,sub,chkfnf,fun1,minc,maxc,table.unpack(funs)) end local sg=Group.CreateGroup() return mg:IsExists(Auxiliary.FSelectMixRep,1,nil,tp,mg,sg,c,sub,chkfnf,fun1,minc,maxc,table.unpack(funs)) end end function Auxiliary.FOperationMixRep(insf,sub,fun1,minc,maxc,...) local funs={...} return function(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf) local c=e:GetHandler() local tp=c:GetControler() local notfusion=chkfnf&0x100>0 local concat_fusion=chkfnf&0x200>0 local sub=(sub or notfusion) and not concat_fusion local mg=eg:Filter(Auxiliary.FConditionFilterMix,c,c,sub,concat_fusion,fun1,table.unpack(funs)) local sg=Group.CreateGroup() if gc then sg:AddCard(gc) end while sg:GetCount()<maxc+#funs do local cg=mg:Filter(Auxiliary.FSelectMixRep,sg,tp,mg,sg,c,sub,chkfnf,fun1,minc,maxc,table.unpack(funs)) if cg:GetCount()==0 then break end local finish=Auxiliary.FCheckMixRepGoal(tp,sg,c,sub,chkfnf,fun1,minc,maxc,table.unpack(funs)) local cancel_group=sg:Clone() if gc then cancel_group:RemoveCard(gc) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) local tc=cg:SelectUnselect(cancel_group,tp,finish,false,minc+#funs,maxc+#funs) if not tc then break end if sg:IsContains(tc) then sg:RemoveCard(tc) else sg:AddCard(tc) end end Duel.SetFusionMaterial(sg) end end function Auxiliary.FCheckMixRep(sg,g,fc,sub,chkf,fun1,minc,maxc,fun2,...) if fun2 then return sg:IsExists(Auxiliary.FCheckMixRepFilter,1,g,sg,g,fc,sub,chkf,fun1,minc,maxc,fun2,...) else local ct1=sg:FilterCount(fun1,g,fc,sub,mg,sg) local ct2=sg:FilterCount(fun1,g,fc,false,mg,sg) return ct1==sg:GetCount()-g:GetCount() and ct1-ct2<=1 end end function Auxiliary.FCheckMixRepFilter(c,sg,g,fc,sub,chkf,fun1,minc,maxc,fun2,...) if fun2(c,fc,sub,mg,sg) then g:AddCard(c) local sub=sub and fun2(c,fc,false,mg,sg) local res=Auxiliary.FCheckMixRep(sg,g,fc,sub,chkf,fun1,minc,maxc,...) g:RemoveCard(c) return res end return false end function Auxiliary.FCheckMixRepGoalCheck(tp,sg,fc,chkfnf) local concat_fusion=chkfnf&0x200>0 if not concat_fusion and sg:IsExists(Auxiliary.TuneMagicianCheckX,1,nil,sg,EFFECT_TUNE_MAGICIAN_F) then return false end if not Auxiliary.MustMaterialCheck(sg,tp,EFFECT_MUST_BE_FMATERIAL) then return false end if Auxiliary.FGoalCheckAdditional and not Auxiliary.FGoalCheckAdditional(tp,sg,fc) then return false end return true end function Auxiliary.FCheckMixRepGoal(tp,sg,fc,sub,chkfnf,fun1,minc,maxc,...) local chkf=chkfnf&0xff if sg:GetCount()<minc+#{...} or sg:GetCount()>maxc+#{...} then return false end if not (chkf==PLAYER_NONE or Duel.GetLocationCountFromEx(tp,tp,sg,fc)>0) then return false end if Auxiliary.FCheckAdditional and not Auxiliary.FCheckAdditional(tp,sg,fc) then return false end if not Auxiliary.FCheckMixRepGoalCheck(tp,sg,fc,chkfnf) then return false end local g=Group.CreateGroup() return Auxiliary.FCheckMixRep(sg,g,fc,sub,chkf,fun1,minc,maxc,...) end function Auxiliary.FCheckMixRepTemplate(c,cond,tp,mg,sg,g,fc,sub,chkfnf,fun1,minc,maxc,...) for i,f in ipairs({...}) do if f(c,fc,sub,mg,sg) then g:AddCard(c) local sub=sub and f(c,fc,false,mg,sg) local t={...} table.remove(t,i) local res=cond(tp,mg,sg,g,fc,sub,chkfnf,fun1,minc,maxc,table.unpack(t)) g:RemoveCard(c) if res then return true end end end if maxc>0 then if fun1(c,fc,sub,mg,sg) then g:AddCard(c) local sub=sub and fun1(c,fc,false,mg,sg) local res=cond(tp,mg,sg,g,fc,sub,chkfnf,fun1,minc-1,maxc-1,...) g:RemoveCard(c) if res then return true end end end return false end function Auxiliary.FCheckMixRepSelectedCond(tp,mg,sg,g,...) if g:GetCount()<sg:GetCount() then return sg:IsExists(Auxiliary.FCheckMixRepSelected,1,g,tp,mg,sg,g,...) else return Auxiliary.FCheckSelectMixRep(tp,mg,sg,g,...) end end function Auxiliary.FCheckMixRepSelected(c,...) return Auxiliary.FCheckMixRepTemplate(c,Auxiliary.FCheckMixRepSelectedCond,...) end function Auxiliary.FCheckSelectMixRep(tp,mg,sg,g,fc,sub,chkfnf,fun1,minc,maxc,...) local chkf=chkfnf&0xff if Auxiliary.FCheckAdditional and not Auxiliary.FCheckAdditional(tp,g,fc) then return false end if chkf==PLAYER_NONE or Duel.GetLocationCountFromEx(tp,tp,g,fc)>0 then if minc<=0 and #{...}==0 and Auxiliary.FCheckMixRepGoalCheck(tp,g,fc,chkfnf) then return true end return mg:IsExists(Auxiliary.FCheckSelectMixRepAll,1,g,tp,mg,sg,g,fc,sub,chkfnf,fun1,minc,maxc,...) else return mg:IsExists(Auxiliary.FCheckSelectMixRepM,1,g,tp,mg,sg,g,fc,sub,chkfnf,fun1,minc,maxc,...) end end function Auxiliary.FCheckSelectMixRepAll(c,tp,mg,sg,g,fc,sub,chkf,fun1,minc,maxc,fun2,...) if fun2 then if fun2(c,fc,sub,mg,sg) then g:AddCard(c) local sub=sub and fun2(c,fc,false,mg,sg) local res=Auxiliary.FCheckSelectMixRep(tp,mg,sg,g,fc,sub,chkf,fun1,minc,maxc,...) g:RemoveCard(c) return res end elseif maxc>0 and fun1(c,fc,sub,mg,sg) then g:AddCard(c) local sub=sub and fun1(c,fc,false,mg,sg) local res=Auxiliary.FCheckSelectMixRep(tp,mg,sg,g,fc,sub,chkf,fun1,minc-1,maxc-1) g:RemoveCard(c) return res end return false end function Auxiliary.FCheckSelectMixRepM(c,tp,...) return c:IsControler(tp) and c:IsLocation(LOCATION_MZONE) and Auxiliary.FCheckMixRepTemplate(c,Auxiliary.FCheckSelectMixRep,tp,...) end function Auxiliary.FSelectMixRep(c,tp,mg,sg,fc,sub,chkfnf,...) sg:AddCard(c) local res=false if Auxiliary.FCheckAdditional and not Auxiliary.FCheckAdditional(tp,sg,fc) then res=false elseif Auxiliary.FCheckMixRepGoal(tp,sg,fc,sub,chkfnf,...) then res=true else local g=Group.CreateGroup() res=sg:IsExists(Auxiliary.FCheckMixRepSelected,1,nil,tp,mg,sg,g,fc,sub,chkfnf,...) end sg:RemoveCard(c) return res end --Fusion monster, name + name function Auxiliary.AddFusionProcCode2(c,code1,code2,sub,insf) Auxiliary.AddFusionProcMix(c,sub,insf,code1,code2) end --Fusion monster, name + name + name function Auxiliary.AddFusionProcCode3(c,code1,code2,code3,sub,insf) Auxiliary.AddFusionProcMix(c,sub,insf,code1,code2,code3) end --Fusion monster, name + name + name + name function Auxiliary.AddFusionProcCode4(c,code1,code2,code3,code4,sub,insf) Auxiliary.AddFusionProcMix(c,sub,insf,code1,code2,code3,code4) end --Fusion monster, name * n function Auxiliary.AddFusionProcCodeRep(c,code1,cc,sub,insf) local code={} for i=1,cc do code[i]=code1 end Auxiliary.AddFusionProcMix(c,sub,insf,table.unpack(code)) end --Fusion monster, name * minc to maxc function Auxiliary.AddFusionProcCodeRep2(c,code1,minc,maxc,sub,insf) Auxiliary.AddFusionProcMixRep(c,sub,insf,code1,minc,maxc) end --Fusion monster, name + condition * n function Auxiliary.AddFusionProcCodeFun(c,code1,f,cc,sub,insf) local fun={} for i=1,cc do fun[i]=f end Auxiliary.AddFusionProcMix(c,sub,insf,code1,table.unpack(fun)) end --Fusion monster, condition + condition function Auxiliary.AddFusionProcFun2(c,f1,f2,insf) Auxiliary.AddFusionProcMix(c,false,insf,f1,f2) end --Fusion monster, condition * n function Auxiliary.AddFusionProcFunRep(c,f,cc,insf) local fun={} for i=1,cc do fun[i]=f end Auxiliary.AddFusionProcMix(c,false,insf,table.unpack(fun)) end --Fusion monster, condition * minc to maxc function Auxiliary.AddFusionProcFunRep2(c,f,minc,maxc,insf) Auxiliary.AddFusionProcMixRep(c,false,insf,f,minc,maxc) end --Fusion monster, condition1 + condition2 * n function Auxiliary.AddFusionProcFunFun(c,f1,f2,cc,insf) local fun={} for i=1,cc do fun[i]=f2 end Auxiliary.AddFusionProcMix(c,false,insf,f1,table.unpack(fun)) end --Fusion monster, condition1 + condition2 * minc to maxc function Auxiliary.AddFusionProcFunFunRep(c,f1,f2,minc,maxc,insf) Auxiliary.AddFusionProcMixRep(c,false,insf,f2,minc,maxc,f1) end --Fusion monster, name + condition * minc to maxc function Auxiliary.AddFusionProcCodeFunRep(c,code1,f,minc,maxc,sub,insf) Auxiliary.AddFusionProcMixRep(c,sub,insf,f,minc,maxc,code1) end --Fusion monster, name + name + condition * minc to maxc function Auxiliary.AddFusionProcCode2FunRep(c,code1,code2,f,minc,maxc,sub,insf) Auxiliary.AddFusionProcMixRep(c,sub,insf,f,minc,maxc,code1,code2) end --Fusion monster, Shaddoll materials function Auxiliary.AddFusionProcShaddoll(c,attr) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_FUSION_MATERIAL) e1:SetCondition(Auxiliary.FShaddollCondition(attr)) e1:SetOperation(Auxiliary.FShaddollOperation(attr)) c:RegisterEffect(e1) end function Auxiliary.FShaddollFilter(c,fc,attr) return (Auxiliary.FShaddollFilter1(c) or Auxiliary.FShaddollFilter2(c,attr)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579) end function Auxiliary.FShaddollExFilter(c,fc,attr,fe) return c:IsFaceup() and not c:IsImmuneToEffect(fe) and Auxiliary.FShaddollFilter(c,fc,attr) end function Auxiliary.FShaddollFilter1(c) return c:IsFusionSetCard(0x9d) end function Auxiliary.FShaddollFilter2(c,attr) return c:IsFusionAttribute(attr) or c:IsHasEffect(4904633) end function Auxiliary.FShaddollSpFilter1(c,fc,tp,mg,exg,attr,chkf) return mg:IsExists(Auxiliary.FShaddollSpFilter2,1,c,fc,tp,c,attr,chkf) or (exg and exg:IsExists(Auxiliary.FShaddollSpFilter2,1,c,fc,tp,c,attr,chkf)) end function Auxiliary.FShaddollSpFilter2(c,fc,tp,mc,attr,chkf) local sg=Group.FromCards(c,mc) if sg:IsExists(Auxiliary.TuneMagicianCheckX,1,nil,sg,EFFECT_TUNE_MAGICIAN_F) then return false end if not Auxiliary.MustMaterialCheck(sg,tp,EFFECT_MUST_BE_FMATERIAL) then return false end if Auxiliary.FCheckAdditional and not Auxiliary.FCheckAdditional(tp,sg,fc) or Auxiliary.FGoalCheckAdditional and not Auxiliary.FGoalCheckAdditional(tp,sg,fc) then return false end return ((Auxiliary.FShaddollFilter1(c) and Auxiliary.FShaddollFilter2(mc,attr)) or (Auxiliary.FShaddollFilter2(c,attr) and Auxiliary.FShaddollFilter1(mc))) and (chkf==PLAYER_NONE or Duel.GetLocationCountFromEx(tp,tp,sg,fc)>0) end function Auxiliary.FShaddollCondition(attr) return function(e,g,gc,chkf) if g==nil then return Auxiliary.MustMaterialCheck(nil,e:GetHandlerPlayer(),EFFECT_MUST_BE_FMATERIAL) end local c=e:GetHandler() local mg=g:Filter(Auxiliary.FShaddollFilter,nil,c,attr) local tp=e:GetHandlerPlayer() local fc=Duel.GetFieldCard(tp,LOCATION_FZONE,0) local exg=nil if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local fe=fc:IsHasEffect(81788994) exg=Duel.GetMatchingGroup(Auxiliary.FShaddollExFilter,tp,0,LOCATION_MZONE,mg,c,attr,fe) end if gc then if not mg:IsContains(gc) then return false end return Auxiliary.FShaddollSpFilter1(gc,c,tp,mg,exg,attr,chkf) end return mg:IsExists(Auxiliary.FShaddollSpFilter1,1,nil,c,tp,mg,exg,attr,chkf) end end function Auxiliary.FShaddollOperation(attr) return function(e,tp,eg,ep,ev,re,r,rp,gc,chkf) local c=e:GetHandler() local mg=eg:Filter(Auxiliary.FShaddollFilter,nil,c,attr) local fc=Duel.GetFieldCard(tp,LOCATION_FZONE,0) local exg=nil if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then local fe=fc:IsHasEffect(81788994) exg=Duel.GetMatchingGroup(Auxiliary.FShaddollExFilter,tp,0,LOCATION_MZONE,mg,c,attr,fe) end local g=nil if gc then g=Group.FromCards(gc) mg:RemoveCard(gc) else Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) g=mg:FilterSelect(tp,Auxiliary.FShaddollSpFilter1,1,1,nil,c,tp,mg,exg,attr,chkf) mg:Sub(g) end if exg and exg:IsExists(Auxiliary.FShaddollSpFilter2,1,nil,c,tp,g:GetFirst(),attr,chkf) and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then fc:RemoveCounter(tp,0x16,3,REASON_EFFECT) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) local sg=exg:FilterSelect(tp,Auxiliary.FShaddollSpFilter2,1,1,nil,c,tp,g:GetFirst(),attr,chkf) g:Merge(sg) else Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL) local sg=mg:FilterSelect(tp,Auxiliary.FShaddollSpFilter2,1,1,nil,c,tp,g:GetFirst(),attr,chkf) g:Merge(sg) end Duel.SetFusionMaterial(g) end end function Auxiliary.AddContactFusionProcedure(c,filter,self_location,opponent_location,mat_operation,...) local self_location=self_location or 0 local opponent_location=opponent_location or 0 local operation_params={...} local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_SPSUMMON_PROC) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetRange(LOCATION_EXTRA) e2:SetCondition(Auxiliary.ContactFusionCondition(filter,self_location,opponent_location)) e2:SetOperation(Auxiliary.ContactFusionOperation(filter,self_location,opponent_location,mat_operation,operation_params)) c:RegisterEffect(e2) return e2 end function Auxiliary.ContactFusionMaterialFilter(c,fc,filter) return c:IsCanBeFusionMaterial(fc,SUMMON_TYPE_SPECIAL) and (not filter or filter(c,fc)) end function Auxiliary.ContactFusionCondition(filter,self_location,opponent_location) return function(e,c) if c==nil then return true end if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(Auxiliary.ContactFusionMaterialFilter,tp,self_location,opponent_location,c,c,filter) return c:CheckFusionMaterial(mg,nil,tp|0x200) end end function Auxiliary.ContactFusionOperation(filter,self_location,opponent_location,mat_operation,operation_params) return function(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(Auxiliary.ContactFusionMaterialFilter,tp,self_location,opponent_location,c,c,filter) local g=Duel.SelectFusionMaterial(tp,c,mg,nil,tp|0x200) c:SetMaterial(g) mat_operation(g,table.unpack(operation_params)) end end function Auxiliary.AddRitualProcUltimate(c,filter,level_function,greater_or_equal,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) summon_location=summon_location or LOCATION_HAND 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,level_function,greater_or_equal,summon_location,grave_filter,mat_filter,extra_target)) e1:SetOperation(Auxiliary.RitualUltimateOperation(filter,level_function,greater_or_equal,summon_location,grave_filter,mat_filter,extra_operation)) if not pause then c:RegisterEffect(e1) end return e1 end function Auxiliary.RitualCheckGreater(g,c,lv) Duel.SetSelectedCard(g) return g:CheckWithSumGreater(Card.GetRitualLevel,lv,c) end function Auxiliary.RitualCheckEqual(g,c,lv) return g:CheckWithSumEqual(Card.GetRitualLevel,lv,#g,#g,c) end Auxiliary.RCheckAdditional=nil function Auxiliary.RitualCheck(g,tp,c,lv,greater_or_equal) return Auxiliary["RitualCheck"..greater_or_equal](g,c,lv) and Duel.GetMZoneCount(tp,g,tp)>0 and (not c.mat_group_check or c.mat_group_check(g,tp)) and (not Auxiliary.RCheckAdditional or Auxiliary.RCheckAdditional(tp,g,c)) end function Auxiliary.RitualCheckAdditionalLevel(c,rc) local raw_level=c:GetRitualLevel(rc) local lv1=raw_level&0xffff local lv2=raw_level>>16 if lv2>0 then return math.min(lv1,lv2) else return lv1 end end Auxiliary.RGCheckAdditional=nil function Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal) if greater_or_equal=="Equal" then return function(g) return (not Auxiliary.RGCheckAdditional or Auxiliary.RGCheckAdditional(g)) and g:GetSum(Auxiliary.RitualCheckAdditionalLevel,c)<=lv end else return function(g,ec) if ec then return (not Auxiliary.RGCheckAdditional or Auxiliary.RGCheckAdditional(g,ec)) and g:GetSum(Auxiliary.RitualCheckAdditionalLevel,c)-Auxiliary.RitualCheckAdditionalLevel(ec,c)<=lv else return not Auxiliary.RGCheckAdditional or Auxiliary.RGCheckAdditional(g) end end end end function Auxiliary.RitualUltimateFilter(c,filter,e,tp,m1,m2,level_function,greater_or_equal,chk) if bit.band(c:GetType(),0x81)~=0x81 or (filter and not filter(c,e,tp,chk)) or not c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_RITUAL,tp,false,true) then return false end local mg=m1:Filter(Card.IsCanBeRitualMaterial,c,c) if m2 then mg:Merge(m2) end if c.mat_filter then mg=mg:Filter(c.mat_filter,c,tp) else mg:RemoveCard(c) end local lv=level_function(c) Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(c,lv,greater_or_equal) local res=mg:CheckSubGroup(Auxiliary.RitualCheck,1,lv,tp,c,lv,greater_or_equal) Auxiliary.GCheckAdditional=nil return res end function Auxiliary.RitualExtraFilter(c,f) return c:GetLevel()>0 and f(c) and c:IsType(TYPE_MONSTER) and c:IsAbleToRemove() end function Auxiliary.RitualUltimateTarget(filter,level_function,greater_or_equal,summon_location,grave_filter,mat_filter,extra_target) return function(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local mg=Duel.GetRitualMaterial(tp) if mat_filter then mg=mg:Filter(mat_filter,nil,e,tp,true) end local exg=nil if grave_filter then exg=Duel.GetMatchingGroup(Auxiliary.RitualExtraFilter,tp,LOCATION_GRAVE,0,nil,grave_filter) end return Duel.IsExistingMatchingCard(Auxiliary.RitualUltimateFilter,tp,summon_location,0,1,nil,filter,e,tp,mg,exg,level_function,greater_or_equal,true) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,summon_location) if grave_filter then Duel.SetOperationInfo(0,CATEGORY_REMOVE,nil,0,tp,LOCATION_GRAVE) end if extra_target then extra_target(e,tp,eg,ep,ev,re,r,rp) end end end function Auxiliary.RitualUltimateOperation(filter,level_function,greater_or_equal,summon_location,grave_filter,mat_filter,extra_operation) return function(e,tp,eg,ep,ev,re,r,rp) ::RitualUltimateSelectStart:: local mg=Duel.GetRitualMaterial(tp) if mat_filter then mg=mg:Filter(mat_filter,nil,e,tp) end local exg=nil if grave_filter then exg=Duel.GetMatchingGroup(Auxiliary.RitualExtraFilter,tp,LOCATION_GRAVE,0,nil,grave_filter) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local tg=Duel.SelectMatchingCard(tp,Auxiliary.NecroValleyFilter(Auxiliary.RitualUltimateFilter),tp,summon_location,0,1,1,nil,filter,e,tp,mg,exg,level_function,greater_or_equal) local tc=tg:GetFirst() local mat if tc then mg=mg:Filter(Card.IsCanBeRitualMaterial,tc,tc) if exg then mg:Merge(exg) end if tc.mat_filter then mg=mg:Filter(tc.mat_filter,tc,tp) else mg:RemoveCard(tc) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local lv=level_function(tc) Auxiliary.GCheckAdditional=Auxiliary.RitualCheckAdditional(tc,lv,greater_or_equal) mat=mg:SelectSubGroup(tp,Auxiliary.RitualCheck,true,1,lv,tp,tc,lv,greater_or_equal) Auxiliary.GCheckAdditional=nil if not mat then goto RitualUltimateSelectStart end tc:SetMaterial(mat) Duel.ReleaseRitualMaterial(mat) Duel.BreakEffect() Duel.SpecialSummon(tc,SUMMON_TYPE_RITUAL,tp,tp,false,true,POS_FACEUP) tc:CompleteProcedure() end if extra_operation then extra_operation(e,tp,eg,ep,ev,re,r,rp,tc,mat) end end end --Ritual Summon, geq fixed lv function Auxiliary.AddRitualProcGreater(c,filter,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) return Auxiliary.AddRitualProcUltimate(c,filter,Card.GetOriginalLevel,"Greater",summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end function Auxiliary.AddRitualProcGreaterCode(c,code1,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) Auxiliary.AddCodeList(c,code1) return Auxiliary.AddRitualProcGreater(c,Auxiliary.FilterBoolFunction(Card.IsCode,code1),summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end --Ritual Summon, equal to fixed lv function Auxiliary.AddRitualProcEqual(c,filter,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) return Auxiliary.AddRitualProcUltimate(c,filter,Card.GetOriginalLevel,"Equal",summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end function Auxiliary.AddRitualProcEqualCode(c,code1,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) Auxiliary.AddCodeList(c,code1) return Auxiliary.AddRitualProcEqual(c,Auxiliary.FilterBoolFunction(Card.IsCode,code1),summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end --Ritual Summon, equal to monster lv function Auxiliary.AddRitualProcEqual2(c,filter,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) return Auxiliary.AddRitualProcUltimate(c,filter,Card.GetLevel,"Equal",summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end function Auxiliary.AddRitualProcEqual2Code(c,code1,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) Auxiliary.AddCodeList(c,code1) return Auxiliary.AddRitualProcEqual2(c,Auxiliary.FilterBoolFunction(Card.IsCode,code1),summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end function Auxiliary.AddRitualProcEqual2Code2(c,code1,code2,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) Auxiliary.AddCodeList(c,code1,code2) return Auxiliary.AddRitualProcEqual2(c,Auxiliary.FilterBoolFunction(Card.IsCode,code1,code2),summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end --Ritual Summon, geq monster lv function Auxiliary.AddRitualProcGreater2(c,filter,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) return Auxiliary.AddRitualProcUltimate(c,filter,Card.GetLevel,"Greater",summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end function Auxiliary.AddRitualProcGreater2Code(c,code1,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) Auxiliary.AddCodeList(c,code1) return Auxiliary.AddRitualProcGreater2(c,Auxiliary.FilterBoolFunction(Card.IsCode,code1),summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end function Auxiliary.AddRitualProcGreater2Code2(c,code1,code2,summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) Auxiliary.AddCodeList(c,code1,code2) return Auxiliary.AddRitualProcGreater2(c,Auxiliary.FilterBoolFunction(Card.IsCode,code1,code2),summon_location,grave_filter,mat_filter,pause,extra_operation,extra_target) end --add procedure to Pendulum monster, also allows registeration of activation effect function Auxiliary.EnablePendulumAttribute(c,reg) if not Auxiliary.PendulumChecklist then Auxiliary.PendulumChecklist=0 local ge1=Effect.GlobalEffect() ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) ge1:SetCode(EVENT_PHASE_START+PHASE_DRAW) ge1:SetOperation(Auxiliary.PendulumReset) Duel.RegisterEffect(ge1,0) end local e1=Effect.CreateEffect(c) e1:SetDescription(1163) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC_G) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_PZONE) e1:SetCondition(Auxiliary.PendCondition()) e1:SetOperation(Auxiliary.PendOperation()) e1:SetValue(SUMMON_TYPE_PENDULUM) c:RegisterEffect(e1) --register by default if reg==nil or reg then local e2=Effect.CreateEffect(c) e2:SetDescription(1160) e2:SetType(EFFECT_TYPE_ACTIVATE) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_HAND) c:RegisterEffect(e2) end end function Auxiliary.PendulumReset(e,tp,eg,ep,ev,re,r,rp) Auxiliary.PendulumChecklist=0 end function Auxiliary.PConditionExtraFilterSpecific(c,e,tp,lscale,rscale,te) if not te then return true end local f=te:GetValue() return not f or f(te,c,e,tp,lscale,rscale) end function Auxiliary.PConditionExtraFilter(c,e,tp,lscale,rscale,eset) for _,te in ipairs(eset) do if Auxiliary.PConditionExtraFilterSpecific(c,e,tp,lscale,rscale,te) then return true end end return false end function Auxiliary.PConditionFilter(c,e,tp,lscale,rscale,eset) local lv=0 if c.pendulum_level then lv=c.pendulum_level else lv=c:GetLevel() end local bool=Auxiliary.PendulumSummonableBool(c) return (c:IsLocation(LOCATION_HAND) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM))) and lv>lscale and lv<rscale and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,bool,bool) and not c:IsForbidden() and (Auxiliary.PendulumChecklist&(0x1<<tp)==0 or Auxiliary.PConditionExtraFilter(c,e,tp,lscale,rscale,eset)) end function Auxiliary.PendCondition() return function(e,c,og) if c==nil then return true end local tp=c:GetControler() local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)} if Auxiliary.PendulumChecklist&(0x1<<tp)~=0 and #eset==0 then return false end local rpz=Duel.GetFieldCard(tp,LOCATION_PZONE,1) if rpz==nil or c==rpz then return false end local lscale=c:GetLeftScale() local rscale=rpz:GetRightScale() if lscale>rscale then lscale,rscale=rscale,lscale 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) else g=Duel.GetFieldGroup(tp,loc,0) end return g:IsExists(Auxiliary.PConditionFilter,1,nil,e,tp,lscale,rscale,eset) end end function Auxiliary.PendOperationCheck(ft1,ft2,ft) return function(g) local exg=g:Filter(Card.IsLocation,nil,LOCATION_EXTRA) local mg=g-exg return #g<=ft and #exg<=ft2 and #mg<=ft1 end end function Auxiliary.PendOperation() return function(e,tp,eg,ep,ev,re,r,rp,c,sg,og) local rpz=Duel.GetFieldCard(tp,LOCATION_PZONE,1) local lscale=c:GetLeftScale() local rscale=rpz:GetRightScale() if lscale>rscale then lscale,rscale=rscale,lscale end local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)} local tg=nil local loc=0 local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft2=Duel.GetLocationCountFromEx(tp,tp,nil,TYPE_PENDULUM) local ft=Duel.GetUsableMZoneCount(tp) local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp] if ect and ect<ft2 then ft2=ect end if Duel.IsPlayerAffectedByEffect(tp,59822133) then if ft1>0 then ft1=1 end if ft2>0 then ft2=1 end ft=1 end if ft1>0 then loc=loc|LOCATION_HAND end if ft2>0 then loc=loc|LOCATION_EXTRA end if og then tg=og:Filter(Card.IsLocation,nil,loc):Filter(Auxiliary.PConditionFilter,nil,e,tp,lscale,rscale,eset) else tg=Duel.GetMatchingGroup(Auxiliary.PConditionFilter,tp,loc,0,nil,e,tp,lscale,rscale,eset) end local ce=nil local b1=Auxiliary.PendulumChecklist&(0x1<<tp)==0 local b2=#eset>0 if b1 and b2 then local options={1163} for _,te in ipairs(eset) do table.insert(options,te:GetDescription()) end local op=Duel.SelectOption(tp,table.unpack(options)) if op>0 then ce=eset[op] end elseif b2 and not b1 then local options={} for _,te in ipairs(eset) do table.insert(options,te:GetDescription()) end local op=Duel.SelectOption(tp,table.unpack(options)) ce=eset[op+1] end if ce then tg=tg:Filter(Auxiliary.PConditionExtraFilterSpecific,nil,e,tp,lscale,rscale,ce) end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Auxiliary.GCheckAdditional=Auxiliary.PendOperationCheck(ft1,ft2,ft) local g=tg:SelectSubGroup(tp,aux.TRUE,true,1,math.min(#tg,ft)) Auxiliary.GCheckAdditional=nil if not g then return end if ce then Duel.Hint(HINT_CARD,0,ce:GetOwner():GetOriginalCode()) ce:UseCountLimit(tp) else Auxiliary.PendulumChecklist=Auxiliary.PendulumChecklist|(0x1<<tp) end sg:Merge(g) Duel.HintSelection(Group.FromCards(c)) Duel.HintSelection(Group.FromCards(rpz)) end end --enable revive limit for monsters that are also pendulum sumonable from certain locations (Odd-Eyes Revolution Dragon) function Auxiliary.EnableReviveLimitPendulumSummonable(c, loc) if c:IsStatus(STATUS_COPYING_EFFECT) then return end c:EnableReviveLimit() local mt=getmetatable(c) if loc==nil then loc=0xff end mt.psummonable_location=loc --complete procedure on pendulum summon success local e1=Effect.CreateEffect(c) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetOperation(Auxiliary.PSSCompleteProcedure) c:RegisterEffect(e1) end function Auxiliary.PendulumSummonableBool(c) return c.psummonable_location~=nil and c:GetLocation()&c.psummonable_location>0 end function Auxiliary.PSSCompleteProcedure(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsSummonType(SUMMON_TYPE_PENDULUM) then c:CompleteProcedure() end end --Link Summon function Auxiliary.AddLinkProcedure(c,f,min,max,gf) local e1=Effect.CreateEffect(c) e1:SetDescription(1166) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetRange(LOCATION_EXTRA) 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 Auxiliary.LConditionFilter(c,f,lc,e) return (c:IsFaceup() or not c:IsOnField() or e:IsHasProperty(EFFECT_FLAG_SET_AVAILABLE)) and c:IsCanBeLinkMaterial(lc) and (not f or f(c)) end function Auxiliary.LExtraFilter(c,f,lc,tp) if c:IsOnField() and c:IsFacedown() then return false end if not c:IsCanBeLinkMaterial(lc) or f and not f(c) then return false end local le={c:IsHasEffect(EFFECT_EXTRA_LINK_MATERIAL,tp)} for _,te in pairs(le) do local tf=te:GetValue() local related,valid=tf(te,lc,nil,c,tp) if related then return true end end return false end function Auxiliary.GetLinkCount(c) if c:IsType(TYPE_LINK) and c:GetLink()>1 then return 1+0x10000*c:GetLink() else return 1 end end function Auxiliary.GetLinkMaterials(tp,f,lc,e) local mg=Duel.GetMatchingGroup(Auxiliary.LConditionFilter,tp,LOCATION_MZONE,0,nil,f,lc,e) local mg2=Duel.GetMatchingGroup(Auxiliary.LExtraFilter,tp,LOCATION_HAND+LOCATION_SZONE,LOCATION_ONFIELD,nil,f,lc,tp) if mg2:GetCount()>0 then mg:Merge(mg2) end return mg end function Auxiliary.LCheckOtherMaterial(c,mg,lc,tp) local le={c:IsHasEffect(EFFECT_EXTRA_LINK_MATERIAL,tp)} local res1=false local res2=true for _,te in pairs(le) do local f=te:GetValue() local related,valid=f(te,lc,mg,c,tp) if related then res2=false end if related and valid then res1=true end end return res1 or res2 end function Auxiliary.LUncompatibilityFilter(c,sg,lc,tp) local mg=sg:Filter(aux.TRUE,c) return not Auxiliary.LCheckOtherMaterial(c,mg,lc,tp) end function Auxiliary.LCheckGoal(sg,tp,lc,gf,lmat) return sg:CheckWithSumEqual(Auxiliary.GetLinkCount,lc:GetLink(),#sg,#sg) and Duel.GetLocationCountFromEx(tp,tp,sg,lc)>0 and (not gf or gf(sg,lc,tp)) and not sg:IsExists(Auxiliary.LUncompatibilityFilter,1,nil,sg,lc,tp) and (not lmat or sg:IsContains(lmat)) end function Auxiliary.LExtraMaterialCount(mg,lc,tp) for tc in aux.Next(mg) do local le={tc:IsHasEffect(EFFECT_EXTRA_LINK_MATERIAL,tp)} for _,te in pairs(le) do local sg=mg:Filter(aux.TRUE,tc) local f=te:GetValue() local related,valid=f(te,lc,sg,tc,tp) if related and valid then te:UseCountLimit(tp) end end end end function Auxiliary.LinkCondition(f,minc,maxc,gf) return function(e,c,og,lmat,min,max) if c==nil then return true end if c:IsType(TYPE_PENDULUM) and c:IsFaceup() then return false end local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end local tp=c:GetControler() local mg=nil if og then mg=og:Filter(Auxiliary.LConditionFilter,nil,f,c,e) else mg=Auxiliary.GetLinkMaterials(tp,f,c,e) end if lmat~=nil then if not Auxiliary.LConditionFilter(lmat,f,c,e) then return false end mg:AddCard(lmat) end local fg=Duel.GetMustMaterial(tp,EFFECT_MUST_BE_LMATERIAL) if fg:IsExists(Auxiliary.MustMaterialCounterFilter,1,nil,mg) then return false end Duel.SetSelectedCard(fg) return mg:CheckSubGroup(Auxiliary.LCheckGoal,minc,maxc,tp,c,gf,lmat) end end function Auxiliary.LinkTarget(f,minc,maxc,gf) return function(e,tp,eg,ep,ev,re,r,rp,chk,c,og,lmat,min,max) local minc=minc local maxc=maxc if min then if min>minc then minc=min end if max<maxc then maxc=max end if minc>maxc then return false end end local mg=nil if og then mg=og:Filter(Auxiliary.LConditionFilter,nil,f,c,e) else mg=Auxiliary.GetLinkMaterials(tp,f,c,e) end if lmat~=nil then if not Auxiliary.LConditionFilter(lmat,f,c,e) then return false end mg:AddCard(lmat) end local fg=Duel.GetMustMaterial(tp,EFFECT_MUST_BE_LMATERIAL) Duel.SetSelectedCard(fg) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_LMATERIAL) local cancel=Duel.IsSummonCancelable() local sg=mg:SelectSubGroup(tp,Auxiliary.LCheckGoal,cancel,minc,maxc,tp,c,gf,lmat) if sg then sg:KeepAlive() e:SetLabelObject(sg) return true else return false end end end function Auxiliary.LinkOperation(f,minc,maxc,gf) return function(e,tp,eg,ep,ev,re,r,rp,c,og,lmat,min,max) local g=e:GetLabelObject() c:SetMaterial(g) Auxiliary.LExtraMaterialCount(g,c,tp) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_LINK) g:DeleteGroup() end end function Auxiliary.EnableExtraDeckSummonCountLimit() if Auxiliary.ExtraDeckSummonCountLimit~=nil then return end Auxiliary.ExtraDeckSummonCountLimit={} Auxiliary.ExtraDeckSummonCountLimit[0]=1 Auxiliary.ExtraDeckSummonCountLimit[1]=1 local ge1=Effect.GlobalEffect() ge1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) ge1:SetCode(EVENT_PHASE_START+PHASE_DRAW) ge1:SetOperation(Auxiliary.ExtraDeckSummonCountLimitReset) Duel.RegisterEffect(ge1,0) end function Auxiliary.ExtraDeckSummonCountLimitReset() Auxiliary.ExtraDeckSummonCountLimit[0]=1 Auxiliary.ExtraDeckSummonCountLimit[1]=1 end --Fusion Monster is unnecessary to use this function Auxiliary.AddMaterialCodeList(c,...) if c:IsStatus(STATUS_COPYING_EFFECT) then return end local mat={} for _,code in ipairs{...} do mat[code]=true end if c.material==nil then local mt=getmetatable(c) mt.material=mat end for index,_ in pairs(mat) do Auxiliary.AddCodeList(c,index) end end function Auxiliary.IsMaterialListCode(c,code) return c.material and c.material[code] end function Auxiliary.IsMaterialListSetCard(c,setcode) if not c.material_setcode then return false end if type(c.material_setcode)=='table' then for i,scode in ipairs(c.material_setcode) do if setcode&0xfff==scode&0xfff and setcode&scode==setcode then return true end end else return setcode&0xfff==c.material_setcode&0xfff and setcode&c.material_setcode==setcode end return false end function Auxiliary.IsMaterialListType(c,type) return c.material_type and type&c.material_type==type end function Auxiliary.GetMaterialListCount(c) if not c.material_count then return 0,0 end return c.material_count[1],c.material_count[2] end function Auxiliary.AddCodeList(c,...) if c:IsStatus(STATUS_COPYING_EFFECT) then return end if c.card_code_list==nil then local mt=getmetatable(c) mt.card_code_list={} for _,code in ipairs{...} do mt.card_code_list[code]=true end else for _,code in ipairs{...} do c.card_code_list[code]=true end end end function Auxiliary.IsCodeListed(c,code) return c.card_code_list and c.card_code_list[code] end function Auxiliary.AddSetNameMonsterList(c,...) if c:IsStatus(STATUS_COPYING_EFFECT) then return end if c.setcode_monster_list==nil then local mt=getmetatable(c) mt.setcode_monster_list={} for i,scode in ipairs{...} do mt.setcode_monster_list[i]=scode end else for i,scode in ipairs{...} do c.setcode_monster_list[i]=scode end end end function Auxiliary.IsSetNameMonsterListed(c,setcode) if not c.setcode_monster_list then return false end for i,scode in ipairs(c.setcode_monster_list) do if setcode&0xfff==scode&0xfff and setcode&scode==setcode then return true end end return false end function Auxiliary.IsCounterAdded(c,counter) if not c.counter_add_list then return false end for i,ccounter in ipairs(c.counter_add_list) do if counter==ccounter then return true end end return false end function Auxiliary.IsTypeInText(c,type) return c.has_text_type and type&c.has_text_type==type end function Auxiliary.GetAttributeCount(g) if #g==0 then return 0 end local att=0 for tc in Auxiliary.Next(g) do att=att|tc:GetAttribute() end local ct=0 while att~=0 do if att&0x1~=0 then ct=ct+1 end att=att>>1 end return ct end function Auxiliary.IsInGroup(c,g) return g:IsContains(c) end --return the column of card c (from the viewpoint of p) function Auxiliary.GetColumn(c,p) local seq=c:GetSequence() if c:IsLocation(LOCATION_MZONE) then if seq==5 then seq=1 elseif seq==6 then seq=3 end elseif c:IsLocation(LOCATION_SZONE) then if seq>4 then return nil end else return nil end if c:IsControler(p or 0) then return seq else return 4-seq end end --return the column of monster zone seq (from the viewpoint of controller) function Auxiliary.MZoneSequence(seq) if seq==5 then return 1 end if seq==6 then return 3 end return seq end --return the column of spell/trap zone seq (from the viewpoint of controller) function Auxiliary.SZoneSequence(seq) if seq>4 then return nil end return seq end --generate the value function of EFFECT_CHANGE_BATTLE_DAMAGE on monsters function Auxiliary.ChangeBattleDamage(player,value) return function(e,damp) if player==0 then if e:GetOwnerPlayer()==damp then return value else return -1 end elseif player==1 then if e:GetOwnerPlayer()==1-damp then return value else return -1 end end end end --filter for "negate the effects of a face-up monster" (無限泡影/Infinite Impermanence) function Auxiliary.NegateMonsterFilter(c) return c:IsFaceup() and not c:IsDisabled() and (c:IsType(TYPE_EFFECT) or c:GetOriginalType()&TYPE_EFFECT~=0) end --filter for "negate the effects of an Effect Monster" (エフェクト・ヴェーラー/Effect Veiler) function Auxiliary.NegateEffectMonsterFilter(c) return c:IsFaceup() and not c:IsDisabled() and c:IsType(TYPE_EFFECT) end --filter for "negate the effects of a face-up card" function Auxiliary.NegateAnyFilter(c) if c:IsType(TYPE_TRAPMONSTER) then return c:IsFaceup() elseif c:IsType(TYPE_SPELL+TYPE_TRAP) then return c:IsFaceup() and not c:IsDisabled() else return aux.NegateMonsterFilter(c) end end --alias for compatibility Auxiliary.disfilter1=Auxiliary.NegateAnyFilter --condition of EVENT_BATTLE_DESTROYING function Auxiliary.bdcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsRelateToBattle() end --condition of EVENT_BATTLE_DESTROYING + opponent monster function Auxiliary.bdocon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) end --condition of EVENT_BATTLE_DESTROYING + to_grave function Auxiliary.bdgcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local bc=c:GetBattleTarget() return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) end --condition of EVENT_BATTLE_DESTROYING + opponent monster + to_grave function Auxiliary.bdogcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local bc=c:GetBattleTarget() return c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER) end --condition of EVENT_DAMAGE_STEP_END + this monster is releate to battle function Auxiliary.dsercon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsRelateToBattle() or c:IsStatus(STATUS_BATTLE_DESTROYED) end --condition of EVENT_TO_GRAVE + destroyed by opponent function Auxiliary.dogcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsPreviousControler(tp) and c:IsReason(REASON_DESTROY) and rp==1-tp end --condition of EVENT_TO_GRAVE + destroyed by opponent + from field function Auxiliary.dogfcon(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() return c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsPreviousControler(tp) and c:IsReason(REASON_DESTROY) and rp==1-tp end --condition of "except the turn this card was sent to the Graveyard" function Auxiliary.exccon(e) return Duel.GetTurnCount()~=e:GetHandler():GetTurnID() or e:GetHandler():IsReason(REASON_RETURN) end --condition of checking battle phase availability function Auxiliary.bpcon(e,tp,eg,ep,ev,re,r,rp) return Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) end --condition of free chain effects changing ATK/DEF function Auxiliary.dscon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated() end --flag effect for spell counter function Auxiliary.chainreg(e,tp,eg,ep,ev,re,r,rp) if e:GetHandler():GetFlagEffect(1)==0 then e:GetHandler():RegisterFlagEffect(1,RESET_EVENT+RESETS_STANDARD-RESET_TURN_SET+RESET_CHAIN,0,1) end end --default filter for EFFECT_CANNOT_BE_BATTLE_TARGET function Auxiliary.imval1(e,c) return not c:IsImmuneToEffect(e) end --filter for EFFECT_INDESTRUCTABLE_EFFECT + self function Auxiliary.indsval(e,re,rp) return rp==e:GetHandlerPlayer() end --filter for EFFECT_INDESTRUCTABLE_EFFECT + opponent function Auxiliary.indoval(e,re,rp) return rp==1-e:GetHandlerPlayer() end --filter for EFFECT_CANNOT_BE_EFFECT_TARGET + self function Auxiliary.tgsval(e,re,rp) return rp==e:GetHandlerPlayer() end --filter for EFFECT_CANNOT_BE_EFFECT_TARGET + opponent function Auxiliary.tgoval(e,re,rp) return rp==1-e:GetHandlerPlayer() end --filter for non-zero ATK function Auxiliary.nzatk(c) return c:IsFaceup() and c:GetAttack()>0 end --filter for non-zero DEF function Auxiliary.nzdef(c) return c:IsFaceup() and c:GetDefense()>0 end --flag effect for summon/sp_summon turn function Auxiliary.sumreg(e,tp,eg,ep,ev,re,r,rp) local tc=eg:GetFirst() local code=e:GetLabel() while tc do if tc:GetOriginalCode()==code then tc:RegisterFlagEffect(code,RESET_EVENT+0x1ec0000+RESET_PHASE+PHASE_END,0,1) end tc=eg:GetNext() end end --for EVENT_BE_MATERIAL effect releated to the summoned monster function Auxiliary.CreateMaterialReasonCardRelation(c,te) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_BE_MATERIAL) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetOperation(Auxiliary.MaterialReasonCardReg) e1:SetLabelObject(te) c:RegisterEffect(e1) end function Auxiliary.MaterialReasonCardReg(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local te=e:GetLabelObject() c:GetReasonCard():CreateEffectRelation(te) end --sp_summon condition for fusion monster function Auxiliary.fuslimit(e,se,sp,st) return st&SUMMON_TYPE_FUSION==SUMMON_TYPE_FUSION end --sp_summon condition for ritual monster function Auxiliary.ritlimit(e,se,sp,st) return st&SUMMON_TYPE_RITUAL==SUMMON_TYPE_RITUAL end --sp_summon condition for synchro monster function Auxiliary.synlimit(e,se,sp,st) return st&SUMMON_TYPE_SYNCHRO==SUMMON_TYPE_SYNCHRO end --sp_summon condition for xyz monster function Auxiliary.xyzlimit(e,se,sp,st) return st&SUMMON_TYPE_XYZ==SUMMON_TYPE_XYZ end --sp_summon condition for pendulum monster function Auxiliary.penlimit(e,se,sp,st) return st&SUMMON_TYPE_PENDULUM==SUMMON_TYPE_PENDULUM end --sp_summon condition for link monster function Auxiliary.linklimit(e,se,sp,st) return st&SUMMON_TYPE_LINK==SUMMON_TYPE_LINK end --effects inflicting damage to tp function Auxiliary.damcon1(e,tp,eg,ep,ev,re,r,rp) local e1=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_DAMAGE) local e2=Duel.IsPlayerAffectedByEffect(tp,EFFECT_REVERSE_RECOVER) local rd=e1 and not e2 local rr=not e1 and e2 local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) if ex and (cp==tp or cp==PLAYER_ALL) and not rd and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) then return true end ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) return ex and (cp==tp or cp==PLAYER_ALL) and rr and not Duel.IsPlayerAffectedByEffect(tp,EFFECT_NO_EFFECT_DAMAGE) end --filter for the immune effect of qli monsters function Auxiliary.qlifilter(e,te) if te:IsActiveType(TYPE_MONSTER) and te:IsActivated() then local lv=e:GetHandler():GetLevel() local ec=te:GetOwner() if ec:IsType(TYPE_LINK) then return false elseif ec:IsType(TYPE_XYZ) then return ec:GetOriginalRank()<lv else return ec:GetOriginalLevel()<lv end else return false end end --sp_summon condition for gladiator beast monsters function Auxiliary.gbspcon(e,tp,eg,ep,ev,re,r,rp) local st=e:GetHandler():GetSummonType() return st&SUMMON_VALUE_GLADIATOR>0 end --sp_summon condition for evolsaur monsters function Auxiliary.evospcon(e,tp,eg,ep,ev,re,r,rp) local st=e:GetHandler():GetSummonType() return st&SUMMON_VALUE_EVOLTILE>0 end --filter for necro_valley test function Auxiliary.NecroValleyFilter(f) return function(target,...) return (not f or f(target,...)) and not target:IsHasEffect(EFFECT_NECRO_VALLEY) end end --Necrovalley test for effect with not certain target or not certain action function Auxiliary.NecroValleyNegateCheck(v) if not Duel.IsChainDisablable(0) then return false end local g=Group.CreateGroup() if Auxiliary.GetValueType(v)=="Card" then g:AddCard(v) end if Auxiliary.GetValueType(v)=="Group" then g:Merge(v) end if g:IsExists(Card.IsHasEffect,1,nil,EFFECT_NECRO_VALLEY) then Duel.NegateEffect(0) return true end return false end --Ursarctic common summon from hand effect function Auxiliary.AddUrsarcticSpSummonEffect(c) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_HAND) e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e1:SetCondition(Auxiliary.UrsarcticSpSummonCondition) e1:SetCost(Auxiliary.UrsarcticSpSummonCost) e1:SetTarget(Auxiliary.UrsarcticSpSummonTarget) e1:SetOperation(Auxiliary.UrsarcticSpSummonOperation) c:RegisterEffect(e1) return e1 end function Auxiliary.UrsarcticSpSummonCondition(e,tp,eg,ep,ev,re,r,rp) return Duel.GetCurrentPhase()==PHASE_MAIN1 or Duel.GetCurrentPhase()==PHASE_MAIN2 end function Auxiliary.UrsarcticReleaseFilter(c) return c:IsLevelAbove(7) and c:IsLocation(LOCATION_HAND) end function Auxiliary.UrsarcticExCostFilter(c,tp) return c:IsAbleToRemoveAsCost() and (c:IsHasEffect(16471775,tp) or c:IsHasEffect(89264428,tp)) end function Auxiliary.UrsarcticSpSummonCost(e,tp,eg,ep,ev,re,r,rp,chk) local g1=Duel.GetReleaseGroup(tp,true):Filter(Auxiliary.UrsarcticReleaseFilter,e:GetHandler()) local g2=Duel.GetMatchingGroup(Auxiliary.UrsarcticExCostFilter,tp,LOCATION_GRAVE,0,nil,tp) g1:Merge(g2) if chk==0 then return g1:GetCount()>0 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local tc=g1:Select(tp,1,1,nil):GetFirst() local te=tc:IsHasEffect(16471775,tp) or tc:IsHasEffect(89264428,tp) if te then te:UseCountLimit(tp) Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_REPLACE) else Duel.Release(tc,REASON_COST) end end function Auxiliary.UrsarcticSpSummonTarget(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function Auxiliary.UrsarcticSpSummonOperation(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if c:IsRelateToEffect(e) then Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) end local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetTargetRange(1,0) e1:SetTarget(Auxiliary.UrsarcticSpSummonLimit) e1:SetReset(RESET_PHASE+PHASE_END) Duel.RegisterEffect(e1,tp) end function Auxiliary.UrsarcticSpSummonLimit(e,c) return c:IsLevel(0) end --Drytron common summon effect function Auxiliary.AddDrytronSpSummonEffect(c,func) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_HAND+LOCATION_GRAVE) e1:SetCost(Auxiliary.DrytronSpSummonCost) e1:SetTarget(Auxiliary.DrytronSpSummonTarget) e1:SetOperation(Auxiliary.DrytronSpSummonOperation(func)) c:RegisterEffect(e1) Duel.AddCustomActivityCounter(97148796,ACTIVITY_SPSUMMON,Auxiliary.DrytronCounterFilter) return e1 end function Auxiliary.DrytronCounterFilter(c) return not c:IsSummonableCard() end function Auxiliary.DrytronCostFilter(c,tp) return (c:IsSetCard(0x154) or c:IsType(TYPE_RITUAL)) and c:IsType(TYPE_MONSTER) and Duel.GetMZoneCount(tp,c)>0 and (c:IsControler(tp) or c:IsFaceup()) end function Auxiliary.DrytronExtraCostFilter(c,tp) return c:IsAbleToRemove() and c:IsHasEffect(89771220,tp) end function Auxiliary.DrytronSpSummonCost(e,tp,eg,ep,ev,re,r,rp,chk) e:SetLabel(100) local g1=Duel.GetReleaseGroup(tp,true):Filter(Auxiliary.DrytronCostFilter,e:GetHandler(),tp) local g2=Duel.GetMatchingGroup(Auxiliary.DrytronExtraCostFilter,tp,LOCATION_GRAVE,0,nil,tp) g1:Merge(g2) if chk==0 then return #g1>0 and Duel.GetCustomActivityCount(97148796,tp,ACTIVITY_SPSUMMON)==0 end local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) e1:SetTargetRange(1,0) e1:SetTarget(Auxiliary.DrytronSpSummonLimit) e1:SetReset(RESET_PHASE+PHASE_END) Duel.RegisterEffect(e1,tp) --cant special summon summonable card check local e2=Effect.CreateEffect(e:GetHandler()) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(97148796) e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH) e2:SetTargetRange(1,0) e2:SetReset(RESET_PHASE+PHASE_END) Duel.RegisterEffect(e2,tp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local rg=g1:Select(tp,1,1,nil) local tc=rg:GetFirst() local te=tc:IsHasEffect(89771220,tp) if te then te:UseCountLimit(tp) Duel.Remove(tc,POS_FACEUP,REASON_EFFECT+REASON_REPLACE) else Auxiliary.UseExtraReleaseCount(rg,tp) Duel.Release(tc,REASON_COST) end end function Auxiliary.DrytronSpSummonLimit(e,c,sump,sumtype,sumpos,targetp,se) return c:IsSummonableCard() end function Auxiliary.DrytronSpSummonTarget(e,tp,eg,ep,ev,re,r,rp,chk) local res=e:GetLabel()==100 or Duel.GetLocationCount(tp,LOCATION_MZONE)>0 if chk==0 then e:SetLabel(0) return res and e:GetHandler():IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEUP_DEFENSE) end e:SetLabel(0) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0) end function Auxiliary.DrytronSpSummonOperation(func) return function(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not c:IsRelateToEffect(e) then return end if Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP_DEFENSE)~=0 then func(e,tp) end end end --additional destroy effect for the Labrynth field function Auxiliary.LabrynthDestroyOp(e,tp,res) local c=e:GetHandler() local chk=not c:IsStatus(STATUS_ACT_FROM_HAND) and c:IsSetCard(0x117e) and c:GetType()==TYPE_TRAP and e:IsHasType(EFFECT_TYPE_ACTIVATE) local exc=nil if c:IsStatus(STATUS_LEAVE_CONFIRMED) then exc=c end local te=Duel.IsPlayerAffectedByEffect(tp,33407125) if chk and te and Duel.IsExistingMatchingCard(nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,exc) and Duel.SelectYesNo(tp,aux.Stringid(33407125,0)) then if res>0 then Duel.BreakEffect() end Duel.Hint(HINT_CARD,0,33407125) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_DESTROY) local dg=Duel.SelectMatchingCard(tp,nil,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,exc) Duel.HintSelection(dg) Duel.Destroy(dg,REASON_EFFECT) te:UseCountLimit(tp) end end --shortcut for Gizmek cards function Auxiliary.AtkEqualsDef(c) if not c:IsType(TYPE_MONSTER) or c:IsType(TYPE_LINK) then return false end if c:GetAttack()~=c:GetDefense() then return false end return c:IsLocation(LOCATION_MZONE) or c:GetTextAttack()>=0 and c:GetTextDefense()>=0 end --shortcut for self-banish costs function Auxiliary.bfgcost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsAbleToRemoveAsCost() end Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST) end --check for cards with different names function Auxiliary.dncheck(g) return g:GetClassCount(Card.GetCode)==#g end --check for cards with different levels function Auxiliary.dlvcheck(g) return g:GetClassCount(Card.GetLevel)==#g end --check for cards with different ranks function Auxiliary.drkcheck(g) return g:GetClassCount(Card.GetRank)==#g end --check for cards with different links function Auxiliary.dlkcheck(g) return g:GetClassCount(Card.GetLink)==#g end --check for cards with different attributes function Auxiliary.dabcheck(g) return g:GetClassCount(Card.GetAttribute)==#g end --check for cards with different races function Auxiliary.drccheck(g) return g:GetClassCount(Card.GetRace)==#g end --check for group with 2 cards, each card match f with a1/a2 as argument function Auxiliary.gfcheck(g,f,a1,a2) if #g~=2 then return false end local c1=g:GetFirst() local c2=g:GetNext() return f(c1,a1) and f(c2,a2) or f(c2,a1) and f(c1,a2) end --check for group with 2 cards, each card match f1 with a1, f2 with a2 as argument function Auxiliary.gffcheck(g,f1,a1,f2,a2) if #g~=2 then return false end local c1=g:GetFirst() local c2=g:GetNext() return f1(c1,a1) and f2(c2,a2) or f1(c2,a1) and f2(c1,a2) end function Auxiliary.mzctcheck(g,tp) return Duel.GetMZoneCount(tp,g)>0 end function Auxiliary.mzctcheckrel(g,tp) return Duel.GetMZoneCount(tp,g)>0 and Duel.CheckReleaseGroup(tp,Auxiliary.IsInGroup,#g,nil,g) end --used for "except this card" function Auxiliary.ExceptThisCard(e) local c=e:GetHandler() if c:IsRelateToChain() then return c else return nil end end --used for multi-linked zone(zone linked by two or more link monsters) function Auxiliary.GetMultiLinkedZone(tp) local f=function(c) return c:IsFaceup() and c:IsType(TYPE_LINK) end local lg=Duel.GetMatchingGroup(f,tp,LOCATION_MZONE,LOCATION_MZONE,nil) local multi_linked_zone=0 local single_linked_zone=0 for tc in aux.Next(lg) do local zone=tc:GetLinkedZone(tp)&0x7f multi_linked_zone=single_linked_zone&zone|multi_linked_zone single_linked_zone=single_linked_zone~zone end return multi_linked_zone end Auxiliary.SubGroupCaptured=nil Auxiliary.GCheckAdditional=nil function Auxiliary.CheckGroupRecursive(c,sg,g,f,min,max,ext_params) sg:AddCard(c) if Auxiliary.GCheckAdditional and not Auxiliary.GCheckAdditional(sg,c,g,f,min,max,ext_params) then sg:RemoveCard(c) return false end local res=(#sg>=min and #sg<=max and f(sg,table.unpack(ext_params))) or (#sg<max and g:IsExists(Auxiliary.CheckGroupRecursive,1,sg,sg,g,f,min,max,ext_params)) sg:RemoveCard(c) return res end function Auxiliary.CheckGroupRecursiveCapture(c,sg,g,f,min,max,ext_params) sg:AddCard(c) if Auxiliary.GCheckAdditional and not Auxiliary.GCheckAdditional(sg,c,g,f,min,max,ext_params) then sg:RemoveCard(c) return false end local res=#sg>=min and #sg<=max and f(sg,table.unpack(ext_params)) if res then Auxiliary.SubGroupCaptured:Clear() Auxiliary.SubGroupCaptured:Merge(sg) else res=#sg<max and g:IsExists(Auxiliary.CheckGroupRecursiveCapture,1,sg,sg,g,f,min,max,ext_params) end sg:RemoveCard(c) return res end function Group.CheckSubGroup(g,f,min,max,...) local min=min or 1 local max=max or #g if min>max then return false end local ext_params={...} local sg=Duel.GrabSelectedCard() if #sg>max or #(g+sg)<min then return false end if #sg==max and (not f(sg,...) or Auxiliary.GCheckAdditional and not Auxiliary.GCheckAdditional(sg,nil,g,f,min,max,ext_params)) then return false end if #sg>=min and #sg<=max and f(sg,...) and (not Auxiliary.GCheckAdditional or Auxiliary.GCheckAdditional(sg,nil,g,f,min,max,ext_params)) then return true end local eg=g:Clone() for c in aux.Next(g-sg) do if Auxiliary.CheckGroupRecursive(c,sg,eg,f,min,max,ext_params) then return true end eg:RemoveCard(c) end return false end function Group.SelectSubGroup(g,tp,f,cancelable,min,max,...) Auxiliary.SubGroupCaptured=Group.CreateGroup() local min=min or 1 local max=max or #g local ext_params={...} local sg=Group.CreateGroup() local fg=Duel.GrabSelectedCard() if #fg>max or min>max or #(g+fg)<min then return nil end for tc in aux.Next(fg) do fg:SelectUnselect(sg,tp,false,false,min,max) end sg:Merge(fg) local finish=(#sg>=min and #sg<=max and f(sg,...)) while #sg<max do local cg=Group.CreateGroup() local eg=g:Clone() for c in aux.Next(g-sg) do if not cg:IsContains(c) then if Auxiliary.CheckGroupRecursiveCapture(c,sg,eg,f,min,max,ext_params) then cg:Merge(Auxiliary.SubGroupCaptured) else eg:RemoveCard(c) end end end cg:Sub(sg) finish=(#sg>=min and #sg<=max and f(sg,...)) if #cg==0 then break end local cancel=not finish and cancelable local tc=cg:SelectUnselect(sg,tp,finish,cancel,min,max) if not tc then break end if not fg:IsContains(tc) then if not sg:IsContains(tc) then sg:AddCard(tc) if #sg==max then finish=true end else sg:RemoveCard(tc) end elseif cancelable then return nil end end if finish then return sg else return nil end end function Auxiliary.CreateChecks(f,list) local checks={} for i=1,#list do checks[i]=function(c) return f(c,list[i]) end end return checks end function Auxiliary.CheckGroupRecursiveEach(c,sg,g,f,checks,ext_params) if not checks[1+#sg](c) then return false end sg:AddCard(c) if Auxiliary.GCheckAdditional and not Auxiliary.GCheckAdditional(sg,c,g,f,min,max,ext_params) then sg:RemoveCard(c) return false end local res if #sg==#checks then res=f(sg,table.unpack(ext_params)) else res=g:IsExists(Auxiliary.CheckGroupRecursiveEach,1,sg,sg,g,f,checks,ext_params) end sg:RemoveCard(c) return res end function Group.CheckSubGroupEach(g,checks,f,...) if f==nil then f=Auxiliary.TRUE end if #g<#checks then return false end local ext_params={...} local sg=Group.CreateGroup() return g:IsExists(Auxiliary.CheckGroupRecursiveEach,1,sg,sg,g,f,checks,ext_params) end function Group.SelectSubGroupEach(g,tp,checks,cancelable,f,...) if cancelable==nil then cancelable=false end if f==nil then f=Auxiliary.TRUE end local ct=#checks local ext_params={...} local sg=Group.CreateGroup() local finish=false while #sg<ct do local cg=g:Filter(Auxiliary.CheckGroupRecursiveEach,sg,sg,g,f,checks,ext_params) if #cg==0 then break end local tc=cg:SelectUnselect(sg,tp,false,cancelable,ct,ct) if not tc then break end if not sg:IsContains(tc) then sg:AddCard(tc) if #sg==ct then finish=true end else sg:Clear() end end if finish then return sg else return nil end end --condition of "negate activation and banish" function Auxiliary.nbcon(tp,re) local rc=re:GetHandler() return Duel.IsPlayerCanRemove(tp) and (not rc:IsRelateToEffect(re) or rc:IsAbleToRemove()) end function Auxiliary.nbtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return aux.nbcon(tp,re) end Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) if re:GetHandler():IsRelateToEffect(re) then Duel.SetOperationInfo(0,CATEGORY_REMOVE,eg,1,0,0) end if re:GetActivateLocation()==LOCATION_GRAVE then e:SetCategory(e:GetCategory()|CATEGORY_GRAVE_ACTION) else e:SetCategory(e:GetCategory()&~CATEGORY_GRAVE_ACTION) end end --condition of "negate activation and return to deck" function Auxiliary.ndcon(tp,re) local rc=re:GetHandler() return re:IsHasType(EFFECT_TYPE_ACTIVATE) or not rc:IsRelateToEffect(re) or rc:IsAbleToDeck() end --send to deck of contact fusion function Auxiliary.tdcfop(c) return function(g) local cg=g:Filter(Card.IsFacedown,nil) if cg:GetCount()>0 then Duel.ConfirmCards(1-c:GetControler(),cg) end Duel.SendtoDeck(g,nil,SEQ_DECKSHUFFLE,REASON_COST) end end --return the global index of the zone in (p,loc,seq) function Auxiliary.SequenceToGlobal(p,loc,seq) if p~=0 and p~=1 then return 0 end if loc==LOCATION_MZONE then if seq<=6 then return 0x0001<<(16*p+seq) else return 0 end elseif loc == LOCATION_SZONE then if seq<=4 then return 0x0100<<(16*p+seq) else return 0 end else return 0 end end --use the count limit of Lair of Darkness if the tributes are not selected by Duel.SelectReleaseGroup function Auxiliary.UseExtraReleaseCount(g,tp) local eg=g:Filter(Auxiliary.ExtraReleaseFilter,nil,tp) for ec in Auxiliary.Next(eg) do local te=ec:IsHasEffect(EFFECT_EXTRA_RELEASE_NONSUM,tp) if te then te:UseCountLimit(tp) end end end function Auxiliary.ExtraReleaseFilter(c,tp) return c:IsControler(1-tp) and c:IsHasEffect(EFFECT_EXTRA_RELEASE_NONSUM,tp) end function Auxiliary.IsSpecialSummonedByEffect(e) return not ((e:GetCode()==EFFECT_SPSUMMON_PROC or e:GetCode()==EFFECT_SPSUMMON_PROC_G) and e:GetProperty()&(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)==(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)) end -- function Auxiliary.GetCappedLevel(c) local lv=c:GetLevel() if lv>MAX_PARAMETER then return MAX_PARAMETER else return lv end end -- function Auxiliary.GetCappedAttack(c) local x=c:GetAttack() if x>MAX_PARAMETER then return MAX_PARAMETER else return x end end --when this card is sent to grave, record the reason effect --to check whether the reason effect do something simultaneously --so the "while this card is in your GY" condition isn't met function Auxiliary.AddThisCardInGraveAlreadyCheck(c) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_TO_GRAVE) e1:SetCondition(Auxiliary.ThisCardInGraveAlreadyCheckReg) c:RegisterEffect(e1) return e1 end function Auxiliary.ThisCardInGraveAlreadyCheckReg(e,tp,eg,ep,ev,re,r,rp) --condition of continous effect will be checked before other effects if re==nil then return false end if e:GetLabelObject()~=nil then return false end if (r&REASON_EFFECT)>0 then e:SetLabelObject(re) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_CHAIN_END) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetOperation(Auxiliary.ThisCardInGraveAlreadyReset1) e1:SetLabelObject(e) Duel.RegisterEffect(e1,tp) local e2=e1:Clone() e2:SetCode(EVENT_BREAK_EFFECT) e2:SetOperation(Auxiliary.ThisCardInGraveAlreadyReset2) e2:SetReset(RESET_CHAIN) e2:SetLabelObject(e1) Duel.RegisterEffect(e2,tp) elseif (r&REASON_MATERIAL)>0 or not re:IsActivated() and (r&REASON_COST)>0 then e:SetLabelObject(re) local reset_event=EVENT_SPSUMMON if re:GetCode()~=EFFECT_SPSUMMON_PROC then reset_event=EVENT_SUMMON end local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(reset_event) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetOperation(Auxiliary.ThisCardInGraveAlreadyReset1) e1:SetLabelObject(e) Duel.RegisterEffect(e1,tp) end return false end function Auxiliary.ThisCardInGraveAlreadyReset1(e) --this will run after EVENT_SPSUMMON_SUCCESS e:GetLabelObject():SetLabelObject(nil) e:Reset() end function Auxiliary.ThisCardInGraveAlreadyReset2(e) local e1=e:GetLabelObject() e1:GetLabelObject():SetLabelObject(nil) e1:Reset() e:Reset() end --Player p place g on the top of Deck in any order function Auxiliary.PlaceCardsOnDeckTop(p,g,reason) if reason==nil then reason=REASON_EFFECT end Duel.SendtoDeck(g,nil,SEQ_DECKTOP,reason) local rg=Duel.GetOperatedGroup() local og=rg:Filter(Card.IsLocation,nil,LOCATION_DECK) local ct1=og:FilterCount(Card.IsControler,nil,p) local ct2=og:FilterCount(Card.IsControler,nil,1-p) if ct1>1 then Duel.SortDecktop(p,p,ct1) end if ct2>1 then Duel.SortDecktop(p,1-p,ct2) end return #rg end --Player p place g on the bottom of Deck in any order function Auxiliary.PlaceCardsOnDeckBottom(p,g,reason) if reason==nil then reason=REASON_EFFECT end Duel.SendtoDeck(g,nil,SEQ_DECKTOP,reason) local rg=Duel.GetOperatedGroup() local og=rg:Filter(Card.IsLocation,nil,LOCATION_DECK) local ct1=og:FilterCount(Card.IsControler,nil,p) local ct2=og:FilterCount(Card.IsControler,nil,1-p) if ct1>0 then if ct1>1 then Duel.SortDecktop(p,p,ct1) end for i=1,ct1 do local tc=Duel.GetDecktopGroup(p,1):GetFirst() Duel.MoveSequence(tc,SEQ_DECKBOTTOM) end end if ct2>0 then if ct2>1 then Duel.SortDecktop(p,1-p,ct2) end for i=1,ct2 do local tc=Duel.GetDecktopGroup(1-p,1):GetFirst() Duel.MoveSequence(tc,SEQ_DECKBOTTOM) end end return #rg end --The event is triggered multiple times in a chain --but only 1 event with EVENT_CUSTOM+code will be triggered at EVENT_CHAIN_END, or immediately if not in chain --NOTE: re,r,rp,ep,ev of that custom event ARE NOT releated to the real event that trigger this custom event function Auxiliary.RegisterMergedDelayedEvent(c,code,event,g) local mt=getmetatable(c) if mt[event]==true then return end mt[event]=true if not g then g=Group.CreateGroup() end g:KeepAlive() local ge1=Effect.CreateEffect(c) ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) ge1:SetCode(event) ge1:SetLabel(code) ge1:SetLabelObject(g) ge1:SetOperation(Auxiliary.MergedDelayEventCheck1) Duel.RegisterEffect(ge1,0) local ge2=ge1:Clone() ge2:SetCode(EVENT_CHAIN_END) ge2:SetOperation(Auxiliary.MergedDelayEventCheck2) Duel.RegisterEffect(ge2,0) end function Auxiliary.MergedDelayEventCheck1(e,tp,eg,ep,ev,re,r,rp) local g=e:GetLabelObject() g:Merge(eg) if Duel.GetCurrentChain()==0 and not Duel.CheckEvent(EVENT_CHAIN_END) then local _eg=g:Clone() Duel.RaiseEvent(_eg,EVENT_CUSTOM+e:GetLabel(),re,r,rp,ep,ev) g:Clear() end end function Auxiliary.MergedDelayEventCheck2(e,tp,eg,ep,ev,re,r,rp) local g=e:GetLabelObject() if #g>0 then local _eg=g:Clone() Duel.RaiseEvent(_eg,EVENT_CUSTOM+e:GetLabel(),re,r,rp,ep,ev) g:Clear() end end |