Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - KK20

1
Script Requests / Re: [RMXP] DEX to HP
November 20, 2021, 06:50:51 pm
You were almost there. I only had to make a couple changes to get it working.
Spoiler: ShowHide

#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
#  This window displays actor parameter changes on the equipment screen.
#==============================================================================

class Window_EquipLeft < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 64, 272, 256)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 4, 0)
    draw_actor_level(@actor, 4, 32)
    draw_actor_parameter(@actor, 4, 64, 0)
    draw_actor_parameter(@actor, 4, 96, 1)
    draw_actor_parameter(@actor, 4, 128, 2)
    draw_actor_hp2(@actor, 4, 160)
    draw_actor_sp2(@actor, 4, 192)
    if @new_atk != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 64, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2)
    end
    if @new_pdef != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 96, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2)
    end
    if @new_mdef != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 128, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2)
    end
    if @new_hp != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 160, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 160, 36, 32, @new_hp.to_s, 2)
    end
    if @new_sp != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 192, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 192, 36, 32, @new_sp.to_s, 2)
    end
  end
  def draw_actor_hp2(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, $data_system.words.hp)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, actor.maxhp.to_s, 2)
  end
  def draw_actor_sp2(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, $data_system.words.sp)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, actor.maxsp.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Set parameters after changing equipment
  #    new_atk  : attack power after changing equipment
  #    new_pdef : physical defense after changing equipment
  #    new_mdef : magic defense after changing equipment
  #--------------------------------------------------------------------------
  def set_new_parameters(new_hp, new_sp, new_atk, new_pdef, new_mdef)
    if @new_hp != new_hp or @new_sp != new_sp or @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef
      @new_hp = new_hp
      @new_sp = new_sp
      @new_atk = new_atk
      @new_pdef = new_pdef
      @new_mdef = new_mdef
      refresh
    end
  end
end

#==============================================================================
# ** Window_EquipRight
#------------------------------------------------------------------------------
#  This window displays items the actor is currently equipped with on the
#  equipment screen.
#==============================================================================

class Window_EquipRight < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(272, 64, 368, 256)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Item Acquisition
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @data = []
    @data.push($data_weapons[@actor.weapon_id])
    @data.push($data_armors[@actor.armor1_id])
    @data.push($data_armors[@actor.armor2_id])
    @data.push($data_armors[@actor.armor3_id])
    @data.push($data_armors[@actor.armor4_id])
    @item_max = @data.size
    self.contents.font.color = system_color
    self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
    self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
    self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
    self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
    self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4)
    draw_item_name(@data[0], 92, 32 * 0)
    draw_item_name(@data[1], 92, 32 * 1)
    draw_item_name(@data[2], 92, 32 * 2)
    draw_item_name(@data[3], 92, 32 * 3)
    draw_item_name(@data[4], 92, 32 * 4)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end


#==============================================================================
# ** Window_EquipItem
#------------------------------------------------------------------------------
#  This window displays choices when opting to change equipment on the
#  equipment screen.
#==============================================================================

class Window_EquipItem < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor      : actor
  #    equip_type : equip region (0-3)
  #--------------------------------------------------------------------------
  def initialize(actor, equip_type)
    super(0, 320, 640, 180)
    @actor = actor
    @equip_type = equip_type
    @column_max = 2
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Item Acquisition
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add equippable weapons
    if @equip_type == 0
      weapon_set = $data_classes[@actor.class_id].weapon_set
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
          @data.push($data_weapons[i])
        end
      end
    end
    # Add equippable armor
    if @equip_type != 0
      armor_set = $data_classes[@actor.class_id].armor_set
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0 and armor_set.include?(i)
          if $data_armors[i].kind == @equip_type-1
            @data.push($data_armors[i])
          end
        end
      end
    end
    # Add blank page
    @data.push(nil)
    # Make a bit map and draw all items
    @item_max = @data.size
    self.contents = Bitmap.new(width - 32, row_max * 32)
    for i in 0...@item_max-1
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #    index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    case item
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end



#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
#  This class performs equipment screen processing.
#==============================================================================

