• 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.

Side-By-Side Battle

Zeak6464

Zeak #3205 - Discord
1,101
Posts
11
Years
  • This new script was made so Fakemon Could be added without having to have a backsprite.

    The Sprite Pack are Front sprites but there Horizontal flipped up til Gen 6.

    I did this so people can make there own game , and not make it feel like pokemon but instead a new game.

    NOTE*This script replaces "PokeBattle_SceneConstants"
    Note** Make sure to Replace your Back-Sprites with Front Sprites
    Note*** Make sure you Flip your Front Sprites
    Download Link for sprites : http://www.mediafire.com/download/6dab4s7slbrrmvt/Battlers.rar
    screenshot_4.png

    screenshot_8.png


    Code:
    module PokeBattle_SceneConstants
      USECOMMANDBOX = true # If true, expects the file Graphics/Pictures/battleCommand.png
      USEFIGHTBOX   = true # If true, expects the file Graphics/Pictures/battleFight.png
    
      # Text colors
      MESSAGEBASECOLOR        = Color.new(80,80,88)
      MESSAGESHADOWCOLOR      = Color.new(160,160,168)
      MENUBASECOLOR           = MESSAGEBASECOLOR
      MENUSHADOWCOLOR         = MESSAGESHADOWCOLOR
      BOXTEXTBASECOLOR        = Color.new(72,72,72)
      BOXTEXTSHADOWCOLOR      = Color.new(184,184,184)
      PPTEXTBASECOLOR         = MESSAGEBASECOLOR        # More than 1/2 of total PP
      PPTEXTSHADOWCOLOR       = MESSAGESHADOWCOLOR
      PPTEXTBASECOLORYELLOW   = Color.new(248,192,0)    # 1/2 of total PP or less
      PPTEXTSHADOWCOLORYELLOW = Color.new(144,104,0)
      PPTEXTBASECOLORORANGE   = Color.new(248,136,32)   # 1/4 of total PP or less
      PPTEXTSHADOWCOLORORANGE = Color.new(144,72,24)
      PPTEXTBASECOLORRED      = Color.new(248,72,72)    # Zero PP
      PPTEXTSHADOWCOLORRED    = Color.new(136,48,48)
    
      # HP bar colors
      HPCOLORGREEN        = Color.new(24,192,32)
      HPCOLORGREENDARK    = Color.new(0,144,0)
      HPCOLORYELLOW       = Color.new(248,176,0)
      HPCOLORYELLOWDARK   = Color.new(176,104,8)
      HPCOLORRED          = Color.new(248,88,40)
      HPCOLORREDDARK      = Color.new(168,48,56)
    
      # Exp bar colors
      EXPCOLORBASE       = Color.new(72,144,248)
      EXPCOLORSHADOW     = Color.new(48,96,216)
    
      # Position and width of HP/Exp bars
      HPGAUGE_X    = 102
      HPGAUGE_Y    = 40
      HPGAUGESIZE  = 96
      EXPGAUGE_X   = 6
      EXPGAUGE_Y   = 76
      EXPGAUGESIZE = 192
    
      # Coordinates of the top left of the player's data boxes
      PLAYERBOX_X   = Graphics.width - 530
      PLAYERBOX_Y   = Graphics.height - 390
      PLAYERBOXD1_X = PLAYERBOX_X - 12
      PLAYERBOXD1_Y = PLAYERBOX_Y - 20
      PLAYERBOXD2_X = PLAYERBOX_X
      PLAYERBOXD2_Y = PLAYERBOX_Y + 34
    
      # Coordinates of the top left of the foe's data boxes
      FOEBOX_X      = 250
      FOEBOX_Y      = 0
      FOEBOXD1_X    = FOEBOX_X + 12
      FOEBOXD1_Y    = FOEBOX_Y - 34
      FOEBOXD2_X    = FOEBOX_X
      FOEBOXD2_Y    = FOEBOX_Y + 20
    
      # Coordinates of the top left of the player's Safari game data box
      SAFARIBOX_X = Graphics.width - 232
      SAFARIBOX_Y = Graphics.height - 184
    
      # Coordinates of the party bars and balls of both sides
      # Coordinates are the top left of the graphics except where specified
      PLAYERPARTYBAR_X    = Graphics.width - 248
      PLAYERPARTYBAR_Y    = Graphics.height - 142
      PLAYERPARTYBALL1_X  = PLAYERPARTYBAR_X + 44
      PLAYERPARTYBALL1_Y  = PLAYERPARTYBAR_Y - 30
      PLAYERPARTYBALL_GAP = 32
      FOEPARTYBAR_X       = 248   # Coordinates of end of bar nearest screen middle
      FOEPARTYBAR_Y       = 114
      FOEPARTYBALL1_X     = FOEPARTYBAR_X - 44 - 30   # 30 is width of ball icon
      FOEPARTYBALL1_Y     = FOEPARTYBAR_Y - 30
      FOEPARTYBALL_GAP    = 32   # Distance between centres of two adjacent balls
    
      # Coordinates of the centre bottom of the player's battler's sprite
      # Is also the centre middle of its shadow
      PLAYERBATTLER_X   = Graphics.width - 390
      PLAYERBATTLER_Y   = Graphics.height - 100
      PLAYERBATTLERD1_X = PLAYERBATTLER_X - 48
      PLAYERBATTLERD1_Y = PLAYERBATTLER_Y
      PLAYERBATTLERD2_X = PLAYERBATTLER_X + 32
      PLAYERBATTLERD2_Y = PLAYERBATTLER_Y + 16
    
      # Coordinates of the centre bottom of the foe's battler's sprite
      # Is also the centre middle of its shadow
      FOEBATTLER_X      = Graphics.width - 100
      FOEBATTLER_Y      = (Graphics.height * 3/4) - 50
      FOEBATTLERD1_X    = FOEBATTLER_X + 48
      FOEBATTLERD1_Y    = FOEBATTLER_Y
      FOEBATTLERD2_X    = FOEBATTLER_X - 32
      FOEBATTLERD2_Y    = FOEBATTLER_Y - 16
    
      # Centre bottom of the player's side base graphic
      PLAYERBASEX = PLAYERBATTLER_X
      PLAYERBASEY = PLAYERBATTLER_Y
    
      # Centre middle of the foe's side base graphic
      FOEBASEX    = FOEBATTLER_X
      FOEBASEY    = FOEBATTLER_Y
    
      # Coordinates of the centre bottom of the player's sprite
      PLAYERTRAINER_X   = PLAYERBATTLER_X
      PLAYERTRAINER_Y   = PLAYERBATTLER_Y - 16
      PLAYERTRAINERD1_X = PLAYERBATTLERD1_X
      PLAYERTRAINERD1_Y = PLAYERTRAINER_Y
      PLAYERTRAINERD2_X = PLAYERBATTLERD2_X
      PLAYERTRAINERD2_Y = PLAYERTRAINER_Y
    
      # Coordinates of the centre bottom of the foe trainer's sprite
      FOETRAINER_X      = FOEBATTLER_X
      FOETRAINER_Y      = FOEBATTLER_Y + 6
      FOETRAINERD1_X    = FOEBATTLERD1_X
      FOETRAINERD1_Y    = FOEBATTLERD1_Y + 6
      FOETRAINERD2_X    = FOEBATTLERD2_X
      FOETRAINERD2_Y    = FOEBATTLERD2_Y + 6
    
      # Default focal points of user and target in animations - do not change!
      FOCUSUSER_X   = 128   # 144
      FOCUSUSER_Y   = 224   # 188
      FOCUSTARGET_X = 384   # 352
      FOCUSTARGET_Y = 96    # 108, 98
    end
     
    Last edited:

    Florio

    Pokemon Crimson Skies Owner
    391
    Posts
    15
    Years
  • The script needs to be updated so that only one sprite is needed for each Pokemon... having two sprites of the same graphic is just stupid and takes up twice as much space. We are going for optimization here.
     

    FL

    Pokémon Island Creator
    2,450
    Posts
    13
    Years
    • Seen yesterday
    Very neat idea! I was thinking about this a few weeks ago, since it's very difficult for find/making fakemon backsprites. But I agree with Florio. Just load the frontsprite and calls 'spriteVariableNameGoesHere.mirror = false' when initializing backsprite.

    And how double battles works? Post here a screenshot!
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • Very neat idea! I was thinking about this a few weeks ago, since it's very difficult for find/making fakemon backsprites. But I agree with Florio. Just load the frontsprite and calls 'spriteVariableNameGoesHere.mirror = false' when initializing backsprite.

    And how double battles works? Post here a screenshot!

    I posted screenshot for double

    Also

    issues with Animations is why we can't just load 1 sprite right now :

    befor battle animation:
    screenshot_2.png


    After Battle Animation:
    screenshot_3.png
     

    TBM_Christopher

    Semi-pro Game Dev
    448
    Posts
    14
    Years
  • Would it be possible to flip the sprite at runtime so that only one sprite image is necessary to be uploaded? After all, only a few Pokemon are going to be asymmetrical enough to justify having two separate sprites, and even that is pretty minor.
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • Would it be possible to flip the sprite at runtime so that only one sprite image is necessary to be uploaded? After all, only a few Pokemon are going to be asymmetrical enough to justify having two separate sprites, and even that is pretty minor.

    im still working with the script and i'm having issues ...
     
    423
    Posts
    13
    Years
    • Seen Aug 31, 2023
    ok so im using the pokemon essentials with gen 6 update and they use spritesheets but i would like to make my own fakemon so my question here is
    1) does this support the spritesheets from the gen 6 project version
    2) has work been done to get it to flip the frontsprite and not effect the animations?
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • ok so im using the pokemon essentials with gen 6 update and they use spritesheets but i would like to make my own fakemon so my question here is
    1) does this support the spritesheets from the gen 6 project version
    2) has work been done to get it to flip the frontsprite and not effect the animations?

    yes it can work on the spritesheets you would just have to flip the sheets...
    Flip after animation... all you really have to do is replace the back with front sprites
     

    ReVaN777

    Creator of Pokemon Titanium
    108
    Posts
    12
    Years
  • Great script. Nice release! I was in the beginning stages of doing this myself but you helped me out with a lot. Thank You! I just have one question, how do you go about changing the Pokeball animation, (when player throws pokeball to release Pokemon. I've been messing with the scripts and cant seem to find it. I made it so my players trainer sprite faces forward as well just like the enemy trainer.
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • Great script. Nice release! I was in the beginning stages of doing this myself but you helped me out with a lot. Thank You! I just have one question, how do you go about changing the Pokeball animation, (when player throws pokeball to release Pokemon. I've been messing with the scripts and cant seem to find it. I made it so my players trainer sprite faces forward as well just like the enemy trainer.

    I haven't got that far on that my self, i might look into this tho
     

    ReVaN777

    Creator of Pokemon Titanium
    108
    Posts
    12
    Years
  • I haven't got that far on that my self, i might look into this tho

    okay, If i figure it out i'll let you know. Where would the best place to start looking would be?

    I believe this is the script i just don't understand the number that well

    Code:
    def pbSendOut(battlerindex,pkmn) # Player sending out Pokémon
        while inPartyAnimation?; end
        balltype=pkmn.ballused
        ballbitmap=sprintf("Graphics/Pictures/ball%02d",balltype)
        pictureBall=PictureEx.new(32)
        delay=1
        pictureBall.moveVisible(delay,true)
        pictureBall.moveName(delay,ballbitmap)
        pictureBall.moveOrigin(delay,PictureOrigin::Center)
        # Setting the ball's movement path
        path=[[0,   146], [10,  134], [21,  122], [30,  112], 
              [39,  104], [46,   99], [53,   95], [61,   93], 
              [68,   93], [75,   96], [82,  102], [89,  111], 
              [94,  121], [100, 134], [106, 150], [111, 166], 
              [116, 183], [120, 199], [124, 216], [127, 238]]
        spriteBall=IconSprite.new(0,0,@viewport)
        spriteBall.visible=false
        angle=0
        multiplier=1.0
        if @battle.doublebattle
          multiplier=(battlerindex==0) ? 0.7 : 1.3
        end
     
    Last edited:

    ReVaN777

    Creator of Pokemon Titanium
    108
    Posts
    12
    Years
  • I have only one issue right now, i have mega's in my game and when you mega evolve the mega is floating to high and is cut off by the players state box, i've gone through the script and cant seem to find out how to re position the sprites for the mega evolutions.
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • I have only one issue right now, i have mega's in my game and when you mega evolve the mega is floating to high and is cut off by the players state box, i've gone through the script and cant seem to find out how to re position the sprites for the mega evolutions.

    were your mega's pokemon are added at in multiforms just add y= , x= to fix positions
     

    Zeak6464

    Zeak #3205 - Discord
    1,101
    Posts
    11
    Years
  • wWould you mind sowing me an example?

    Code:
    MultipleForms.register(:GROUDON,{
    "getPrimalForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:REDORB)# && pokemon.form==0
       next 
    },
    "getUnprimalForm"=>proc{|pokemon|
       next 0
    },
    "getPrimalName"=>proc{|pokemon|
       next _INTL("Primal Groudon") if pokemon.form==1
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [100,180,160,90,150,90] if pokemon.form==1
       next
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:FIRE) if pokemon.form==1
       next
    },
    "ability"=>proc{|pokemon|
       next getID(PBAbilities,:DESOLATELAND) if pokemon.form==1
       next
    },
    "height"=>proc{|pokemon|
       next 50 if pokemon.form==1
       next
    },
    "weight"=>proc{|pokemon|
       next 9997 if pokemon.form==1
       next
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    },
    "getOffsetY"=>proc{|pokemon|
      next -150 if pokemon.form==1
    },
    "getOffsetX"=>proc{|pokemon|
      next  50 if pokemon.form==1
    }
    })
     

    ReVaN777

    Creator of Pokemon Titanium
    108
    Posts
    12
    Years
  • Code:
    MultipleForms.register(:GROUDON,{
    "getPrimalForm"=>proc{|pokemon|
       next 1 if isConst?(pokemon.item,PBItems,:REDORB)# && pokemon.form==0
       next 
    },
    "getUnprimalForm"=>proc{|pokemon|
       next 0
    },
    "getPrimalName"=>proc{|pokemon|
       next _INTL("Primal Groudon") if pokemon.form==1
       next
    },
    "getBaseStats"=>proc{|pokemon|
       next [100,180,160,90,150,90] if pokemon.form==1
       next
    },
    "type2"=>proc{|pokemon|
       next getID(PBTypes,:FIRE) if pokemon.form==1
       next
    },
    "ability"=>proc{|pokemon|
       next getID(PBAbilities,:DESOLATELAND) if pokemon.form==1
       next
    },
    "height"=>proc{|pokemon|
       next 50 if pokemon.form==1
       next
    },
    "weight"=>proc{|pokemon|
       next 9997 if pokemon.form==1
       next
    },
    "onSetForm"=>proc{|pokemon,form|
       pbSeenForm(pokemon)
    },
    "getOffsetY"=>proc{|pokemon|
      next -150 if pokemon.form==1
    },
    "getOffsetX"=>proc{|pokemon|
      next  50 if pokemon.form==1
    }
    })

    thank you help me out alot.
     
    Back
    Top