version 2.04
Blackmorning
27/01/11
I kept looking at all the different job changers. I liked parts of each of them, but none did exactly what I wanted, so I took from each of them and added my own flair to create this.
This is my first script. Like I said, there are some features that might look familiar, but haven't been seen all in the same script.
Windowed interface to change an actor's class.
Updates
27/01/11
- fixd glitch with jp gain
19/01/11
- fixed some small bugs (noticed by adrien.)
31/07/10
- cleaned up a few scripting issues, some bugs fixed (higher class levels)
- updated VAEP addon
12/07/10
- compatible with YEM Battler Stat: RES and Battler Stat: DEX (requested by Kaimi)
25/06/10
- change in script for how skills are forgotten when changing classes (removes only skills learnt by the previous class)
- addon to make class requirements for new classes (ie. level 5 knight to unlock paladin, checks at every class level up)
16/02/10
- compatible with YEZ Battler Stat: RES and Battler Stat: DEX (requested by sol003)
17/01/10
- added patch for Requiem ABS 9 - requested by Solis
18/11/09
- fixed jp earned during fight (noticed by Slajmboll)
- split script into two parts (like in the demo)
- updated Yanfly's VAEP addon and addon for switching on/off jp gain
06/08/09
- new addon to shutoff gaining of jp for a time via a switch (requested by Son Goku)
04/08/09
- when not gaining jp by any means, skills are learnt by actor level. (requested by HomuraKitsune)
- put in an addon for allowing equippable items to be based on all classes in an actor's class list (requested by Andrelvis)
28/07/09
- can make items to add/remove classes
- IMPORTANT - fixed class adding and removing (now works when reloading)
- redefined a few things in the customize section
- fixed when class level up bonus based on actor's level
26/07/09
- update for victory aftermath addon (new visual feature when bonus jp not displayed)
24/07/09
- updated victory aftermath addon for when not earning bonus JP
23/07/09
- updated demo
22/07/09
- bug fix
# requested by Andrelvis
- can modify jp needed to go up a level
- icons can appear next to class in job changer window
21/07/09
- added compatibility patch for Yanfly's Victory Aftermath
20/07/09
- level up bonuses can be by either class level or actor level
- skills fix when initialized actor is higher level
16/07/09
- fixed minor issue with custom menus
14/07/09
- added check actor class list size
13/07/09
- customizable description of class on help window (default descriptions from Cmpsr2000)
30/06/09
- level up stat bonuses now based on class level.
( ie. stats increase as class level increases )
29/06/09
- compability fix with special classes (ie. OriginalWij sequence skills)
- issue fixed when regular level up
28/06/09
- fixed change graphic problem
- minor formatting errors cleared up
- check any actor class level and assign it to a variable ( see demo for example of use )
( good for creating events to add classes )
- new demo to demonstrate script
27/06/09
-new patch to help make jp work with ORBS battle system
26/06/09
- skills help window full opacity
- item Jp gain fixed, demo increase jp fixed
- can show class lvl in menustatus and status screens
25/06/09
- released script
27/01/11
- fixd glitch with jp gain
19/01/11
- fixed some small bugs (noticed by adrien.)
31/07/10
- cleaned up a few scripting issues, some bugs fixed (higher class levels)
- updated VAEP addon
12/07/10
- compatible with YEM Battler Stat: RES and Battler Stat: DEX (requested by Kaimi)
25/06/10
- change in script for how skills are forgotten when changing classes (removes only skills learnt by the previous class)
- addon to make class requirements for new classes (ie. level 5 knight to unlock paladin, checks at every class level up)
16/02/10
- compatible with YEZ Battler Stat: RES and Battler Stat: DEX (requested by sol003)
17/01/10
- added patch for Requiem ABS 9 - requested by Solis
18/11/09
- fixed jp earned during fight (noticed by Slajmboll)
- split script into two parts (like in the demo)
- updated Yanfly's VAEP addon and addon for switching on/off jp gain
06/08/09
- new addon to shutoff gaining of jp for a time via a switch (requested by Son Goku)
04/08/09
- when not gaining jp by any means, skills are learnt by actor level. (requested by HomuraKitsune)
- put in an addon for allowing equippable items to be based on all classes in an actor's class list (requested by Andrelvis)
28/07/09
- can make items to add/remove classes
- IMPORTANT - fixed class adding and removing (now works when reloading)
- redefined a few things in the customize section
- fixed when class level up bonus based on actor's level
26/07/09
- update for victory aftermath addon (new visual feature when bonus jp not displayed)
24/07/09
- updated victory aftermath addon for when not earning bonus JP
23/07/09
- updated demo
22/07/09
- bug fix
# requested by Andrelvis
- can modify jp needed to go up a level
- icons can appear next to class in job changer window
21/07/09
- added compatibility patch for Yanfly's Victory Aftermath
20/07/09
- level up bonuses can be by either class level or actor level
- skills fix when initialized actor is higher level
16/07/09
- fixed minor issue with custom menus
14/07/09
- added check actor class list size
13/07/09
- customizable description of class on help window (default descriptions from Cmpsr2000)
30/06/09
- level up stat bonuses now based on class level.
( ie. stats increase as class level increases )
29/06/09
- compability fix with special classes (ie. OriginalWij sequence skills)
- issue fixed when regular level up
28/06/09
- fixed change graphic problem
- minor formatting errors cleared up
- check any actor class level and assign it to a variable ( see demo for example of use )
( good for creating events to add classes )
- new demo to demonstrate script
27/06/09
-new patch to help make jp work with ORBS battle system
26/06/09
- skills help window full opacity
- item Jp gain fixed, demo increase jp fixed
- can show class lvl in menustatus and status screens
25/06/09
- released script
Features
-skills are based on individual class level
-set max levels for classes
-job points are learned by monsters defeated and/or actions taken in battle
-each actor has their own list of classes
-classes can be added or removed
-base stats (atk, def, spi, agi) can be dependent on class
-actor options (ie. Super Guard, 2-swords, autobattle, pharmacology) can be dependent on class
-actor graphic can change based on class
-class dependent increases when actor level increases
-shows in menu (disable/enable, hide/show with switches)
script Updated
Part A: (updated 31/01/10, no scripting changes)
Click to view attachment
Part B: (New
Click to view attachment
split into two parts to make updating easier
Mostly just plug-n-play(paste it below materials, above main)
Click to view attachment
Addon to change equippable items based on all classes in an actor's list
ie. if an actor can become a knight and a mage, equippable items are from both classes, not just the class equipped.
put addon below script
addon
# Blackmorning Job Changer Addon
# Equippable items are based on all of the unlocked classes in an actor's list.
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
alias job_equippable? equippable?
#--------------------------------------------------------------------------
def equippable?(item)
result = false
for i in @unlocked_classes
job = $data_classes[i]
if item.is_a?(RPG::Weapon)
result = job.weapon_set.include?(item.id)
elsif item.is_a?(RPG::Armor)
result = job.armor_set.include?(item.id)
end
if result
return result
end
end
return job_equippable?(item)
end
end
CODE
# Blackmorning Job Changer Addon
# Equippable items are based on all of the unlocked classes in an actor's list.
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
alias job_equippable? equippable?
#--------------------------------------------------------------------------
def equippable?(item)
result = false
for i in @unlocked_classes
job = $data_classes[i]
if item.is_a?(RPG::Weapon)
result = job.weapon_set.include?(item.id)
elsif item.is_a?(RPG::Armor)
result = job.armor_set.include?(item.id)
end
if result
return result
end
end
return job_equippable?(item)
end
end
Addon for switching on/off jp gain
put below job changer script and any of my addons if you have them
addon
# put below all other blackmorning job changer scripts
# including Yanfly Engine RD Victory Aftermath Extra Page - Blackmorning Job Changer
module S_B
module CLASS
# unless switch is on, no jp is gained
# switch is automatically on at start of game if MENU_CLASS_CHANGE_OPTION = false
NO_GAIN_JP_SWITCH = 20
end
end
#===============================================================================
# ■ Scene_Title
#===============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ● Create various game objects
#--------------------------------------------------------------------------
def create_game_objects
job_create_game_objects
unless S_B::CLASS::MENU_CLASS_CHANGE_OPTION
$game_switches[S_B::CLASS::DISABLE_CLASS] = true
$game_switches[S_B::CLASS::HIDE_CLASS] = true
$game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH] = true
end
end
end
#==============================================================================
# ** Scene_Battle (addon) *from yanfly
#==============================================================================
class Scene_Battle < Scene_Base
alias display_JP_nogain display_JP
def display_JP
unless $game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH]
display_JP_nogain
end
end
end
if $imported["VAEP-GainJP"]
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# alias display_extra_pages
#--------------------------------------------------------------------------
alias nogain_display_extra_pages display_extra_pages
def display_extra_pages
if $game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH]
display_extra_pages_bmjp
else
nogain_display_extra_pages
end
end
alias nogain_hidden_extra_pages hidden_extra_pages
def hidden_extra_pages
if $game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH]
hidden_extra_pages_bmjp
else
nogain_hidden_extra_pages
end
end
end
end
CODE
# put below all other blackmorning job changer scripts
# including Yanfly Engine RD Victory Aftermath Extra Page - Blackmorning Job Changer
module S_B
module CLASS
# unless switch is on, no jp is gained
# switch is automatically on at start of game if MENU_CLASS_CHANGE_OPTION = false
NO_GAIN_JP_SWITCH = 20
end
end
#===============================================================================
# ■ Scene_Title
#===============================================================================
class Scene_Title < Scene_Base
#--------------------------------------------------------------------------
# ● Create various game objects
#--------------------------------------------------------------------------
def create_game_objects
job_create_game_objects
unless S_B::CLASS::MENU_CLASS_CHANGE_OPTION
$game_switches[S_B::CLASS::DISABLE_CLASS] = true
$game_switches[S_B::CLASS::HIDE_CLASS] = true
$game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH] = true
end
end
end
#==============================================================================
# ** Scene_Battle (addon) *from yanfly
#==============================================================================
class Scene_Battle < Scene_Base
alias display_JP_nogain display_JP
def display_JP
unless $game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH]
display_JP_nogain
end
end
end
if $imported["VAEP-GainJP"]
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# alias display_extra_pages
#--------------------------------------------------------------------------
alias nogain_display_extra_pages display_extra_pages
def display_extra_pages
if $game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH]
display_extra_pages_bmjp
else
nogain_display_extra_pages
end
end
alias nogain_hidden_extra_pages hidden_extra_pages
def hidden_extra_pages
if $game_switches[S_B::CLASS::NO_GAIN_JP_SWITCH]
hidden_extra_pages_bmjp
else
nogain_hidden_extra_pages
end
end
end
end
For various uses, see the demo. Download here: (version 2.02 from 01/08/10)
Megaupload
4shared
Take a look in the customize section of this script and see what you want to use. Many parts can be turned on/off easily.
customize
#=============================================================================
# * Customize *
#=============================================================================
#-----------------------------------------------------------------------------
# Name for the experience gained for Job class
#-----------------------------------------------------------------------------
CLASS_EXP = "Job Points"
CLASS_EXP_A = "JP"
#-----------------------------------------------------------------------------
# What appears in the menu to call script
#-----------------------------------------------------------------------------
MENU_CLASS_CHANGE_TITLE = "Classes"
#-----------------------------------------------------------------------------
# Shows actors' class level in main menu & status screens
#-----------------------------------------------------------------------------
SHOW_CLASS_LVL_MAIN = true
SHOW_CLASS_LVL_STATUS = true
#-----------------------------------------------------------------------------
# Whether or not class changing is allowed at the begining of the game
#-----------------------------------------------------------------------------
MENU_CLASS_CHANGE_OPTION = true
#-----------------------------------------------------------------------------
# Switch ID to enable class changing in the menu
#-----------------------------------------------------------------------------
DISABLE_CLASS = 21
HIDE_CLASS = 22
#-----------------------------------------------------------------------------
# JP earned through various battle options *Yanfly
#-----------------------------------------------------------------------------
USE_BONUS_JP = false
# This sets whether or not you'd like your actors to display the JP they've
# earned in battle (since every action adds JP)
DISPLAY_BONUS_JP = true
DISPLAY_ACTOR_MSG = "%s gained an extra %d #{S_B::CLASS::CLASS_EXP_A} this battle."
# JP is earned throughout battle from different effects. You can determine
# what will earn JP here and by how much. Set amounts are the increases that
# will always occur so long as the action is enabled. Random amounts will
# increase the JP earned from 0 to that amount.
EARN_JP_VIA_ATTACK_ENABLE = true # Normal attacks will earn JP.
EARN_JP_VIA_ATTACK_AMOUNT = 4 # Earns at least this amount of JP.
EARN_JP_VIA_ATTACK_RANDOM = 0 # Earns up to this random amount.
EARN_JP_VIA_SKILL_ENABLE = true # Skills will earn JP.
EARN_JP_VIA_SKILL_AMOUNT = 2 # Earns at least this amount of JP.
EARN_JP_VIA_SKILL_RANDOM = 2 # Earns up to this random amount.
EARN_JP_VIA_GUARD_ENABLE = false # Guarding will earn JP.
EARN_JP_VIA_GUARD_AMOUNT = 2 # Earns at least this amount of JP.
EARN_JP_VIA_GUARD_RANDOM = 2 # Earns up to this random amount.
EARN_JP_VIA_ITEMS_ENABLE = true # Using items will earn JP.
EARN_JP_VIA_ITEMS_AMOUNT = 2 # Earns at least this amount of JP.
EARN_JP_VIA_ITEMS_RANDOM = 1 # Earns up to this random amount.
#-----------------------------------------------------------------------------
# JP from enemies *Yanfly
# This determines whether or not enemies will give JP if killed and the
# default amount if not set with <enemy jp x>.
#-----------------------------------------------------------------------------
ENEMIES_GIVE_JP = true
ENEMIES_JP_DEFAULT = 2
#-----------------------------------------------------------------------------
# Vocab for end of combat *Prexus
#-----------------------------------------------------------------------------
ObtainClassExp = "%s #{S_B::CLASS::CLASS_EXP_A} were earned!"
# first %s is # of JP earned
ClassLevelUp = "%s is now %s %s %s!"
# first %s is actor, second %s is class, third & fourth is level
#-----------------------------------------------------------------------------
# Maximum level per job *Blackmorning and Mithran
# do not go above 99
#-----------------------------------------------------------------------------
MAX_CLASS_LEVEL_DEFAULT = 30
CLASS_MAX_LEVELS = {} # Do not alter this line!
# Below here, set up the individiual max levels for each class.
# CLASS_MAX_LEVELS[class_id] = maxlevel
CLASS_MAX_LEVELS[1] = 30
# Paladin is capped at level 30
CLASS_MAX_LEVELS[2] = 99
# Warrior is capped at level 99
CLASS_MAX_LEVELS[3] = 40
# Priest is capped at level 99
CLASS_MAX_LEVELS[4] = 50
# Magician is capped at level 50
#-----------------------------------------------------------------------------
# Icon used to show MAX level *Blackmorning
#-----------------------------------------------------------------------------
MASTERED_ICON = 102
#-----------------------------------------------------------------------------
# If set to true, actor keeps skills learned when changing classes
#-----------------------------------------------------------------------------
KEEP_SKILLS = true
#-----------------------------------------------------------------------------
# Icon beside skills in class menu
#-----------------------------------------------------------------------------
Skills_Icon = 128
#-----------------------------------------------------------------------------
# Show skills window in job change
#-----------------------------------------------------------------------------
SHOW_SKILLS_WINDOW = Input::A
#-----------------------------------------------------------------------------
# CLASS SPECIFIC CHARACTER GFX - *Enelvon
# {:content:}quot;actor_ID"_"class_ID"
#-----------------------------------------------------------------------------
CHANGE_GRAPHIC = true
#-----------------------------------------------------------------------------
AVAILABLE_CLASSES = { # don't change
# format: actor_id => [class_id, class_id...],
#-----------------------------------------------------------------------------
1 => [1,2,5],
2 => [2,5,6],
3 => [3,4],
4 => [3,4],
5 => [1,2,5,6],
6 => [5,6],
7 => [7],
8 => [7,8],
} # don't change
#-----------------------------------------------------------------------------
# Enter the ID's of the characters that learn skills by other means.
# ie. using blue mage scripts, OriginalWij sequence skills
# not necessary when KEEP_SKILLS = true
#-----------------------------------------------------------------------------
SPECIAL_CLASS_ACTORS = []
#-----------------------------------------------------------------------------
# Define which Class_ID's use these special options. *TBK
#-----------------------------------------------------------------------------
CHANGE_ACTOR_OPTIONS = true
CRITICAL_CLASSES = [2]
TWOSWORDS_CLASSES = [8]
# Actor will automatically attack.
AUTOBATTLE_CLASSES = [2]
# Actor will take even less damage when guarding.
SUPERGUARD_CLASSES = [1,5,6]
# Items will have double effect when used by actor.
PHARMACOLOGY_CLASSES = [3]
#-----------------------------------------------------------------------------
HALP_MP_CLASSES = [4]
HP_RECOVER = [3]
FAST_ATTACK = [2,8]
#-----------------------------------------------------------------------------
# Yanfly Engine RD - Battler Stat: Barehand
# Last Date Updated: 2009.05.14
# For those that would like to give their actors stronger strength when no
# weapon is equipped, there is a barehand stat now. You can adjust how strong
# an actor's barehanded multiplier will grow each level so that way, you don't
# have your actors going over the top strong from the beginning.
#-----------------------------------------------------------------------------
# This is the array of classes that can fight barehanded.
BAREHANDED_CLASSES = [7]
# This is the multiplier given to base attack when no weapon is equipped.
BAREHAND_BASE_MULTIPLIER = 150
BAREHAND_PER_LEVEL_BOOST = 5 # based on class level
BAREHAND_MAX_MULTIPLIER = 400
#-----------------------------------------------------------------------------
# CLASS "BASED STAT MULTIPLIER" - *Enelv-on - specifically for the JobChanger
# Redesigned by Blackmorning
#-----------------------------------------------------------------------------
# Below are the Multipliers for each Class ID/Stat
# Class ID => Stat Multipliers
# example: if you want Class_ID #1 to have normal MAXHP (ie 100%)
# you would set the multiplier to 1.0
#-----------------------------------------------------------------------------
# This determines whether or not actor stats are affected by their what
# class they have equipped.
CHANGE_BASE_STATS = true
# This affects the display type for new stats.
# if true, Shows the increase/decrease in the stat.
# if false, Shows the new stat itself.
SHOW_DIFFERENCE = true
#-----------------------------------------------------------------------------
BASE_STAT_CHANGE = { # <--- Do not remove
# Class HP MP ATK DEF INT AGI
0 => [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], # default
1 => [ 1.0, 0.8, 1.0, 1.0, 1.0, 1.0], #Paladin
2 => [ 1.0, 0.5, 1.2, 0.7, 0.7, 1.2], #Beserker
3 => [ 0.75, 1.2, 0.7, 0.7, 1.15, 0.7], #Priest
4 => [ 0.7, 1.15, 0.7, 0.7, 1.2, 0.7], #Magician
5 => [ 1.0, 0.8, 1.0, 1.0, 0.8, 1.0], #Knight
6 => [ 1.0, 0.8, 1.0, 1.0, 1.0, 1.0], #Dark Knight
7 => [ 1.2, 0.5, 1.1, 1.1, 0.8, 1.15], #Monk
8 => [ 0.85, 0.7, 0.8, 0.7, 0.7, 1.2], #Thief
} # Do not remove this.
#==========================================================================
# BigEd781's Class Dependant Stat Bonuses
#--------------------------------------------------------------------------
# The purpose of this script is to allow one to set stat
# bonuses upon class level up depending on the player's class.
#==========================================================================
# * When the below value is set to "true", the table of constant values
# below it are used to determine what class level up bonuses are, depending
# on the class.
#==========================================================================
LEVEL_UP_BONUSES = true
CLASS_LEVEL_UP_BONUS_CLASS_DEP = false
# if true, bonuses based on class level
# if false, bonuses based on actor level
#========================================================================
# * Configuration module
#========================================================================
STAT_BONUS = { # <--- Do not remove
# Class HP MP ATK DEF INT AGI
1 => [ 526, 0, 4, 5, 0, 0], #Paladin
2 => [ 29, 0, 8, 0, 0, 2], #Beserker
3 => [ 0, 19, 0, 0, 8, 0], #Priest
4 => [ 0, 26, 0, 0, 7, 0], #Magician
5 => [ 24, 0, 4, 4, 0, 0], #Knight
6 => [ 26, 0, 6, 6, 0, 0], #Dark Knight
7 => [ 34, 0, 8, 2, 0, 3], #Monk
8 => [ 12, 0, 2, 0, 0, 11], #Thief
} # Do not remove this.
#=============================================================================
# if level is decreased, are stat bonuses lost?
#=============================================================================
LOSE_STAT_BONUS = false
#=============================================================================
# format: class_id => ["description"],
Class_Descriptions = { # <--- Do not remove
1 =>["A holy warrior."], #Paladin
2 =>["Master of all weapons and armor."], #Beserker
3 =>["A Divine healer."], #Priest
4 =>["Purveyor of the magical arts."], #Magician
5 =>["Defender of the people."],#Knight
6 =>["A warrior born of darkness."], #Dark Knight
7 =>["An expert in hand-to-hand combat."], #Grappler
8 =>["Professional sneak and highwayman."],#Thief
}# <--- Do not remove
#=============================================================================
# icons appear next to class in job changer window # requested by Andrelvis
USE_ICONS_FOR_CLASSES = true
# format: class_id => [icon_id],
Class_Icons = { # <--- Do not remove
0 => 0, #default if no icon assigned
1 => 52,
2 => 6,
3 => 189,
4 => 212,
5 => 2,
6 => 136,
7 => 51,
8 => 147,
} # <--- Do not remove
Custom_JP_Needed_For_Level = true
# If true, uses exp_list as starting values and similar formula.
# If false, solely uses exp_list for jp needed for class level up.
CLASS_JP_MOD_BASIS = 15
CLASS_JP_MOD_INFLATION = 20
CLASS_JP_MOD = {# <--- Do not remove
#format: class_id => [basis, inflation],
1 => [20, 15],
2 => [10, 20],
2 => [25, 25],
}# <--- Do not remove
#=============================================================================
# * End Customization *
#=============================================================================
CODE
#=============================================================================
# * Customize *
#=============================================================================
#-----------------------------------------------------------------------------
# Name for the experience gained for Job class
#-----------------------------------------------------------------------------
CLASS_EXP = "Job Points"
CLASS_EXP_A = "JP"
#-----------------------------------------------------------------------------
# What appears in the menu to call script
#-----------------------------------------------------------------------------
MENU_CLASS_CHANGE_TITLE = "Classes"
#-----------------------------------------------------------------------------
# Shows actors' class level in main menu & status screens
#-----------------------------------------------------------------------------
SHOW_CLASS_LVL_MAIN = true
SHOW_CLASS_LVL_STATUS = true
#-----------------------------------------------------------------------------
# Whether or not class changing is allowed at the begining of the game
#-----------------------------------------------------------------------------
MENU_CLASS_CHANGE_OPTION = true
#-----------------------------------------------------------------------------
# Switch ID to enable class changing in the menu
#-----------------------------------------------------------------------------
DISABLE_CLASS = 21
HIDE_CLASS = 22
#-----------------------------------------------------------------------------
# JP earned through various battle options *Yanfly
#-----------------------------------------------------------------------------
USE_BONUS_JP = false
# This sets whether or not you'd like your actors to display the JP they've
# earned in battle (since every action adds JP)
DISPLAY_BONUS_JP = true
DISPLAY_ACTOR_MSG = "%s gained an extra %d #{S_B::CLASS::CLASS_EXP_A} this battle."
# JP is earned throughout battle from different effects. You can determine
# what will earn JP here and by how much. Set amounts are the increases that
# will always occur so long as the action is enabled. Random amounts will
# increase the JP earned from 0 to that amount.
EARN_JP_VIA_ATTACK_ENABLE = true # Normal attacks will earn JP.
EARN_JP_VIA_ATTACK_AMOUNT = 4 # Earns at least this amount of JP.
EARN_JP_VIA_ATTACK_RANDOM = 0 # Earns up to this random amount.
EARN_JP_VIA_SKILL_ENABLE = true # Skills will earn JP.
EARN_JP_VIA_SKILL_AMOUNT = 2 # Earns at least this amount of JP.
EARN_JP_VIA_SKILL_RANDOM = 2 # Earns up to this random amount.
EARN_JP_VIA_GUARD_ENABLE = false # Guarding will earn JP.
EARN_JP_VIA_GUARD_AMOUNT = 2 # Earns at least this amount of JP.
EARN_JP_VIA_GUARD_RANDOM = 2 # Earns up to this random amount.
EARN_JP_VIA_ITEMS_ENABLE = true # Using items will earn JP.
EARN_JP_VIA_ITEMS_AMOUNT = 2 # Earns at least this amount of JP.
EARN_JP_VIA_ITEMS_RANDOM = 1 # Earns up to this random amount.
#-----------------------------------------------------------------------------
# JP from enemies *Yanfly
# This determines whether or not enemies will give JP if killed and the
# default amount if not set with <enemy jp x>.
#-----------------------------------------------------------------------------
ENEMIES_GIVE_JP = true
ENEMIES_JP_DEFAULT = 2
#-----------------------------------------------------------------------------
# Vocab for end of combat *Prexus
#-----------------------------------------------------------------------------
ObtainClassExp = "%s #{S_B::CLASS::CLASS_EXP_A} were earned!"
# first %s is # of JP earned
ClassLevelUp = "%s is now %s %s %s!"
# first %s is actor, second %s is class, third & fourth is level
#-----------------------------------------------------------------------------
# Maximum level per job *Blackmorning and Mithran
# do not go above 99
#-----------------------------------------------------------------------------
MAX_CLASS_LEVEL_DEFAULT = 30
CLASS_MAX_LEVELS = {} # Do not alter this line!
# Below here, set up the individiual max levels for each class.
# CLASS_MAX_LEVELS[class_id] = maxlevel
CLASS_MAX_LEVELS[1] = 30
# Paladin is capped at level 30
CLASS_MAX_LEVELS[2] = 99
# Warrior is capped at level 99
CLASS_MAX_LEVELS[3] = 40
# Priest is capped at level 99
CLASS_MAX_LEVELS[4] = 50
# Magician is capped at level 50
#-----------------------------------------------------------------------------
# Icon used to show MAX level *Blackmorning
#-----------------------------------------------------------------------------
MASTERED_ICON = 102
#-----------------------------------------------------------------------------
# If set to true, actor keeps skills learned when changing classes
#-----------------------------------------------------------------------------
KEEP_SKILLS = true
#-----------------------------------------------------------------------------
# Icon beside skills in class menu
#-----------------------------------------------------------------------------
Skills_Icon = 128
#-----------------------------------------------------------------------------
# Show skills window in job change
#-----------------------------------------------------------------------------
SHOW_SKILLS_WINDOW = Input::A
#-----------------------------------------------------------------------------
# CLASS SPECIFIC CHARACTER GFX - *Enelvon
# {:content:}quot;actor_ID"_"class_ID"
#-----------------------------------------------------------------------------
CHANGE_GRAPHIC = true
#-----------------------------------------------------------------------------
AVAILABLE_CLASSES = { # don't change
# format: actor_id => [class_id, class_id...],
#-----------------------------------------------------------------------------
1 => [1,2,5],
2 => [2,5,6],
3 => [3,4],
4 => [3,4],
5 => [1,2,5,6],
6 => [5,6],
7 => [7],
8 => [7,8],
} # don't change
#-----------------------------------------------------------------------------
# Enter the ID's of the characters that learn skills by other means.
# ie. using blue mage scripts, OriginalWij sequence skills
# not necessary when KEEP_SKILLS = true
#-----------------------------------------------------------------------------
SPECIAL_CLASS_ACTORS = []
#-----------------------------------------------------------------------------
# Define which Class_ID's use these special options. *TBK
#-----------------------------------------------------------------------------
CHANGE_ACTOR_OPTIONS = true
CRITICAL_CLASSES = [2]
TWOSWORDS_CLASSES = [8]
# Actor will automatically attack.
AUTOBATTLE_CLASSES = [2]
# Actor will take even less damage when guarding.
SUPERGUARD_CLASSES = [1,5,6]
# Items will have double effect when used by actor.
PHARMACOLOGY_CLASSES = [3]
#-----------------------------------------------------------------------------
HALP_MP_CLASSES = [4]
HP_RECOVER = [3]
FAST_ATTACK = [2,8]
#-----------------------------------------------------------------------------
# Yanfly Engine RD - Battler Stat: Barehand
# Last Date Updated: 2009.05.14
# For those that would like to give their actors stronger strength when no
# weapon is equipped, there is a barehand stat now. You can adjust how strong
# an actor's barehanded multiplier will grow each level so that way, you don't
# have your actors going over the top strong from the beginning.
#-----------------------------------------------------------------------------
# This is the array of classes that can fight barehanded.
BAREHANDED_CLASSES = [7]
# This is the multiplier given to base attack when no weapon is equipped.
BAREHAND_BASE_MULTIPLIER = 150
BAREHAND_PER_LEVEL_BOOST = 5 # based on class level
BAREHAND_MAX_MULTIPLIER = 400
#-----------------------------------------------------------------------------
# CLASS "BASED STAT MULTIPLIER" - *Enelv-on - specifically for the JobChanger
# Redesigned by Blackmorning
#-----------------------------------------------------------------------------
# Below are the Multipliers for each Class ID/Stat
# Class ID => Stat Multipliers
# example: if you want Class_ID #1 to have normal MAXHP (ie 100%)
# you would set the multiplier to 1.0
#-----------------------------------------------------------------------------
# This determines whether or not actor stats are affected by their what
# class they have equipped.
CHANGE_BASE_STATS = true
# This affects the display type for new stats.
# if true, Shows the increase/decrease in the stat.
# if false, Shows the new stat itself.
SHOW_DIFFERENCE = true
#-----------------------------------------------------------------------------
BASE_STAT_CHANGE = { # <--- Do not remove
# Class HP MP ATK DEF INT AGI
0 => [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], # default
1 => [ 1.0, 0.8, 1.0, 1.0, 1.0, 1.0], #Paladin
2 => [ 1.0, 0.5, 1.2, 0.7, 0.7, 1.2], #Beserker
3 => [ 0.75, 1.2, 0.7, 0.7, 1.15, 0.7], #Priest
4 => [ 0.7, 1.15, 0.7, 0.7, 1.2, 0.7], #Magician
5 => [ 1.0, 0.8, 1.0, 1.0, 0.8, 1.0], #Knight
6 => [ 1.0, 0.8, 1.0, 1.0, 1.0, 1.0], #Dark Knight
7 => [ 1.2, 0.5, 1.1, 1.1, 0.8, 1.15], #Monk
8 => [ 0.85, 0.7, 0.8, 0.7, 0.7, 1.2], #Thief
} # Do not remove this.
#==========================================================================
# BigEd781's Class Dependant Stat Bonuses
#--------------------------------------------------------------------------
# The purpose of this script is to allow one to set stat
# bonuses upon class level up depending on the player's class.
#==========================================================================
# * When the below value is set to "true", the table of constant values
# below it are used to determine what class level up bonuses are, depending
# on the class.
#==========================================================================
LEVEL_UP_BONUSES = true
CLASS_LEVEL_UP_BONUS_CLASS_DEP = false
# if true, bonuses based on class level
# if false, bonuses based on actor level
#========================================================================
# * Configuration module
#========================================================================
STAT_BONUS = { # <--- Do not remove
# Class HP MP ATK DEF INT AGI
1 => [ 526, 0, 4, 5, 0, 0], #Paladin
2 => [ 29, 0, 8, 0, 0, 2], #Beserker
3 => [ 0, 19, 0, 0, 8, 0], #Priest
4 => [ 0, 26, 0, 0, 7, 0], #Magician
5 => [ 24, 0, 4, 4, 0, 0], #Knight
6 => [ 26, 0, 6, 6, 0, 0], #Dark Knight
7 => [ 34, 0, 8, 2, 0, 3], #Monk
8 => [ 12, 0, 2, 0, 0, 11], #Thief
} # Do not remove this.
#=============================================================================
# if level is decreased, are stat bonuses lost?
#=============================================================================
LOSE_STAT_BONUS = false
#=============================================================================
# format: class_id => ["description"],
Class_Descriptions = { # <--- Do not remove
1 =>["A holy warrior."], #Paladin
2 =>["Master of all weapons and armor."], #Beserker
3 =>["A Divine healer."], #Priest
4 =>["Purveyor of the magical arts."], #Magician
5 =>["Defender of the people."],#Knight
6 =>["A warrior born of darkness."], #Dark Knight
7 =>["An expert in hand-to-hand combat."], #Grappler
8 =>["Professional sneak and highwayman."],#Thief
}# <--- Do not remove
#=============================================================================
# icons appear next to class in job changer window # requested by Andrelvis
USE_ICONS_FOR_CLASSES = true
# format: class_id => [icon_id],
Class_Icons = { # <--- Do not remove
0 => 0, #default if no icon assigned
1 => 52,
2 => 6,
3 => 189,
4 => 212,
5 => 2,
6 => 136,
7 => 51,
8 => 147,
} # <--- Do not remove
Custom_JP_Needed_For_Level = true
# If true, uses exp_list as starting values and similar formula.
# If false, solely uses exp_list for jp needed for class level up.
CLASS_JP_MOD_BASIS = 15
CLASS_JP_MOD_INFLATION = 20
CLASS_JP_MOD = {# <--- Do not remove
#format: class_id => [basis, inflation],
1 => [20, 15],
2 => [10, 20],
2 => [25, 25],
}# <--- Do not remove
#=============================================================================
# * End Customization *
#=============================================================================
Screenshots

