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

Pokemon Birthsigns

423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
k so ive installed this into a clean copy of essentials v17.2 and everything seams to work except i cant seam to activate the zodiac powers the icons there but nothing happens when i press A
 
1,401
Posts
10
Years
  • Age 35
  • Seen today
k so ive installed this into a clean copy of essentials v17.2 and everything seams to work except i cant seam to activate the zodiac powers the icons there but nothing happens when i press A

Oh, right, good catch. I forgot to mention that's because I changed the button from A to CTRL. I honestly forgot why I did this lol, but there must have been a reason. If you don't like it, try changing it back near the bottom of the script.
 
Last edited:
1,401
Posts
10
Years
  • Age 35
  • Seen today
Bug Fixes & Tweaks
This is just a small update to fix a few things I overlooked in the last big update. If you're installing the v17 update of this project for the first time, these fixes have already been applied. If you already have it installed, please re-install the Birthsign Events and Zodiac Powers scripts, as well as the Birthsign Graphics folder. These are the areas that received the most substantial fixes.


Fixes:
Spoiler:
 
Last edited:
423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
ah that works just modified the battle icon to reflect it
 

Attachments

  • battlezodiac.png
    battlezodiac.png
    6.1 KB · Views: 109
423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
ah just noticed thank you
another quick question and i may be just being dumb how do you give pokemon a birthsign (like during the starter event or ingame trade
 
1,401
Posts
10
Years
  • Age 35
  • Seen today
ah just noticed thank you
another quick question and i may be just being dumb how do you give pokemon a birthsign (like during the starter event or ingame trade

You'd use pokemon.setBirthsign(X), where "pokemon" is whatever specific Pokemon you're trying to alter, and "X" is either the month number or abbreviated month name in caps that corresponds to that birthsign. So to give January's sign you'd use either setBirthsign(1) or setBirthsign(:JAN). Regardless of which birthsign set you're using, it'll give you whatever January's sign is.

If you want to give a Pokemon the current month's sign (regardless of which month it may be), use Time.now.mon in place of X.
If you want to give a Pokemon a completely random birthsign, use (rand(12)+1)%12 in place of X.

Look at some of the example NPC trade events that come in the Essentials demo as your guide to set this up if you need to.
 
Last edited:
423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
thanks ive managed to get it working for starter selection but can you have a quick look to see if ive done it the most efficient way

poke=PokeBattle_Pokemon.new(
:SQUIRTLE,5,$Trainer)
poke.setBirthsign((rand(12)+1)%12)
pbAddPokemon(poke)

also ive attempted to get the journal to work as a pokegear app and for some reason it only seams to open when i close the pokegear screen any ideas what im doing wrong

Code:
class PokegearButton < SpriteWrapper
  attr_reader :index
  attr_reader :name
  attr_reader :selected

  def initialize(command,x,y,viewport=nil)
    super(viewport)
    @image = command[0]
    @name  = command[1]
    @selected = false
    if $Trainer.isFemale? && pbResolveBitmap(sprintf("Graphics/Pictures/Pokegear/icon_button_f"))
      @button = AnimatedBitmap.new("Graphics/Pictures/Pokegear/icon_button_f")
    else
      @button = AnimatedBitmap.new("Graphics/Pictures/Pokegear/icon_button")
    end
    @contents = BitmapWrapper.new(@button.width,@button.height)
    self.bitmap = @contents
    self.x = x
    self.y = y
    pbSetSystemFont(self.bitmap)
    refresh
  end

  def dispose
    @button.dispose
    @contents.dispose
    super
  end

  def selected=(val)
    oldsel = @selected
    @selected = val
    refresh if oldsel!=val
  end

  def refresh
    self.bitmap.clear
    rect = Rect.new(0,0,@button.width,@button.height/2)
    rect.y = @button.height/2 if @selected
    self.bitmap.blt(0,0,@button.bitmap,rect)
    textpos = [
       [@name,self.bitmap.width/2,10,2,Color.new(248,248,248),Color.new(40,40,40)],
    ]
    pbDrawTextPositions(self.bitmap,textpos)
    imagepos = [
       [sprintf("Graphics/Pictures/Pokegear/icon_"+@image),18,10,0,0,-1,-1],
    ]
    pbDrawImagePositions(self.bitmap,imagepos)
  end
end



class PokemonPokegear_Scene
  def pbUpdate
    for i in [email protected]
      @sprites["button#{i}"].selected = (i==@index)
    end
    pbUpdateSpriteHash(@sprites)
  end

  def pbStartScene(commands)
    @commands = commands
    @index = 0
    @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
    @viewport.z = 99999
    @sprites = {}
    @sprites["background"] = IconSprite.new(0,0,@viewport)
    if $Trainer.isFemale? && pbResolveBitmap(sprintf("Graphics/Pictures/Pokegear/bg_f"))
      @sprites["background"].setBitmap("Graphics/Pictures/Pokegear/bg_f")
    else
      @sprites["background"].setBitmap("Graphics/Pictures/Pokegear/bg")
    end
    for i in [email protected]
      y = 196 - (@commands.length*24) + (i*48)
      @sprites["button#{i}"] = PokegearButton.new(@commands[i],118,y,@viewport)
    end
    pbFadeInAndShow(@sprites) { pbUpdate }
  end

  def pbScene
    ret = -1
    loop do
      Graphics.update
      Input.update
      pbUpdate
      if Input.trigger?(Input::B)
        break
      elsif Input.trigger?(Input::C)
        ret = @index
        break
      elsif Input.trigger?(Input::UP)
        @index -= 1
        @index = @commands.length-1 if @index<0
        pbPlayCursorSE if @commands.length>1
      elsif Input.trigger?(Input::DOWN)
        @index += 1
        @index = 0 if @index>[email protected]
        pbPlayCursorSE if @commands.length>1
      end
    end
    return ret
  end

  def pbEndScene
    pbFadeOutAndHide(@sprites) { pbUpdate }
    pbDisposeSpriteHash(@sprites)
    @viewport.dispose
  end
end



class PokemonPokegearScreen
  def initialize(scene)
    @scene = scene
  end

  def pbStartScreen
    commands = []
    cmdMap     = -1
    cmdPhone   = -1
    cmdJukebox = -1
    cmdBirthsigns = -1
    commands[cmdMap = commands.length]     = ["map",_INTL("Map")]
    if $PokemonGlobal.phoneNumbers && $PokemonGlobal.phoneNumbers.length>0
      commands[cmdPhone = commands.length] = ["phone",_INTL("Phone")]
    end
    commands[cmdJukebox = commands.length] = ["jukebox",_INTL("Jukebox")]
    commands[cmdBirthsigns = commands.length] = ["birthsigns",_INTL("Birthsigns")]
    @scene.pbStartScene(commands)
    loop do
      cmd = @scene.pbScene
      if cmd<0
        pbPlayCancelSE
        break
      elsif cmdMap>=0 && cmd==cmdMap
        pbPlayDecisionSE
        pbShowMap(-1,false)
      elsif cmdPhone>=0 && cmd==cmdPhone
        pbPlayDecisionSE
        pbFadeOutIn(99999){
          PokemonPhoneScene.new.start
        }
      elsif cmdJukebox>=0 && cmd==cmdJukebox
        pbPlayDecisionSE
        pbFadeOutIn(99999){
          scene = PokemonJukebox_Scene.new
          screen = PokemonJukeboxScreen.new(scene)
          screen.pbStartScreen
        }
      elsif cmdBirthsigns>=0 && cmd==cmdBirthsigns
        pbPlayDecisionSE
        pbFadeOutIn(99999){
          $scene = BirthsignJournalScene.new
        }        
      end
    end
    @scene.pbEndScene
  end
end
 
Last edited:
1,401
Posts
10
Years
  • Age 35
  • Seen today
thanks ive managed to get it working for starter selection but can you have a quick look to see if ive done it the most efficient way

poke=PokeBattle_Pokemon.new(
:SQUIRTLE,5,$Trainer)
poke.setBirthsign((rand(12)+1)%12)
pbAddPokemon(poke)

also ive attempted to get the journal to work as a pokegear app and for some reason it only seams to open when i close the pokegear screen any ideas what im doing wrong

Code:
class PokegearButton < SpriteWrapper
  attr_reader :index
  attr_reader :name
  attr_reader :selected

  def initialize(command,x,y,viewport=nil)
    super(viewport)
    @image = command[0]
    @name  = command[1]
    @selected = false
    if $Trainer.isFemale? && pbResolveBitmap(sprintf("Graphics/Pictures/Pokegear/icon_button_f"))
      @button = AnimatedBitmap.new("Graphics/Pictures/Pokegear/icon_button_f")
    else
      @button = AnimatedBitmap.new("Graphics/Pictures/Pokegear/icon_button")
    end
    @contents = BitmapWrapper.new(@button.width,@button.height)
    self.bitmap = @contents
    self.x = x
    self.y = y
    pbSetSystemFont(self.bitmap)
    refresh
  end

  def dispose
    @button.dispose
    @contents.dispose
    super
  end

  def selected=(val)
    oldsel = @selected
    @selected = val
    refresh if oldsel!=val
  end

  def refresh
    self.bitmap.clear
    rect = Rect.new(0,0,@button.width,@button.height/2)
    rect.y = @button.height/2 if @selected
    self.bitmap.blt(0,0,@button.bitmap,rect)
    textpos = [
       [@name,self.bitmap.width/2,10,2,Color.new(248,248,248),Color.new(40,40,40)],
    ]
    pbDrawTextPositions(self.bitmap,textpos)
    imagepos = [
       [sprintf("Graphics/Pictures/Pokegear/icon_"+@image),18,10,0,0,-1,-1],
    ]
    pbDrawImagePositions(self.bitmap,imagepos)
  end
end



class PokemonPokegear_Scene
  def pbUpdate
    for i in [email protected]
      @sprites["button#{i}"].selected = (i==@index)
    end
    pbUpdateSpriteHash(@sprites)
  end

  def pbStartScene(commands)
    @commands = commands
    @index = 0
    @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
    @viewport.z = 99999
    @sprites = {}
    @sprites["background"] = IconSprite.new(0,0,@viewport)
    if $Trainer.isFemale? && pbResolveBitmap(sprintf("Graphics/Pictures/Pokegear/bg_f"))
      @sprites["background"].setBitmap("Graphics/Pictures/Pokegear/bg_f")
    else
      @sprites["background"].setBitmap("Graphics/Pictures/Pokegear/bg")
    end
    for i in [email protected]
      y = 196 - (@commands.length*24) + (i*48)
      @sprites["button#{i}"] = PokegearButton.new(@commands[i],118,y,@viewport)
    end
    pbFadeInAndShow(@sprites) { pbUpdate }
  end

  def pbScene
    ret = -1
    loop do
      Graphics.update
      Input.update
      pbUpdate
      if Input.trigger?(Input::B)
        break
      elsif Input.trigger?(Input::C)
        ret = @index
        break
      elsif Input.trigger?(Input::UP)
        @index -= 1
        @index = @commands.length-1 if @index<0
        pbPlayCursorSE if @commands.length>1
      elsif Input.trigger?(Input::DOWN)
        @index += 1
        @index = 0 if @index>[email protected]
        pbPlayCursorSE if @commands.length>1
      end
    end
    return ret
  end

  def pbEndScene
    pbFadeOutAndHide(@sprites) { pbUpdate }
    pbDisposeSpriteHash(@sprites)
    @viewport.dispose
  end
end



class PokemonPokegearScreen
  def initialize(scene)
    @scene = scene
  end

  def pbStartScreen
    commands = []
    cmdMap     = -1
    cmdPhone   = -1
    cmdJukebox = -1
    cmdBirthsigns = -1
    commands[cmdMap = commands.length]     = ["map",_INTL("Map")]
    if $PokemonGlobal.phoneNumbers && $PokemonGlobal.phoneNumbers.length>0
      commands[cmdPhone = commands.length] = ["phone",_INTL("Phone")]
    end
    commands[cmdJukebox = commands.length] = ["jukebox",_INTL("Jukebox")]
    commands[cmdBirthsigns = commands.length] = ["birthsigns",_INTL("Birthsigns")]
    @scene.pbStartScene(commands)
    loop do
      cmd = @scene.pbScene
      if cmd<0
        pbPlayCancelSE
        break
      elsif cmdMap>=0 && cmd==cmdMap
        pbPlayDecisionSE
        pbShowMap(-1,false)
      elsif cmdPhone>=0 && cmd==cmdPhone
        pbPlayDecisionSE
        pbFadeOutIn(99999){
          PokemonPhoneScene.new.start
        }
      elsif cmdJukebox>=0 && cmd==cmdJukebox
        pbPlayDecisionSE
        pbFadeOutIn(99999){
          scene = PokemonJukebox_Scene.new
          screen = PokemonJukeboxScreen.new(scene)
          screen.pbStartScreen
        }
      elsif cmdBirthsigns>=0 && cmd==cmdBirthsigns
        pbPlayDecisionSE
        pbFadeOutIn(99999){
          $scene = BirthsignJournalScene.new
        }        
      end
    end
    @scene.pbEndScene
  end
end

Don't worry, I've got you covered. Im posting an update in a few that fixes the journal so that it can open via the Pokegear, as well as various other things.
 
Last edited:
1,401
Posts
10
Years
  • Age 35
  • Seen today
Minor Update 12/13/17: Final Revisions for v17
I've been working on ironing out a few things for my v17 compatibility update. I know it's probably annoying to have to re-install everything each time, but I promise this is my final update as far as Essentials v17 goes. After this, the project should be completely where I want it to be at the present time, and everything should work as intended. It's always possible I may have overlooked things, of course, so let me know if there's any issues that come up. Otherwise, it should be good to go.


What's New:
  • Sign Conversion
    I've added a new Event in the Birthsign Events add-on script. Along with Birthstone and Birthpath events, there is now a third type of event called a Sign Conversion event. You can use this type of event to convert a Pokemon's birthsign from one to another. To use this event, the Pokemon must already have a birthsign (you can already use Birthstone events to grant birthsigns if they don't have one). If the chosen Pokemon has a birthsign, then it will be converted to whatever sign corresponds to the control switch you placed in the event.

    Examples:
    Spoiler:


    Setting Up:
    Spoiler:

  • Zodiac Powers in the Birthsign Journal
    The Birthsign Journal has been updated to display information regarding that month's Zodiac Power. This includes a description of the power's effect in battle, the targets that the power affects, and the name and graphic of the required hold item to activate the power. This information is toggled on and off by pressing the Z key while viewing a birthsign page. Now the player won't have to memorize the different combat effects for zodiac powers, as all the information can be found in the Journal.

    Examples:
    Spoiler:

    Other Changes:
    • Partner Signs in the Journal are now highlighted in blue, instead of yellow. It just looks a little better this way.

    • There are now icons in the Journal to indicate the functions of the X and Z keys. X returns to the main menu, and Z opens up Zodiac Power information.



Updates:
  • Pokegear Access for the Birthsigns Journal
    The Journal may now once again be accessed through the Pokegear. To do this, make sure the icon_birthsigns graphic is in your Pictures/Pokegear folder. If so, the Journal should show up automatically. This icon is found in the same link as the Birthsign graphics folder.

    • Note that calling for the Journal in a script is now done with scene = BirthsignJournalScene.new (no longer has a $ sign in front).

  • Elite Battle System Compatibility
    The Zodiac Power compatibility script for Luka S.J.'s Elite Battle System has been updated and should no longer cause errors. You may download it HERE. Install it under the EliteBattle_3 script.

  • Improvements to Birthsign Skills in the Menu
    My v17 update made it so birthsign skills used from the party menu are now colored purple to distinguish them from regular field moves and HM's. I've gone a bit further with this idea, and now I've made it so if a skill is unusable at the present time, then the skill will instead be greyed out. For example, if a Pokemon has the "Rebirth" skill (revives the user) given by 'The Phoenix', then the skill will be colored purple when the Pokemon is fainted, to indicate that the skill is presently usable. However, once the Pokemon is no longer fainted, the skill will become greyed out, since it doesn't currently have a use.

    Examples:
    Spoiler:


    The majority of birthsign skills now follow this rule. For example, the "Escape" skill to flee dungeons will now be greyed out if the player is already outside, and the "Ability Swap" skill will be greyed out if the user doesn't have any other abilities to swap to.

  • Skill Menu Flourishes
    I've now also made it so that the birthsign ritual animation (a reskinned version of the field move animation) will play out with most Birthsign skills when one is used. This is to help make the mechanic feel more fleshed out and more visually interesting. I've also spruced up some of the text, pacing, and sound effects of each skill, to make it feel more polished overall.



Bug Fixes:
  • 'The Martyr' & 'The Cleric' - Skill Effects
    Fixed a text bug for both of these signs, as well as an unintended bug that could cause the user to faint if they become low on HP while using these skills.

  • 'The Aristocrat' - Birthsign Effect
    Fixed a bug that would crash the game after a trainer battle.

  • 'The Ancestor' - Birthsign Effect
    If both parents have this sign, it should now have a 50/50 chance of passing down either parent's EV spread to the offspring, as it was intended.

  • 'The Thief' - Zodiac Power
    The effect of this power has been fixed. Previously, stolen items would not be retained after battle, and the user's Zodiac Gem would not be consumed, even if the Power failed in battle. The gem is now properly consumed, and stolen items are retained.


Installation
Birthsigns Graphics Folder
Pokemon Birthsigns
Birthsigns Journal
Birthsign Events
Zodiac Powers

If using Luka's Elite Battle System:
EBS Compatibility



Everything above has already been updated in the main post. Please re-install if necessary.
~
 
Last edited:
423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
hiya me again ive added the z-moves released from Here and works fine on its own but when added with zodiacmoves it causes the following error
Spoiler:


any advice on how to resolve would be great thank you
 
Last edited:
1,401
Posts
10
Years
  • Age 35
  • Seen today
hiya me again ive added the z-moves released from Here and works fine on its own but when added with zodiacmoves it causes the following error
Spoiler:


any advice on how to resolve would be great thank you

I have no idea. Installing that replaces the entire Essentials script. There's no way to tell what it changed without going over everything line by line.
 
2
Posts
9
Years
Hi! First of all congratulations for this amazing script system, Lucidious89, I really love it and I'm trying to use it on my fangame because I think that combines perfectly with it.

Now, I have a little question to you. It could be possible (in an easy way, I don't want that you make a heavy script for this silly question) to decide in-game if we want the Birthsign set 1 or the Birthsign set 2? I was trying to modify the script putting an "if/else" on the "BIRTHSIGN_SET_2 = true" with a "$game_switches" condition, but it doesn't work.

Thanks again (and sorry if there are spelling mistakes, I'm spanish and I have my english a little forgotten) I hope you can solve my doubt.
 
1,401
Posts
10
Years
  • Age 35
  • Seen today
Hi! First of all congratulations for this amazing script system, Lucidious89, I really love it and I'm trying to use it on my fangame because I think that combines perfectly with it.

Now, I have a little question to you. It could be possible (in an easy way, I don't want that you make a heavy script for this silly question) to decide in-game if we want the Birthsign set 1 or the Birthsign set 2? I was trying to modify the script putting an "if/else" on the "BIRTHSIGN_SET_2 = true" with a "$game_switches" condition, but it doesn't work.

Thanks again (and sorry if there are spelling mistakes, I'm spanish and I have my english a little forgotten) I hope you can solve my doubt.
I don't believe there is. However, I'm currently working on a future update that will expand your options when it comes to assigning birthsigns; allowing you to manually set any of the 24 signs regardless of which "set" you're using, and also custom build your own 12 month zodiac. Hopefully that will be sufficient.
 
2
Posts
9
Years
I don't believe there is. However, I'm currently working on a future update that will expand your options when it comes to assigning birthsigns; allowing you to manually set any of the 24 signs regardless of which "set" you're using, and also custom build your own 12 month zodiac. Hopefully that will be sufficient.

Thanks for answer so fast! Yes, that would be perfect. Regards!
 
423
Posts
13
Years
  • Age 37
  • Seen Aug 31, 2023
is it possible for evolution be affected by Birthsign and can switches be activated via birthsigns?
 
Back
Top