Two rows for nasty extra stats

Powell

Veteran
Veteran
Joined
Mar 19, 2018
Messages
61
Reaction score
2
First Language
English
Primarily Uses
N/A
Is this possible?
I can't use crystal extra stats viewing inventory with an item equipped causes issues.
Ace Equip engine
Kread-EX Actor Inventory and Item Charges
 

DerVVulfman

Resident Werewolf
Veteran
Joined
Jun 26, 2012
Messages
315
Reaction score
155
First Language
English
Primarily Uses
RMXP
While I am not a VXAce scripter, let me suggest that you provide additional content. The best would be to provide links to the current scripts in which you need assistance. This way, an experienced VXAce scripter may be able to give you aid. Not everyone would be familiar with these works.

Say HI to my friend Kread-Ex. ;)
 

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
2,674
Reaction score
566
First Language
English
Primarily Uses
RMVXA
Try this
Code:
#===============================================================================
#    N.A.S.T.Y. Extra Stats
#    Nelderson's Awesome Scripts To You
# By: Nelderson
# Made On: 12/19/2011
# Last Updated : 3/27/2012
#===============================================================================
# Update History:
# - Version 1.1 - Cleaned up some sheep, and added enemies xstats for Enemies!
# - Version 1.0 - Initial release, made for the sheep of it  :p
#===============================================================================
# *Notes:
# - This script can be used to make all sorts of stats that can derive from
# an actor's level, and base stats.
#
# - This thing can be a pain to set up, but once it's done, it can be a very
# powerful way to include new stats into your game!
#
# - Made a quick edit to the status screen to show up to 6 stats!
#
# *Usage
#
# -First is the STATS section. This is an array that holds all the new
# stats that everything else gets info from.
#
# - Next fill out the Default Level formula(Use Example Below as a guide)
# *ANYTHING that an actor has, you can base it off of (Except other XSTATS!)
#    (level, hp, mp, atk, spi, agi, maxhp, etc.)
#
# -You can use the ACTOR and ENEMY NOTETAGS to customize
# the formulas for each actor.
#
# Examples:
# Place the following in an actor's notebox(You must make one for each stat):
#    <xstat>
#    :str => '(level/3.5) + 16',
#    :con => '(level/5.6) + 12',
#    :dex => '(level/5.25) + 15 + agi',
#    :int => '(level/10.5) + 10',
#    :wis => '(level/10.5) + 10',
#    :cha => '(level/10.5) + 10',
#    <xstat_end>
#
# Or you can place this in an actor's/enemy's notebox
#    <xstat>
#    :str => 15,
#    :con => 14,
#    :dex => 13,
#    :int => 12,
#    :wis => 11,
#    :cha => 0,
#    <xstat_end>
#
# - This script also uses notetags for weapons and armors to increase xstats
# if you want. Just place in a notebox:
#
#    <weapon_xstat: STAT x> , where STAT is th name of the new stat
#
#    Ex. <weapon_xstat: str 5> , would raise the actor's str +5
#
# *For Scripters
#
# -If you want to access the stats, just use:
#    actor.xstat.STAT - Where STAT is the name of the new stat
#  
#    Ex. $game_actors[1].xstat.str , will return actor 1's str
#
#===============================================================================
# Credits:
# -Nelderson and Zetu
# Original Script was made by Zetu, and I spiced the sheep out of it!
#
# Multiple rows addon by Roninator2 with guidance from Night_Runner
#
# Added increasing stats
# Script Calls:
# change_xstat(actor_id, stat, value) # Alter the specified stat by the specifed 
# value. Can be either positive or negative.
#    e.g. change_xstat(1, :str, 10)

#===============================================================================

