• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Our friends from the Johto Times are hosting a favorite Pokémon poll - and we'd love for you to participate! Click here for information on how to vote for your favorites!
  • 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

Major Update 4/23/20: Script Overhauls and Zodiac Power Rebalancing
This update is focused around cleaning up the existing scripts, simplifying things, and making everything work more efficiently. The Zodiac Powers script in particular has gotten massive updates, with nearly every single Zodiac Power being fixed up and buffed with improved effects. The Birthsign Events script has similarly been completely overhauled, adding two new events to the project, as well as simplifying the entire process of setting up your events (say goodbye to fumbling with switches!). A host of smaller changes and additions have been added as well.

Changelist for Birthsings 2.9
Spoiler:


Installation
Spoiler:
 
Last edited:
Actually I was already able to add the Dissonance skill, but I will for sure wait for the update, I changed a lot of things so Ill have to port your changes to mine, or add my changes to the update.

Also, I was wondering;
[PokeCommunity.com] Pokemon Birthsigns


I wanted to make all these signs badsigns=(0 || 1 || 4 || 7 || 8 || 12 || 19 || 27 || 30 || 34), unavailable, but I was unable to make it work, did I do something wrong?
They still appear.

I'm not really sure how the method you were attempting was supposed to work, but it doesn't really matter because I've simplified how randomization works in the last update. You can accomplish what you're attempting to do in a more straight forward way.

Code:
def getSignList(month)
  return [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
          19,20,21,22,23,24,25,26,27,28,29,30,31,31,33][month-1]
end
if ZODIACSET==3 # Zodiac uses random signs
  rndm=rand(32)
  JAN_BIRTHSIGN = getSignList(rndm)
  FEB_BIRTHSIGN = getSignList((rndm+6)%33)
  MAR_BIRTHSIGN = getSignList((rndm+11)%33)
  APR_BIRTHSIGN = getSignList((rndm+2)%33)
  MAY_BIRTHSIGN = getSignList((rndm+8)%33)
  JUN_BIRTHSIGN = getSignList((rndm+3)%33)
  JUL_BIRTHSIGN = getSignList((rndm+7)%33)
  AUG_BIRTHSIGN = getSignList((rndm+4)%33)
  SEP_BIRTHSIGN = getSignList((rndm+10)%33)
  OCT_BIRTHSIGN = getSignList((rndm+1)%33)
  NOV_BIRTHSIGN = getSignList((rndm+9)%33)
  DEC_BIRTHSIGN = getSignList((rndm+5)%33)
end

This is how the randomized zodiac looks in the newest updated. If you want to delete particular signs from being selected at random, then simply remove the numbers corresponding to that birthsign from the "getSignList" array. Note that sign 0 is already ignored by default.

After that, you need to change "rand(32)" to reflect the total number of variables left in the getSignList array after you removed the undesirable ones. So if you removed 10 signs from the array lets say, then you'd use "rand(22)" instead. Next, you'll have to do the same thing with each "%33", and subtract that same number from each instance (making it %23 in this scenario).

Remember however that randomized zodiac sets will re-randomize each time you load the game.
 
I tried it again 2 times, but unfortunately the result is the same, I think the best is if I record a small video of me installing it, maybe then you can see if I do something wrong with the installation

https://youtu.be/fADJrNparc4

Ignore the moment with double POKEMON BIRTHSIGNS, EPI pushed it up

Seems like i did nothing wrong

I watched your video, and it seems like what the problem is is that you're simply ordering the scripts wrong. All of Luka's stuff needs to be placed AFTER my birthsigns scripts. Because my scripts are built with Essential's default battle layout in mind, and his scripts change that. So if you place mine after, its basically reverting certain things back to default and overwriting his, which is probably why certain graphics aren't appearing as they should. This is my guess.

So basically, the script order should look like

------------------------------
Pokemon Birthsigns
Zodiac Powers
------------------------------
Luka Utilities
EliteBattle_0
EliteBattle_1
EliteBattle_2
EliteBattle_3
Zodiac Compatibility
EliteBattle_4
etc....
-----------------------------
Main

That should fix the problem.
 
Minor Update:

