Thread: [Essentials Script] Pokemon Birthsigns
View Single Post
  #1    
Old May 7th, 2015 (10:58 AM). Edited January 24th, 2018 by Lucidious89.
Lucidious89 Lucidious89 is offline
     
    Join Date: Apr 2014
    Gender: Male
    Posts: 193
    Overview
    These scripts add a Birthsign system to Essentials; giving your Pokemon certain bonuses right from the start that vary depending on the particular sign they have. Similar to other RPG's such as The Elder Scrolls games; where different Birthsigns grant your character a variety of perks and bonuses to start off with. The difference with this is that these Birthsigns are automatically applied at the moment of the Pokemon's birth - when it hatches from an Egg. So depending on the time of year that you hatch your Pokemon, they will gain different starting bonuses than others! In addition to this, there are other cool additions that builds upon the concept of the Birthsign mechanic such as birthdays, lore, and features that will let you hide secrets throughout the world tied to specific constellations.

    This project comes with 30 unique Birthsigns, each with their own effects. You may create your own 12-month zodiac by picking 12 signs that you like best, or feel free to use the default set of 12.

    UPDATE As of 12/8/17:
    Each month now has a corresponding Rival month, along with two Partner months. When breeding, you'll receive extra bonuses for your eggs if the parents' birthsigns are compatible. However, Rival matches will result in poorer offspring. These bonuses include less random IV inheritance, shortened egg steps to hatching, and random bonus items that offspring may be holding upon hatching.

    UPDATE As of 1/7/18:
    Three smaller scripts of mine - IV Star Ratings, Egg Group Types, and HGSS Shiny Leaf have been rolled into this project. These are inactive by default, but you may turn them on by setting their appropriate toggles to "true" at the top of the core script, if you'd like to use one or all of them. In addition, this project is now also compatible with the Z-Move Add On script in the form of a toggle as well.

    -Pokemon Birthsigns is built to support Pokemon Essentials v17 (all scripts are now compatible).
    -Support for Kleinstudio's Essentials Black & White has now been added. Install the designated scripts for compatibility. To preview what this version of the script would look like, check my initial post about it here. Keep in mind Kleinstudio is based off of Essentials 15, so many of the newest features added to this project will not be available in that version.

    *Note: It is recommended that you start a new game after installing. Pokemon that existed prior to installing may be randomly assigned a birthsign unintentionally.


    The Birthsigns
    Spoiler:
    1. 'The Apprentice'

      Constellation: Pikachu
      Type: Passive
      Effect: When born under this sign, the Pokemon gains twice as many EV's from battle. This may stack with similar effects.

    2. 'The Companion'

      Constellation: Luvdisc
      Type: Battle Lead
      Effect: When born under this sign, the Pokemon is twice as happy than usual. This joy is contagious, and even wild Pokemon encountered will have increased happiness when this Pokemon is leading.

    3. 'The Beacon'

      Constellation: Ampharos
      Type: Field Skill
      Effect: When born under this sign, the Pokemon hatches with the ability to use the 'Starlight' skill on the field; allowing it to lighten up dark areas.

    4. 'The Savage'

      Constellation: Luxray
      Type: Passive
      Effect: When born under this sign, the Pokemon has maximum IV's in Attack, Sp.Atk, and Speed; however the HP IV is 0.

    5. 'The Prodigy'

      Constellation: Eevee
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Ability Swap' skill from the menu; allowing it to swap out its current ability for one of its other abilities.

    6. 'The Martyr'

      Constellation: Chansey
      Type: Party Skill
      Effect: When born under this sign, the Pokemon hatches with the ability to use the 'Rescue' skill while on the field; allowing it to sacrifice its own HP to heal an ally.

    7. 'The Maiden'

      Constellation: Gardevoir
      Type: Passive
      Effect: When born under this sign, the Pokemon has very high odds of being female. The Pokemon also starts off with 150 EV's in Sp.Atk.

    8. 'The Gladiator'

      Constellation: Gallade
      Type: Passive
      Effect: When born under this sign, the Pokemon has very high odds of being male. The Pokemon also starts off with 150 EV's in Attack.

    9. 'The Voyager'

      Constellation: Beheeyem
      Type: Field Skill
      Effect: When born under this sign, the Pokemon hatches with the ability to use the 'Navigate' skill while on the field; allowing it to lead its trainer to the previously used Pokemon Center.

    10. 'The Thief'

      Constellation: Sneasel
      Type: Battle Lead
      Effect: When born under this sign, the Pokemon will sometimes encounter wild Pokemon holding valuable treasures ripe for the stealing. This includes things such as Pearls, Nuggets, or even ancient Relics.

    11. 'The Glutton'

      Constellation: Munchlax
      Type: Passive
      Effect: When born under this sign, the Pokemon hatches with maximum IV's in HP, Defense, and Sp.Def; however the Speed IV is 0.

    12. 'The Wishmaker'

      Constellation: Jirachi
      Type: Passive
      Effect: When born under this sign, the Pokemon has much higher odds of being shiny.

    13. 'The Phoenix'

      Constellation: Ho-oh
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Rebirth' skill from the menu; allowing the Pokemon to revive themselves from the KO status while on the field.

    14. 'The Scholar'

      Constellation: Slowking
      Type: Passive
      Effect: When born under this sign, the Pokemon gains an additional 20% bonus to experience gained from battles. This stacks with similar effects.

    15. 'The Fugitive'

      Constellation: Klefki
      Type: Field Skill
      Effect: When born under this sign, the Pokemon has access to the 'Escape' skill from the menu; allowing the Pokemon to flee to the exit of any dungeon with its trainer.

    16. 'The Aristocrat'

      Constellation: Meowth
      Type: Battle Lead
      Effect: When born under this sign, the Pokemon demands 20% more prize money from trainer battles when leading the party. The Pokemon also has a good chance at finding spare change after wild battles, too. Also doubles money earned with Pay Day.

    17. 'The Cleric'

      Constellation: Audino
      Type: Party Skill
      Effect: When born under this sign, the Pokemon has access to the 'Cure' skill from the menu; allowing the Pokemon to heal the party of any harmful status conditions while on the field, at the cost of its HP.

    18. 'The Monk'

      Constellation: Medicham
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Trance' skill from the menu; allowing the Pokemon to enter a meditative state and recall any past moves that have long since been forgotten. No Heart Scales are required.

    19. 'The Ancestor'

      Month: July
      Constellation: Sigilyph
      Type: Passive
      Effect: When born under this sign, any Eggs yielded by the Pokemon will inherit the user's EV spread.

    20. 'The Specialist'

      Constellation: Smeargle
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Re-roll' skill from the menu; allowing the Pokemon to reshuffle its IV's to align with a particular Hidden Power type. The new IV's will be randomized, but will always yield combinations that correspond with a chosen type.

      Note that Hidden Power spreads all assume that there are only 17 types to choose from (Including Fairy, but not including Normal or sub-types like ??? and Shadow), so they may not be accurate if you have extra custom types in your game.

    21. 'The Assassin'

      Constellation: Darkrai
      Type: Battle Lead
      Effect: When born under this sign, the Pokemon has a high chance of seeking out vulnerable wild Pokemon who are asleep when encountered. The user needs to be leading the party for this effect to work. The odds of finding sleeping Pokemon are lower during the day, but higher during nighttime.

    22. 'The Parent'

      Constellation: Kangaskahn
      Type: Party Skill
      Effect: When born under this sign, the Pokemon has access to the 'Incubate' skill from the menu; allowing the Pokemon to nurture any Eggs in the party that are close to hatching, and bring down their remaining step count to 1. The Egg must have less than 1,000 steps left for this to work.

    23. 'The Hunter'

      Constellation: Houndoom
      Type: Battle Lead
      Effect: When born under this sign, the Pokemon increases the capture rate of wild Pokemon by 20% when leading the party. This stacks with other effects.

    24. 'The Eternal'

      Constellation: Mew
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Reincarnate' skill from the menu; allowing the Pokemon to be reborn with a new birthsign. Reincarnated Pokemon begin their life anew, as if they have just been born. Level, EV's, Happiness, Pokerus, OT, Birthdate and Birthsign are all reset; and any effects of the new birthsign will be applied. IV's, Nature, Ability, Gender, Moves, Shinyness and Evolutionary Stages are NOT reset, unless a newly inherited birthsign alters them.

      Once Reincarnated, you are given an opportunity to rename the reborn Pokemon. Also, the obtain method text in the Pokemon's Memo Page in the Summary will now read "From a previous life".The Pokemon is also given a "Second Step Ribbon" to commemorate its new life.

    25. 'The Bard'

      Constellation: Kricketune
      Type: Field Skill
      Effect: When born under this sign, the Pokemon has access to the 'Harmonize' skill from the menu; allowing it to lure wild Pokemon with song.

    26. 'The Empath'

      Constellation: Mesprit
      Type: Party Skill
      Effect: When born under this sign, the Pokemon has access to the 'Bond' skill from the menu; allowing it to select another party member to copy their nature.

    27. 'The Mirror'

      Constellation: Bronzor
      Type: Battle Lead
      Effect: When born under this sign, the Pokemon may get into wild encounters with Pokemon that share similar IV's.

    28. 'The Tactician'

      Constellation: Bisharp
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Gambit' skill from the menu; allowing it to reallocate its EV points in a different arrangement. The Pokemon must already have 510 EV's to activate this skill.

    29. 'The Fool'

      Constellation: Spinda
      Type: Party Skill
      Effect: When born under this sign, the Pokemon has access to the 'Lunacy' skill from the menu; allowing it to reduce its own level by 3 in order to randomly raise the level of a selected party member by 1-5 levels. The user must be at least level 5 to activate this effect. Doesn't work on targets that are higher level than the user.

    30. 'The Alchemist'

      Constellation: Shuckle
      Type: Self Skill
      Effect: When born under this sign, the Pokemon has access to the 'Transmute' skill from the menu; allowing it to morph its held item into a different one. Stardust is used as a catalyst in the transmutation process, and 1 will be consumed from your inventory with each use. This skill cannot be used if you don't have any Stardust in your inventory. The type of item you get through transmutation depends on the initial item being held.


    Installation
    Spoiler:
    Pokemon Birthsigns
    The core birthsigns script that will add the base mechanic to your game. This is the only installation that is required, but there are several add-ons and optional additions that can further enhance this script found below.
    Spoiler:


    **Pokemon Birthsigns is a plug-n-play project, but keep in mind that to do this it means several areas such as the Summary, Storage screen, and other areas of the Essentials script will be overwritten by the changes in the Birthsign script. So if you have any personalized changes to those areas in your own project, you must apply those changes to my Birthsign script as well if you don't want them to be overwritten.**

    1) First, paste the following folder within the Pictures folder under Graphics. This Birthsigns folder contains by default all the graphics required for everything I add to this project, regardless of what version or which scripts you're using. You may also install the pokegear icon separately in your Pictures folder if you want an icon for the Birthsigns Journal to be displayed in your Pokegear.

    2) Then to install the script, create a new section above "Main", and paste all of the code in one of the below links in this new section. Install the first link for default Essentials (v17), or the second for Kleinstudio's Essentials BW (v3).


    **Please note that the Kleinstudio version of this script will not be updated regularly, and thus will not match up with many of the current effects, mechanics, and features present in the latest version of this project.


    Add-on Scripts
    Each of these implement additional features and mechanics to the core birthsign script that all play off of the birthsign mechanics. Highly recommended.
    Spoiler:
    Birthsigns Journal
    Spoiler:


    This script adds a Journal feature to your game which displays relevant information of each birthsign. This includes lore, effects of sign bonuses, each sign's Partner/Rival signs (highlighted in blue/red, respectively), and much more. This can be accessed through a script, event, or through the Pokegear by default. Use scene=BirthsignJournalScene.new to access this otherwise.

    Here is a link to my initial post about this add-on for some more detail:
    Birthsign Journal Post

    1) To install the script, Insert a new section above Main, but below the Pokemon Birthsigns script you just installed previously. Paste the following code in the new section. Choose the first link for default Essentials (v17), or choose the second link for Essentials BW (v3).


    **Please note that the Kleinstudio version of this script will not be updated regularly, and thus will not match up with many of the current effects, mechanics, and features present in the latest version of this project.


    Birthsign Events
    Spoiler:



    This provides new scripts that'll allow you to easily set up three useful Events utilizing Pokemon Birthsigns. This'll give you a way to utilize the Birthsign mechanic as not just a way to enhance your Pokemon, but as a tool that can be utilized to set up events throughout the actual adventure.

    Refer to this linked post for more information about what this script is capable of, and how to set up these events.:
    Birthsign Events Post

    1) To install, use Insert to create a new section below your Pokemon Birthsigns script, and paste the following code in this new section:


    Zodiac Powers (and EBS Compatibility)
    Spoiler:



    This is an entirely new battle mechanic built to support Pokemon Birthsigns. This adds new items known as "Zodiac Gems" to your game that correspond to each of the birthsigns. When your Pokemon with a matching birthsign holds one of these during battle, you can activate its Zodiac Power to unleash a variety of effects. Refer to the post here for an in-depth walkthrough of the mechanic:
    Zodiac Powers Post

    1) To install, use Insert to create a new section below your Pokemon Birthsigns script, and paste the following code in this new section:

    2) Next, you'll need to add the Zodiac Gem graphics into your Pictures/Icons folder. I already numbered them so that you may simply drop them into the folder of a fresh copy of Essentials. If your project already has items with these numbers, please re-number the Zodiac Gems to match your project.

    3) Now you'll need to add the Zodiac Gems to your Items PBS file. Once again, I already numbered them so you can simply copy/paste them into a fresh installation of Essentials. Please re-number them to match your project if you're already using these numbers.

    Items PBS additions:
    Spoiler:
    Code:
    526,JANZODICA,Janzodica,,1,200,"A gem bathed in January's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    527,FEBZODICA,Febzodica,,1,200,"A gem bathed in February's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    528,MARZODICA,Marzodica,,1,200,"A gem bathed in March's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    529,APRIZODICA,Aprizodica,,1,200,"A gem bathed April's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    530,MAYZODICA,Mayzodica,,1,200,"A gem bathed in May's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    531,JUNZODICA,Junzodica,,1,200,"A gem bathed in June's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    532,JULZODICA,Julzodica,,1,200,"A gem bathed in July's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    533,AUGZODICA,Augzodica,,1,200,"A gem bathed in August's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    534,SEPZODICA,Sepzodica,,1,200,"A gem bathed in September's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    535,OCTZODICA,Octzodica,,1,200,"A gem bathed in October's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    536,NOVIZODICA,Novizodica,,1,200,"A gem bathed in November's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,
    537,DECIZODICA,Decizodica,,1,200,"A gem bathed in December's starlight. A Pokémon with a matching birthsign may use its Zodiac Power.",0,0,15,


    If you're using Luka S.J.'s Elite Battle System, you must also install this compatibility script to allow this add-on to work. Insert a new section below EliteBattle_3, and paste the code from this link in that new section. Name it EliteBattle_ZodiacCompatibility, or whatever you want. ONLY install this if you're using Luka's EliteBattle System!


    Optional Additions
    These are minor additions that aren't essential to anything, but help supplement the birthsign mechanics in useful ways. None of these are required for the base scripts or add-on scripts to function.
    Spoiler:
    PBRibbons Update
    Spoiler:



    This replaces the entire PBRibbons script. This is necessary only to add the "Second Step Ribbon" to your game, which is tied into the effect of 'The Eternal' Birthsign. The Second Step Ribbon is placed onto a Pokemon that has reincarnated itself with that birthsign's effect. It isn't required for anything but that, and the sign will still function perfectly without the ribbon if you don't choose to include it.

    1) First, you need to replace the ribbons graphic in your Graphics/Pictures folder with this:

    2) Then, replace your PBRibbons script with the updated code found here:


    Debug_Pokemon Update
    Spoiler:

    This is necessary only if you'd like access to Debug features that allow you to manually change a Pokemon's birthsign. This is useful for testing purposes, but has no actual use for potential players. Replace your Debug_Pokemon script with this, if you choose to include it:



    PBEggGroups Update
    Spoiler:
    This is necessary only if you want to fully implement my Legendary Breeding mechanic with Pokemon Birthsigns. This adds 8 new Egg Groups to the game that are required for Legendary Breeding. However, nothing will actually change in your game until you make the appropriate changes to the pokemon PBS file. Consult the thread for more details on this.

    Replace your PBEggGroups script with this:



    Features for Other Scripts
    Spoiler:
    Adds some functionality for FL's Unreal Time script, and the Following Pokemon script updated by mej71. You may find my original post detailing this functionality here.

    Unreal Time System
    Spoiler:
    FL's script changes the time mechanic in Essentials so that it behaves more like the time system found in Ocarina of Time, or Harvest Moon. However, with some changes you can make it so that time still flows normally, except you have the ability to jump ahead or backwards to whatever month you desire.

    My addition to his script adds a feature that will allow you to alter the time so that you can change the current month. This is very useful as it allows you to ensure your eggs will hatch with a particular birthsign. You may call this script in an event with "pbSetMonth", which will open up a command list with all 12 months to choose from. Picking a month will set the date so that it is now the first day of that selected month (the time of day will remain the same). There is also a 13th option, "Reset", which will revert the time back to the appropriate real-world time.

    You may also use "pbResetDay" in an Event to reset the current day to the first day of the current month. Also, "pbTimeCheck" will return the current date and time, allowing you to easily check the time to ensure that you've properly set the desired time.


    Installation
    Spoiler:
    1) First off, you'll obviously need to have this script installed first. You may find it here:
    Unreal Time System
    Make sure to credit to FL if using this script.


    2) Once installed, you'll have to make several adjustments to his script. First, use CTRL+F to locate every instance of
    Code:
    NTN_ENABLED
    and change it to
    Code:
    $ntnEnabled
    This will allow the "Reset" function to work, allowing you to revert the time back to normal whenever you desire.


    3) Now find the line:
    Code:
    NTS_TIMEPROPORTION=60
    And change it to:
    Code:
    NTS_TIMEPROPORTION=1
    This will make it so that time moves forward at the normal rate. This isnt required if you prefer time to advance at a quicker rate (at which case set this to whatever number you want. Read FL's notes for more details).


    4) Next, find this line:
    Code:
    NTN_EXTRADAYS=-1
    And change the "-1" into whatever variable number you have available to use. I used 97.


    5) Next, find this section:
    Code:
    # Initial values
    NTN_INITIALYEAR=2000 # Can ONLY holds around range 1970-2038
    NTN_INITIALMONTH=1
    NTN_INITIALDAY=1
    NTN_INITIALHOUR=12
    NTN_INITIALMINUTE=0
    And replace it with this:
    Code:
    # Initial values
    NTN_INITIALYEAR=pbGetTimeNow.year # Can ONLY holds around range 1970-2038
    NTN_INITIALMONTH=pbGetTimeNow.mon
    NTN_INITIALDAY=pbGetTimeNow.day
    NTN_INITIALHOUR=pbGetTimeNow.hour
    NTN_INITIALMINUTE=pbGetTimeNow.min
    This will make it so that the base time that the Unreal Time system uses is whatever the current date and time is, instead of the default FL uses (January 1st, 2000).


    6) Finally, paste all of the following somewhere in your project. Right below the Unreal Time script is a good spot.
    Code:
    #===============================================================================
    # Month Reset
    # Allows you to reset the current month to a different one.
    # Requires FL's Unreal Time System script, found here:
    #===============================================================================
    # http://www.pokecommunity.com/showthread.php?p=7283916#7283916
    #===============================================================================
    # Use pbTimeCheck in an event to check the current date and time.
    # Use pbResetDay in an event to change the day to the first of the month.
    # Use pbSetMonth in an event to select a new month to set the time to.
    
    # Use so you may check the current date and time.
    # Useful way to check if the time has been properly set.
    def pbTimeCheck
      curmon=pbGetAbbrevMonthName(pbGetTimeNow.mon)
      curday=pbGetTimeNow.day
      curyear=pbGetTimeNow.year
      curhour=pbGetTimeNow.hour
      curmin=pbGetTimeNow.min
      Kernel.pbMessage(_INTL("Date: {1} {2}, {3}\nTime: {4}:{5}",
      curmon,curday,curyear,curhour,curmin))
    end
    
    # Used to reset the current day to the first of the month.
    # Months may be off by a few days otherwise.
    def pbResetDay
      curDay = pbGetTimeNow.day
      timeDifference = (1-curDay)
      setToFirst = timeDifference
      $game_variables[NTN_EXTRADAYS]+=setToFirst
      Kernel.pbMessage(_INTL("The current day has been reset to the first of the month."))
    end
    
    # Allows you to choose the desired month to switch to. The day is reset to
    # the first day of the newly selected month.
    # Use the "Reset" option at the bottom of the list to revert the month and
    # day to its natural time.
    def pbSetMonth
      curMonth = pbGetTimeNow.mon*30
      curDay = pbGetTimeNow.day
      timeNow = curMonth+curDay
      command=0
      loop do
        command=Kernel.pbShowCommands(nil,[
        _INTL("January"),
        _INTL("February"),
        _INTL("March"),
        _INTL("April"),
        _INTL("May"),
        _INTL("June"),
        _INTL("July"),
        _INTL("August"),
        _INTL("September"),
        _INTL("October"),
        _INTL("November"),
        _INTL("December"),
        _INTL("Reset"),
        _INTL("Cancel")
        ],-1)
        case command
        ### Cancel ###
        when -1, 13
          Kernel.pbMessage(_INTL("The current date was not changed."))
          break
        ### Jan ###
        when 0
          month = 1
          timeWished = month*30
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to January."))
          pbResetDay
          break
        ### Feb ###
        when 1
          month = 2
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to February."))
          pbResetDay
          break
        ### Mar ###
        when 2
          month = 3
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to March."))
          pbResetDay
          break
        ### Apr ###
        when 3
          month = 4
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to April."))
          pbResetDay
          break
        ### May ###
        when 4
          month = 5
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to May."))
          pbResetDay
          break
        ### Jun ###
        when 5
          month = 6
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to June."))
          pbResetDay
          break
        ### Jul ###
        when 6
          month = 7
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to July."))
          pbResetDay
          break
        ### Aug ###
        when 7
          month = 8
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to August."))
          pbResetDay
          break
        ### Sep ###
        when 8
          month = 9
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to September."))
          pbResetDay
          break
        ### Oct ###
        when 9
          month = 10
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to October."))
          pbResetDay
          break
        ### Nov ###
        when 10
          month = 11
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to November."))
          pbResetDay
          break
        ### Dec ###
        when 11
          month = 12
          timeWished = month*31
          timeDifference = timeWished-timeNow
          monthSet = timeDifference
          $game_variables[NTN_EXTRADAYS]+=monthSet
          Kernel.pbMessage(_INTL("The month has been set to December."))
          pbResetDay
          break
        ### Reset ###
        when 12
          $game_variables[NTN_EXTRADAYS] = 0
          $PokemonGlobal.newFrameCount=0
          Kernel.pbMessage(_INTL("The time has been reset to the current date."))
          break
        end
      end
    end
    ~

    *Note: You shouldn't bother FL with questions or help with this addition. I made this add-on to his script on my own and he isn't responsible for it if it's causing issues for you. I've tested it and it seems to work perfectly, so there shouldn't be an issue if you follow the instructions. And please remember to give credit to him for his script.



    Following Pokemon
    Spoiler:
    This script, updated by mej71, adds the follower mechanic originally seen in HGSS. Talking to a follower will display various messages that change based on certain factors.

    My addition to this project adds a birthday emote and various birthday messages to the Following Pokemon script, which will be displayed on your hatched followers every year during their birthday.


    Installation
    Spoiler:
    1) First off, you'll obviously need to have this script installed first. You may find it here:
    Following Pokemon
    Make sure to credit the appropriate people if using this script.


    2) Now at the top of the script, add my bolded line to this section:
    Code:
    Following_Activated_Switch = 126      # Switch should be reserved
    Toggle_Following_Switch = 103         # Switch should be reserved
    Current_Following_Variable = 36       # Variable should be reserved
    CommonEvent = 4                       # Common Event space needed
    ItemWalk=26                           # Variable should be reserved
    Walking_Time_Variable = 27            # Variable should be reserved
    Walking_Item_Variable = 28            # Variable should be reserved
    Animation_Come_Out = 93              
    Animation_Come_In = 94
    Emo_Happy = 95
    Emo_Normal = 96
    Emo_Hate = 97
    Emo_Poison= 98
    Emo_sing= 99
    Emo_love= 100
    Emo_Cake= 92

    3) Next, search the Following Pokemon script for this heading:
    Code:
    #===============================================================================
    # * Random Messages if none of the above apply
    #===============================================================================
    And paste the following new code above this heading:
    (Note that mej71 has already updated his script to include this, so you many not need to add this)
    Code:
    #===============================================================================
    # * Pokemon Messages when birthday
    #===============================================================================          
              elsif e.isBirthday?
                $scene.spriteset.addUserAnimation(Emo_Cake, pos_x, pos_y-2)
                pbWait(50)
                messages=rand(10)
                if messages==0
                  Kernel.pbMessage(_INTL("{1} seems to be reminiscing on all it has learned in the last year.",e.name,$Trainer.name))
                elsif messages==1
                  Kernel.pbMessage(_INTL("{1} seems glad to be spending its birthday with {2}.",e.name,$Trainer.name))
                elsif messages==2
                  Kernel.pbMessage(_INTL("{1} is having the best birthday ever!",e.name,$Trainer.name))
                elsif messages==3
                  Kernel.pbMessage(_INTL("{1} can't believe its been a whole year already!",e.name,$Trainer.name))
                elsif messages==4
                  Kernel.pbMessage(_INTL("{1} seems to be sniffing around for presents...",e.name,$Trainer.name))
                elsif messages==5
                  Kernel.pbMessage(_INTL("{1} seems a bit out of breath...\nYou're getting old!",e.name,$Trainer.name))
                elsif messages==6
                  Kernel.pbMessage(_INTL("{1} looks ready to party!",e.name,$Trainer.name))
                elsif messages==7
                  Kernel.pbMessage(_INTL("You wish {1} a happy birthday.\nHappy birthday, {1}!",e.name,$Trainer.name))
                elsif messages==8
                  Kernel.pbMessage(_INTL("{1} seems to be looking forward to another year with {2}.",e.name,$Trainer.name))
                elsif messages==9
                  Kernel.pbMessage(_INTL("{1} wants to eat some cake!",e.name,$Trainer.name))
                end

    4) Now go into your Graphics/Animations folder, and add this graphic. It'll ask you to replace the existing graphic in that folder, and click yes.
    New emo2 graphic


    5) Now make sure to save your work and exit RPGMaker before moving onto the next step.


    6) Finally, go into your Data folder and add this file. It'll ask you to replace the existing file in that folder, and click yes.
    New Animations file

    *Note: You shouldn't bother mej71 with questions or help with this addition. I made this add-on to his script on my own and he isn't responsible for it if it's causing issues for you. I've tested it and it seems to work perfectly, so there shouldn't be an issue if you follow the instructions. And please remember to give credit to him and the rest of the contributors to the script.





    Useful Things to Know
    Spoiler:

    Toggles
    • ZODIACSET
      This controls which 12-month zodiac will be active in your game. Set this to a number that will give you the desired zodiac set.
      0 = No zodiac.
      1 = Birthsigns Set 1 (signs 1-12)
      2 = Birthsigns Set 2 (signs 13-24)
      3 = Random Zodiac
      4 = Custom Zodiac

    • WILDBIRTHSIGNS
      This controls whether wild Pokemon will spawn with birthsigns. The number you set this toggle will give different results.
      0 = Wild Pokemon spawn with no birthsigns.
      1 = Wild Pokemon spawn with whatever the current month's sign is, based on your zodiac.
      2 = Wild Pokemon spawn with a random sign out of your 12 month zodiac.
      3 = Wild Pokemon spawn with a random sign out of all 30 birthsign options.

    • SHOW_IV_STARS
      This toggles whether or not you want my IV Star Ratings script to be displayed in your game. Set this to true or false.

    • SHOW_EGG_GROUPS
      This toggles whether or not you want my Summary Egg Groups script to be displayed in your game. Set this to true or false.

    • SHOW_SHINY_LEAF
      This toggles whether or not you want my HGSS Shiny Leaf Functionality script to be displayed in your game. Set this to true or false.

    • INCLUDE_ZMOVES
      This toggles compatibility with the Z-Move Add On scripts. Please set this toggle to "true" if using their scripts. Otherwise, this must be set to "false".


    Coding
    • PBBirthsigns.getName(X)
      Returns the name of a particular birthsign, where "X" is the number associated with a particular sign (where 'The Apprentice' is #1, and 'The Alchemist' is #30).

    • PBZodiacsigns.getName(X)
      Returns the name of a particular birthsign within your 12-month zodiac, where "X" is the number of the month associated with that sign (ex. 9 would get the name of September's sign).

    • pokemon.pbGetBirthsignName
      Returns the name of the Pokemon's active birthsign.

    • pokemon.setZodiacsign(X)
      Manually sets a particular sign on a Pokemon, where "X" is the month number associated with a particular sign in your zodiac.

    • pokemon.setRandomZodiac
      Sets a completely random birthsign on a Pokemon out of your 12-month zodiac.

    • pokemon.setBirthsign(X)
      Manually sets a particular sign on a Pokemon, where "X" is the number associated with a particular sign (where 'The Apprentice' is #1, and 'The Alchemist' is #30).

    • pokemon.setRandomSign
      Sets a completely random birthsign on a Pokemon out of the 30 possible options.

    • pokemon.canHaveSign?
      Returns true if the Pokemon in question is capable of having a birthsign.

    • pokemon.hasXxxBirthsign?
      Returns true if the Pokemon in question has a particular zodiac sign, where "Xxx" is the abbreviated month, such as Jan or Dec.

    • pokemon.hasPartnerSign?
      pokemon.hasRivalSign?
      Returns true if the Pokemon in question has a corresponding Partner or Rival sign to the current month.

    • pokemon.hasCurrentSign?
      Returns true if the Pokemon in question has the current month's birthsign.

    • pokemon.hasBirthsign?
      Returns true if the Pokemon in question has any birthsign.

    • pokemon.isBirthday?
      Returns true if it's the Pokemon's birthday. Only applies to hatched Pokemon.

    • pokemon.setShinyLeaf(X)
      Sets a number of shiny leaves on a Pokemon, where "X" is the number of desired leaves (0-6). This wont be displayed unless the SHOW_SHINY_LEAF toggle is set to "true".

    • pokemon.addShinyLeaf
      Adds 1 shiny leaf to a Pokemon's total. This wont be displayed unless the SHOW_SHINY_LEAF toggle is set to "true".

    • pokemon.removeShinyLeaf
      Removes 1 shiny leaf from a Pokemon's total. This wont be displayed unless the SHOW_SHINY_LEAF toggle is set to "true".

    • pokemon.hasLeafCrown?
      Returns true if the Pokemon has a leaf crown (6 leaves).

    • pbArceusEggSpawn
      Running this script in an event allows you to trigger a unique event that allows Arceus to spawn an egg of specific legendary species based on its held item. This is a feature introduced in my Legendary Breeding script, so consult that thread for more details on its mechanics.


    Reference
    • All Partner/Rival sign month match-ups:
      Spoiler:
      1. Month: January
        Partners: May, September
        Rival: July

      2. Month: February
        Partners: June, October
        Rival: August

      3. Month: March
        Partners: July, November
        Rival: September

      4. Month: April
        Partners: August, December
        Rival: October

      5. Month: May
        Partners: September, January
        Rival: November

      6. Month: June
        Partners: October, February
        Rival: December

      7. Month: July
        Partners: November, March
        Rival: January

      8. Month: August
        Partners: December, April
        Rival: February

      9. Month: September
        Partners: January, May
        Rival: March

      10. Month: October
        Partners: February, June
        Rival: April

      11. Month: November
        Partners: March, July
        Rival: May

      12. Month: December
        Partners: April, August
        Rival: June



    For Add-on Scripts
    • scene = BirthsignsJournalScene.new
      Accesses the Birthsigns Journal (if the Birthsigns Journal Add-On is installed)

    • Setting up a birthsign event:
      Using the Birthsign Events script, you can easily set up three different types of events -
      Spoiler:
      Event Types
      • Birthstone Event:
        Grants a selected Pokemon the corresponding birthsign if they don't already have one.

      • Birthpath Event:
        Unlocks a blocked path if a selected Pokemon has the corresponding birthsign.

      • Sign Conversion Event:
        Converts a selected Pokemon's existing birthsign to the new corresponding birthsign.


      Control Switches
      The Birthsign Events script utilizes 15 different control switches (numbers 111-125). 12 for months, and 3 for the actual event types. If your project already uses these switch numbers for something else, you must re-number the Birthsign Event switches in the script itself. To avoid confusion, it's best if you name all of the switches as so:



      To set up an Event, all you need to do is turn ON the desired month switch, and the desired event type switch. Then insert the script pbBirthsignEvent. Page 2 of the event should be blank (for Birthstone and Sign Conversion events), but have the Self Switch A turned on. Birthpath events are different only in that Page 2 should have an "unlocked" event in place, for when the player meets the requirements of Page 1.

      Here's an example of a Sign Conversion event for December's birthsign:



    • Giving NPC Trainers the ability to use Zodiac Powers in battle:
      If the Zodiac Powers Add-On is installed, make the following changes -
      Spoiler:
      In the PTrainer_NPCTrainers section:
      • 1) Find this line in the script:
        Code:
        TPDEFAULTS = [0,10,0,0,0,0,0,nil,nil,0,false,nil,10,70,nil,false,0]
        And replace it with this:
        Code:
        #===============================================================================
        TPBIRTHSIGN = 17
        TPDEFAULTS = [0,10,0,0,0,0,0,nil,nil,0,false,nil,10,70,nil,false,0,0]
        #===============================================================================

      • 2) Next, find this line:
        Code:
        pokemon.ballused=poke[TPBALL]
        And paste this directly under it:
        Code:
        #=========================================================================
              pokemon.setBirthsign(poke[TPBIRTHSIGN])
              #=========================================================================

        That's it! Now, if you want to give a trainer's Pokemon a Zodiac Power, you may do so in the Trainer PBS file. Simply give the Pokemon the desired Zodiac Gem to hold, and then add the month of the birthsign as the final variable by writing the 3 letter abbreviation in caps (ex: JAN). Doing so will give the trainer's Pokemon the required birthsign to activate its item.

        Trainer PBS example:
        Code:
        #-------------------
        PICNICKER
        Susie
        1
        MEOWTH,10,OCTZODICA,,,,,,,0,,,,,,,,OCT
        #-------------------
        PICNICKER
        Susie,1
        1
        PERSIAN,32,OCTZODICA,FAKEOUT,NIGHTSLASH,HYPNOSIS,SLASH,1,,0,,ADAMANT,31,,,,,OCT
        #-------------------

      Keep in mind that NPC Trainers will always activate their Zodiac Powers on turn 1.


    • Imposing a once-per-battle rule for Zodiac Powers:
      By default, you can use Zodiac Powers an unlimited number of times in battle. This is balanced by the Zodiac Gems (which trigger the powers) being consumables. However, you can still implement a once per battle rule by simply doing this -
      Spoiler:
      Find this line in the Zodiac Power script, and remove the comment tag in front of it
      Code:
      #@zodiacPower[side][owner]=-2




    Version History
    Current: v2.6.1
    Spoiler:
    (v2.6.1) Minor Update 1/18/18: Legendary Breeding Compatibility
    (v2.6) Major Update 1/7/18: New Signs & Custom Zodiac
    (v2.5.1) Minor Update 12/13/17: Final Revisions for v17
    (v2.5) Major Update 12/8/17: Essentials 17 Compatibility & Overhauls
    (v2.1.3) Major Update 4/28/17: Zodiac Powers
    (v2.0.3) Minor Update 4/19/17: Player Signs and Birthsign updates
    (v2.0.2) Update 3/30/17: Birthsigns for Essentials BW
    (v2.0.1) Minor Update 5/4/16: Add-on Features for Other Scripts
    (v2.0) Update 5/2/16: Happy Birthday, Pokemon Birthsigns!
    (v1.5.3) Minor Update 4/18/16 : Code changes for 'The Ancestor' and 'The Specialist'
    (v1.5.2) Minor Update 1/7/16 : Compatibility fixes for Essentials v16
    (v1.5.1) Minor Update 9/28/15 : PC Modifications
    (v1.5) Update 9/24/15 : Birthsign Events
    (v1.4.1) Minor Update 9/17/15 : 'The Eternal' Update
    (v1.4) Update 9/16/15 : Plug-n-Play Birthsigns
    (v1.3) Update 9/9/15 : Manual Birthsigns, Debug Options, and Script Overhauls
    (V1.2) Update 5/21/15 : Birthsigns Journal
    (v1.1) Update 5/14/15: Birthsign Set 2
    (v1.0) Posted 5/7/15: Pokemon Birthsigns


    Known Issues
    As of version v2.6.1
    Spoiler:
    • (Zodiac Powers) Not every move/ability/zodiac power combination has been tested. There are bound to be certain things that break when stacked together. One example is using 'The Voyager' Zodiac Power (U-Turn effect) and Baton Pass on the same turn, which causes Baton Pass to break and create an awkward situation in battle. I'll fix some of these issues as I find them, if possible.


    Complementary Scripts
    Other scripts that work well in conjunction with Pokemon Birthsigns are:
    Spoiler:
    Reply With Quote