class Scene_Equip
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor_index : actor index
  #    equip_index : equipment index
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
    @equip_index = equip_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Get actor
    @actor = $game_party.actors[@actor_index]
    # Make windows
    @help_window = Window_Help.new
    @left_window = Window_EquipLeft.new(@actor)
    @right_window = Window_EquipRight.new(@actor)
    @item_window1 = Window_EquipItem.new(@actor, 0)
    @item_window2 = Window_EquipItem.new(@actor, 1)
    @item_window3 = Window_EquipItem.new(@actor, 2)
    @item_window4 = Window_EquipItem.new(@actor, 3)
    @item_window5 = Window_EquipItem.new(@actor, 4)
    # Associate help window
    @right_window.help_window = @help_window
    @item_window1.help_window = @help_window
    @item_window2.help_window = @help_window
    @item_window3.help_window = @help_window
    @item_window4.help_window = @help_window
    @item_window5.help_window = @help_window
    # Set cursor position
    @right_window.index = @equip_index
    refresh
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @help_window.dispose
    @left_window.dispose
    @right_window.dispose
    @item_window1.dispose
    @item_window2.dispose
    @item_window3.dispose
    @item_window4.dispose
    @item_window5.dispose
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # Set item window to visible
    @item_window1.visible = (@right_window.index == 0)
    @item_window2.visible = (@right_window.index == 1)
    @item_window3.visible = (@right_window.index == 2)
    @item_window4.visible = (@right_window.index == 3)
    @item_window5.visible = (@right_window.index == 4)
    # Get currently equipped item
    item1 = @right_window.item
    # Set current item window to @item_window
    case @right_window.index
    when 0
      @item_window = @item_window1
    when 1
      @item_window = @item_window2
    when 2
      @item_window = @item_window3
    when 3
      @item_window = @item_window4
    when 4
      @item_window = @item_window5
    end
    # If right window is active
    if @right_window.active
      # Erase parameters for after equipment change
      @left_window.set_new_parameters(nil, nil, nil, nil, nil)
    end
    # If item window is active
    if @item_window.active
      # Get currently selected item
      item2 = @item_window.item
      # Change equipment
      last_hp = @actor.hp
      last_sp = @actor.sp
      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
      # Get parameters for after equipment change
      new_atk = @actor.atk
      new_pdef = @actor.pdef
      new_mdef = @actor.mdef
      new_hp = @actor.maxhp
      new_sp = @actor.maxsp
      # Return equipment
      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
      @actor.hp = last_hp
      @actor.sp = last_sp
      # Draw in left window
      @left_window.set_new_parameters(new_hp, new_sp, new_atk, new_pdef, new_mdef)
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @left_window.update
    @right_window.update
    @item_window.update
    refresh
    # If right window is active: call update_right
    if @right_window.active
      update_right
      return
    end
    # If item window is active: call update_item
    if @item_window.active
      update_item
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when right window is active)
  #--------------------------------------------------------------------------
  def update_right
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Menu.new(2)
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If equipment is fixed
      if @actor.equip_fix?(@right_window.index)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Activate item window
      @right_window.active = false
      @item_window.active = true
      @item_window.index = 0
      return
    end
    # If R button was pressed
    if Input.trigger?(Input::R)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To next actor
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # Switch to different equipment screen
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
    # If L button was pressed
    if Input.trigger?(Input::L)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To previous actor
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # Switch to different equipment screen
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_item
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Activate right window
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Play equip SE
      $game_system.se_play($data_system.equip_se)
      # Get currently selected data on the item window
      item = @item_window.item
      # Change equipment
      @actor.equip(@right_window.index, item == nil ? 0 : item.id)
      # Activate right window
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      # Remake right window and item window contents
      @right_window.refresh
      @item_window.refresh
      return
    end
  end
end


I just had to tweak the Y-coordinates of where you were drawing the updated HP/SP results and fix a typo you had with getting the actor's parameters on equip change:
    if @new_hp != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 64, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 64, 36, 32, @new_hp.to_s, 2)
    end
    if @new_sp != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 64, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 64, 36, 32, @new_sp.to_s, 2)
    end
