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.

2 Questions...

Q1: I've heard that if you adjust the window to make it wider (or have a wide screen) you can have a script that makes the max party size 5. Is this possible? Let me know how to do it if so. (I have a wide screen, so...)

Q2: I know this will most likely be tough one but I dunno, I do not script...but anyhoo. I was wanting to have two special characters that will appear sometime in my game. These characters cannot be controlled and can't be healed/whatever...Also you cannot see them when fighting enemies/bosses (like how Picky/Pokey/Dog/Buzz Buzz/ Dungeon Man fought with you in Earthbound). Like in Earthbound they cannot attack but they can deal some damage using their own special attacks. If this is possible let me know and I'll give out more info on these characters if needed. Thanks.
 
Would this person show up in your menu, or would he be completely hidden?

If they are completely hidden, you can create a pseudo character - a character that isn't really there, but using events you can make them take action.

I would recommend throwing a switch whenever the character is in your party. Then, go into the database and go under Troops. Select any troop that you will encounter while the character is in your party.

There should be an Event handler at the bottom of the screen. In the drop-down box just above the event handler (the Conditions box) select Switch X is On (whatever switch you turned on when the character joined your party).

There should be another drop-down box just to the right of the Condition box, which should default to "Battle". Click on it and change it to "Turn".

Now, in the Event handler, you can create a prompt for when the character takes action.

For example:

Dog is in your party. He has a 50% chance to bite the enemy and a 50% chance to 'Lay down' and take no action that turn.

Use Variables to set up the probabilities. Select a Variable (I will use Variable 001 in this example) and set it to a random number, selecting two numbers to give you a randomized chance. We want a 50/50 (or 1/2) chance of the Dog taking action. So:

@Set Variable [001]: Random 1 ~ 2.

Then, use a Conditional Branch to set his action.

Conditional Branch: Variable [001] = 1
@Text: Dog bites the ankle of the enemy
@Use Deal Damage to mimic an attack.
Else:
@Text: Dog lays down
End Branch

You can also use Variables to randomize which enemy the Dog attacks.

For example, there are 3 enemies (a bee, a man and a bunny rabbit - whatever) in the Troop. You want the dog to have an equal chance of attacking any one of them.

In the Deal Damage portion, use another Conditional Branch and another Variable to randomize the target.

Set Variable [002]: Random 1 ~ 3
@Conditional Branch: Variable [002] = 1
<>Deal Damage to Bee
End Branch
@Conditional Branch: Variable [002] = 2
<>Deal Damage to Man
End Branch
@Conditional Branch: Variable [002] = 3
<>Deal Damage to Bunny Rabbit
End Branch

This will create the illusion there is another character, but they won't have health, cannot be attacked, etc.

When the character leaves the party, simply turn your Switch Off.
 
Not completely hidden, they would show up during the menu, etc. But you can't see them during battles and they just attack on their own. I was thinking there could be a script out there that would make the max party size at 6, then make it where you can only see the four main current battlers even though the other two are there. If there isn't a way I'll try out what you said. Thanks.

Also if this becomes too difficult I won't mind making these too characters normal characters, lol.
 
Hmm....yeah that would require a script to have them show in the menu but not in battle.

I am not very good with scripting, so I will leave that up to the pros on here. Sorry, wish I could have been more help.
 
this is my script to change the party max size (change that red, bold and big 8 to the size you want). If you set it to 0 you remove the limit.
Code:
#==========================================================================
class Game_Party
  #--------------------------------------------------------------------------
  PARTY_SIZE = [B][COLOR=Red][SIZE=4]8[/SIZE][/COLOR][/B]
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    # Get actor
    actor = $game_actors[actor_id]
    # If the party has less than 4 members and this actor is not in the party
    if (@actors.size < PARTY_SIZE or PARTY_SIZE == 0) and not @actors.include?(actor)
      # Add actor
      @actors.push(actor)
      # Refresh player
      $game_player.refresh
    end
  end
  #--------------------------------------------------------------------------