appears in menu below game end

organized windows to see class change options

view skills learned with each class

job points added in battle via enemies defeated and battlers actions

see class level in status screen

appears in menu below game end

organized windows to see class change options

view skills learned with each class

job points added in battle via enemies defeated and battlers actions

see class level in status screen
Compatibility
- works with KGC limit break, KGC EquipExtension, YERD Equip Skill Slots
For those that are using Yanfly's Display Victory aftermath, put this patch below my script and DVA
Click to view attachment
Click to view attachment
It makes it so that enemies give jp when defeated. It also allows you to get jp for using a skill in ORBS. It already works for giving jp for attacking.
ORBS Patch
# patch for Blackmorning Jobchanger to ORBS
# ver. 1
# attack can gain jp (USE_BONUS_JP == true),
# and defeated enemies give JP (ENEMIES_GIVE_JP)
module ORBS
JP_TEXT = "%djp"
end
class << ORBS
attr_reader :jptext_color
alias jobstart start
def start
jobstart
@jptext_color = Color.new(200, 60, 80)
end
def action_process(character, target_dir, action = 0)
play_movement
if action == 0
character.battler.action.set_attack
else
character.battler.action.set_skill(action)
end
character.set_direction(target_dir)
character.rbs_ai.executed = true
sequence = ORBS::ACTION_SEQUENCES[character.battler.get_action_sequence(action)]
character.battler.consume_skill_cost($data_skills[action]) if action > 0
@map_spriteset.refresh_battler_info(character.battler)
@sequence_processor.process(sequence, character, (action > 0 ? $data_skills[action] : nil))
for char in [$game_player] + $game_members + $game_map.enemies
char.action_x_plus = 0
char.action_y_plus = 0
end
for char in $game_map.enemies.clone
battler = char.battler
if battler.dead?
char.destroy_battler
interpreter_update_loop
members = ([$game_player] + $game_members).shuffle
members.unshift(members.delete(character))
unless battler.exp == 0
for _character in members
next if _character.battler.nil? or (not _character.battler.exist?)
exp = battler.exp
exp *= ORBS::EXP_TO_KILLER.to_f / 100.0 if _character == character
text = sprintf(ORBS::EXP_TEXT, exp.to_i)
ORBS.misc_font.color = ORBS.etext_color
$game_map.interpreter.spawn_text(_character.x, _character.y, -1, 0, 3,
nil, text)
$scene.update_basic
c_bat = _character.battler
prevlevel = c_bat.level
c_bat.gain_exp(exp.to_i, false)
if prevlevel < c_bat.level
4.times do $scene.update_basic end
animation = $data_animations[ORBS::LEVEL_UP_ANIM]
unless animation.nil?
sx = ($game_map.adjust_x(_character.x * 256) + 8007) / 8 - 1000
sy = ($game_map.adjust_y(_character.y * 256) + 8007) / 8 - 1000
@map_spriteset.show_rbs_anim_at(sx, sy,
$data_animations[ORBS::LEVEL_UP_ANIM],
ORBS::LEVEL_UP_ANIM_SIZE.to_f / 100.0)
end
text = ORBS::LEVEL_UP_TEXT
$game_map.interpreter.spawn_text(_character.x, _character.y,
-1, 0, 3, nil, text)
if ORBS::HEAL_ON_LEVEL_UP
c_bat.recover_all
ORBS.map_spriteset.refresh_battler_info(c_bat)
end
Graphics.frame_reset
end
6.times do $scene.update_basic end
if S_B::CLASS::ENEMIES_GIVE_JP
unless battler.enemy.enemy_jp == 0
jp = battler.enemy.enemy_jp
jp *= ORBS::EXP_TO_KILLER.to_f / 100.0 if _character == character
text = sprintf(ORBS::JP_TEXT, jp.to_i)
ORBS.misc_font.color = ORBS.jptext_color
$game_map.interpreter.spawn_text(_character.x, _character.y, -1, 0, 3,
nil, text)
$scene.update_basic
c_bat.jp_received(jp.to_i, nil, true)
6.times do $scene.update_basic end
end
end
end
end
unless battler.gold == 0
text = sprintf(ORBS::GOLD_TEXT, battler.gold)
ORBS.misc_font.color = ORBS.gtext_color
$game_map.interpreter.spawn_text($game_player.x, $game_player.y, -1, 0,
3, nil, text)
$game_party.gain_gold(battler.gold)
10.times do $scene.update_basic end
end
end
end
ORBS.map_spriteset.refresh_hotkey_tones if character == $game_player
end
end
class Game_Battler
# alias skill_effect_sss skill_effect
def skill_effect(user, skill)
skill_effect_sss(user, skill)
return unless user.actor?
return unless S_B::CLASS::USE_BONUS_JP
return unless S_B::CLASS::EARN_JP_VIA_SKILL_ENABLE
return if $scene.is_a?(Scene_Skill)
amount = S_B::CLASS::EARN_JP_VIA_SKILL_AMOUNT
unless S_B::CLASS::EARN_JP_VIA_SKILL_RANDOM == 0
amount += rand(S_B::CLASS::EARN_JP_VIA_SKILL_RANDOM)
end
amount += skill.jp_boost_set unless skill.jp_boost_set <= 0
exp += rand(skill.jp_boost_ran) unless skill.jp_boost_ran <= 0
user.gain_jp_battle(amount)
end
end
CODE
# patch for Blackmorning Jobchanger to ORBS
# ver. 1
# attack can gain jp (USE_BONUS_JP == true),
# and defeated enemies give JP (ENEMIES_GIVE_JP)
module ORBS
JP_TEXT = "%djp"
end
class << ORBS
attr_reader :jptext_color
alias jobstart start
def start
jobstart
@jptext_color = Color.new(200, 60, 80)
end
def action_process(character, target_dir, action = 0)
play_movement
if action == 0
character.battler.action.set_attack
else
character.battler.action.set_skill(action)
end
character.set_direction(target_dir)
character.rbs_ai.executed = true
sequence = ORBS::ACTION_SEQUENCES[character.battler.get_action_sequence(action)]
character.battler.consume_skill_cost($data_skills[action]) if action > 0
@map_spriteset.refresh_battler_info(character.battler)
@sequence_processor.process(sequence, character, (action > 0 ? $data_skills[action] : nil))
for char in [$game_player] + $game_members + $game_map.enemies
char.action_x_plus = 0
char.action_y_plus = 0
end
for char in $game_map.enemies.clone
battler = char.battler
if battler.dead?
char.destroy_battler
interpreter_update_loop
members = ([$game_player] + $game_members).shuffle
members.unshift(members.delete(character))
unless battler.exp == 0
for _character in members
next if _character.battler.nil? or (not _character.battler.exist?)
exp = battler.exp
exp *= ORBS::EXP_TO_KILLER.to_f / 100.0 if _character == character
text = sprintf(ORBS::EXP_TEXT, exp.to_i)
ORBS.misc_font.color = ORBS.etext_color
$game_map.interpreter.spawn_text(_character.x, _character.y, -1, 0, 3,
nil, text)
$scene.update_basic
c_bat = _character.battler
prevlevel = c_bat.level
c_bat.gain_exp(exp.to_i, false)
if prevlevel < c_bat.level
4.times do $scene.update_basic end
animation = $data_animations[ORBS::LEVEL_UP_ANIM]
unless animation.nil?
sx = ($game_map.adjust_x(_character.x * 256) + 8007) / 8 - 1000
sy = ($game_map.adjust_y(_character.y * 256) + 8007) / 8 - 1000
@map_spriteset.show_rbs_anim_at(sx, sy,
$data_animations[ORBS::LEVEL_UP_ANIM],
ORBS::LEVEL_UP_ANIM_SIZE.to_f / 100.0)
end
text = ORBS::LEVEL_UP_TEXT
$game_map.interpreter.spawn_text(_character.x, _character.y,
-1, 0, 3, nil, text)
if ORBS::HEAL_ON_LEVEL_UP
c_bat.recover_all
ORBS.map_spriteset.refresh_battler_info(c_bat)
end
Graphics.frame_reset
end
6.times do $scene.update_basic end
if S_B::CLASS::ENEMIES_GIVE_JP
unless battler.enemy.enemy_jp == 0
jp = battler.enemy.enemy_jp
jp *= ORBS::EXP_TO_KILLER.to_f / 100.0 if _character == character
text = sprintf(ORBS::JP_TEXT, jp.to_i)
ORBS.misc_font.color = ORBS.jptext_color
$game_map.interpreter.spawn_text(_character.x, _character.y, -1, 0, 3,
nil, text)
$scene.update_basic
c_bat.jp_received(jp.to_i, nil, true)
6.times do $scene.update_basic end
end
end
end
end
unless battler.gold == 0
text = sprintf(ORBS::GOLD_TEXT, battler.gold)
ORBS.misc_font.color = ORBS.gtext_color
$game_map.interpreter.spawn_text($game_player.x, $game_player.y, -1, 0,
3, nil, text)
$game_party.gain_gold(battler.gold)
10.times do $scene.update_basic end
end
end
end
ORBS.map_spriteset.refresh_hotkey_tones if character == $game_player
end
end
class Game_Battler
# alias skill_effect_sss skill_effect
def skill_effect(user, skill)
skill_effect_sss(user, skill)
return unless user.actor?
return unless S_B::CLASS::USE_BONUS_JP
return unless S_B::CLASS::EARN_JP_VIA_SKILL_ENABLE
return if $scene.is_a?(Scene_Skill)
amount = S_B::CLASS::EARN_JP_VIA_SKILL_AMOUNT
unless S_B::CLASS::EARN_JP_VIA_SKILL_RANDOM == 0
amount += rand(S_B::CLASS::EARN_JP_VIA_SKILL_RANDOM)
end
amount += skill.jp_boost_set unless skill.jp_boost_set <= 0
exp += rand(skill.jp_boost_ran) unless skill.jp_boost_ran <= 0
user.gain_jp_battle(amount)
end
end
Special thanks to Yanfly, Prexus, tkblackknight and BigEd781. This script would not be complete without yours to inspire & help me.
