Update 9/24/15 : Birthsign Events
For this update, I decided to focus on trying to utilize the birthsign mechanic in new ways. The last update made it possible to easily call for a birthsign in an event, and I've built a new stand-alone script to take full advantage of that. This should make creating complicated events utilizing Pokemon Birthsigns fairly simple. This is an add-on, similar to the Birthsigns Journal; so you don't have to install this if you're uninterested.

Features

A new "Birthstone" event that can be easily set up by calling on just a few scripts. This event will grant any Pokemon without a birthsign the power of any one of the birthsigns that you choose. You can use this to create alternate methods of attaining a birthsign, particularly for Pokemon who are incapable of being bred.

A new "Birthpath" event that can be easily set up by calling on just a few scripts. This event blocks access to a hidden path unless the player has a Pokemon with the required birthsign in their party. You can use this to hide secret caves, treasure, or all sorts of things by using birthsigns as keys to open these locked paths.

New graphics and a new animation that plays whenever a birthsign event is triggered.

Supports all 24 Birthsigns. Setting BIRTHSIGNS_SET_2 to "true" in the Pokemon Birthsigns script will activate Set 2.

Example Images

Spoiler:

Birthstone Event

Spoiler:

Birthpath Event

Spoiler:

Setting Up Events
By default, this script is assuming switches 111-124 are vacant, because default Essentials doesn't use these numbers. If your project has these switch numbers occupied with something else, you'll have to renumber all the switches in this script to suit your needs.

Here is how the script for your events should look like:

The first control switch (in this case, 111) is assigned to the desired month. By default, switches 111-122 are assigned to each of the 12 months, respectively. So in the example image, January is this event's desired month (which correlates with 'The Apprentice' or 'The Phoenix' signs).

The second control switch (in this case, 123) is assigned to the desired type of event. By default, switch 123 is assigned to a Birthstone Event, while switch 124 is assigned to a Birthpath Event. This switch will determine which of the two possible events will play out when the event is triggered.

pbBirthsignEvent is the script that will begin running the event, determined by the two control switches you chose. Once this event is fully completed, Control Self Switch "A" will be automatically turned on in the Event, forcing the Event to jump to Page 2.

Page 2 of the Event is where things may differ depending on which Birthsign Event you're utilizing. If you're making a Birthstone Event, then you may leave Page 2 of the event blank. If you're using a Birthpath Event, then you may place a door event on Page 2 so that it becomes "unlocked" after completing the event. How to utilize this is up to you. In either scenario, you must check off Page 2's Self Switch "A" to ON.

UPDATE: As of 12/13/17, a third event called "Sign Conversion" can be used with this script. This uses control switch 125, and may be used to convert the birthsigns of your Pokemon to a different sign, depending on the month switch you put in your event.

Minor Update 9/28/15 : PC Modifications
This is a small change that'll update the Pokemon Storage system so that it will now accommodate Pokemon Birthsigns. You will now be able to see a Pokemon's birthsign token from the PC menu, allowing you to quickly identify a Pokemon with a specific birthsign. This will also update the PC Debug tools to allow you to change a stored Pokemon's birthsign, just as you can with the Party Menu Debug tool.

Attached are some screenshots that shows the new features this update adds.

Bug Fix: 'The Assassin'
The effect of this birthsign is meant to have a 70% chance to encounter wild Pokemon who are asleep. However, the sleeping Pokemon would always wake immediately once encountered, making the effect fairly useless. This should fix this problem so that the wild Pokemon encountered with this effect should now sleep for at least one turn before waking up.

Find this section of code in PokemonBirthsigns, near the bottom, and add in the bolded line:

Code:

#================================================================================
# Birthsign - The Assassin
#Wild Pokemon have a 70% chance of being asleep when encountered.
#================================================================================
if !$Trainer.party[0].isEgg? &&
($Trainer.party[0].birthsign==_INTL("'The Assassin'") ||
(USENEWBIRTHSIGNS && $Trainer.party[0].zodiacflag!=nil &&
$Trainer.party[0].birthsign==PBBirthsigns::ASSASSIN))
if genwildpoke.status=0 && rand(100)<70 #Change this number to change the odds.
genwildpoke.status=1
genwildpoke.statusCount=2
end
end
#================================================================================

And that's it! The effect should work as intended now. I will update the main script with this change.

Bug Fix: 'The Assassin'
The effect of this birthsign is meant to have a 70% chance to encounter wild Pokemon who are asleep. However, the sleeping Pokemon would always wake immediately once encountered, making the effect fairly useless. This should fix this problem so that the wild Pokemon encountered with this effect should now sleep for at least one turn before waking up.

