Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[VX] Stat points distribution system

A Forgotten Legend":1ygto7yq said:
Do you know if this works with the Tankentai Sideview Battle System Scripts?.

Looks like a really good script. :)
i use both scripts, too, and i don't have problems. i haven't tested them fully though. but they work together.
 
eh so far it works fine... no problems at all for me in testing XD
just wish vx used strength and those kind of stats...
 
Is it is possible for this to show up in the menu?  I can't figure out how. =/

EDIT:  When I press left and right it doesn't move to another character.  Is it because there aren't any stat points left to use?  Or a bug?
 
When you say you press left and right, did you mean "<- Left Key" and "Right Key ->"? or "L" and "R" ?  :shock:

As for accessing this through menu, go into Scene_Menu and repace
$scene = Scene_Status.new(@status_window.index)
with
$scene = Scene_Stat_Dist.new(@status_window.index)
(around line 135)
this will replace the default status window with the stat dist. window~

but if you want to make a new menu, there'll be quite a bit of editing. Ask and I'll explain  :tongue2:
 
Everything in Status menu is available in Stat dist :3

And navigate between character with left and right button (not L and R ^_^)
or you can also use the default L and R button...which is Q and W for some reason ;D
 
D:! my host is down, and my local version of this script was heavily modified to fit with my other scripts. So all we can do is wait until it's back up >_< Sorry

@tofurkey : Learning skill using points would need a new system :x Though, I think it can be done with event *_*

@A Forgotten Legend : which "both" did you try? we got "Left and Right", "L and R" and "Q and W" ;o
 
I've found a bug that, if you don't have at least SOME weapon equipped in mode 2, it generates an error in line 317:

  elsif LayoutMode == 2
    draw_item_name(weapon,160+@exo2,125+OFFSET+@eyo,true)
    if weapon.two_handed == true                                              <<<<<------------ line 317
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end

Says "Undefined method 'two_handed' for nil:NilClass"

It doesn't matter if the weapon is 2-handed or not, it just needs a weapon there to work. No armor is ok, but since I'm going to have a "monk" type class in my game, I'm going to need it to work with no weapons in that person's slot..

EDIT: I forgot to mention, I need mode 2 otherwise the words overlap :P
 
;O!! replace if statement with this
Code:
if weapon
if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end
end
this way, it should only run when there's a weapon, otherwise do nothing
>.<
My local copy of this script has been ~heavily modified~ so I can't really test this, but it should work XD
 
Well, your fix did make that error go away, but then it went to this next error:

Code:
    if !shield and weapon.two_handed == false
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Unequipped")
    end

With the error message reading the same as previously. Undefined method for "two_handed"

EDIT: I've posted a copy of the full, unedited script (or, the script with your suggested fix) here in case you can get a chance to get a test running of it.

Code:
=begin
+------------------------------------------------------------------------------+
� ** Stat points distribution system 1.6                                       �
�			     By Lettuce.                                       �
�                                                                              �
�                                                                              �
�Some help:                                                                    �
�     - Position wasn't stored properly in mode 1 (Thanks Akin)                �
�     - Some sort of notification to player (Thanks Akin)                      �
�     - Player switch now supports LEFT and RIGHT arrow (Thanks Akin)          �
�     - Advice on using class attr instead of global var (Thanks GoldenShadow) �
�                                                                              �
�------------------------------------------------------------------------------�
�  This script lets you distribute points onto your actor's stats              �
�                                                                              �
� Call scene using this: $scene = Scene_Stat_Dist.new(0)                       �
�                                                                              �
�                                                                              �
�  You can give points to your actors by using this code                       �
�                                                                              �
�	 $game_party.members[<member ID>].points += <amount of points>         �
�                                                                              �
�  If you want your actor to get points after leveling:                        �
�  Under Game_Actor, in def change_exp, under the line level_up; paste this    �
�                                                                              �
�			 difference = @level - last_level                      �
�    $game_actors[@actor_id].points += <amount of points>                      �
�                                                                              �
�				OR (if you want RO mode; explained below)      �
�                                                                              �
�      difference = @level - last_level                                        �
�      $game_actors[@actor_id].points += ((@level/5).floor+2).floor*difference �
�                                                                              �
� # It seems the game returns non 0 based array if we use game_party >.<;      �
�                                                                              �
�  **Note**                                                                    �
�  This script does not stop your actors from gaining stats points defined in  �
�  the database. It will just add to it.                                       �
�  Set the stats to 1 all the way in the database to disable growth :0         �
�                                                                              �
�  **Modes**                                                                   �
�  1 : Add one point to the attribute per point                                �
�  2 : Use RO system, attribute with value needs more points to increase.      �
�	  Explanation: In RO, if you got high stats, you need more points to   �
�	 increase it. So if you have 90 ATK and 5 INT...You can                �
�	choose to use 10 points for 1 more ATK OR use that 10 points           �
�	to get 6 INT                                                           �
+------------------------------------------------------------------------------+
=end
#������������������������������ Configuration ���������������������������������#
#Starting points; how many points to give to actor at the beginning of the game
StartPoints = 20
#Maximum attribute point you allowed in your game
MaxStat = 255
MaxHP = 9999
MaxMP = 999
     #Max hit, eva and crit rate are all in percentage
MaxHIT = 20 # 100 means never miss
MaxEVA = 12 #100 means ALWAYS dodge; very illogical ^^. 50-70 is good rate
MaxCRIT = 15 #100 means always crit o.O

    #How many points needed per increase
PointsPerHP = 2
PointsPerMP = 2
PointsPerHIT = 15
PointsPerEVA = 7
PointsPerCRIT = 5

#How many stats will increase per point?
IncreaseBy = 2
HPIncreaseBy = 25
MPIncreaseBy = 15
HITIncreaseBy = 5
EVAIncreaseBy = 1
CRITIncreaseBy = 1


#1 for normal mode, 2 or RO mode [points required calculated through formula]
Mode = 1
#You can chage font family and size here
Fontname = Font.default_name
Fontsize = 20

#Layout mode, if you use long words for atk,spi,def or agi ; set LayoutMode to 2
LayoutMode = 2

#========================== End Configuration ==================================
OFFSET = -10 #moves equipment part up and down XD
#==============================================================================
# ** Lettuce_Window_Top
#------------------------------------------------------------------------------
#  This window displays Title message
#==============================================================================

class Lettuce_Window_Top < Window_Base
  def initialize
	super(0,0,544,70)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
	refresh
	end
	
  def refresh
	self.contents.clear
	self.contents.draw_text(0,-10,544-32,32,"Stat Distribution",1)
	self.contents.font.size = Fontsize-4
	self.contents.draw_text(0,10,544-32,32,"Press left or right to change character",1)
  end
	
end
#==============================================================================
# ** Lettuce_Window_Points
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================
class Lettuce_Window_Points < Window_Base
  def initialize(member_index)
	super(401,320,144,52)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
	refresh(member_index)
  end
  
  def refresh(member_index)
	actor = $game_party.members[member_index]
	points = actor.points
  self.contents.clear
	self.contents.draw_text(0,0,162,20,"Points: "+points.to_s)	
  end
end

#==============================================================================
# ** Lettuce_Window_Info
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================

class Lettuce_Window_Info < Window_Base
  def initialize(member_index)
	super(0,71,400,346)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
  @exo = 25 #equipment section X coordinate offset
  @exo2 = 35 #equipment section X coordinate offset
  @eyo = -10 #equipment section Y coordinate offset
	refresh(member_index)
  end
	
  def refresh(member_index)
	actor = $game_party.members[member_index]
	self.contents.clear
  self.contents.font.size = Fontsize
	draw_actor_face(actor,10,10,92)
	draw_actor_name(actor,120,10)
	self.contents.font.size = Fontsize
	self.contents.draw_text(190,30,200,20,"Class: "+actor.class.name)
	self.contents.draw_text(120,30,200,20,"Lv. "+actor.level.to_s)
  
  if LayoutMode == 1
    draw_actor_state(actor,200,280,168)
  elsif LayoutMode == 2
    draw_actor_state(actor,220,10)
  end
  
	s1 = actor.exp_s #total exp
  s2 = actor.current_lvl_exp #exp to get to this level
  if s1.is_a?(Numeric)
    s3 = s1-s2 #progress in this level
    s4 = actor.next_lvl_exp #exp needed for next level
    self.contents.font.size = Fontsize - 5
    self.contents.draw_text(230,74,90,20,"EXP: "+s3.to_s+"/"+s4.to_s,0)
    self.contents.font.size = Fontsize
  else
    self.contents.draw_text(230,74,85,20,"-----/-----",2)
  end
	
	#Preparing bar colours
	back_color = Color.new(39, 58, 83, 255)
	
	str_color1 = Color.new(229, 153, 73, 255)
	str_color2 = Color.new(255, 72, 0, 255)
	
	def_color1 = Color.new(210, 255, 0, 255)
	def_color2 = Color.new(85, 129, 9, 255)
	
	spi_color1 = Color.new(99, 133, 161, 255)
	spi_color2 = Color.new(10, 60,107, 255)
	
	agi_color1 = Color.new(167, 125, 180, 255)
	agi_color2 = Color.new(90, 11, 107, 255)
  
  hp_color1 = Color.new(66, 114, 164, 255)
  hp_color2 = Color.new(122, 175, 229, 255)
  
  mp_color1 = Color.new(93, 50, 158, 255)
  mp_color2 = Color.new(145, 122, 229, 255)
  
  exp_color1 = Color.new(246, 243, 224, 255)
  exp_color2 = Color.new(255, 182, 0, 255)
  if s1.is_a?(Numeric)
    self.contents.fill_rect(230,90,89,7,back_color)
    self.contents.gradient_fill_rect(232,92,(85*s3)/s4,3,exp_color1,exp_color2)

  else
    self.contents.fill_rect(230,60,89,7,back_color)
  end
  
	
  self.contents.fill_rect(120,67,104,7,back_color)
	self.contents.gradient_fill_rect(122,69,100*actor.hp/actor.maxhp,3,hp_color1,hp_color2)
  self.contents.draw_text(120,44,100,30,"HP",0)
  self.contents.draw_text(120,44,100,30,actor.hp.to_s + "/" + actor.maxhp.to_s,2)
  
  self.contents.fill_rect(120,90,104,7,back_color)
	self.contents.gradient_fill_rect(122,92,100*actor.mp/actor.maxmp,3,mp_color1,mp_color2)
  self.contents.draw_text(120,67,100,30,"MP",0)
  self.contents.draw_text(120,67,100,30,actor.mp.to_s + "/" + actor.maxmp.to_s,2)
  
  ##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  evasion = 0
  crit = 4
  
  if $data_actors[actor.id].critical_bonus
    crit +=4
  end
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
    if weapon.critical_bonus
      crit += 4
    end
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
    evasion += shield.eva
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
    evasion += helm.eva
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
    evasion += body.eva
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
    evasion += accessory.eva
  end
  if LayoutMode == 1
    draw_item_name(weapon,160+@exo,125+@eyo,true)
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo,155+@eyo,true)      
    else
      draw_item_name(shield,160+@exo,155+@eyo,true)
    end
    draw_item_name(helm,160+@exo,185+@eyo,true)
    draw_item_name(body,160+@exo,215+@eyo,true)
    draw_item_name(accessory,160+@exo,245+@eyo,true)
    
    #Testing area for Weapon upgrade script
    #self.contents.font.size = Fontsize - 7
    #self.contents.draw_text(160+@exo,135,30,20,"[+"+weapon.level.to_s+"]",0)
    
    self.contents.font.color = Color.new(87,87,87,255)
    if !weapon 
      #draw_icon(216,160+@exo,125+@eyo,true)
      self.contents.draw_text(184+@exo,127+@eyo,200,20,"Unequipped")
    end
    if !shield
      #draw_icon(217,160+@exo,155+@eyo,true)
      self.contents.draw_text(184+@exo,157+@eyo,200,20,"Unequipped")
    end
    if !helm
      #draw_icon(218,160+@exo,185+@eyo,true)
      self.contents.draw_text(184+@exo,187+@eyo,200,20,"Unequipped")
    end
    if !body
      #draw_icon(219,160+@exo,215+@eyo,true)
      self.contents.draw_text(184+@exo,217+@eyo,200,20,"Unequipped")
    end
    if !accessory
      #draw_icon(220,160+@exo,245+@eyo,true)
      self.contents.draw_text(184+@exo,247+@eyo,200,20,"Unequipped")
    end
    self.contents.font.color = Color.new(255,255,255,255)
    
  elsif LayoutMode == 2
    draw_item_name(weapon,160+@exo2,125+OFFSET+@eyo,true)
    if weapon
      if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
      end
    end