-----------------------------------------------------------------
    if @new_hp != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 160, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 160, 36, 32, @new_hp.to_s, 2)
    end
    if @new_sp != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 192, 40, 32, "->", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 192, 36, 32, @new_sp.to_s, 2)
    end
      new_hp = @actor.hp
      new_sp = @actor.hp
----------------------------
      new_hp = @actor.maxhp
      new_sp = @actor.maxsp
2
Script Requests / Re: [RMXP] DEX to HP
November 19, 2021, 11:55:13 pm
You should look for a modified Scene_Equip then. The default scene doesn't really have much space left to work with, and simply extending the left window's height would look...bad.
3
Script Requests / Re: [RMXP] DEX to HP
November 18, 2021, 10:11:44 pm
Alright, how about I just remove the script's dependency on needing all of Tons of add-ons?
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Weapon/Armor HP/SP Plus by Blizzard
# Version: 2.1b
# Type: Weapon/Armor Attribute Alteration
# Date: 18.8.2006
# Date v1.01b: 12.3.2007
# Date v2.0: 15.5.2007
# Date v2.0b: 30.7.2007
# Date v2.1b: 11.6.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
#   95% compatible with SDK v1.x. 50% compatible with SDK v2.x. May cause
#   slight incompatibility issues with CBS-es, but can be made compatible
#   easily. Can cause imcompatibility issues with other weapon/armor changing
#   scripts and custom equipments scripts.
#
#
# Features:
#
#   - uses static (i.e. 500 HP more) or dynamic (i.e. 30% HP more) increasements
#   - easy to set up
#   - does NOT change any rxdata files
#   - this script comes UNDER SDK SCRIPTS if you use any
#
# new in v2.0:
#   - completely overworked and changed code for better compatibility
#
# new in v2.0b:
#   - fixed a bug that appeared because of a typing mistake
#
# new in v2.1b:
#   - improve coding
#
#
# Instructions:
#
# - Explanation:
#
#   This script will add the option for Weapons/Armors to have HP/SP pluses
#   while equipped just like the usual STR, DEX, INT etc. pluses.
#
# - Configuration
#
#   Find the phrase saying "START" (CTRL+F) to find the database parts. Use the
#   following template to configure your database:
#
#     when ID then return [EXPR, VAL]
#
#   ID   - Weapon/Armor ID in the normal database
#   EXPR - set to false if you want "static" increasement or true if you want
#          "dynamic" increasement
#   VAL  - if you use static increasement, set this value to any integer you
#          want (i.e. 100, -500, 831 etc.) to increase the HP/SP, otherwise set
#          it to any decimal value of the final HP/SP (i.e. 1.2 = 20% more,
#          2.3 = 130% more, 0.7 = 30% less)
#
#   VAL can be a signed integer (static increasement) OR a decimal number
#   greater than 0 (dynamic increasement). Change MAX_HP and MAX_SP to
#   different values if you use another max HP and/or max SP limit than 9999.
#
#
# Side Note:
#
#   It took more to write the instructions than to write and test script
#   itself.
#
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

MAX_HP = 9999 # change if needed, 9999 is standard
MAX_SP = 9999 # change if needed, 9999 is standard

#==============================================================================
# module BlizzCFG
#==============================================================================

module BlizzCFG
 
  def self.weapon_hp_plus(id)
    case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Weapon HP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    when 1 then return [false, 350]
    when 5 then return [true, 1.2]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Weapon HP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    else
      return [false, 0]
    end
  end
 
  def self.weapon_sp_plus(id)
    case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Weapon SP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    when 25 then return [false, 500]
    when 29 then return [true, 1.5]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Weapon SP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    else
      return [false, 0]
    end
  end
 
  def self.armor_hp_plus(id)
    case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Armor HP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    when 1 then return [true, 1.1]
    when 5 then return [true, 0.5]
    when 13 then return [false, 90]
    when 17 then return [false, -450]
    when 9 then return [true, 1.3]
    when 21 then return [true, 1.3]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Armor HP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    else
      return [false, 0]
    end
  end
 
  def self.armor_sp_plus(id)
    case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Armor SP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    when 9 then return [true, 1.3]
    when 21 then return [true, 1.3]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Armor SP plus Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    else
      return [false, 0]
    end
  end
 