Find this section of code in PokemonBirthsigns, near the bottom, and add in the bolded line:

Code:

#================================================================================
# Birthsign - The Assassin
#Wild Pokemon have a 70% chance of being asleep when encountered.
#================================================================================
if !$Trainer.party[0].egg? &&
($Trainer.party[0].birthsign==_INTL("'The Assassin'") ||
(USENEWBIRTHSIGNS && $Trainer.party[0].zodiacflag!=nil &&
$Trainer.party[0].birthsign==PBBirthsigns::ASSASSIN))
if genwildpoke.status=0 && rand(100)<70 #Change this number to change the odds.
genwildpoke.status=1
genwildpoke.statusCount=2
end
end
#================================================================================

And that's it! The effect should work as intended now. I will update the main script with this change.

Why not do "genwildpoke.statusCount=2+rand(3)"? That way it's not always one turn of sleep.

For those interested in using Pokemon Birthsigns with the new release of Essentials v16, some minor script edits are required to avoid compatibility issues.

For every instance of ".egg?" in any of the scripts, you must instead replace it with ".isEgg?"

With that, everything should work. I've got it working, and everything seems to function as intended. Only the Pokemon Birthsigns and Birthsign Event scripts require these edits - the Birthsign Journal seems fine as-is. If anyone encounters any errors or issues with the script in v16 that they didn't encounter in v15, please let me know and I'll see if there's anything else that must be changed. But as far as I can tell, everything works.

For those of you installing Pokemon Birthsigns for the first time into Essentials v16, everything has already been updated for you. You should be able to follow the installation instructions and be good to go.

Several additional changes have been fixed in the PokemonBirthsign script for further compatibility with Essentials v16.

-Fixed an issue with the Debug menu when changing Abilities.
-Fixed an issue with gaining Exp from battles crashing the game.
-Restructured the code for 'The Scholar', 'The Fugitive', 'The Aristocrat', 'The Assassin', and 'The Ancestor' Birthsigns. They've all been tested and seem to work without issue now.
-Changed something minor in the Summary pages that changes the Item text color to reflect v16's changes.
-Fixed the item jingle name to reflect v16's name so that it properly plays when called in the Birthsign and Birthsign Event scripts.

I followed your Installation Guide... But I want to make it different:

Spoiler:

1. The Phoenix
2. The Companion
3. The Beacon
4. The Savage
5. The Cleric
6. The Martyr
7. The Ancestor
8. The Gladiator
9. The Voyager
10. The Thief
11. The Glutton
12. The Wishmaker

I already copied the printable version and followed your Instructions, the problem now is that I dunno how to make this part of my Script to work properly:

Spoiler:

# Applies the effects of manually assigned Birthsigns.
def applyBirthsigns
if birthsign==PBBirthsigns::PHOENIX
pkmn.hp==0
end
if birthsign==PBBirthsigns::COMPANION
self.happiness=255
end
if birthsign==PBBirthsigns:AVAGE
self.iv[0]=0
self.iv[1]=31
self.iv[2]=rand(32)
self.iv[3]=31
self.iv[4]=31
self.iv[5]=rand(32)
end
if birthsign==PBBirthsigns::MARTYR
command==1 # I dunno what to put here, I wanted to put something that make the effects of Martyr.
end
if birthsign==PBBirthsigns::ANCESTOR
self.genderflag=1 # I dunno what to put here, I wanted to put something that make the effects of Ancestor.
end
if birthsign==PBBirthsigns::GLADIATOR
self.ev[0]=0
self.ev[1]=100
self.ev[2]=0
self.ev[3]=0
self.ev[4]=100
self.ev[5]=0
end

I followed your Installation Guide... But I want to make it different:

Spoiler:

1. The Phoenix
2. The Companion
3. The Beacon
4. The Savage
5. The Cleric
6. The Martyr
7. The Ancestor
8. The Gladiator
9. The Voyager
10. The Thief
11. The Glutton
12. The Wishmaker

I already copied the printable version and followed your Instructions, the problem now is that I dunno how to make this part of my Script to work properly:

Spoiler:

# Applies the effects of manually assigned Birthsigns.
def applyBirthsigns
if birthsign==PBBirthsigns::PHOENIX
pkmn.hp==0
end
if birthsign==PBBirthsigns::COMPANION
self.happiness=255
end
if birthsign==PBBirthsigns:AVAGE
self.iv[0]=0
self.iv[1]=31
self.iv[2]=rand(32)
self.iv[3]=31
self.iv[4]=31
self.iv[5]=rand(32)
end
if birthsign==PBBirthsigns::MARTYR
command==1 # I dunno what to put here, I wanted to put something that make the effects of Martyr.
end
if birthsign==PBBirthsigns::ANCESTOR
self.genderflag=1 # I dunno what to put here, I wanted to put something that make the effects of Ancestor.
end
if birthsign==PBBirthsigns::GLADIATOR
self.ev[0]=0
self.ev[1]=100
self.ev[2]=0
self.ev[3]=0
self.ev[4]=100
self.ev[5]=0
end

