Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- state("higan") {}
- state("snes9x") {}
- state("snes9x-x64") {}
- state("emuhawk") {}
- startup
- {
- settings.Add("bosses", true, "Bosses");
- }
- init
- {
- var states = new Dictionary<int, long>
- {
- { 10330112, 0x789414 }, //snes9x 1.52-rr
- { 7729152, 0x890EE4 }, //snes9x 1.54-rr
- { 5914624, 0x6EFBA4 }, //snes9x 1.53
- { 6909952, 0x140405EC8 }, //snes9x 1.53 (x64)
- { 6447104, 0x7410D4 }, //snes9x 1.54/1.54.1
- { 7946240, 0x1404DAF18 }, //snes9x 1.54/1.54.1 (x64)
- { 6602752, 0x762874 }, //snes9x 1.55
- { 8355840, 0x1405BFDB8 }, //snes9x 1.55 (x64)
- { 6856704, 0x78528C }, //snes9x 1.56/1.56.2
- { 9003008, 0x1405D8C68 }, //snes9x 1.56 (x64)
- { 6848512, 0x7811B4 }, //snes9x 1.56.1
- { 8945664, 0x1405C80A8 }, //snes9x 1.56.1 (x64)
- { 9015296, 0x1405D9298 }, //snes9x 1.56.2 (x64)
- { 6991872, 0x7A6EE4 }, //snes9x 1.57
- { 9048064, 0x1405ACC58 }, //snes9x 1.57 (x64)
- { 7000064, 0x7A7EE4 }, //snes9x 1.58
- { 9060352, 0x1405AE848 }, //snes9x 1.58 (x64)
- { 8953856, 0x975A54 }, //snes9x 1.59.2
- { 12537856, 0x1408D86F8 }, //snes9x 1.59.2 (x64)
- { 9027584, 0x94DB54 }, //snes9x 1.60
- { 12836864, 0x1408D8BE8 }, //snes9x 1.60 (x64)
- { 12509184, 0x915304 }, //higan v102
- { 13062144, 0x937324 }, //higan v103
- { 15859712, 0x952144 }, //higan v104
- { 16756736, 0x94F144 }, //higan v105tr1
- { 16019456, 0x94D144 }, //higan v106
- { 10096640, 0x72BECC }, //bsnes v107
- { 10338304, 0x762F2C }, //bsnes v107.1
- { 47230976, 0x765F2C }, //bsnes v107.2/107.3
- { 7061504, 0x36F11500240 }, //BizHawk 2.3
- { 7249920, 0x36F11500240 }, //BizHawk 2.3.1
- };
- long memoryOffset;
- if (states.TryGetValue(modules.First().ModuleMemorySize, out memoryOffset))
- if (memory.ProcessName.ToLower().Contains("snes9x"))
- memoryOffset = memory.ReadValue<int>((IntPtr)memoryOffset);
- if (memoryOffset == 0)
- throw new Exception("Memory not yet initialized.");
- vars.watchers = new MemoryWatcherList
- {
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x2b1) { Name = "ownlife" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x7c1) { Name = "enemylife1" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x811) { Name = "enemylife2" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x861) { Name = "enemylife3" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x8b1) { Name = "enemylife4" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0x9f1) { Name = "enemylife5" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0xa41) { Name = "enemylife6" },
- new MemoryWatcher<byte>((IntPtr)memoryOffset + 0xe01) { Name = "enemylife7" },
- };
- vars.couldbefighting = 0;
- vars.isfighting = false;
- }
- update
- {
- vars.watchers.UpdateAll(game);
- }
- start
- {
- return vars.watchers["ownlife"].Old == 0 && vars.watchers["ownlife"].Current != 0;
- }
- reset
- {
- }
- split
- {
- if (vars.isfighting) {
- var Count255 = 0;
- var Count0 = 0;
- if (vars.watchers["enemylife1"].Current==255) { Count255++; } if (vars.watchers["enemylife1"].Current==0) { Count0++; }
- if (vars.watchers["enemylife2"].Current==255) { Count255++; } if (vars.watchers["enemylife2"].Current==0) { Count0++; }
- if (vars.watchers["enemylife3"].Current==255) { Count255++; } if (vars.watchers["enemylife3"].Current==0) { Count0++; }
- if (vars.watchers["enemylife4"].Current==255) { Count255++; } if (vars.watchers["enemylife4"].Current==0) { Count0++; }
- if (vars.watchers["enemylife5"].Current==255) { Count255++; } if (vars.watchers["enemylife5"].Current==0) { Count0++; }
- if (vars.watchers["enemylife6"].Current==255) { Count255++; } if (vars.watchers["enemylife6"].Current==0) { Count0++; }
- if (vars.watchers["enemylife7"].Current==255) { Count255++; } if (vars.watchers["enemylife7"].Current==0) { Count0++; }
- if (Count255 == 3 && Count0 == 4) {
- vars.isfighting = false;
- print ("Fight with fire boss is Over, Splitting.");
- return true;
- }
- var Enemy1 = settings["bosses"] && vars.watchers["enemylife1"].Current > 230 && vars.watchers["enemylife1"].Old < 20;
- var Enemy2 = settings["bosses"] && vars.watchers["enemylife2"].Current > 230 && vars.watchers["enemylife2"].Old < 20;
- var Enemy3 = settings["bosses"] && vars.watchers["enemylife3"].Current > 230 && vars.watchers["enemylife3"].Old < 20;
- var Enemy4 = settings["bosses"] && vars.watchers["enemylife4"].Current > 230 && vars.watchers["enemylife4"].Old < 20;
- var Enemy5 = settings["bosses"] && vars.watchers["enemylife5"].Current > 230 && vars.watchers["enemylife5"].Old < 20;
- var Enemy6 = settings["bosses"] && vars.watchers["enemylife6"].Current > 230 && vars.watchers["enemylife6"].Old < 20;
- var Enemy7 = settings["bosses"] && vars.watchers["enemylife7"].Current > 230 && vars.watchers["enemylife7"].Old < 20;
- if (Enemy1 || Enemy2 || Enemy3 || Enemy4 || Enemy5 || Enemy6 || Enemy7) {
- vars.isfighting = false;
- print ("Fight is Over, Splitting.");
- return true;
- }
- if (vars.watchers["ownlife"].Current == 0) {
- print ("Fight is over but player died, no split this time.");
- vars.isfighting = false;
- Thread.Sleep(7000);
- }
- } else {
- if (vars.couldbefighting==0) {
- if (vars.watchers["enemylife1"].Current > 32 && vars.watchers["enemylife1"].Current < 53) { vars.couldbefighting = 1; }
- if (vars.watchers["enemylife2"].Current > 32 && vars.watchers["enemylife2"].Current < 53) { vars.couldbefighting = 2; }
- if (vars.watchers["enemylife3"].Current > 32 && vars.watchers["enemylife3"].Current < 53) { vars.couldbefighting = 3; }
- if (vars.watchers["enemylife4"].Current > 32 && vars.watchers["enemylife4"].Current < 53) { vars.couldbefighting = 4; }
- if (vars.watchers["enemylife5"].Current > 32 && vars.watchers["enemylife5"].Current < 53) { vars.couldbefighting = 5; }
- if (vars.watchers["enemylife6"].Current > 32 && vars.watchers["enemylife6"].Current < 53) { vars.couldbefighting = 6; }
- if (vars.watchers["enemylife7"].Current > 32 && vars.watchers["enemylife7"].Current < 53) { vars.couldbefighting = 7; }
- if (vars.couldbefighting>0) {
- print ("Fight may be going on... watching...");
- }
- } else {
- if (vars.couldbefighting == 1 && vars.watchers["enemylife1"].Current > 15 && vars.watchers["enemylife1"].Current < 32) { vars.isfighting = true; }
- if (vars.couldbefighting == 2 && vars.watchers["enemylife2"].Current > 15 && vars.watchers["enemylife2"].Current < 32) { vars.isfighting = true; }
- if (vars.couldbefighting == 3 && vars.watchers["enemylife3"].Current > 15 && vars.watchers["enemylife3"].Current < 32) { vars.isfighting = true; }
- if (vars.couldbefighting == 4 && vars.watchers["enemylife4"].Current > 15 && vars.watchers["enemylife4"].Current < 32) { vars.isfighting = true; }
- if (vars.couldbefighting == 5 && vars.watchers["enemylife5"].Current > 15 && vars.watchers["enemylife5"].Current < 32) { vars.isfighting = true; }
- if (vars.couldbefighting == 6 && vars.watchers["enemylife6"].Current > 15 && vars.watchers["enemylife6"].Current < 32) { vars.isfighting = true; }
- if (vars.couldbefighting == 7 && vars.watchers["enemylife7"].Current > 15 && vars.watchers["enemylife7"].Current < 32) { vars.isfighting = true; }
- if (vars.isfighting) {
- print ("Fight is going on... Watching for boss death.");
- vars.couldbefighting = 0;
- return false;
- }
- if (vars.couldbefighting == 1 && vars.watchers["enemylife1"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting == 2 && vars.watchers["enemylife2"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting == 3 && vars.watchers["enemylife3"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting == 4 && vars.watchers["enemylife4"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting == 5 && vars.watchers["enemylife5"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting == 6 && vars.watchers["enemylife6"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting == 7 && vars.watchers["enemylife7"].Current == 0) { vars.couldbefighting = 0; }
- if (vars.couldbefighting==0) {
- print ("Fight was a fake, reverting back."+vars.couldbefighting);
- }
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement