Hey everyone! I, embarrassingly, made an error in this video (thanks to ndm13 for leaving a comment informing me of my mistake). This glitch does NOT occur in XD, but DOES occur in Colosseum. The mistake I made was setting Twineedle's secondary effect chance to 100, which I did to test out the timing of secondary effects with multi hit moves, but then I never set the effect chance to 0 to test out if the glitch occurs for realsies. My apologies for this oversight on my part. Hopefully you still enjoy the video regardless.
I was just about to comment that lol Like, wasn't the fix in Emerald just making it so there's no more 1% chance for moves with no effects? Then the Twineedle with 100% chance doesn't work for testing. I'm guessing Colosseum doesn't have that 1% chance fix, but XD probably does since it's after Emerald.
@@mari_zz Yeah, lol. Very unfortunate mistake on my end that I didn't catch before uploading; I'll definitely have to be more careful with future videos. Since RUclips removed annotations, which would've been the perfect solution for this error, hopefully enough people notice the pinned comment, as that's about the only good option for correcting myself at this point.
Wouldn't this mean that Twin needle has version of this glitch in in Emerald & XD (and all other versions) where it can paralyze/burn/sleep if attacking a pokemon with static/flamebody/effect spore ? Is that version of the glitch less obscure and only the Double Kick, Double Slap, etc. version was the one that needed research?
@@yukihoshikawait’s essentially the same, in the sense that some event gets an extra 1% chance of happening, regardless of the intended accuracy. (For instance, Poison Sting actually has 31% chance of poisoning as a result of this bug… Not just 0% moves) The only difference is that the extra chance gets added to success rather than failure
the only reason we know of that first person that found that glich is because he wasnt using an unsearcheable private community like discord. Anything put into discord if not saved dies with it. its very different from using a forum where even if the forum dies web scrapers and many different backup projects keep the information alive. thanks for this video and for saving a piece of information. and if you read thing comment, plz remember to not use discord as a wiki or forum, discord is where communities go to die
I thought about that and yeah, it does feel like it's the case It feels like the internet in general, and especially google got MUCH worse over the years at linking you to what you're searching It reeally looks like you can't find the answers you want to a LOT of things outside of going to specific sites like reddit, because nothing is accessible to google anymore, because it's hidden in subreddits, discords, privated sites etc...
The 1/256 miss keeps haunting Pokemon games, in different forms. First it was discovered that accuracy check is a "lesser or equal", so if it hits maximum, any move that doesn't completely ignore the check will miss (which Stadium "fixed" by making it do that check again if it rolls max). Then it was discovered that the secondary effect check suffers from the same problem in G2, where things like DynamicPunch inflict status 99.6% of the time (and Werster has seen Zap Cannon not paralyze in Stadium 2, so that's there too). And now, this fucking Ability related thing transferring the secondary effect, though this time it's a 1/100. It's like it does not want to leave.
@@bioico8458 Instant Vietnam flashbacks going into denial "Surely they can't be that stupid. No way it's going to be the same glitch as Gen1, right ? RIGHT ?!"
To be fair, it's not about being stupid. It's more comparable to writing a famous essay then getting mocked 20 years laterfor using a comma instead of a semicolon on paragraph 14, line 7.
In Pokemon Diamond and Pearl, Hypnosis had a 70% accuracy, and was changed back to 60% Platinum onwards. In link battles if a DP copy battled a Platinum one, it would "pull" the code from Platinum and make Hypnosis hit its regular 60%.
I assume Platinum, HG, and SS don't allow Diamond or Pearl to host netgames (NETwork, so both online and LAN) and then the host does all accuracy checks in Gen IV.
It's really interessting how this flipped in Gen 3. In Gen 1 and 2, the later game has the responsibility of preventing desyncs.(And because Gamefreak didn't want to do anything fancy, they simply blanket-coded these games to play by the unfixed rules in link battles, even if only fixed games are connected)
@yoshiwoollyworld My understanding is, that doesn't really matter. Regardless of who the "leader" is, the games together will choose a "host", and that "host" will be the one that runs all of the battle calculations. The results are then passed to the other parties. In instances where there is an initial game and an expansion game playing together(e.g. R/S and E, or D/P and Pt), the expansion game will have priority, and will always be chosen as the "host". Interestingly, this architecture was chosen specifically to avoid the problem of desyncs from Gen 1 and 2. Set up like this, only one set of calculations is run, and everyone else is told what that result is. There's no chance of desyncs to happen as they did before. In fact, if it weren't for the priority thing, that it's possible the glitch COULD happen in Emerald, but only if a non-fixed game was chosen as "host". And it wouldn't cause a de-sync, since everyone would be following the (incorrect) calculations.
What in the playground rumour spaghetti code hell? I don't even blame the devs for not catching that (pre-Emerald). Abilities were completely new by that point, so such a peculiar and niche interaction was bound to slip through the cracks lol
At a guess, I'm assuming that XD uses Colosseum's code rather than Emerald's. Also, it really makes you wonder how much earlier this glitch would've been discovered if GameFAQs users weren't being GameFAQs users.
lol, I know, right? But even then, you have to use very specific moves that generally aren't that great against specific Pokemon. AND THEN, if the ability activates on the last hit, there's only a 1% chance to get that status condition off. Still, it does make you wonder, what if. Also, I suppose it makes sense that XD uses Colosseum's code as a base, just cuz Colosseum has glitches exclusive to it, so it prolly didn't use, like, Ruby's code or anything. Which, I guess that makes sense, too, now that I think about it - it might just be easier to code from scratch rather than convert the GBA game to play in 3D and have new stuff like Shadow Pokemon.
@@yukihoshikawaTo add to this, Colosseum and XD were made by another team, so it might be possible that whatever the process was to fix the glitch they might not have been informed since this is already an almost non issue which would be an even more non issue in a less open game like xD/Colosseum
So, if I'm understanding the technical details here properly... the root cause of this glitch is the exact inverse of the root cause of the famous "Gen 1 miss". (The Gen 1 miss happens because a check that should have been "less than or equal" is instead a "less than", whereas in this case, a check that should have been "less than" is instead "less than or equal".) Pretty wild that they would make that same type of mistake twice. Of course, in this case, the conditions in which this glitch would occur are so specific and unlikely that it's even easier to believe that it wouldn't get caught in testing.
Bingo; you got it! Yeah, honestly, I'm not surprised this glitch was seldom reported on in the past 20+ years. You have to be fighting with/against a Pokemon with Effect Spore (where the odds of this happening are even lower than the other abilities), Static, Poison Point (which, most Pokemon with this ability are immune to the poison status), or Flame Body (which, ALL of the Pokemon with this ability can't get burned), and use moves that... generally aren't the greatest, IMO. Like, Double Kick's probably the only good move of the bunch; the rest have 15 power per hit, more often than not will only hit 2 or 3 times, and can miss. Ew.
As someone who has done programming Checking variables against eachother get confusing fast, Programmers often don't put in the numbers, That's what game designers are for.
I always find it super fascinating whenever the older Pokémon games have new glitches, exploits, and programming quirks uncovered years later. Great video, I learned something new!
Regarding the status condition messages: Each status condition effect has one of two messages it can display: One for when it is inflicted by a move, and one for when it is inflicted by an Ability. The move text is the generic "[SUBJECT POKEMON] is paralyzed! It may be unable to move!" that you see in most of the cases. The Ability text is "[ACTIVE POKEMON]'s [ACTIVE POKEMON ABILITY] paralyzed [SUBJECT POKEMON]! It may be unable to move!" When a Pokémon's Static/etc. ability activates, the flag MOVE_EFFECT_AFFECTS_USER in the MOVE_EFFECT_BYTE is set to TRUE, so that that effect will apply to the user of the current move (instead of the target). When this flag is read, it swaps which Pokémon are considered the active and subject for the next effect resolution, then immediately resets the flag (making it FALSE). Notably, this does not apply to other changes to the MOVE_EFFECT_BYTE, like adding MOVE_EFFECT_PARALYSIS to it. So when the multi-hit move hits a second time, the flag MOVE_EFFECT_PARALYSIS is still present but MOVE_EFFECT_AFFECTS_USER is now FALSE, so it's now a move that can paralyze its target (which is why the Pokémon with Static/etc. ends up paralyzed). And since the active Pokémon is now the move's user and the target Pokémon is the move's target, when filling it the text template for an Ability inflicting a status condition, it is assumed that it is the move's user and its Ability that inflicted the status condition, which is why you get that odd-looking text. The tricky part is how the game determines which message of the two types (move text or Ability text) to display. This seems to depend on a flag that the disassembly calls HITMARKER_IGNORE_SAFEGUARD (although IMO this is a bit of a misnomer - in general, it's used to check whether an effect is coming from a status-inflicting Ability, including for Shield Dust too). I tried looking into when this flag is reset, but I wasn't able to work out why there would be a difference in which message gets displayed. (Potentially it's related to whether the status condition is inflicted during the resolution of a single hit vs the resolution of the entire move, but I wouldn't expect the Ability text to display after the number of hits like it does on Chickasaurus's video in that case.) I've used Static and Paralysis in all my descriptions here for simplicity, but the same applies to Poison Point, Flame Body, and Effect Spore (although Effect Spore is locked into which status condition it chooses the first time).
Oh wow, thank you so much for looking into that and sharing! I admit, this is going a little over my head right now, but I also just woke up, so I'll probably understand this better once I'm more awake, LMAO.
If im understanding this right this happenening for changing from true to false to true etc for each hit, so the same bug could happen if you hit 4 fury swipes/double slap?
@@6ustavocosta No, it's not flipping the bit each time. There are certain occasions it gets set to TRUE, and certain occasions it gets set to FALSE. You can get both messages with just Double Kick (compare Chickasaurus's video with the Twitch clip).
@@chainsawz5618 Based on my look into the decomp, I don't believe the Ability message is exclusive to FRLG. It should be possible for it to occur in other games. (Note that the move text can also appear in FRLG under seemingly identical circumstances, so there is very likely a random element involved.)
This is really weird. Double Kick was my most used move in Sapphire as a kid and I can't remember a single instance of this happening. My Blaziken would always use this against almost everything.
Keep in mind that just because you use Double Kick a lot doesn't mean the glitch will activate. You're only gonna fight a handful of Pokemon that have Static or Effect Spore, and in addition, if that Pokemon belongs to a trainer, that Pokemon is always gonna have whatever ability is coded in... "slot one", we can call it. This means it'll never be able to activate against a trainer's Voltorb or Electrode, for example, as all of them will have Soundproof. Of course, wild Voltorb can have Static, but that's the only time you'll find one with that ability. In addition, the glitch obviously can't activate if you KO a Pokemon with Double Kick, etc. So if your Blaziken was powerful enough to KO everything with one Double Kick, even if both kicks connected, the glitch wouldn't be able to activate.
Ty for explaining everything that happened. I was astonished by that glitch. I had more than 4k speedruns attempts and never saw a single shiny Mon, but that glitch happened... Well... Its what it's! Great video Yuki!
Oh hey, I'm glad you managed to find this! I had a feeling you might be curious as to what happened, haha. I'm glad you enjoyed the video! Best of luck in your future speedruns!
So what you're saying is; they made the same mistake as they did with gen 1 with accuracy checks, but in a more exetreme nonsencial way. True Gamefreak coding.
Loved this video, the glitch itself was really fun to learn about and the extensive testing with other moves and games was great to see too, I adore weird lil quirks like this in these games
Thank you! Although it's worth noting I messed up a little - the glitch occurs in Colosseum, but not XD. I messed up my testing with the GameCube games, cuz my brain had a moment, lol.
You don't actually need to check for desyncs using this glitch, if it is possible to cause desyncs then every status move in the game has a 1% chance to cause a desync since the bugged effect chance check means that every status inflicting move in Ruby & Sapphire has a 1% higher than expected chance to cause said status. That seems like it would be a very, very high chance over the course of a battle and would happen all the time, so I would pretty strongly suspect that it isn't actually a problem.
Not 100% sure but I don't think that's necessarily the case. Since they used integers, "less than or equal to 29" would be the same as "less than 30". Just put in the chance minus one. So as long as they would have kept that in mind, it should be the same. I would even wager they did do this correctly in the other cases. It's hard to believe that all the moves with secondary effects have a 1% higher chance of activating than they are supposed to in these games, without it being widely known by now. The person might have even wanted to insert the correct number, which would be -1 in this case, but maybe a negative number for this variable messed up some other calculations. They certainly would have thought it wouldn't matter, because even if the secondary effect of those moves activates, it would do nothing.
This doesn't necessarily imply that the games would desync on a status move. It could well be that the battle engine calculated probabilities on each game, then sends its success or failure over to the other game, meaning a Hypnosis would hit 61% of the time from the team on FR but only 60% from the Emerald team. No single battle would desync but if you analyzed a large number of link battles you would see more Hypnosis hits from FR. Regardless it does end up that the games both likely run off of the Emerald battle engine as we saw from the PP data being overriden. The other possibility I guess is that the FR game, when linking, noticed a discrepancy between the games and reverted to the correct PP, assuming that the PP hack was not completely implemented and some ROM data remained to check against, but then one would imagine that would happen in the single player game as well. So most likely the link battle is in fact reading from the Emerald battle engine.
@@TheShinyTresasLWIt must be the case that FR has an additional chance to activate a status move. Clearly from the 0 case we see a 1% activation; likewise Hypnosis has 61 rolls in FR that set it off. So either they instead added one to the accuracy numbers in Emerald and left the strict < or they changed to "less than or equal to". Over the integers these are equivalent inequalities ( x
This same thing mustve happened to me as well, as gen 3 were the only games I had access to as a child. I distinctly remember thinking Double Kick could cause paralysis for several years, confused why it would never activate again. Really interesting stuff!
That's how poison point should work anyways. not just when the pokemon is attacked because the point is there whether the pokemon is being attacked or not. Like it makes more sense for the point to be used offensively as well as defensively.
Not sure about your C/XD findings: isn't the glitch an issue with handling 0% chances, which was fixed in Emerald? If so, doesn't setting the chance to 100% bypass the glitch condition? It'd be like fixing the shore tiles on Cinnabar in gen1 and complaining that the old man glitch is still active if you force an encounter without clearing wild data. Or maybe I'm misunderstanding... Anyway, good video! I actually found your channel from your comment on Evie's video!
Hey there, thanks for pointing this out! I had a sinking feeling that I was forgetting something, or I messed something up, and now I know why, LMAO. I went ahead and did 400 trials in XD with the correct specifications (specifically, I used Twineedle, but changed its secondary effect chance to 0), and this glitch never occurred there. I did the same thing in Colosseum, and the glitch still happened, meaning the glitch occurs in Colosseum, but not XD. My apologies for the oversight and unintentional spread of misinformation; I'm glad you still enjoyed the video regardless!
Well, your creativity and dedication to glitch hunting has me beat! I'm definitely not convinced that this glitch would occur during a link battle between RSFRLG and Emerald. Although that might depend on the scope as to how much Emerald actually governs in a link battle. If it determines ability effects as well, then we'd have our answer.
Sorry, didn't mean to paraphrase what you said in the video. I have a nasty habit of going in circles when speculating aloud! In all seriousness, I'm almost half-tempted to give this glitch a look if only to satisfy my own curiosities.
@@chaoticbravealisdair2925 If you do, definitely share your results! If my math is right, any given multi hit move that makes contact has a 1/300 chance to activate this glitch with Static and Poison Point (and Flame Body, although that's only possible with hacking or Skill Swap/Role Play). Effect Spore might actually be 1/1000, cuz Bulbapedia says it has a 10% chance to activate, rather than the 30% for Static and its clones. And no worries, I was just bringing that up just in case my wording in the video was off.
I believe that the host game purely decides how all battle mechanics and calculations play out as observed in this video with the Emerald host. I remember this coming up in a TPP post from 8 years ago about having touhoumon fight moemon where the games had completely different moves and type charts.
the fact that the number checks for equal to or lesser than reminds me of the gen one miss glitch. you'd think they'd have learned their lesson form that
Super interesting glitch! As for incorrect abilty text, I've seen this sort of bug all the time when making rom hacks It boils down too there being variables for the most recently activated ability and battler; so it's likey a timing issue based around to opposing mon activating/checking some behaviour You'd have to obv debug the exact condition to find out what is activating it
Oh yeah, you made the Emerald Roguelike hack, right? That was a neat hack! I imagine all sorts of weird things must crop up, especially if you're making a decomp hack.
Young me definately did this and had no clue it wasn't a feature. I think on a Spore Shroomish. I'm sure most of us that chose Torchic and spammed Double Kick saw this glitch and didn't even register it in our minds, as abilities were new we were more or less blindly groping around on their effects.
The part where it mixes up what ability us supposed to be doing what kinda reminds me of the Acid Rain glitch, and how that can have some odd messages concerning abilities.
Thank you very much! I actually did mess up a little bit - the glitch can't activate in XD - but everything else is correct. It was a ton of fun learning about this glitch and testing it out!
I never thought it would happen in Colosseum, even if it was fixed for XD, this is amazing lol For the name of the ability being displayed thing, I already talked about this on the discord but basically my theory is that if the ability triggers multiple times in different hits, it will only display the name of the ability the first time and all the other times will just say you were paralyzed/burned/poisoned This is normally impossible to notice because if you already have a status the game won’t display text if the ability triggers again. Maybe with status cancellation berries this could be tested? Like you get paralyzed, the berry activates and you get paralyzed again? I’m not sure if the berry would wait for the end of the move to activate but I have a feeling that it unfortunately would.
Update apparently the berry does activate after the hit that statused you, and i was able to get statused in one move by using this. However it said the name of the opponent's ability both times, so that's not what causes it. No idea why it happens then.
Great to see Chikasauris getting her due recognition for her numerous contributions to glitch documentation in the franchise. Well done explaining this glitch and compiling the research! It thrills me to no end seeing new glitches get rediscovered and deep dived in the modern age
20:00 Is that a difference caused by Ruby/Sapphire and FireRed/LeafGreen being different games? I never heard you specify whether you'd tested this in both pairs of games or not, but the pictures/clips you showed of the 'text glitch' all used Gen 1 Pokemon, and I don't _THINK_ I heard you say that you'd tested FireRed/LeafGreen, only Ruby/Sapphire...
That might be part of it, but I don't think it's *all* of it. If you look at the speedrunner's clip, which is also FR/LG, that weird text doesn't display there.
@@yukihoshikawa ...hmm. Maybe it's something to do with the specific battle being replaced, like 'rival 1 battle' tutorial code interacting with ability text pop-ups... _no,_ that doesn't seem very likely. Maybe... something to do with using the ability's number/numerical value as junk data? If the 'text bug' is replicable in those specific circumstances, I suppose the only way to test it would be to check _literally every ability,_ maybe doing a few separate tests first to confirm that the specific battle it's done in doesn't cause it, but that would be a *LOT* of work, so I totally understand why you don't want to do it. There are probably romhackers who could more easily identify the source code that causes it, anyway: if it matters, the best course of action is probably just to spread the knowledge around for a few weeks/months, and see if anyone comes up with a 'eureka' moment that saves a lot of work.
That's true, although that might just be because of the limited amount of footage regarding this glitch. Plus, it doesn't happen 100% of the time in FR/LG, so there's gotta be some other aspect to this.
Hey Yuki! Thanks for investigating this further! I’m like 99% sure the weird text is displayed when the opponent is the one using the multi-hit move rather than the player. In hindsight, I'm not really surprised that it doesn't cause a desync - because if what I'm thinking is the case, it would probably have a 1% chance to desync with any move at all, so we would know about it by now lol. What I'm wondering now is if the chance of *all* secondary effects triggering is 1% higher than intended in R/S/FR/LG/C? It probably would be, right?
I would assume so, yeah. Although, you might wanna remove XD from that list - I made an error when testing this stuff out, and this glitch does NOT occur in XD.
Or the third - there’s kind of one in gen 2 as well! A move with a 100% chance to apply an effect in gen 2 has a 1/256 chance for it not to work (think mud-slap)
Unrelated but I had to double take after seeing your name in a random video I clicked on as a recommendation, this is Kaze from the old redpill OOB server, that's it but hi lmao
it's caused by how FR/LG handle it differently, one instance happened when the opponent used the move and the other happened when the player used the move so it's not because of the opponent using the multi-hit move
Hey, your video is amazing, really love how indepth it is, just wanted to tell that..the interaction reminder is nice and all, but it really takes you out of it? I'm enjoying listening to your explanation whilst I am doing something else and having the loud ding of it can be distracting and made me lose focus on what you were saying at the time. It's free to still have it, but I'd recommend having it be muted so it's only a visual reminder and allows people who are only activly listening to not be distracted. Outside of that : the video is amazing and I was suprised you weren't a big youtuber, instantly subscribed to you and I hope to see more of your content !
That's fair, honestly. I honestly don't even include it most of the time; whether or not it's in a video is just a "mood of the day" type of thing, you know? Perhaps I'll experiment with it being muted the next time I include it (if I don't forget, lol; I can be kinda forgetful sometimes) Still, I'm glad to hear you enjoyed the video! Thanks for taking the time to comment, and thanks for subscribing, too; I truly appreciate it!
20:06 did the extra status text (e.g. “Poison Point did a Paralysis”), only appear in FR/LG? It seems like that’s the footage I’m seeing, whereas you tested in Ruby/Sapphire? Maybe something different between the games
Imagine being vashperado, facing years of skepticism from practically everyone, even having some claim you were lying for attention...only to be vindicated a decade and a half later. I can’t think of an “I told you so” moment with more buildup.
15:40 Was the "text" part not because both Pokemon had a contact ability? For instance, 16:30, if the Treeco had flame body, poison point, or static, would you then see the text?
Indeed - it probably happened because Pikachu's a popular Pokemon, and you can get it right at the start of the game. On top of that, a lot of trainers use Nidoran, which gets Double Kick, which just so happens to be one of the moves that triggers this glitch.
Gen 3 games use will use emerald's engine if emerald is one of the games involved in the battle, same with gen 4 and Pt/HG/SS, the biggest difference I'm aware of there is the accuracy of hypnosis going from 70% to 60%.
I recall once flinching with... Either Faint Attack or Crunch in the Battle Dome in Emerald. Think Infinite Accuracy/Stat Drop moves may also have this oddity and inherited the chance somehow, that secondary status has its own version of the glitch, or did I just get hit with a random bug (that Flygon I used kept having weird crap happen to her, so I wouldn't be surprised if my save on Emerald just had some weird fault in its code from messing with it prior)?
It at least looked like both of the examples you showed for the strange "Paralyzed by [Ability]" text were from FRLG, instead of Ruby or Sapphire. All of the testing that you mentioned doing in the video was on Ruby - have you done any testing with the glitch on FRLG? It could be another small difference between the game versions.
I haven't done any other testing in FR/LG, but not every example of this glitch happening in FR/LG had the glitchy ability text. That leads me to believe there's a little something more than just what game is being played, and that's the part that's bugging me.
It seems like they were trying to describe something about reality with the way they programmed static - "Pikachu was filled with static, so *when you made contact,* you became paralyzed."
I vaguely recall reading somewhere ages ago that link battles in pokemon games generally defer to the rules of the "newest" cart based on some internal version number, not just between the different flavours in a generation, but also reginal versioning and revisions are taken into account, at least through gen 3 and probably the DS games? Probably by the switch games i assume you just have to be "up to date" to connect to anyone in the first place
Huh, I thought electric pokemon couldn't get paralyzed. Edit: Possible I was getting it mixed up with Poison, I've only been playing the damn games for almost 30 years
Something thats confusing me, maybe you can explain, is WHY the move gains the ability’s effect. Like, why is it programmed that way? What purpose does that serve in regular, non glitchy gameplay?
Like, I’m looking at the code in your video and have it paused to look at it. I just cannot fathom why they coded it to give the opponent’s move the ability’s effect. Is this required to make the effect happen at all or something? Like what purpose does it serve to code that at all? The other mistakes that lead to the glitch make logical sense. Like not ordering the effects properly to account for something that SHOULD be 0% odds. Or the 0-99 thing, someone just not considering 0=0 in their math. But deliberately coding into the abilities a line that gives the enemy move your ability’s effect… that makes no sense to me. Why do that at all?
@@vincenthall5908 Unfortunately, I'm not sure myself. If I had to fathom a guess (and I'm going to emphasize "guess" - I genuinely have no idea), it must be because these games are programmed in a way where that's necessary to apply an effect like that mid battle. And to be fair, if the rest of the code was properly written, it'd work! It'd be a really janky solution, but it'd work. Maybe Game Freak was just more concerned with getting the job done, rather than getting the job done well, so to speak. Again, though, this is just a guess on my part; I don't know the rest of the code well enough to make any definitive statement.
I bumped into this in FireRed earlier and someone linked me here. A Poliwag used Double Slap on my Parasect, activated Effect Spore on the first hit, and fell asleep. Then Parasect randomly fell asleep. It certainly caught me by surprise.
from what you have shown both glitched ability activations are in FRLG while in ruby/sapphire/gamecube they are just getting the effect. maybe it's how FRLG handles ability activations ?
@@yukihoshikawa the only other things I can think of is whether it's a trainer or wild battle, the speed of the pokemon and the turn of the multi hit move (there is a chance difference, so maybe the text is different too ?).
@@dany_fg someone else left a comment with a pretty in-depth explanation of their findings on the matter not too long ago; might be worth a read if you're interested.
Something that makes me wonder if you could get the desync to work is that link battles in gen 3 have a host game and a tethered game, and idk how it's decided but i was under the impression that it either had to do with which gameboy had which end of the link cable or it was maybe random. Maybe you got the 50/50 coin flip that emerald was the host game?
So to generalize that code error, if the status chance is any number less than 100, the actual chance of it being inflicted is 1% higher. 0% becomes 1% and 99% becomes 100%.
So, I haven't looked into the code so I'm probably missing stuff, but what I noticed about the times the text popped up is that the pokemon triggering the glitch had an ability that could also trigger it. What might be going on is that the new 'extra' condition that double kick gives retains some attribute of, "Inflicted by opponent's ability", so when the Double-kick user has Poison Point, that allows it to match up to this property, so it sees that say Nidoking has an ability that adds a secondary effect, and that say Raichu was hit by a status inflicted by a secondary effect generated by an ability, but if the user pokemon lacks one of these abilities it skips some kind of check or falsely assumes that it must just be a natural part of Double-kick, thus no text. Also, For the desync with emerald something I noticed is that the Emerald pokemon game was the host. This actually changes a lot of things about the battle as back then basically the host is registered as the 'player' so is kinda given a lot of advantages that the player subtly has over NPCs that's not much talked about (such as if you throw two pokemon with weather setting abilities on the field at the same time, the order of abilities is not determined by the pokemon's speed but rather who is the host and who isn't). If you ever want to try the desync again you should try the other game hosting the battle and see if this causes both games to play by the rules of the new host (thus this glitch is possible but doesn't cause a desync) or if Emerald still runs it's own base code even though the host has different code (thus the glitch only happens on one end causing a desync) Edit: Also it was very neat to see that not only can effect spore sleep activate the glitch, but it seems like out of all the possible status effects if you were guaranteed to get a sleep activation during a multi-hit attack, it's the most likely to hit both pokemon, since the example you showed only did '1-hit', meaning that since sleep ends the multi-hit move a sleep activation will *always* be on the final hit allowing it to fulfill two of the conditions (inflict a status effect and be the final hit of a multi-hit attack) in one go.
In the image with Charmander and Squirtle, the Squirtle was hacked to have Static, but the Charmander still had Blaze. As for the link battle stuff, assuming the host is player one, Ruby was actually the host - the game windows were just (unintentionally) set up in a deceiving way.
@@yukihoshikawa Oh, interesting that Emerald was the one using the rules then! Well then that probably means Emerald rules are always used when it's one of the games.
For the question: do you think FR/LG could have a different display message from Ruby & Sapphire? I noticed how the first screenshot was between Charmander and Squirtle in the lab, clearly FR/LG, while there were a bunch of other tests done in R/S, the two outliers both are from FR/LG copies, with Pikachu and Nidorina as well. Just an observation.
@@yukihoshikawa It could also be active abilties? if I remember correctly the one with the starters was when they were both at low HP, and maybe the opponent's ability (Torrent I think it was) had already triggered and was actively doing bonus damage. Poison Point is like always "active" in the sense that if a contact move is used, it's always making checks? The ability that the opponent has and what state it is in could be a factor basically, but it depends on the code.
I feel like I’m dumb, but I can’t figure out why it applies the effect to the enemy Pokémon (the ability owner) instead of attempting to apply it to the Pokémon using the attack (the double kick user) for a second time. I’ve watched the video again and can’t seem to wrap my head around that and I certainly don’t know enough about programming to parse that myself.
It's definitely a complicated subject; don't feel bad! I tried to explain things well enough in the video to where you wouldn't need to understand the code on screen in order to understand why this glitch happens, but lemme try explaining things again; hopefully that'll help! So Static, Poison Point, Flame Body, and Effect Spore (I'll just be saying Static from now on for simplicity's sake) inflict a status condition by having YOUR MOVE give you a status condition. This change that Static makes to your move is removed when another move is used. So, normally, the change Static makes doesn't really matter, especially since the game will normally activate your move's secondary effect BEFORE the opponent can activate Static and make that change (remember that example with Thunderpunch and Flame Body in the video?). However, multi hit moves like Double Kick and Fury Attack activate their secondary effect AFTER the opponent activates their ability. To use the Thunderpunch and Flame Body example, it'd be like if Flame Body activated, and THEN Thunderpunch paralyzed. Of course, normally Double Kick and Fury Attack don't have a secondary effect, but if Static activated, then those moves DO have a secondary effect. But only for the amount of time between when Static activates, and when another move is used. Why does this glitch only happen on the last hit of a multi hit move? Because that's the only time the game can activate the secondary effect of a multi hit move. Anyone can see this in action with Twineedle, a multi hit move that Beedrill can learn; it can only inflict Poison on the second and final hit. In addition, each hit of a multi hit move removes the change made by Static, if it activated on a previous hit. The final part of this is that these moves that trigger this glitch normally have a 0% chance to activate a secondary effect, because under normal circumstances, they never have a secondary effect. However, Game Freak messed up, and secondary effects have an extra 1% chance to happen, even for moves that should have a 0% chance to activate a secondary effect. It's a lot, but hopefully this helps!
I just can't seem to wrap my brain around the explanation at 07:03 about how an ability such as Static functions. I mean, obviously it's correct because, y'know, the whole video demonstrates it, but when I try to walk through it in my head, it just doesn't make sense to me. So from what I can understand, let's say we're looking at the original Nidoking vs Raichu fight. Nidoking uses Double Kick, and it triggers Static. Instead of the simple method of, "Static activated, so paralyze the other pokemon", it adds a secondary effect to the move Nidoking used that makes it apply paralysis to the user of the move. So Nidoking is technically paralyzing *itself* with its attack. Normally this effect is then removed before the next attack. But since Double Kick is a multi-hit move, which for some reason checks for effects AFTER the ability activates, meaning the game will then see this secondary effect on Double Kick and apply it (with a 1% chance due to the same oversight that causes the Gen 1 miss). My confusion is, if the secondary effect is to apply status to the *attacker*, why does this end up affecting the *target*? Furthermore, aren't the "ability" and "secondary effect" the same thing? Since the secondary effect is just the method the ability uses to apply the status, shouldn't this just result in the move just trying to paralyze you twice, which effectively does nothing? The only explanation I can think of is that I'm misunderstanding how Static applies the secondary effect and how the secondary effect functions. My initial assumption is that Static gives the move a secondary effect that just paralyzes the user. But is it actually that Static first gives the move the secondary effect of paralysis (the exact same effect as any other paralyzing move), and *then* causes that effect to target the user instead of its target? So then due to the fact that the secondary effect check happens after the ability for multi-hit moves as opposed to before, the game rolls to see if Static activates (30% chance), and when it does, gives Double Kick the paralysis secondary effect, then causes this effect to target Nidoking instead of Raichu, and THEN sees Double Kick has the paralysis secondary effect, checks to see if it hits (1% chance due to
Honestly, it sounds like you understand everything! As for this part, though: "My confusion is, if the secondary effect is to apply status to the *attacker*, why does this end up affecting the *target*?" I'm honestly not sure, unfortunately. I assume there's some bit of code somewhere that makes it so that the paralysis added by Static, etc., only targets the user for that one specific instance, and then that "targeting the user of the move" bit gets erased even before the added paralysis bit does. But I'm not familiar with the rest of the code for the game, so... it's probably spaghetti code LMAO.
@@yukihoshikawa Ah, okay! I'm assuming my first assumption of it being an effect different to standard paralysis is incorrect. The second assumption I made was correct. Everything else makes sense. Great video!
My guess as to why the glitchy messages show up is that the game recognizes the status trigger is an ability, but since the one afflicting it is the pokemon with a multi-hit move the game just assumes that pokemon has a status afflicting ability and as such, displays it. As to why it didnt show up during your testing, i think it might be because it's a frlg thing. both of the screenshots where it happens appear to be kanto games, so it's possible frlg are coded slightly differently, and we can't really test if emerald has this problem without removing the [if x > 0] fix. it is probably possible if we make this change tho.
when i was young i had a cd rom with the first 2 gen games on it, they were a glitchy mess for some reason, even more than the original games, in red i evolved a nidoran to nidorino with a moon stone and in silver the guy that trades you an onix for a bellsprout couldn't be spoken to because he was violently spinning in place
Hey everyone! I, embarrassingly, made an error in this video (thanks to ndm13 for leaving a comment informing me of my mistake).
This glitch does NOT occur in XD, but DOES occur in Colosseum. The mistake I made was setting Twineedle's secondary effect chance to 100, which I did to test out the timing of secondary effects with multi hit moves, but then I never set the effect chance to 0 to test out if the glitch occurs for realsies.
My apologies for this oversight on my part. Hopefully you still enjoy the video regardless.
Absolutely unforgivable. I just disliked, sued, and reported you in that order
I was just about to comment that lol Like, wasn't the fix in Emerald just making it so there's no more 1% chance for moves with no effects? Then the Twineedle with 100% chance doesn't work for testing. I'm guessing Colosseum doesn't have that 1% chance fix, but XD probably does since it's after Emerald.
@@mari_zz Yeah, lol. Very unfortunate mistake on my end that I didn't catch before uploading; I'll definitely have to be more careful with future videos.
Since RUclips removed annotations, which would've been the perfect solution for this error, hopefully enough people notice the pinned comment, as that's about the only good option for correcting myself at this point.
@@MegaMetal96 the sin of all sins
Wouldn't this mean that Twin needle has version of this glitch in in Emerald & XD (and all other versions) where it can paralyze/burn/sleep if attacking a pokemon with static/flamebody/effect spore ? Is that version of the glitch less obscure and only the Double Kick, Double Slap, etc. version was the one that needed research?
As soon as you mentioned the random numbers of 0-99, I immediately thought. "Oh god, this is going to be another gen 1 accuracy glitch."
It's actually the inverse of that, technically! But yeah, it's exactly the same idea; they got confused between "
Fair enough, my thought was just. Oh somebody used the wrong symbol.@@yukihoshikawa
@@yukihoshikawait’s essentially the same, in the sense that some event gets an extra 1% chance of happening, regardless of the intended accuracy. (For instance, Poison Sting actually has 31% chance of poisoning as a result of this bug… Not just 0% moves)
The only difference is that the extra chance gets added to success rather than failure
they shoulda used random numbers from 1 to 100 instead of 0 to 99
@@rockman7perezthey should have just used < not < or = to.
This is like those playground rumors of Splash having a miniscule chance to do something cool, except it's actually real.
Yeah, I suppose so, lol!
the only reason we know of that first person that found that glich is because he wasnt using an unsearcheable private community like discord. Anything put into discord if not saved dies with it. its very different from using a forum where even if the forum dies web scrapers and many different backup projects keep the information alive. thanks for this video and for saving a piece of information. and if you read thing comment, plz remember to not use discord as a wiki or forum, discord is where communities go to die
I thought about that and yeah, it does feel like it's the case
It feels like the internet in general, and especially google got MUCH worse over the years at linking you to what you're searching
It reeally looks like you can't find the answers you want to a LOT of things outside of going to specific sites like reddit, because nothing is accessible to google anymore, because it's hidden in subreddits, discords, privated sites etc...
To this day, nearly 20 yrs later, I swore that double kick once hit three times when I was fighting Roxanne in Pokemon Emerald.
The 1/256 miss keeps haunting Pokemon games, in different forms.
First it was discovered that accuracy check is a "lesser or equal", so if it hits maximum, any move that doesn't completely ignore the check will miss (which Stadium "fixed" by making it do that check again if it rolls max).
Then it was discovered that the secondary effect check suffers from the same problem in G2, where things like DynamicPunch inflict status 99.6% of the time (and Werster has seen Zap Cannon not paralyze in Stadium 2, so that's there too).
And now, this fucking Ability related thing transferring the secondary effect, though this time it's a 1/100.
It's like it does not want to leave.
Oh my god, you're right.
When are we getting a 1/256 or 1/100 glitch in gen 4, LMAO
As soon as they said "0 to 99" I was just like, "oh no"
Off by one errors are one of the most common types of errors in computing. In the 1/256 context it was using < when the code needed
@@bioico8458 Instant Vietnam flashbacks going into denial "Surely they can't be that stupid. No way it's going to be the same glitch as Gen1, right ? RIGHT ?!"
To be fair, it's not about being stupid. It's more comparable to writing a famous essay then getting mocked 20 years laterfor using a comma instead of a semicolon on paragraph 14, line 7.
In Pokemon Diamond and Pearl, Hypnosis had a 70% accuracy, and was changed back to 60% Platinum onwards. In link battles if a DP copy battled a Platinum one, it would "pull" the code from Platinum and make Hypnosis hit its regular 60%.
I assume Platinum, HG, and SS don't allow Diamond or Pearl to host netgames (NETwork, so both online and LAN) and then the host does all accuracy checks in Gen IV.
It's really interessting how this flipped in Gen 3. In Gen 1 and 2, the later game has the responsibility of preventing desyncs.(And because Gamefreak didn't want to do anything fancy, they simply blanket-coded these games to play by the unfixed rules in link battles, even if only fixed games are connected)
What if it’s a WiFi battle, please do tell 🙏
@yoshiwoollyworld My understanding is, that doesn't really matter. Regardless of who the "leader" is, the games together will choose a "host", and that "host" will be the one that runs all of the battle calculations. The results are then passed to the other parties.
In instances where there is an initial game and an expansion game playing together(e.g. R/S and E, or D/P and Pt), the expansion game will have priority, and will always be chosen as the "host".
Interestingly, this architecture was chosen specifically to avoid the problem of desyncs from Gen 1 and 2. Set up like this, only one set of calculations is run, and everyone else is told what that result is. There's no chance of desyncs to happen as they did before.
In fact, if it weren't for the priority thing, that it's possible the glitch COULD happen in Emerald, but only if a non-fixed game was chosen as "host". And it wouldn't cause a de-sync, since everyone would be following the (incorrect) calculations.
What in the playground rumour spaghetti code hell?
I don't even blame the devs for not catching that (pre-Emerald). Abilities were completely new by that point, so such a peculiar and niche interaction was bound to slip through the cracks lol
At a guess, I'm assuming that XD uses Colosseum's code rather than Emerald's. Also, it really makes you wonder how much earlier this glitch would've been discovered if GameFAQs users weren't being GameFAQs users.
lol, I know, right? But even then, you have to use very specific moves that generally aren't that great against specific Pokemon. AND THEN, if the ability activates on the last hit, there's only a 1% chance to get that status condition off.
Still, it does make you wonder, what if.
Also, I suppose it makes sense that XD uses Colosseum's code as a base, just cuz Colosseum has glitches exclusive to it, so it prolly didn't use, like, Ruby's code or anything. Which, I guess that makes sense, too, now that I think about it - it might just be easier to code from scratch rather than convert the GBA game to play in 3D and have new stuff like Shadow Pokemon.
@@yukihoshikawaTo add to this, Colosseum and XD were made by another team, so it might be possible that whatever the process was to fix the glitch they might not have been informed since this is already an almost non issue which would be an even more non issue in a less open game like xD/Colosseum
So, if I'm understanding the technical details here properly... the root cause of this glitch is the exact inverse of the root cause of the famous "Gen 1 miss". (The Gen 1 miss happens because a check that should have been "less than or equal" is instead a "less than", whereas in this case, a check that should have been "less than" is instead "less than or equal".) Pretty wild that they would make that same type of mistake twice. Of course, in this case, the conditions in which this glitch would occur are so specific and unlikely that it's even easier to believe that it wouldn't get caught in testing.
Bingo; you got it!
Yeah, honestly, I'm not surprised this glitch was seldom reported on in the past 20+ years. You have to be fighting with/against a Pokemon with Effect Spore (where the odds of this happening are even lower than the other abilities), Static, Poison Point (which, most Pokemon with this ability are immune to the poison status), or Flame Body (which, ALL of the Pokemon with this ability can't get burned), and use moves that... generally aren't the greatest, IMO. Like, Double Kick's probably the only good move of the bunch; the rest have 15 power per hit, more often than not will only hit 2 or 3 times, and can miss. Ew.
As someone who has done programming
Checking variables against eachother get confusing fast,
Programmers often don't put in the numbers,
That's what game designers are for.
You have no clue how shocked I was when it was revealed this issue is caused by the same kind of operator coding error that gen 1 missing has.
I'm gonna be 100% honest, I didn't even make that connection until people started commenting about it, LMAO.
that's cause it's a super common programming mistake. It crops up ALL the time.
I love that new glitches are still being found in these games. They truly are coded.
This series truly is the most coded ever
the programmed of all time
lmao
One of the most games of all time
these games truly were coded by a team of programmers
I always find it super fascinating whenever the older Pokémon games have new glitches, exploits, and programming quirks uncovered years later. Great video, I learned something new!
I, too, enjoy these kinds of findings - it's always really neat learning about these kinds of things!
Glad I could teach you something new!
Regarding the status condition messages: Each status condition effect has one of two messages it can display: One for when it is inflicted by a move, and one for when it is inflicted by an Ability.
The move text is the generic "[SUBJECT POKEMON] is paralyzed! It may be unable to move!" that you see in most of the cases.
The Ability text is "[ACTIVE POKEMON]'s [ACTIVE POKEMON ABILITY] paralyzed [SUBJECT POKEMON]! It may be unable to move!"
When a Pokémon's Static/etc. ability activates, the flag MOVE_EFFECT_AFFECTS_USER in the MOVE_EFFECT_BYTE is set to TRUE, so that that effect will apply to the user of the current move (instead of the target). When this flag is read, it swaps which Pokémon are considered the active and subject for the next effect resolution, then immediately resets the flag (making it FALSE). Notably, this does not apply to other changes to the MOVE_EFFECT_BYTE, like adding MOVE_EFFECT_PARALYSIS to it. So when the multi-hit move hits a second time, the flag MOVE_EFFECT_PARALYSIS is still present but MOVE_EFFECT_AFFECTS_USER is now FALSE, so it's now a move that can paralyze its target (which is why the Pokémon with Static/etc. ends up paralyzed). And since the active Pokémon is now the move's user and the target Pokémon is the move's target, when filling it the text template for an Ability inflicting a status condition, it is assumed that it is the move's user and its Ability that inflicted the status condition, which is why you get that odd-looking text.
The tricky part is how the game determines which message of the two types (move text or Ability text) to display. This seems to depend on a flag that the disassembly calls HITMARKER_IGNORE_SAFEGUARD (although IMO this is a bit of a misnomer - in general, it's used to check whether an effect is coming from a status-inflicting Ability, including for Shield Dust too). I tried looking into when this flag is reset, but I wasn't able to work out why there would be a difference in which message gets displayed. (Potentially it's related to whether the status condition is inflicted during the resolution of a single hit vs the resolution of the entire move, but I wouldn't expect the Ability text to display after the number of hits like it does on Chickasaurus's video in that case.)
I've used Static and Paralysis in all my descriptions here for simplicity, but the same applies to Poison Point, Flame Body, and Effect Spore (although Effect Spore is locked into which status condition it chooses the first time).
Oh wow, thank you so much for looking into that and sharing!
I admit, this is going a little over my head right now, but I also just woke up, so I'll probably understand this better once I'm more awake, LMAO.
If im understanding this right this happenening for changing from true to false to true etc for each hit, so the same bug could happen if you hit 4 fury swipes/double slap?
@@6ustavocosta No, it's not flipping the bit each time. There are certain occasions it gets set to TRUE, and certain occasions it gets set to FALSE. You can get both messages with just Double Kick (compare Chickasaurus's video with the Twitch clip).
@@ShapelessMonstrosity this is almost true, but you missed the part where both instances of it happening were in FR/LG
@@chainsawz5618 Based on my look into the decomp, I don't believe the Ability message is exclusive to FRLG. It should be possible for it to occur in other games. (Note that the move text can also appear in FRLG under seemingly identical circumstances, so there is very likely a random element involved.)
This is really weird. Double Kick was my most used move in Sapphire as a kid and I can't remember a single instance of this happening. My Blaziken would always use this against almost everything.
Keep in mind that just because you use Double Kick a lot doesn't mean the glitch will activate. You're only gonna fight a handful of Pokemon that have Static or Effect Spore, and in addition, if that Pokemon belongs to a trainer, that Pokemon is always gonna have whatever ability is coded in... "slot one", we can call it. This means it'll never be able to activate against a trainer's Voltorb or Electrode, for example, as all of them will have Soundproof. Of course, wild Voltorb can have Static, but that's the only time you'll find one with that ability.
In addition, the glitch obviously can't activate if you KO a Pokemon with Double Kick, etc. So if your Blaziken was powerful enough to KO everything with one Double Kick, even if both kicks connected, the glitch wouldn't be able to activate.
I always just thought it was a glitch when using double kick and shrugged it off….
Incredible that the Pokémon company managed to make the 1/256 glitch a second time.
Ty for explaining everything that happened. I was astonished by that glitch. I had more than 4k speedruns attempts and never saw a single shiny Mon, but that glitch happened...
Well... Its what it's!
Great video Yuki!
Oh hey, I'm glad you managed to find this! I had a feeling you might be curious as to what happened, haha.
I'm glad you enjoyed the video! Best of luck in your future speedruns!
So what you're saying is; they made the same mistake as they did with gen 1 with accuracy checks, but in a more exetreme nonsencial way. True Gamefreak coding.
Loved this video, the glitch itself was really fun to learn about and the extensive testing with other moves and games was great to see too, I adore weird lil quirks like this in these games
We should try this irl
Thank you! Although it's worth noting I messed up a little - the glitch occurs in Colosseum, but not XD. I messed up my testing with the GameCube games, cuz my brain had a moment, lol.
You don't actually need to check for desyncs using this glitch, if it is possible to cause desyncs then every status move in the game has a 1% chance to cause a desync since the bugged effect chance check means that every status inflicting move in Ruby & Sapphire has a 1% higher than expected chance to cause said status. That seems like it would be a very, very high chance over the course of a battle and would happen all the time, so I would pretty strongly suspect that it isn't actually a problem.
You make a good point, LMAO.
Not 100% sure but I don't think that's necessarily the case. Since they used integers, "less than or equal to 29" would be the same as "less than 30". Just put in the chance minus one. So as long as they would have kept that in mind, it should be the same. I would even wager they did do this correctly in the other cases. It's hard to believe that all the moves with secondary effects have a 1% higher chance of activating than they are supposed to in these games, without it being widely known by now. The person might have even wanted to insert the correct number, which would be -1 in this case, but maybe a negative number for this variable messed up some other calculations. They certainly would have thought it wouldn't matter, because even if the secondary effect of those moves activates, it would do nothing.
This doesn't necessarily imply that the games would desync on a status move. It could well be that the battle engine calculated probabilities on each game, then sends its success or failure over to the other game, meaning a Hypnosis would hit 61% of the time from the team on FR but only 60% from the Emerald team. No single battle would desync but if you analyzed a large number of link battles you would see more Hypnosis hits from FR. Regardless it does end up that the games both likely run off of the Emerald battle engine as we saw from the PP data being overriden. The other possibility I guess is that the FR game, when linking, noticed a discrepancy between the games and reverted to the correct PP, assuming that the PP hack was not completely implemented and some ROM data remained to check against, but then one would imagine that would happen in the single player game as well. So most likely the link battle is in fact reading from the Emerald battle engine.
@@TheShinyTresasLWIt must be the case that FR has an additional chance to activate a status move. Clearly from the 0 case we see a 1% activation; likewise Hypnosis has 61 rolls in FR that set it off. So either they instead added one to the accuracy numbers in Emerald and left the strict < or they changed to "less than or equal to". Over the integers these are equivalent inequalities ( x
The validation that poster from gamefaqs is feeling after it building up for 15 years must feel great
It'd be amazing if they saw this video, lol
This same thing mustve happened to me as well, as gen 3 were the only games I had access to as a child. I distinctly remember thinking Double Kick could cause paralysis for several years, confused why it would never activate again. Really interesting stuff!
That would explain it, LMAO!
That's how poison point should work anyways. not just when the pokemon is attacked because the point is there whether the pokemon is being attacked or not. Like it makes more sense for the point to be used offensively as well as defensively.
Honestly, that'd be really neat to see, cuz yeah, it makes sense!
I should stop being suprised by people finding new things in old pokemon games, but I know i won't any time soon.
LOL, for real. It's still neat to me whenever something's found in these games that you think we'd know everything about.
This was an interesting video, I appreciate how in-depth you went with testing, even getting the spinoff games.
Thanks! Just a slight note on that, though, I did make an error while testing in the GameCube games - the glitch only occurs in Colosseum, not XD.
Polite Hoppip here!
I remember scouring the ancient runes (GameFAQ page) trying to figure out this silly little glitch. Cool video!
Eyy, thanks; I'm glad you enjoyed the video! Thanks for your testing efforts, too!
I just love mental image of Mudkip having Arm Thrust as starting attack, with those tiny little legs to pull it off
Oh my god, that's an amazing visual! 😂
Not sure about your C/XD findings: isn't the glitch an issue with handling 0% chances, which was fixed in Emerald? If so, doesn't setting the chance to 100% bypass the glitch condition? It'd be like fixing the shore tiles on Cinnabar in gen1 and complaining that the old man glitch is still active if you force an encounter without clearing wild data. Or maybe I'm misunderstanding...
Anyway, good video! I actually found your channel from your comment on Evie's video!
Hey there, thanks for pointing this out! I had a sinking feeling that I was forgetting something, or I messed something up, and now I know why, LMAO.
I went ahead and did 400 trials in XD with the correct specifications (specifically, I used Twineedle, but changed its secondary effect chance to 0), and this glitch never occurred there.
I did the same thing in Colosseum, and the glitch still happened, meaning the glitch occurs in Colosseum, but not XD.
My apologies for the oversight and unintentional spread of misinformation; I'm glad you still enjoyed the video regardless!
Well, your creativity and dedication to glitch hunting has me beat!
I'm definitely not convinced that this glitch would occur during a link battle between RSFRLG and Emerald. Although that might depend on the scope as to how much Emerald actually governs in a link battle. If it determines ability effects as well, then we'd have our answer.
Yeah, I did heavily stress that it's just an assumption on my part. I'd honestly be glad to have my assumption proven wrong!
Sorry, didn't mean to paraphrase what you said in the video. I have a nasty habit of going in circles when speculating aloud!
In all seriousness, I'm almost half-tempted to give this glitch a look if only to satisfy my own curiosities.
@@chaoticbravealisdair2925 If you do, definitely share your results! If my math is right, any given multi hit move that makes contact has a 1/300 chance to activate this glitch with Static and Poison Point (and Flame Body, although that's only possible with hacking or Skill Swap/Role Play). Effect Spore might actually be 1/1000, cuz Bulbapedia says it has a 10% chance to activate, rather than the 30% for Static and its clones.
And no worries, I was just bringing that up just in case my wording in the video was off.
I believe that the host game purely decides how all battle mechanics and calculations play out as observed in this video with the Emerald host. I remember this coming up in a TPP post from 8 years ago about having touhoumon fight moemon where the games had completely different moves and type charts.
If by "host", you mean player 1, player 1 in this case is actually Ruby.
15:30 the 2 instances where glitched ability text pop up both happened in FR/LG, while all of your tests took place in ruby alone
True, but the altered ability text doesn't always happen in FR/LG (see the streamer's clip). So, there's something else at play.
the fact that the number checks for equal to or lesser than reminds me of the gen one miss glitch. you'd think they'd have learned their lesson form that
Old habits die hard, I guess, lol
Super interesting glitch!
As for incorrect abilty text, I've seen this sort of bug all the time when making rom hacks
It boils down too there being variables for the most recently activated ability and battler; so it's likey a timing issue based around to opposing mon activating/checking some behaviour
You'd have to obv debug the exact condition to find out what is activating it
Oh yeah, you made the Emerald Roguelike hack, right? That was a neat hack!
I imagine all sorts of weird things must crop up, especially if you're making a decomp hack.
@@yukihoshikawa I did indeed 🙂
You get to get to grips with the gen 3 pretty well working on a decomp hack ha ha
This is a cool video! I don’t watch many RUclipsrs who do glitch hunting, so I’ll be excited to see more of it!
Glad you enjoyed the video! Fair warning, I don't just do glitch hunting - I talk about all sorts of aspects with Pokemon.
Young me definately did this and had no clue it wasn't a feature. I think on a Spore Shroomish.
I'm sure most of us that chose Torchic and spammed Double Kick saw this glitch and didn't even register it in our minds, as abilities were new we were more or less blindly groping around on their effects.
The part where it mixes up what ability us supposed to be doing what kinda reminds me of the Acid Rain glitch, and how that can have some odd messages concerning abilities.
17:45 Ugh, fine, I'll rig up another bot
If you actually do that, I'll be curious to hear the results! Sorry about not reaching a definitive conclusion. 😔
i love that you found an old gamefaqs thread on this subject. i was all over those boards in the ruby/saphire days. i hate reddit and miss real forums
This video is fantastic, its a super interesting subject & you presented it very well & did your own research.
Thank you very much! I actually did mess up a little bit - the glitch can't activate in XD - but everything else is correct. It was a ton of fun learning about this glitch and testing it out!
I never thought it would happen in Colosseum, even if it was fixed for XD, this is amazing lol
For the name of the ability being displayed thing, I already talked about this on the discord but basically my theory is that if the ability triggers multiple times in different hits, it will only display the name of the ability the first time and all the other times will just say you were paralyzed/burned/poisoned
This is normally impossible to notice because if you already have a status the game won’t display text if the ability triggers again. Maybe with status cancellation berries this could be tested? Like you get paralyzed, the berry activates and you get paralyzed again? I’m not sure if the berry would wait for the end of the move to activate but I have a feeling that it unfortunately would.
Update apparently the berry does activate after the hit that statused you, and i was able to get statused in one move by using this. However it said the name of the opponent's ability both times, so that's not what causes it.
No idea why it happens then.
RIP; thanks for testing it out, at least!
Great video. I appreciate both your research and your hands-on experimentation.
Great to see Chikasauris getting her due recognition for her numerous contributions to glitch documentation in the franchise. Well done explaining this glitch and compiling the research! It thrills me to no end seeing new glitches get rediscovered and deep dived in the modern age
Couldn't agree more myself; glad you enjoyed the video!
I can't believe this was another case of using
I've never heard of this before! Thanks for sharing, it's really interesting!
No problem; I'm glad you enjoyed it!
12:05 Today I learned Seadra has Poison Point for whatever reason :p
Yeah, it's pretty interesting, especially since the other evolutionary members don't have it - they'll both have Swift Swim instead.
20:00 Is that a difference caused by Ruby/Sapphire and FireRed/LeafGreen being different games? I never heard you specify whether you'd tested this in both pairs of games or not, but the pictures/clips you showed of the 'text glitch' all used Gen 1 Pokemon, and I don't _THINK_ I heard you say that you'd tested FireRed/LeafGreen, only Ruby/Sapphire...
That might be part of it, but I don't think it's *all* of it. If you look at the speedrunner's clip, which is also FR/LG, that weird text doesn't display there.
@@yukihoshikawa ...hmm. Maybe it's something to do with the specific battle being replaced, like 'rival 1 battle' tutorial code interacting with ability text pop-ups... _no,_ that doesn't seem very likely. Maybe... something to do with using the ability's number/numerical value as junk data? If the 'text bug' is replicable in those specific circumstances, I suppose the only way to test it would be to check _literally every ability,_ maybe doing a few separate tests first to confirm that the specific battle it's done in doesn't cause it, but that would be a *LOT* of work, so I totally understand why you don't want to do it. There are probably romhackers who could more easily identify the source code that causes it, anyway: if it matters, the best course of action is probably just to spread the knowledge around for a few weeks/months, and see if anyone comes up with a 'eureka' moment that saves a lot of work.
15:33 It would seem to me that the ability text only appears in FR/LG.
That's true, although that might just be because of the limited amount of footage regarding this glitch. Plus, it doesn't happen 100% of the time in FR/LG, so there's gotta be some other aspect to this.
3 whole generations of Game Freak not knowing the difference between "less than" and "less than or equal to". Amazing
this is so weird I love it, there’s so many interesting things people are finding out recently in gen 3
Hey Yuki! Thanks for investigating this further! I’m like 99% sure the weird text is displayed when the opponent is the one using the multi-hit move rather than the player.
In hindsight, I'm not really surprised that it doesn't cause a desync - because if what I'm thinking is the case, it would probably have a 1% chance to desync with any move at all, so we would know about it by now lol. What I'm wondering now is if the chance of *all* secondary effects triggering is 1% higher than intended in R/S/FR/LG/C? It probably would be, right?
I would assume so, yeah. Although, you might wanna remove XD from that list - I made an error when testing this stuff out, and this glitch does NOT occur in XD.
That would've been the 2nd coming of the 1/256 glitch from Gen 1.
Or the third - there’s kind of one in gen 2 as well! A move with a 100% chance to apply an effect in gen 2 has a 1/256 chance for it not to work (think mud-slap)
Unrelated but I had to double take after seeing your name in a random video I clicked on as a recommendation, this is Kaze from the old redpill OOB server, that's it but hi lmao
it's caused by how FR/LG handle it differently, one instance happened when the opponent used the move and the other happened when the player used the move so it's not because of the opponent using the multi-hit move
Ild like to assume that at least one of the double kicks like, got them so hard in the spine in paralysed that way
Nurse Joy's gonna be working overtime on that one...
as a crappy coder myself ive also been foiled by less than or equal to
i cannot believe they pulled a reverse gen 1 miss
Gen 3 status hax 😂
Great video! I love obscure glitches and I *LOVE* how in depth you went!
I'm glad to hear! I wasn't sure while making this if all of my explanation would be too overkill or not, so I'm glad to hear you enjoyed it!
Hey, your video is amazing, really love how indepth it is, just wanted to tell that..the interaction reminder is nice and all, but it really takes you out of it?
I'm enjoying listening to your explanation whilst I am doing something else and having the loud ding of it can be distracting and made me lose focus on what you were saying at the time.
It's free to still have it, but I'd recommend having it be muted so it's only a visual reminder and allows people who are only activly listening to not be distracted.
Outside of that : the video is amazing and I was suprised you weren't a big youtuber, instantly subscribed to you and I hope to see more of your content !
That's fair, honestly. I honestly don't even include it most of the time; whether or not it's in a video is just a "mood of the day" type of thing, you know? Perhaps I'll experiment with it being muted the next time I include it (if I don't forget, lol; I can be kinda forgetful sometimes)
Still, I'm glad to hear you enjoyed the video! Thanks for taking the time to comment, and thanks for subscribing, too; I truly appreciate it!
So they did a "Gen 1 miss" code again. These people never learn.
It really is kind of amazing they managed to mess up multiple times on that front.
This mistake that makes 0% chance possible to activate is the _exact same_ mistake that caused the 1/256 glitch in gen1.
I'm not the only one noticing that the glitched ability text was only happening in FRLG gameplay and not RS gameplay, right?
That's true! However, it doesn't *always* happen in FR/LG - there's some other factor that determines if the ability text gets glitched.
20:06 did the extra status text (e.g. “Poison Point did a Paralysis”), only appear in FR/LG?
It seems like that’s the footage I’m seeing, whereas you tested in Ruby/Sapphire?
Maybe something different between the games
That could be a possibility, but there's probably more to it - the speedrunner had no weird text when it happened to them.
Imagine being vashperado, facing years of skepticism from practically everyone, even having some claim you were lying for attention...only to be vindicated a decade and a half later. I can’t think of an “I told you so” moment with more buildup.
1:55 I am shocked at how nostalgic the word 'siggy' makes me feel omg
Great video!
Thanks; glad you enjoyed it!
15:40 Was the "text" part not because both Pokemon had a contact ability?
For instance, 16:30, if the Treeco had flame body, poison point, or static, would you then see the text?
In the image with Charmander and Squirtle, the Squirtle was hacked to have Static, but the Charmander still had Blaze.
so, is it a complete coincidence the gltich occured naturally for a nidoran line vs pikachu line twice?
Indeed - it probably happened because Pikachu's a popular Pokemon, and you can get it right at the start of the game. On top of that, a lot of trainers use Nidoran, which gets Double Kick, which just so happens to be one of the moves that triggers this glitch.
Damn they really pulled the gen 1 miss glitch code and added it to this secondary affect glitch
"Alright, what if your attack lands, but now it paralyzes?"
- Game Freak intern, circa early 2000s
Gen 3 games use will use emerald's engine if emerald is one of the games involved in the battle, same with gen 4 and Pt/HG/SS, the biggest difference I'm aware of there is the accuracy of hypnosis going from 70% to 60%.
That's what I figured would be the case, just cuz I knew that's how gen 4 handled it.
Very cool, thank you for your research and dedication
No problem; glad you enjoyed!
oh my god its literally the 1/256 miss glitch from gen 1. except way weirder and messed up. this is incredible i love this glitch so much
It really is amazing - I became fascinated by it the moment I learned of it!
Having just found your channel like a month ago, im consistently shocked by the amazing quality
Thank you!! It always makes my day hearing comments like these!
@@yukihoshikawa u seriously deserve so many more views/subs! I'm just glad I found ur channel
@@SoftSpott Thank you; I truly appreciate it!
one glitch that was odd to me that occured was in gen 1 when i had a wild encounter and it rendered a starter.
I'd ask for proof, but it's gen 1. So I don't even doubt this
@@alexisdipoalo9443with those old cartridges, weird things could happen when the cartridge was dusty or damp
@@alexisdipoalo9443Yeah no this is a complete lie. Starters never spawn in gen 1 in the wild unless you do the fly glitch
I recall once flinching with... Either Faint Attack or Crunch in the Battle Dome in Emerald. Think Infinite Accuracy/Stat Drop moves may also have this oddity and inherited the chance somehow, that secondary status has its own version of the glitch, or did I just get hit with a random bug (that Flygon I used kept having weird crap happen to her, so I wouldn't be surprised if my save on Emerald just had some weird fault in its code from messing with it prior)?
Faint Attack can flinch if your Pokemon is holding a King's Rock.
So we got a 2nd 256 Glitch in Gen 3. Can't believe it came up twice. Great find
This one's only 1/100, but same idea, yeah.
It at least looked like both of the examples you showed for the strange "Paralyzed by [Ability]" text were from FRLG, instead of Ruby or Sapphire. All of the testing that you mentioned doing in the video was on Ruby - have you done any testing with the glitch on FRLG? It could be another small difference between the game versions.
I haven't done any other testing in FR/LG, but not every example of this glitch happening in FR/LG had the glitchy ability text. That leads me to believe there's a little something more than just what game is being played, and that's the part that's bugging me.
It seems like they were trying to describe something about reality with the way they programmed static - "Pikachu was filled with static, so *when you made contact,* you became paralyzed."
If Static causes paralysis -> display: [Pokemon A]'s [ability: Static] paralyzed foe [Pokemon B].
When Double Kick's secondary effect becomes Static's effect, maybe Double Kick picks up Static's text display trigger? -> [Charmander]'s [ability: Blaze] paralyzed foe [Squirtle]
It only happens some of the time, though. Maybe that's part of it, I don't know, but there's also something else at play.
I vaguely recall reading somewhere ages ago that link battles in pokemon games generally defer to the rules of the "newest" cart based on some internal version number, not just between the different flavours in a generation, but also reginal versioning and revisions are taken into account, at least through gen 3 and probably the DS games? Probably by the switch games i assume you just have to be "up to date" to connect to anyone in the first place
Huh, I thought electric pokemon couldn't get paralyzed.
Edit: Possible I was getting it mixed up with Poison, I've only been playing the damn games for almost 30 years
Electric type Pokemon started being immune to paralysis in the gen 6 games, X/Y!
@@yukihoshikawa Okay that jives. I couldn't stand RSE so much I didn't pick pokemon back up until Black 2.
I can’t believe Gen 3 has its own equivalent of the 1/256 glitch from Gen 1.
Something thats confusing me, maybe you can explain, is WHY the move gains the ability’s effect. Like, why is it programmed that way? What purpose does that serve in regular, non glitchy gameplay?
Like, I’m looking at the code in your video and have it paused to look at it. I just cannot fathom why they coded it to give the opponent’s move the ability’s effect. Is this required to make the effect happen at all or something? Like what purpose does it serve to code that at all?
The other mistakes that lead to the glitch make logical sense. Like not ordering the effects properly to account for something that SHOULD be 0% odds. Or the 0-99 thing, someone just not considering 0=0 in their math.
But deliberately coding into the abilities a line that gives the enemy move your ability’s effect… that makes no sense to me. Why do that at all?
@@vincenthall5908 Unfortunately, I'm not sure myself. If I had to fathom a guess (and I'm going to emphasize "guess" - I genuinely have no idea), it must be because these games are programmed in a way where that's necessary to apply an effect like that mid battle.
And to be fair, if the rest of the code was properly written, it'd work! It'd be a really janky solution, but it'd work. Maybe Game Freak was just more concerned with getting the job done, rather than getting the job done well, so to speak.
Again, though, this is just a guess on my part; I don't know the rest of the code well enough to make any definitive statement.
Ooooo this is interesting! I like learning about new glitches.
These kinds of glitches are the best - they don't crash the game or anything, and they're out of the way.
I bumped into this in FireRed earlier and someone linked me here.
A Poliwag used Double Slap on my Parasect, activated Effect Spore on the first hit, and fell asleep. Then Parasect randomly fell asleep. It certainly caught me by surprise.
from what you have shown both glitched ability activations are in FRLG while in ruby/sapphire/gamecube they are just getting the effect.
maybe it's how FRLG handles ability activations ?
I feel like there has to be something more to it than just that, as the speedrunner was playing FR/LG, and it didn't happen there.
@@yukihoshikawa the only other things I can think of is whether it's a trainer or wild battle, the speed of the pokemon and the turn of the multi hit move (there is a chance difference, so maybe the text is different too ?).
@@dany_fg someone else left a comment with a pretty in-depth explanation of their findings on the matter not too long ago; might be worth a read if you're interested.
Fascinating, amazing video
Thanks; glad you enjoyed it!
Something that makes me wonder if you could get the desync to work is that link battles in gen 3 have a host game and a tethered game, and idk how it's decided but i was under the impression that it either had to do with which gameboy had which end of the link cable or it was maybe random. Maybe you got the 50/50 coin flip that emerald was the host game?
Honestly, your guess is as good as mine; I have no idea how link battles work, lol
So to generalize that code error, if the status chance is any number less than 100, the actual chance of it being inflicted is 1% higher. 0% becomes 1% and 99% becomes 100%.
Yep, you got it!
i cant believe 2 gens in this series, somehow, managed to have the same coding error, resulting in a 1/256 glitch. Or 1/100 in this case.
Game Freak wants to be the very best, like no one ever was...
...at repeating mistakes. :p
So, I haven't looked into the code so I'm probably missing stuff, but what I noticed about the times the text popped up is that the pokemon triggering the glitch had an ability that could also trigger it. What might be going on is that the new 'extra' condition that double kick gives retains some attribute of, "Inflicted by opponent's ability", so when the Double-kick user has Poison Point, that allows it to match up to this property, so it sees that say Nidoking has an ability that adds a secondary effect, and that say Raichu was hit by a status inflicted by a secondary effect generated by an ability, but if the user pokemon lacks one of these abilities it skips some kind of check or falsely assumes that it must just be a natural part of Double-kick, thus no text.
Also, For the desync with emerald something I noticed is that the Emerald pokemon game was the host. This actually changes a lot of things about the battle as back then basically the host is registered as the 'player' so is kinda given a lot of advantages that the player subtly has over NPCs that's not much talked about (such as if you throw two pokemon with weather setting abilities on the field at the same time, the order of abilities is not determined by the pokemon's speed but rather who is the host and who isn't). If you ever want to try the desync again you should try the other game hosting the battle and see if this causes both games to play by the rules of the new host (thus this glitch is possible but doesn't cause a desync) or if Emerald still runs it's own base code even though the host has different code (thus the glitch only happens on one end causing a desync)
Edit: Also it was very neat to see that not only can effect spore sleep activate the glitch, but it seems like out of all the possible status effects if you were guaranteed to get a sleep activation during a multi-hit attack, it's the most likely to hit both pokemon, since the example you showed only did '1-hit', meaning that since sleep ends the multi-hit move a sleep activation will *always* be on the final hit allowing it to fulfill two of the conditions (inflict a status effect and be the final hit of a multi-hit attack) in one go.
In the image with Charmander and Squirtle, the Squirtle was hacked to have Static, but the Charmander still had Blaze.
As for the link battle stuff, assuming the host is player one, Ruby was actually the host - the game windows were just (unintentionally) set up in a deceiving way.
@@yukihoshikawa Oh, interesting that Emerald was the one using the rules then! Well then that probably means Emerald rules are always used when it's one of the games.
the games where the text is different were all FireRed or LeafGreen right? maybe they have different code for how they display ability effects?
It doesn't *always* display differently, though - the speedrunner had normal text.
That's definitely something I noticed, though.
When the two results were .25% and .8% I was like “that’s just the chance of static happening twice,” which it kinda was.
For the question: do you think FR/LG could have a different display message from Ruby & Sapphire? I noticed how the first screenshot was between Charmander and Squirtle in the lab, clearly FR/LG, while there were a bunch of other tests done in R/S, the two outliers both are from FR/LG copies, with Pikachu and Nidorina as well.
Just an observation.
I suppose it *could* be possible, but there must be more to it, as the speedrunner had normal text.
@@yukihoshikawa It could also be active abilties? if I remember correctly the one with the starters was when they were both at low HP, and maybe the opponent's ability (Torrent I think it was) had already triggered and was actively doing bonus damage.
Poison Point is like always "active" in the sense that if a contact move is used, it's always making checks?
The ability that the opponent has and what state it is in could be a factor basically, but it depends on the code.
On several occasions have seen the master ball fail after being thrown. After decades of gaming ens 1-5 have only seen it happen 3 times.
from what I saw in this video the glitched ability text only happend on FRLG, never Ruby/Sapphire.
You can't just start by saying we're going back 15 years to 2008 so casually like that
Now we wait for this glitch to completely shake up the competitive scene of an obscute tier on showdown.
9:16 HOW do they keep making this same mistake?!
I feel like I’m dumb, but I can’t figure out why it applies the effect to the enemy Pokémon (the ability owner) instead of attempting to apply it to the Pokémon using the attack (the double kick user) for a second time. I’ve watched the video again and can’t seem to wrap my head around that and I certainly don’t know enough about programming to parse that myself.
It's definitely a complicated subject; don't feel bad! I tried to explain things well enough in the video to where you wouldn't need to understand the code on screen in order to understand why this glitch happens, but lemme try explaining things again; hopefully that'll help!
So Static, Poison Point, Flame Body, and Effect Spore (I'll just be saying Static from now on for simplicity's sake) inflict a status condition by having YOUR MOVE give you a status condition. This change that Static makes to your move is removed when another move is used. So, normally, the change Static makes doesn't really matter, especially since the game will normally activate your move's secondary effect BEFORE the opponent can activate Static and make that change (remember that example with Thunderpunch and Flame Body in the video?).
However, multi hit moves like Double Kick and Fury Attack activate their secondary effect AFTER the opponent activates their ability. To use the Thunderpunch and Flame Body example, it'd be like if Flame Body activated, and THEN Thunderpunch paralyzed. Of course, normally Double Kick and Fury Attack don't have a secondary effect, but if Static activated, then those moves DO have a secondary effect. But only for the amount of time between when Static activates, and when another move is used.
Why does this glitch only happen on the last hit of a multi hit move? Because that's the only time the game can activate the secondary effect of a multi hit move. Anyone can see this in action with Twineedle, a multi hit move that Beedrill can learn; it can only inflict Poison on the second and final hit. In addition, each hit of a multi hit move removes the change made by Static, if it activated on a previous hit.
The final part of this is that these moves that trigger this glitch normally have a 0% chance to activate a secondary effect, because under normal circumstances, they never have a secondary effect. However, Game Freak messed up, and secondary effects have an extra 1% chance to happen, even for moves that should have a 0% chance to activate a secondary effect.
It's a lot, but hopefully this helps!
You've heard of the gen 1 miss, now get ready for... The gen 3 hit!
I just can't seem to wrap my brain around the explanation at 07:03 about how an ability such as Static functions. I mean, obviously it's correct because, y'know, the whole video demonstrates it, but when I try to walk through it in my head, it just doesn't make sense to me.
So from what I can understand, let's say we're looking at the original Nidoking vs Raichu fight. Nidoking uses Double Kick, and it triggers Static. Instead of the simple method of, "Static activated, so paralyze the other pokemon", it adds a secondary effect to the move Nidoking used that makes it apply paralysis to the user of the move. So Nidoking is technically paralyzing *itself* with its attack. Normally this effect is then removed before the next attack. But since Double Kick is a multi-hit move, which for some reason checks for effects AFTER the ability activates, meaning the game will then see this secondary effect on Double Kick and apply it (with a 1% chance due to the same oversight that causes the Gen 1 miss).
My confusion is, if the secondary effect is to apply status to the *attacker*, why does this end up affecting the *target*? Furthermore, aren't the "ability" and "secondary effect" the same thing? Since the secondary effect is just the method the ability uses to apply the status, shouldn't this just result in the move just trying to paralyze you twice, which effectively does nothing?
The only explanation I can think of is that I'm misunderstanding how Static applies the secondary effect and how the secondary effect functions. My initial assumption is that Static gives the move a secondary effect that just paralyzes the user. But is it actually that Static first gives the move the secondary effect of paralysis (the exact same effect as any other paralyzing move), and *then* causes that effect to target the user instead of its target?
So then due to the fact that the secondary effect check happens after the ability for multi-hit moves as opposed to before, the game rolls to see if Static activates (30% chance), and when it does, gives Double Kick the paralysis secondary effect, then causes this effect to target Nidoking instead of Raichu, and THEN sees Double Kick has the paralysis secondary effect, checks to see if it hits (1% chance due to
Honestly, it sounds like you understand everything! As for this part, though:
"My confusion is, if the secondary effect is to apply status to the *attacker*, why does this end up affecting the *target*?"
I'm honestly not sure, unfortunately. I assume there's some bit of code somewhere that makes it so that the paralysis added by Static, etc., only targets the user for that one specific instance, and then that "targeting the user of the move" bit gets erased even before the added paralysis bit does. But I'm not familiar with the rest of the code for the game, so... it's probably spaghetti code LMAO.
@@yukihoshikawa Ah, okay! I'm assuming my first assumption of it being an effect different to standard paralysis is incorrect. The second assumption I made was correct. Everything else makes sense. Great video!
My guess as to why the glitchy messages show up is that the game recognizes the status trigger is an ability, but since the one afflicting it is the pokemon with a multi-hit move the game just assumes that pokemon has a status afflicting ability and as such, displays it. As to why it didnt show up during your testing, i think it might be because it's a frlg thing. both of the screenshots where it happens appear to be kanto games, so it's possible frlg are coded slightly differently, and we can't really test if emerald has this problem without removing the [if x > 0] fix. it is probably possible if we make this change tho.
16:37 An ability that would but the user and opponent in a mutual sleep would be interesting. Or a trick nap.
when i was young i had a cd rom with the first 2 gen games on it, they were a glitchy mess for some reason, even more than the original games, in red i evolved a nidoran to nidorino with a moon stone and in silver the guy that trades you an onix for a bellsprout couldn't be spoken to because he was violently spinning in place
Man, if you still have that, you should rip it. 👀