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] Custom Commands

If the line looks like
Code:
if $game_system.menu_party_changer
then remove everything after the 'if', including the 'if'.

I'll update the Bestiary Menu Command soon.
 
Yes, i got it to work on a game without any other scripts now, but in the game that had the ability grid system it returned a new error, on line 38. It's a NoMethodError again, but with `selection' this time
 
hey can someone help me with this script. I want to put a stat distribute command in the menu (script is from lettuce) andI would know how to do it on the regular menu screen, but I like this one better, and I'm also using your party changer script, so I can't really not use this script. Anyway, is there anyway to put a command for this script (again credits to lettuce for the script)
Code:
=begin
+------------------------------------------------------------------------------+
# ** Stat points distribution system 1.7                                       #
#                  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 = 1

#========================== 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_hand = true if weapon.two_handed == true
    end
    if two_hand      
      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)
      if !two_hand
      self.contents.draw_text(184+@exo,157+@eyo,200,20,"Unequipped")
      end
    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
 
I seem to be getting an error with this script when I try to select the 'fight' command in battle.

Script 'Custom commands' line 433: NoMethodError occured.

undefined method 'size' for nil:NilClass

I am using this script along with the large party and party changer scripts, as well as some others. I suspect a conflict between scripts, do you know what is going on?
 
Are you using the latest version of the script? It might be a conflict between script versions.
If you are using an older version of whether the Custom Commands or Party Changer, update them to the latest version.

I'd also like to know, what are the other scripts?
 
Well, I made sure all of the scripts were updated and I checked all of my other scripts. The error only occurs when cmpsr2000's Shopaholic script is present, so I'm sure that script is causing the problem. I can link you to the script if you want.
 
hmm I know your not taking command requests...

I was just wanting to know... in tricksters one for xp
you could make a command box that only showed certain skill types
or just certain skills... and it also let you choose a set ammount of uses for specific skills

I was wanting to know if there was a way to make it show just certain skills...

I mean is there any code in your script for showing specific skill types? if not then oh well
 
I have updated the script to version 1.9.1. It's not a big update, I've only made a couple of revisions.

@wsensor
well, this script is for vx, it will not work with trickster's scripts.
However, I'm working on a Skill Subsets script, for vx. maybe you can wait a bit?
 
ok XD I was just wandering if there was a way to do it XD

I was thinking about making commands sets that you are given when using certain armor or weapons...

so say I have the accessory Book of Basic Magic

it would give you the skill subset Basic Magic
and would have certain spells in it...

it would also be nice if you could make it read a line or two from the note's tab Dargor...

say for skill subsets give it ability to read note lines like this
ssl = skill subset level

even if you have the skill subset if your level is not equal or greater it does not show...

thats what I was doing when I was messing with trickster's scripts and xp for awhile...
had 5 or 6 different magic books... each adding a specific skill subset...
I also had found a script that let you set each skill to be learned on uses so I was actually able to make my chars keep the skills they learned from the book accessories I had made
 
I have made another update! The previous one was not important enough so I have decided to add more eye candies to it.
Version 1.10 now supports Icons for commands, based on the command names.
I have added a screenshot section in the first post so you can have a little preview!

@wsensor 
I'm almost done with the skill subset script. Of course, it will be combined with the custom commands script.
Also, I like the idea of adding (or even removing) commands depending on your equipment, I might add that in a future version! ;)

Take care!
-Dargor
 
yea

Trickster's script custom battle commands allowed you to make command skill subsets...

like I was saying there were a couple types of skill setups...
1 the script could set to make some skills have set numbers of uses per battle...
2 some skills had reloadable uses and when you defended it reloaded certain skills a certain amount to the max...
3 when equiping armor or weapons or accessories it could be used to make load a custom command skillset
  the skillset then read what skills it should have from a list...

so like I was saying

skillset [Starter Magic] would be given when you equiped the accessory
[Beginners Magery] book would give you the following skills for how I set it up
Frost      lvl1 skill
Zap        lvl1 skill
Burn      lvl1 skill
it also gave advanced beginners skills but those ones did not work because I had them setup to only work once the first 3 skills were learned based on a use system
this would make the character learn the skills forever if you used them enough to learn them making them available in the normal skill selections
(but that was done with 2 other different scripts and the 2nd one was heavily tinkered with and even though it was not meant to do what I made it do after I messed it up to read that the skill was mastered from the first script it let me use the next skills)

it would be nice if someone would make an add-on script for learning skills and making skills work only if you have learned other skills and had required items also
 
Yeah im kinda new at this. I can't figure out how to shut off the icons (like the attack icons and what not) that are on by default. Help please!
 
If you don't want to use icons, go in the configuration module at the begining of the script and change
Code:
Icons = {
            # title screen
            Vocab::new_game => 141, 
            Vocab::continue => 133, 
            Vocab::shutdown => 112,
            # main menu
            Vocab::item => 144,
            Vocab::skill => 119, 
            Vocab::equip => 41, 
            Vocab::status => 149, 
            Vocab::save => 159, 
            Vocab::game_end => 112,
            # battle
            Vocab::attack => 2,
            Vocab::guard => 52,
            Vocab::fight => 2,
            Vocab::escape => 48,
            # game end
            Vocab::to_title => 141,
            Vocab::cancel => 143
          }
for
Code:
Icons = {}
 
      This is a great script. I'm especially loving the icons. The problem I'm having is that when I change the name of the skill command for certain classes (ex: Warrior class with Swordplay) the icon for skill doesn't show up and it just has the text in the battle menu.

      Also, I'm just wondering if you can set icons for the skill and item commands on the main menu to be different for the battle menu.
 
Master Fayt":3tnyn1yy said:
       This is a great script. I'm especially loving the icons. The problem I'm having is that when I change the name of the skill command for certain classes (ex: Warrior class with Swordplay) the icon for skill doesn't show up and it just has the text in the battle menu.
It's because you need to specify an Icon for Swordplay. The script doesn't take custom Skill Command Name into consideration.

Master Fayt":3tnyn1yy said:
Also, I'm just wondering if you can set icons for the skill and item commands on the main menu to be different for the battle menu.
No you can't. It's because Icons are "String-Based". If there is, for example, a command named "Item" in a different scene, the script will search the Array of icons and if it sees that an icon is associated with the string "Item" it will automatically draw this icon with this command.

I'll take that into consideration and see if I can elaborate the icon feature.
Take care!
-Dargor
 

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