├── .idea ├── .name ├── vcs.xml ├── .gitignore ├── WindbotTemplateGenerator.iml ├── misc.xml ├── modules.xml ├── libraries │ └── Maven__org_xerial_sqlite_jdbc_3_15_1.xml ├── compiler.xml └── jarRepositories.xml ├── Game └── AI │ └── Decks │ └── TempleteGenerator │ ├── .gitignore │ ├── UserFiles │ ├── decks │ │ └── ADD DECKS HERE │ ├── results │ │ └── EXPECT THE TEMPLETS TO APPEAR HERE │ └── cards.cdb │ ├── target │ └── classes │ │ ├── .gitignore │ │ ├── target │ │ └── classes │ │ │ ├── .gitignore │ │ │ ├── UserFiles │ │ │ └── cards.cdb │ │ │ ├── WindBotTempleteGenerator.iml │ │ │ ├── pom.xml │ │ │ ├── DragunityExecutor.ch │ │ │ └── NeosExecutor.cs │ │ ├── RunMe.class │ │ ├── Templete.class │ │ ├── Cards │ │ ├── YGOCard.class │ │ ├── YGODeck.class │ │ ├── CardTypes │ │ │ ├── DefaultCard.class │ │ │ ├── TrapOrSpell.class │ │ │ └── Monsters │ │ │ │ ├── LinkMonster.class │ │ │ │ ├── EffectMonster.class │ │ │ │ ├── NormalMonster.class │ │ │ │ ├── PureSpecialSummonMonster.class │ │ │ │ └── SpecialSummonableEffectMonster.class │ │ └── CardIdentifyer │ │ │ └── CDBParser.class │ │ ├── UserFiles │ │ └── cards.cdb │ │ ├── TempleteGenerator.class │ │ ├── WindBotTempleteGenerator.iml │ │ ├── pom.xml │ │ ├── DragunityExecutor.ch │ │ └── NeosExecutor.cs │ ├── RunMe.java │ ├── Cards │ ├── CardTypes │ │ ├── DefaultCard.java │ │ ├── TrapOrSpell.java │ │ └── Monsters │ │ │ ├── EffectMonster.java │ │ │ ├── LinkMonster.java │ │ │ ├── SpecialSummonableEffectMonster.java │ │ │ ├── NormalMonster.java │ │ │ └── PureSpecialSummonMonster.java │ ├── YGOCard.java │ ├── YGODeck.java │ └── CardIdentifyer │ │ └── CDBParser.java │ ├── WindBotTempleteGenerator.iml │ ├── pom.xml │ ├── Templete.java │ ├── TempleteGenerator.java │ ├── DragunityExecutor.ch │ └── NeosExecutor.cs ├── WindBot.iml ├── README.md └── .gitignore /.idea/.name: -------------------------------------------------------------------------------- 1 | WindBotTempleteGenerator -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/UserFiles/decks/ADD DECKS HERE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/.gitignore: -------------------------------------------------------------------------------- 1 | /UserFiles/results/ 2 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/UserFiles/results/EXPECT THE TEMPLETS TO APPEAR HERE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/target/classes/.gitignore: -------------------------------------------------------------------------------- 1 | /UserFiles/results/ 2 | -------------------------------------------------------------------------------- /WindBot.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/UserFiles/cards.cdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/UserFiles/cards.cdb -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/RunMe.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/RunMe.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Templete.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Templete.class -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/YGOCard.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/YGOCard.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/YGODeck.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/YGODeck.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/UserFiles/cards.cdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/UserFiles/cards.cdb -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/TempleteGenerator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/TempleteGenerator.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/DefaultCard.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/DefaultCard.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/TrapOrSpell.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/TrapOrSpell.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/target/classes/UserFiles/cards.cdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/target/classes/UserFiles/cards.cdb -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardIdentifyer/CDBParser.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardIdentifyer/CDBParser.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/RunMe.java: -------------------------------------------------------------------------------- 1 | public class RunMe { 2 | public static void main(String[] args) { 3 | TempleteGenerator generator = new TempleteGenerator(); 4 | generator.getParser().close(); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/LinkMonster.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/LinkMonster.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/EffectMonster.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/EffectMonster.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/NormalMonster.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/NormalMonster.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/PureSpecialSummonMonster.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/PureSpecialSummonMonster.class -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/SpecialSummonableEffectMonster.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Levyaton/WindbotTemplateGenerator/HEAD/Game/AI/Decks/TempleteGenerator/target/classes/Cards/CardTypes/Monsters/SpecialSummonableEffectMonster.class -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /../../../../../../:\Users\Levyaton\IdeaProjects\WindbotTemplateGenerator\.idea/dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /.idea/WindbotTemplateGenerator.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/DefaultCard.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes; 2 | 3 | import Cards.YGOCard; 4 | 5 | public class DefaultCard extends YGOCard { 6 | public DefaultCard(String name, int id) { 7 | super(name, id); 8 | } 9 | 10 | @Override 11 | public String generateAddExecutorMethods() { 12 | return ""; 13 | } 14 | 15 | @Override 16 | public String generateCardMethods() { 17 | return ""; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_xerial_sqlite_jdbc_3_15_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/TrapOrSpell.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes; 2 | 3 | import Cards.YGOCard; 4 | 5 | public class TrapOrSpell extends YGOCard { 6 | 7 | public TrapOrSpell(String name, int id) { 8 | super(name, id); 9 | } 10 | 11 | public String generateAddExecutorMethods() { 12 | String executors = 13 | this.generateSpellSetExecutor() + 14 | this.generateActivateExecutor(); 15 | return executors; 16 | } 17 | 18 | public String generateCardMethods() { 19 | String methods = 20 | this.generateSpellSetMethod() + 21 | this.generateActivateMethod(); 22 | return methods; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/Monsters/EffectMonster.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes.Monsters; 2 | 3 | public class EffectMonster extends NormalMonster{ 4 | public EffectMonster(String name, int id) { 5 | super(name, id); 6 | } 7 | 8 | @Override 9 | public String generateAddExecutorMethods() { 10 | String executors = 11 | super.generateAddExecutorMethods() + 12 | this.generateActivateExecutor(); 13 | return executors; 14 | } 15 | 16 | @Override 17 | public String generateCardMethods() { 18 | String methods = 19 | super.generateCardMethods() + 20 | this.generateActivateMethod(); 21 | return methods; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WindbotTemplateGenerator 2 | 3 | This is a simple template generator for WindBot AI Decks in YGOPro. It will pre-generate the needed methods for the cards you give it, saving you a bit of time. 4 | Simply download this repository, add the decks (with the suffix of .ydk) you want to generate templates for to the decks folder under UserFiles. Then go to the class called RunMe.java 5 | and run the main method. Your templates will be generated in the results folder. 6 | Also, the card databese the program uses is, or will be, outdated, so, if you need it to be more up to date, put the cards.cdb 7 | file from the extentions folder in ProjectIgnisis directory into the Cards folder of this program, and replace the one that is already there. 8 | Have fun, and get your game on! 9 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/Monsters/LinkMonster.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes.Monsters; 2 | 3 | import Cards.YGOCard; 4 | 5 | public class LinkMonster extends YGOCard { 6 | 7 | public LinkMonster(String name, int id) { 8 | super(name, id); 9 | } 10 | 11 | @Override 12 | public String generateAddExecutorMethods() { 13 | String executors = 14 | this.generateSpSummonExecutor() + 15 | this.generateActivateExecutor(); 16 | return executors; 17 | } 18 | 19 | @Override 20 | public String generateCardMethods() { 21 | String methods = 22 | this.generateSpSummonMethod() + 23 | this.generateActivateMethod(); 24 | return methods; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/Monsters/SpecialSummonableEffectMonster.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes.Monsters; 2 | 3 | public class SpecialSummonableEffectMonster extends EffectMonster{ 4 | 5 | public SpecialSummonableEffectMonster(String name, int id) { 6 | super(name, id); 7 | } 8 | 9 | @Override 10 | public String generateAddExecutorMethods() { 11 | String executors = 12 | super.generateAddExecutorMethods() + 13 | this.generateSpSummonExecutor(); 14 | return executors; 15 | } 16 | 17 | @Override 18 | public String generateCardMethods() { 19 | String executors = 20 | super.generateCardMethods() + 21 | this.generateSpSummonMethod(); 22 | return executors; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/WindBotTempleteGenerator.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/WindBotTempleteGenerator.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/Monsters/NormalMonster.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes.Monsters; 2 | 3 | import Cards.YGOCard; 4 | 5 | public class NormalMonster extends YGOCard { 6 | 7 | public NormalMonster(String name, int id) { 8 | super(name, id); 9 | } 10 | 11 | public String generateAddExecutorMethods() { 12 | String executors = 13 | this.generateSummonExecutor() + 14 | this.generateMonsterSetExecutor() + 15 | this.generateReposExecutor(); 16 | return executors; 17 | } 18 | 19 | public String generateCardMethods() { 20 | String methods = 21 | this.generateSummonMethod() + 22 | this.generateMonsterSetMethod() + 23 | this.generateReposMethod(); 24 | return methods; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/target/classes/WindBotTempleteGenerator.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardTypes/Monsters/PureSpecialSummonMonster.java: -------------------------------------------------------------------------------- 1 | package Cards.CardTypes.Monsters; 2 | 3 | import Cards.YGOCard; 4 | 5 | public class PureSpecialSummonMonster extends YGOCard { 6 | public PureSpecialSummonMonster(String name, int id) { 7 | super(name, id); 8 | } 9 | 10 | @Override 11 | public String generateAddExecutorMethods() { 12 | String executors = 13 | this.generateReposExecutor() + 14 | this.generateActivateExecutor() + 15 | this.generateSpSummonExecutor(); 16 | return executors; 17 | } 18 | 19 | @Override 20 | public String generateCardMethods() { 21 | String executors = 22 | this.generateReposMethod() + 23 | this.generateActivateMethod() + 24 | this.generateSpSummonMethod(); 25 | return executors; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | WindBotTempleteGenerator 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.apache.maven.plugins 14 | maven-compiler-plugin 15 | 16 | 8 17 | 8 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | org.xerial 26 | sqlite-jdbc 27 | 3.15.1 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | WindBotTempleteGenerator 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.apache.maven.plugins 14 | maven-compiler-plugin 15 | 16 | 8 17 | 8 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | org.xerial 26 | sqlite-jdbc 27 | 3.15.1 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/target/classes/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | WindBotTempleteGenerator 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.apache.maven.plugins 14 | maven-compiler-plugin 15 | 16 | 8 17 | 8 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | org.xerial 26 | sqlite-jdbc 27 | 3.15.1 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.sln.docstates 8 | .vs/ 9 | 10 | # Build results 11 | 12 | [Dd]ebug/ 13 | [Rr]elease/ 14 | x64/ 15 | build/ 16 | [Bb]in/ 17 | [Oo]bj/ 18 | output/ 19 | 20 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets 21 | !packages/*/build/ 22 | 23 | # MSTest test Results 24 | [Tt]est[Rr]esult*/ 25 | [Bb]uild[Ll]og.* 26 | 27 | *_i.c 28 | *_p.c 29 | *.ilk 30 | *.meta 31 | *.obj 32 | *.pch 33 | *.pdb 34 | *.pgc 35 | *.pgd 36 | *.rsp 37 | *.sbr 38 | *.tlb 39 | *.tli 40 | *.tlh 41 | *.tmp 42 | *.tmp_proj 43 | *.log 44 | *.vspscc 45 | *.vssscc 46 | .builds 47 | *.pidb 48 | *.log 49 | *.scc 50 | 51 | # Visual C++ cache files 52 | ipch/ 53 | *.aps 54 | *.ncb 55 | *.opensdf 56 | *.sdf 57 | *.cachefile 58 | 59 | # Visual Studio profiler 60 | *.psess 61 | *.vsp 62 | *.vspx 63 | 64 | # Guidance Automation Toolkit 65 | *.gpState 66 | 67 | # ReSharper is a .NET coding add-in 68 | _ReSharper*/ 69 | *.[Rr]e[Ss]harper 70 | 71 | # TeamCity is a build add-in 72 | _TeamCity* 73 | 74 | # DotCover is a Code Coverage Tool 75 | *.dotCover 76 | 77 | # NCrunch 78 | *.ncrunch* 79 | .*crunch*.local.xml 80 | 81 | # Installshield output folder 82 | [Ee]xpress/ 83 | 84 | # DocProject is a documentation generator add-in 85 | DocProject/buildhelp/ 86 | DocProject/Help/*.HxT 87 | DocProject/Help/*.HxC 88 | DocProject/Help/*.hhc 89 | DocProject/Help/*.hhk 90 | DocProject/Help/*.hhp 91 | DocProject/Help/Html2 92 | DocProject/Help/html 93 | 94 | # Click-Once directory 95 | publish/ 96 | 97 | # Publish Web Output 98 | *.Publish.xml 99 | 100 | # NuGet Packages Directory 101 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 102 | #packages/ 103 | 104 | # Windows Azure Build Output 105 | csx 106 | *.build.csdef 107 | 108 | # Windows Store app package directory 109 | AppPackages/ 110 | 111 | # Others 112 | sql/ 113 | *.Cache 114 | ClientBin/ 115 | [Ss]tyle[Cc]op.* 116 | ~$* 117 | *~ 118 | *.dbmdl 119 | *.[Pp]ublish.xml 120 | *.pfx 121 | *.publishsettings 122 | 123 | # RIA/Silverlight projects 124 | Generated_Code/ 125 | 126 | # Backup & report files from converting an old project file to a newer 127 | # Visual Studio version. Backup files are not needed, because we have git ;-) 128 | _UpgradeReport_Files/ 129 | Backup*/ 130 | UpgradeLog*.XML 131 | UpgradeLog*.htm 132 | 133 | # SQL Server files 134 | App_Data/*.mdf 135 | App_Data/*.ldf 136 | 137 | 138 | #LightSwitch generated files 139 | GeneratedArtifacts/ 140 | _Pvt_Extensions/ 141 | ModelManifest.xml 142 | 143 | # ========================= 144 | # Windows detritus 145 | # ========================= 146 | 147 | # Windows image file caches 148 | Thumbs.db 149 | ehthumbs.db 150 | 151 | # Folder config file 152 | Desktop.ini 153 | 154 | # Recycle Bin used on file shares 155 | $RECYCLE.BIN/ 156 | 157 | # Mac desktop service store files 158 | .DS_Store 159 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/YGOCard.java: -------------------------------------------------------------------------------- 1 | package Cards; 2 | 3 | public abstract class YGOCard { 4 | protected int id; 5 | protected String name; 6 | protected String spellSetMethodName; 7 | protected String activateMethodName; 8 | protected String monsterSetMethodName; 9 | protected String spSummonMethodName; 10 | protected String normalSummonMethodName; 11 | protected String reposMethodName; 12 | 13 | 14 | public YGOCard(String name, int id) { 15 | this.id = id; 16 | this.name = name; 17 | this.spellSetMethodName = this.name + "SpellSet"; 18 | this.activateMethodName = this.name + "Activate"; 19 | this.monsterSetMethodName = this.name + "MonsterSet"; 20 | this.spSummonMethodName = this.name + "SpSummon"; 21 | this.normalSummonMethodName = this.name + "NormalSummon"; 22 | this.reposMethodName = this.name + "Repos"; 23 | } 24 | 25 | public int getId() { 26 | return id; 27 | } 28 | 29 | public String getName() { 30 | return name; 31 | } 32 | 33 | public abstract String generateAddExecutorMethods(); 34 | public abstract String generateCardMethods(); 35 | 36 | protected String generateSpellSetExecutor(){ 37 | return generateExecutor("SpellSet", this.spellSetMethodName); 38 | } 39 | protected String generateSummonExecutor(){ 40 | return generateExecutor("Summon", this.normalSummonMethodName); 41 | } 42 | 43 | protected String generateMonsterSetExecutor(){ 44 | return generateExecutor("MonsterSet", this.monsterSetMethodName); 45 | } 46 | 47 | protected String generateSpSummonExecutor(){ 48 | return generateExecutor("SpSummon", this.spSummonMethodName); 49 | } 50 | 51 | protected String generateActivateExecutor(){ 52 | return generateExecutor("Activate", this.activateMethodName); 53 | } 54 | 55 | protected String generateReposExecutor(){ 56 | return generateExecutor("Repos", this.reposMethodName); 57 | } 58 | 59 | protected String generateSpellSetMethod(){ 60 | return generateMethod(spellSetMethodName); 61 | } 62 | protected String generateReposMethod(){ 63 | return generateMethod(reposMethodName); 64 | } 65 | protected String generateSummonMethod(){ 66 | return generateMethod(normalSummonMethodName); 67 | } 68 | protected String generateMonsterSetMethod(){ 69 | return generateMethod(monsterSetMethodName); 70 | } 71 | protected String generateSpSummonMethod(){ 72 | return generateMethod(spSummonMethodName); 73 | } 74 | protected String generateActivateMethod(){ 75 | return generateMethod(activateMethodName); 76 | } 77 | 78 | private String generateMethod(String methodName){ 79 | String method ="\n"+ 80 | " private bool " + methodName + "()\n" + 81 | " {\n\n" + 82 | " return "; 83 | if(methodName.equals(reposMethodName)){ 84 | method += "DefaultMonsterRepos;\n"; 85 | } 86 | else if(methodName.equals(spellSetMethodName)){ 87 | method += "DefaultSpellSet;\n"; 88 | } 89 | else { 90 | method += "true;\n"; 91 | } 92 | 93 | method += " }\n"; 94 | return method; 95 | } 96 | 97 | /* 98 | private bool CrystalWingSynchroDragonSummon() 99 | { 100 | return !Bot.HasInHand(CardId.AssaultModeActivate) 101 | && !Bot.HasInHand(CardId.AssaultBeast) 102 | && !Bot.HasInSpellZone(CardId.AssaultModeActivate); 103 | } */ 104 | 105 | public String generateExecutor(String executorType, String methodName){ 106 | return " AddExecutor(ExecutorType." + executorType + ", CardId." + this.name + ", " + methodName +");\n"; 107 | } 108 | 109 | public String generateInit(){ 110 | return " public const int " + this.name + " = " + this.id + ";\n"; 111 | } 112 | 113 | } 114 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/YGODeck.java: -------------------------------------------------------------------------------- 1 | package Cards; 2 | 3 | import Cards.CardTypes.DefaultCard; 4 | import Cards.CardTypes.Monsters.*; 5 | import Cards.CardTypes.TrapOrSpell; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class YGODeck { 11 | protected List defaultCards = new ArrayList<>(); 12 | protected List normalMonsters = new ArrayList<>(); 13 | protected List effectMonsters = new ArrayList<>(); 14 | protected List pureSpecialSummonMonsters = new ArrayList<>(); 15 | protected List specialSummonableEffectMonsters = new ArrayList<>(); 16 | protected List trapsAndSpells = new ArrayList<>(); 17 | protected List linkMonsters = new ArrayList<>(); 18 | String deckName = ""; 19 | String aiName = ""; 20 | 21 | public YGODeck(String deckName, String aiName, List linkMonsters, List defaultCards, List normalMonsters, List effectMonsters, List pureSpecialSummonMonsters, List specialSummonableEffectMonsters, List trapsAndSpells) { 22 | this.normalMonsters = normalMonsters; 23 | this.effectMonsters = effectMonsters; 24 | this.pureSpecialSummonMonsters = pureSpecialSummonMonsters; 25 | this.specialSummonableEffectMonsters = specialSummonableEffectMonsters; 26 | this.trapsAndSpells = trapsAndSpells; 27 | this.deckName = deckName; 28 | this.aiName = aiName; 29 | this.linkMonsters = linkMonsters; 30 | this.defaultCards = defaultCards; 31 | } 32 | 33 | public YGODeck() { 34 | 35 | } 36 | 37 | 38 | 39 | 40 | public List getNormalMonsters() { 41 | return normalMonsters; 42 | } 43 | 44 | public List getEffectMonsters() { 45 | return effectMonsters; 46 | } 47 | 48 | public List getPureSpecialSummonMonsters() { 49 | return pureSpecialSummonMonsters; 50 | } 51 | 52 | public List getSpecialSummonableEffectMonsters() { 53 | return specialSummonableEffectMonsters; 54 | } 55 | 56 | public List getTrapsAndSpells() { 57 | return trapsAndSpells; 58 | } 59 | 60 | public void setNormalMonsters(List normalMonsters) { 61 | this.normalMonsters = normalMonsters; 62 | } 63 | 64 | public void setEffectMonsters(List effectMonsters) { 65 | this.effectMonsters = effectMonsters; 66 | } 67 | 68 | public void setPureSpecialSummonMonsters(List pureSpecialSummonMonsters) { 69 | this.pureSpecialSummonMonsters = pureSpecialSummonMonsters; 70 | } 71 | 72 | public void setSpecialSummonableEffectMonsters(List specialSummonableEffectMonsters) { 73 | this.specialSummonableEffectMonsters = specialSummonableEffectMonsters; 74 | } 75 | 76 | public void setTrapsAndSpells(List trapsAndSpells) { 77 | this.trapsAndSpells = trapsAndSpells; 78 | } 79 | 80 | public String getDeckName() { 81 | return deckName; 82 | } 83 | 84 | public String getAiName() { 85 | return aiName; 86 | } 87 | 88 | public void setDeckName(String deckName) { 89 | this.deckName = deckName; 90 | } 91 | 92 | public void setAiName(String aiName) { 93 | this.aiName = aiName; 94 | } 95 | 96 | public void resetDeck(){ 97 | this.aiName = ""; 98 | this.deckName = ""; 99 | emptyDeck(); 100 | } 101 | 102 | public void resetDeck(String deckName, String aiName){ 103 | this.deckName = deckName; 104 | this.aiName = aiName; 105 | emptyDeck(); 106 | } 107 | 108 | public void emptyDeck(){ 109 | this.linkMonsters = new ArrayList<>(); 110 | this.defaultCards = new ArrayList<>(); 111 | this.normalMonsters = new ArrayList<>(); 112 | this.effectMonsters = new ArrayList<>(); 113 | this.pureSpecialSummonMonsters = new ArrayList<>(); 114 | this.specialSummonableEffectMonsters = new ArrayList<>(); 115 | this.trapsAndSpells = new ArrayList<>(); 116 | } 117 | 118 | public void setLinkMonsters(List linkMonsters) { 119 | this.linkMonsters = linkMonsters; 120 | } 121 | 122 | public void setDefaultCards(List defaultCards) { 123 | this.defaultCards = defaultCards; 124 | } 125 | 126 | public List getDefaultCards() { 127 | return defaultCards; 128 | } 129 | 130 | public List getLinkMonsters() { 131 | return linkMonsters; 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Templete.java: -------------------------------------------------------------------------------- 1 | import Cards.CardTypes.DefaultCard; 2 | import Cards.CardTypes.Monsters.*; 3 | import Cards.CardTypes.TrapOrSpell; 4 | import Cards.YGOCard; 5 | import Cards.YGODeck; 6 | 7 | import java.util.List; 8 | import java.util.function.Function; 9 | 10 | public class Templete { 11 | YGODeck deck; 12 | 13 | public Templete(String deckName, 14 | String aiName, 15 | List linkMonsters, 16 | List normalMonsters, 17 | List effectMonsters, 18 | List pureSpecialSummonMonsters, 19 | List specialSummonableEffectMonsters, 20 | List trapsAndSpells, 21 | List useless) { 22 | this.deck = new YGODeck(deckName,aiName,linkMonsters, useless,normalMonsters,effectMonsters,pureSpecialSummonMonsters,specialSummonableEffectMonsters,trapsAndSpells); 23 | } 24 | 25 | public Templete(YGODeck deck) { 26 | this.deck = deck; 27 | System.out.println("Number of normals: " + this.deck.getNormalMonsters()); 28 | System.out.println("Number of effectMonsters: " + this.deck.getEffectMonsters()); 29 | System.out.println("Number of pureSpecialSummonMonsters: " + this.deck.getPureSpecialSummonMonsters()); 30 | System.out.println("Number of specialSummonableEffectMonsters: " + this.deck.getSpecialSummonableEffectMonsters()); 31 | System.out.println("Number of trapsAndSpells: " + this.deck.getTrapsAndSpells()); 32 | System.out.println("Number of useless: " + this.deck.getDefaultCards()); 33 | } 34 | 35 | public String generateTemplate(){ 36 | String templete = 37 | "using System.Collections.Generic;\n" + 38 | "using WindBot;\n" + 39 | "using WindBot.Game;\n" + 40 | "using WindBot.Game.AI;\n" + 41 | "using YGOSharp.OCGWrapper.Enums;\n" + 42 | "namespace WindBot.Game.AI.Decks\n" + 43 | "{\n" + 44 | " \n" + 45 | " [Deck(\"" + this.deck.getDeckName() + "\", \"" + this.deck.getAiName() +"\")]\n" + 46 | " public class " + this.deck.getAiName() + "Executor: DefaultExecutor\n" + 47 | " {\n" + 48 | " public class CardId\n" + 49 | " {\n" + 50 | generateInit() + 51 | " }\n" + 52 | " public " + this.deck.getDeckName() + "Executor(GameAI ai, Duel duel)\n" + 53 | " : base(ai, duel)\n" + 54 | " {\n" + 55 | generateExecutors() + 56 | " }\n" + 57 | generateMethods() + 58 | " }\n" + 59 | "}"; 60 | 61 | 62 | return templete; 63 | 64 | } 65 | 66 | private String generateExecutors(){ 67 | StringBuilder cardInit = new StringBuilder(); 68 | cardInit.append(" // Add Executors to all normal monsters\n"); 69 | cardInit.append(generateExecutors(this.deck.getNormalMonsters())); 70 | cardInit.append(" // Add Executors to all effect monsters\n"); 71 | cardInit.append(generateExecutors(this.deck.getEffectMonsters())); 72 | cardInit.append(" // Add Executors to all special summonable effect monsters\n"); 73 | cardInit.append(generateExecutors(this.deck.getSpecialSummonableEffectMonsters())); 74 | cardInit.append(" // Add Executors to all pure special summonable effect monsters\n"); 75 | cardInit.append(generateExecutors(this.deck.getPureSpecialSummonMonsters())); 76 | cardInit.append(" // Add Executors to all Link monsters\n"); 77 | cardInit.append(generateExecutors(this.deck.getLinkMonsters())); 78 | cardInit.append(" // Add Executors to all spell and trap cards\n"); 79 | cardInit.append(generateExecutors(this.deck.getTrapsAndSpells())); 80 | cardInit.append("\n"); 81 | return cardInit.toString(); 82 | } 83 | private String generateInit(){ 84 | StringBuilder cardInit = new StringBuilder(); 85 | cardInit.append(" // Initialize all normal monsters\n"); 86 | cardInit.append(generateInit(this.deck.getNormalMonsters())); 87 | cardInit.append(" // Initialize all effect monsters\n"); 88 | cardInit.append(generateInit(this.deck.getEffectMonsters())); 89 | cardInit.append(" // Initialize all special summonable effect monsters\n"); 90 | cardInit.append(generateInit(this.deck.getSpecialSummonableEffectMonsters())); 91 | cardInit.append(" // Initialize all pure special summonable effect monsters\n"); 92 | cardInit.append(generateInit(this.deck.getPureSpecialSummonMonsters())); 93 | cardInit.append(" // Initialize all link monsters\n"); 94 | cardInit.append(generateInit(this.deck.getLinkMonsters())); 95 | cardInit.append(" // Initialize all spell and trap cards\n"); 96 | cardInit.append(generateInit(this.deck.getTrapsAndSpells())); 97 | cardInit.append(" // Initialize all useless cards\n"); 98 | cardInit.append(generateInit(deck.getDefaultCards())); 99 | cardInit.append("\n"); 100 | return cardInit.toString(); 101 | } 102 | 103 | private String generateMethods(){ 104 | StringBuilder cardInit = new StringBuilder(); 105 | cardInit.append("\n // All Normal Monster Methods\n"); 106 | cardInit.append(generateMethods(this.deck.getNormalMonsters())); 107 | cardInit.append("\n // All Effect Monster Methods\n"); 108 | cardInit.append(generateMethods(this.deck.getEffectMonsters())); 109 | cardInit.append("\n // All Special Summonable Effect Monster Methods\n"); 110 | cardInit.append(generateMethods(this.deck.getSpecialSummonableEffectMonsters())); 111 | cardInit.append("\n // All Pure Special Summonable Effect Monster Methods\n"); 112 | cardInit.append(generateMethods(this.deck.getPureSpecialSummonMonsters())); 113 | cardInit.append("\n // All Link Monster Methods\n"); 114 | cardInit.append(generateMethods(this.deck.getLinkMonsters())); 115 | cardInit.append("\n // All Spell and Trap Card Methods\n"); 116 | cardInit.append(generateMethods(this.deck.getTrapsAndSpells())); 117 | cardInit.append("\n"); 118 | return cardInit.toString(); 119 | } 120 | private String generateInit(List cards){ 121 | Function lambda = YGOCard::generateInit; 122 | return generalGenerator(lambda,cards); 123 | } 124 | 125 | private String generateExecutors(List cards){ 126 | Function lambda = YGOCard::generateAddExecutorMethods; 127 | return generalGenerator(lambda,cards); 128 | } 129 | 130 | private String generateMethods(List cards){ 131 | Function lambda = YGOCard::generateCardMethods; 132 | return generalGenerator(lambda,cards); 133 | } 134 | 135 | private String generalGenerator(Function lambda, List cards){ 136 | StringBuilder cardInit = new StringBuilder(); 137 | //System.out.println("Number of entities is " + cards.size()); 138 | for (YGOCard card : cards){ 139 | // cardInit.append("\n // Create all methods needed for ").append(card.getName()).append(" to work\n"); 140 | cardInit.append(lambda.apply(card)); 141 | } 142 | return cardInit.toString(); 143 | } 144 | 145 | } 146 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/Cards/CardIdentifyer/CDBParser.java: -------------------------------------------------------------------------------- 1 | package Cards.CardIdentifyer; 2 | 3 | import Cards.CardTypes.DefaultCard; 4 | import Cards.CardTypes.Monsters.*; 5 | import Cards.CardTypes.TrapOrSpell; 6 | import Cards.YGODeck; 7 | 8 | import java.sql.*; 9 | import java.util.Arrays; 10 | import java.util.List; 11 | 12 | import static java.lang.System.exit; 13 | 14 | public class CDBParser extends YGODeck{ 15 | private String cdbPath; 16 | private Connection connection; 17 | 18 | public CDBParser(String cdbPath){ 19 | this.cdbPath = cdbPath; 20 | try 21 | { 22 | // create a database connection 23 | connection = DriverManager.getConnection("jdbc:sqlite:" + cdbPath); 24 | Statement statement = connection.createStatement(); 25 | statement.setQueryTimeout(60); // set timeout to 30 sec. 26 | 27 | ResultSet rs = statement.executeQuery( 28 | "SELECT name, datas.id, texts.desc, texts.str1, datas.attribute, datas.category, datas.type, datas.race " + 29 | "From texts " + 30 | "inner join datas on datas.id = texts.id"); 31 | 32 | } 33 | catch(SQLException e) 34 | { 35 | // if the error message is "out of memory", 36 | // it probably means no database file is found 37 | System.err.println(e.getMessage()); 38 | } 39 | } 40 | 41 | public void addCard(int cardId) throws SQLException { 42 | 43 | String specialChars = "[^a-zA-Z0-9]"; 44 | ResultSet rs = getQuerry(cardId); 45 | String cardName = rs.getString("name"); 46 | cardName = cardName.replaceAll(specialChars, ""); 47 | int type = rs.getInt("type"); 48 | byte set = rs.getByte("type"); 49 | String str1 = ""; 50 | if(isThere(rs,"str1")){ 51 | str1 = rs.getString("str1"); 52 | } 53 | System.out.println("Adding " + cardName); 54 | addCard(type,cardName,cardId,str1); 55 | } 56 | 57 | private boolean isThere(ResultSet rs, String column){ 58 | try{ 59 | rs.findColumn(column); 60 | return true; 61 | } catch (SQLException sqlex){ 62 | 63 | } 64 | 65 | return false; 66 | } 67 | 68 | public void addDefaultCard(int cardId) { 69 | String specialChars = "[^a-zA-Z0-9]"; 70 | try{ 71 | ResultSet rs = getQuerry(cardId); 72 | System.out.println(cardId); 73 | String cardName = rs.getString("name"); 74 | cardName = cardName.replaceAll(specialChars, ""); 75 | int type = rs.getInt("type"); 76 | String str1 = ""; 77 | 78 | if(isThere(rs,"str1")){ 79 | str1 = rs.getString("str1"); 80 | } 81 | this.defaultCards.add(new DefaultCard(cardName,cardId)); 82 | System.out.println("My traps and spells are " + this.trapsAndSpells); 83 | } 84 | catch (Exception e){ 85 | System.out.println(e); 86 | exit(0); 87 | } 88 | 89 | } 90 | 91 | public DefaultCard getCard(int cardId) throws SQLException { 92 | String specialChars = "[^a-zA-Z0-9]"; 93 | ResultSet rs = getQuerry(cardId); 94 | String cardName = rs.getString("name"); 95 | cardName = cardName.replaceAll("[^a-zA-Z0-9]", ""); 96 | int type = rs.getInt("type"); 97 | String str1 = ""; 98 | if(isThere(rs,"str1")){ 99 | str1 = rs.getString("str1"); 100 | } 101 | return new DefaultCard(cardName,cardId); 102 | } 103 | 104 | public void close(){ 105 | if(connection != null) { 106 | try { 107 | connection.close(); 108 | } catch (SQLException e) { 109 | e.printStackTrace(); 110 | } 111 | } 112 | } 113 | 114 | public ResultSet getQuerry(int cardId) throws SQLException { 115 | ResultSet rs = null; 116 | String querry = 117 | "SELECT texts.name, datas.id, texts.desc, ot, alias, setcode, type, atk, def, level, race, attribute, category " + 118 | "From texts inner join datas on datas.id = texts.id " + 119 | "where datas.id = " + cardId; 120 | 121 | Statement s = connection.createStatement(); 122 | rs = s.executeQuery(querry); 123 | return rs; 124 | } 125 | 126 | private void addCard(int code, String name, int id, String str1){ 127 | String hexCode = Integer.toHexString(code); 128 | // System.out.println("Test HEXCODE " + hexCode); 129 | String normalHex = "11"; 130 | String effectHex = "21"; 131 | String spellHex = "2"; 132 | String trapHex = "4"; 133 | String linkMonsterHex = "4000000"; 134 | 135 | 136 | System.out.println(hexCode); 137 | if((hasSameIndex(hexCode,spellHex,1)) || (hasSameIndex(hexCode,trapHex,1))){ 138 | this.trapsAndSpells.add(new TrapOrSpell(name,id)); 139 | } 140 | else if((hexCode.length() > 1) && (hasSameIndex(hexCode,normalHex,2))){ 141 | this.normalMonsters.add(new NormalMonster(name,id)); 142 | } 143 | else if((hexCode.length() > 1 ) && (hasSameIndex(hexCode, effectHex, 2))){ 144 | { 145 | if(str1.contains("Special Summon")){ 146 | this.specialSummonableEffectMonsters.add(new SpecialSummonableEffectMonster(name,id)); 147 | } 148 | else { 149 | this.effectMonsters.add(new EffectMonster(name,id)); 150 | } 151 | } 152 | 153 | } 154 | else if(isExtradeck(hexCode)){ 155 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster(name,id)); 156 | } 157 | else if((hasSameStartIndex(hexCode,linkMonsterHex,1)) && (isSameLenght(hexCode, linkMonsterHex))){ 158 | this.linkMonsters.add(new LinkMonster(name,id)); 159 | } 160 | else{ 161 | System.out.println("Couldn't identify card type: " + hexCode); 162 | System.out.println("for card: " + id); 163 | 164 | this.defaultCards.add(new DefaultCard(name, id)); 165 | } 166 | 167 | 168 | } 169 | 170 | private boolean hasSameIndex(String hexcode, String categoryCode, int numberOfLastChars){ 171 | // System.out.println(hexcode.length() - numberOfLastChars); 172 | // System.out.println("The index string is " + hexcode.substring(hexcode.length() - numberOfLastChars)); 173 | // System.out.println("Tested against " + categoryCode); 174 | //System.out.println("Is it the same? " + (hexcode.substring(hexcode.length() - numberOfLastChars).equals(categoryCode))); 175 | return (hexcode.substring(hexcode.length() - numberOfLastChars).equals(categoryCode)); 176 | } 177 | private boolean isSameLenght(String hexcode, String categoryCode){ 178 | return (hexcode.length() == categoryCode.length()); 179 | } 180 | 181 | private boolean hasSameStartIndex(String hexcode, String categoryCode, int numberOfFirstChars){ 182 | System.out.println(hexcode); 183 | return (hexcode.substring(0, numberOfFirstChars).equals(categoryCode)); 184 | } 185 | private boolean isExtradeck(String hexcode){ 186 | List extraDeckHex = Arrays.asList("61","41", "81", "a1", "2000","800000", "1800000", "1002000"); 187 | return (((hexcode.length() > 1) && (hasSameIndex(hexcode, extraDeckHex.get(0),2))) || 188 | ((hexcode.length() > 1) && (hasSameIndex(hexcode, extraDeckHex.get(1),2))) || 189 | ((hexcode.length() > 1) && (hasSameIndex(hexcode, extraDeckHex.get(2),2))) || 190 | ((hexcode.length() > 1) && (hasSameIndex(hexcode, extraDeckHex.get(3),2))) || 191 | ( 192 | (hasSameStartIndex(hexcode,extraDeckHex.get(4), 1)) 193 | && 194 | (isSameLenght(hexcode, extraDeckHex.get(4))) 195 | ) || 196 | ( 197 | (hasSameStartIndex(hexcode,extraDeckHex.get(5), 1)) 198 | && 199 | (isSameLenght(hexcode, extraDeckHex.get(5))) 200 | ) || 201 | ( 202 | ((hexcode.length() > 1) && (hasSameStartIndex(hexcode,extraDeckHex.get(6),2))) 203 | && 204 | (isSameLenght(hexcode, extraDeckHex.get(6))) 205 | ) || 206 | ( 207 | ((hexcode.length() > 3 ) && (hasSameStartIndex(hexcode,extraDeckHex.get(7),4))) 208 | && 209 | (isSameLenght(hexcode, extraDeckHex.get(7))) 210 | )); 211 | } 212 | 213 | public YGODeck getYGODeck(){ 214 | System.out.println("My traps and spells are now " + trapsAndSpells); 215 | YGODeck deck = new YGODeck("", "", this.linkMonsters, this.defaultCards, this.normalMonsters,this.effectMonsters,this.pureSpecialSummonMonsters,this.specialSummonableEffectMonsters,this.trapsAndSpells); 216 | this.resetDeck(); 217 | return deck; 218 | } 219 | 220 | 221 | } 222 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/TempleteGenerator.java: -------------------------------------------------------------------------------- 1 | import Cards.CardIdentifyer.CDBParser; 2 | import Cards.CardTypes.DefaultCard; 3 | import Cards.CardTypes.Monsters.*; 4 | import Cards.CardTypes.TrapOrSpell; 5 | import Cards.YGODeck; 6 | 7 | import java.io.*; 8 | import java.sql.SQLException; 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | import java.util.Objects; 12 | 13 | 14 | public class TempleteGenerator { 15 | 16 | static String filePath = "Game/AI/Decks/TempleteGenerator/UserFiles/results/";// CHANGE THIS PATH TO WHERE YOU WANT THE FILE TO OUTPUT TO 17 | List defaultCards = new ArrayList<>(); 18 | List linkMonsters = new ArrayList<>(); 19 | List normalMonsters = new ArrayList<>(); 20 | List effectMonsters = new ArrayList<>(); 21 | List pureSpecialSummonMonsters = new ArrayList<>(); 22 | List specialSummonableEffectMonsters = new ArrayList<>(); 23 | List trapsAndSpells = new ArrayList<>(); 24 | String deckName; 25 | String aiName; 26 | CDBParser parser; 27 | 28 | public TempleteGenerator(String deckName, String aiName) { 29 | try { 30 | Class.forName("org.sqlite.JDBC"); 31 | String cdbPath = "src/main/java/UserFiles/cards.cdb"; 32 | addDefaultCards(); 33 | this.deckName = deckName; 34 | this.aiName = aiName; 35 | String path = filePath + deckName + "Executor.cs"; 36 | parser = new CDBParser(cdbPath); 37 | generate(path); 38 | } catch (ClassNotFoundException e) { 39 | e.printStackTrace(); 40 | } 41 | 42 | 43 | } 44 | 45 | 46 | public TempleteGenerator() { 47 | try { 48 | Class.forName("org.sqlite.JDBC"); 49 | String cdbPath = "Game/AI/Decks/TempleteGenerator/UserFiles/cards.cdb"; 50 | parser = new CDBParser(cdbPath); 51 | generateAiTempletes(); 52 | } catch (ClassNotFoundException e) { 53 | e.printStackTrace(); 54 | } 55 | 56 | 57 | } 58 | 59 | 60 | 61 | 62 | private void addNormalMonsters(){ 63 | this.normalMonsters.add(new NormalMonster("ElementalHERONeos",89943723)); 64 | } 65 | 66 | // Effect monsters that can't be special summoned through their own effect (e.g. most effect monsters) 67 | private void addEffectMonsters(){ 68 | /* 69 | this.effectMonsters.add(new EffectMonster("ElementalHEROHonestNeos", 14124483)); 70 | this.effectMonsters.add(new EffectMonster("ElementalHERONeosAlius", 69884162)); 71 | this.effectMonsters.add(new EffectMonster("NeoSpacePathFinder", 19594506)); 72 | this.effectMonsters.add(new EffectMonster("ElementalHEROStratos", 40044918)); 73 | this.effectMonsters.add(new EffectMonster("ElementalHEROPrisma", 89312388)); 74 | this.effectMonsters.add(new EffectMonster("ElementalHEROBlazeman", 63060238)); 75 | this.effectMonsters.add(new EffectMonster("NeoSpaceConnector", 85840608)); 76 | this.effectMonsters.add(new EffectMonster("NeoSpacienGrandMole", 80344569)); 77 | this.effectMonsters.add(new EffectMonster("NeoSpacianAirHummingbird", 54959865)); 78 | this.effectMonsters.add(new EffectMonster("NeoSpacianAquaDolphin", 17955766)); 79 | this.effectMonsters.add(new EffectMonster("NeoSpacianFlareScarab", 89621922)); 80 | */ 81 | } 82 | 83 | // Monsters that cannot be normal summoned (e.g. Extra Deck Monsters) 84 | private void addPureSpecialSummonMonsters(){ 85 | /* 86 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHEROStormNeos", 49352945)); 87 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroMagmaNeos", 78512663)); 88 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroAirNeos", 11502550)); 89 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroGrandNeos", 48996569)); 90 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroAquaNeos", 55171412)); 91 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroBraveNeos", 64655485)); 92 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroFlareNeos", 81566151)); 93 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroSunrise", 22908820)); 94 | this.pureSpecialSummonMonsters.add(new PureSpecialSummonMonster("ElementalHeroNeosKnight", 72926163)); 95 | 96 | */ 97 | } 98 | 99 | // Monsters that can be normal or special summoned 100 | private void addSpecialSummonableEffectMonsters(){ 101 | 102 | } 103 | 104 | private void addTrapsAndSpells(){ 105 | /* 106 | this.trapsAndSpells.add(new TrapOrSpell("MonsterReborn", 83764718)); 107 | this.trapsAndSpells.add(new TrapOrSpell("NeosFusion", 14088859)); 108 | this.trapsAndSpells.add(new TrapOrSpell("Polymerization", 24094653)); 109 | this.trapsAndSpells.add(new TrapOrSpell("MiracleContact", 35255456)); 110 | this.trapsAndSpells.add(new TrapOrSpell("InstantNeoSpace", 11913700)); 111 | this.trapsAndSpells.add(new TrapOrSpell("NeoSpace", 42015635)); 112 | this.trapsAndSpells.add(new TrapOrSpell("DrowningMirrorForce", 47475363)); 113 | this.trapsAndSpells.add(new TrapOrSpell("NEXT", 74414885)); 114 | this.trapsAndSpells.add(new TrapOrSpell("CallOfTheHaunted", 97077563)); 115 | 116 | */ 117 | } 118 | 119 | 120 | 121 | // For when you want to check monsters you don't own, or just have them defined for some reason 122 | private void addDefaultCards(){ 123 | /* 124 | try { 125 | this.defaultCards.add(parser.getCard(14558127)); 126 | this.defaultCards.add(parser.getCard(62015408)); 127 | this.defaultCards.add(parser.getCard(38814750)); 128 | this.defaultCards.add(parser.getCard(94145021)); 129 | this.defaultCards.add(parser.getCard(34267821)); 130 | this.defaultCards.add(parser.getCard(59438930)); 131 | this.defaultCards.add(parser.getCard(27204311)); 132 | this.defaultCards.add(parser.getCard(97268402)); 133 | this.defaultCards.add(parser.getCard(24508238)); 134 | this.defaultCards.add(parser.getCard(37742478)); 135 | this.defaultCards.add(parser.getCard(877036)); 136 | this.defaultCards.add(parser.getCard(44330098)); 137 | } catch (SQLException e) { 138 | e.printStackTrace(); 139 | } 140 | */ 141 | } 142 | 143 | public void generate(String filePath){ 144 | 145 | try { 146 | File file = new File(filePath); 147 | file.createNewFile(); 148 | FileWriter output = new FileWriter(file); 149 | String generatedtemplete = 150 | new Templete( 151 | this.deckName, 152 | this.aiName, 153 | this.linkMonsters, 154 | this.normalMonsters, 155 | this.effectMonsters, 156 | this.pureSpecialSummonMonsters, 157 | this.specialSummonableEffectMonsters, 158 | this.trapsAndSpells, 159 | this.defaultCards 160 | ).generateTemplate(); 161 | output.write(generatedtemplete); 162 | output.close(); 163 | } catch (IOException e) { 164 | System.out.println("Failed"); 165 | e.printStackTrace(); 166 | } 167 | 168 | } 169 | public void generate(YGODeck deck){ 170 | 171 | try { 172 | String path = filePath + deck.getDeckName().replaceAll(" ", "") + "Executor.cs"; 173 | File file = new File(path); 174 | file.createNewFile(); 175 | FileWriter output = new FileWriter(file); 176 | String generatedtemplete = 177 | new Templete(deck).generateTemplate(); 178 | output.write(generatedtemplete); 179 | output.close(); 180 | } catch (IOException e) { 181 | System.out.println("Failed"); 182 | e.printStackTrace(); 183 | } 184 | 185 | } 186 | 187 | private List decklist(File file) throws IOException { 188 | 189 | BufferedReader reader = new BufferedReader(new FileReader(file)); 190 | List ids = new ArrayList<>(); 191 | int lineCounter = 0; 192 | String line = reader.readLine(); 193 | line = reader.readLine(); 194 | line = reader.readLine(); 195 | while (line != null && !line.contains("!side")){ 196 | 197 | if(line.contains("!default")){ 198 | ids.add(0); 199 | line = reader.readLine(); 200 | } 201 | else if(line.contains("#extra")) { 202 | line = reader.readLine(); 203 | } 204 | else{ 205 | 206 | line = line.replaceAll(" ", ""); 207 | line = line.replaceAll("\n", ""); 208 | try{ 209 | int id = Integer.parseInt(line); 210 | if(!ids.contains(id)){ 211 | ids.add(id); 212 | } 213 | } 214 | catch (Exception e){ 215 | e.printStackTrace(); 216 | } 217 | 218 | line = reader.readLine(); 219 | } 220 | 221 | } 222 | reader.close(); 223 | return ids; 224 | } 225 | 226 | 227 | private YGODeck getYGODeck(File file){ 228 | YGODeck deck = new YGODeck(); 229 | try { 230 | List ids = decklist(file); 231 | if(ids.contains(0)){ 232 | for (int x = 0; x < ids.get(0); x++){ 233 | System.out.println(x); 234 | parser.addCard(ids.get(x)); 235 | } 236 | for (int y = ids.get(0) + 1; y < ids.size(); y++){ 237 | System.out.println(y); 238 | parser.addDefaultCard(ids.get(y)); 239 | } 240 | System.out.println("Got here"); 241 | } 242 | else{ 243 | for(int id: ids){ 244 | parser.addCard(id); 245 | } 246 | } 247 | 248 | 249 | deck = parser.getYGODeck(); 250 | System.out.println( "Printing traps :" + deck.getTrapsAndSpells()); 251 | String name = file.getName().replaceAll(".ydk", ""); 252 | name = name.replaceAll( "[^a-zA-Z0-9]",""); 253 | name = name.replaceAll("!",""); 254 | deck.setAiName(name); 255 | name += "Executor.cs"; 256 | deck.setDeckName(name); 257 | 258 | } catch (IOException | SQLException e) { 259 | e.printStackTrace(); 260 | } 261 | return deck; 262 | } 263 | 264 | public void generateAiTempletes(){ 265 | File folder = new File("Game/AI/Decks/TempleteGenerator/UserFiles/decks/"); 266 | for(File f: Objects.requireNonNull(folder.listFiles())){ 267 | if(f.getName().contains(".ydk")){ 268 | 269 | generateAiTemplete(f); 270 | } 271 | } 272 | } 273 | 274 | public void generateAiTemplete(File f){ 275 | 276 | YGODeck deck = getYGODeck(f); 277 | String name = f.getName().replaceAll(".ydk", ""); 278 | deck.setDeckName(name); 279 | 280 | generate(deck); 281 | } 282 | 283 | 284 | public CDBParser getParser() { 285 | return parser; 286 | } 287 | 288 | /* 289 | Extra cards for neos 290 | !default 291 | 14558127 292 | 62015408 293 | 38814750 294 | 94145021 295 | 34267821 296 | 59438930 297 | 27204311 298 | 97268402 299 | 24508238 300 | 37742478 301 | 98777036 302 | 44330098 303 | */ 304 | } 305 | -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/DragunityExecutor.ch: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using WindBot; 3 | using WindBot.Game; 4 | using WindBot.Game.AI; 5 | using YGOSharp.OCGWrapper.Enums; 6 | 7 | namespace WindBot.Game.AI.Decks 8 | { 9 | [Deck("Dragunity", "AI_Dragunity")] 10 | public class DragunityExecutor : DefaultExecutor 11 | { 12 | public class CardId 13 | { 14 | public const int StardustDragonAssaultMode = 61257789; 15 | public const int DragunityArmaMysletainn = 876330; 16 | public const int AssaultBeast = 3431737; 17 | public const int DragunityDux = 28183605; 18 | public const int DragunityPhalanx = 59755122; 19 | public const int AssaultTeleport = 29863101; 20 | public const int CardsOfConsonance = 39701395; 21 | public const int UpstartGoblin = 70368879; 22 | public const int DragonsMirror = 71490127; 23 | public const int Terraforming = 73628505; 24 | public const int FoolishBurial = 81439173; 25 | public const int MonsterReborn = 83764718; 26 | public const int MysticalSpaceTyphoon = 5318639; 27 | public const int FireFormationTenki = 57103969; 28 | public const int DragunitySpearOfDestiny = 60004971; 29 | public const int DragonRavine = 62265044; 30 | public const int MirrorForce = 44095762; 31 | public const int StarlightRoad = 58120309; 32 | public const int DimensionalPrison = 70342110; 33 | public const int AssaultModeActivate = 80280737; 34 | public const int FiveHeadedDragon = 99267150; 35 | public const int CrystalWingSynchroDragon = 50954680; 36 | public const int ScrapDragon = 76774528; 37 | public const int StardustDragon = 44508094; 38 | public const int DragunityKnightGaeDearg = 34116027; 39 | public const int DragunityKnightVajrayana = 21249921; 40 | } 41 | 42 | public DragunityExecutor(GameAI ai, Duel duel) 43 | : base(ai, duel) 44 | { 45 | // Set traps 46 | AddExecutor(ExecutorType.SpellSet, DefaultSpellSet); 47 | 48 | // Execute spells 49 | AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon); 50 | AddExecutor(ExecutorType.Activate, CardId.AssaultTeleport); 51 | AddExecutor(ExecutorType.Activate, CardId.UpstartGoblin); 52 | AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineField); 53 | AddExecutor(ExecutorType.Activate, CardId.Terraforming, Terraforming); 54 | AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurial); 55 | AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterReborn); 56 | 57 | // Execute monsters 58 | AddExecutor(ExecutorType.Activate, CardId.ScrapDragon, ScrapDragonEffect); 59 | AddExecutor(ExecutorType.Activate, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonEffect); 60 | AddExecutor(ExecutorType.Activate, CardId.DragunityPhalanx); 61 | AddExecutor(ExecutorType.Activate, CardId.DragunityKnightVajrayana); 62 | AddExecutor(ExecutorType.Activate, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnEffect); 63 | AddExecutor(ExecutorType.Activate, CardId.DragunityDux); 64 | 65 | // Summon 66 | AddExecutor(ExecutorType.Activate, CardId.DragonsMirror, DragonsMirror); 67 | AddExecutor(ExecutorType.SpSummon, CardId.ScrapDragon, ScrapDragonSummon); 68 | AddExecutor(ExecutorType.SpSummon, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonSummon); 69 | AddExecutor(ExecutorType.SpSummon, CardId.StardustDragon); 70 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightVajrayana); 71 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightGaeDearg); 72 | AddExecutor(ExecutorType.Summon, CardId.DragunityPhalanx, DragunityPhalanxSummon); 73 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainn); 74 | AddExecutor(ExecutorType.Summon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnTribute); 75 | 76 | // Use draw effects if we can't do anything else 77 | AddExecutor(ExecutorType.Activate, CardId.CardsOfConsonance); 78 | AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineEffect); 79 | AddExecutor(ExecutorType.Activate, CardId.FireFormationTenki, FireFormationTenki); 80 | AddExecutor(ExecutorType.Activate, CardId.DragunitySpearOfDestiny); 81 | 82 | // Summon 83 | AddExecutor(ExecutorType.Summon, CardId.DragunityDux, DragunityDux); 84 | AddExecutor(ExecutorType.MonsterSet, CardId.DragunityPhalanx, DragunityPhalanxSet); 85 | AddExecutor(ExecutorType.SummonOrSet, CardId.AssaultBeast); 86 | 87 | // Draw assault mode if we don't have one 88 | AddExecutor(ExecutorType.Activate, CardId.AssaultBeast, AssaultBeast); 89 | 90 | // Set useless cards 91 | AddExecutor(ExecutorType.SpellSet, CardId.DragonsMirror, SetUselessCards); 92 | AddExecutor(ExecutorType.SpellSet, CardId.Terraforming, SetUselessCards); 93 | AddExecutor(ExecutorType.SpellSet, CardId.AssaultTeleport, SetUselessCards); 94 | AddExecutor(ExecutorType.SpellSet, CardId.CardsOfConsonance, SetUselessCards); 95 | 96 | // Chain traps and monsters 97 | AddExecutor(ExecutorType.Activate, CardId.StardustDragonAssaultMode, DefaultStardustDragonEffect); 98 | AddExecutor(ExecutorType.Activate, CardId.StardustDragon, DefaultStardustDragonEffect); 99 | AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, DefaultTrap); 100 | AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap); 101 | AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultTrap); 102 | AddExecutor(ExecutorType.Activate, CardId.AssaultModeActivate, AssaultModeActivate); 103 | 104 | AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); 105 | } 106 | 107 | private bool DragonRavineField() 108 | { 109 | if (Card.Location == CardLocation.Hand) 110 | return DefaultField(); 111 | return false; 112 | } 113 | 114 | private bool DragonRavineEffect() 115 | { 116 | if (Card.Location != CardLocation.SpellZone) 117 | return false; 118 | 119 | int tributeId = -1; 120 | if (Bot.HasInHand(CardId.DragunityPhalanx)) 121 | tributeId = CardId.DragunityPhalanx; 122 | else if (Bot.HasInHand(CardId.FireFormationTenki)) 123 | tributeId = CardId.FireFormationTenki; 124 | else if (Bot.HasInHand(CardId.Terraforming)) 125 | tributeId = CardId.Terraforming; 126 | else if (Bot.HasInHand(CardId.DragonRavine)) 127 | tributeId = CardId.DragonRavine; 128 | else if (Bot.HasInHand(CardId.AssaultTeleport)) 129 | tributeId = CardId.AssaultTeleport; 130 | else if (Bot.HasInHand(CardId.AssaultBeast)) 131 | tributeId = CardId.AssaultBeast; 132 | else if (Bot.HasInHand((int) CardId.DragunityArmaMysletainn)) 133 | tributeId = CardId.DragunityArmaMysletainn; 134 | else 135 | { 136 | int count = 0; 137 | foreach (ClientCard card in Bot.Hand) 138 | { 139 | if (card.IsCode(CardId.DragunityDux)) 140 | ++count; 141 | } 142 | if (count >= 2) 143 | tributeId = CardId.DragunityDux; 144 | } 145 | if (tributeId == -1 && Bot.HasInHand(CardId.StardustDragonAssaultMode)) 146 | tributeId = CardId.StardustDragonAssaultMode; 147 | if (tributeId == -1 && Bot.HasInHand(CardId.DragunitySpearOfDestiny)) 148 | tributeId = CardId.StardustDragonAssaultMode; 149 | if (tributeId == -1 && Bot.HasInHand(CardId.DragonsMirror) 150 | && Bot.GetMonsterCount() == 0) 151 | tributeId = CardId.StardustDragonAssaultMode; 152 | 153 | if (tributeId == -1) 154 | return false; 155 | 156 | int needId = -1; 157 | if (!Bot.HasInMonstersZone(CardId.DragunityPhalanx) && 158 | !Bot.HasInGraveyard(CardId.DragunityPhalanx)) 159 | needId = CardId.DragunityPhalanx; 160 | else if (Bot.GetMonsterCount() == 0) 161 | needId = CardId.DragunityDux; 162 | else 163 | { 164 | /*bool hasRealMonster = false; 165 | foreach (ClientCard card in Bot.GetMonsters()) 166 | { 167 | if (!card.IsCode(CardId.AssaultBeast)) 168 | { 169 | hasRealMonster = true; 170 | break; 171 | } 172 | } 173 | if (!hasRealMonster || Util.GetProblematicCard() != null)*/ 174 | needId = CardId.DragunityDux; 175 | } 176 | 177 | if (needId == -1) 178 | return false; 179 | 180 | int option; 181 | 182 | if (tributeId == CardId.DragunityPhalanx) 183 | needId = CardId.DragunityDux; 184 | 185 | int remaining = 3; 186 | foreach (ClientCard card in Bot.Hand) 187 | if (card.IsCode(needId)) 188 | remaining--; 189 | foreach (ClientCard card in Bot.Graveyard) 190 | if (card.IsCode(needId)) 191 | remaining--; 192 | foreach (ClientCard card in Bot.Banished) 193 | if (card.IsCode(needId)) 194 | remaining--; 195 | if (remaining <= 0) 196 | return false; 197 | 198 | if (needId == CardId.DragunityPhalanx) 199 | option = 2; 200 | else 201 | option = 1; 202 | 203 | if (ActivateDescription != Util.GetStringId(CardId.DragonRavine, option)) 204 | return false; 205 | 206 | AI.SelectCard(tributeId); 207 | AI.SelectNextCard(needId); 208 | 209 | return true; 210 | } 211 | 212 | private bool Terraforming() 213 | { 214 | if (Bot.HasInHand(CardId.DragonRavine)) 215 | return false; 216 | if (Bot.SpellZone[5] != null) 217 | return false; 218 | return true; 219 | } 220 | 221 | private bool SetUselessCards() 222 | { 223 | ClientField field = Bot; 224 | 225 | if (field.HasInSpellZone(CardId.FireFormationTenki)) 226 | return false; 227 | if (field.HasInSpellZone(CardId.AssaultTeleport)) 228 | return false; 229 | if (field.HasInSpellZone(CardId.CardsOfConsonance)) 230 | return false; 231 | if (field.HasInSpellZone(CardId.DragonsMirror)) 232 | return false; 233 | 234 | return Bot.GetSpellCountWithoutField() < 4; 235 | } 236 | 237 | private bool FireFormationTenki() 238 | { 239 | if (Card.Location == CardLocation.Hand) 240 | return Bot.GetSpellCountWithoutField() < 4; 241 | return true; 242 | } 243 | 244 | private bool FoolishBurial() 245 | { 246 | AI.SelectCard( 247 | CardId.DragunityPhalanx, 248 | CardId.AssaultBeast, 249 | CardId.StardustDragonAssaultMode 250 | ); 251 | return true; 252 | } 253 | 254 | private bool MonsterReborn() 255 | { 256 | List cards = new List(Bot.Graveyard.GetMatchingCards(card => card.IsCanRevive())); 257 | cards.Sort(CardContainer.CompareCardAttack); 258 | ClientCard selectedCard = null; 259 | for (int i = cards.Count - 1; i >= 0; --i) 260 | { 261 | ClientCard card = cards[i]; 262 | if (card.Attack < 2000) 263 | break; 264 | if (card.IsCode(CardId.StardustDragonAssaultMode, CardId.FiveHeadedDragon)) 265 | continue; 266 | if (card.IsMonster()) 267 | { 268 | selectedCard = card; 269 | break; 270 | } 271 | } 272 | cards = new List(Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive())); 273 | cards.Sort(CardContainer.CompareCardAttack); 274 | for (int i = cards.Count - 1; i >= 0; --i) 275 | { 276 | ClientCard card = cards[i]; 277 | if (card.Attack < 2000) 278 | break; 279 | if (card.IsMonster() && card.HasType(CardType.Normal) && (selectedCard == null || card.Attack > selectedCard.Attack)) 280 | { 281 | selectedCard = card; 282 | break; 283 | } 284 | } 285 | if (selectedCard != null) 286 | { 287 | AI.SelectCard(selectedCard); 288 | return true; 289 | } 290 | return false; 291 | } 292 | 293 | private bool DragonsMirror() 294 | { 295 | IList tributes = new List(); 296 | int phalanxCount = 0; 297 | foreach (ClientCard card in Bot.Graveyard) 298 | { 299 | if (card.IsCode(CardId.DragunityPhalanx)) 300 | { 301 | phalanxCount++; 302 | break; 303 | } 304 | if (card.Race == (int) CardRace.Dragon) 305 | tributes.Add(card); 306 | if (tributes.Count == 5) 307 | break; 308 | } 309 | 310 | // We can tribute one or two phalanx if needed, but only 311 | // if we have more than one in the graveyard. 312 | if (tributes.Count < 5 && phalanxCount > 1) 313 | { 314 | foreach (ClientCard card in Bot.Graveyard) 315 | { 316 | if (card.IsCode(CardId.DragunityPhalanx)) 317 | { 318 | phalanxCount--; 319 | tributes.Add(card); 320 | if (phalanxCount <= 1) 321 | break; 322 | } 323 | } 324 | } 325 | 326 | if (tributes.Count < 5) 327 | return false; 328 | 329 | AI.SelectCard(CardId.FiveHeadedDragon); 330 | AI.SelectNextCard(tributes); 331 | return true; 332 | } 333 | 334 | private bool ScrapDragonSummon() 335 | { 336 | //if (Util.IsOneEnemyBetterThanValue(2500, true)) 337 | // return true; 338 | ClientCard invincible = Util.GetProblematicEnemyCard(3000); 339 | return invincible != null; 340 | } 341 | 342 | private bool ScrapDragonEffect() 343 | { 344 | ClientCard invincible = Util.GetProblematicEnemyCard(3000); 345 | if (invincible == null && !Util.IsOneEnemyBetterThanValue(2800 - 1, false)) 346 | return false; 347 | 348 | int tributeId = -1; 349 | if (Bot.HasInSpellZone(CardId.FireFormationTenki)) 350 | tributeId = CardId.FireFormationTenki; 351 | else if (Bot.HasInSpellZone(CardId.Terraforming)) 352 | tributeId = CardId.Terraforming; 353 | else if (Bot.HasInSpellZone(CardId.DragonsMirror)) 354 | tributeId = CardId.DragonsMirror; 355 | else if (Bot.HasInSpellZone(CardId.CardsOfConsonance)) 356 | tributeId = CardId.CardsOfConsonance; 357 | else if (Bot.HasInSpellZone(CardId.AssaultTeleport)) 358 | tributeId = CardId.AssaultTeleport; 359 | else if (Bot.HasInSpellZone(CardId.AssaultModeActivate)) 360 | tributeId = CardId.AssaultModeActivate; 361 | else if (Bot.HasInSpellZone(CardId.DragonRavine)) 362 | tributeId = CardId.DragonRavine; 363 | 364 | List monsters = Enemy.GetMonsters(); 365 | monsters.Sort(CardContainer.CompareCardAttack); 366 | 367 | ClientCard destroyCard = invincible; 368 | if (destroyCard == null) 369 | { 370 | for (int i = monsters.Count - 1; i >= 0; --i) 371 | { 372 | if (monsters[i].IsAttack()) 373 | { 374 | destroyCard = monsters[i]; 375 | break; 376 | } 377 | } 378 | } 379 | 380 | if (destroyCard == null) 381 | return false; 382 | 383 | AI.SelectCard(tributeId); 384 | AI.SelectNextCard(destroyCard); 385 | 386 | return true; 387 | } 388 | 389 | private bool CrystalWingSynchroDragonSummon() 390 | { 391 | return !Bot.HasInHand(CardId.AssaultModeActivate) 392 | && !Bot.HasInHand(CardId.AssaultBeast) 393 | && !Bot.HasInSpellZone(CardId.AssaultModeActivate); 394 | } 395 | 396 | private bool CrystalWingSynchroDragonEffect() 397 | { 398 | return Duel.LastChainPlayer != 0; 399 | } 400 | 401 | private bool DragunityPhalanxSummon() 402 | { 403 | return Bot.HasInHand(CardId.DragunityArmaMysletainn); 404 | } 405 | 406 | private bool DragunityArmaMysletainn() 407 | { 408 | if (Bot.HasInMonstersZone(CardId.DragunityPhalanx)) 409 | { 410 | AI.SelectCard(CardId.DragunityPhalanx); 411 | return true; 412 | } 413 | if (Bot.HasInMonstersZone(CardId.DragunityDux)) 414 | { 415 | AI.SelectCard(CardId.DragunityDux); 416 | return true; 417 | } 418 | return false; 419 | } 420 | 421 | private bool DragunityArmaMysletainnEffect() 422 | { 423 | AI.SelectCard(CardId.DragunityPhalanx); 424 | return true; 425 | } 426 | 427 | private bool DragunityArmaMysletainnTribute() 428 | { 429 | if ((Bot.HasInMonstersZone(CardId.AssaultBeast) 430 | && Bot.HasInGraveyard(CardId.DragunityPhalanx)) 431 | || Bot.HasInMonstersZone(CardId.DragunityPhalanx) 432 | || Bot.HasInHand(CardId.DragunitySpearOfDestiny)) 433 | { 434 | List monster_sorted = Bot.GetMonsters(); 435 | monster_sorted.Sort(CardContainer.CompareCardAttack); 436 | foreach (ClientCard monster in monster_sorted) 437 | { 438 | AI.SelectMaterials(monster); 439 | return true; 440 | } 441 | } 442 | return false; 443 | } 444 | 445 | private bool DragunityDux() 446 | { 447 | return Bot.HasInGraveyard(CardId.DragunityPhalanx) || 448 | (Bot.GetMonsterCount() == 0 && Bot.HasInHand(CardId.DragunityArmaMysletainn) || 449 | Bot.HasInHand(CardId.DragunitySpearOfDestiny)); 450 | } 451 | 452 | private bool DragunityPhalanxSet() 453 | { 454 | return Bot.GetMonsterCount() == 0 || !Bot.HasInGraveyard(CardId.DragunityPhalanx); 455 | } 456 | 457 | private bool AssaultBeast() 458 | { 459 | if (!Bot.HasInSpellZone(CardId.AssaultModeActivate)) 460 | return true; 461 | return false; 462 | } 463 | 464 | private bool AssaultModeActivate() 465 | { 466 | if (Duel.Player == 0 && Duel.Phase == DuelPhase.BattleStart) 467 | { 468 | List monsters = Bot.GetMonsters(); 469 | foreach (ClientCard monster in monsters) 470 | { 471 | if (monster.IsCode(CardId.StardustDragon) && monster.Attacked) 472 | { 473 | AI.SelectCard(monster); 474 | return true; 475 | } 476 | } 477 | } 478 | return Duel.Player == 1; 479 | } 480 | } 481 | } -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/DragunityExecutor.ch: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using WindBot; 3 | using WindBot.Game; 4 | using WindBot.Game.AI; 5 | using YGOSharp.OCGWrapper.Enums; 6 | 7 | namespace WindBot.Game.AI.Decks 8 | { 9 | [Deck("Dragunity", "AI_Dragunity")] 10 | public class DragunityExecutor : DefaultExecutor 11 | { 12 | public class CardId 13 | { 14 | public const int StardustDragonAssaultMode = 61257789; 15 | public const int DragunityArmaMysletainn = 876330; 16 | public const int AssaultBeast = 3431737; 17 | public const int DragunityDux = 28183605; 18 | public const int DragunityPhalanx = 59755122; 19 | public const int AssaultTeleport = 29863101; 20 | public const int CardsOfConsonance = 39701395; 21 | public const int UpstartGoblin = 70368879; 22 | public const int DragonsMirror = 71490127; 23 | public const int Terraforming = 73628505; 24 | public const int FoolishBurial = 81439173; 25 | public const int MonsterReborn = 83764718; 26 | public const int MysticalSpaceTyphoon = 5318639; 27 | public const int FireFormationTenki = 57103969; 28 | public const int DragunitySpearOfDestiny = 60004971; 29 | public const int DragonRavine = 62265044; 30 | public const int MirrorForce = 44095762; 31 | public const int StarlightRoad = 58120309; 32 | public const int DimensionalPrison = 70342110; 33 | public const int AssaultModeActivate = 80280737; 34 | public const int FiveHeadedDragon = 99267150; 35 | public const int CrystalWingSynchroDragon = 50954680; 36 | public const int ScrapDragon = 76774528; 37 | public const int StardustDragon = 44508094; 38 | public const int DragunityKnightGaeDearg = 34116027; 39 | public const int DragunityKnightVajrayana = 21249921; 40 | } 41 | 42 | public DragunityExecutor(GameAI ai, Duel duel) 43 | : base(ai, duel) 44 | { 45 | // Set traps 46 | AddExecutor(ExecutorType.SpellSet, DefaultSpellSet); 47 | 48 | // Execute spells 49 | AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon); 50 | AddExecutor(ExecutorType.Activate, CardId.AssaultTeleport); 51 | AddExecutor(ExecutorType.Activate, CardId.UpstartGoblin); 52 | AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineField); 53 | AddExecutor(ExecutorType.Activate, CardId.Terraforming, Terraforming); 54 | AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurial); 55 | AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterReborn); 56 | 57 | // Execute monsters 58 | AddExecutor(ExecutorType.Activate, CardId.ScrapDragon, ScrapDragonEffect); 59 | AddExecutor(ExecutorType.Activate, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonEffect); 60 | AddExecutor(ExecutorType.Activate, CardId.DragunityPhalanx); 61 | AddExecutor(ExecutorType.Activate, CardId.DragunityKnightVajrayana); 62 | AddExecutor(ExecutorType.Activate, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnEffect); 63 | AddExecutor(ExecutorType.Activate, CardId.DragunityDux); 64 | 65 | // Summon 66 | AddExecutor(ExecutorType.Activate, CardId.DragonsMirror, DragonsMirror); 67 | AddExecutor(ExecutorType.SpSummon, CardId.ScrapDragon, ScrapDragonSummon); 68 | AddExecutor(ExecutorType.SpSummon, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonSummon); 69 | AddExecutor(ExecutorType.SpSummon, CardId.StardustDragon); 70 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightVajrayana); 71 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightGaeDearg); 72 | AddExecutor(ExecutorType.Summon, CardId.DragunityPhalanx, DragunityPhalanxSummon); 73 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainn); 74 | AddExecutor(ExecutorType.Summon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnTribute); 75 | 76 | // Use draw effects if we can't do anything else 77 | AddExecutor(ExecutorType.Activate, CardId.CardsOfConsonance); 78 | AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineEffect); 79 | AddExecutor(ExecutorType.Activate, CardId.FireFormationTenki, FireFormationTenki); 80 | AddExecutor(ExecutorType.Activate, CardId.DragunitySpearOfDestiny); 81 | 82 | // Summon 83 | AddExecutor(ExecutorType.Summon, CardId.DragunityDux, DragunityDux); 84 | AddExecutor(ExecutorType.MonsterSet, CardId.DragunityPhalanx, DragunityPhalanxSet); 85 | AddExecutor(ExecutorType.SummonOrSet, CardId.AssaultBeast); 86 | 87 | // Draw assault mode if we don't have one 88 | AddExecutor(ExecutorType.Activate, CardId.AssaultBeast, AssaultBeast); 89 | 90 | // Set useless cards 91 | AddExecutor(ExecutorType.SpellSet, CardId.DragonsMirror, SetUselessCards); 92 | AddExecutor(ExecutorType.SpellSet, CardId.Terraforming, SetUselessCards); 93 | AddExecutor(ExecutorType.SpellSet, CardId.AssaultTeleport, SetUselessCards); 94 | AddExecutor(ExecutorType.SpellSet, CardId.CardsOfConsonance, SetUselessCards); 95 | 96 | // Chain traps and monsters 97 | AddExecutor(ExecutorType.Activate, CardId.StardustDragonAssaultMode, DefaultStardustDragonEffect); 98 | AddExecutor(ExecutorType.Activate, CardId.StardustDragon, DefaultStardustDragonEffect); 99 | AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, DefaultTrap); 100 | AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap); 101 | AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultTrap); 102 | AddExecutor(ExecutorType.Activate, CardId.AssaultModeActivate, AssaultModeActivate); 103 | 104 | AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); 105 | } 106 | 107 | private bool DragonRavineField() 108 | { 109 | if (Card.Location == CardLocation.Hand) 110 | return DefaultField(); 111 | return false; 112 | } 113 | 114 | private bool DragonRavineEffect() 115 | { 116 | if (Card.Location != CardLocation.SpellZone) 117 | return false; 118 | 119 | int tributeId = -1; 120 | if (Bot.HasInHand(CardId.DragunityPhalanx)) 121 | tributeId = CardId.DragunityPhalanx; 122 | else if (Bot.HasInHand(CardId.FireFormationTenki)) 123 | tributeId = CardId.FireFormationTenki; 124 | else if (Bot.HasInHand(CardId.Terraforming)) 125 | tributeId = CardId.Terraforming; 126 | else if (Bot.HasInHand(CardId.DragonRavine)) 127 | tributeId = CardId.DragonRavine; 128 | else if (Bot.HasInHand(CardId.AssaultTeleport)) 129 | tributeId = CardId.AssaultTeleport; 130 | else if (Bot.HasInHand(CardId.AssaultBeast)) 131 | tributeId = CardId.AssaultBeast; 132 | else if (Bot.HasInHand((int) CardId.DragunityArmaMysletainn)) 133 | tributeId = CardId.DragunityArmaMysletainn; 134 | else 135 | { 136 | int count = 0; 137 | foreach (ClientCard card in Bot.Hand) 138 | { 139 | if (card.IsCode(CardId.DragunityDux)) 140 | ++count; 141 | } 142 | if (count >= 2) 143 | tributeId = CardId.DragunityDux; 144 | } 145 | if (tributeId == -1 && Bot.HasInHand(CardId.StardustDragonAssaultMode)) 146 | tributeId = CardId.StardustDragonAssaultMode; 147 | if (tributeId == -1 && Bot.HasInHand(CardId.DragunitySpearOfDestiny)) 148 | tributeId = CardId.StardustDragonAssaultMode; 149 | if (tributeId == -1 && Bot.HasInHand(CardId.DragonsMirror) 150 | && Bot.GetMonsterCount() == 0) 151 | tributeId = CardId.StardustDragonAssaultMode; 152 | 153 | if (tributeId == -1) 154 | return false; 155 | 156 | int needId = -1; 157 | if (!Bot.HasInMonstersZone(CardId.DragunityPhalanx) && 158 | !Bot.HasInGraveyard(CardId.DragunityPhalanx)) 159 | needId = CardId.DragunityPhalanx; 160 | else if (Bot.GetMonsterCount() == 0) 161 | needId = CardId.DragunityDux; 162 | else 163 | { 164 | /*bool hasRealMonster = false; 165 | foreach (ClientCard card in Bot.GetMonsters()) 166 | { 167 | if (!card.IsCode(CardId.AssaultBeast)) 168 | { 169 | hasRealMonster = true; 170 | break; 171 | } 172 | } 173 | if (!hasRealMonster || Util.GetProblematicCard() != null)*/ 174 | needId = CardId.DragunityDux; 175 | } 176 | 177 | if (needId == -1) 178 | return false; 179 | 180 | int option; 181 | 182 | if (tributeId == CardId.DragunityPhalanx) 183 | needId = CardId.DragunityDux; 184 | 185 | int remaining = 3; 186 | foreach (ClientCard card in Bot.Hand) 187 | if (card.IsCode(needId)) 188 | remaining--; 189 | foreach (ClientCard card in Bot.Graveyard) 190 | if (card.IsCode(needId)) 191 | remaining--; 192 | foreach (ClientCard card in Bot.Banished) 193 | if (card.IsCode(needId)) 194 | remaining--; 195 | if (remaining <= 0) 196 | return false; 197 | 198 | if (needId == CardId.DragunityPhalanx) 199 | option = 2; 200 | else 201 | option = 1; 202 | 203 | if (ActivateDescription != Util.GetStringId(CardId.DragonRavine, option)) 204 | return false; 205 | 206 | AI.SelectCard(tributeId); 207 | AI.SelectNextCard(needId); 208 | 209 | return true; 210 | } 211 | 212 | private bool Terraforming() 213 | { 214 | if (Bot.HasInHand(CardId.DragonRavine)) 215 | return false; 216 | if (Bot.SpellZone[5] != null) 217 | return false; 218 | return true; 219 | } 220 | 221 | private bool SetUselessCards() 222 | { 223 | ClientField field = Bot; 224 | 225 | if (field.HasInSpellZone(CardId.FireFormationTenki)) 226 | return false; 227 | if (field.HasInSpellZone(CardId.AssaultTeleport)) 228 | return false; 229 | if (field.HasInSpellZone(CardId.CardsOfConsonance)) 230 | return false; 231 | if (field.HasInSpellZone(CardId.DragonsMirror)) 232 | return false; 233 | 234 | return Bot.GetSpellCountWithoutField() < 4; 235 | } 236 | 237 | private bool FireFormationTenki() 238 | { 239 | if (Card.Location == CardLocation.Hand) 240 | return Bot.GetSpellCountWithoutField() < 4; 241 | return true; 242 | } 243 | 244 | private bool FoolishBurial() 245 | { 246 | AI.SelectCard( 247 | CardId.DragunityPhalanx, 248 | CardId.AssaultBeast, 249 | CardId.StardustDragonAssaultMode 250 | ); 251 | return true; 252 | } 253 | 254 | private bool MonsterReborn() 255 | { 256 | List cards = new List(Bot.Graveyard.GetMatchingCards(card => card.IsCanRevive())); 257 | cards.Sort(CardContainer.CompareCardAttack); 258 | ClientCard selectedCard = null; 259 | for (int i = cards.Count - 1; i >= 0; --i) 260 | { 261 | ClientCard card = cards[i]; 262 | if (card.Attack < 2000) 263 | break; 264 | if (card.IsCode(CardId.StardustDragonAssaultMode, CardId.FiveHeadedDragon)) 265 | continue; 266 | if (card.IsMonster()) 267 | { 268 | selectedCard = card; 269 | break; 270 | } 271 | } 272 | cards = new List(Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive())); 273 | cards.Sort(CardContainer.CompareCardAttack); 274 | for (int i = cards.Count - 1; i >= 0; --i) 275 | { 276 | ClientCard card = cards[i]; 277 | if (card.Attack < 2000) 278 | break; 279 | if (card.IsMonster() && card.HasType(CardType.Normal) && (selectedCard == null || card.Attack > selectedCard.Attack)) 280 | { 281 | selectedCard = card; 282 | break; 283 | } 284 | } 285 | if (selectedCard != null) 286 | { 287 | AI.SelectCard(selectedCard); 288 | return true; 289 | } 290 | return false; 291 | } 292 | 293 | private bool DragonsMirror() 294 | { 295 | IList tributes = new List(); 296 | int phalanxCount = 0; 297 | foreach (ClientCard card in Bot.Graveyard) 298 | { 299 | if (card.IsCode(CardId.DragunityPhalanx)) 300 | { 301 | phalanxCount++; 302 | break; 303 | } 304 | if (card.Race == (int) CardRace.Dragon) 305 | tributes.Add(card); 306 | if (tributes.Count == 5) 307 | break; 308 | } 309 | 310 | // We can tribute one or two phalanx if needed, but only 311 | // if we have more than one in the graveyard. 312 | if (tributes.Count < 5 && phalanxCount > 1) 313 | { 314 | foreach (ClientCard card in Bot.Graveyard) 315 | { 316 | if (card.IsCode(CardId.DragunityPhalanx)) 317 | { 318 | phalanxCount--; 319 | tributes.Add(card); 320 | if (phalanxCount <= 1) 321 | break; 322 | } 323 | } 324 | } 325 | 326 | if (tributes.Count < 5) 327 | return false; 328 | 329 | AI.SelectCard(CardId.FiveHeadedDragon); 330 | AI.SelectNextCard(tributes); 331 | return true; 332 | } 333 | 334 | private bool ScrapDragonSummon() 335 | { 336 | //if (Util.IsOneEnemyBetterThanValue(2500, true)) 337 | // return true; 338 | ClientCard invincible = Util.GetProblematicEnemyCard(3000); 339 | return invincible != null; 340 | } 341 | 342 | private bool ScrapDragonEffect() 343 | { 344 | ClientCard invincible = Util.GetProblematicEnemyCard(3000); 345 | if (invincible == null && !Util.IsOneEnemyBetterThanValue(2800 - 1, false)) 346 | return false; 347 | 348 | int tributeId = -1; 349 | if (Bot.HasInSpellZone(CardId.FireFormationTenki)) 350 | tributeId = CardId.FireFormationTenki; 351 | else if (Bot.HasInSpellZone(CardId.Terraforming)) 352 | tributeId = CardId.Terraforming; 353 | else if (Bot.HasInSpellZone(CardId.DragonsMirror)) 354 | tributeId = CardId.DragonsMirror; 355 | else if (Bot.HasInSpellZone(CardId.CardsOfConsonance)) 356 | tributeId = CardId.CardsOfConsonance; 357 | else if (Bot.HasInSpellZone(CardId.AssaultTeleport)) 358 | tributeId = CardId.AssaultTeleport; 359 | else if (Bot.HasInSpellZone(CardId.AssaultModeActivate)) 360 | tributeId = CardId.AssaultModeActivate; 361 | else if (Bot.HasInSpellZone(CardId.DragonRavine)) 362 | tributeId = CardId.DragonRavine; 363 | 364 | List monsters = Enemy.GetMonsters(); 365 | monsters.Sort(CardContainer.CompareCardAttack); 366 | 367 | ClientCard destroyCard = invincible; 368 | if (destroyCard == null) 369 | { 370 | for (int i = monsters.Count - 1; i >= 0; --i) 371 | { 372 | if (monsters[i].IsAttack()) 373 | { 374 | destroyCard = monsters[i]; 375 | break; 376 | } 377 | } 378 | } 379 | 380 | if (destroyCard == null) 381 | return false; 382 | 383 | AI.SelectCard(tributeId); 384 | AI.SelectNextCard(destroyCard); 385 | 386 | return true; 387 | } 388 | 389 | private bool CrystalWingSynchroDragonSummon() 390 | { 391 | return !Bot.HasInHand(CardId.AssaultModeActivate) 392 | && !Bot.HasInHand(CardId.AssaultBeast) 393 | && !Bot.HasInSpellZone(CardId.AssaultModeActivate); 394 | } 395 | 396 | private bool CrystalWingSynchroDragonEffect() 397 | { 398 | return Duel.LastChainPlayer != 0; 399 | } 400 | 401 | private bool DragunityPhalanxSummon() 402 | { 403 | return Bot.HasInHand(CardId.DragunityArmaMysletainn); 404 | } 405 | 406 | private bool DragunityArmaMysletainn() 407 | { 408 | if (Bot.HasInMonstersZone(CardId.DragunityPhalanx)) 409 | { 410 | AI.SelectCard(CardId.DragunityPhalanx); 411 | return true; 412 | } 413 | if (Bot.HasInMonstersZone(CardId.DragunityDux)) 414 | { 415 | AI.SelectCard(CardId.DragunityDux); 416 | return true; 417 | } 418 | return false; 419 | } 420 | 421 | private bool DragunityArmaMysletainnEffect() 422 | { 423 | AI.SelectCard(CardId.DragunityPhalanx); 424 | return true; 425 | } 426 | 427 | private bool DragunityArmaMysletainnTribute() 428 | { 429 | if ((Bot.HasInMonstersZone(CardId.AssaultBeast) 430 | && Bot.HasInGraveyard(CardId.DragunityPhalanx)) 431 | || Bot.HasInMonstersZone(CardId.DragunityPhalanx) 432 | || Bot.HasInHand(CardId.DragunitySpearOfDestiny)) 433 | { 434 | List monster_sorted = Bot.GetMonsters(); 435 | monster_sorted.Sort(CardContainer.CompareCardAttack); 436 | foreach (ClientCard monster in monster_sorted) 437 | { 438 | AI.SelectMaterials(monster); 439 | return true; 440 | } 441 | } 442 | return false; 443 | } 444 | 445 | private bool DragunityDux() 446 | { 447 | return Bot.HasInGraveyard(CardId.DragunityPhalanx) || 448 | (Bot.GetMonsterCount() == 0 && Bot.HasInHand(CardId.DragunityArmaMysletainn) || 449 | Bot.HasInHand(CardId.DragunitySpearOfDestiny)); 450 | } 451 | 452 | private bool DragunityPhalanxSet() 453 | { 454 | return Bot.GetMonsterCount() == 0 || !Bot.HasInGraveyard(CardId.DragunityPhalanx); 455 | } 456 | 457 | private bool AssaultBeast() 458 | { 459 | if (!Bot.HasInSpellZone(CardId.AssaultModeActivate)) 460 | return true; 461 | return false; 462 | } 463 | 464 | private bool AssaultModeActivate() 465 | { 466 | if (Duel.Player == 0 && Duel.Phase == DuelPhase.BattleStart) 467 | { 468 | List monsters = Bot.GetMonsters(); 469 | foreach (ClientCard monster in monsters) 470 | { 471 | if (monster.IsCode(CardId.StardustDragon) && monster.Attacked) 472 | { 473 | AI.SelectCard(monster); 474 | return true; 475 | } 476 | } 477 | } 478 | return Duel.Player == 1; 479 | } 480 | } 481 | } -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/target/classes/DragunityExecutor.ch: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using WindBot; 3 | using WindBot.Game; 4 | using WindBot.Game.AI; 5 | using YGOSharp.OCGWrapper.Enums; 6 | 7 | namespace WindBot.Game.AI.Decks 8 | { 9 | [Deck("Dragunity", "AI_Dragunity")] 10 | public class DragunityExecutor : DefaultExecutor 11 | { 12 | public class CardId 13 | { 14 | public const int StardustDragonAssaultMode = 61257789; 15 | public const int DragunityArmaMysletainn = 876330; 16 | public const int AssaultBeast = 3431737; 17 | public const int DragunityDux = 28183605; 18 | public const int DragunityPhalanx = 59755122; 19 | public const int AssaultTeleport = 29863101; 20 | public const int CardsOfConsonance = 39701395; 21 | public const int UpstartGoblin = 70368879; 22 | public const int DragonsMirror = 71490127; 23 | public const int Terraforming = 73628505; 24 | public const int FoolishBurial = 81439173; 25 | public const int MonsterReborn = 83764718; 26 | public const int MysticalSpaceTyphoon = 5318639; 27 | public const int FireFormationTenki = 57103969; 28 | public const int DragunitySpearOfDestiny = 60004971; 29 | public const int DragonRavine = 62265044; 30 | public const int MirrorForce = 44095762; 31 | public const int StarlightRoad = 58120309; 32 | public const int DimensionalPrison = 70342110; 33 | public const int AssaultModeActivate = 80280737; 34 | public const int FiveHeadedDragon = 99267150; 35 | public const int CrystalWingSynchroDragon = 50954680; 36 | public const int ScrapDragon = 76774528; 37 | public const int StardustDragon = 44508094; 38 | public const int DragunityKnightGaeDearg = 34116027; 39 | public const int DragunityKnightVajrayana = 21249921; 40 | } 41 | 42 | public DragunityExecutor(GameAI ai, Duel duel) 43 | : base(ai, duel) 44 | { 45 | // Set traps 46 | AddExecutor(ExecutorType.SpellSet, DefaultSpellSet); 47 | 48 | // Execute spells 49 | AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon); 50 | AddExecutor(ExecutorType.Activate, CardId.AssaultTeleport); 51 | AddExecutor(ExecutorType.Activate, CardId.UpstartGoblin); 52 | AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineField); 53 | AddExecutor(ExecutorType.Activate, CardId.Terraforming, Terraforming); 54 | AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurial); 55 | AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterReborn); 56 | 57 | // Execute monsters 58 | AddExecutor(ExecutorType.Activate, CardId.ScrapDragon, ScrapDragonEffect); 59 | AddExecutor(ExecutorType.Activate, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonEffect); 60 | AddExecutor(ExecutorType.Activate, CardId.DragunityPhalanx); 61 | AddExecutor(ExecutorType.Activate, CardId.DragunityKnightVajrayana); 62 | AddExecutor(ExecutorType.Activate, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnEffect); 63 | AddExecutor(ExecutorType.Activate, CardId.DragunityDux); 64 | 65 | // Summon 66 | AddExecutor(ExecutorType.Activate, CardId.DragonsMirror, DragonsMirror); 67 | AddExecutor(ExecutorType.SpSummon, CardId.ScrapDragon, ScrapDragonSummon); 68 | AddExecutor(ExecutorType.SpSummon, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonSummon); 69 | AddExecutor(ExecutorType.SpSummon, CardId.StardustDragon); 70 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightVajrayana); 71 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightGaeDearg); 72 | AddExecutor(ExecutorType.Summon, CardId.DragunityPhalanx, DragunityPhalanxSummon); 73 | AddExecutor(ExecutorType.SpSummon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainn); 74 | AddExecutor(ExecutorType.Summon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnTribute); 75 | 76 | // Use draw effects if we can't do anything else 77 | AddExecutor(ExecutorType.Activate, CardId.CardsOfConsonance); 78 | AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineEffect); 79 | AddExecutor(ExecutorType.Activate, CardId.FireFormationTenki, FireFormationTenki); 80 | AddExecutor(ExecutorType.Activate, CardId.DragunitySpearOfDestiny); 81 | 82 | // Summon 83 | AddExecutor(ExecutorType.Summon, CardId.DragunityDux, DragunityDux); 84 | AddExecutor(ExecutorType.MonsterSet, CardId.DragunityPhalanx, DragunityPhalanxSet); 85 | AddExecutor(ExecutorType.SummonOrSet, CardId.AssaultBeast); 86 | 87 | // Draw assault mode if we don't have one 88 | AddExecutor(ExecutorType.Activate, CardId.AssaultBeast, AssaultBeast); 89 | 90 | // Set useless cards 91 | AddExecutor(ExecutorType.SpellSet, CardId.DragonsMirror, SetUselessCards); 92 | AddExecutor(ExecutorType.SpellSet, CardId.Terraforming, SetUselessCards); 93 | AddExecutor(ExecutorType.SpellSet, CardId.AssaultTeleport, SetUselessCards); 94 | AddExecutor(ExecutorType.SpellSet, CardId.CardsOfConsonance, SetUselessCards); 95 | 96 | // Chain traps and monsters 97 | AddExecutor(ExecutorType.Activate, CardId.StardustDragonAssaultMode, DefaultStardustDragonEffect); 98 | AddExecutor(ExecutorType.Activate, CardId.StardustDragon, DefaultStardustDragonEffect); 99 | AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, DefaultTrap); 100 | AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap); 101 | AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultTrap); 102 | AddExecutor(ExecutorType.Activate, CardId.AssaultModeActivate, AssaultModeActivate); 103 | 104 | AddExecutor(ExecutorType.Repos, DefaultMonsterRepos); 105 | } 106 | 107 | private bool DragonRavineField() 108 | { 109 | if (Card.Location == CardLocation.Hand) 110 | return DefaultField(); 111 | return false; 112 | } 113 | 114 | private bool DragonRavineEffect() 115 | { 116 | if (Card.Location != CardLocation.SpellZone) 117 | return false; 118 | 119 | int tributeId = -1; 120 | if (Bot.HasInHand(CardId.DragunityPhalanx)) 121 | tributeId = CardId.DragunityPhalanx; 122 | else if (Bot.HasInHand(CardId.FireFormationTenki)) 123 | tributeId = CardId.FireFormationTenki; 124 | else if (Bot.HasInHand(CardId.Terraforming)) 125 | tributeId = CardId.Terraforming; 126 | else if (Bot.HasInHand(CardId.DragonRavine)) 127 | tributeId = CardId.DragonRavine; 128 | else if (Bot.HasInHand(CardId.AssaultTeleport)) 129 | tributeId = CardId.AssaultTeleport; 130 | else if (Bot.HasInHand(CardId.AssaultBeast)) 131 | tributeId = CardId.AssaultBeast; 132 | else if (Bot.HasInHand((int) CardId.DragunityArmaMysletainn)) 133 | tributeId = CardId.DragunityArmaMysletainn; 134 | else 135 | { 136 | int count = 0; 137 | foreach (ClientCard card in Bot.Hand) 138 | { 139 | if (card.IsCode(CardId.DragunityDux)) 140 | ++count; 141 | } 142 | if (count >= 2) 143 | tributeId = CardId.DragunityDux; 144 | } 145 | if (tributeId == -1 && Bot.HasInHand(CardId.StardustDragonAssaultMode)) 146 | tributeId = CardId.StardustDragonAssaultMode; 147 | if (tributeId == -1 && Bot.HasInHand(CardId.DragunitySpearOfDestiny)) 148 | tributeId = CardId.StardustDragonAssaultMode; 149 | if (tributeId == -1 && Bot.HasInHand(CardId.DragonsMirror) 150 | && Bot.GetMonsterCount() == 0) 151 | tributeId = CardId.StardustDragonAssaultMode; 152 | 153 | if (tributeId == -1) 154 | return false; 155 | 156 | int needId = -1; 157 | if (!Bot.HasInMonstersZone(CardId.DragunityPhalanx) && 158 | !Bot.HasInGraveyard(CardId.DragunityPhalanx)) 159 | needId = CardId.DragunityPhalanx; 160 | else if (Bot.GetMonsterCount() == 0) 161 | needId = CardId.DragunityDux; 162 | else 163 | { 164 | /*bool hasRealMonster = false; 165 | foreach (ClientCard card in Bot.GetMonsters()) 166 | { 167 | if (!card.IsCode(CardId.AssaultBeast)) 168 | { 169 | hasRealMonster = true; 170 | break; 171 | } 172 | } 173 | if (!hasRealMonster || Util.GetProblematicCard() != null)*/ 174 | needId = CardId.DragunityDux; 175 | } 176 | 177 | if (needId == -1) 178 | return false; 179 | 180 | int option; 181 | 182 | if (tributeId == CardId.DragunityPhalanx) 183 | needId = CardId.DragunityDux; 184 | 185 | int remaining = 3; 186 | foreach (ClientCard card in Bot.Hand) 187 | if (card.IsCode(needId)) 188 | remaining--; 189 | foreach (ClientCard card in Bot.Graveyard) 190 | if (card.IsCode(needId)) 191 | remaining--; 192 | foreach (ClientCard card in Bot.Banished) 193 | if (card.IsCode(needId)) 194 | remaining--; 195 | if (remaining <= 0) 196 | return false; 197 | 198 | if (needId == CardId.DragunityPhalanx) 199 | option = 2; 200 | else 201 | option = 1; 202 | 203 | if (ActivateDescription != Util.GetStringId(CardId.DragonRavine, option)) 204 | return false; 205 | 206 | AI.SelectCard(tributeId); 207 | AI.SelectNextCard(needId); 208 | 209 | return true; 210 | } 211 | 212 | private bool Terraforming() 213 | { 214 | if (Bot.HasInHand(CardId.DragonRavine)) 215 | return false; 216 | if (Bot.SpellZone[5] != null) 217 | return false; 218 | return true; 219 | } 220 | 221 | private bool SetUselessCards() 222 | { 223 | ClientField field = Bot; 224 | 225 | if (field.HasInSpellZone(CardId.FireFormationTenki)) 226 | return false; 227 | if (field.HasInSpellZone(CardId.AssaultTeleport)) 228 | return false; 229 | if (field.HasInSpellZone(CardId.CardsOfConsonance)) 230 | return false; 231 | if (field.HasInSpellZone(CardId.DragonsMirror)) 232 | return false; 233 | 234 | return Bot.GetSpellCountWithoutField() < 4; 235 | } 236 | 237 | private bool FireFormationTenki() 238 | { 239 | if (Card.Location == CardLocation.Hand) 240 | return Bot.GetSpellCountWithoutField() < 4; 241 | return true; 242 | } 243 | 244 | private bool FoolishBurial() 245 | { 246 | AI.SelectCard( 247 | CardId.DragunityPhalanx, 248 | CardId.AssaultBeast, 249 | CardId.StardustDragonAssaultMode 250 | ); 251 | return true; 252 | } 253 | 254 | private bool MonsterReborn() 255 | { 256 | List cards = new List(Bot.Graveyard.GetMatchingCards(card => card.IsCanRevive())); 257 | cards.Sort(CardContainer.CompareCardAttack); 258 | ClientCard selectedCard = null; 259 | for (int i = cards.Count - 1; i >= 0; --i) 260 | { 261 | ClientCard card = cards[i]; 262 | if (card.Attack < 2000) 263 | break; 264 | if (card.IsCode(CardId.StardustDragonAssaultMode, CardId.FiveHeadedDragon)) 265 | continue; 266 | if (card.IsMonster()) 267 | { 268 | selectedCard = card; 269 | break; 270 | } 271 | } 272 | cards = new List(Enemy.Graveyard.GetMatchingCards(card => card.IsCanRevive())); 273 | cards.Sort(CardContainer.CompareCardAttack); 274 | for (int i = cards.Count - 1; i >= 0; --i) 275 | { 276 | ClientCard card = cards[i]; 277 | if (card.Attack < 2000) 278 | break; 279 | if (card.IsMonster() && card.HasType(CardType.Normal) && (selectedCard == null || card.Attack > selectedCard.Attack)) 280 | { 281 | selectedCard = card; 282 | break; 283 | } 284 | } 285 | if (selectedCard != null) 286 | { 287 | AI.SelectCard(selectedCard); 288 | return true; 289 | } 290 | return false; 291 | } 292 | 293 | private bool DragonsMirror() 294 | { 295 | IList tributes = new List(); 296 | int phalanxCount = 0; 297 | foreach (ClientCard card in Bot.Graveyard) 298 | { 299 | if (card.IsCode(CardId.DragunityPhalanx)) 300 | { 301 | phalanxCount++; 302 | break; 303 | } 304 | if (card.Race == (int) CardRace.Dragon) 305 | tributes.Add(card); 306 | if (tributes.Count == 5) 307 | break; 308 | } 309 | 310 | // We can tribute one or two phalanx if needed, but only 311 | // if we have more than one in the graveyard. 312 | if (tributes.Count < 5 && phalanxCount > 1) 313 | { 314 | foreach (ClientCard card in Bot.Graveyard) 315 | { 316 | if (card.IsCode(CardId.DragunityPhalanx)) 317 | { 318 | phalanxCount--; 319 | tributes.Add(card); 320 | if (phalanxCount <= 1) 321 | break; 322 | } 323 | } 324 | } 325 | 326 | if (tributes.Count < 5) 327 | return false; 328 | 329 | AI.SelectCard(CardId.FiveHeadedDragon); 330 | AI.SelectNextCard(tributes); 331 | return true; 332 | } 333 | 334 | private bool ScrapDragonSummon() 335 | { 336 | //if (Util.IsOneEnemyBetterThanValue(2500, true)) 337 | // return true; 338 | ClientCard invincible = Util.GetProblematicEnemyCard(3000); 339 | return invincible != null; 340 | } 341 | 342 | private bool ScrapDragonEffect() 343 | { 344 | ClientCard invincible = Util.GetProblematicEnemyCard(3000); 345 | if (invincible == null && !Util.IsOneEnemyBetterThanValue(2800 - 1, false)) 346 | return false; 347 | 348 | int tributeId = -1; 349 | if (Bot.HasInSpellZone(CardId.FireFormationTenki)) 350 | tributeId = CardId.FireFormationTenki; 351 | else if (Bot.HasInSpellZone(CardId.Terraforming)) 352 | tributeId = CardId.Terraforming; 353 | else if (Bot.HasInSpellZone(CardId.DragonsMirror)) 354 | tributeId = CardId.DragonsMirror; 355 | else if (Bot.HasInSpellZone(CardId.CardsOfConsonance)) 356 | tributeId = CardId.CardsOfConsonance; 357 | else if (Bot.HasInSpellZone(CardId.AssaultTeleport)) 358 | tributeId = CardId.AssaultTeleport; 359 | else if (Bot.HasInSpellZone(CardId.AssaultModeActivate)) 360 | tributeId = CardId.AssaultModeActivate; 361 | else if (Bot.HasInSpellZone(CardId.DragonRavine)) 362 | tributeId = CardId.DragonRavine; 363 | 364 | List monsters = Enemy.GetMonsters(); 365 | monsters.Sort(CardContainer.CompareCardAttack); 366 | 367 | ClientCard destroyCard = invincible; 368 | if (destroyCard == null) 369 | { 370 | for (int i = monsters.Count - 1; i >= 0; --i) 371 | { 372 | if (monsters[i].IsAttack()) 373 | { 374 | destroyCard = monsters[i]; 375 | break; 376 | } 377 | } 378 | } 379 | 380 | if (destroyCard == null) 381 | return false; 382 | 383 | AI.SelectCard(tributeId); 384 | AI.SelectNextCard(destroyCard); 385 | 386 | return true; 387 | } 388 | 389 | private bool CrystalWingSynchroDragonSummon() 390 | { 391 | return !Bot.HasInHand(CardId.AssaultModeActivate) 392 | && !Bot.HasInHand(CardId.AssaultBeast) 393 | && !Bot.HasInSpellZone(CardId.AssaultModeActivate); 394 | } 395 | 396 | private bool CrystalWingSynchroDragonEffect() 397 | { 398 | return Duel.LastChainPlayer != 0; 399 | } 400 | 401 | private bool DragunityPhalanxSummon() 402 | { 403 | return Bot.HasInHand(CardId.DragunityArmaMysletainn); 404 | } 405 | 406 | private bool DragunityArmaMysletainn() 407 | { 408 | if (Bot.HasInMonstersZone(CardId.DragunityPhalanx)) 409 | { 410 | AI.SelectCard(CardId.DragunityPhalanx); 411 | return true; 412 | } 413 | if (Bot.HasInMonstersZone(CardId.DragunityDux)) 414 | { 415 | AI.SelectCard(CardId.DragunityDux); 416 | return true; 417 | } 418 | return false; 419 | } 420 | 421 | private bool DragunityArmaMysletainnEffect() 422 | { 423 | AI.SelectCard(CardId.DragunityPhalanx); 424 | return true; 425 | } 426 | 427 | private bool DragunityArmaMysletainnTribute() 428 | { 429 | if ((Bot.HasInMonstersZone(CardId.AssaultBeast) 430 | && Bot.HasInGraveyard(CardId.DragunityPhalanx)) 431 | || Bot.HasInMonstersZone(CardId.DragunityPhalanx) 432 | || Bot.HasInHand(CardId.DragunitySpearOfDestiny)) 433 | { 434 | List monster_sorted = Bot.GetMonsters(); 435 | monster_sorted.Sort(CardContainer.CompareCardAttack); 436 | foreach (ClientCard monster in monster_sorted) 437 | { 438 | AI.SelectMaterials(monster); 439 | return true; 440 | } 441 | } 442 | return false; 443 | } 444 | 445 | private bool DragunityDux() 446 | { 447 | return Bot.HasInGraveyard(CardId.DragunityPhalanx) || 448 | (Bot.GetMonsterCount() == 0 && Bot.HasInHand(CardId.DragunityArmaMysletainn) || 449 | Bot.HasInHand(CardId.DragunitySpearOfDestiny)); 450 | } 451 | 452 | private bool DragunityPhalanxSet() 453 | { 454 | return Bot.GetMonsterCount() == 0 || !Bot.HasInGraveyard(CardId.DragunityPhalanx); 455 | } 456 | 457 | private bool AssaultBeast() 458 | { 459 | if (!Bot.HasInSpellZone(CardId.AssaultModeActivate)) 460 | return true; 461 | return false; 462 | } 463 | 464 | private bool AssaultModeActivate() 465 | { 466 | if (Duel.Player == 0 && Duel.Phase == DuelPhase.BattleStart) 467 | { 468 | List monsters = Bot.GetMonsters(); 469 | foreach (ClientCard monster in monsters) 470 | { 471 | if (monster.IsCode(CardId.StardustDragon) && monster.Attacked) 472 | { 473 | AI.SelectCard(monster); 474 | return true; 475 | } 476 | } 477 | } 478 | return Duel.Player == 1; 479 | } 480 | } 481 | } -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/NeosExecutor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using WindBot; 3 | using WindBot.Game; 4 | using WindBot.Game.AI; 5 | using YGOSharp.OCGWrapper.Enums; 6 | namespace WindBot.Game.AI.Decks 7 | { 8 | 9 | [Deck("Neos", "Neo Jaden")] 10 | public class NeosExecutor: DefaultExecutor 11 | { 12 | public class CardId 13 | { 14 | // Initialize all normal monsters 15 | 16 | // Create all methods needed for ElementalHERONeos to work 17 | public const int ElementalHERONeos = 89943723; 18 | // Initialize all effect monsters 19 | 20 | // Create all methods needed for ElementalHEROHonestNeos to work 21 | public const int ElementalHEROHonestNeos = 14124483; 22 | 23 | // Create all methods needed for ElementalHERONeosAlius to work 24 | public const int ElementalHERONeosAlius = 69884162; 25 | 26 | // Create all methods needed for NeoSpacePathFinder to work 27 | public const int NeoSpacePathFinder = 19594506; 28 | 29 | // Create all methods needed for ElementalHEROStratos to work 30 | public const int ElementalHEROStratos = 40044918; 31 | 32 | // Create all methods needed for ElementalHEROPrisma to work 33 | public const int ElementalHEROPrisma = 89312388; 34 | 35 | // Create all methods needed for ElementalHEROBlazeman to work 36 | public const int ElementalHEROBlazeman = 63060238; 37 | 38 | // Create all methods needed for NeoSpaceConnector to work 39 | public const int NeoSpaceConnector = 85840608; 40 | 41 | // Create all methods needed for NeoSpacienGrandMole to work 42 | public const int NeoSpacienGrandMole = 80344569; 43 | 44 | // Create all methods needed for NeoSpacianAirHummingbird to work 45 | public const int NeoSpacianAirHummingbird = 54959865; 46 | 47 | // Create all methods needed for NeoSpacianAquaDolphin to work 48 | public const int NeoSpacianAquaDolphin = 17955766; 49 | 50 | // Create all methods needed for NeoSpacianFlareScarab to work 51 | public const int NeoSpacianFlareScarab = 89621922; 52 | // Initialize all special summonable effect monsters 53 | // Initialize all pure special summonable effect monsters 54 | 55 | // Create all methods needed for ElementalHEROStormNeos to work 56 | public const int ElementalHEROStormNeos = 49352945; 57 | 58 | // Create all methods needed for ElementalHeroMagmaNeos to work 59 | public const int ElementalHeroMagmaNeos = 78512663; 60 | 61 | // Create all methods needed for ElementalHeroAirNeos to work 62 | public const int ElementalHeroAirNeos = 11502550; 63 | 64 | // Create all methods needed for ElementalHeroGrandNeos to work 65 | public const int ElementalHeroGrandNeos = 48996569; 66 | 67 | // Create all methods needed for ElementalHeroAquaNeos to work 68 | public const int ElementalHeroAquaNeos = 55171412; 69 | 70 | // Create all methods needed for ElementalHeroBraveNeos to work 71 | public const int ElementalHeroBraveNeos = 64655485; 72 | 73 | // Create all methods needed for ElementalHeroFlareNeos to work 74 | public const int ElementalHeroFlareNeos = 81566151; 75 | 76 | // Create all methods needed for ElementalHeroSunrise to work 77 | public const int ElementalHeroSunrise = 22908820; 78 | 79 | // Create all methods needed for ElementalHeroNeosKnight to work 80 | public const int ElementalHeroNeosKnight = 72926163; 81 | // Initialize all spell and trap cards 82 | 83 | // Create all methods needed for MonsterReborn to work 84 | public const int MonsterReborn = 83764718; 85 | 86 | // Create all methods needed for NeosFusion to work 87 | public const int NeosFusion = 14088859; 88 | 89 | // Create all methods needed for Polymerization to work 90 | public const int Polymerization = 24094653; 91 | 92 | // Create all methods needed for MiracleContact to work 93 | public const int MiracleContact = 35255456; 94 | 95 | // Create all methods needed for InstantNeoSpace to work 96 | public const int InstantNeoSpace = 11913700; 97 | 98 | // Create all methods needed for NeoSpace to work 99 | public const int NeoSpace = 42015635; 100 | 101 | // Create all methods needed for DrowningMirrorForce to work 102 | public const int DrowningMirrorForce = 47475363; 103 | 104 | // Create all methods needed for NEXT to work 105 | public const int NEXT = 74414885; 106 | 107 | // Create all methods needed for CallOfTheHaunted to work 108 | public const int CallOfTheHaunted = 97077563; 109 | // Initialize all useless cards 110 | 111 | // Create all methods needed for AshBlossomJoyusSpring to work 112 | public const int AshBlossomJoyusSpring = 14558127; 113 | 114 | // Create all methods needed for GhostReaperWinterCherries to work 115 | public const int GhostReaperWinterCherries = 62015408; 116 | 117 | // Create all methods needed for PsyFrameGearGamma to work 118 | public const int PsyFrameGearGamma = 38814750; 119 | 120 | // Create all methods needed for DrollLockBird to work 121 | public const int DrollLockBird = 94145021; 122 | 123 | // Create all methods needed for ArtifactLancea to work 124 | public const int ArtifactLancea = 34267821; 125 | 126 | // Create all methods needed for GhostOgreSnowRabbit to work 127 | public const int GhostOgreSnowRabbit = 59438930; 128 | 129 | // Create all methods needed for NimbuThePrimeBeing to work 130 | public const int NimbuThePrimeBeing = 27204311; 131 | 132 | // Create all methods needed for EffectVailer to work 133 | public const int EffectVailer = 97268402; 134 | 135 | // Create all methods needed for DDCrow to work 136 | public const int DDCrow = 24508238; 137 | 138 | // Create all methods needed for Honest to work 139 | public const int Honest = 37742478; 140 | 141 | // Create all methods needed for Tragodia to work 142 | public const int Tragodia = 9877036; 143 | 144 | // Create all methods needed for GorzTheEmmisaryOfDarkness to work 145 | public const int GorzTheEmmisaryOfDarkness = 44330098; 146 | 147 | } 148 | public NeosExecutor(GameAI ai, Duel duel) 149 | : base(ai, duel) 150 | { 151 | // Add Executors to all normal monsters 152 | 153 | // Create all methods needed for ElementalHERONeos to work 154 | AddExecutor(ExecutorType.Summon, CardId.ElementalHERONeos, ElementalHERONeosNormalSummon); 155 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHERONeos, ElementalHERONeosMonsterSet); 156 | AddExecutor(ExecutorType.Repos, CardId.ElementalHERONeos, ElementalHERONeosRepos); 157 | // Add Executors to all effect monsters 158 | 159 | // Create all methods needed for ElementalHEROHonestNeos to work 160 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosNormalSummon); 161 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosMonsterSet); 162 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosRepos); 163 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosActivate); 164 | 165 | // Create all methods needed for ElementalHERONeosAlius to work 166 | AddExecutor(ExecutorType.Summon, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusNormalSummon); 167 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusMonsterSet); 168 | AddExecutor(ExecutorType.Repos, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusRepos); 169 | AddExecutor(ExecutorType.Activate, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusActivate); 170 | 171 | // Create all methods needed for NeoSpacePathFinder to work 172 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacePathFinder, NeoSpacePathFinderNormalSummon); 173 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacePathFinder, NeoSpacePathFinderMonsterSet); 174 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacePathFinder, NeoSpacePathFinderRepos); 175 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacePathFinder, NeoSpacePathFinderActivate); 176 | 177 | // Create all methods needed for ElementalHEROStratos to work 178 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROStratos, ElementalHEROStratosNormalSummon); 179 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROStratos, ElementalHEROStratosMonsterSet); 180 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROStratos, ElementalHEROStratosRepos); 181 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROStratos, ElementalHEROStratosActivate); 182 | 183 | // Create all methods needed for ElementalHEROPrisma to work 184 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROPrisma, ElementalHEROPrismaNormalSummon); 185 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROPrisma, ElementalHEROPrismaMonsterSet); 186 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROPrisma, ElementalHEROPrismaRepos); 187 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROPrisma, ElementalHEROPrismaActivate); 188 | 189 | // Create all methods needed for ElementalHEROBlazeman to work 190 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanNormalSummon); 191 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanMonsterSet); 192 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanRepos); 193 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanActivate); 194 | 195 | // Create all methods needed for NeoSpaceConnector to work 196 | AddExecutor(ExecutorType.Summon, CardId.NeoSpaceConnector, NeoSpaceConnectorNormalSummon); 197 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpaceConnector, NeoSpaceConnectorMonsterSet); 198 | AddExecutor(ExecutorType.Repos, CardId.NeoSpaceConnector, NeoSpaceConnectorRepos); 199 | AddExecutor(ExecutorType.Activate, CardId.NeoSpaceConnector, NeoSpaceConnectorActivate); 200 | 201 | // Create all methods needed for NeoSpacienGrandMole to work 202 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleNormalSummon); 203 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleMonsterSet); 204 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleRepos); 205 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleActivate); 206 | 207 | // Create all methods needed for NeoSpacianAirHummingbird to work 208 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdNormalSummon); 209 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdMonsterSet); 210 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdRepos); 211 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdActivate); 212 | 213 | // Create all methods needed for NeoSpacianAquaDolphin to work 214 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinNormalSummon); 215 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinMonsterSet); 216 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinRepos); 217 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinActivate); 218 | 219 | // Create all methods needed for NeoSpacianFlareScarab to work 220 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabNormalSummon); 221 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabMonsterSet); 222 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabRepos); 223 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabActivate); 224 | // Add Executors to all special summonable effect monsters 225 | // Add Executors to all summonable effect monsters 226 | 227 | // Create all methods needed for ElementalHEROStormNeos to work 228 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosRepos); 229 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosActivate); 230 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosSpSummon); 231 | 232 | // Create all methods needed for ElementalHeroMagmaNeos to work 233 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosRepos); 234 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosActivate); 235 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosSpSummon); 236 | 237 | // Create all methods needed for ElementalHeroAirNeos to work 238 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosRepos); 239 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosActivate); 240 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosSpSummon); 241 | 242 | // Create all methods needed for ElementalHeroGrandNeos to work 243 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosRepos); 244 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosActivate); 245 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosSpSummon); 246 | 247 | // Create all methods needed for ElementalHeroAquaNeos to work 248 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosRepos); 249 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosActivate); 250 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosSpSummon); 251 | 252 | // Create all methods needed for ElementalHeroBraveNeos to work 253 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosRepos); 254 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosActivate); 255 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosSpSummon); 256 | 257 | // Create all methods needed for ElementalHeroFlareNeos to work 258 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosRepos); 259 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosActivate); 260 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosSpSummon); 261 | 262 | // Create all methods needed for ElementalHeroSunrise to work 263 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroSunrise, ElementalHeroSunriseRepos); 264 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroSunrise, ElementalHeroSunriseActivate); 265 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroSunrise, ElementalHeroSunriseSpSummon); 266 | 267 | // Create all methods needed for ElementalHeroNeosKnight to work 268 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightRepos); 269 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightActivate); 270 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightSpSummon); 271 | // Add Executors to all spell and trap cards 272 | 273 | // Create all methods needed for MonsterReborn to work 274 | AddExecutor(ExecutorType.SpellSet, CardId.MonsterReborn, MonsterRebornSpellSet); 275 | AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterRebornActivate); 276 | 277 | // Create all methods needed for NeosFusion to work 278 | AddExecutor(ExecutorType.SpellSet, CardId.NeosFusion, NeosFusionSpellSet); 279 | AddExecutor(ExecutorType.Activate, CardId.NeosFusion, NeosFusionActivate); 280 | 281 | // Create all methods needed for Polymerization to work 282 | AddExecutor(ExecutorType.SpellSet, CardId.Polymerization, PolymerizationSpellSet); 283 | AddExecutor(ExecutorType.Activate, CardId.Polymerization, PolymerizationActivate); 284 | 285 | // Create all methods needed for MiracleContact to work 286 | AddExecutor(ExecutorType.SpellSet, CardId.MiracleContact, MiracleContactSpellSet); 287 | AddExecutor(ExecutorType.Activate, CardId.MiracleContact, MiracleContactActivate); 288 | 289 | // Create all methods needed for InstantNeoSpace to work 290 | AddExecutor(ExecutorType.SpellSet, CardId.InstantNeoSpace, InstantNeoSpaceSpellSet); 291 | AddExecutor(ExecutorType.Activate, CardId.InstantNeoSpace, InstantNeoSpaceActivate); 292 | 293 | // Create all methods needed for NeoSpace to work 294 | AddExecutor(ExecutorType.SpellSet, CardId.NeoSpace, NeoSpaceSpellSet); 295 | AddExecutor(ExecutorType.Activate, CardId.NeoSpace, NeoSpaceActivate); 296 | 297 | // Create all methods needed for DrowningMirrorForce to work 298 | AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, DrowningMirrorForceSpellSet); 299 | AddExecutor(ExecutorType.Activate, CardId.DrowningMirrorForce, DrowningMirrorForceActivate); 300 | 301 | // Create all methods needed for NEXT to work 302 | AddExecutor(ExecutorType.SpellSet, CardId.NEXT, NEXTSpellSet); 303 | AddExecutor(ExecutorType.Activate, CardId.NEXT, NEXTActivate); 304 | 305 | // Create all methods needed for CallOfTheHaunted to work 306 | AddExecutor(ExecutorType.SpellSet, CardId.CallOfTheHaunted, CallOfTheHauntedSpellSet); 307 | AddExecutor(ExecutorType.Activate, CardId.CallOfTheHaunted, CallOfTheHauntedActivate); 308 | 309 | } 310 | 311 | // All Normal Monster Methods 312 | 313 | // Create all methods needed for ElementalHERONeos to work 314 | 315 | private bool ElementalHERONeosNormalSummon() 316 | { 317 | 318 | return true; 319 | } 320 | 321 | private bool ElementalHERONeosMonsterSet() 322 | { 323 | 324 | return true; 325 | } 326 | 327 | private bool ElementalHERONeosRepos() 328 | { 329 | 330 | return DefaultMonsterRepos; 331 | } 332 | 333 | // All Effect Monster Methods 334 | 335 | // Create all methods needed for ElementalHEROHonestNeos to work 336 | 337 | private bool ElementalHEROHonestNeosNormalSummon() 338 | { 339 | 340 | return true; 341 | } 342 | 343 | private bool ElementalHEROHonestNeosMonsterSet() 344 | { 345 | 346 | return true; 347 | } 348 | 349 | private bool ElementalHEROHonestNeosRepos() 350 | { 351 | 352 | return DefaultMonsterRepos; 353 | } 354 | 355 | private bool ElementalHEROHonestNeosActivate() 356 | { 357 | 358 | return true; 359 | } 360 | 361 | // Create all methods needed for ElementalHERONeosAlius to work 362 | 363 | private bool ElementalHERONeosAliusNormalSummon() 364 | { 365 | 366 | return true; 367 | } 368 | 369 | private bool ElementalHERONeosAliusMonsterSet() 370 | { 371 | 372 | return true; 373 | } 374 | 375 | private bool ElementalHERONeosAliusRepos() 376 | { 377 | 378 | return DefaultMonsterRepos; 379 | } 380 | 381 | private bool ElementalHERONeosAliusActivate() 382 | { 383 | 384 | return true; 385 | } 386 | 387 | // Create all methods needed for NeoSpacePathFinder to work 388 | 389 | private bool NeoSpacePathFinderNormalSummon() 390 | { 391 | 392 | return true; 393 | } 394 | 395 | private bool NeoSpacePathFinderMonsterSet() 396 | { 397 | 398 | return true; 399 | } 400 | 401 | private bool NeoSpacePathFinderRepos() 402 | { 403 | 404 | return DefaultMonsterRepos; 405 | } 406 | 407 | private bool NeoSpacePathFinderActivate() 408 | { 409 | 410 | return true; 411 | } 412 | 413 | // Create all methods needed for ElementalHEROStratos to work 414 | 415 | private bool ElementalHEROStratosNormalSummon() 416 | { 417 | 418 | return true; 419 | } 420 | 421 | private bool ElementalHEROStratosMonsterSet() 422 | { 423 | 424 | return true; 425 | } 426 | 427 | private bool ElementalHEROStratosRepos() 428 | { 429 | 430 | return DefaultMonsterRepos; 431 | } 432 | 433 | private bool ElementalHEROStratosActivate() 434 | { 435 | 436 | return true; 437 | } 438 | 439 | // Create all methods needed for ElementalHEROPrisma to work 440 | 441 | private bool ElementalHEROPrismaNormalSummon() 442 | { 443 | 444 | return true; 445 | } 446 | 447 | private bool ElementalHEROPrismaMonsterSet() 448 | { 449 | 450 | return true; 451 | } 452 | 453 | private bool ElementalHEROPrismaRepos() 454 | { 455 | 456 | return DefaultMonsterRepos; 457 | } 458 | 459 | private bool ElementalHEROPrismaActivate() 460 | { 461 | 462 | return true; 463 | } 464 | 465 | // Create all methods needed for ElementalHEROBlazeman to work 466 | 467 | private bool ElementalHEROBlazemanNormalSummon() 468 | { 469 | 470 | return true; 471 | } 472 | 473 | private bool ElementalHEROBlazemanMonsterSet() 474 | { 475 | 476 | return true; 477 | } 478 | 479 | private bool ElementalHEROBlazemanRepos() 480 | { 481 | 482 | return DefaultMonsterRepos; 483 | } 484 | 485 | private bool ElementalHEROBlazemanActivate() 486 | { 487 | 488 | return true; 489 | } 490 | 491 | // Create all methods needed for NeoSpaceConnector to work 492 | 493 | private bool NeoSpaceConnectorNormalSummon() 494 | { 495 | 496 | return true; 497 | } 498 | 499 | private bool NeoSpaceConnectorMonsterSet() 500 | { 501 | 502 | return true; 503 | } 504 | 505 | private bool NeoSpaceConnectorRepos() 506 | { 507 | 508 | return DefaultMonsterRepos; 509 | } 510 | 511 | private bool NeoSpaceConnectorActivate() 512 | { 513 | 514 | return true; 515 | } 516 | 517 | // Create all methods needed for NeoSpacienGrandMole to work 518 | 519 | private bool NeoSpacienGrandMoleNormalSummon() 520 | { 521 | 522 | return true; 523 | } 524 | 525 | private bool NeoSpacienGrandMoleMonsterSet() 526 | { 527 | 528 | return true; 529 | } 530 | 531 | private bool NeoSpacienGrandMoleRepos() 532 | { 533 | 534 | return DefaultMonsterRepos; 535 | } 536 | 537 | private bool NeoSpacienGrandMoleActivate() 538 | { 539 | 540 | return true; 541 | } 542 | 543 | // Create all methods needed for NeoSpacianAirHummingbird to work 544 | 545 | private bool NeoSpacianAirHummingbirdNormalSummon() 546 | { 547 | 548 | return true; 549 | } 550 | 551 | private bool NeoSpacianAirHummingbirdMonsterSet() 552 | { 553 | 554 | return true; 555 | } 556 | 557 | private bool NeoSpacianAirHummingbirdRepos() 558 | { 559 | 560 | return DefaultMonsterRepos; 561 | } 562 | 563 | private bool NeoSpacianAirHummingbirdActivate() 564 | { 565 | 566 | return true; 567 | } 568 | 569 | // Create all methods needed for NeoSpacianAquaDolphin to work 570 | 571 | private bool NeoSpacianAquaDolphinNormalSummon() 572 | { 573 | 574 | return true; 575 | } 576 | 577 | private bool NeoSpacianAquaDolphinMonsterSet() 578 | { 579 | 580 | return true; 581 | } 582 | 583 | private bool NeoSpacianAquaDolphinRepos() 584 | { 585 | 586 | return DefaultMonsterRepos; 587 | } 588 | 589 | private bool NeoSpacianAquaDolphinActivate() 590 | { 591 | 592 | return true; 593 | } 594 | 595 | // Create all methods needed for NeoSpacianFlareScarab to work 596 | 597 | private bool NeoSpacianFlareScarabNormalSummon() 598 | { 599 | 600 | return true; 601 | } 602 | 603 | private bool NeoSpacianFlareScarabMonsterSet() 604 | { 605 | 606 | return true; 607 | } 608 | 609 | private bool NeoSpacianFlareScarabRepos() 610 | { 611 | 612 | return DefaultMonsterRepos; 613 | } 614 | 615 | private bool NeoSpacianFlareScarabActivate() 616 | { 617 | 618 | return true; 619 | } 620 | 621 | // All Special Summonable Effect Monster Methods 622 | 623 | // All Pure Special Summonable Effect Monster Methods 624 | 625 | // Create all methods needed for ElementalHEROStormNeos to work 626 | 627 | private bool ElementalHEROStormNeosRepos() 628 | { 629 | 630 | return DefaultMonsterRepos; 631 | } 632 | 633 | private bool ElementalHEROStormNeosActivate() 634 | { 635 | 636 | return true; 637 | } 638 | 639 | private bool ElementalHEROStormNeosSpSummon() 640 | { 641 | 642 | return true; 643 | } 644 | 645 | // Create all methods needed for ElementalHeroMagmaNeos to work 646 | 647 | private bool ElementalHeroMagmaNeosRepos() 648 | { 649 | 650 | return DefaultMonsterRepos; 651 | } 652 | 653 | private bool ElementalHeroMagmaNeosActivate() 654 | { 655 | 656 | return true; 657 | } 658 | 659 | private bool ElementalHeroMagmaNeosSpSummon() 660 | { 661 | 662 | return true; 663 | } 664 | 665 | // Create all methods needed for ElementalHeroAirNeos to work 666 | 667 | private bool ElementalHeroAirNeosRepos() 668 | { 669 | 670 | return DefaultMonsterRepos; 671 | } 672 | 673 | private bool ElementalHeroAirNeosActivate() 674 | { 675 | 676 | return true; 677 | } 678 | 679 | private bool ElementalHeroAirNeosSpSummon() 680 | { 681 | 682 | return true; 683 | } 684 | 685 | // Create all methods needed for ElementalHeroGrandNeos to work 686 | 687 | private bool ElementalHeroGrandNeosRepos() 688 | { 689 | 690 | return DefaultMonsterRepos; 691 | } 692 | 693 | private bool ElementalHeroGrandNeosActivate() 694 | { 695 | 696 | return true; 697 | } 698 | 699 | private bool ElementalHeroGrandNeosSpSummon() 700 | { 701 | 702 | return true; 703 | } 704 | 705 | // Create all methods needed for ElementalHeroAquaNeos to work 706 | 707 | private bool ElementalHeroAquaNeosRepos() 708 | { 709 | 710 | return DefaultMonsterRepos; 711 | } 712 | 713 | private bool ElementalHeroAquaNeosActivate() 714 | { 715 | 716 | return true; 717 | } 718 | 719 | private bool ElementalHeroAquaNeosSpSummon() 720 | { 721 | 722 | return true; 723 | } 724 | 725 | // Create all methods needed for ElementalHeroBraveNeos to work 726 | 727 | private bool ElementalHeroBraveNeosRepos() 728 | { 729 | 730 | return DefaultMonsterRepos; 731 | } 732 | 733 | private bool ElementalHeroBraveNeosActivate() 734 | { 735 | 736 | return true; 737 | } 738 | 739 | private bool ElementalHeroBraveNeosSpSummon() 740 | { 741 | 742 | return true; 743 | } 744 | 745 | // Create all methods needed for ElementalHeroFlareNeos to work 746 | 747 | private bool ElementalHeroFlareNeosRepos() 748 | { 749 | 750 | return DefaultMonsterRepos; 751 | } 752 | 753 | private bool ElementalHeroFlareNeosActivate() 754 | { 755 | 756 | return true; 757 | } 758 | 759 | private bool ElementalHeroFlareNeosSpSummon() 760 | { 761 | 762 | return true; 763 | } 764 | 765 | // Create all methods needed for ElementalHeroSunrise to work 766 | 767 | private bool ElementalHeroSunriseRepos() 768 | { 769 | 770 | return DefaultMonsterRepos; 771 | } 772 | 773 | private bool ElementalHeroSunriseActivate() 774 | { 775 | 776 | return true; 777 | } 778 | 779 | private bool ElementalHeroSunriseSpSummon() 780 | { 781 | 782 | return true; 783 | } 784 | 785 | // Create all methods needed for ElementalHeroNeosKnight to work 786 | 787 | private bool ElementalHeroNeosKnightRepos() 788 | { 789 | 790 | return DefaultMonsterRepos; 791 | } 792 | 793 | private bool ElementalHeroNeosKnightActivate() 794 | { 795 | 796 | return true; 797 | } 798 | 799 | private bool ElementalHeroNeosKnightSpSummon() 800 | { 801 | 802 | return true; 803 | } 804 | 805 | // All Spell and Trap Card Methods 806 | 807 | // Create all methods needed for MonsterReborn to work 808 | 809 | private bool MonsterRebornSpellSet() 810 | { 811 | 812 | return DefaultSpellSet; 813 | } 814 | 815 | private bool MonsterRebornActivate() 816 | { 817 | 818 | return true; 819 | } 820 | 821 | // Create all methods needed for NeosFusion to work 822 | 823 | private bool NeosFusionSpellSet() 824 | { 825 | 826 | return DefaultSpellSet; 827 | } 828 | 829 | private bool NeosFusionActivate() 830 | { 831 | 832 | return true; 833 | } 834 | 835 | // Create all methods needed for Polymerization to work 836 | 837 | private bool PolymerizationSpellSet() 838 | { 839 | 840 | return DefaultSpellSet; 841 | } 842 | 843 | private bool PolymerizationActivate() 844 | { 845 | 846 | return true; 847 | } 848 | 849 | // Create all methods needed for MiracleContact to work 850 | 851 | private bool MiracleContactSpellSet() 852 | { 853 | 854 | return DefaultSpellSet; 855 | } 856 | 857 | private bool MiracleContactActivate() 858 | { 859 | 860 | return true; 861 | } 862 | 863 | // Create all methods needed for InstantNeoSpace to work 864 | 865 | private bool InstantNeoSpaceSpellSet() 866 | { 867 | 868 | return DefaultSpellSet; 869 | } 870 | 871 | private bool InstantNeoSpaceActivate() 872 | { 873 | 874 | return true; 875 | } 876 | 877 | // Create all methods needed for NeoSpace to work 878 | 879 | private bool NeoSpaceSpellSet() 880 | { 881 | 882 | return DefaultSpellSet; 883 | } 884 | 885 | private bool NeoSpaceActivate() 886 | { 887 | 888 | return true; 889 | } 890 | 891 | // Create all methods needed for DrowningMirrorForce to work 892 | 893 | private bool DrowningMirrorForceSpellSet() 894 | { 895 | 896 | return DefaultSpellSet; 897 | } 898 | 899 | private bool DrowningMirrorForceActivate() 900 | { 901 | 902 | return true; 903 | } 904 | 905 | // Create all methods needed for NEXT to work 906 | 907 | private bool NEXTSpellSet() 908 | { 909 | 910 | return DefaultSpellSet; 911 | } 912 | 913 | private bool NEXTActivate() 914 | { 915 | 916 | return true; 917 | } 918 | 919 | // Create all methods needed for CallOfTheHaunted to work 920 | 921 | private bool CallOfTheHauntedSpellSet() 922 | { 923 | 924 | return DefaultSpellSet; 925 | } 926 | 927 | private bool CallOfTheHauntedActivate() 928 | { 929 | 930 | return true; 931 | } 932 | 933 | } 934 | } -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/NeosExecutor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using WindBot; 3 | using WindBot.Game; 4 | using WindBot.Game.AI; 5 | using YGOSharp.OCGWrapper.Enums; 6 | namespace WindBot.Game.AI.Decks 7 | { 8 | 9 | [Deck("Neos", "Neo Jaden")] 10 | public class NeosExecutor: DefaultExecutor 11 | { 12 | public class CardId 13 | { 14 | // Initialize all normal monsters 15 | 16 | // Create all methods needed for ElementalHERONeos to work 17 | public const int ElementalHERONeos = 89943723; 18 | // Initialize all effect monsters 19 | 20 | // Create all methods needed for ElementalHEROHonestNeos to work 21 | public const int ElementalHEROHonestNeos = 14124483; 22 | 23 | // Create all methods needed for ElementalHERONeosAlius to work 24 | public const int ElementalHERONeosAlius = 69884162; 25 | 26 | // Create all methods needed for NeoSpacePathFinder to work 27 | public const int NeoSpacePathFinder = 19594506; 28 | 29 | // Create all methods needed for ElementalHEROStratos to work 30 | public const int ElementalHEROStratos = 40044918; 31 | 32 | // Create all methods needed for ElementalHEROPrisma to work 33 | public const int ElementalHEROPrisma = 89312388; 34 | 35 | // Create all methods needed for ElementalHEROBlazeman to work 36 | public const int ElementalHEROBlazeman = 63060238; 37 | 38 | // Create all methods needed for NeoSpaceConnector to work 39 | public const int NeoSpaceConnector = 85840608; 40 | 41 | // Create all methods needed for NeoSpacienGrandMole to work 42 | public const int NeoSpacienGrandMole = 80344569; 43 | 44 | // Create all methods needed for NeoSpacianAirHummingbird to work 45 | public const int NeoSpacianAirHummingbird = 54959865; 46 | 47 | // Create all methods needed for NeoSpacianAquaDolphin to work 48 | public const int NeoSpacianAquaDolphin = 17955766; 49 | 50 | // Create all methods needed for NeoSpacianFlareScarab to work 51 | public const int NeoSpacianFlareScarab = 89621922; 52 | // Initialize all special summonable effect monsters 53 | // Initialize all pure special summonable effect monsters 54 | 55 | // Create all methods needed for ElementalHEROStormNeos to work 56 | public const int ElementalHEROStormNeos = 49352945; 57 | 58 | // Create all methods needed for ElementalHeroMagmaNeos to work 59 | public const int ElementalHeroMagmaNeos = 78512663; 60 | 61 | // Create all methods needed for ElementalHeroAirNeos to work 62 | public const int ElementalHeroAirNeos = 11502550; 63 | 64 | // Create all methods needed for ElementalHeroGrandNeos to work 65 | public const int ElementalHeroGrandNeos = 48996569; 66 | 67 | // Create all methods needed for ElementalHeroAquaNeos to work 68 | public const int ElementalHeroAquaNeos = 55171412; 69 | 70 | // Create all methods needed for ElementalHeroBraveNeos to work 71 | public const int ElementalHeroBraveNeos = 64655485; 72 | 73 | // Create all methods needed for ElementalHeroFlareNeos to work 74 | public const int ElementalHeroFlareNeos = 81566151; 75 | 76 | // Create all methods needed for ElementalHeroSunrise to work 77 | public const int ElementalHeroSunrise = 22908820; 78 | 79 | // Create all methods needed for ElementalHeroNeosKnight to work 80 | public const int ElementalHeroNeosKnight = 72926163; 81 | // Initialize all spell and trap cards 82 | 83 | // Create all methods needed for MonsterReborn to work 84 | public const int MonsterReborn = 83764718; 85 | 86 | // Create all methods needed for NeosFusion to work 87 | public const int NeosFusion = 14088859; 88 | 89 | // Create all methods needed for Polymerization to work 90 | public const int Polymerization = 24094653; 91 | 92 | // Create all methods needed for MiracleContact to work 93 | public const int MiracleContact = 35255456; 94 | 95 | // Create all methods needed for InstantNeoSpace to work 96 | public const int InstantNeoSpace = 11913700; 97 | 98 | // Create all methods needed for NeoSpace to work 99 | public const int NeoSpace = 42015635; 100 | 101 | // Create all methods needed for DrowningMirrorForce to work 102 | public const int DrowningMirrorForce = 47475363; 103 | 104 | // Create all methods needed for NEXT to work 105 | public const int NEXT = 74414885; 106 | 107 | // Create all methods needed for CallOfTheHaunted to work 108 | public const int CallOfTheHaunted = 97077563; 109 | // Initialize all useless cards 110 | 111 | // Create all methods needed for AshBlossomJoyusSpring to work 112 | public const int AshBlossomJoyusSpring = 14558127; 113 | 114 | // Create all methods needed for GhostReaperWinterCherries to work 115 | public const int GhostReaperWinterCherries = 62015408; 116 | 117 | // Create all methods needed for PsyFrameGearGamma to work 118 | public const int PsyFrameGearGamma = 38814750; 119 | 120 | // Create all methods needed for DrollLockBird to work 121 | public const int DrollLockBird = 94145021; 122 | 123 | // Create all methods needed for ArtifactLancea to work 124 | public const int ArtifactLancea = 34267821; 125 | 126 | // Create all methods needed for GhostOgreSnowRabbit to work 127 | public const int GhostOgreSnowRabbit = 59438930; 128 | 129 | // Create all methods needed for NimbuThePrimeBeing to work 130 | public const int NimbuThePrimeBeing = 27204311; 131 | 132 | // Create all methods needed for EffectVailer to work 133 | public const int EffectVailer = 97268402; 134 | 135 | // Create all methods needed for DDCrow to work 136 | public const int DDCrow = 24508238; 137 | 138 | // Create all methods needed for Honest to work 139 | public const int Honest = 37742478; 140 | 141 | // Create all methods needed for Tragodia to work 142 | public const int Tragodia = 9877036; 143 | 144 | // Create all methods needed for GorzTheEmmisaryOfDarkness to work 145 | public const int GorzTheEmmisaryOfDarkness = 44330098; 146 | 147 | } 148 | public NeosExecutor(GameAI ai, Duel duel) 149 | : base(ai, duel) 150 | { 151 | // Add Executors to all normal monsters 152 | 153 | // Create all methods needed for ElementalHERONeos to work 154 | AddExecutor(ExecutorType.Summon, CardId.ElementalHERONeos, ElementalHERONeosNormalSummon); 155 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHERONeos, ElementalHERONeosMonsterSet); 156 | AddExecutor(ExecutorType.Repos, CardId.ElementalHERONeos, ElementalHERONeosRepos); 157 | // Add Executors to all effect monsters 158 | 159 | // Create all methods needed for ElementalHEROHonestNeos to work 160 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosNormalSummon); 161 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosMonsterSet); 162 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosRepos); 163 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosActivate); 164 | 165 | // Create all methods needed for ElementalHERONeosAlius to work 166 | AddExecutor(ExecutorType.Summon, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusNormalSummon); 167 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusMonsterSet); 168 | AddExecutor(ExecutorType.Repos, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusRepos); 169 | AddExecutor(ExecutorType.Activate, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusActivate); 170 | 171 | // Create all methods needed for NeoSpacePathFinder to work 172 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacePathFinder, NeoSpacePathFinderNormalSummon); 173 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacePathFinder, NeoSpacePathFinderMonsterSet); 174 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacePathFinder, NeoSpacePathFinderRepos); 175 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacePathFinder, NeoSpacePathFinderActivate); 176 | 177 | // Create all methods needed for ElementalHEROStratos to work 178 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROStratos, ElementalHEROStratosNormalSummon); 179 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROStratos, ElementalHEROStratosMonsterSet); 180 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROStratos, ElementalHEROStratosRepos); 181 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROStratos, ElementalHEROStratosActivate); 182 | 183 | // Create all methods needed for ElementalHEROPrisma to work 184 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROPrisma, ElementalHEROPrismaNormalSummon); 185 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROPrisma, ElementalHEROPrismaMonsterSet); 186 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROPrisma, ElementalHEROPrismaRepos); 187 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROPrisma, ElementalHEROPrismaActivate); 188 | 189 | // Create all methods needed for ElementalHEROBlazeman to work 190 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanNormalSummon); 191 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanMonsterSet); 192 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanRepos); 193 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanActivate); 194 | 195 | // Create all methods needed for NeoSpaceConnector to work 196 | AddExecutor(ExecutorType.Summon, CardId.NeoSpaceConnector, NeoSpaceConnectorNormalSummon); 197 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpaceConnector, NeoSpaceConnectorMonsterSet); 198 | AddExecutor(ExecutorType.Repos, CardId.NeoSpaceConnector, NeoSpaceConnectorRepos); 199 | AddExecutor(ExecutorType.Activate, CardId.NeoSpaceConnector, NeoSpaceConnectorActivate); 200 | 201 | // Create all methods needed for NeoSpacienGrandMole to work 202 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleNormalSummon); 203 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleMonsterSet); 204 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleRepos); 205 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleActivate); 206 | 207 | // Create all methods needed for NeoSpacianAirHummingbird to work 208 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdNormalSummon); 209 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdMonsterSet); 210 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdRepos); 211 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdActivate); 212 | 213 | // Create all methods needed for NeoSpacianAquaDolphin to work 214 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinNormalSummon); 215 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinMonsterSet); 216 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinRepos); 217 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinActivate); 218 | 219 | // Create all methods needed for NeoSpacianFlareScarab to work 220 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabNormalSummon); 221 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabMonsterSet); 222 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabRepos); 223 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabActivate); 224 | // Add Executors to all special summonable effect monsters 225 | // Add Executors to all summonable effect monsters 226 | 227 | // Create all methods needed for ElementalHEROStormNeos to work 228 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosRepos); 229 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosActivate); 230 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosSpSummon); 231 | 232 | // Create all methods needed for ElementalHeroMagmaNeos to work 233 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosRepos); 234 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosActivate); 235 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosSpSummon); 236 | 237 | // Create all methods needed for ElementalHeroAirNeos to work 238 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosRepos); 239 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosActivate); 240 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosSpSummon); 241 | 242 | // Create all methods needed for ElementalHeroGrandNeos to work 243 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosRepos); 244 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosActivate); 245 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosSpSummon); 246 | 247 | // Create all methods needed for ElementalHeroAquaNeos to work 248 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosRepos); 249 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosActivate); 250 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosSpSummon); 251 | 252 | // Create all methods needed for ElementalHeroBraveNeos to work 253 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosRepos); 254 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosActivate); 255 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosSpSummon); 256 | 257 | // Create all methods needed for ElementalHeroFlareNeos to work 258 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosRepos); 259 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosActivate); 260 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosSpSummon); 261 | 262 | // Create all methods needed for ElementalHeroSunrise to work 263 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroSunrise, ElementalHeroSunriseRepos); 264 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroSunrise, ElementalHeroSunriseActivate); 265 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroSunrise, ElementalHeroSunriseSpSummon); 266 | 267 | // Create all methods needed for ElementalHeroNeosKnight to work 268 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightRepos); 269 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightActivate); 270 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightSpSummon); 271 | // Add Executors to all spell and trap cards 272 | 273 | // Create all methods needed for MonsterReborn to work 274 | AddExecutor(ExecutorType.SpellSet, CardId.MonsterReborn, MonsterRebornSpellSet); 275 | AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterRebornActivate); 276 | 277 | // Create all methods needed for NeosFusion to work 278 | AddExecutor(ExecutorType.SpellSet, CardId.NeosFusion, NeosFusionSpellSet); 279 | AddExecutor(ExecutorType.Activate, CardId.NeosFusion, NeosFusionActivate); 280 | 281 | // Create all methods needed for Polymerization to work 282 | AddExecutor(ExecutorType.SpellSet, CardId.Polymerization, PolymerizationSpellSet); 283 | AddExecutor(ExecutorType.Activate, CardId.Polymerization, PolymerizationActivate); 284 | 285 | // Create all methods needed for MiracleContact to work 286 | AddExecutor(ExecutorType.SpellSet, CardId.MiracleContact, MiracleContactSpellSet); 287 | AddExecutor(ExecutorType.Activate, CardId.MiracleContact, MiracleContactActivate); 288 | 289 | // Create all methods needed for InstantNeoSpace to work 290 | AddExecutor(ExecutorType.SpellSet, CardId.InstantNeoSpace, InstantNeoSpaceSpellSet); 291 | AddExecutor(ExecutorType.Activate, CardId.InstantNeoSpace, InstantNeoSpaceActivate); 292 | 293 | // Create all methods needed for NeoSpace to work 294 | AddExecutor(ExecutorType.SpellSet, CardId.NeoSpace, NeoSpaceSpellSet); 295 | AddExecutor(ExecutorType.Activate, CardId.NeoSpace, NeoSpaceActivate); 296 | 297 | // Create all methods needed for DrowningMirrorForce to work 298 | AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, DrowningMirrorForceSpellSet); 299 | AddExecutor(ExecutorType.Activate, CardId.DrowningMirrorForce, DrowningMirrorForceActivate); 300 | 301 | // Create all methods needed for NEXT to work 302 | AddExecutor(ExecutorType.SpellSet, CardId.NEXT, NEXTSpellSet); 303 | AddExecutor(ExecutorType.Activate, CardId.NEXT, NEXTActivate); 304 | 305 | // Create all methods needed for CallOfTheHaunted to work 306 | AddExecutor(ExecutorType.SpellSet, CardId.CallOfTheHaunted, CallOfTheHauntedSpellSet); 307 | AddExecutor(ExecutorType.Activate, CardId.CallOfTheHaunted, CallOfTheHauntedActivate); 308 | 309 | } 310 | 311 | // All Normal Monster Methods 312 | 313 | // Create all methods needed for ElementalHERONeos to work 314 | 315 | private bool ElementalHERONeosNormalSummon() 316 | { 317 | 318 | return true; 319 | } 320 | 321 | private bool ElementalHERONeosMonsterSet() 322 | { 323 | 324 | return true; 325 | } 326 | 327 | private bool ElementalHERONeosRepos() 328 | { 329 | 330 | return DefaultMonsterRepos; 331 | } 332 | 333 | // All Effect Monster Methods 334 | 335 | // Create all methods needed for ElementalHEROHonestNeos to work 336 | 337 | private bool ElementalHEROHonestNeosNormalSummon() 338 | { 339 | 340 | return true; 341 | } 342 | 343 | private bool ElementalHEROHonestNeosMonsterSet() 344 | { 345 | 346 | return true; 347 | } 348 | 349 | private bool ElementalHEROHonestNeosRepos() 350 | { 351 | 352 | return DefaultMonsterRepos; 353 | } 354 | 355 | private bool ElementalHEROHonestNeosActivate() 356 | { 357 | 358 | return true; 359 | } 360 | 361 | // Create all methods needed for ElementalHERONeosAlius to work 362 | 363 | private bool ElementalHERONeosAliusNormalSummon() 364 | { 365 | 366 | return true; 367 | } 368 | 369 | private bool ElementalHERONeosAliusMonsterSet() 370 | { 371 | 372 | return true; 373 | } 374 | 375 | private bool ElementalHERONeosAliusRepos() 376 | { 377 | 378 | return DefaultMonsterRepos; 379 | } 380 | 381 | private bool ElementalHERONeosAliusActivate() 382 | { 383 | 384 | return true; 385 | } 386 | 387 | // Create all methods needed for NeoSpacePathFinder to work 388 | 389 | private bool NeoSpacePathFinderNormalSummon() 390 | { 391 | 392 | return true; 393 | } 394 | 395 | private bool NeoSpacePathFinderMonsterSet() 396 | { 397 | 398 | return true; 399 | } 400 | 401 | private bool NeoSpacePathFinderRepos() 402 | { 403 | 404 | return DefaultMonsterRepos; 405 | } 406 | 407 | private bool NeoSpacePathFinderActivate() 408 | { 409 | 410 | return true; 411 | } 412 | 413 | // Create all methods needed for ElementalHEROStratos to work 414 | 415 | private bool ElementalHEROStratosNormalSummon() 416 | { 417 | 418 | return true; 419 | } 420 | 421 | private bool ElementalHEROStratosMonsterSet() 422 | { 423 | 424 | return true; 425 | } 426 | 427 | private bool ElementalHEROStratosRepos() 428 | { 429 | 430 | return DefaultMonsterRepos; 431 | } 432 | 433 | private bool ElementalHEROStratosActivate() 434 | { 435 | 436 | return true; 437 | } 438 | 439 | // Create all methods needed for ElementalHEROPrisma to work 440 | 441 | private bool ElementalHEROPrismaNormalSummon() 442 | { 443 | 444 | return true; 445 | } 446 | 447 | private bool ElementalHEROPrismaMonsterSet() 448 | { 449 | 450 | return true; 451 | } 452 | 453 | private bool ElementalHEROPrismaRepos() 454 | { 455 | 456 | return DefaultMonsterRepos; 457 | } 458 | 459 | private bool ElementalHEROPrismaActivate() 460 | { 461 | 462 | return true; 463 | } 464 | 465 | // Create all methods needed for ElementalHEROBlazeman to work 466 | 467 | private bool ElementalHEROBlazemanNormalSummon() 468 | { 469 | 470 | return true; 471 | } 472 | 473 | private bool ElementalHEROBlazemanMonsterSet() 474 | { 475 | 476 | return true; 477 | } 478 | 479 | private bool ElementalHEROBlazemanRepos() 480 | { 481 | 482 | return DefaultMonsterRepos; 483 | } 484 | 485 | private bool ElementalHEROBlazemanActivate() 486 | { 487 | 488 | return true; 489 | } 490 | 491 | // Create all methods needed for NeoSpaceConnector to work 492 | 493 | private bool NeoSpaceConnectorNormalSummon() 494 | { 495 | 496 | return true; 497 | } 498 | 499 | private bool NeoSpaceConnectorMonsterSet() 500 | { 501 | 502 | return true; 503 | } 504 | 505 | private bool NeoSpaceConnectorRepos() 506 | { 507 | 508 | return DefaultMonsterRepos; 509 | } 510 | 511 | private bool NeoSpaceConnectorActivate() 512 | { 513 | 514 | return true; 515 | } 516 | 517 | // Create all methods needed for NeoSpacienGrandMole to work 518 | 519 | private bool NeoSpacienGrandMoleNormalSummon() 520 | { 521 | 522 | return true; 523 | } 524 | 525 | private bool NeoSpacienGrandMoleMonsterSet() 526 | { 527 | 528 | return true; 529 | } 530 | 531 | private bool NeoSpacienGrandMoleRepos() 532 | { 533 | 534 | return DefaultMonsterRepos; 535 | } 536 | 537 | private bool NeoSpacienGrandMoleActivate() 538 | { 539 | 540 | return true; 541 | } 542 | 543 | // Create all methods needed for NeoSpacianAirHummingbird to work 544 | 545 | private bool NeoSpacianAirHummingbirdNormalSummon() 546 | { 547 | 548 | return true; 549 | } 550 | 551 | private bool NeoSpacianAirHummingbirdMonsterSet() 552 | { 553 | 554 | return true; 555 | } 556 | 557 | private bool NeoSpacianAirHummingbirdRepos() 558 | { 559 | 560 | return DefaultMonsterRepos; 561 | } 562 | 563 | private bool NeoSpacianAirHummingbirdActivate() 564 | { 565 | 566 | return true; 567 | } 568 | 569 | // Create all methods needed for NeoSpacianAquaDolphin to work 570 | 571 | private bool NeoSpacianAquaDolphinNormalSummon() 572 | { 573 | 574 | return true; 575 | } 576 | 577 | private bool NeoSpacianAquaDolphinMonsterSet() 578 | { 579 | 580 | return true; 581 | } 582 | 583 | private bool NeoSpacianAquaDolphinRepos() 584 | { 585 | 586 | return DefaultMonsterRepos; 587 | } 588 | 589 | private bool NeoSpacianAquaDolphinActivate() 590 | { 591 | 592 | return true; 593 | } 594 | 595 | // Create all methods needed for NeoSpacianFlareScarab to work 596 | 597 | private bool NeoSpacianFlareScarabNormalSummon() 598 | { 599 | 600 | return true; 601 | } 602 | 603 | private bool NeoSpacianFlareScarabMonsterSet() 604 | { 605 | 606 | return true; 607 | } 608 | 609 | private bool NeoSpacianFlareScarabRepos() 610 | { 611 | 612 | return DefaultMonsterRepos; 613 | } 614 | 615 | private bool NeoSpacianFlareScarabActivate() 616 | { 617 | 618 | return true; 619 | } 620 | 621 | // All Special Summonable Effect Monster Methods 622 | 623 | // All Pure Special Summonable Effect Monster Methods 624 | 625 | // Create all methods needed for ElementalHEROStormNeos to work 626 | 627 | private bool ElementalHEROStormNeosRepos() 628 | { 629 | 630 | return DefaultMonsterRepos; 631 | } 632 | 633 | private bool ElementalHEROStormNeosActivate() 634 | { 635 | 636 | return true; 637 | } 638 | 639 | private bool ElementalHEROStormNeosSpSummon() 640 | { 641 | 642 | return true; 643 | } 644 | 645 | // Create all methods needed for ElementalHeroMagmaNeos to work 646 | 647 | private bool ElementalHeroMagmaNeosRepos() 648 | { 649 | 650 | return DefaultMonsterRepos; 651 | } 652 | 653 | private bool ElementalHeroMagmaNeosActivate() 654 | { 655 | 656 | return true; 657 | } 658 | 659 | private bool ElementalHeroMagmaNeosSpSummon() 660 | { 661 | 662 | return true; 663 | } 664 | 665 | // Create all methods needed for ElementalHeroAirNeos to work 666 | 667 | private bool ElementalHeroAirNeosRepos() 668 | { 669 | 670 | return DefaultMonsterRepos; 671 | } 672 | 673 | private bool ElementalHeroAirNeosActivate() 674 | { 675 | 676 | return true; 677 | } 678 | 679 | private bool ElementalHeroAirNeosSpSummon() 680 | { 681 | 682 | return true; 683 | } 684 | 685 | // Create all methods needed for ElementalHeroGrandNeos to work 686 | 687 | private bool ElementalHeroGrandNeosRepos() 688 | { 689 | 690 | return DefaultMonsterRepos; 691 | } 692 | 693 | private bool ElementalHeroGrandNeosActivate() 694 | { 695 | 696 | return true; 697 | } 698 | 699 | private bool ElementalHeroGrandNeosSpSummon() 700 | { 701 | 702 | return true; 703 | } 704 | 705 | // Create all methods needed for ElementalHeroAquaNeos to work 706 | 707 | private bool ElementalHeroAquaNeosRepos() 708 | { 709 | 710 | return DefaultMonsterRepos; 711 | } 712 | 713 | private bool ElementalHeroAquaNeosActivate() 714 | { 715 | 716 | return true; 717 | } 718 | 719 | private bool ElementalHeroAquaNeosSpSummon() 720 | { 721 | 722 | return true; 723 | } 724 | 725 | // Create all methods needed for ElementalHeroBraveNeos to work 726 | 727 | private bool ElementalHeroBraveNeosRepos() 728 | { 729 | 730 | return DefaultMonsterRepos; 731 | } 732 | 733 | private bool ElementalHeroBraveNeosActivate() 734 | { 735 | 736 | return true; 737 | } 738 | 739 | private bool ElementalHeroBraveNeosSpSummon() 740 | { 741 | 742 | return true; 743 | } 744 | 745 | // Create all methods needed for ElementalHeroFlareNeos to work 746 | 747 | private bool ElementalHeroFlareNeosRepos() 748 | { 749 | 750 | return DefaultMonsterRepos; 751 | } 752 | 753 | private bool ElementalHeroFlareNeosActivate() 754 | { 755 | 756 | return true; 757 | } 758 | 759 | private bool ElementalHeroFlareNeosSpSummon() 760 | { 761 | 762 | return true; 763 | } 764 | 765 | // Create all methods needed for ElementalHeroSunrise to work 766 | 767 | private bool ElementalHeroSunriseRepos() 768 | { 769 | 770 | return DefaultMonsterRepos; 771 | } 772 | 773 | private bool ElementalHeroSunriseActivate() 774 | { 775 | 776 | return true; 777 | } 778 | 779 | private bool ElementalHeroSunriseSpSummon() 780 | { 781 | 782 | return true; 783 | } 784 | 785 | // Create all methods needed for ElementalHeroNeosKnight to work 786 | 787 | private bool ElementalHeroNeosKnightRepos() 788 | { 789 | 790 | return DefaultMonsterRepos; 791 | } 792 | 793 | private bool ElementalHeroNeosKnightActivate() 794 | { 795 | 796 | return true; 797 | } 798 | 799 | private bool ElementalHeroNeosKnightSpSummon() 800 | { 801 | 802 | return true; 803 | } 804 | 805 | // All Spell and Trap Card Methods 806 | 807 | // Create all methods needed for MonsterReborn to work 808 | 809 | private bool MonsterRebornSpellSet() 810 | { 811 | 812 | return DefaultSpellSet; 813 | } 814 | 815 | private bool MonsterRebornActivate() 816 | { 817 | 818 | return true; 819 | } 820 | 821 | // Create all methods needed for NeosFusion to work 822 | 823 | private bool NeosFusionSpellSet() 824 | { 825 | 826 | return DefaultSpellSet; 827 | } 828 | 829 | private bool NeosFusionActivate() 830 | { 831 | 832 | return true; 833 | } 834 | 835 | // Create all methods needed for Polymerization to work 836 | 837 | private bool PolymerizationSpellSet() 838 | { 839 | 840 | return DefaultSpellSet; 841 | } 842 | 843 | private bool PolymerizationActivate() 844 | { 845 | 846 | return true; 847 | } 848 | 849 | // Create all methods needed for MiracleContact to work 850 | 851 | private bool MiracleContactSpellSet() 852 | { 853 | 854 | return DefaultSpellSet; 855 | } 856 | 857 | private bool MiracleContactActivate() 858 | { 859 | 860 | return true; 861 | } 862 | 863 | // Create all methods needed for InstantNeoSpace to work 864 | 865 | private bool InstantNeoSpaceSpellSet() 866 | { 867 | 868 | return DefaultSpellSet; 869 | } 870 | 871 | private bool InstantNeoSpaceActivate() 872 | { 873 | 874 | return true; 875 | } 876 | 877 | // Create all methods needed for NeoSpace to work 878 | 879 | private bool NeoSpaceSpellSet() 880 | { 881 | 882 | return DefaultSpellSet; 883 | } 884 | 885 | private bool NeoSpaceActivate() 886 | { 887 | 888 | return true; 889 | } 890 | 891 | // Create all methods needed for DrowningMirrorForce to work 892 | 893 | private bool DrowningMirrorForceSpellSet() 894 | { 895 | 896 | return DefaultSpellSet; 897 | } 898 | 899 | private bool DrowningMirrorForceActivate() 900 | { 901 | 902 | return true; 903 | } 904 | 905 | // Create all methods needed for NEXT to work 906 | 907 | private bool NEXTSpellSet() 908 | { 909 | 910 | return DefaultSpellSet; 911 | } 912 | 913 | private bool NEXTActivate() 914 | { 915 | 916 | return true; 917 | } 918 | 919 | // Create all methods needed for CallOfTheHaunted to work 920 | 921 | private bool CallOfTheHauntedSpellSet() 922 | { 923 | 924 | return DefaultSpellSet; 925 | } 926 | 927 | private bool CallOfTheHauntedActivate() 928 | { 929 | 930 | return true; 931 | } 932 | 933 | } 934 | } -------------------------------------------------------------------------------- /Game/AI/Decks/TempleteGenerator/target/classes/target/classes/NeosExecutor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using WindBot; 3 | using WindBot.Game; 4 | using WindBot.Game.AI; 5 | using YGOSharp.OCGWrapper.Enums; 6 | namespace WindBot.Game.AI.Decks 7 | { 8 | 9 | [Deck("Neos", "Neo Jaden")] 10 | public class NeosExecutor: DefaultExecutor 11 | { 12 | public class CardId 13 | { 14 | // Initialize all normal monsters 15 | 16 | // Create all methods needed for ElementalHERONeos to work 17 | public const int ElementalHERONeos = 89943723; 18 | // Initialize all effect monsters 19 | 20 | // Create all methods needed for ElementalHEROHonestNeos to work 21 | public const int ElementalHEROHonestNeos = 14124483; 22 | 23 | // Create all methods needed for ElementalHERONeosAlius to work 24 | public const int ElementalHERONeosAlius = 69884162; 25 | 26 | // Create all methods needed for NeoSpacePathFinder to work 27 | public const int NeoSpacePathFinder = 19594506; 28 | 29 | // Create all methods needed for ElementalHEROStratos to work 30 | public const int ElementalHEROStratos = 40044918; 31 | 32 | // Create all methods needed for ElementalHEROPrisma to work 33 | public const int ElementalHEROPrisma = 89312388; 34 | 35 | // Create all methods needed for ElementalHEROBlazeman to work 36 | public const int ElementalHEROBlazeman = 63060238; 37 | 38 | // Create all methods needed for NeoSpaceConnector to work 39 | public const int NeoSpaceConnector = 85840608; 40 | 41 | // Create all methods needed for NeoSpacienGrandMole to work 42 | public const int NeoSpacienGrandMole = 80344569; 43 | 44 | // Create all methods needed for NeoSpacianAirHummingbird to work 45 | public const int NeoSpacianAirHummingbird = 54959865; 46 | 47 | // Create all methods needed for NeoSpacianAquaDolphin to work 48 | public const int NeoSpacianAquaDolphin = 17955766; 49 | 50 | // Create all methods needed for NeoSpacianFlareScarab to work 51 | public const int NeoSpacianFlareScarab = 89621922; 52 | // Initialize all special summonable effect monsters 53 | // Initialize all pure special summonable effect monsters 54 | 55 | // Create all methods needed for ElementalHEROStormNeos to work 56 | public const int ElementalHEROStormNeos = 49352945; 57 | 58 | // Create all methods needed for ElementalHeroMagmaNeos to work 59 | public const int ElementalHeroMagmaNeos = 78512663; 60 | 61 | // Create all methods needed for ElementalHeroAirNeos to work 62 | public const int ElementalHeroAirNeos = 11502550; 63 | 64 | // Create all methods needed for ElementalHeroGrandNeos to work 65 | public const int ElementalHeroGrandNeos = 48996569; 66 | 67 | // Create all methods needed for ElementalHeroAquaNeos to work 68 | public const int ElementalHeroAquaNeos = 55171412; 69 | 70 | // Create all methods needed for ElementalHeroBraveNeos to work 71 | public const int ElementalHeroBraveNeos = 64655485; 72 | 73 | // Create all methods needed for ElementalHeroFlareNeos to work 74 | public const int ElementalHeroFlareNeos = 81566151; 75 | 76 | // Create all methods needed for ElementalHeroSunrise to work 77 | public const int ElementalHeroSunrise = 22908820; 78 | 79 | // Create all methods needed for ElementalHeroNeosKnight to work 80 | public const int ElementalHeroNeosKnight = 72926163; 81 | // Initialize all spell and trap cards 82 | 83 | // Create all methods needed for MonsterReborn to work 84 | public const int MonsterReborn = 83764718; 85 | 86 | // Create all methods needed for NeosFusion to work 87 | public const int NeosFusion = 14088859; 88 | 89 | // Create all methods needed for Polymerization to work 90 | public const int Polymerization = 24094653; 91 | 92 | // Create all methods needed for MiracleContact to work 93 | public const int MiracleContact = 35255456; 94 | 95 | // Create all methods needed for InstantNeoSpace to work 96 | public const int InstantNeoSpace = 11913700; 97 | 98 | // Create all methods needed for NeoSpace to work 99 | public const int NeoSpace = 42015635; 100 | 101 | // Create all methods needed for DrowningMirrorForce to work 102 | public const int DrowningMirrorForce = 47475363; 103 | 104 | // Create all methods needed for NEXT to work 105 | public const int NEXT = 74414885; 106 | 107 | // Create all methods needed for CallOfTheHaunted to work 108 | public const int CallOfTheHaunted = 97077563; 109 | // Initialize all useless cards 110 | 111 | // Create all methods needed for AshBlossomJoyusSpring to work 112 | public const int AshBlossomJoyusSpring = 14558127; 113 | 114 | // Create all methods needed for GhostReaperWinterCherries to work 115 | public const int GhostReaperWinterCherries = 62015408; 116 | 117 | // Create all methods needed for PsyFrameGearGamma to work 118 | public const int PsyFrameGearGamma = 38814750; 119 | 120 | // Create all methods needed for DrollLockBird to work 121 | public const int DrollLockBird = 94145021; 122 | 123 | // Create all methods needed for ArtifactLancea to work 124 | public const int ArtifactLancea = 34267821; 125 | 126 | // Create all methods needed for GhostOgreSnowRabbit to work 127 | public const int GhostOgreSnowRabbit = 59438930; 128 | 129 | // Create all methods needed for NimbuThePrimeBeing to work 130 | public const int NimbuThePrimeBeing = 27204311; 131 | 132 | // Create all methods needed for EffectVailer to work 133 | public const int EffectVailer = 97268402; 134 | 135 | // Create all methods needed for DDCrow to work 136 | public const int DDCrow = 24508238; 137 | 138 | // Create all methods needed for Honest to work 139 | public const int Honest = 37742478; 140 | 141 | // Create all methods needed for Tragodia to work 142 | public const int Tragodia = 9877036; 143 | 144 | // Create all methods needed for GorzTheEmmisaryOfDarkness to work 145 | public const int GorzTheEmmisaryOfDarkness = 44330098; 146 | 147 | } 148 | public NeosExecutor(GameAI ai, Duel duel) 149 | : base(ai, duel) 150 | { 151 | // Add Executors to all normal monsters 152 | 153 | // Create all methods needed for ElementalHERONeos to work 154 | AddExecutor(ExecutorType.Summon, CardId.ElementalHERONeos, ElementalHERONeosNormalSummon); 155 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHERONeos, ElementalHERONeosMonsterSet); 156 | AddExecutor(ExecutorType.Repos, CardId.ElementalHERONeos, ElementalHERONeosRepos); 157 | // Add Executors to all effect monsters 158 | 159 | // Create all methods needed for ElementalHEROHonestNeos to work 160 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosNormalSummon); 161 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosMonsterSet); 162 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosRepos); 163 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROHonestNeos, ElementalHEROHonestNeosActivate); 164 | 165 | // Create all methods needed for ElementalHERONeosAlius to work 166 | AddExecutor(ExecutorType.Summon, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusNormalSummon); 167 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusMonsterSet); 168 | AddExecutor(ExecutorType.Repos, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusRepos); 169 | AddExecutor(ExecutorType.Activate, CardId.ElementalHERONeosAlius, ElementalHERONeosAliusActivate); 170 | 171 | // Create all methods needed for NeoSpacePathFinder to work 172 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacePathFinder, NeoSpacePathFinderNormalSummon); 173 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacePathFinder, NeoSpacePathFinderMonsterSet); 174 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacePathFinder, NeoSpacePathFinderRepos); 175 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacePathFinder, NeoSpacePathFinderActivate); 176 | 177 | // Create all methods needed for ElementalHEROStratos to work 178 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROStratos, ElementalHEROStratosNormalSummon); 179 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROStratos, ElementalHEROStratosMonsterSet); 180 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROStratos, ElementalHEROStratosRepos); 181 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROStratos, ElementalHEROStratosActivate); 182 | 183 | // Create all methods needed for ElementalHEROPrisma to work 184 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROPrisma, ElementalHEROPrismaNormalSummon); 185 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROPrisma, ElementalHEROPrismaMonsterSet); 186 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROPrisma, ElementalHEROPrismaRepos); 187 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROPrisma, ElementalHEROPrismaActivate); 188 | 189 | // Create all methods needed for ElementalHEROBlazeman to work 190 | AddExecutor(ExecutorType.Summon, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanNormalSummon); 191 | AddExecutor(ExecutorType.MonsterSet, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanMonsterSet); 192 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanRepos); 193 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROBlazeman, ElementalHEROBlazemanActivate); 194 | 195 | // Create all methods needed for NeoSpaceConnector to work 196 | AddExecutor(ExecutorType.Summon, CardId.NeoSpaceConnector, NeoSpaceConnectorNormalSummon); 197 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpaceConnector, NeoSpaceConnectorMonsterSet); 198 | AddExecutor(ExecutorType.Repos, CardId.NeoSpaceConnector, NeoSpaceConnectorRepos); 199 | AddExecutor(ExecutorType.Activate, CardId.NeoSpaceConnector, NeoSpaceConnectorActivate); 200 | 201 | // Create all methods needed for NeoSpacienGrandMole to work 202 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleNormalSummon); 203 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleMonsterSet); 204 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleRepos); 205 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacienGrandMole, NeoSpacienGrandMoleActivate); 206 | 207 | // Create all methods needed for NeoSpacianAirHummingbird to work 208 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdNormalSummon); 209 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdMonsterSet); 210 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdRepos); 211 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianAirHummingbird, NeoSpacianAirHummingbirdActivate); 212 | 213 | // Create all methods needed for NeoSpacianAquaDolphin to work 214 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinNormalSummon); 215 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinMonsterSet); 216 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinRepos); 217 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianAquaDolphin, NeoSpacianAquaDolphinActivate); 218 | 219 | // Create all methods needed for NeoSpacianFlareScarab to work 220 | AddExecutor(ExecutorType.Summon, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabNormalSummon); 221 | AddExecutor(ExecutorType.MonsterSet, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabMonsterSet); 222 | AddExecutor(ExecutorType.Repos, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabRepos); 223 | AddExecutor(ExecutorType.Activate, CardId.NeoSpacianFlareScarab, NeoSpacianFlareScarabActivate); 224 | // Add Executors to all special summonable effect monsters 225 | // Add Executors to all summonable effect monsters 226 | 227 | // Create all methods needed for ElementalHEROStormNeos to work 228 | AddExecutor(ExecutorType.Repos, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosRepos); 229 | AddExecutor(ExecutorType.Activate, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosActivate); 230 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHEROStormNeos, ElementalHEROStormNeosSpSummon); 231 | 232 | // Create all methods needed for ElementalHeroMagmaNeos to work 233 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosRepos); 234 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosActivate); 235 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroMagmaNeos, ElementalHeroMagmaNeosSpSummon); 236 | 237 | // Create all methods needed for ElementalHeroAirNeos to work 238 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosRepos); 239 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosActivate); 240 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroAirNeos, ElementalHeroAirNeosSpSummon); 241 | 242 | // Create all methods needed for ElementalHeroGrandNeos to work 243 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosRepos); 244 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosActivate); 245 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroGrandNeos, ElementalHeroGrandNeosSpSummon); 246 | 247 | // Create all methods needed for ElementalHeroAquaNeos to work 248 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosRepos); 249 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosActivate); 250 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroAquaNeos, ElementalHeroAquaNeosSpSummon); 251 | 252 | // Create all methods needed for ElementalHeroBraveNeos to work 253 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosRepos); 254 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosActivate); 255 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroBraveNeos, ElementalHeroBraveNeosSpSummon); 256 | 257 | // Create all methods needed for ElementalHeroFlareNeos to work 258 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosRepos); 259 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosActivate); 260 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroFlareNeos, ElementalHeroFlareNeosSpSummon); 261 | 262 | // Create all methods needed for ElementalHeroSunrise to work 263 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroSunrise, ElementalHeroSunriseRepos); 264 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroSunrise, ElementalHeroSunriseActivate); 265 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroSunrise, ElementalHeroSunriseSpSummon); 266 | 267 | // Create all methods needed for ElementalHeroNeosKnight to work 268 | AddExecutor(ExecutorType.Repos, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightRepos); 269 | AddExecutor(ExecutorType.Activate, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightActivate); 270 | AddExecutor(ExecutorType.SpSummon, CardId.ElementalHeroNeosKnight, ElementalHeroNeosKnightSpSummon); 271 | // Add Executors to all spell and trap cards 272 | 273 | // Create all methods needed for MonsterReborn to work 274 | AddExecutor(ExecutorType.SpellSet, CardId.MonsterReborn, MonsterRebornSpellSet); 275 | AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterRebornActivate); 276 | 277 | // Create all methods needed for NeosFusion to work 278 | AddExecutor(ExecutorType.SpellSet, CardId.NeosFusion, NeosFusionSpellSet); 279 | AddExecutor(ExecutorType.Activate, CardId.NeosFusion, NeosFusionActivate); 280 | 281 | // Create all methods needed for Polymerization to work 282 | AddExecutor(ExecutorType.SpellSet, CardId.Polymerization, PolymerizationSpellSet); 283 | AddExecutor(ExecutorType.Activate, CardId.Polymerization, PolymerizationActivate); 284 | 285 | // Create all methods needed for MiracleContact to work 286 | AddExecutor(ExecutorType.SpellSet, CardId.MiracleContact, MiracleContactSpellSet); 287 | AddExecutor(ExecutorType.Activate, CardId.MiracleContact, MiracleContactActivate); 288 | 289 | // Create all methods needed for InstantNeoSpace to work 290 | AddExecutor(ExecutorType.SpellSet, CardId.InstantNeoSpace, InstantNeoSpaceSpellSet); 291 | AddExecutor(ExecutorType.Activate, CardId.InstantNeoSpace, InstantNeoSpaceActivate); 292 | 293 | // Create all methods needed for NeoSpace to work 294 | AddExecutor(ExecutorType.SpellSet, CardId.NeoSpace, NeoSpaceSpellSet); 295 | AddExecutor(ExecutorType.Activate, CardId.NeoSpace, NeoSpaceActivate); 296 | 297 | // Create all methods needed for DrowningMirrorForce to work 298 | AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, DrowningMirrorForceSpellSet); 299 | AddExecutor(ExecutorType.Activate, CardId.DrowningMirrorForce, DrowningMirrorForceActivate); 300 | 301 | // Create all methods needed for NEXT to work 302 | AddExecutor(ExecutorType.SpellSet, CardId.NEXT, NEXTSpellSet); 303 | AddExecutor(ExecutorType.Activate, CardId.NEXT, NEXTActivate); 304 | 305 | // Create all methods needed for CallOfTheHaunted to work 306 | AddExecutor(ExecutorType.SpellSet, CardId.CallOfTheHaunted, CallOfTheHauntedSpellSet); 307 | AddExecutor(ExecutorType.Activate, CardId.CallOfTheHaunted, CallOfTheHauntedActivate); 308 | 309 | } 310 | 311 | // All Normal Monster Methods 312 | 313 | // Create all methods needed for ElementalHERONeos to work 314 | 315 | private bool ElementalHERONeosNormalSummon() 316 | { 317 | 318 | return true; 319 | } 320 | 321 | private bool ElementalHERONeosMonsterSet() 322 | { 323 | 324 | return true; 325 | } 326 | 327 | private bool ElementalHERONeosRepos() 328 | { 329 | 330 | return DefaultMonsterRepos; 331 | } 332 | 333 | // All Effect Monster Methods 334 | 335 | // Create all methods needed for ElementalHEROHonestNeos to work 336 | 337 | private bool ElementalHEROHonestNeosNormalSummon() 338 | { 339 | 340 | return true; 341 | } 342 | 343 | private bool ElementalHEROHonestNeosMonsterSet() 344 | { 345 | 346 | return true; 347 | } 348 | 349 | private bool ElementalHEROHonestNeosRepos() 350 | { 351 | 352 | return DefaultMonsterRepos; 353 | } 354 | 355 | private bool ElementalHEROHonestNeosActivate() 356 | { 357 | 358 | return true; 359 | } 360 | 361 | // Create all methods needed for ElementalHERONeosAlius to work 362 | 363 | private bool ElementalHERONeosAliusNormalSummon() 364 | { 365 | 366 | return true; 367 | } 368 | 369 | private bool ElementalHERONeosAliusMonsterSet() 370 | { 371 | 372 | return true; 373 | } 374 | 375 | private bool ElementalHERONeosAliusRepos() 376 | { 377 | 378 | return DefaultMonsterRepos; 379 | } 380 | 381 | private bool ElementalHERONeosAliusActivate() 382 | { 383 | 384 | return true; 385 | } 386 | 387 | // Create all methods needed for NeoSpacePathFinder to work 388 | 389 | private bool NeoSpacePathFinderNormalSummon() 390 | { 391 | 392 | return true; 393 | } 394 | 395 | private bool NeoSpacePathFinderMonsterSet() 396 | { 397 | 398 | return true; 399 | } 400 | 401 | private bool NeoSpacePathFinderRepos() 402 | { 403 | 404 | return DefaultMonsterRepos; 405 | } 406 | 407 | private bool NeoSpacePathFinderActivate() 408 | { 409 | 410 | return true; 411 | } 412 | 413 | // Create all methods needed for ElementalHEROStratos to work 414 | 415 | private bool ElementalHEROStratosNormalSummon() 416 | { 417 | 418 | return true; 419 | } 420 | 421 | private bool ElementalHEROStratosMonsterSet() 422 | { 423 | 424 | return true; 425 | } 426 | 427 | private bool ElementalHEROStratosRepos() 428 | { 429 | 430 | return DefaultMonsterRepos; 431 | } 432 | 433 | private bool ElementalHEROStratosActivate() 434 | { 435 | 436 | return true; 437 | } 438 | 439 | // Create all methods needed for ElementalHEROPrisma to work 440 | 441 | private bool ElementalHEROPrismaNormalSummon() 442 | { 443 | 444 | return true; 445 | } 446 | 447 | private bool ElementalHEROPrismaMonsterSet() 448 | { 449 | 450 | return true; 451 | } 452 | 453 | private bool ElementalHEROPrismaRepos() 454 | { 455 | 456 | return DefaultMonsterRepos; 457 | } 458 | 459 | private bool ElementalHEROPrismaActivate() 460 | { 461 | 462 | return true; 463 | } 464 | 465 | // Create all methods needed for ElementalHEROBlazeman to work 466 | 467 | private bool ElementalHEROBlazemanNormalSummon() 468 | { 469 | 470 | return true; 471 | } 472 | 473 | private bool ElementalHEROBlazemanMonsterSet() 474 | { 475 | 476 | return true; 477 | } 478 | 479 | private bool ElementalHEROBlazemanRepos() 480 | { 481 | 482 | return DefaultMonsterRepos; 483 | } 484 | 485 | private bool ElementalHEROBlazemanActivate() 486 | { 487 | 488 | return true; 489 | } 490 | 491 | // Create all methods needed for NeoSpaceConnector to work 492 | 493 | private bool NeoSpaceConnectorNormalSummon() 494 | { 495 | 496 | return true; 497 | } 498 | 499 | private bool NeoSpaceConnectorMonsterSet() 500 | { 501 | 502 | return true; 503 | } 504 | 505 | private bool NeoSpaceConnectorRepos() 506 | { 507 | 508 | return DefaultMonsterRepos; 509 | } 510 | 511 | private bool NeoSpaceConnectorActivate() 512 | { 513 | 514 | return true; 515 | } 516 | 517 | // Create all methods needed for NeoSpacienGrandMole to work 518 | 519 | private bool NeoSpacienGrandMoleNormalSummon() 520 | { 521 | 522 | return true; 523 | } 524 | 525 | private bool NeoSpacienGrandMoleMonsterSet() 526 | { 527 | 528 | return true; 529 | } 530 | 531 | private bool NeoSpacienGrandMoleRepos() 532 | { 533 | 534 | return DefaultMonsterRepos; 535 | } 536 | 537 | private bool NeoSpacienGrandMoleActivate() 538 | { 539 | 540 | return true; 541 | } 542 | 543 | // Create all methods needed for NeoSpacianAirHummingbird to work 544 | 545 | private bool NeoSpacianAirHummingbirdNormalSummon() 546 | { 547 | 548 | return true; 549 | } 550 | 551 | private bool NeoSpacianAirHummingbirdMonsterSet() 552 | { 553 | 554 | return true; 555 | } 556 | 557 | private bool NeoSpacianAirHummingbirdRepos() 558 | { 559 | 560 | return DefaultMonsterRepos; 561 | } 562 | 563 | private bool NeoSpacianAirHummingbirdActivate() 564 | { 565 | 566 | return true; 567 | } 568 | 569 | // Create all methods needed for NeoSpacianAquaDolphin to work 570 | 571 | private bool NeoSpacianAquaDolphinNormalSummon() 572 | { 573 | 574 | return true; 575 | } 576 | 577 | private bool NeoSpacianAquaDolphinMonsterSet() 578 | { 579 | 580 | return true; 581 | } 582 | 583 | private bool NeoSpacianAquaDolphinRepos() 584 | { 585 | 586 | return DefaultMonsterRepos; 587 | } 588 | 589 | private bool NeoSpacianAquaDolphinActivate() 590 | { 591 | 592 | return true; 593 | } 594 | 595 | // Create all methods needed for NeoSpacianFlareScarab to work 596 | 597 | private bool NeoSpacianFlareScarabNormalSummon() 598 | { 599 | 600 | return true; 601 | } 602 | 603 | private bool NeoSpacianFlareScarabMonsterSet() 604 | { 605 | 606 | return true; 607 | } 608 | 609 | private bool NeoSpacianFlareScarabRepos() 610 | { 611 | 612 | return DefaultMonsterRepos; 613 | } 614 | 615 | private bool NeoSpacianFlareScarabActivate() 616 | { 617 | 618 | return true; 619 | } 620 | 621 | // All Special Summonable Effect Monster Methods 622 | 623 | // All Pure Special Summonable Effect Monster Methods 624 | 625 | // Create all methods needed for ElementalHEROStormNeos to work 626 | 627 | private bool ElementalHEROStormNeosRepos() 628 | { 629 | 630 | return DefaultMonsterRepos; 631 | } 632 | 633 | private bool ElementalHEROStormNeosActivate() 634 | { 635 | 636 | return true; 637 | } 638 | 639 | private bool ElementalHEROStormNeosSpSummon() 640 | { 641 | 642 | return true; 643 | } 644 | 645 | // Create all methods needed for ElementalHeroMagmaNeos to work 646 | 647 | private bool ElementalHeroMagmaNeosRepos() 648 | { 649 | 650 | return DefaultMonsterRepos; 651 | } 652 | 653 | private bool ElementalHeroMagmaNeosActivate() 654 | { 655 | 656 | return true; 657 | } 658 | 659 | private bool ElementalHeroMagmaNeosSpSummon() 660 | { 661 | 662 | return true; 663 | } 664 | 665 | // Create all methods needed for ElementalHeroAirNeos to work 666 | 667 | private bool ElementalHeroAirNeosRepos() 668 | { 669 | 670 | return DefaultMonsterRepos; 671 | } 672 | 673 | private bool ElementalHeroAirNeosActivate() 674 | { 675 | 676 | return true; 677 | } 678 | 679 | private bool ElementalHeroAirNeosSpSummon() 680 | { 681 | 682 | return true; 683 | } 684 | 685 | // Create all methods needed for ElementalHeroGrandNeos to work 686 | 687 | private bool ElementalHeroGrandNeosRepos() 688 | { 689 | 690 | return DefaultMonsterRepos; 691 | } 692 | 693 | private bool ElementalHeroGrandNeosActivate() 694 | { 695 | 696 | return true; 697 | } 698 | 699 | private bool ElementalHeroGrandNeosSpSummon() 700 | { 701 | 702 | return true; 703 | } 704 | 705 | // Create all methods needed for ElementalHeroAquaNeos to work 706 | 707 | private bool ElementalHeroAquaNeosRepos() 708 | { 709 | 710 | return DefaultMonsterRepos; 711 | } 712 | 713 | private bool ElementalHeroAquaNeosActivate() 714 | { 715 | 716 | return true; 717 | } 718 | 719 | private bool ElementalHeroAquaNeosSpSummon() 720 | { 721 | 722 | return true; 723 | } 724 | 725 | // Create all methods needed for ElementalHeroBraveNeos to work 726 | 727 | private bool ElementalHeroBraveNeosRepos() 728 | { 729 | 730 | return DefaultMonsterRepos; 731 | } 732 | 733 | private bool ElementalHeroBraveNeosActivate() 734 | { 735 | 736 | return true; 737 | } 738 | 739 | private bool ElementalHeroBraveNeosSpSummon() 740 | { 741 | 742 | return true; 743 | } 744 | 745 | // Create all methods needed for ElementalHeroFlareNeos to work 746 | 747 | private bool ElementalHeroFlareNeosRepos() 748 | { 749 | 750 | return DefaultMonsterRepos; 751 | } 752 | 753 | private bool ElementalHeroFlareNeosActivate() 754 | { 755 | 756 | return true; 757 | } 758 | 759 | private bool ElementalHeroFlareNeosSpSummon() 760 | { 761 | 762 | return true; 763 | } 764 | 765 | // Create all methods needed for ElementalHeroSunrise to work 766 | 767 | private bool ElementalHeroSunriseRepos() 768 | { 769 | 770 | return DefaultMonsterRepos; 771 | } 772 | 773 | private bool ElementalHeroSunriseActivate() 774 | { 775 | 776 | return true; 777 | } 778 | 779 | private bool ElementalHeroSunriseSpSummon() 780 | { 781 | 782 | return true; 783 | } 784 | 785 | // Create all methods needed for ElementalHeroNeosKnight to work 786 | 787 | private bool ElementalHeroNeosKnightRepos() 788 | { 789 | 790 | return DefaultMonsterRepos; 791 | } 792 | 793 | private bool ElementalHeroNeosKnightActivate() 794 | { 795 | 796 | return true; 797 | } 798 | 799 | private bool ElementalHeroNeosKnightSpSummon() 800 | { 801 | 802 | return true; 803 | } 804 | 805 | // All Spell and Trap Card Methods 806 | 807 | // Create all methods needed for MonsterReborn to work 808 | 809 | private bool MonsterRebornSpellSet() 810 | { 811 | 812 | return DefaultSpellSet; 813 | } 814 | 815 | private bool MonsterRebornActivate() 816 | { 817 | 818 | return true; 819 | } 820 | 821 | // Create all methods needed for NeosFusion to work 822 | 823 | private bool NeosFusionSpellSet() 824 | { 825 | 826 | return DefaultSpellSet; 827 | } 828 | 829 | private bool NeosFusionActivate() 830 | { 831 | 832 | return true; 833 | } 834 | 835 | // Create all methods needed for Polymerization to work 836 | 837 | private bool PolymerizationSpellSet() 838 | { 839 | 840 | return DefaultSpellSet; 841 | } 842 | 843 | private bool PolymerizationActivate() 844 | { 845 | 846 | return true; 847 | } 848 | 849 | // Create all methods needed for MiracleContact to work 850 | 851 | private bool MiracleContactSpellSet() 852 | { 853 | 854 | return DefaultSpellSet; 855 | } 856 | 857 | private bool MiracleContactActivate() 858 | { 859 | 860 | return true; 861 | } 862 | 863 | // Create all methods needed for InstantNeoSpace to work 864 | 865 | private bool InstantNeoSpaceSpellSet() 866 | { 867 | 868 | return DefaultSpellSet; 869 | } 870 | 871 | private bool InstantNeoSpaceActivate() 872 | { 873 | 874 | return true; 875 | } 876 | 877 | // Create all methods needed for NeoSpace to work 878 | 879 | private bool NeoSpaceSpellSet() 880 | { 881 | 882 | return DefaultSpellSet; 883 | } 884 | 885 | private bool NeoSpaceActivate() 886 | { 887 | 888 | return true; 889 | } 890 | 891 | // Create all methods needed for DrowningMirrorForce to work 892 | 893 | private bool DrowningMirrorForceSpellSet() 894 | { 895 | 896 | return DefaultSpellSet; 897 | } 898 | 899 | private bool DrowningMirrorForceActivate() 900 | { 901 | 902 | return true; 903 | } 904 | 905 | // Create all methods needed for NEXT to work 906 | 907 | private bool NEXTSpellSet() 908 | { 909 | 910 | return DefaultSpellSet; 911 | } 912 | 913 | private bool NEXTActivate() 914 | { 915 | 916 | return true; 917 | } 918 | 919 | // Create all methods needed for CallOfTheHaunted to work 920 | 921 | private bool CallOfTheHauntedSpellSet() 922 | { 923 | 924 | return DefaultSpellSet; 925 | } 926 | 927 | private bool CallOfTheHauntedActivate() 928 | { 929 | 930 | return true; 931 | } 932 | 933 | } 934 | } --------------------------------------------------------------------------------