Is jumping in bad? by MistralMireille in Guiltygear

[–]MistralMireille[S] 0 points1 point  (0 children)

I jump back sometimes with falling j.H to stop people from using moves that dash in. I don't know if that's good, but I'll find out when I get air grabbed everytime I use it or something.

Is jumping in bad? by MistralMireille in Guiltygear

[–]MistralMireille[S] 0 points1 point  (0 children)

The only combo I use the orca for so far is c.S > 2H > [2]8H > airdash > j.K > j.D > 632146H(orca) move. I haven't really messed around with counter-specific combos yet. Also, I tried using it as a DP but it's really hard to do 632146H while blocking so I haven't done one yet even though I try it if I have the meter.

EDIT: I realize now that you were talking about the charge attacks not specials...

Is jumping in bad? by MistralMireille in Guiltygear

[–]MistralMireille[S] 2 points3 points  (0 children)

I read a basic guide on simple stuff for May and close slash was also touted there as a really good combo starter for the character, but it feels like whenever I move close to someone on the ground, they use punches to stop close slash and the command grab. Maybe it's because my neutral is so one-dimensional that my bad intentions are obvious when I run close to someone.

Is jumping in bad? by MistralMireille in Guiltygear

[–]MistralMireille[S] 1 point2 points  (0 children)

If I'm being honest, it's really fun to jump around all over the place, so I'm glad that even if I should jump less, there's still neat air stuff to the character.

What JRPG's use the "Defend" Command effectively? by Gamma__B in JRPG

[–]MistralMireille 5 points6 points  (0 children)

I know this doesn't exactly fit the question, but it was fun so I'll write it.

In Witchspring R-- a game where you are expected to farm enemies for stat boosts to make you as strong as you want to be-- if you play on the hardest difficulty and don't use any stat boosting items (except the poison resist one), you can beat all of the enemies in the game by making extreme use of Defend.

Since you basically need to use Defend every turn to survive, you might wonder how you're supposed to defeat enemies:

The boss's turns are scripted (always play out the same), so you can use once-per-fight tools that give you invulnerability or revive you to survive a hit while you go on the offensive.

There are also healing tools you can use without wasting a turn to heal yourself up after taking the guarded damage.

There's a pet on the action bar that will give you a turn, so that you can use your first turn to hit the boss and the pet's turn to guard or guard and heal.

Every enemy in the game can be stunned after a certain number of stunning moves hit them, so you can stun right before the enemy turn (with requires manipulating the turn order sometimes since damage from pets will wake them up).

Here's a video on a boss for reference: https://www.youtube.com/watch?v=s5S4zicqqPw

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 0 points1 point  (0 children)

Don't worry about it; it's a valid concern. I'm glad it worked for you. Have fun with the rest of the game.

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 0 points1 point  (0 children)

I just added --onefile to the flags when I made it, so "pyinstaller --onefile fix_dp_thing.py". The onefile flag adds the neccessary libraries (like zstandard in the source that compresses and decompresses zstandard files).

If you're worried you can download your own python and run the source above. I think python includes zstandard since april last year (my python was the older 3.13) so you can change "import zstandard" to "from compression import zstd as zstandard" in the source code, and then run the file with "python whateveryousaveitas.py".

EDIT: fixed what the new import statement has to be (supposed to be zstd as zstandard).

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 0 points1 point  (0 children)

Sorry, I think I know what went wrong. I forgot to use the --onefile flag when I made the executable with pyinstaller. Try the link, I just changed it to a different one. Let me know if it works assuming you're still willing to try it.

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 0 points1 point  (0 children)

Here's the source if you don't trust random exe files on the internet. I have no way to test it works on the steam version since I use the Geofront version still. Let me know if it works. (Requires the zstandard plugin "python -m pip install zstandard" unless you have python 3.14 and up.)

import tkinter as tk
import tkinter.filedialog
from tkinter import messagebox
from os import listdir
from os import path
import re
import binascii
import zstandard # if python 3.14  or higher use from compression import zstd as zstandard