Now I'd tried to delete all these Scripts: PokemonBirthsigns, The jornal one and the Event one then I saved and Playtest the game and I can't open the Menu when I click on X.

Hmm. Well as far as the changes you want go, there's quite a few things you need to alter in the scripts. I just applied the changes you wanted in a fresh install, and I was able to get it working. Here's what I did:

First of all, copy/paste all of the following code over the appropriate sections in a fresh install of the Birthsigns script. This entire chunk is found near the very top of the script. I wrote #Changed next to every line I tweaked, and bolded for you convenience.

Then go to lines 1083 and 3014 and do the exact same thing. This'll allow the Cleric and the Ancestor to work, respectively.

Finally, go into the Birthsigns graphics folder, and swap the Birthsign and Token graphics to match your changes.

In regards to the Journal script, that's a bit more straightforward to change. You more or less just have to change the name/description text in the appropriate places. The only complicated part of altering the Journal is editing the wheel graphic to display your changes. But, that shouldn't be difficult if you're at all familiar with using an image editing program.

As for the Event scripts, that should be the easiest one to alter out of all of them. All you really need to do is swap the exclamation point before USENEWBIRTHSIGNS in all of the appropriate places, similar to what you had to do to the Birthsigns script.

wow Thanks I installed the Script above main and name it PokemonBirthsigns
and copied it from Printable Version, as I do always and
now I don't understand the part with ("Go to line 1074..") I copied the entire PokemonBirthsigns Script and paste it in the Notepad++ too and I can't see the line 1074 because the line just goes till 268 :(

wow Thanks I installed the Script above main and name it PokemonBirthsigns
and copied it from Printable Version, as I do always and
now I don't understand the part with ("Go to line 1074..") I copied the entire PokemonBirthsigns Script and paste it in the Notepad++ too and I can't see the line 1074 because the line just goes till 268 :(

The code i gave you in my last post was just changes for the original Birthsigns script, its not the entirety of code that you need. You need to first completely reinstall the Birthsigns script that I link to in my first post, THEN replace the section of code in that script with the changes I provided for you.

But I want the info to show up when the respective icon is selected without
having too press the "C" button because I use double screen. (Pokegear app)
This is the section I've found:
if Input.trigger?(Input::C) && !USENEWBIRTHSIGNS
But I have no Idea how to change that...

But I want the info to show up when the respective icon is selected without
having too press the "C" button because I use double screen. (Pokegear app)
This is the section I've found:
if Input.trigger?(Input::C) && !USENEWBIRTHSIGNS
But I have no Idea how to change that...

You're talking about the Journal, right? Well if all you need is to assign a different button, then just replace C with a different key. For example, to make it so that you open the pages with the CTRL key instead of C, then just replace every instance of (Input::C) in the Journal script with (Input::CTRL). If you want to open the pages without the use of buttons at all, then that's probably a little trickier.

Perhaps setting up a touch screen so you can simply click on the icons to open the pages? I have no experience with mouse modules though, so I don't know what to suggest in terms of coding.

I'm using this script and I wanted to test it, so in debug i gave myself two pokemon of the same species and different genders and deposited them in the daycare. Forced an egg and withdrew the egg. as soon as I take the egg I got an error:

I'm using this script and I wanted to test it, so in debug i gave myself two pokemon of the same species and different genders and deposited them in the daycare. Forced an egg and withdrew the egg. as soon as I take the egg I got an error:

That's odd. I just tried it myself without any errors. The lines of code that are giving you errors isn't even my code - it's just part of the default essentials coding found in PField_Daycare that I just copy/pasted over into the Birthsigns script.

Some questions to help narrow down the source of this issue:

-What version of Essentials are you using? I wrote this script for v15.1, but I updated it recently to match v.16's coding. If you're using an older version than v16, there may be conflicting code.

-What Birthsign Set are you using? Set 1 is the default (USENEWBIRTHSIGNS set to "false").

-Check your PField_Daycare script for the same lines that are returning errors for you. Are they written identically to the same lines in your Birthsigns script?

-Do the Absol you're trying to breed together have any Birthsigns on them already? If so, which ones?

-Did you alter the Birthsigns script in any ways for your personal use?

-Do you have any other additions to your project that alter the breeding mechanics in any way?

-I'm currently using v16
-I'm using set 2
- PField_Daycare does not have the same line, but instead babyspecies=pbGetBabySpecies(babyspecies)
-Both Absol are debugged in with no birthsigns given
-The only alteration I made was switching WISHMAKER with the SPECIALIST birthsign and that part works, I know by debugging a party pokemon to be an egg then using the Unreal Time system to move the time to the desired month then hatching, so it shouldn't have made any changes to the Daycare section.
-I'm using the Project gen 6 if that helps... I dont think it'll change that though...

Also when I tested it after changing the line to babyspecies=pbGetBabySpecies(babyspecies) like in the Daycare script, it gives this error:

# Inheriting Machine Moves
if !USENEWBATTLEMECHANICS
for i in 0...$ItemData.length
next if !$ItemData[i]
atk=$ItemData[i][ITEMMACHINE]
next if !atk || atk==0
if egg.isCompatibleWithMove?(atk)
moves.push(atk) if movefather.knowsMove?(atk)
end
end
end

-I'm currently using v16
-I'm using set 2
- PField_Daycare does not have the same line, but instead babyspecies=pbGetBabySpecies(babyspecies)
-Both Absol are debugged in with no birthsigns given
-The only alteration I made was switching WISHMAKER with the SPECIALIST birthsign and that part works, I know by debugging a party pokemon to be an egg then using the Unreal Time system to move the time to the desired month then hatching, so it shouldn't have made any changes to the Daycare section.
-I'm using the Project gen 6 if that helps... I dont think it'll change that though...

Also when I tested it after changing the line to babyspecies=pbGetBabySpecies(babyspecies) like in the Daycare script, it gives this error:

# Inheriting Machine Moves
if !USENEWBATTLEMECHANICS
for i in 0...$ItemData.length
next if !$ItemData[i]
atk=$ItemData[i][ITEMMACHINE]
next if !atk || atk==0
if egg.isCompatibleWithMove?(atk)
moves.push(atk) if movefather.knowsMove?(atk)
end
end
end

Are you sure you're using Essentials v16? Because from what you're describing, it seems as if some of your code is written with v15's coding. I'm looking at the scripts in a copy of Essentials v15 and v16 side by side, and this is what I'm seeing:

v15's code looks like this:

Code:

babyspecies=pbGetBabySpecies(babyspecies)

while v16's code looks like this:

Code:

babyspecies=pbGetBabySpecies(babyspecies,mother.item,father.item)

So if your game's code is displaying it like the first line of code in PField_Daycare, then it doesn't seem as if you're running v16.

Also, "USENEWBATTLEMECHANICS" is something that was added in v16, so getting an error pertaining to that leads me to believe your game isn't running v16. At least not when it comes to this part of the script.

Perhaps the Project Gen 6 scripts you've added to your game is utilizing outdated coding? If you want to test this out for yourself, try downloading a fresh copy of v16 with no changes added except the Birthsigns scripts. Then see if it runs as intended. If it does, then the issue is with the Project Gen 6 scripts, not mine.

Okay, so I did exactly as you said, fresh v16, but I also took it a step further and added Project gen 6 changes again exactly as i did before, and it works perfectly this time... I have no clue what was different the first time, but thanks for helping! I appreciate it.

Also, I made the Absol hatch in August and it was shiny like I hoped it would by switching Wishmaker and Specialist, so that works as well.

Okay, so I did exactly as you said, fresh v16, but I also took it a step further and added Project gen 6 changes again exactly as i did before, and it works perfectly this time... I have no clue what was different the first time, but thanks for helping! I appreciate it.

Also, I made the Absol hatch in August and it was shiny like I hoped it would by switching Wishmaker and Specialist, so that works as well.

Ok. First off, I absolutely love this script. It works great and is very well made with cool graphics and is just a cool idea overall. Good job!

I do have a question though that I was hoping you could help me with (I'm fairly new to scripting so maybe it's an easy fix). I have your scripts all in, but I also wanted to use the Family Tree script that you linked to this. I had it all working before I added your script, but now it doesn't seem to work properly.

I had those all changed in the PokemonSummary script before, but I believe yours overwrites that script right? So I went into your script and changed the things with PageFive and I added the 'handleInputsEgg' line; however it still doesn't work correctly. The page where the family tree information is supposed to be shows up, but no information is being inserted. I figure everything now has to do with the "Change line 'if @page!=0' to 'if @page!=0 && !(SHOWFAMILYEGG && @page==5)'" part; however, I cannot find this line in your script, so my question is: Where do I need to add this or what do I need to change so that I can have both the BirthSigns and the Family Tree scripts working?

Ok. First off, I absolutely love this script. It works great and is very well made with cool graphics and is just a cool idea overall. Good job!

I do have a question though that I was hoping you could help me with (I'm fairly new to scripting so maybe it's an easy fix). I have your scripts all in, but I also wanted to use the Family Tree script that you linked to this. I had it all working before I added your script, but now it doesn't seem to work properly.

I had those all changed in the PokemonSummary script before, but I believe yours overwrites that script right? So I went into your script and changed the things with PageFive and I added the 'handleInputsEgg' line; however it still doesn't work correctly. The page where the family tree information is supposed to be shows up, but no information is being inserted. I figure everything now has to do with the "Change line 'if @page!=0' to 'if @page!=0 && !(SHOWFAMILYEGG && @page==5)'" part; however, I cannot find this line in your script, so my question is: Where do I need to add this or what do I need to change so that I can have both the BirthSigns and the Family Tree scripts working?

Yes, my script overwrites sections of the Summary script (as well as the Daycare script), so some of the changes you have in your default scripts will likely be ignored. It should, however, be relatively easy to add. I know for a fact that both Birthsigns and Family Tree can work together without issue, because I use Family Tree in my own project (though heavily modified). It's easily one of my favorite scripts out there.

Here's how it looks in my project:

Spoiler:

To install the unmodified Family Tree script so that it works with Pokemon Birthsigns, you don't have to do much differently than what's already described in FL's instructions. The main difference is instead of changing the appropriate lines in the PScreen_Summary script, you can just change the necessary lines within the PokemonBirthsigns script instead.

So let's go about it step by step, following his instructions:

Steps:

Spoiler:

1) At PokemonDayCare, before line '$Trainer.party[$Trainer.party.length]=egg' add line 'egg.family = PokemonFamily.new(egg, father, mother)'

So now in the PokemonBirthsigns script, use CTRL+F to look for the line he's describing (it should be around line 3028 in an unmodified script). Add his line above it.

2) At PokemonSummary, change both lines '@page=4 if @page>4' to '@page=5 if @page>5'

