RMRK RPG Maker Creation => VX => VX Scripts Database => Topic started by: jet10985 on April 14, 2010, 04:15:31 AM
Title: Jet's Alignment System
Post by: jet10985 on April 14, 2010, 04:15:31 AM
Introduction
This script adds a simple and easy-to-use alignment system to your game. This will allow the character to be good, evil, or anything in-between. You can even change it up from alignment to other stuff like Rank or Vampirism.
Features
- Adds Alignment - Easy to add/subtract points - Easy to make new alignment names - Adds alignment name in status menu - You can add tags to equipment/skills to require a certain alignment condition
The alignment name and value match to the corresponding one in the other array.
EX: In the default, "Very Evil" is the first name, and -100 is the first condition
This means, if -100 or lower is the value of $game_system.alignment, the character will be "Very Evil". -------------------------------------------------------------------------------- How to change alignment: We have 2 command to change alignment points.
sub_alignment(points) and add_alignment(points)
In both commands, replace "points" with the amount of change you want in the character's alignment points.
sub_alignment will subtract the amount of points. add_alignment will add the amount of points
#=============================================================================== # Alignment System V.2 # By Jet10985 # Help by: Crimsonseas, Piejamas, Originalwij, Yanfly, Mithran # Inspired by: Synthesis #=============================================================================== # This script is not open for distribution to other sites without permission # from me, Jet10985. Please credit me if you use this script. #=============================================================================== # This script will allow you to add a nice alignment system to your game, which # can be used for more then alignment. EX: Ranks, Vampirism, etc. # This script has: 5 customization options. #===============================================================================
=begin The alignment name and value match to the corresponding one in the other array.
EX: In the default, "Very Evil" is the first name, and -100 is the first condition
This means, if -100 or lower is the value of $game_system.alignment, the character will be "Very Evil". -------------------------------------------------------------------------------- How to change alignment: We have 2 command to change alignment points.
sub_alignment(points) and add_alignment(points)
In both commands, replace "points" with the amount of change you want in the character's alignment points.
sub_alignment will subtract the amount of points. add_alignment will add the amount of points -------------------------------------------------------------------------------- Tagging equipment and skills:
To tag these in the database to require a certain amount of alignment points, add the tag
<alignment ##>
where ## is the number of points required. make sure you keep the <> because that's actually required. =end
ALIGNMENT_CONDITION = [-100, -50, 0, 50, 100] # What the value of $game_system.alignment # needs to be to correspond to the alignment name
NAME_OF_ALIGNMENT = "Alignment" # This is what alignment will be called altogether
USE_VARIABLE = false
VARIABLE_ID = 5
end # ending module #=============================================================================== class Game_System
include AlignmentOptions
alias jet5830_initialize initialize def initialize jet5830_initialize @alignment = 0 end
def alignment USE_VARIABLE ? $game_variables[VARIABLE_ID] : @alignment end
def alignment=(new_value) USE_VARIABLE ? $game_variables[VARIABLE_ID] = new_value : @alignment = new_value end end # ending Game_System addition
class Game_Interpreter
def add_alignment(points) # adding easy-to-us command to add alignment points $game_system.alignment += points # adding the arguement value from the variable end # ending definition
def sub_alignment(points) # adding easy-to-us command to subtract alignment points $game_system.alignment -= points # subtracting the arguement value from the variable end # ending definition end # ending addition to Game_Interpreter
class Window_Status
include AlignmentOptions # including the options defined in the module AlignmentOptions
alias jet5839_refresh refresh unless $@ # aliasing my new command to avoid compatibility issues def refresh jet5839_refresh # calls the old method self.contents.font.color = system_color # redefines the self contained font color self.contents.draw_text(290, 110, 500, 500, NAME_OF_ALIGNMENT + ":") # draws the name of alignment self.contents.font.color = normal_color # redefines the self contained font color self.contents.draw_text(400, 110, 500, 500, draw_alignment) # draws the alignment name in the window end # ending definition alias end
class Window_Base
include AlignmentOptions
def draw_alignment # Definition of Draw_alignment if $game_system.alignment <= ALIGNMENT_CONDITION.min return ALIGNMENT_NAME[0] elsif $game_system.alignment >= ALIGNMENT_CONDITION.max return ALIGNMENT_NAME[ALIGNMENT_NAME.size - 1] elsif for i in 0...ALIGNMENT_CONDITION.size if $game_system.alignment < ALIGNMENT_CONDITION[i] return ALIGNMENT_NAME[i-1] end end end end end
module Jet def self.get_note(obj, tag) notebox = obj.note.dup taglist = notebox.scan(/<.+>/) for t in taglist text = t.split(/[ <>]/) text.delete("") for item in text return text[text.index(item) + 1] if item == tag end end return nil end end
module RPG class BaseItem def alignment if @alignment_req.nil? txt = Jet.get_note(self, "alignment") @alignment_req = txt.nil? ? :unaligned : txt.to_i end return @alignment_req end end end
class Game_Actor
include AlignmentOptions
alias jet3849_skill_can_use? skill_can_use? def skill_can_use?(skill) if skill.alignment != :unaligned q = (ALIGNMENT_CONDITION.size / 2) if (skill.alignment < 0 or skill.alignment > 0) && ($game_system.alignment == 0) return false unless ((ALIGNMENT_CONDITION[q - 1] / 2)..(ALIGNMENT_CONDITION[q + 1] / 2)) === skill.alignment elsif skill.alignment > 0 return false unless $game_system.alignment >= skill.alignment elsif skill.alignment < 0 return false unless $game_system.alignment <= skill.alignment elsif skill.alignment == 0 return false unless (ALIGNMENT_CONDITION[q - 1]..ALIGNMENT_CONDITION[q + 1]) === skill.alignment end end jet3849_skill_can_use?(skill) end end
class Scene_Base
def equip_check check_equipment = @item_window.item.alignment if check_equipment != :unaligned if check_equipment < 0 return 1 elsif check_equipment > 0 return 0 elsif check_equipment == 0 return 2 end else return 3 end end end
class Scene_Equip
include AlignmentOptions
alias jet5839_start start def start jet5839_start @des_window = Window_Base.new(0, 185, 544, 56) @des_window.visible = false end
alias jet1047_terminate terminate def terminate jet1047_terminate @des_window.dispose end
alias jet2094_update update def update jet2094_update @des_window.update end
def full_equip_process Sound.play_equip @actor.change_equip(@equip_window.index, @item_window.item) @equip_window.active = true @item_window.active = false @item_window.index = -1 @equip_window.refresh for item_window in @item_windows item_window.refresh end end end
unless $engine_scripts.nil? JetEngine.active("Alignment System") end
Patches
Spoilerfor:
Place all patches below my alignment script AND the script being patched.
alias jet5999_refresh refresh unless $@ def refresh jet5999_refresh self.contents.font.color = system_color # redefines the self contained font color self.contents.draw_text(279, 96, 106, WLH, NAME_OF_ALIGNMENT + ":") # draws the name of alignment self.contents.font.color = normal_color # redefines the self contained font color self.contents.draw_text(382, 96, 90, WLH, draw_alignment) # draws the alignment name in the window end end
def update refresh if @v != $game_system.alignment @v = $game_system.alignment end end
Future Features
- Weapons/armor/skills dependent on alignment DONE - Choose bewteen an in-game variable and add_alignment(points) DONE - Suggested Features
FAQ
Q: How do I add or subtract points? A: Read the Instructions!
Q: How do I add more alignment names? A: Add the name, in quotes, where you want to. Then add the points requirement in the same place, but in the other array. EX:
Title: Re: Jet's Alignment System
Post by: modern algebra on April 15, 2010, 11:28:28 PM
Looks pretty neat :)
EDIT: Sorry, just realized you did do my suggestion :), so I erased it and hope you didn't see.
Anyway, great idea and I love that you took the time to integrate a visual component in the Status Scene. I'm always so lazy when it comes to graphical stuff @_@
Title: Re: Jet's Alignment System
Post by: jet10985 on April 15, 2010, 11:30:02 PM
There is an option to use a variable in the config. Thanks also. =)
Title: Re: Jet's Alignment System
Post by: modern algebra on April 15, 2010, 11:31:10 PM
Aww, my edit was 41 seconds too late :P
Title: Re: Jet's Alignment System
Post by: jdillon88 on August 06, 2010, 02:53:58 AM
is there a way to make it show up on the menu screen like next to the gold instead of the status screen?
Title: Re: Jet's Alignment System
Post by: Cascading Dragon on August 06, 2010, 02:57:47 AM
He hasn't updated the version on here in a while Go to rpgmaker.net and find the newest version
Title: Re: Jet's Alignment System
Post by: Wiimeiser on November 21, 2010, 02:42:47 AM
Any way I could get this to work with Scene Status Melody, rather than Redux? I know for a fact that a patch designed for Redux won't work with Melody. Do I just change parts of the patch or is a new one needed?
Title: Re: Jet's Alignment System
Post by: Wiimeiser on November 24, 2010, 08:19:55 AM
Seriously? No one ever makes compatibility patches for YEM? Only Redux?
Title: Re: Jet's Alignment System
Post by: hiromu656 on January 03, 2011, 03:50:32 AM
This is very useful since I plan on having more than one ending to my game, but is there a way for me to not show their Alignment in the menu. Because if it's there, players would tend to do specific things to go a certain way on the good or evil bar rather than playing the game how they would if there wasn't an alignment system.
Title: Re: Jet's Alignment System
Post by: Wiimeiser on November 06, 2011, 09:52:47 AM
Anyone interested in making another, more up-to-date compatibility patch, for the melody engine? I've asked this before...
Title: Re: Jet's Alignment System
Post by: fankem on November 06, 2011, 11:35:58 AM
How do we make a skill or an equipment dependent on a negative alignment, it doesn't work when I try but with positive alignment points it works
Title: Re: Jet's Alignment System
Post by: nemrog on December 04, 2011, 09:59:05 AM
I'll bump this cause the game I'm planning on making is heavily Alignment Orientated, and I'm curious to fankem's question as well.