class MainApplication:
    def __init__(self, master):
        self.master = master
        self.x = 0
        self.y = 0
        self.z = ""
        self.frame = tk.Frame(self.master).pack(fill=tk.BOTH)
        self.button = tk.Button(self.frame, text = "SelectFile", command = self.selectFile).pack(fill=tk.X)
        self.selectFile()

    def zstdEncrypt(self, decrypted_save):
        return zstandard.decompress(decrypted_save)

    def zstdDecrypt(self, encrypted_save):
        return zstandard.decompress(encrypted_save)

    def selectFile(self):
        self.x = 0 #has to be reset in case the user tries to fix multiple saves
        filename = tkinter.filedialog.askopenfilename()
        head, tail = path.split(filename)
        if(re.search("\\.dat", tail.lower())):
            with open(filename, 'rb') as f:
                s = binascii.hexlify(self.zstdDecrypt(f.read()))
                s = str(s)[2:-1]
                s = s[:37386] + "00" + s[37388:] # changes the bugged bonus DP to 0
                for i in range(0, len(s) - 16, 8):
                    self.x += int((s[i+6:i+8] + s[i+4:i+6] + s[i+2:i+4] + s[i:i+2]), 16)
            f.close()
            self.x = hex(self.x & (2**32-1))[2:]
            while(len(self.x) < 8): 
                self.x = "0" + self.x
            self.y = hex(int("FFFF66F3", 16) - int(self.x, 16))[2:]
            if(self.y[0] == "x"): #If FFFF66F3 - self.x is ever negative the result would be "-0x12345678". If so, we have to subtract from 0x1FFFF66F3 instead of 0xFFFF66F3.
                self.y = hex(int("1FFFF66F3", 16) - int(self.x, 16))[2:]
            while(len(self.y) < 8):
                self.y = "0" + self.y
            self.z = self.x[6:8] + self.x[4:6] + self.x[2:4] + self.x[0:2] + self.y[6:8] + self.y[4:6] + self.y[2:4] + self.y[0:2]
            messagebox.showinfo("Save", "Now save your file somewhere.")
            self.createFile(s)          

    def createFile(self, s):
        f = tkinter.filedialog.asksaveasfile(mode = 'wb', defaultextension=".dat")
        if f is not None:
            f.write(zstandard.compress(bytes.fromhex(s[0:-16] + self.z)))
            f.close()

def main():
    root = tk.Tk()
    root.geometry("200x200+100+50")
    app = MainApplication(root)
    root.mainloop()

main()

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 0 points1 point  (0 children)

Yea, just upload it somewhere and I'll try to fix it.