I caught an error with 'The Cultist' Summon command that would not initiate battles properly due to something I was playing around with and forgot to change back. I've now gone back and fixed it. Copy over the fixed version of the code for the Summon command if this is important to you.
 
I'm not really sure how the method you were attempting was supposed to work, but it doesn't really matter because I've simplified how randomization works in the last update. You can accomplish what you're attempting to do in a more straight forward way.

Code:
def getSignList(month)
  return [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
          19,20,21,22,23,24,25,26,27,28,29,30,31,31,33][month-1]
end
if ZODIACSET==3 # Zodiac uses random signs
  rndm=rand(32)
  JAN_BIRTHSIGN = getSignList(rndm)
  FEB_BIRTHSIGN = getSignList((rndm+6)%33)
  MAR_BIRTHSIGN = getSignList((rndm+11)%33)
  APR_BIRTHSIGN = getSignList((rndm+2)%33)
  MAY_BIRTHSIGN = getSignList((rndm+8)%33)
  JUN_BIRTHSIGN = getSignList((rndm+3)%33)
  JUL_BIRTHSIGN = getSignList((rndm+7)%33)
  AUG_BIRTHSIGN = getSignList((rndm+4)%33)
  SEP_BIRTHSIGN = getSignList((rndm+10)%33)
  OCT_BIRTHSIGN = getSignList((rndm+1)%33)
  NOV_BIRTHSIGN = getSignList((rndm+9)%33)
  DEC_BIRTHSIGN = getSignList((rndm+5)%33)
end

This is how the randomized zodiac looks in the newest updated. If you want to delete particular signs from being selected at random, then simply remove the numbers corresponding to that birthsign from the "getSignList" array. Note that sign 0 is already ignored by default.

After that, you need to change "rand(32)" to reflect the total number of variables left in the getSignList array after you removed the undesirable ones. So if you removed 10 signs from the array lets say, then you'd use "rand(22)" instead. Next, you'll have to do the same thing with each "%33", and subtract that same number from each instance (making it %23 in this scenario).

Remember however that randomized zodiac sets will re-randomize each time you load the game.

Oh man, I am an idiot then.
I wanted to make it so that Wild Pokémon can't obtain some specific signs, not the Zodiacs. My bad.

elsif WILDBIRTHSIGNS==4
# Generates wild Pokemon with completely random signs
genwildpoke.setRandomsign

then this would be the thing I need to change, no?
 
Oh man, I am an idiot then.
I wanted to make it so that Wild Pokémon can't obtain some specific signs, not the Zodiacs. My bad.

elsif WILDBIRTHSIGNS==4
# Generates wild Pokemon with completely random signs
genwildpoke.setRandomsign

then this would be the thing I need to change, no?

I see. Yes, that would be correct. You could probably just incorporate the same idea I outlined before more or less by using an array. I'd just make a new toggle under WILDBIRTHSIGNS==4 and set it to 5, that way you dont have to fiddle with the pre-existing toggles in case you end up needing them for some reason.

Code:
elsif WILDBIRTHSIGNS==5
        # Generates wild Pokemon with random signs out of a specified array
        signs=[1,2,3,4,5,6,7,8,9,10]
        genwildpoke.setBirthsign(signs[rand(9)])

Something like this would probably work. I listed signs 1-10 just as an example, but you could incorporate whichever sign numbers you like. You could do the same thing to set a random zodiac sign too, by using "genwildpoke.setZodiacsign(signs[rand(x)])" (instead of making it random out of every possible birthsign), but in that case instead of having the array list numbers associated with birthsigns (0-33), you'd use month numbers instead (1-12). This would ensure the randomly chosen signs are only ones found within your active zodiac set.
 
Is there a method i can easily call something like pbismonth(JAN) so i can make month based events?
 
Is there a method i can easily call something like pbismonth(JAN) so i can make month based events?

Hmm...could you explain a bit on what you're attempting to do with this? If you're trying to check for a particular month, Time.now.mon will call the current month. That's not a birthsigns thing, that's just something essentials has by default. You can set that to a particular month like "if Time.now.mon==4" to check for April, for example.
 