module Z26

  STATS = [:str,:con,:dex,:int,:wis,:cha,:spd,:div,:hth]

  #Default xstat formulas for ACTORS
  DEFAULT_LEVEL_FORMULA =
  {
  :str => '(level/3.5) + 16 + atk',
  :con => '(level/5.6) + 12',
  :dex => '(level/5.25) + 15 + agi',
  :int => '(level/10.5) + 10',
  :wis => '(level/10.5) + 10',
  :cha => '(level/10.5) + 10',
  :spd => '(level/10.5) + 10',
  :div => '(level/10.5) + 10',
  :hth => '(level/10.5) + 10',
  }

  #Default xstat formulas for ENEMIES  
  DEFAULT_FOR_ENEMIES =
  {
  :str => 0,
  :con => 0,
  :dex => 0,
  :int => 0,
  :wis => 0,
  :cha => 0,
  }

  def self.actor_level_formulas(actor_id)
    jhh = ""
    strin = $data_actors[actor_id].get_start_end_cache
    strin.each do |i|
    jhh += i
    end
    return DEFAULT_LEVEL_FORMULA if strin == "" or strin == []
    return eval("{#{jhh}}")
  end

  def self.enemy_stats(enemy_id)
    jhh = ""
    strin = $data_enemies[enemy_id].get_start_end_cache
    strin.each do |i|
    jhh += i
    end
    return DEFAULT_FOR_ENEMIES if strin == "" or strin == []
    return eval("{#{jhh}}")
  end

#=============================================================================
  SYMBOLS = []
  for stat in STATS
    SYMBOLS.push(stat)
  end
  Xstats = Struct.new(*SYMBOLS)
end

##############################################################

class Game_Enemy < Game_Battler
  attr_accessor :xstat

  alias z26_enemy_set initialize unless $@
  def initialize(*args)
    z26_enemy_set(*args)
    @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
    for stat in Z26::STATS
    z26variate_stats(stat)
    end
  end

  def z26variate_stats(stat)
    return if Z26.enemy_stats(@enemy_id)[stat].nil?
    if Z26.enemy_stats(@enemy_id)[stat].is_a?(String)
      set_in = eval(Z26.enemy_stats(@enemy_id)[stat]).to_i
      eval("@xstat.#{stat} += #{set_in}")
    else
      set_in = Z26.enemy_stats(@enemy_id)[stat]
      @xstat[stat] += set_in
    end
    end
  end

##############################################################

class Game_Actor < Game_Battler
  attr_accessor :xstat

  alias z26_s setup unless $@
  def setup(actor_id)
    z26_s(actor_id)
    @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
    for item in equips.compact
      z26variate_equip(item)
    end
    for stat in Z26::STATS
      z26variate_stats(stat, @level)
    end
  end

  alias z26_change_equip change_equip
  def change_equip(equip_type, item, test = false)
    last_item = equips[equip_type]
    z26_change_equip(equip_type, item)
    z26variate_equip(item)
    z26variate_equip(last_item, false)
  end

#=====================#
##EDITED BY NELDERSON##
#=====================#
  def z26variate_equip(item, adding = true)
    return if item.nil?
    for line in item.note.split(/[\r\n]+/).each{ |a|
    case a
    when /<weapon_xstat:[ ](.*)[ ](\d+)>/i
    if Z26::STATS.include?(eval(":" + $1))
      if adding
        eval("@xstat.#{$1} += #{$2}")
      else
        eval("@xstat.#{$1} -= #{$2}")
      end
    end
    end
    }
    end
  end

  def z26variate_stats(stat, level, adding = true)
    return if Z26.actor_level_formulas(@actor_id)[stat].nil?
    if Z26.actor_level_formulas(@actor_id)[stat].is_a?(String)
      amount = eval(Z26.actor_level_formulas(@actor_id)[stat]).to_i
    else
      amount = Z26.actor_level_formulas(@actor_id)[stat]
    end
    if adding
      eval("@xstat.#{stat} += #{amount}")
    else
      eval("@xstat.#{stat} -= #{amount}")
    end
  end

  alias z26level_up level_up unless $@
  def level_up
    for stat in Z26::STATS
      z26variate_stats(stat, @level, false)
    end
    z26level_up
    for stat in Z26::STATS
      z26variate_stats(stat, @level)
    end
  end