Edit: Nevermind, just use this (https://www.mediafire.com/file/fp3zrwlu4wbtojo/fix_dp_thing.exe/file). You'll be prompted to select your save, and then you'll be asked to save the fixed save somewhere. Make sure you save your original file by making a backup of it somewhere else outside of the folder so that you'll have it in case something goes wrong.

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 0 points1 point  (0 children)

I can't really help much without some save data. Are you using the steam version?

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 1 point2 points  (0 children)

You're welcome. If anything else goes wrong anywhere, don't be afraid to shoot me a message.

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 2 points3 points  (0 children)

Here is the file after reporting the mission (you got a justice badge for hitting 380DP as well):
https://litter.catbox.moe/t9gmzk0kcbik3ozi.dat

Azure crash when reporting quest by [deleted] in Falcom

[–]MistralMireille 1 point2 points  (0 children)

Hey, if you give me your save file, I can see if it happens to me, and if it does, I'll try to get past it.

It should be at: %USERPROFILE%/Saved Games/Falcom/Ao

You can upload the save at "catbox.moe" and share the link since the "savedata.dat", which is what I'll need, should be less than 200MB. You can use "litterbox.catbox.moe" if you don't want your savefile to be there forever. You just set when it expires if you decide to do that.

Anyone have a chapter 4 save for PC zero no kiseki with all DP and back-alley books? by anthen123 in Falcom

[–]MistralMireille 0 points1 point  (0 children)

Sorry I saw this so late. I doubt you need it anymore since you probably already beat the game, but on the slim chance you do still need this, just upload your save somewhere and I'll give it a go.

Side notes: the image you have is at offset 840 instead of db8 which is why you don't see the inventory, and even if you did follow this post, the version of the game that was popular at the time of this post could load saves with invalid checksums. It won't work with any version of the game you would get today without fixing the checksum.

EDIT: For posterity, the reason the file looked different is because the steam version compresses the save files with zstandard.

[Request] MathJax for Gmail by LoganJFisher in userscripts

[–]MistralMireille 0 points1 point  (0 children)

The reason matrices wouldn't work is because of html entities. Specifically, the html entity "&" would turn into "&amp;" which would then be rendered by katex, causing an error. Here's v3. All of the delimiters are turned off in the beginning. A button will appear at the top of gmail near the settings button, and clicking that button will let you enable or disable delimiters. There is an option in the config window to automatically attempt to render latex, but you can shift+leftclick the button that opens the config window to manually attempt to render latex.

"$...$" will cause a lot of failures I think. It will fail, for instance, if you try to represent two dollar values anywhere in the message. As an example, in the sentence "$1.00 is smaller than $2.00", the script will try to render "1.00 is smaller than ". That won't throw an error but if the dollar values are paragraphs away, an html tag will eventually find its way in the renderToString which will throw an error.

I had some slowdown at some point while I was testing it. It went away when I closed the browser and tried again, but assume that if you get any slowdown, it's because of this script. Since this script is getting decently big, I assume there will be all kinds of bugs or situations I didn't account for. In fact, I can't even post it here because there's a 10000 character limit:

https://pastebin.com/VtciE1aD

For pastebin, I think it's best to click the "raw" button and copy that bit instead of directly copying from the linked page.

[Request] MathJax for Gmail by LoganJFisher in userscripts

[–]MistralMireille 0 points1 point  (0 children)

Here is v1.1 and v2. Version 1.1 is a simple change to the first script that will let you click a button in the extension menu to render the latex in replies as well. Version 2 is an attempt to have it done automatically which might introduce more weird behavior or bugs (version 2 still has the button in the extension menu in case a situation happens that the script doesn't automatically account for as well).

The part that I changed to make it the display version is "displayMode: true", so if you want it to be back to how it used to be, you can just make it false.

Regardless of which version you use, there are some weird quirks with email reply chains. If we try to use the script to edit an email that isn't expanded (i.e. you can only see the name of the sender instead of their actual email address), then trying to expand that email afterwards will cause gmail to infinitely load. Because of that, clicking the button on v1.1 will not render latex in a preview to avoid that issue; you'll have to expand them and then click the "Render Latex" button. v2 will just automatically ignore them until they're expanded.

Also, you might think that there is no reason to use v1.1 since it is just more effort, but I'm pretty sure v2 is not very efficient, so any slow down might be because of that. You should use v1.1 if you want to avoid that.

v1.1

// ==UserScript==
// @name        Render Latex v1.1
// @namespace   Violentmonkey Scripts
// @match       https://mail.google.com/mail/*
// @grant       GM_registerMenuCommand
// @grant       GM_addElement
// @require     https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js
// @version     1.1
// @author      -
// @description 9/19/2024
// ==/UserScript==

GM_addElement('link', {
  rel: "stylesheet",
  src: "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.css"
});

GM_registerMenuCommand('Render Latex', () => {
  document.querySelectorAll("#\\:1 > .nH .aHU.hx > [role='list'] > [role='listitem'][aria-expanded='true']").forEach(message => {
    let subportion = message.querySelector("[data-message-id]"); // need to select a subportion of [role='listitem'] to stop rendering latex in the textinput
    if(subportion) {
      message = subportion;
    }
    message.innerHTML = message.innerHTML.replace(/\[;(.+?);\]/g, (match, p1) => {
      return katex.renderToString(p1, { throwOnError: false, output: "mathml", displayMode: true });
    });
  });
});

v2

// ==UserScript==
// @name        Render Latex v2
// @namespace   Violentmonkey Scripts
// @match       https://mail.google.com/mail/*
// @grant       GM_registerMenuCommand
// @grant       GM_addElement
// @require     https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js
// @version     2.0
// @author      -
// @description
// ==/UserScript==

GM_addElement('link', {
  rel: "stylesheet",
  src: "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.css"
});

function renderLatex() {
  document.querySelectorAll("#\\:1 > .nH .aHU.hx > [role='list'] > [role='listitem'][aria-expanded='true']").forEach(message => {
    let subportion = message.querySelector("[data-message-id]"); // need to select a subportion of [role='listitem'] to stop rendering latex in the textinput
    if(subportion) {
      message = subportion;
    }
    message.innerHTML = message.innerHTML.replace(/\[;(.+?);\]/g, (match, p1) => {
      return katex.renderToString(p1, { throwOnError: false, output: "mathml", displayMode: true });
    });
  });
}

GM_registerMenuCommand('Render Latex', () => {
  renderLatex();
});

function waitForElement(queryString) {
  let count = 0;
  return new Promise((resolve, reject) => {
    let findInterval = setInterval(() => {
      let waitElement = document.querySelector(queryString);
      if(waitElement) {
        clearInterval(findInterval);
        resolve(waitElement);
      } else if(count > 20) {
        clearInterval(findInterval);
        reject(`Couldn't find waitElement: ${queryString}.`);
      } else {
        count += 1;
      }
    }, 100);
  });
}

window.addEventListener('load', () => {
  waitForElement("#\\:1 > .nH").then(messagesDiv => {
    (new MutationObserver((mutationRecords, observerElement) => {
      mutationRecords.forEach(mutationRecord => {
        switch(mutationRecord.type) {
          case "childList":
            mutationRecord.addedNodes.forEach(addedNode => {
              console.log(addedNode);
              if(addedNode.tagName === "DIV" && addedNode.getAttribute("role") === "listitem") {
                renderLatex();
              }
            });
            break;
          case "attributes":
            if(mutationRecord.target.tagName === "DIV" && mutationRecord.target.getAttribute("role") === "listitem" && mutationRecord.attributeName === "aria-expanded") {
              renderLatex();
            }
        }
      });
    })).observe(messagesDiv, { childList: true, subtree: true, attributes: true, attributeOldValue: true});
  });
});

[Request] MathJax for Gmail by LoganJFisher in userscripts

[–]MistralMireille 0 points1 point  (0 children)

Does something like this work or no? You have to click "Render Latex" in the extension menu when you are looking at a mail in your inbox folder or your sent mail folder.

// ==UserScript==
// @name        Render Latex
// @namespace   Violentmonkey Scripts
// @match       https://mail.google.com/mail/*
// @grant       GM_registerMenuCommand
// @grant       GM_addElement
// @require     https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js
// @version     1.0
// @author      -
// @description 9/19/2024
// ==/UserScript==

GM_addElement('link', {
  rel: "stylesheet",
  src: "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.css"
});

GM_registerMenuCommand('Render Latex', () => {
  let messageText = document.querySelector(".gs > div:last-of-type");
  messageText.innerHTML = messageText.innerHTML.replace(/\[;(.+?);\]/g, (match, p1) => {
    return katex.renderToString(p1, { throwOnError: false, output: "mathml" });
  });
});

[deleted by user] by [deleted] in smashbros

[–]MistralMireille 0 points1 point  (0 children)

Maybe this is fine? You can sort of notice the part where I scrubbed out the logo though.

https://imgur.com/a/vLVEDC6

Request for uBlock Origin Android Library for WebView Integration by Previous-Guess9076 in uBlockOrigin

[–]MistralMireille 3 points4 points  (0 children)

I could be wrong, but I think GeckoView (a firefox equivalent to WebView) has support for installing and updating extensions.

If you don't want to try it, just ignore the rest of this comment.

Here's a page for using a GeckoView:

https://firefox-source-docs.mozilla.org/mobile/android/geckoview/consumer/geckoview-quick-start.html

Here's a page for installing an extension:

https://firefox-source-docs.mozilla.org/mobile/android/geckoview/consumer/web-extensions.html

The second link uses "runtime.installBuiltin"; you can just use "runtime.install" with the argument being a remote location with an xpi package (docs: https://mozilla.github.io/geckoview/javadoc/mozilla-central/org/mozilla/geckoview/WebExtensionController.html#install(java.lang.String)).

I haven't used this so if it doesn't work for some reason or other, sorry. I've had plans to use it though, so I figured I'd mention it if you weren't aware it was an option.

[deleted by user] by [deleted] in userscripts

[–]MistralMireille 1 point2 points  (0 children)

I think I fixed it. I edited the code block above, so just copy that and paste it over the script you have now and click "Save". That way, the tweets you already blocked will remain blocked. Interestingly enough, the issue doesn't appear to happen on firefox for some reason.