taliczealot / sotnrandotools Goto Github PK
View Code? Open in Web Editor NEWA collection of tools to enhance the SotN randomizer experience.
Home Page: https://taliczealot.github.io/
License: MIT License
A collection of tools to enhance the SotN randomizer experience.
Home Page: https://taliczealot.github.io/
License: MIT License
Please use this template for any bugs or problems you encounter using the tools and label the issue appropriately. Fill as many of the fields listed below as possible.
If an error popped up paste a screenshot of it or the error message. Please remember to search for similar issues before writing anything, including in closed issues!
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: AND data length expected 128, read 0
Parameter name: stream
at System.Drawing.Icon.InitFromStreamWithSize (System.IO.Stream stream, System.Int32 width, System.Int32 height) [0x005a0] in :0
at System.Drawing.Icon..ctor (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00095] in :0
at (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo.InternalInvoke(System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
--- End of inner exception stack trace ---
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x0001a] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Reflection.RuntimeConstructorInfo.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00086] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Reflection.RuntimeConstructorInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0002f] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Reflection.RuntimeConstructorInfo.SerializationInvoke (System.Object target, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject (System.Object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00059] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.ObjectManager.FixupSpecialObject (System.Runtime.Serialization.ObjectHolder holder) [0x00088] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.ObjectManager.DoFixups () [0x0005a] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00077] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x000a2] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.ResourceReader.DeserializeObject (System.Int32 typeIndex) [0x00019] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.ResourceReader._LoadObjectV2 (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x0035b] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.ResourceReader.LoadObjectV2 (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.ResourceReader.LoadObject (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x00022] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.RuntimeResourceSet.GetObject (System.String key, System.Boolean ignoreCase, System.Boolean isString) [0x000b4] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.RuntimeResourceSet.GetObject (System.String key, System.Boolean ignoreCase) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.ResourceManager.GetObject (System.String name, System.Globalization.CultureInfo culture, System.Boolean wrapUnmanagedMemStream) [0x0008e] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Resources.ResourceManager.GetObject (System.String name) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at SotnRandoTools.ToolMainForm.InitializeComponent () [0x0075d] in <3edc1556a7784422ac0bcdd5f38aee9a>:0
at SotnRandoTools.ToolMainForm..ctor () [0x00011] in <3edc1556a7784422ac0bcdd5f38aee9a>:0
at (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo.InternalInvoke(System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
--- End of inner exception stack trace ---
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x0001a] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00095] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean wrapExceptions, System.Boolean skipCheckThis, System.Boolean fillCache) [0x00009] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Boolean wrapExceptions, System.Threading.StackCrawlMark& stackMark) [0x00027] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00020] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.RuntimeType.CreateInstanceImpl (System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes, System.Threading.StackCrawlMark& stackMark) [0x0022b] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Activator.CreateInstance (System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes) [0x0009c] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Activator.CreateInstanceFromInternal (System.String assemblyFile, System.String typeName, System.Boolean ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes, System.Security.Policy.Evidence securityInfo) [0x00010] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Activator.CreateInstanceFrom (System.String assemblyFile, System.String typeName, System.Boolean ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Activator.CreateInstanceFrom (System.String assemblyFile, System.String typeName, System.Object[] activationAttributes) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at System.Activator.CreateInstanceFrom (System.String assemblyFile, System.String typeName) [0x00000] in <14ab7ebc6d7c41b09c69cf099b86af4e>:0
at BizHawk.Client.EmuHawk.ToolManager.CreateInstance (System.Type toolType, System.String dllPath, System.String toolTypeName, System.Boolean skipExtToolWarning) [0x0003a] in <828628a610e44fa287bdfc7090f08a57>:0
at BizHawk.Client.EmuHawk.ToolManager.LoadExternalToolForm (System.String toolPath, System.String customFormTypeName, System.Boolean focus, System.Boolean skipExtToolWarning) [0x00054] in <828628a610e44fa287bdfc7090f08a57>:0
at BizHawk.Client.EmuHawk.MainForm.<.ctor>b__6_7 (System.String toolPath, System.String customFormTypeName, System.Boolean skipExtToolWarning) [0x00000] in <828628a610e44fa287bdfc7090f08a57>:0
at BizHawk.Client.EmuHawk.ExternalToolManager+MenuItemInfo.TryLoad () [0x00000] in <828628a610e44fa287bdfc7090f08a57>:0
at BizHawk.Client.EmuHawk.ExternalToolManager+<>c__DisplayClass10_0.b__1 (System.Object _, System.EventArgs _) [0x00000] in <828628a610e44fa287bdfc7090f08a57>:0
at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs e) [0x00019] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ToolStripMenuItem.OnClick (System.EventArgs e) [0x00090] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ToolStripMenuItem.HandleClick (System.Int32 mouse_clicks, System.EventArgs e) [0x00000] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs e, System.Windows.Forms.ToolStripItemEventType met) [0x00054] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem.FireEvent(System.EventArgs,System.Windows.Forms.ToolStripItemEventType)
at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00048] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ToolStripDropDown.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00000] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00078] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message& m) [0x00000] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.ToolStripDropDown.WndProc (System.Windows.Forms.Message& m) [0x00017] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <95d2b0fe71cd43ad8f3dadc76ea9ef47>:0
BizHawk has completed its shutdown routines, killing process...
./EmuHawkMono.sh: line 33: 16060 Killed mono ./EmuHawk.exe "$@"
Provide information relevant to the bug. The more information provided, the
easier it is to reproduce the bug.
bizhawk crashes when i try to launch rando tools.
Open the Black Marble Gallery save on the attached virtual memory card and go
right, then...
Add any other context about the problem here or post a screenshot if there is a visual bug.
Note: The log file is named in the following format: dd-MM-yy hh-mm-ss
If you are not sure which log is the correct one you can open it and search for Randomizer seed information
and look for the correct seed.
no log file present
1.6.1
2.9.1
The best way to provide all the necessary seed information is to click the
"Copy seed" button after randomizing then paste here. Alternatively, name the
preset used and whether or not tournament mode was enabled. The seed and preset are also displayed by the tracker. Providing a ppf or a link to the discord message for a race is also sufficient.
Found in the file select menu of your randomized game.
Arch linux
mono 6.12.0.205
nightmare
Every enemy and gimmick deals 3x the damage for a limited time.
Not sure
When I open rando tools tracker in glitch preset, i get guarded map locations on the map instead of equipment
Tax Fraud
When redeemed the player has a 50/50 chance of getting a large sum of money or go Bankrupt(items/equipment, money, or abilities will be taken). each time it is redeemed the player can get more money or lose more items.
instant
like gambling but with more consequences
!knuke
Triggers a single neutron bomb that deals around 1000 damage to enemies currently on-screen. Additionally change the explosion effect palette to a warmer color to make it easy to differentiate from a regular neutron bomb if possible.
Instant trigger
Not a problem per se. But would be nice to enjoy the sound effects and music in it's best possible quality.
Freeze address 8003CAFC to 0000 (I think this is the right one)
Some of us are doing it manually during library card check, before death take away our equipment and can be avoided by it being default.
From what I've been told, the game only defaulted at mono because when the game was released in the late 90s not all televisions were capable of stereo audio. So the default was set to mono and the option available to those who were capable. It's 2022 and some of these tracks sound much better as they were intended.
Tracker-Power-of-Mist-Bug-SaveRAM.zip
If an error popped up paste a screenshot of it or the error message.
System.NullReferenceException: Object reference not set to an instance of an object.
at SotnRandoTools.RandoTracker.Tracker.ClearMapLocation(Int32 index)
at SotnRandoTools.RandoTracker.Tracker.CheckRooms(WatchList watchlist)
at SotnRandoTools.RandoTracker.Tracker.UpdateLocations()
at SotnRandoTools.RandoTracker.Tracker.Update()
at SotnRandoTools.ToolMainForm.UpdateValues(ToolFormUpdateType type)
at BizHawk.Client.EmuHawk.ToolManager.UpdateToolsAfter()
at BizHawk.Client.EmuHawk.MainForm.StepRunLoop_Core(Boolean force)
at BizHawk.Client.EmuHawk.MainForm.ProgramRunLoop()
at BizHawk.Client.EmuHawk.Program.SubMain(String[] args)
Approaching the Power of Mist check from the side or from under with a gravity jump causes a NullReferenceException.
Open the Castle Keep save on the attached virtual memory card and go near the Power of Mist check.
https://www.twitch.tv/videos/1024016988
2.6.1
Link to the ppf: https://cdn.discordapp.com/attachments/566486385377280001/843200882538577970/SotN-Randomizer_SurprisingAxelord14.ppf
3.5.17
Windows 7 6.1.7601 Service Pack 1 Build 7601
Nope.
Post game, show the path the player has taken to finish the seed.
Record the deaths/resets, the relics that were picked up, etc.
Similar to how Zelda Breath of the Wilds Hero's Path mode.
https://www.youtube.com/watch?v=t02p9LXGnpw
And alternative would be to use something like a heatmap, though it wouldn't necessarily show you -how- you played but it would show you where you spent/wasted the most time at.
In the setting of a race with commentary by a third party, for example a Rando Tournament, having a quick post game discussion with the players path showing on screen could be a handy tool to quickly recap what went down.
ίχνος > íchnos
Greek word for 'trace'.
I have noticed a lot of confusion when it comes to the timers and cooldown for Khaos.
Viewers thinking that their command didnt go through or it being skipped and other commands go through before theirs.
A way to show what times or what the current cooldown for a specific command is.
Either in the Khaos tool itself so it can be window captured or somehow in OBS itself.
It could probably be done through a chatbot as well. Something like warning if a command has already been triggered, or if a command is currently on a countdown.
Some effects (namely krelics and pandora) can be stocked an used repeatedly, and with enough viewers can prevent a run from finishing
A possible option to make effects (toggleable per effect) scale based on # of times used (i.e., +10% per use, or +X per use)
Cooldowns work, but lock things out for the duration, which can potentially cause a softlock/reset situation.
Could you add the "Dragon Install" to the External Tool's Alert Tab?
It can only currently be modified by directly overwriting the existing .mp3 file.
N/A
Gas Cloud relic is removed with Subsonly Khaos command.
After acquiring the Gas Cloud relic, a user performed the Subsonly Khaos command.
This removed the relic from my inventory + tracker.
Twitch clip of relic being removed after Khaos command is run: https://clips.twitch.tv/TriumphantPrettySalmonKappa-8rLKUMgfApfTH_zy
1.05
BizHawk_Developer-2021-05-15-173608
Seed Name: Chat2StrongPlzNerf
Preset: Casual
Tournament Mode: Disabled.
Latest
Windows 10 (Latest)
The Streamlab Chatbox should have a checkbox to enable / disable Khaos commands from appearing in the Index HTML Overlay file maintained by the Khaos Bot scripts.
There are certain seeds (ex. Adventure) where users may not want the full range of options (ex. krelics, pandora) but may still want them for other seed types.
Only current alternatives are to directly comment out / remove commands in the python file in between runs or to set price / cooldown as high as possible.
Not really a problem, just an option for people to separate the notifications from the in game overlay.
Have a checkbox in the Khaos tool to enable/disable the in-game overlay.
And make it somehow possible to read the last command in OBS itself, so it can be shown on your layout.
Have Khaos spit out a .txt file with the last used command.
That way in OBS you can have a text source, reading the .txt that Khaos spit out.
(similar to how streamlabs chatbot spits out a bunch of .txt files for use with OBS and text sources.)
A straight up plugin, for OBS, that reads or gets sent data from the Khaos Tool itself.
It makes sense to have something pop up in the game so the streamer/player knows what is going on.
But if someone wants to incorporate it in their layout in OBS somehow, make that possible as well.
Hi. I don't know how to do this correctly so I'll just drop this comment here.
I was playing a Bat-Master seed (1685247155595) with Area Randomizer active and one of the Vlad Locations was on the Forbidden Library, behind the bookcase where a Badelaire is on the vanilla game. This location wasn't marked on the tracker. Is this normal or did the rando had some change recently?
Would it be possible to include the ability to add a floor / cap to the percent modifier of the random stat commands that the khaos runner can change in the settings?
Or alternatively an option to only purely re-roll stats with no +/- modifiers (only a redistribution).
The current concern is that it can result in level 1 stats on high level characters with no way to regain stats since the player does not delevel. This currently makes this option stronger than weaken when used multiple times in a row due to the current random roll weighting (which is neat when looking for that specific challenge, but not always wanted / may not be clear to new viewers or players this can happen).
Acquired Spike Breaker armor (it lit properly in the auto-tracker when acquired) then died and game-overed before saving. Reloaded last save before Spike Breaker was acquired and it remained lit in the tracker despite the armor not being in inventory.
Run SotnRandoTools w/Auto Tracker enabled.
Acquire Spike Breaker.
Die and Game Over without saving after acquiring Spike Breaker.
Reload last save.
Check Inventory to see no spike breaker, and if the icon is lit in the tracker.
Screenshot shows Spike Breaker lit in tracker, but not it is not in inventory.
1.5.9
2.9.1
1695053115870(safe) Safe Template
Found in the file select menu of your randomized game.
On the map using the Expedition and Adventure presets (without tournament mode enabled. Didn't test with it enabled yet) the marked locations are from the Spread locations instead of the Equipment locations.
RandoToolsVersion 1.5.8
Randomizer Version 3.15.0
BizHawk Version 2.8
Rolling back to 1.5.6 and 1.5.7 works like normal.
https://www.twitch.tv/videos/1455301129
During the race, a player library carded before death. Once they finished library and entered Outer Wall, the Cube of Zoe check was not visible on the map. (Normally we all know to go back to entrance but the player relied on the map for their next decision)
The only information I have is that it was gokublack who experienced this. I do not know their current versions of tracker or bizhawk.
N/A
Khaos Equipment randomizes sub weapon / occasionally removes it altogether while Subweapons only is active.
Activate Subsweapons Only.
Then activate Khaos Equipment during the duration of Subweapons Only.
One of the randomly selected sub weapons can be blank/empty (may require multiple Khaos Equipments during Subs Only to observe).
N/A
1.0.6
2021-05-15
N/A
3.5.28
Windows 10 (latest)
relearn
Randomizes which input command performs which spell.
Permanent until shuffled again.
Using the path finding tool I was unable to determine the fastest way between point A and point B without teleports being available.
(Albeit some things I'm testing are already proven and known such as starting at Librarian room it is faster to go to Leap Stone via Clock Tower vs teleporting to entrance and going through Alchemy to Chapel. But even for those that wrongfully go any suboptimal route can have a sense of how distant their decision takes them.)
As the title says, the ability to toggle individual teleports.
If there is a limitation to the ability to path find without teleports or the pathfinder cannot account for things like JoO Clock Tower strats then maybe the ability to select multiple points A, B, and in addition C, D etc can connect those dots without needing to code all the possibilities.
Actually while writing this I was testing Holy Glasses (clock room specific) to Richter (the tile before the actual room) and it ignored the teleport and went through chapel.
Just want to finish off by saying I assume this is still a work in progress so it's safe to say it can't account for all things that I've mentioned. Also, I hope people use this more, it is useful.
KHAOS ITEM CRASH
Activates a random item crash; either a Holy Cross, Hydro Storm, Spiral Axe, and item crashes for Agunea, Bible, and Rebound Stone. The item crash effects will damage all enemies and Alucard.
Instant
Castlevania: Symphony of the Night
succ
We all know that everyone loves hearing Enchanted Banquet, that's why it'll be playing as the in-game BGM for the next 5 minutes.
5 minutes
invertres
Takes the vanilla resistances of all in-game enemies and inverts them. What was weak to light becomes resistant to it, resistant to dark becomes weak to it...
Not sure
Change cape colour
Literally change the cape colour by using the command and passing the 3 arguments of RGB next to it. Also If you found out to make it a changing colour like the twilight cloack, it would also be nice as a option.
Until gets changed
I'm not aware if there is.
When running an OG seed, the tracker correctly displays the seed name as OG, but the map shows Guarded locations such as Scylla and Granfaloon. This particular seed was generated with music randomization disabled, which may be relevant?
Generate an OG seed, finish the prologue, and open the map.
1.6.7
2.9.1
https://discord.com/channels/407759960588419073/564738749678878720/1216094189360775299
3.15.0
Windows 10 22H2
Uploaded my SOTN .bin to SOTN.io, had it randomize. Confirmed it works and is randomized. Followed the instructions for setup including making sure the file tree is accurate, and attempted to load the tool via Tools -> External Tools. Bizhawk 2.9.1 shows "This tool doesn't work with this game."
As above. I attempted to check the tool a various points, such as at the title screen, post-Richter, and post-Death. None were successful.
1.5.4
2.9.1
Safe, Tournament disabled.
3.15.0
Windows 10 Pro, ver. 22H2
The tracker's map seems to show the locations for the Guarded set even when playing an OG seed.
Generate an OG seed, start playing with the tracker enabled, and open the map.
1.6.0
2.9.1
https://discord.com/channels/407759960588419073/564738749678878720/1160600421103055048
3.15.0
Windows 10 Pro 22H2
richterswap
Changes the player character to Richter for a limited time. Item menu cannot be accessed while this effect is active.
3 minutes or so
Unable to think of command suggestion. !dutycalls is the dumbest name I can think of if its possible to transform into the armour in real time.
Increasing the jump height limit to the Axe Lord Armour at least to the normal height limit of Alucard. It brings the armour back to life with fun and functionality to be able to platform. I originally thought of a height closer to Leap Stone because I'm not personally sure on how quickly Axe Lord Armour descends relative to Alucard's descension, but obviously not a height that can be abused to break any logic etc.
Unsure. See below.
While I originally liked to have seen this as an addition to the randomizer as a whole, I'm unsure of if mouse would approve this, assuming my presumption of his intention of maintaining the integrity of the original game intentions. It would be at least cool to see it in action in Khaos in some form. (If I remember Axe Lord Armour can be troublesome to force in certain situations so I'm hoping there can be some implementation of some sort)
Nemesis
Spawn a Doppelganger 40 (or a harder level version) on the next boss fight.
Instant
Castlevania: Symphony of the Night
It is not clear when currently starting Co-op, whether you are connected or not, either as a host or a client.
When you click on host, grey everything else out and change the button to 'quit' or something similar. To end the session.
That way you have visual feedback that something has happened.
As a client connecting to a host. When you click the connect button, grey everything else out.
Change the button to 'connecting'. and if the player has connected, change it to 'connected' for a bit and after a bit change it to 'disconnect'.
Not having feedback when using the main coop window but instead relying on the log window isn't user friendly at all.
And considering most people that would use this aren't coders or whatever, making it easy for them should be a priority.
(After getting all the functionality done of course.)
The solutions i have written above are far from ideal as well.
It's just a quick way of getting -some- feedback, using the current 'design' of the tool.
A clear and concise description of any alternative solutions or features you've considered.
Add any other context or screenshots about the feature request here.
!kpacific
Sets the health of all enemies to 0x7FFF for a limited time, preventing them from getting damaged by the player.
Lasts for about 1 minute if triggered in the overworld and 20 seconds if triggered during a boss battle.
subsonly
Alucard can only use subweapons for a limited time. Gives Cube of Zoe if the player doesn't already have it as well as a certain amount of hearts if the current amount is below a certain threshold for that duration.
3 minutes or so
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.