end

#==============================================================================
# Game_Battler
#==============================================================================

class Game_Battler
 
  alias maxsp_hpsp_add_on_later maxsp
  def maxsp
    val = [MAX_SP, maxsp_hpsp_add_on_later].min
    @sp = val if @sp > val
    return val
  end
 
end

#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor
 
  alias maxhp_hpsp_add_on_later maxhp
  def maxhp
    val = [MAX_HP, maxhp_hpsp_add_on_later].min
    @hp = val if @hp > val
    return val
  end
 
  alias base_maxhp_hpsp_add_on_later base_maxhp
  def base_maxhp
    plus, multi = 0, 1.0
    if @weapon_id != 0
      result = BlizzCFG.weapon_hp_plus(@weapon_id)
      result[0] ? (multi *= result[1]) : (plus += result[1])
    end
    [@armor1_id, @armor2_id, @armor3_id, @armor4_id].each {|id|
        if id != 0
          result = BlizzCFG.armor_hp_plus(id)
          result[0] ? (multi *= result[1]) : (plus += result[1])
        end}
    return (multi * (plus + base_maxhp_hpsp_add_on_later)).to_i
  end
 
  alias base_maxsp_hpsp_add_on_later base_maxsp
  def base_maxsp
    plus, multi = 0, 1.0
    if @weapon_id != 0
      result = BlizzCFG.weapon_sp_plus(@weapon_id)
      result[0] ? (multi *= result[1]) : (plus += result[1])
    end
    [@armor1_id, @armor2_id, @armor3_id, @armor4_id].each {|id|
        if id != 0
          result = BlizzCFG.armor_sp_plus(id)
          result[0] ? (multi *= result[1]) : (plus += result[1])
        end}
    return (multi * (plus + base_maxsp_hpsp_add_on_later)).to_i
  end
 
end
4
Script Requests / Re: [RMXP] DEX to HP
November 18, 2021, 12:15:29 pm
I told you already that Tons of add-ons has this. It's called Weapon/Armor HP/SP Plus by Blizzard
5
Script Requests / Re: [RMXP] DEX to HP
November 17, 2021, 09:19:17 pm
Is there any reason why you don't just use a script that allows equips to raise other stats that the database does not allow? Tons of Add-ons has this.
6
You best quit now because it only gets harder from there. This script is super old and no longer maintained, and the authors haven't been seen in years, so it's doubtful it even works, especially since Essentials has had many updates. In fact, it seems odd that they wouldn't have their own solution for this already.

Frankly, I think this topic should be locked.
7
IDK where you're looking at to determine what the script's version is... but regardless, this is the only existence of the script on this website.
8
RMXP Script Database / Re: [XP] Dynamic Gardening
October 15, 2021, 12:46:32 am
I think it's because you're standing in front of the garden event and the Input C from the Garden Scene when you select "No" gets carried over to Scene_Map and triggers the event. So the only thing I can think of is to reset the Input by adding an update call here in Drago's fix:
  def init_parallel_process_fix
    Input.update #<=================
    @spriteset = Nothing.new

You can even reproduce this with just Drago's script alone. Just make a map with an event that gets triggered by the action button (make it show text). Place the player's starting position directly above the event. Upon hitting "New Game" on the title screen, the event will start playing.

I will update the script on that thread. Thanks for reporting
9
When that zero is a float, yes.
10
Doesn't have to specifically be the steam version, could just be v1.05 in general that does that.
11
General Discussion / Re: CSS Question
August 20, 2021, 01:28:02 am
The absolute closest you can get with just CSS and a textarea alone is to add
white-space: break-spaces;
word-break: break-all;
You will still have one remaining bit of jankiness: when you get close to the right edge and try to add a space after a letter (knowing it will go to the next line), that letter will also move down along with the whitespace character.
12
It looks like in Ruby 1.9.2, they added domain_errors to the method:
static VALUE
math_atan2(VALUE obj, VALUE y, VALUE x)
{
    double dx, dy;
    Need_Float2(y, x);
    dx = RFLOAT_VALUE(x);
    dy = RFLOAT_VALUE(y);
    if (dx == 0.0 && dy == 0.0) domain_error("atan2");
    if (isinf(dx) && isinf(dy)) domain_error("atan2");
    return DBL2NUM(atan2(dy, dx));
}
https://apidock.com/ruby/v1_9_2_180/Math/atan2/class