Minor Update 5/13/20: Bug Fixes and Polishing
I made a second pass through all of the scripts in the last big update to comb through any potential bugs and errors, and I found several small ones (and one or two big ones) that I was able to fix. They're too minor and numerous to bother listing, but I'd recommend reinstalling the scripts again. The Zodiac Power script in particular had the bulk of the bugs, and all of the powers have been re-tested and polished up where needed. Some of the battle text has also been changed to be more clear in certain niche situations. The main birthsigns script has had a few unnecessary things trimmed that was causing errors in other areas, and the two new events added in the events script have been slightly changed to better match the existing events in the script.
 
Update 5/22/20: Birthsign Journal Overhaul
The Birthsign Journal is personally one of my favorite things I've worked on, mostly because unlike most elements of this project, it's entirely there for flavor which makes working on it different than my other scripts. Despite this, the Journal script is probably the most outdated out of all the scripts in this project, and has undergone by far the least amount of changes and upgrades. Because of this, I thought I'd make an update dedicated entirely to sprucing up the Journal script to a higher standard of quality, and add a ton of new features to improve it. Nearly the entire script has been reworked to function more efficiently.

[PokeCommunity.com] Pokemon Birthsigns


What's new:
Spoiler:


Installation:
Spoiler:
 
Last edited:
Uhm... how can I make a event to set the players birthsign, I knew that there was once a addon for this but now the addon is gone, can you help me?
 
Uhm... how can I make a event to set the players birthsign, I knew that there was once a addon for this but now the addon is gone, can you help me?

It's rolled into the main script by default. All the trainer functions still exist as they did before - in fact, they've been greatly expanded upon. If you're just looking for the event that assigns one at the beginning of the game (where you pick your birthday month), that has been moved into the Events script and can be called upon with pbTrainerSignEvent.
 
Major Update 6/7/20: New Signs and Zodiac Swapping
It's been a long time since I added new birthsigns to this project. One, because I just didn't have any good ideas, but mostly because it just takes so much work now to add any since each sign now needs to include its own unique graphics, journal entry, a Zodiac Power, a Celestial Boss, on top of its actual effects. Because of that, I figured I'd let the cap sit at 33 and focus on updating things in other ways.

Well boys and girls, quarantine changed all that, and you can probably tell from the pace of the updates lately that I've got a whole lot of time to kill. I've added three brand new signs to the project, bringing the total up to 36 - meaning that there are now enough birthsigns to create three whole zodiacs worth without any repeats. Because of that, I decided why not add in a feature some people have been asking for - the ability to swap between zodiacs in-game? I had to restructure how a lot of things work to make this happen, but it's done. I've created a slew of nifty debug tools to show this off.

A ton of other things have been updated as well that I'll get into detail about below. This is a huge update, so there's a lot to go over. I've detailed all of the changes below.


*YOU MUST START A NEW GAME AFTER INSTALLING*

What's New:
Spoiler:



Installation
Spoiler:
 
Last edited:
Just installed the update, and I get this error on a new save upon sending out a pokemon

Code:
Script 'PokeBattle_Battle' line 1442: NoMethodError occurred.

undefined method `[]' for nil:NilClass

Can you describe to me in more detail what's going on? Like do any of the Pokemon you send out have anything in common like a particular sign or species or something? Because I'm not getting this error and I just double checked by installing this on a fresh copy of Essentials and everything seems to be working.
 
Can you describe to me in more detail what's going on? Like do any of the Pokemon you send out have anything in common like a particular sign or species or something? Because I'm not getting this error and I just double checked by installing this on a fresh copy of Essentials and everything seems to be working.

Honestly not a clue what could be causing it. the code it points to has something to do with AI and the game I Installed it on is notorious for being weird. we decided to postpone installing the update for now.
 
Honestly not a clue what could be causing it. the code it points to has something to do with AI and the game I Installed it on is notorious for being weird. we decided to postpone installing the update for now.

That's unfortunate. Hope you figure it out.

By the way, this is unrelated, but I *did* find a bug when it comes to applying randomized Zodiacs. Just forgot to put parenthesis around things. It should be fixed now.
 
Back
Top