=begin +------------------------------------------------------------------------------+ � ** Stat points distribution system 1.6 � By Lettuce. Edité par Kirby58 � � �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) � �----------------------------------------------------------------------------- � Ce script, permet de distribuer des points pour augmenter les stats de vos héros � � Pour l'appeler : $scene = Scene_Stat_Dist.new(0) � � � Pour donner des points à vos héros utilisez : � � $game_party.members[ID_du_héros].points += Nombre_de_points � � Si vous voulez que votre héros ai ces points après avoir monté d'un niveau : � Dans Game_Actor, à "def change_exp", sous la ligne 'level_up'; collez ça : � � $game_actors[@actor_id].points += Nombre_de_points � � OU (Si vous voulez le mode RO, expliqué en bas) � � $game_actors[@actor_id].points += ((@level/5).floor+2).floor � � # It seems the game returns non 0 based array if we use game_party >.<; � � **Note** � Le script n'influance pas sur les stats du héros dans la base de données � Il les ajoutes juste. � Set the stats to 1 all the way in the database to disable growth :0 � � **Modes** � 1 : 1 point / caractéristiques � Exemple : Pour augmenter l'attaque vous utiliserez 1 points quelque sois sa valeur � 2 : Utiliser le systéme RO , les points a donner dépende de la valeur du stat. � Explanation: Dans RO, isi vous avez des stats éléves, vous avez besoin de plus de points pour � les augmenter. Donc si vous avez 90 d'attaque et 5 d'intel, Vous pouvez choisir � d'utiliser 10 point pour 1 d'attaque de plus ou utiliser 10 points pour obtenir 6 d'Intteligence +------------------------------------------------------------------------------+ =end #������������������������������ Configuration ���������������������������������# #Points de départ : Nombre de points reçus au début du jeu StartPoints = 30 #Le maximun de stats que vous autorisez MaxStat = 300 MaxHP = 9999 MaxMP = 999 #Le maximum de stats : "% chance de toucher l'ennemi, d'esquiver et de faire un coup critique. MaxHIT = 100 # 100 = Ne rate jamais MaxEVA = 65 #100 = esquive TOUT les coups : Pas logique ^^'. 50-70 est une bonne moyenne MaxCRIT = 90 #100 = Toujours des critiques. # Combien de points sont nécessaire pour augmenter les stats PointsPerHP = 5 # Hp PointsPerMP = 5 # Mp PointsPerHIT = 4 # % de chance de toucher PointsPerEVA = 7 #% de chance d'esquiver PointsPerCRIT = 5 # % chance de critique. # De combien sont augmenté les stats par points ? IncreaseBy = 10 # Attaque, défense,intelligence, agilitée HPIncreaseBy = 100 # Hp MPIncreaseBy = 50 # Mp HITIncreaseBy = 1 # % de chance de toucher EVAIncreaseBy = 1 # % de chance d'esquiver CRITIncreaseBy = 1 # % chance de critique. #1 pour le mode normal, 2 ou RO mode [Les points requis sont calculés différaments] Mode = 2 #Vous pouvez changer la police et la taille : Fontname = "UmePlus Gothic" Fontsize = 20 #Layout mode, si vous utilisez des mots long à la place de atk,spi,def or agi ; mettez 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,"Distribution de Stats",1) self.contents.font.size = Fontsize-4 self.contents.draw_text(0,10,544-32,32,"Gauche ou droite pour changer de héros",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,"Classe: "+actor.class.name) self.contents.draw_text(120,30,200,20,"Niv "+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,"Unequiped") end if !shield draw_icon(217,160+@exo,155+@eyo,true) self.contents.draw_text(184+@exo,157+@eyo,200,20,"Unequiped") end if !helm draw_icon(218,160+@exo,185+@eyo,true) self.contents.draw_text(184+@exo,187+@eyo,200,20,"Unequiped") end if !body draw_icon(219,160+@exo,215+@eyo,true) self.contents.draw_text(184+@exo,217+@eyo,200,20,"Unequiped") end if !accessory draw_icon(220,160+@exo,245+@eyo,true) self.contents.draw_text(184+@exo,247+@eyo,200,20,"Unequiped") 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.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 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,"Déséquipé") 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,"Déséquipé") end if !helm draw_icon(218,160+@exo2,205+OFFSET+@eyo,true) self.contents.draw_text(184+@exo2,207+OFFSET+@eyo,200,20,"Déséquipé") end if !body draw_icon(219,160+@exo2,245+OFFSET+@eyo,true) self.contents.draw_text(184+@exo2,247+OFFSET+@eyo,200,20,"Déséquipé") end if !accessory draw_icon(220,160+@exo2,285+OFFSET+@eyo,true) self.contents.draw_text(184+@exo2,287+OFFSET+@eyo,200,20,"Déséquipé") 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(10,245,100,20,"Attaque max. :",2) self.contents.draw_text(10,260,100,20,"Frappe (%) :",2) self.contents.draw_text(10,275,100,20,"Esquive (%) :",2) self.contents.draw_text(10,290,100,20,"Critique (%) :",2) self.contents.draw_text(120,245,60,20,(actor.atk*4).to_s,0) self.contents.draw_text(120,260,60,20,actor.base_hit.to_s + "+" + actor.hitr.to_s,0) self.contents.draw_text(120,275,60,20,actor.base_eva.to_s + "+" +actor.evar.to_s,0) self.contents.draw_text(120,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,"REQUIS",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 = "Frappe" i6 = "Esquive" i7 = "Critique" @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