From what we can infer from this, @deltax and @deltay are either both (positive or negative) 0.0 or Infinity. I believe it's most likely the former. It's kinda weird why they did this too because in later versions of Ruby they removed it.

What we can do is alias the method so that we can bring it back to how it should behave for this particular case:
module Math
  class << self
    alias fix_atan2_domain_error atan2
    def atan2(y, x)
      if y == 0.0 && x == 0.0
        if 1/x > 0 # x is 0.0
          return y
        else      # x is -0.0
          return 1/y > 0 ? Math::PI : -Math::PI
        end
      end
      fix_atan2_domain_error(y, x)
    end
  end
end
13
RMXP Script Database / Re: [XP] Tons of Add-ons
August 13, 2021, 11:44:15 am
The variable responsible for storing the map names was never initialized. That's handled when Scene_Title is called, but since you're skipping that, it never calls it.

You need to add this somewhere before your game starts, like in Main
$map_names = load_data('Data/MapInfos.rxdata')
$map_names.each_key {|key| $map_names[key] = $map_names[key].name}
14
RMXP Script Database / Re: [XP] Tons of Add-ons
August 12, 2021, 05:49:18 pm
Either use a different method/script for making a map a title screen, or post what the error is.
15
RMXP Script Database / Re: [XP] Tons of Add-ons
July 25, 2021, 12:22:02 pm
Quote from: KK20 on June 01, 2021, 01:51:22 amAs for the map being moved to the middle of the screen, I don't know if not updating the events in real-time is a bug or intended. When you hold down the Z button and move with the arrow keys on larger maps, it is supposed to scroll the minimap.
16
When you mean by standalone, do you mean you're running on XP/RGSS1 engine? or XPA with most of the extra scripts I added removed?

It seems like a simple Z layer issue to me.
17
Welcome! / Re: Hi!
July 09, 2021, 03:46:57 am
Happy Birthday :P

I assume you're chikcne on the mkxp discord server?
18
Yeah, one of the devs came into the CP discord asking for some script help. Turns out it was an issue with their mkxp, not RGSS, and down the rabbit hole I went to see that the logic they wrote was completely wrong, pointed it out and how to do it, they refused to listen, told me I was wrong, and whined how they're "not good at C++". Come a week later and I see a commit where they did exactly what I told them to do and I never got a thanks or sorry in return. Like, it was literally faulty logic order...had nothing to do with language knowledge. And to think this person claimed to be a programmer/software engineer baffles me.

They left the server, then came back again asking for help, and specifically said they wanted help from someone other than me because I apparently was "too hard on them" or some shitty reason. Jokes on them though, I'm like the only active person on CP who even provides script help these days. Anyways, ended up one of my friends answering their question (although very generically), and they left without saying a word, so he also agreed with me that they were a prick. Needless to say, they are banned.
19
I'd suggest using a script instead then. IDK what you mean by their custom game EXE allows you to wrap the map when you can do that already with vanilla XP. Unless you mean it's like...easier to enable it, such as a toggle, which the other RM engine editors do.

Also, I'm extremely bitter towards the people who work on that fork of mkxp. They get 0 respect from me.
Oh wait, that's the original oneshot fork. I thought you meant the other oneshot fork that's still getting updated.
20
You sure it's only happening in XPA? There's no such thing as Game_Map#id to begin with. It might be a typo and is supposed to be map_id.

EDIT: Yeah, I'm pretty sure it's a typo. The reason you don't see the error in vanilla XP is because, in Ruby 1.8, #id is synonymous with #object_id and #__id__, which is like the memory address ID.

From what I can see, there are four instances of this
$game_map.id
, so CTRL + H and replace them all with
$game_map.map_id