end

##############################################################

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Modify an Extra Stat
  #--------------------------------------------------------------------------
  def change_xstat(id, stat, value)
    $game_actors[id].xstat[stat] += value
  end
end

##############################################################

class Window_Status < Window_Selectable
 
  def draw_block3(y)
    draw_parameters(0, y)
    draw_equipments(self.contents.width-172, y)
    draw_xstat_parameters(stat_widths / 0.9, y)
  end

  def draw_xstat_parameters(x, y)
    dy = 0
    @actor.xstat.size.times {|i|
    draw_actor_xstat_param(@actor, x, y + line_height * i, i) #}
    dy += line_height
    if  dy > 120
       dy = 0
       y -= line_height * (i + 1)
      x += stat_widths / 0.9
    end
    }
  end
  #--------------------------------------------------------------------------
  # * Draw Parameters
  #--------------------------------------------------------------------------
  def draw_actor_param(actor, x, y, param_id)
    change_color(system_color)
    draw_text(x, y, stat_widths, line_height, Vocab::param(param_id))
    change_color(normal_color)
    draw_text(x + stat_widths-36, y, 36, line_height, actor.param(param_id), 2)
  end
 
end

##############################################################

class Window_Base < Window
 
  def draw_actor_xstat_param(actor, x, y, param_id)
    id = Z26::STATS[param_id]
    change_color(system_color)
    draw_text(x, y, 120, line_height, id.capitalize)
    change_color(normal_color)
#~     draw_text(x + 120, y, 36, line_height, actor.xstat[id], 2)
    draw_text(x + stat_widths-36, y, 36, line_height, eval("actor.xstat.#{id}"), 2)  
  end
 
  def stat_widths
    wind_wid = self.contents.width
    xstat_cols = (Z26::STATS.length + 5) / 6
    return (((wind_wid - 172) / (xstat_cols + 1))*0.9).to_i
  end

end

##############################################################

class RPG::BaseItem
  def get_start_end_cache
    record = false
    temp = []
    self.note.split(/[\r\n]+/).each do |line|
    if line =~ /<xstat>/i
      record = true
    elsif line =~ /<xstat_end>/i
      record = false
    end
    if record
      temp << line
    end
    end
    return nil if temp == ""
    temp.delete_at(0)
    temp
  end
end
 
Last edited:

Powell

Veteran
Veteran
Joined
Mar 19, 2018
Messages
61
Reaction score
2
First Language
English
Primarily Uses
N/A
Crystal Engine – Extra Stats Script line 314: NoMethodError occurred, so I have
Yanfly Engine Ace – Ace Equip Engine v1.06 with Kread-EX’s Actor Inventory Version 1.11 and Item charges Version 1.05 installed in that order. everything works fine until I equip an item then click on status then I get the script error.I did test this with the N.A.S.T.Y. Extra Stats Version 1.1 by Nelderson and it was able to display the stats with out giving me the error.

https://grimoirecastle.wordpress.com/rgss3-scripts/gameplay-scripts/actor-inventory/
https://grimoirecastle.wordpress.com/rgss3-scripts/gameplay-scripts/item-charges/
https://github.com/Archeia/Kread-Ex-Scripts/tree/master/RGSS3 Scripts

also is there a way to add extra stats with a script call with Nelderson's version? IE having a skill/spell add a stat gain when it is used...
 
Last edited:

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
2,674
Reaction score
566
First Language
English
Primarily Uses
RMVXA
Made changes to my script post above.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Day 9 of giveaways! 8 prizes today :D
He mad, but he cute :kaopride:

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.

Forum statistics

Threads
106,038
Messages
1,018,467
Members
137,821
Latest member
Capterson
Top