=begin
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end
=end
    draw_item_name(helm,160+@exo2,205+OFFSET+@eyo,true)
    draw_item_name(body,160+@exo2,245+OFFSET+@eyo,true)
    draw_item_name(accessory,160+@exo2,285+OFFSET+@eyo,true)
    

      
      self.contents.font.color = Color.new(87,87,87,255)
    if !weapon 
      #draw_icon(216,160+@exo2,125+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,127+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !shield and weapon.two_handed == false
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !helm
      #draw_icon(218,160+@exo2,205+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,207+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !body
      #draw_icon(219,160+@exo2,245+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,247+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !accessory
      #draw_icon(220,160+@exo2,285+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,287+OFFSET+@eyo,200,20,"Unequipped")
    end
    self.contents.font.color = Color.new(255,255,255,255)
  end
  
  
  
  self.contents.font.size = Fontsize - 5
	self.contents.draw_text(10,120,100,20,Vocab::atk+": ")
	self.contents.draw_text(10,120,100,20,(actor.atk-bonus_atk).to_s+" + "+bonus_atk.to_s,2)
	
	self.contents.fill_rect(10,140,104,7,back_color)
	self.contents.gradient_fill_rect(12,142,((actor.atk-bonus_atk)*100)/MaxStat,3,str_color1,str_color2)
	
	self.contents.draw_text(10,150,100,20,Vocab::def+": ")
	self.contents.draw_text(10,150,100,20,(actor.def-bonus_def).to_s+" + "+bonus_def.to_s,2)
	
	self.contents.fill_rect(10,170,104,7,back_color)
	self.contents.gradient_fill_rect(12,172,((actor.def-bonus_def)*100)/MaxStat,3,def_color1,def_color2)
	
	self.contents.draw_text(10,180,100,20,Vocab::spi+": ")
	self.contents.draw_text(10,180,100,20,(actor.spi-bonus_spi).to_s+" + "+bonus_spi.to_s,2)
	
	self.contents.fill_rect(10,200,104,7,back_color)
	self.contents.gradient_fill_rect(12,202,((actor.spi-bonus_spi)*100)/MaxStat,3,spi_color1,spi_color2)
	
	self.contents.draw_text(10,210,100,20,Vocab::agi+": ")
	self.contents.draw_text(10,210,100,20,(actor.agi-bonus_agi).to_s+" + "+bonus_agi.to_s,2)
	
	self.contents.fill_rect(10,230,104,7,back_color)
	self.contents.gradient_fill_rect(12,232,((actor.agi-bonus_agi)*100)/MaxStat,3,agi_color1,agi_color2)
	
  if weapon
    hit_rate = weapon.hit
  else
    hit_rate = 95
  end
    
    
  self.contents.font.size = Fontsize - 5 
  self.contents.font.color = Color.new(162,212,98,255)
  self.contents.draw_text(1,245,100,20,"Maximum ATK :",2)
  self.contents.draw_text(1,260,100,20,"Hit rate (%) :",2)
  self.contents.draw_text(1,275,100,20,"Evasion rate (%) :",2)
  self.contents.draw_text(1,290,100,20,"Critical Rate (%) :",2)
  
  self.contents.draw_text(105,245,60,20,(actor.atk*4).to_s,0)
  self.contents.draw_text(105,260,60,20,actor.base_hit.to_s + "+" + actor.hitr.to_s,0)
  self.contents.draw_text(105,275,60,20,actor.base_eva.to_s + "+" +actor.evar.to_s,0)
  self.contents.draw_text(105,290,60,20,actor.base_cri.to_s + "+" + actor.crir.to_s,0)
  
  self.contents.font.size = Fontsize-6
  self.contents.font.color = text_color(16)
  self.contents.draw_text(135,260,60,20,"[Req:"+PointsPerHIT.to_s+"pt.]",2)
  self.contents.draw_text(135,275,60,20,"[Req:"+PointsPerEVA.to_s+"pt.]",2)
  self.contents.draw_text(135,290,60,20,"[Req:"+PointsPerCRIT.to_s+"pt.]",2)
  
  #self.contents.draw_text(120,260,60,20,(hit_rate+actor.hit_bonus).to_s,0)
  #self.contents.draw_text(120,275,60,20,(evasion+actor.eva).to_s,0)
  #self.contents.draw_text(120,290,60,20,(crit+actor.cri_bonus).to_s,0)
  
  if LayoutMode == 1
    
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo,140+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(219+@exo,140+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo,140+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(287+@exo,140+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo,170+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(219+@exo,170+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo,170+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(287+@exo,170+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
  
  if helm
  self.contents.draw_text(185+@exo,200+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(219+@exo,200+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo,200+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(287+@exo,200+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
  
  if body
  self.contents.draw_text(185+@exo,230+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(219+@exo,230+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo,230+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(287+@exo,230+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
  
  if accessory
  self.contents.draw_text(185+@exo,260+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(219+@exo,260+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo,260+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(287+@exo,260+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
  
	if Mode == 2
	  self.contents.font.size = Fontsize - 8
	  self.contents.font.color = Color.new(155,199,206,255)
	  self.contents.draw_text(23,100,125,20,"POINTS",2)
	  self.contents.draw_text(29,110,125,20,"REQUIRED",2)
	  self.contents.font.size = Fontsize - 4
	  self.contents.draw_text(20,125,115,20,required(actor.atk-bonus_atk).to_s,2)
	  self.contents.draw_text(20,155,115,20,required(actor.def-bonus_def).to_s,2)
	  self.contents.draw_text(20,185,115,20,required(actor.spi-bonus_spi).to_s,2)
	  self.contents.draw_text(20,215,115,20,required(actor.agi-bonus_agi).to_s,2)
	end

  if LayoutMode == 2
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo2,140+OFFSET+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(185+@exo2,150+OFFSET+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo2,140+OFFSET+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(253+@exo2,150+OFFSET+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo2,180+OFFSET+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(185+@exo2,190+OFFSET+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo2,180+OFFSET+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(253+@exo2,190+OFFSET+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
  
  if helm
  self.contents.draw_text(185+@exo2,220+OFFSET+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(185+@exo2,230+OFFSET+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo2,220+OFFSET+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(253+@exo2,230+OFFSET+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
  
  if body
  self.contents.draw_text(185+@exo2,260+OFFSET+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(185+@exo2,270+OFFSET+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo2,260+OFFSET+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(253+@exo2,270+OFFSET+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
  
  if accessory
  self.contents.draw_text(185+@exo2,300+OFFSET+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(185+@exo2,310+OFFSET+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo2,300+OFFSET+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(253+@exo2,310+OFFSET+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
end

  def required(base)
	return (((base-1)/10)+2).floor
  end
  
end

#==============================================================================
# ** Lettuce_Window_Help
#------------------------------------------------------------------------------
#  This window displays property of each attribute
#==============================================================================
class Lettuce_Window_Help < Window_Base
  def initialize(index)
	super(401,372,144,44)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.size = Fontsize - 6
	refresh(index)
  end
  
  def refresh(index)
	self.contents.clear
  self.contents.font.color = text_color(16)

    case index
    when 0
      self.contents.draw_text(0,-5,112,20,"HP + "+HPIncreaseBy.to_s)
    when 1
      self.contents.draw_text(0,-5,112,20,"MP + "+MPIncreaseBy.to_s)
    when 2
      self.contents.draw_text(0,-5,112,20,Vocab::atk+" + "+IncreaseBy.to_s)
    when 3
      self.contents.draw_text(0,-5,112,20,Vocab::def+" + "+IncreaseBy.to_s)
    when 4
      self.contents.draw_text(0,-5,112,20,Vocab::spi+" + "+IncreaseBy.to_s)
    when 5
      self.contents.draw_text(0,-5,112,20,Vocab::agi+" + "+IncreaseBy.to_s)
    when 6
      self.contents.draw_text(0,-5,112,20,"HIT + "+HITIncreaseBy.to_s)
    when 7
      self.contents.draw_text(0,-5,112,20,"EVA + "+EVAIncreaseBy.to_s)
    when 8
      self.contents.draw_text(0,-5,112,20,"CRIT + "+CRITIncreaseBy.to_s)
    end

  
  end
  
end
  

#==============================================================================
# ** Scene_Stat_Dist
#------------------------------------------------------------------------------
#  Performs stat distribution process :)
#==============================================================================
class Scene_Stat_Dist < Scene_Base
  def initialize(menu_index)
	@menu_index = menu_index
  end
  
  def start
	super
	create_menu_background
  ihp = Vocab::hp
  imp = Vocab::mp
	i1 = Vocab::atk
	i2 = Vocab::def
	i3 = Vocab::spi
	i4 = Vocab::agi
  i5 = "HIT"
  i6 = "EVA"
  i7 = "CRIT"
	@window_select = Window_Command.new(144,[ihp,imp,i1,i2,i3,i4,i5,i6,i7])
	if $position
	  @window_select.index = $position - 1
	else
	  @window_select.index = 0
	end
	
	@window_select.active = true
	@window_select.x = 401
	@window_select.y = 71
	
	@window_top = Lettuce_Window_Top.new
	@window_points = Lettuce_Window_Points.new(@menu_index)
	@window_info = Lettuce_Window_Info.new(@menu_index)
	@window_help = Lettuce_Window_Help.new(@window_select.index)
  end
	
  def terminate
	super
	dispose_menu_background
	@window_top.dispose
	@window_points.dispose
	@window_info.dispose
	@window_help.dispose
	@window_select.dispose
  end
  
  def update
	update_menu_background
	#@window_points.refresh(@menu_index)
  
	@window_select.update
	#@window_help.refresh(@window_select.index)
  if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
    @window_help.refresh(@window_select.index)
  end
  
	@changes = 0
	if Input.trigger?(Input::B)
	  Sound.play_cancel
	  $scene = Scene_Map.new
	elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
	  @menu_index += 1
	  @menu_index %= $game_party.members.size
	  $scene = Scene_Stat_Dist.new(@menu_index)
	elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
	  @menu_index += $game_party.members.size - 1
	  @menu_index %= $game_party.members.size
	  $scene = Scene_Stat_Dist.new(@menu_index)
	elsif Input.trigger?(Input::C)
	  #Points addition begins
	  #which attribute
	  if Mode == 1
		do_point_reg
	  elsif Mode == 2
		do_point_rag
	  end
	end  

  end
  
  def do_point_reg
	@att = @window_select.index
  
  actor = $game_party.members[@menu_index]
  
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
  
	  case @att
    
    when 0 #HP
		if actor.points < PointsPerHP
		  Sound.play_cancel
		elsif actor.maxhp >= MaxHP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
		  actor.points -= PointsPerHP
		  @changes += 1
      $position = 1
		end
    
    when 1 #MP
		if actor.points < PointsPerMP
		  Sound.play_cancel
		elsif actor.maxmp >= MaxMP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
		  actor.points -= PointsPerMP
		  @changes += 1
      $position = 1
		end
    
	  when 2 #ATK
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.atk-bonus_atk) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
		  actor.points -= 1
		  @changes += 1
      $position = 1
		end
		
	  when 3 #DEF
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.def-bonus_def) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
		  actor.points -= 1
		  @changes += 1
      $position = 2
		end
		
	  when 4 #SPI
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.spi-bonus_spi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
		  actor.points -= 1
		  @changes += 1
      $position = 3
		end
	  when 5 #AGI
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.agi-bonus_agi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
		  actor.points -= 1
		  @changes += 1
      $position = 4
		end
	  
	  
    when 6 #HIT
		if actor.points < PointsPerHIT
		  Sound.play_cancel
		elsif actor.hitr >= MaxHIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
		  actor.points -= PointsPerHIT
		  @changes += 1
      $position = 1
		end
    when 7 #EVA
		if actor.points < PointsPerEVA
		  Sound.play_cancel
		elsif actor.evar >= MaxEVA
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
		  actor.points -= PointsPerEVA
		  @changes += 1
      $position = 1
		end
    when 8 #CRIT
		if actor.points < PointsPerCRIT
		  Sound.play_cancel
		elsif actor.crir >= MaxCRIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
		  actor.points -= PointsPerCRIT
		  @changes += 1
      $position = 1
		end
  end
  
  if @changes > 0
      @window_info.refresh(@menu_index)
      @window_points.refresh(@menu_index)
		  #$scene = Scene_Stat_Dist.new(@menu_index)
	  end
  end
  
  def do_point_rag
	@att = @window_select.index
  
  actor = $game_party.members[@menu_index]
  
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
  
	  case @att
    
    when 0 #HP
		if actor.points < PointsPerHP
		  Sound.play_cancel
		elsif actor.maxhp >= MaxHP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
		  actor.points -= PointsPerHP
		  @changes += 1
      $position = 1
		end
    
    when 1 #MP
		if actor.points < PointsPerMP
		  Sound.play_cancel
		elsif actor.maxmp >= MaxMP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
		  actor.points -= PointsPerMP
		  @changes += 1
      $position = 1
		end
    
	  when 2 #ATK
		base_value = actor.atk-bonus_atk
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.atk-bonus_atk) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 1
		end
		
	  when 3 #DEF
		base_value = actor.def-bonus_def
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.def-bonus_def) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 2
		end
		
	  when 4 #SPI
		base_value = actor.spi-bonus_spi
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.spi-bonus_spi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 3
		end
	  when 5 #AGI
		base_value = actor.agi-bonus_agi
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.agi-bonus_agi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 4
		end
    when 6 #HIT
		if actor.points < PointsPerHIT
		  Sound.play_cancel
		elsif actor.hitr >= MaxHIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
		  actor.points -= PointsPerHIT
		  @changes += 1
      $position = 1
		end
    when 7 #EVA
		if actor.points < PointsPerEVA
		  Sound.play_cancel
		elsif actor.evar >= MaxEVA
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
		  actor.points -= PointsPerEVA
		  @changes += 1
      $position = 1
		end
    when 8 #CRIT
		if actor.points < PointsPerCRIT
		  Sound.play_cancel
		elsif actor.crir >= MaxCRIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
		  actor.points -= PointsPerCRIT
		  @changes += 1
      $position = 1
		end
	  end
	  if @changes > 0
      @window_points.refresh(@menu_index)
      @window_info.refresh(@menu_index)
		#$scene = Scene_Stat_Dist.new(@menu_index)
	  end
  end
  
  def enough_point(base,points)
	required = (((base-1)/10)+2).floor
	if required > points
	  return true
	elsif required <= points
	  return false
	end
  end
  
  def required(base)
	return (((base-1)/10)+2).floor
  end
  
end


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Giving game actor a point attribute
#  -> $game_party.member[x].points
#==============================================================================

class Game_Actor < Game_Battler

  attr_accessor :points
  attr_accessor :hit_bonus
  attr_accessor :eva_bonus
  attr_accessor :cri_bonus
  attr_accessor :hitr
  attr_accessor :evar
  attr_accessor :crir
  #attr_accessor :current_lvl_exp
  #attr_accessor :next_lvl_exp
  alias Lettuce_Game_Actor_Ini initialize
  
  def initialize(actor_id)
    Lettuce_Game_Actor_Ini(actor_id)
     @points = StartPoints
     @hitr = 0
     @evar = 0
     @crir = 0
     #@current_lvl_exp = @exp_list[@level-1]
     #@next_lvl_exp = @exp_list[@level]
  end

  def points
     return @points
  end
  
  #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    if n+@hitr <= MaxHIT
    return n+@hitr
  else return MaxHIT
    end
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def eva
    n = 5
    for item in armors.compact do n += item.eva end
    if n+@evar <= MaxEVA
     return n+@evar
   else return MaxEVA
     end
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    if n+@crir <= MaxCRIT
      return n+@crir
    else return MaxCRIT
      end
  end
  
 #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def base_hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def base_eva
    n = 5
    for item in armors.compact do n += item.eva end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def base_cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    return n
  end
  
  
  #--------------------------------------------------------------------------
  # * bonus rates
  #--------------------------------------------------------------------------   
  def hitr
    return @hitr
  end
  
  def evar
    return @evar
  end
  
  def crir
    return @crir
  end
    
    
  
  def current_lvl_exp
    return @exp_list[@level]
  end
  
  def next_lvl_exp
    return @exp_list[@level+1]-@exp_list[@level]
  end
end
 
The trick was to surround that "if" block with another "if" to check if there is a weapon (to be two_handed-ed), I don't know why I overlooked it XD
Code:
=begin
+------------------------------------------------------------------------------+
� ** Stat points distribution system 1.6                                       �
�			     By Lettuce.                                       �
�                                                                              �
�                                                                              �
�Some help:                                                                    �
�     - Position wasn't stored properly in mode 1 (Thanks Akin)                �
�     - Some sort of notification to player (Thanks Akin)                      �
�     - Player switch now supports LEFT and RIGHT arrow (Thanks Akin)          �
�     - Advice on using class attr instead of global var (Thanks GoldenShadow) �
�                                                                              �
�------------------------------------------------------------------------------�
�  This script lets you distribute points onto your actor's stats              �
�                                                                              �
� Call scene using this: $scene = Scene_Stat_Dist.new(0)                       �
�                                                                              �
�                                                                              �
�  You can give points to your actors by using this code                       �
�                                                                              �
�	 $game_party.members[<member ID>].points += <amount of points>         �
�                                                                              �
�  If you want your actor to get points after leveling:                        �
�  Under Game_Actor, in def change_exp, under the line level_up; paste this    �
�                                                                              �
�			 difference = @level - last_level                      �
�    $game_actors[@actor_id].points += <amount of points>                      �
�                                                                              �
�				OR (if you want RO mode; explained below)      �
�                                                                              �
�      difference = @level - last_level                                        �
�      $game_actors[@actor_id].points += ((@level/5).floor+2).floor*difference �
�                                                                              �
� # It seems the game returns non 0 based array if we use game_party >.<;      �
�                                                                              �
�  **Note**                                                                    �
�  This script does not stop your actors from gaining stats points defined in  �
�  the database. It will just add to it.                                       �
�  Set the stats to 1 all the way in the database to disable growth :0         �
�                                                                              �
�  **Modes**                                                                   �
�  1 : Add one point to the attribute per point                                �
�  2 : Use RO system, attribute with value needs more points to increase.      �
�	  Explanation: In RO, if you got high stats, you need more points to   �
�	 increase it. So if you have 90 ATK and 5 INT...You can                �
�	choose to use 10 points for 1 more ATK OR use that 10 points           �
�	to get 6 INT                                                           �
+------------------------------------------------------------------------------+
=end
#������������������������������ Configuration ���������������������������������#
#Starting points; how many points to give to actor at the beginning of the game
StartPoints = 20
#Maximum attribute point you allowed in your game
MaxStat = 255
MaxHP = 9999
MaxMP = 999
     #Max hit, eva and crit rate are all in percentage
MaxHIT = 20 # 100 means never miss
MaxEVA = 12 #100 means ALWAYS dodge; very illogical ^^. 50-70 is good rate
MaxCRIT = 15 #100 means always crit o.O

    #How many points needed per increase
PointsPerHP = 2
PointsPerMP = 2
PointsPerHIT = 15
PointsPerEVA = 7
PointsPerCRIT = 5

#How many stats will increase per point?
IncreaseBy = 2
HPIncreaseBy = 25
MPIncreaseBy = 15
HITIncreaseBy = 5
EVAIncreaseBy = 1
CRITIncreaseBy = 1


#1 for normal mode, 2 or RO mode [points required calculated through formula]
Mode = 1
#You can chage font family and size here
Fontname = Font.default_name
Fontsize = 20

#Layout mode, if you use long words for atk,spi,def or agi ; set LayoutMode to 2
LayoutMode = 2

#========================== End Configuration ==================================
OFFSET = -10 #moves equipment part up and down XD
#==============================================================================
# ** Lettuce_Window_Top
#------------------------------------------------------------------------------
#  This window displays Title message
#==============================================================================

class Lettuce_Window_Top < Window_Base
  def initialize
	super(0,0,544,70)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
	refresh
	end
	
  def refresh
	self.contents.clear
	self.contents.draw_text(0,-10,544-32,32,"Stat Distribution",1)
	self.contents.font.size = Fontsize-4
	self.contents.draw_text(0,10,544-32,32,"Press left or right to change character",1)
  end
	
end
#==============================================================================
# ** Lettuce_Window_Points
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================
class Lettuce_Window_Points < Window_Base
  def initialize(member_index)
	super(401,320,144,52)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
	refresh(member_index)
  end
  
  def refresh(member_index)
	actor = $game_party.members[member_index]
	points = actor.points
  self.contents.clear
	self.contents.draw_text(0,0,162,20,"Points: "+points.to_s)	
  end
end

#==============================================================================
# ** Lettuce_Window_Info
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================

class Lettuce_Window_Info < Window_Base
  def initialize(member_index)
	super(0,71,400,346)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
  @exo = 25 #equipment section X coordinate offset
  @exo2 = 35 #equipment section X coordinate offset
  @eyo = -10 #equipment section Y coordinate offset
	refresh(member_index)
  end
	
  def refresh(member_index)
	actor = $game_party.members[member_index]
	self.contents.clear
  self.contents.font.size = Fontsize
	draw_actor_face(actor,10,10,92)
	draw_actor_name(actor,120,10)
	self.contents.font.size = Fontsize
	self.contents.draw_text(190,30,200,20,"Class: "+actor.class.name)
	self.contents.draw_text(120,30,200,20,"Lv. "+actor.level.to_s)
  
  if LayoutMode == 1
    draw_actor_state(actor,200,280,168)
  elsif LayoutMode == 2
    draw_actor_state(actor,220,10)
  end
  
	s1 = actor.exp_s #total exp
  s2 = actor.current_lvl_exp #exp to get to this level
  if s1.is_a?(Numeric)
    s3 = s1-s2 #progress in this level
    s4 = actor.next_lvl_exp #exp needed for next level
    self.contents.font.size = Fontsize - 5
    self.contents.draw_text(230,74,90,20,"EXP: "+s3.to_s+"/"+s4.to_s,0)
    self.contents.font.size = Fontsize
  else
    self.contents.draw_text(230,74,85,20,"-----/-----",2)
  end
	
	#Preparing bar colours
	back_color = Color.new(39, 58, 83, 255)
	
	str_color1 = Color.new(229, 153, 73, 255)
	str_color2 = Color.new(255, 72, 0, 255)
	
	def_color1 = Color.new(210, 255, 0, 255)
	def_color2 = Color.new(85, 129, 9, 255)
	
	spi_color1 = Color.new(99, 133, 161, 255)
	spi_color2 = Color.new(10, 60,107, 255)
	
	agi_color1 = Color.new(167, 125, 180, 255)
	agi_color2 = Color.new(90, 11, 107, 255)
  
  hp_color1 = Color.new(66, 114, 164, 255)
  hp_color2 = Color.new(122, 175, 229, 255)
  
  mp_color1 = Color.new(93, 50, 158, 255)
  mp_color2 = Color.new(145, 122, 229, 255)
  
  exp_color1 = Color.new(246, 243, 224, 255)
  exp_color2 = Color.new(255, 182, 0, 255)
  if s1.is_a?(Numeric)
    self.contents.fill_rect(230,90,89,7,back_color)
    self.contents.gradient_fill_rect(232,92,(85*s3)/s4,3,exp_color1,exp_color2)

  else
    self.contents.fill_rect(230,60,89,7,back_color)
  end
  
	
  self.contents.fill_rect(120,67,104,7,back_color)
	self.contents.gradient_fill_rect(122,69,100*actor.hp/actor.maxhp,3,hp_color1,hp_color2)
  self.contents.draw_text(120,44,100,30,"HP",0)
  self.contents.draw_text(120,44,100,30,actor.hp.to_s + "/" + actor.maxhp.to_s,2)
  
  self.contents.fill_rect(120,90,104,7,back_color)
	self.contents.gradient_fill_rect(122,92,100*actor.mp/actor.maxmp,3,mp_color1,mp_color2)
  self.contents.draw_text(120,67,100,30,"MP",0)
  self.contents.draw_text(120,67,100,30,actor.mp.to_s + "/" + actor.maxmp.to_s,2)
  
  ##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  evasion = 0
  crit = 4
  
  if $data_actors[actor.id].critical_bonus
    crit +=4
  end
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
    if weapon.critical_bonus
      crit += 4
    end
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
    evasion += shield.eva
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
    evasion += helm.eva
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
    evasion += body.eva
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
    evasion += accessory.eva
  end
  if LayoutMode == 1
    draw_item_name(weapon,160+@exo,125+@eyo,true)
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo,155+@eyo,true)      
    else
      draw_item_name(shield,160+@exo,155+@eyo,true)
    end
    draw_item_name(helm,160+@exo,185+@eyo,true)
    draw_item_name(body,160+@exo,215+@eyo,true)
    draw_item_name(accessory,160+@exo,245+@eyo,true)
    
    #Testing area for Weapon upgrade script
    #self.contents.font.size = Fontsize - 7
    #self.contents.draw_text(160+@exo,135,30,20,"[+"+weapon.level.to_s+"]",0)
    
    self.contents.font.color = Color.new(87,87,87,255)
    if !weapon 
      #draw_icon(216,160+@exo,125+@eyo,true)
      self.contents.draw_text(184+@exo,127+@eyo,200,20,"Unequipped")
    end
    if !shield
      #draw_icon(217,160+@exo,155+@eyo,true)
      self.contents.draw_text(184+@exo,157+@eyo,200,20,"Unequipped")
    end
    if !helm
      #draw_icon(218,160+@exo,185+@eyo,true)
      self.contents.draw_text(184+@exo,187+@eyo,200,20,"Unequipped")
    end
    if !body
      #draw_icon(219,160+@exo,215+@eyo,true)
      self.contents.draw_text(184+@exo,217+@eyo,200,20,"Unequipped")
    end
    if !accessory
      #draw_icon(220,160+@exo,245+@eyo,true)
      self.contents.draw_text(184+@exo,247+@eyo,200,20,"Unequipped")
    end
    self.contents.font.color = Color.new(255,255,255,255)
    
  elsif LayoutMode == 2
    draw_item_name(weapon,160+@exo2,125+OFFSET+@eyo,true)
    if weapon
      if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
      end
    end
=begin
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end
=end
    draw_item_name(helm,160+@exo2,205+OFFSET+@eyo,true)
    draw_item_name(body,160+@exo2,245+OFFSET+@eyo,true)
    draw_item_name(accessory,160+@exo2,285+OFFSET+@eyo,true)
    

      
      self.contents.font.color = Color.new(87,87,87,255)
    if !weapon 
      #draw_icon(216,160+@exo2,125+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,127+OFFSET+@eyo,200,20,"Unequipped")
    end
    if weapon
    if !shield and weapon.two_handed == false
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Unequipped")
    end
    else
    if !shield
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Unequipped")
    end
    end
    
    if !helm
      #draw_icon(218,160+@exo2,205+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,207+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !body
      #draw_icon(219,160+@exo2,245+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,247+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !accessory
      #draw_icon(220,160+@exo2,285+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,287+OFFSET+@eyo,200,20,"Unequipped")
    end
    self.contents.font.color = Color.new(255,255,255,255)
  end
  
  
  
  self.contents.font.size = Fontsize - 5
	self.contents.draw_text(10,120,100,20,Vocab::atk+": ")
	self.contents.draw_text(10,120,100,20,(actor.atk-bonus_atk).to_s+" + "+bonus_atk.to_s,2)
	
	self.contents.fill_rect(10,140,104,7,back_color)
	self.contents.gradient_fill_rect(12,142,((actor.atk-bonus_atk)*100)/MaxStat,3,str_color1,str_color2)
	
	self.contents.draw_text(10,150,100,20,Vocab::def+": ")
	self.contents.draw_text(10,150,100,20,(actor.def-bonus_def).to_s+" + "+bonus_def.to_s,2)
	
	self.contents.fill_rect(10,170,104,7,back_color)
	self.contents.gradient_fill_rect(12,172,((actor.def-bonus_def)*100)/MaxStat,3,def_color1,def_color2)
	
	self.contents.draw_text(10,180,100,20,Vocab::spi+": ")
	self.contents.draw_text(10,180,100,20,(actor.spi-bonus_spi).to_s+" + "+bonus_spi.to_s,2)
	
	self.contents.fill_rect(10,200,104,7,back_color)
	self.contents.gradient_fill_rect(12,202,((actor.spi-bonus_spi)*100)/MaxStat,3,spi_color1,spi_color2)
	
	self.contents.draw_text(10,210,100,20,Vocab::agi+": ")
	self.contents.draw_text(10,210,100,20,(actor.agi-bonus_agi).to_s+" + "+bonus_agi.to_s,2)
	
	self.contents.fill_rect(10,230,104,7,back_color)
	self.contents.gradient_fill_rect(12,232,((actor.agi-bonus_agi)*100)/MaxStat,3,agi_color1,agi_color2)
	
  if weapon
    hit_rate = weapon.hit
  else
    hit_rate = 95
  end
    
    
  self.contents.font.size = Fontsize - 5 
  self.contents.font.color = Color.new(162,212,98,255)
  self.contents.draw_text(1,245,100,20,"Maximum ATK :",2)
  self.contents.draw_text(1,260,100,20,"Hit rate (%) :",2)
  self.contents.draw_text(1,275,100,20,"Evasion rate (%) :",2)
  self.contents.draw_text(1,290,100,20,"Critical Rate (%) :",2)
  
  self.contents.draw_text(105,245,60,20,(actor.atk*4).to_s,0)
  self.contents.draw_text(105,260,60,20,actor.base_hit.to_s + "+" + actor.hitr.to_s,0)
  self.contents.draw_text(105,275,60,20,actor.base_eva.to_s + "+" +actor.evar.to_s,0)
  self.contents.draw_text(105,290,60,20,actor.base_cri.to_s + "+" + actor.crir.to_s,0)
  
  self.contents.font.size = Fontsize-6
  self.contents.font.color = text_color(16)
  self.contents.draw_text(135,260,60,20,"[Req:"+PointsPerHIT.to_s+"pt.]",2)
  self.contents.draw_text(135,275,60,20,"[Req:"+PointsPerEVA.to_s+"pt.]",2)
  self.contents.draw_text(135,290,60,20,"[Req:"+PointsPerCRIT.to_s+"pt.]",2)
  
  #self.contents.draw_text(120,260,60,20,(hit_rate+actor.hit_bonus).to_s,0)
  #self.contents.draw_text(120,275,60,20,(evasion+actor.eva).to_s,0)
  #self.contents.draw_text(120,290,60,20,(crit+actor.cri_bonus).to_s,0)
  
  if LayoutMode == 1
    
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo,140+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(219+@exo,140+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo,140+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(287+@exo,140+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo,170+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(219+@exo,170+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo,170+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(287+@exo,170+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
  
  if helm
  self.contents.draw_text(185+@exo,200+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(219+@exo,200+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo,200+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(287+@exo,200+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
  
  if body
  self.contents.draw_text(185+@exo,230+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(219+@exo,230+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo,230+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(287+@exo,230+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
  
  if accessory
  self.contents.draw_text(185+@exo,260+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(219+@exo,260+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo,260+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(287+@exo,260+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
  
	if Mode == 2
	  self.contents.font.size = Fontsize - 8
	  self.contents.font.color = Color.new(155,199,206,255)
	  self.contents.draw_text(23,100,125,20,"POINTS",2)
	  self.contents.draw_text(29,110,125,20,"REQUIRED",2)
	  self.contents.font.size = Fontsize - 4
	  self.contents.draw_text(20,125,115,20,required(actor.atk-bonus_atk).to_s,2)
	  self.contents.draw_text(20,155,115,20,required(actor.def-bonus_def).to_s,2)
	  self.contents.draw_text(20,185,115,20,required(actor.spi-bonus_spi).to_s,2)
	  self.contents.draw_text(20,215,115,20,required(actor.agi-bonus_agi).to_s,2)
	end

  if LayoutMode == 2
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo2,140+OFFSET+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(185+@exo2,150+OFFSET+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo2,140+OFFSET+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(253+@exo2,150+OFFSET+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo2,180+OFFSET+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(185+@exo2,190+OFFSET+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo2,180+OFFSET+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(253+@exo2,190+OFFSET+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
  
  if helm
  self.contents.draw_text(185+@exo2,220+OFFSET+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(185+@exo2,230+OFFSET+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo2,220+OFFSET+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(253+@exo2,230+OFFSET+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
  
  if body
  self.contents.draw_text(185+@exo2,260+OFFSET+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(185+@exo2,270+OFFSET+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo2,260+OFFSET+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(253+@exo2,270+OFFSET+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
  
  if accessory
  self.contents.draw_text(185+@exo2,300+OFFSET+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(185+@exo2,310+OFFSET+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo2,300+OFFSET+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(253+@exo2,310+OFFSET+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
end

  def required(base)
	return (((base-1)/10)+2).floor
  end
  
end

#==============================================================================
# ** Lettuce_Window_Help
#------------------------------------------------------------------------------
#  This window displays property of each attribute
#==============================================================================
class Lettuce_Window_Help < Window_Base
  def initialize(index)
	super(401,372,144,44)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.size = Fontsize - 6
	refresh(index)
  end
  
  def refresh(index)
	self.contents.clear
  self.contents.font.color = text_color(16)

    case index
    when 0
      self.contents.draw_text(0,-5,112,20,"HP + "+HPIncreaseBy.to_s)
    when 1
      self.contents.draw_text(0,-5,112,20,"MP + "+MPIncreaseBy.to_s)
    when 2
      self.contents.draw_text(0,-5,112,20,Vocab::atk+" + "+IncreaseBy.to_s)
    when 3
      self.contents.draw_text(0,-5,112,20,Vocab::def+" + "+IncreaseBy.to_s)
    when 4
      self.contents.draw_text(0,-5,112,20,Vocab::spi+" + "+IncreaseBy.to_s)
    when 5
      self.contents.draw_text(0,-5,112,20,Vocab::agi+" + "+IncreaseBy.to_s)
    when 6
      self.contents.draw_text(0,-5,112,20,"HIT + "+HITIncreaseBy.to_s)
    when 7
      self.contents.draw_text(0,-5,112,20,"EVA + "+EVAIncreaseBy.to_s)
    when 8
      self.contents.draw_text(0,-5,112,20,"CRIT + "+CRITIncreaseBy.to_s)
    end

  
  end
  
end
  

#==============================================================================
# ** Scene_Stat_Dist
#------------------------------------------------------------------------------
#  Performs stat distribution process :)
#==============================================================================
class Scene_Stat_Dist < Scene_Base
  def initialize(menu_index)
	@menu_index = menu_index
  end
  
  def start
	super
	create_menu_background
  ihp = Vocab::hp
  imp = Vocab::mp
	i1 = Vocab::atk
	i2 = Vocab::def
	i3 = Vocab::spi
	i4 = Vocab::agi
  i5 = "HIT"
  i6 = "EVA"
  i7 = "CRIT"
	@window_select = Window_Command.new(144,[ihp,imp,i1,i2,i3,i4,i5,i6,i7])
	if $position
	  @window_select.index = $position - 1
	else
	  @window_select.index = 0
	end
	
	@window_select.active = true
	@window_select.x = 401
	@window_select.y = 71
	
	@window_top = Lettuce_Window_Top.new
	@window_points = Lettuce_Window_Points.new(@menu_index)
	@window_info = Lettuce_Window_Info.new(@menu_index)
	@window_help = Lettuce_Window_Help.new(@window_select.index)
  end
	
  def terminate
	super
	dispose_menu_background
	@window_top.dispose
	@window_points.dispose
	@window_info.dispose
	@window_help.dispose
	@window_select.dispose
  end
  
  def update
	update_menu_background
	#@window_points.refresh(@menu_index)
  
	@window_select.update
	#@window_help.refresh(@window_select.index)
  if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
    @window_help.refresh(@window_select.index)
  end
  
	@changes = 0
	if Input.trigger?(Input::B)
	  Sound.play_cancel
	  $scene = Scene_Map.new
	elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
	  @menu_index += 1
	  @menu_index %= $game_party.members.size
	  $scene = Scene_Stat_Dist.new(@menu_index)
	elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
	  @menu_index += $game_party.members.size - 1
	  @menu_index %= $game_party.members.size
	  $scene = Scene_Stat_Dist.new(@menu_index)
	elsif Input.trigger?(Input::C)
	  #Points addition begins
	  #which attribute
	  if Mode == 1
		do_point_reg
	  elsif Mode == 2
		do_point_rag
	  end
	end  

  end
  
  def do_point_reg
	@att = @window_select.index
  
  actor = $game_party.members[@menu_index]
  
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
  
	  case @att
    
    when 0 #HP
		if actor.points < PointsPerHP
		  Sound.play_cancel
		elsif actor.maxhp >= MaxHP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
		  actor.points -= PointsPerHP
		  @changes += 1
      $position = 1
		end
    
    when 1 #MP
		if actor.points < PointsPerMP
		  Sound.play_cancel
		elsif actor.maxmp >= MaxMP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
		  actor.points -= PointsPerMP
		  @changes += 1
      $position = 1
		end
    
	  when 2 #ATK
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.atk-bonus_atk) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
		  actor.points -= 1
		  @changes += 1
      $position = 1
		end
		
	  when 3 #DEF
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.def-bonus_def) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
		  actor.points -= 1
		  @changes += 1
      $position = 2
		end
		
	  when 4 #SPI
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.spi-bonus_spi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
		  actor.points -= 1
		  @changes += 1
      $position = 3
		end
	  when 5 #AGI
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.agi-bonus_agi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
		  actor.points -= 1
		  @changes += 1
      $position = 4
		end
	  
	  
    when 6 #HIT
		if actor.points < PointsPerHIT
		  Sound.play_cancel
		elsif actor.hitr >= MaxHIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
		  actor.points -= PointsPerHIT
		  @changes += 1
      $position = 1
		end
    when 7 #EVA
		if actor.points < PointsPerEVA
		  Sound.play_cancel
		elsif actor.evar >= MaxEVA
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
		  actor.points -= PointsPerEVA
		  @changes += 1
      $position = 1
		end
    when 8 #CRIT
		if actor.points < PointsPerCRIT
		  Sound.play_cancel
		elsif actor.crir >= MaxCRIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
		  actor.points -= PointsPerCRIT
		  @changes += 1
      $position = 1
		end
  end
  
  if @changes > 0
      @window_info.refresh(@menu_index)
      @window_points.refresh(@menu_index)
		  #$scene = Scene_Stat_Dist.new(@menu_index)
	  end
  end
  
  def do_point_rag
	@att = @window_select.index
  
  actor = $game_party.members[@menu_index]
  
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
  
	  case @att
    
    when 0 #HP
		if actor.points < PointsPerHP
		  Sound.play_cancel
		elsif actor.maxhp >= MaxHP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
		  actor.points -= PointsPerHP
		  @changes += 1
      $position = 1
		end
    
    when 1 #MP
		if actor.points < PointsPerMP
		  Sound.play_cancel
		elsif actor.maxmp >= MaxMP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
		  actor.points -= PointsPerMP
		  @changes += 1
      $position = 1
		end
    
	  when 2 #ATK
		base_value = actor.atk-bonus_atk
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.atk-bonus_atk) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 1
		end
		
	  when 3 #DEF
		base_value = actor.def-bonus_def
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.def-bonus_def) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 2
		end
		
	  when 4 #SPI
		base_value = actor.spi-bonus_spi
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.spi-bonus_spi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 3
		end
	  when 5 #AGI
		base_value = actor.agi-bonus_agi
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.agi-bonus_agi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 4
		end
    when 6 #HIT
		if actor.points < PointsPerHIT
		  Sound.play_cancel
		elsif actor.hitr >= MaxHIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
		  actor.points -= PointsPerHIT
		  @changes += 1
      $position = 1
		end
    when 7 #EVA
		if actor.points < PointsPerEVA
		  Sound.play_cancel
		elsif actor.evar >= MaxEVA
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
		  actor.points -= PointsPerEVA
		  @changes += 1
      $position = 1
		end
    when 8 #CRIT
		if actor.points < PointsPerCRIT
		  Sound.play_cancel
		elsif actor.crir >= MaxCRIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
		  actor.points -= PointsPerCRIT
		  @changes += 1
      $position = 1
		end
	  end
	  if @changes > 0
      @window_points.refresh(@menu_index)
      @window_info.refresh(@menu_index)
		#$scene = Scene_Stat_Dist.new(@menu_index)
	  end
  end
  
  def enough_point(base,points)
	required = (((base-1)/10)+2).floor
	if required > points
	  return true
	elsif required <= points
	  return false
	end
  end
  
  def required(base)
	return (((base-1)/10)+2).floor
  end
  
end


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Giving game actor a point attribute
#  -> $game_party.member[x].points
#==============================================================================

class Game_Actor < Game_Battler

  attr_accessor :points
  attr_accessor :hit_bonus
  attr_accessor :eva_bonus
  attr_accessor :cri_bonus
  attr_accessor :hitr
  attr_accessor :evar
  attr_accessor :crir
  #attr_accessor :current_lvl_exp
  #attr_accessor :next_lvl_exp
  alias Lettuce_Game_Actor_Ini initialize
  
  def initialize(actor_id)
    Lettuce_Game_Actor_Ini(actor_id)
     @points = StartPoints
     @hitr = 0
     @evar = 0
     @crir = 0
     #@current_lvl_exp = @exp_list[@level-1]
     #@next_lvl_exp = @exp_list[@level]
  end

  def points
     return @points
  end
  
  #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    if n+@hitr <= MaxHIT
    return n+@hitr
  else return MaxHIT
    end
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def eva
    n = 5
    for item in armors.compact do n += item.eva end
    if n+@evar <= MaxEVA
     return n+@evar
   else return MaxEVA
     end
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    if n+@crir <= MaxCRIT
      return n+@crir
    else return MaxCRIT
      end
  end
  
 #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def base_hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def base_eva
    n = 5
    for item in armors.compact do n += item.eva end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def base_cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    return n
  end
  
  
  #--------------------------------------------------------------------------
  # * bonus rates
  #--------------------------------------------------------------------------   
  def hitr
    return @hitr
  end
  
  def evar
    return @evar
  end
  
  def crir
    return @crir
  end
    
    
  
  def current_lvl_exp
    return @exp_list[@level]
  end
  
  def next_lvl_exp
    return @exp_list[@level+1]-@exp_list[@level]
  end
end
 
Woot! Thanks a ton!

EDIT: Ugh.. new problem, now.

Now, for some reason, it makes people cause 0 damage with every hit on a regular basis. I know it's 0 damage, because I've gone in and changed the messages that show for each hit type (0 damage, miss, evade, etc). I copy/pasted the original script, and it works fine, it's only your fix for me that makes them do 0 damage. It doesn't matter what their ATK is, what the enemy's defense is or anything.

Help? :(
 
strange~ because the edit i gave you only check if the weapon is equipped, nothing to do with the actual charater's attribute at all.
Lemme work on it a bit XD

I found it~ It's this!

MaxHIT = 20

you set the MaxHIT too low, 20 means no matter what weapon or how many points of HIT you got, the maximum chance of hitting is 20%

and I made a little adjustment to the layout (because when there's no two handed weapon, it won't draw shield info XD)
Code:
=begin
+------------------------------------------------------------------------------+
� ** Stat points distribution system 1.6                                       �
�			     By Lettuce.                                       �
�                                                                              �
�                                                                              �
�Some help:                                                                    �
�     - Position wasn't stored properly in mode 1 (Thanks Akin)                �
�     - Some sort of notification to player (Thanks Akin)                      �
�     - Player switch now supports LEFT and RIGHT arrow (Thanks Akin)          �
�     - Advice on using class attr instead of global var (Thanks GoldenShadow) �
�                                                                              �
�------------------------------------------------------------------------------�
�  This script lets you distribute points onto your actor's stats              �
�                                                                              �
� Call scene using this: $scene = Scene_Stat_Dist.new(0)                       �
�                                                                              �
�                                                                              �
�  You can give points to your actors by using this code                       �
�                                                                              �
�	 $game_party.members[<member ID>].points += <amount of points>         �
�                                                                              �
�  If you want your actor to get points after leveling:                        �
�  Under Game_Actor, in def change_exp, under the line level_up; paste this    �
�                                                                              �
�			 difference = @level - last_level                      �
�    $game_actors[@actor_id].points += <amount of points>                      �
�                                                                              �
�				OR (if you want RO mode; explained below)      �
�                                                                              �
�      difference = @level - last_level                                        �
�      $game_actors[@actor_id].points += ((@level/5).floor+2).floor*difference �
�                                                                              �
� # It seems the game returns non 0 based array if we use game_party >.<;      �
�                                                                              �
�  **Note**                                                                    �
�  This script does not stop your actors from gaining stats points defined in  �
�  the database. It will just add to it.                                       �
�  Set the stats to 1 all the way in the database to disable growth :0         �
�                                                                              �
�  **Modes**                                                                   �
�  1 : Add one point to the attribute per point                                �
�  2 : Use RO system, attribute with value needs more points to increase.      �
�	  Explanation: In RO, if you got high stats, you need more points to   �
�	 increase it. So if you have 90 ATK and 5 INT...You can                �
�	choose to use 10 points for 1 more ATK OR use that 10 points           �
�	to get 6 INT                                                           �
+------------------------------------------------------------------------------+
=end
#������������������������������ Configuration ���������������������������������#
#Starting points; how many points to give to actor at the beginning of the game
StartPoints = 20
#Maximum attribute point you allowed in your game
MaxStat = 255
MaxHP = 9999
MaxMP = 999
     #Max hit, eva and crit rate are all in percentage
MaxHIT = 80 # 100 means never miss
MaxEVA = 12 #100 means ALWAYS dodge; very illogical ^^. 50-70 is good rate
MaxCRIT = 15 #100 means always crit o.O

    #How many points needed per increase
PointsPerHP = 2
PointsPerMP = 2
PointsPerHIT = 15
PointsPerEVA = 7
PointsPerCRIT = 5

#How many stats will increase per point?
IncreaseBy = 2
HPIncreaseBy = 25
MPIncreaseBy = 15
HITIncreaseBy = 5
EVAIncreaseBy = 1
CRITIncreaseBy = 1


#1 for normal mode, 2 or RO mode [points required calculated through formula]
Mode = 1
#You can chage font family and size here
Fontname = Font.default_name
Fontsize = 20

#Layout mode, if you use long words for atk,spi,def or agi ; set LayoutMode to 2
LayoutMode = 2

#========================== End Configuration ==================================
OFFSET = -10 #moves equipment part up and down XD
#==============================================================================
# ** Lettuce_Window_Top
#------------------------------------------------------------------------------
#  This window displays Title message
#==============================================================================

class Lettuce_Window_Top < Window_Base
  def initialize
	super(0,0,544,70)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
	refresh
	end
	
  def refresh
	self.contents.clear
	self.contents.draw_text(0,-10,544-32,32,"Stat Distribution",1)
	self.contents.font.size = Fontsize-4
	self.contents.draw_text(0,10,544-32,32,"Press left or right to change character",1)
  end
	
end
#==============================================================================
# ** Lettuce_Window_Points
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================
class Lettuce_Window_Points < Window_Base
  def initialize(member_index)
	super(401,320,144,52)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
	refresh(member_index)
  end
  
  def refresh(member_index)
	actor = $game_party.members[member_index]
	points = actor.points
  self.contents.clear
	self.contents.draw_text(0,0,162,20,"Points: "+points.to_s)	
  end
end

#==============================================================================
# ** Lettuce_Window_Info
#------------------------------------------------------------------------------
#  This window displays the attributes of a party member
#==============================================================================

class Lettuce_Window_Info < Window_Base
  def initialize(member_index)
	super(0,71,400,346)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.name = Fontname
	self.contents.font.size = Fontsize
  @exo = 25 #equipment section X coordinate offset
  @exo2 = 35 #equipment section X coordinate offset
  @eyo = -10 #equipment section Y coordinate offset
	refresh(member_index)
  end
	
  def refresh(member_index)
	actor = $game_party.members[member_index]
	self.contents.clear
  self.contents.font.size = Fontsize
	draw_actor_face(actor,10,10,92)
	draw_actor_name(actor,120,10)
	self.contents.font.size = Fontsize
	self.contents.draw_text(190,30,200,20,"Class: "+actor.class.name)
	self.contents.draw_text(120,30,200,20,"Lv. "+actor.level.to_s)
  
  if LayoutMode == 1
    draw_actor_state(actor,200,280,168)
  elsif LayoutMode == 2
    draw_actor_state(actor,220,10)
  end
  
	s1 = actor.exp_s #total exp
  s2 = actor.current_lvl_exp #exp to get to this level
  if s1.is_a?(Numeric)
    s3 = s1-s2 #progress in this level
    s4 = actor.next_lvl_exp #exp needed for next level
    self.contents.font.size = Fontsize - 5
    self.contents.draw_text(230,74,90,20,"EXP: "+s3.to_s+"/"+s4.to_s,0)
    self.contents.font.size = Fontsize
  else
    self.contents.draw_text(230,74,85,20,"-----/-----",2)
  end
	
	#Preparing bar colours
	back_color = Color.new(39, 58, 83, 255)
	
	str_color1 = Color.new(229, 153, 73, 255)
	str_color2 = Color.new(255, 72, 0, 255)
	
	def_color1 = Color.new(210, 255, 0, 255)
	def_color2 = Color.new(85, 129, 9, 255)
	
	spi_color1 = Color.new(99, 133, 161, 255)
	spi_color2 = Color.new(10, 60,107, 255)
	
	agi_color1 = Color.new(167, 125, 180, 255)
	agi_color2 = Color.new(90, 11, 107, 255)
  
  hp_color1 = Color.new(66, 114, 164, 255)
  hp_color2 = Color.new(122, 175, 229, 255)
  
  mp_color1 = Color.new(93, 50, 158, 255)
  mp_color2 = Color.new(145, 122, 229, 255)
  
  exp_color1 = Color.new(246, 243, 224, 255)
  exp_color2 = Color.new(255, 182, 0, 255)
  if s1.is_a?(Numeric)
    self.contents.fill_rect(230,90,89,7,back_color)
    self.contents.gradient_fill_rect(232,92,(85*s3)/s4,3,exp_color1,exp_color2)

  else
    self.contents.fill_rect(230,60,89,7,back_color)
  end
  
	
  self.contents.fill_rect(120,67,104,7,back_color)
	self.contents.gradient_fill_rect(122,69,100*actor.hp/actor.maxhp,3,hp_color1,hp_color2)
  self.contents.draw_text(120,44,100,30,"HP",0)
  self.contents.draw_text(120,44,100,30,actor.hp.to_s + "/" + actor.maxhp.to_s,2)
  
  self.contents.fill_rect(120,90,104,7,back_color)
	self.contents.gradient_fill_rect(122,92,100*actor.mp/actor.maxmp,3,mp_color1,mp_color2)
  self.contents.draw_text(120,67,100,30,"MP",0)
  self.contents.draw_text(120,67,100,30,actor.mp.to_s + "/" + actor.maxmp.to_s,2)
  
  ##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  evasion = 0
  crit = 4
  
  if $data_actors[actor.id].critical_bonus
    crit +=4
  end
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
    if weapon.critical_bonus
      crit += 4
    end
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
    evasion += shield.eva
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
    evasion += helm.eva
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
    evasion += body.eva
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
    evasion += accessory.eva
  end
  if LayoutMode == 1
    draw_item_name(weapon,160+@exo,125+@eyo,true)
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo,155+@eyo,true)      
    else
      draw_item_name(shield,160+@exo,155+@eyo,true)
    end
    draw_item_name(helm,160+@exo,185+@eyo,true)
    draw_item_name(body,160+@exo,215+@eyo,true)
    draw_item_name(accessory,160+@exo,245+@eyo,true)
    
    #Testing area for Weapon upgrade script
    #self.contents.font.size = Fontsize - 7
    #self.contents.draw_text(160+@exo,135,30,20,"[+"+weapon.level.to_s+"]",0)
    
    self.contents.font.color = Color.new(87,87,87,255)
    if !weapon 
      #draw_icon(216,160+@exo,125+@eyo,true)
      self.contents.draw_text(184+@exo,127+@eyo,200,20,"Unequipped")
    end
    if !shield
      #draw_icon(217,160+@exo,155+@eyo,true)
      self.contents.draw_text(184+@exo,157+@eyo,200,20,"Unequipped")
    end
    if !helm
      #draw_icon(218,160+@exo,185+@eyo,true)
      self.contents.draw_text(184+@exo,187+@eyo,200,20,"Unequipped")
    end
    if !body
      #draw_icon(219,160+@exo,215+@eyo,true)
      self.contents.draw_text(184+@exo,217+@eyo,200,20,"Unequipped")
    end
    if !accessory
      #draw_icon(220,160+@exo,245+@eyo,true)
      self.contents.draw_text(184+@exo,247+@eyo,200,20,"Unequipped")
    end
    self.contents.font.color = Color.new(255,255,255,255)
    
  elsif LayoutMode == 2
    draw_item_name(weapon,160+@exo2,125+OFFSET+@eyo,true)
    #if weapon
  if weapon
    two_hand = true if weapon.two_handed
  end
      if two_hand
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
      end
    #end
=begin
    if weapon.two_handed == true
      draw_item_name(weapon,160+@exo2,165+OFFSET+@eyo,true)
    else
      draw_item_name(shield,160+@exo2,165+OFFSET+@eyo,true)
    end
=end
    draw_item_name(helm,160+@exo2,205+OFFSET+@eyo,true)
    draw_item_name(body,160+@exo2,245+OFFSET+@eyo,true)
    draw_item_name(accessory,160+@exo2,285+OFFSET+@eyo,true)
    

      
      self.contents.font.color = Color.new(87,87,87,255)
    if !weapon 
      #draw_icon(216,160+@exo2,125+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,127+OFFSET+@eyo,200,20,"Unequipped")
    end
    if weapon
    if !shield and weapon.two_handed == false
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Unequipped")
    end
    else
    if !shield
      #draw_icon(217,160+@exo2,165+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,167+OFFSET+@eyo,200,20,"Unequipped")
    end
    end
    
    if !helm
      #draw_icon(218,160+@exo2,205+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,207+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !body
      #draw_icon(219,160+@exo2,245+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,247+OFFSET+@eyo,200,20,"Unequipped")
    end
    if !accessory
      #draw_icon(220,160+@exo2,285+OFFSET+@eyo,true)
      self.contents.draw_text(184+@exo2,287+OFFSET+@eyo,200,20,"Unequipped")
    end
    self.contents.font.color = Color.new(255,255,255,255)
  end
  
  
  
  self.contents.font.size = Fontsize - 5
	self.contents.draw_text(10,120,100,20,Vocab::atk+": ")
	self.contents.draw_text(10,120,100,20,(actor.atk-bonus_atk).to_s+" + "+bonus_atk.to_s,2)
	
	self.contents.fill_rect(10,140,104,7,back_color)
	self.contents.gradient_fill_rect(12,142,((actor.atk-bonus_atk)*100)/MaxStat,3,str_color1,str_color2)
	
	self.contents.draw_text(10,150,100,20,Vocab::def+": ")
	self.contents.draw_text(10,150,100,20,(actor.def-bonus_def).to_s+" + "+bonus_def.to_s,2)
	
	self.contents.fill_rect(10,170,104,7,back_color)
	self.contents.gradient_fill_rect(12,172,((actor.def-bonus_def)*100)/MaxStat,3,def_color1,def_color2)
	
	self.contents.draw_text(10,180,100,20,Vocab::spi+": ")
	self.contents.draw_text(10,180,100,20,(actor.spi-bonus_spi).to_s+" + "+bonus_spi.to_s,2)
	
	self.contents.fill_rect(10,200,104,7,back_color)
	self.contents.gradient_fill_rect(12,202,((actor.spi-bonus_spi)*100)/MaxStat,3,spi_color1,spi_color2)
	
	self.contents.draw_text(10,210,100,20,Vocab::agi+": ")
	self.contents.draw_text(10,210,100,20,(actor.agi-bonus_agi).to_s+" + "+bonus_agi.to_s,2)
	
	self.contents.fill_rect(10,230,104,7,back_color)
	self.contents.gradient_fill_rect(12,232,((actor.agi-bonus_agi)*100)/MaxStat,3,agi_color1,agi_color2)
	
  if weapon
    hit_rate = weapon.hit
  else
    hit_rate = 95
  end
    
    
  self.contents.font.size = Fontsize - 5 
  self.contents.font.color = Color.new(162,212,98,255)
  self.contents.draw_text(1,245,100,20,"Maximum ATK :",2)
  self.contents.draw_text(1,260,100,20,"Hit rate (%) :",2)
  self.contents.draw_text(1,275,100,20,"Evasion rate (%) :",2)
  self.contents.draw_text(1,290,100,20,"Critical Rate (%) :",2)
  
  self.contents.draw_text(105,245,60,20,(actor.atk*4).to_s,0)
  self.contents.draw_text(105,260,60,20,actor.base_hit.to_s + "+" + actor.hitr.to_s,0)
  self.contents.draw_text(105,275,60,20,actor.base_eva.to_s + "+" +actor.evar.to_s,0)
  self.contents.draw_text(105,290,60,20,actor.base_cri.to_s + "+" + actor.crir.to_s,0)
  
  self.contents.font.size = Fontsize-6
  self.contents.font.color = text_color(16)
  self.contents.draw_text(135,260,60,20,"[Req:"+PointsPerHIT.to_s+"pt.]",2)
  self.contents.draw_text(135,275,60,20,"[Req:"+PointsPerEVA.to_s+"pt.]",2)
  self.contents.draw_text(135,290,60,20,"[Req:"+PointsPerCRIT.to_s+"pt.]",2)
  
  #self.contents.draw_text(120,260,60,20,(hit_rate+actor.hit_bonus).to_s,0)
  #self.contents.draw_text(120,275,60,20,(evasion+actor.eva).to_s,0)
  #self.contents.draw_text(120,290,60,20,(crit+actor.cri_bonus).to_s,0)
  
  if LayoutMode == 1
    
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo,140+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(219+@exo,140+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo,140+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(287+@exo,140+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo,170+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(219+@exo,170+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo,170+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(287+@exo,170+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
  
  if helm
  self.contents.draw_text(185+@exo,200+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(219+@exo,200+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo,200+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(287+@exo,200+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
  
  if body
  self.contents.draw_text(185+@exo,230+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(219+@exo,230+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo,230+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(287+@exo,230+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
  
  if accessory
  self.contents.draw_text(185+@exo,260+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(219+@exo,260+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo,260+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(287+@exo,260+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
  
	if Mode == 2
	  self.contents.font.size = Fontsize - 8
	  self.contents.font.color = Color.new(155,199,206,255)
	  self.contents.draw_text(23,100,125,20,"POINTS",2)
	  self.contents.draw_text(29,110,125,20,"REQUIRED",2)
	  self.contents.font.size = Fontsize - 4
	  self.contents.draw_text(20,125,115,20,required(actor.atk-bonus_atk).to_s,2)
	  self.contents.draw_text(20,155,115,20,required(actor.def-bonus_def).to_s,2)
	  self.contents.draw_text(20,185,115,20,required(actor.spi-bonus_spi).to_s,2)
	  self.contents.draw_text(20,215,115,20,required(actor.agi-bonus_agi).to_s,2)
	end

  if LayoutMode == 2
  self.contents.font.color = Color.new(155,199,206,255)
  self.contents.font.size = Fontsize - 8
  if weapon
  self.contents.draw_text(185+@exo2,140+OFFSET+@eyo,100,20,Vocab::atk+"+"+weapon.atk.to_s)
  self.contents.draw_text(185+@exo2,150+OFFSET+@eyo,100,20,Vocab::def+"+"+weapon.def.to_s)
  self.contents.draw_text(253+@exo2,140+OFFSET+@eyo,100,20,Vocab::spi+"+"+weapon.spi.to_s)
  self.contents.draw_text(253+@exo2,150+OFFSET+@eyo,100,20,Vocab::agi+"+"+weapon.agi.to_s)
  end

  if shield
  self.contents.draw_text(185+@exo2,180+OFFSET+@eyo,100,20,Vocab::atk+"+"+shield.atk.to_s)
  self.contents.draw_text(185+@exo2,190+OFFSET+@eyo,100,20,Vocab::def+"+"+shield.def.to_s)
  self.contents.draw_text(253+@exo2,180+OFFSET+@eyo,100,20,Vocab::spi+"+"+shield.spi.to_s)
  self.contents.draw_text(253+@exo2,190+OFFSET+@eyo,100,20,Vocab::agi+"+"+shield.agi.to_s)
  end
  
  if helm
  self.contents.draw_text(185+@exo2,220+OFFSET+@eyo,100,20,Vocab::atk+"+"+helm.atk.to_s)
  self.contents.draw_text(185+@exo2,230+OFFSET+@eyo,100,20,Vocab::def+"+"+helm.def.to_s)
  self.contents.draw_text(253+@exo2,220+OFFSET+@eyo,100,20,Vocab::spi+"+"+helm.spi.to_s)
  self.contents.draw_text(253+@exo2,230+OFFSET+@eyo,100,20,Vocab::agi+"+"+helm.agi.to_s)
  end
  
  if body
  self.contents.draw_text(185+@exo2,260+OFFSET+@eyo,100,20,Vocab::atk+"+"+body.atk.to_s)
  self.contents.draw_text(185+@exo2,270+OFFSET+@eyo,100,20,Vocab::def+"+"+body.def.to_s)
  self.contents.draw_text(253+@exo2,260+OFFSET+@eyo,100,20,Vocab::spi+"+"+body.spi.to_s)
  self.contents.draw_text(253+@exo2,270+OFFSET+@eyo,100,20,Vocab::agi+"+"+body.agi.to_s)
  end
  
  if accessory
  self.contents.draw_text(185+@exo2,300+OFFSET+@eyo,100,20,Vocab::atk+"+"+accessory.atk.to_s)
  self.contents.draw_text(185+@exo2,310+OFFSET+@eyo,100,20,Vocab::def+"+"+accessory.def.to_s)
  self.contents.draw_text(253+@exo2,300+OFFSET+@eyo,100,20,Vocab::spi+"+"+accessory.spi.to_s)
  self.contents.draw_text(253+@exo2,310+OFFSET+@eyo,100,20,Vocab::agi+"+"+accessory.agi.to_s)
  end
  end
end

  def required(base)
	return (((base-1)/10)+2).floor
  end
  
end

#==============================================================================
# ** Lettuce_Window_Help
#------------------------------------------------------------------------------
#  This window displays property of each attribute
#==============================================================================
class Lettuce_Window_Help < Window_Base
  def initialize(index)
	super(401,372,144,44)
	self.contents = Bitmap.new(width-32,height-32)
	self.contents.font.size = Fontsize - 6
	refresh(index)
  end
  
  def refresh(index)
	self.contents.clear
  self.contents.font.color = text_color(16)

    case index
    when 0
      self.contents.draw_text(0,-5,112,20,"HP + "+HPIncreaseBy.to_s)
    when 1
      self.contents.draw_text(0,-5,112,20,"MP + "+MPIncreaseBy.to_s)
    when 2
      self.contents.draw_text(0,-5,112,20,Vocab::atk+" + "+IncreaseBy.to_s)
    when 3
      self.contents.draw_text(0,-5,112,20,Vocab::def+" + "+IncreaseBy.to_s)
    when 4
      self.contents.draw_text(0,-5,112,20,Vocab::spi+" + "+IncreaseBy.to_s)
    when 5
      self.contents.draw_text(0,-5,112,20,Vocab::agi+" + "+IncreaseBy.to_s)
    when 6
      self.contents.draw_text(0,-5,112,20,"HIT + "+HITIncreaseBy.to_s)
    when 7
      self.contents.draw_text(0,-5,112,20,"EVA + "+EVAIncreaseBy.to_s)
    when 8
      self.contents.draw_text(0,-5,112,20,"CRIT + "+CRITIncreaseBy.to_s)
    end

  
  end
  
end
  

#==============================================================================
# ** Scene_Stat_Dist
#------------------------------------------------------------------------------
#  Performs stat distribution process :)
#==============================================================================
class Scene_Stat_Dist < Scene_Base
  def initialize(menu_index)
	@menu_index = menu_index
  end
  
  def start
	super
	create_menu_background
  ihp = Vocab::hp
  imp = Vocab::mp
	i1 = Vocab::atk
	i2 = Vocab::def
	i3 = Vocab::spi
	i4 = Vocab::agi
  i5 = "HIT"
  i6 = "EVA"
  i7 = "CRIT"
	@window_select = Window_Command.new(144,[ihp,imp,i1,i2,i3,i4,i5,i6,i7])
	if $position
	  @window_select.index = $position - 1
	else
	  @window_select.index = 0
	end
	
	@window_select.active = true
	@window_select.x = 401
	@window_select.y = 71
	
	@window_top = Lettuce_Window_Top.new
	@window_points = Lettuce_Window_Points.new(@menu_index)
	@window_info = Lettuce_Window_Info.new(@menu_index)
	@window_help = Lettuce_Window_Help.new(@window_select.index)
  end
	
  def terminate
	super
	dispose_menu_background
	@window_top.dispose
	@window_points.dispose
	@window_info.dispose
	@window_help.dispose
	@window_select.dispose
  end
  
  def update
	update_menu_background
	#@window_points.refresh(@menu_index)
  
	@window_select.update
	#@window_help.refresh(@window_select.index)
  if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
    @window_help.refresh(@window_select.index)
  end
  
	@changes = 0
	if Input.trigger?(Input::B)
	  Sound.play_cancel
	  $scene = Scene_Map.new
	elsif Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
	  @menu_index += 1
	  @menu_index %= $game_party.members.size
	  $scene = Scene_Stat_Dist.new(@menu_index)
	elsif Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
	  @menu_index += $game_party.members.size - 1
	  @menu_index %= $game_party.members.size
	  $scene = Scene_Stat_Dist.new(@menu_index)
	elsif Input.trigger?(Input::C)
	  #Points addition begins
	  #which attribute
	  if Mode == 1
		do_point_reg
	  elsif Mode == 2
		do_point_rag
	  end
	end  

  end
  
  def do_point_reg
	@att = @window_select.index
  
  actor = $game_party.members[@menu_index]
  
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
  
	  case @att
    
    when 0 #HP
		if actor.points < PointsPerHP
		  Sound.play_cancel
		elsif actor.maxhp >= MaxHP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
		  actor.points -= PointsPerHP
		  @changes += 1
      $position = 1
		end
    
    when 1 #MP
		if actor.points < PointsPerMP
		  Sound.play_cancel
		elsif actor.maxmp >= MaxMP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
		  actor.points -= PointsPerMP
		  @changes += 1
      $position = 1
		end
    
	  when 2 #ATK
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.atk-bonus_atk) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
		  actor.points -= 1
		  @changes += 1
      $position = 1
		end
		
	  when 3 #DEF
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.def-bonus_def) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
		  actor.points -= 1
		  @changes += 1
      $position = 2
		end
		
	  when 4 #SPI
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.spi-bonus_spi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
		  actor.points -= 1
		  @changes += 1
      $position = 3
		end
	  when 5 #AGI
		if actor.points < 1
		  Sound.play_cancel
		elsif (actor.agi-bonus_agi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
		  actor.points -= 1
		  @changes += 1
      $position = 4
		end
	  
	  
    when 6 #HIT
		if actor.points < PointsPerHIT
		  Sound.play_cancel
		elsif actor.hitr >= MaxHIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
		  actor.points -= PointsPerHIT
		  @changes += 1
      $position = 1
		end
    when 7 #EVA
		if actor.points < PointsPerEVA
		  Sound.play_cancel
		elsif actor.evar >= MaxEVA
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
		  actor.points -= PointsPerEVA
		  @changes += 1
      $position = 1
		end
    when 8 #CRIT
		if actor.points < PointsPerCRIT
		  Sound.play_cancel
		elsif actor.crir >= MaxCRIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
		  actor.points -= PointsPerCRIT
		  @changes += 1
      $position = 1
		end
  end
  
  if @changes > 0
      @window_info.refresh(@menu_index)
      @window_points.refresh(@menu_index)
		  #$scene = Scene_Stat_Dist.new(@menu_index)
	  end
  end
  
  def do_point_rag
	@att = @window_select.index
  
  actor = $game_party.members[@menu_index]
  
##weapons
  weapon = $data_weapons[actor.weapon_id]
  shield = $data_armors[actor.armor1_id]
  helm =$data_armors[actor.armor2_id]
  body =$data_armors[actor.armor3_id]
  accessory =$data_armors[actor.armor4_id]
  
  bonus_atk = 0
  bonus_def = 0
  bonus_spi = 0
  bonus_agi = 0
  
  if weapon
    bonus_atk += weapon.atk
    bonus_def += weapon.def
    bonus_spi += weapon.spi
    bonus_agi += weapon.agi
  end
  if shield
    bonus_atk += shield.atk
    bonus_def += shield.def
    bonus_spi += shield.spi
    bonus_agi += shield.agi
  end
    if helm
    bonus_atk += helm.atk
    bonus_def += helm.def
    bonus_spi += helm.spi
    bonus_agi += helm.agi
  end
    if body
    bonus_atk += body.atk
    bonus_def += body.def
    bonus_spi += body.spi
    bonus_agi += body.agi
  end
    if accessory
    bonus_atk += accessory.atk
    bonus_def += accessory.def
    bonus_spi += accessory.spi
    bonus_agi += accessory.agi
  end
  
	  case @att
    
    when 0 #HP
		if actor.points < PointsPerHP
		  Sound.play_cancel
		elsif actor.maxhp >= MaxHP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxhp += HPIncreaseBy
      if $game_party.members[@menu_index].maxhp > MaxHP
        $game_party.members[@menu_index].maxhp = MaxHP
      end
		  actor.points -= PointsPerHP
		  @changes += 1
      $position = 1
		end
    
    when 1 #MP
		if actor.points < PointsPerMP
		  Sound.play_cancel
		elsif actor.maxmp >= MaxMP
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].maxmp += MPIncreaseBy
      if $game_party.members[@menu_index].maxmp > MaxMP
        $game_party.members[@menu_index].maxmp = MaxMP
      end
		  actor.points -= PointsPerMP
		  @changes += 1
      $position = 1
		end
    
	  when 2 #ATK
		base_value = actor.atk-bonus_atk
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.atk-bonus_atk) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].atk += IncreaseBy
      if ($game_party.members[@menu_index].atk-bonus_atk) > MaxStat
        $game_party.members[@menu_index].atk = MaxStat+bonus_atk
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 1
		end
		
	  when 3 #DEF
		base_value = actor.def-bonus_def
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.def-bonus_def) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].def += IncreaseBy
      if ($game_party.members[@menu_index].def-bonus_def) > MaxStat
        $game_party.members[@menu_index].def = MaxStat+bonus_def
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 2
		end
		
	  when 4 #SPI
		base_value = actor.spi-bonus_spi
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.spi-bonus_spi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].spi += IncreaseBy
      if ($game_party.members[@menu_index].spi-bonus_spi) > MaxStat
        $game_party.members[@menu_index].spi = MaxStat+bonus_spi
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 3
		end
	  when 5 #AGI
		base_value = actor.agi-bonus_agi
		points = actor.points
		if enough_point(base_value,points)
		  Sound.play_cancel
		elsif (actor.agi-bonus_agi) >= MaxStat
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].agi += IncreaseBy
      if ($game_party.members[@menu_index].agi-bonus_agi) > MaxStat
        $game_party.members[@menu_index].agi = MaxStat+bonus_agi
      end
		  actor.points -= required(base_value)
		  @changes += 1
		  $position = 4
		end
    when 6 #HIT
		if actor.points < PointsPerHIT
		  Sound.play_cancel
		elsif actor.hitr >= MaxHIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].hitr += HITIncreaseBy
      if $game_party.members[@menu_index].hitr > MaxHIT
        $game_party.members[@menu_index].hitr = MaxHIT
      end
		  actor.points -= PointsPerHIT
		  @changes += 1
      $position = 1
		end
    when 7 #EVA
		if actor.points < PointsPerEVA
		  Sound.play_cancel
		elsif actor.evar >= MaxEVA
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].evar += EVAIncreaseBy
      if $game_party.members[@menu_index].evar > MaxEVA
        $game_party.members[@menu_index].evar = MaxEVA
      end
		  actor.points -= PointsPerEVA
		  @changes += 1
      $position = 1
		end
    when 8 #CRIT
		if actor.points < PointsPerCRIT
		  Sound.play_cancel
		elsif actor.crir >= MaxCRIT
		  Sound.play_cancel
		else
      Sound.play_use_item
		  $game_party.members[@menu_index].crir += CRITIncreaseBy
      if $game_party.members[@menu_index].crir > MaxCRIT
        $game_party.members[@menu_index].crir = MaxCRIT
      end
		  actor.points -= PointsPerCRIT
		  @changes += 1
      $position = 1
		end
	  end
	  if @changes > 0
      @window_points.refresh(@menu_index)
      @window_info.refresh(@menu_index)
		#$scene = Scene_Stat_Dist.new(@menu_index)
	  end
  end
  
  def enough_point(base,points)
	required = (((base-1)/10)+2).floor
	if required > points
	  return true
	elsif required <= points
	  return false
	end
  end
  
  def required(base)
	return (((base-1)/10)+2).floor
  end
  
end


#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  Giving game actor a point attribute
#  -> $game_party.member[x].points
#==============================================================================

class Game_Actor < Game_Battler

  attr_accessor :points
  attr_accessor :hit_bonus
  attr_accessor :eva_bonus
  attr_accessor :cri_bonus
  attr_accessor :hitr
  attr_accessor :evar
  attr_accessor :crir
  #attr_accessor :current_lvl_exp
  #attr_accessor :next_lvl_exp
  alias Lettuce_Game_Actor_Ini initialize
  
  def initialize(actor_id)
    Lettuce_Game_Actor_Ini(actor_id)
     @points = StartPoints
     @hitr = 0
     @evar = 0
     @crir = 0
     #@current_lvl_exp = @exp_list[@level-1]
     #@next_lvl_exp = @exp_list[@level]
  end

  def points
     return @points
  end
  
  #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    if n+@hitr <= MaxHIT
    return n+@hitr
  else return MaxHIT
    end
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def eva
    n = 5
    for item in armors.compact do n += item.eva end
    if n+@evar <= MaxEVA
     return n+@evar
   else return MaxEVA
     end
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    if n+@crir <= MaxCRIT
      return n+@crir
    else return MaxCRIT
      end
  end
  
 #--------------------------------------------------------------------------
  # * Get Hit Rate
  #--------------------------------------------------------------------------
  def base_hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Evasion Rate
  #--------------------------------------------------------------------------
  def base_eva
    n = 5
    for item in armors.compact do n += item.eva end
    return n
  end
  #--------------------------------------------------------------------------
  # * Get Critical Ratio
  #--------------------------------------------------------------------------
  def base_cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
    return n
  end
  
  
  #--------------------------------------------------------------------------
  # * bonus rates
  #--------------------------------------------------------------------------   
  def hitr
    return @hitr
  end
  
  def evar
    return @evar
  end
  
  def crir
    return @crir
  end
    
    
  
  def current_lvl_exp
    return @exp_list[@level]
  end
  
  def next_lvl_exp
    return @exp_list[@level+1]-@exp_list[@level]
  end
end
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top