• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Change OW in script

Danny0317

Fluorite's back, brah
1,067
Posts
10
Years
    • Age 24
    • Seen Nov 19, 2023
    Fired red part by Jotta from WaH. All I did was translate the important parts. And the RSE part
    This tutorial is FR only. Emerald and Ruby part in the bottom.

    Screenies soon, maybe,

    Step 1.

    Open NSE Classic, go to the OW you want, and open Advanced mode. You will see Pointer 1, Pointer 2, and Pointer 3. Look at pointer 3, and write it down or something.

    Step 2.

    Do this to them. (This is an example) 3A00A0 => A0003A. So format is (first two numbers)(middle two numbers)(third two numbers).

    Step 3.

    When you want the OW to change, put this:
    writebytetooffset 0x 0x02020648
    writebytetooffset 0x 0x02020649
    writebytetooffset 0x 0x0202064A

    But in the end it should look like this:
    writebytetooffset 0xA0 0x02020648
    writebytetooffset 0x00 0x02020649
    writebytetooffset 0x3A 0x0202064A

    Why? Because this:
    1º-A0 2º-00 3º-3A

    Step 4.
    Now you need to refresh the screen. Use a fadescreen or a warp.

    Step 5.

    This only applies if you want to do this to an OW that uses a different pallet.
    Now open, advance map, and place the OW you want to become somewhere. Now go there in visual advance and open pallet view. Find his/her pal. Now get the colors from it (not the first). Now for example, if the color is 1234, you would need to make it 34 12.

    Step 6.

    Do all of the pallet stuff to this.
    writebytetooffset 0x 0x20377FA
    writebytetooffset 0x 0x20377FB
    writebytetooffset 0x 0x20377FC
    writebytetooffset 0x 0x20377FD
    writebytetooffset 0x 0x20377FE
    writebytetooffset 0x 0x20377FF
    writebytetooffset 0x 0x2037800
    writebytetooffset 0x 0x2037801
    writebytetooffset 0x 0x2037802
    writebytetooffset 0x 0x2037803
    writebytetooffset 0x 0x2037804
    writebytetooffset 0x 0x2037805
    writebytetooffset 0x 0x2037806
    writebytetooffset 0x 0x2037807
    writebytetooffset 0x 0x2037808
    writebytetooffset 0x 0x2037809
    writebytetooffset 0x 0x203780A
    writebytetooffset 0x 0x203780B
    writebytetooffset 0x 0x203780C
    writebytetooffset 0x 0x203780D
    writebytetooffset 0x 0x203780E
    writebytetooffset 0x 0x203780F
    writebytetooffset 0x 0x2037810
    writebytetooffset 0x 0x2037811
    writebytetooffset 0x 0x2037812
    writebytetooffset 0x 0x2037813
    writebytetooffset 0x 0x2037814
    writebytetooffset 0x 0x2037815
    writebytetooffset 0x 0x2037816
    writebytetooffset 0x 0x2037817

    Step 7.

    Now put this in a level script.

    checkflag 0x"flag"
    if 0x1 goto 0x"offset2"
    end

    offset2:
    All your WBTO stuff.
    end

    Extra stuff

    WTBO for pal 2:

    writebytetooffset 0xBD 0x020377FA
    writebytetooffset 0x7F 0x020377FB
    writebytetooffset 0xD7 0x020377FC
    writebytetooffset 0x6A 0x020377FD
    writebytetooffset 0xFE 0x020377FE
    writebytetooffset 0x4A 0x020377FF
    writebytetooffset 0x5B 0x02037800
    writebytetooffset 0x3A 0x02037801
    writebytetooffset 0xDF 0x02037802
    writebytetooffset 0x12 0x02037803
    writebytetooffset 0xBE 0x02037804
    writebytetooffset 0x25 0x02037805
    writebytetooffset 0xD7 0x02037806
    writebytetooffset 0x11 0x02037807
    writebytetooffset 0x0F 0x02037808
    writebytetooffset 0x21 0x02037809
    writebytetooffset 0x89 0x0203780A
    writebytetooffset 0x31 0x0203780B
    writebytetooffset 0x29 0x0203780C
    writebytetooffset 0x2D 0x0203780D
    writebytetooffset 0x07 0x0203780E
    writebytetooffset 0x21 0x0203780F
    writebytetooffset 0xE7 0x02037810
    writebytetooffset 0x0C 0x02037811
    writebytetooffset 0x00 0x02037812
    writebytetooffset 0x00 0x02037813
    writebytetooffset 0x00 0x02037814
    writebytetooffset 0x7C 0x02037815
    writebytetooffset 0x20 0x02037816
    writebytetooffset 0x02 0x02037817


    WTBO for pal 4:

    writebytetooffset 0x5F 0x20377FA
    writebytetooffset 0x5B 0x20377FB
    writebytetooffset 0xFE 0x20377FC
    writebytetooffset 0x4A 0x20377FD
    writebytetooffset 0x5B 0x20377FE
    writebytetooffset 0x3A 0x20377FF
    writebytetooffset 0xF 0x2037800
    writebytetooffset 0x21 0x2037801
    writebytetooffset 0x9F 0x2037802
    writebytetooffset 0x5A 0x2037803
    writebytetooffset 0xBA 0x2037804
    writebytetooffset 0x3D 0x2037805
    writebytetooffset 0x11 0x2037806
    writebytetooffset 0x29 0x2037807
    writebytetooffset 0x12 0x2037808
    writebytetooffset 0x77 0x2037809
    writebytetooffset 0xC 0x203780A
    writebytetooffset 0x66 0x203780B
    writebytetooffset 0xE7 0x203780C
    writebytetooffset 0x24 0x203780D
    writebytetooffset 0x18 0x203780E
    writebytetooffset 0x6B 0x203780F
    writebytetooffset 0x31 0x2037810
    writebytetooffset 0x4A 0x2037811
    writebytetooffset 0x29 0x2037812
    writebytetooffset 0x2D 0x2037813
    writebytetooffset 0xFF 0x2037814
    writebytetooffset 0x7F 0x2037815
    writebytetooffset 0x0 0x2037816
    writebytetooffset 0x0 0x2037817

    Now compatible with emerald and ruby, a different method.

    Okay, create a person event in your map that you want to become. Put a level script or script tile in your map that the player can't avoid. Make it have this.

    setflag 0x(flag) (and make it the Person ID of the OW you wanna change into)
    hidesprite 0x(person event)

    and make sure it doesn't repeat.

    Now put a script tile below the person. The person is hidden and has a flag on them so it's not a problem. Now in that script tile, make sure it has this:

    fadescreen 0x1
    hidesprite 0xFF
    clearflag 0x(flag)
    showsprite 0x(person event)
    fadescreen 0x0

    And that should do the job.

    The effects go away once a warp happens. It is good to put a level script having the things.
     
    Last edited:
    5,256
    Posts
    16
    Years
  • Wouldn't it be far easier and space-efficient to just store those bytes in the RAM through assembly? This seems really bulky for what it's doing. JPAN did something similar in his hacked engine, so you could look at that too. Nice find, though.
     

    iv0

    145
    Posts
    10
    Years
    • Seen Sep 1, 2023
    Thanks, thanks I was looking for this for a long time.
     
    3,830
    Posts
    14
    Years
    • Age 27
    • OH
    • Seen Feb 26, 2024
    Well that's certainly a useful way of using WBTO, if inefficient.
    How long does the sprite stay changed? Until there hero follows a warp?
     

    Danny0317

    Fluorite's back, brah
    1,067
    Posts
    10
    Years
    • Age 24
    • Seen Nov 19, 2023
    Well that's certainly a useful way of using WBTO, if inefficient.
    How long does the sprite stay changed? Until there hero follows a warp?

    Yeah, my bad. When I was gonna translate that part I had to do something so I guess I forgot. I'll add it now.
     

    Danny0317

    Fluorite's back, brah
    1,067
    Posts
    10
    Years
    • Age 24
    • Seen Nov 19, 2023
    So here is something I did with this as a little test.
    Spoiler:


    And the script
    Spoiler:

    If you're gonna use that, plis modify the script :3
     
    Last edited:
    116
    Posts
    16
    Years
  • I wanna write a script like this situation: after the player talk to a crystalline rock's OW, it will disappear and Jirachi's OW appears at that moment, then go to battle with Jirachi. The following was the script I wrote, but it may got something mistakes: the crystalline rock's OW disappeared and Jirachi's OW wouldn't appear, could you please and please correct it for me?

    Spoiler:


    Here are the screenshots about the two person events which I did, are there any mistakes or not? Thanks in advance.
    The crystalline rock's OW person events:
    attachment.php


    Jirachi's OW person events:
    attachment.php
     
    Last edited:

    Danny0317

    Fluorite's back, brah
    1,067
    Posts
    10
    Years
    • Age 24
    • Seen Nov 19, 2023
    I wanna write a script like this situation: after the player talk to a crystalline rock's OW, it will disappear and Jirachi's OW appears at that moment, then go to battle with Jirachi. The following was the script I wrote, but it may got something mistakes: the crystalline rock's OW disappeared and Jirachi's OW wouldn't appear, could you please and please correct it for me?

    Spoiler:


    Here are the screenshots about the two person events which I did, are there any mistakes or not? Thanks in advance.
    The crystalline rock's OW person events:
    attachment.php


    Jirachi's OW person events:
    attachment.php

    I'm about to go to sleep right now, so I'll link this right before I do. It's a bit more updated and may be able to fix your problem. If not, I'd be glad to help you, but I have to finish a project then go to sleep and wake up at 6 :/

    http://www.pokecommunity.com/showthread.php?t=334196
     
    416
    Posts
    11
    Years
    • Seen Feb 10, 2024
    This method is useless for LG/FR, since some ingame specials do the same. Pretty nice for R/S.

    which ingame specials change the player OW to a different OW?

    NOTE:
    In order to make a map where the player is always the different sprite, you need 2 map scripts:

    Script 0:
    Validates values, loads handler to 0x3000F28 [04]
    Flag: 4001 Value:0000 Script offset 2: offset to all your WBTO stuff.

    Script 1:
    On entering map/on menu close [07]
    Script offset: same offset as in Script 0

    Assuming you only had the two map scripts for each map that required this, you could use the same map script offset for each map.

    without both, every time the user opened his bag, it would reset their sprite...
     
    Last edited:
    116
    Posts
    16
    Years
  • I'm about to go to sleep right now, so I'll link this right before I do. It's a bit more updated and may be able to fix your problem. If not, I'd be glad to help you, but I have to finish a project then go to sleep and wake up at 6 :/

    http://www.pokecommunity.com/showthread.php?t=334196

    I felt more confused after read it. Could you please and please help me to correct the script and the person events?
     
    116
    Posts
    16
    Years
  • I'm about to go to sleep right now, so I'll link this right before I do. It's a bit more updated and may be able to fix your problem. If not, I'd be glad to help you, but I have to finish a project then go to sleep and wake up at 6 :/

    http://www.pokecommunity.com/showthread.php?t=334196

    I want to change the crystalline's OW to Jirachi's OW after talking to the crystalline's OW in Jirachi wildbattle script. Now the script I wrote maybe got some mistakes, the crystalline's disappeared but then Jirachi's OW wouldn't appear and it goes straight to battle with Jirachi directly. Jirachi's OW was hidden and put above the crystalline's OW.
     

    Danny0317

    Fluorite's back, brah
    1,067
    Posts
    10
    Years
    • Age 24
    • Seen Nov 19, 2023
    I want to change the crystalline's OW to Jirachi's OW after talking to the crystalline's OW in Jirachi wildbattle script. Now the script I wrote maybe got some mistakes, the crystalline's disappeared but then Jirachi's OW wouldn't appear and it goes straight to battle with Jirachi directly. Jirachi's OW was hidden and put above the crystalline's OW.

    Oh.. this tutorial was to change the player OW...

    Anyways, for a script like that to work you have to do something like this..

    (previous to this you have to set a flag that hides Jirachi.)

    talk to crystal
    wildbattle
    fadescreen
    setflag 0xcrystal flag
    hidesprite 0xcrystal
    clearflag 0xjirachi
    showsprite 0xjirachi
    fadescreen back

    if that doesn't work, then try replacing the hidesprites with spriteinvisibles
     
    Back
    Top