end
#==========================================================================
class Window_MenuStatus
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 480, 480)
    @cursor_height = (self.height - 32) / 4
    @item_max = $game_party.actors.size
    self.contents = Bitmap.new(width - 32, @item_max * @cursor_height)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  def draw_actor(i)
    x = 64
    y = i * @cursor_height
    actor = $game_party.actors[i]
    draw_actor_graphic(actor, x - 40, y + 80)
    draw_actor_name(actor, x, y)
    draw_actor_class(actor, x + 144, y)
    draw_actor_level(actor, x, y + 32)
    draw_actor_state(actor, x + 90, y + 32)
    draw_actor_exp(actor, x, y + 64)
    draw_actor_hp(actor, x + 236, y + 32)
    draw_actor_sp(actor, x + 236, y + 64)
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      draw_actor(i)
    end
  end
  #--------------------------------------------------------------------------
  def update_cursor_rect
    super
  end
  #--------------------------------------------------------------------------
end
#==========================================================================
class Window_Target
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 336, 480)
    @cursor_height = (self.height - 32) / 4
    @item_max = $game_party.actors.size
    self.contents = Bitmap.new(width - 32, @item_max * @cursor_height)
    self.z += 10
    refresh
  end
  #--------------------------------------------------------------------------
  def draw_actor(i)
    x = 4
    y = i * @cursor_height
    actor = $game_party.actors[i]
    draw_actor_name(actor, x, y)
    draw_actor_class(actor, x + 144, y)
    draw_actor_level(actor, x + 8, y + 32)
    draw_actor_state(actor, x + 8, y + 64)
    draw_actor_hp(actor, x + 152, y + 32)
    draw_actor_sp(actor, x + 152, y + 64)
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...$game_party.actors.size
      draw_actor(i)
    end
  end
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # Cursor position -1 = all choices, -2 or lower = independent choice
    # (meaning the user's own choice)
    if @index <= -2
      self.cursor_rect.set(0, (@index + 10) * @cursor_height, self.width - 32, @cursor_height)
    elsif @index == -1
      self.cursor_rect.set(-16, -16, self.width, self.height)
    else
      super
    end
  end
  #--------------------------------------------------------------------------
end
#==========================================================================
you will need this window_selectable edit by SephirothSpawn to use it.
Code:
#==============================================================================
# ** Window_Selectable
#==============================================================================

class Window_Selectable < Window_Base
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor   :cursor_height
  #--------------------------------------------------------------------------
  # * Alias' New Listings
  #--------------------------------------------------------------------------
  alias seph_scriptsbase_windowselectable_init initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    # Sets Up Cursor Height
    @cursor_height = 32
    # Old Initialize Method
    seph_scriptsbase_windowselectable_init(x, y, width, height)
  end
  #--------------------------------------------------------------------------
  # * Get Top Row
  #--------------------------------------------------------------------------
  def top_row
    # Divide y-coordinate of window contents transfer origin by 1 row
    # height of @cursor_height
    return self.oy / @cursor_height
  end
  #--------------------------------------------------------------------------
  # * Set Top Row
  #     row : row shown on top
  #--------------------------------------------------------------------------
  def top_row=(row)
    # If row is less than 0, change it to 0
    if row < 0
      row = 0
    end
    # If row exceeds row_max - 1, change it to row_max - 1
    if row > row_max - 1
      row = row_max - 1
    end
    # Multiply 1 row height by 32 for y-coordinate of window contents
    # transfer origin
    self.oy = row * @cursor_height
  end
  #--------------------------------------------------------------------------
  # * Get Number of Rows Displayable on 1 Page
  #--------------------------------------------------------------------------
  def page_row_max
    # Subtract a frame height of 32 from the window height, and divide it by
    # 1 row height of @cursor_height
    return (self.height - 32) / @cursor_height
  end
  #--------------------------------------------------------------------------
  # * Update Cursor Rectangle
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # If cursor position is less than 0
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # Get current row
    row = @index / @column_max
    # If current row is before top row
    if row < self.top_row
      # Scroll so that current row becomes top row
      self.top_row = row
    end
    # If current row is more to back than back row
    if row > self.top_row + (self.page_row_max - 1)
      # Scroll so that current row becomes back row
      self.top_row = row - (self.page_row_max - 1)
    end
    # Calculate cursor width
    cursor_width = self.width / @column_max - 32
    # Calculate cursor coordinates
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * @cursor_height - self.oy
    if self.active == true
      # Update cursor rectangle
      self.cursor_rect.set(x, y, cursor_width, @cursor_height)
    end
  end
end

EDIT: This won't do anything at your battle scene. You still only can see only four party members, but you will use all of them.
 
Even if you are able to do that, you still need to edit the battle status window width. But, I think editing the actors' screen_x and the status window is better than messing with the screen.
 

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