In the Birthsigns script, use CTRL+F to find the two lines he's describing, and replace them with the new page numbers. This should be around lines 2730 and 2741 in an unmodified Birthsigns script.

3) Before line 'if Input.trigger?(Input::UP) && @partyindex>0' add line 'handleInputsEgg'

Again in the Birthsigns script, use CTRL+F to find this line, and add his above it. It should be around line 2702.

This is the only part of his directions where you still have to alter the original PScreen_Summary script, because this section of code is not overwritten by PokemonBirthsigns. If you've already made this change in your PScreen_Summary script, then you can just skip this step.

5) After line 'drawPageFive(@pokemon)' add

Code:

when 5
drawPageSix(@pokemon)

And finally, again in PokemonBirthsigns, use CTRL+F to locate this line, and add his new code underneath it.

Now, as far as his actual code, you'll want to paste it in a new section above Main, but below PokemonBirthsigns (and PScreen_Summary). It should now work properly. However, if you want an extra bit of cohesiveness with his script and mine, I suggest you make these changes to his code:

Changes:

Spoiler:

1) In the Family Tree script, find the line 'imagepos.push([ballimage,14,60,0,0,-1,-1])', and paste the following directly below it:

And then find the line 'textpos.push([_INTL("{1}",pokemon.level),46,92,0,', and paste the following above it:

Code:

if pokemon.hasItem?
textpos.push([PBItems.getName(pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
else
textpos.push([_INTL("None"),16,352,0,Color.new(184,184,160),Color.new(208,208,200)])
end

This will change the item text to reflect how it is displayed in all the other pages in Essentials v16, which PokemonBirthsigns emulates.

And with all of that, both scripts should work together without any issues. Here's a screenshot of the same Pokemon I showed you from my own Project, after installing Birthsigns and Family Tree into a fresh copy of Essentials v16:

After some testing, it's come to my attention that the code for the birthsign 'The Ancestor' is no longer working properly. Perhaps due to changes in Essentials v16. Maybe it's just me, but either way, I updated the code for that birthsign so that it may now work as intended.

In addition to this, I've updated the code for 'The Specialist' so that it now assumes Fairy type is being used in your game. So you may now use it to roll for new IV's that'll yield Hidden Power Fairy. If your project does not use the Fairy type, then do not install the update for it below.

I've also merged the Birthsigns script and PC Modification script into a single script now. This just gives new people one less step to fuss over in the installation process.

All of the above has already been revised in the linked scripts in the main post.
~

The PokéCommunity

Meta

Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, or The Pokémon Company International. We just love Pokémon.