RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Dual MP

0 Members and 1 Guest are viewing this topic.

**
Rep:
Level 76
Interested RMKR
I'd like a script which creates a second "MP" (for my intents and purposes, I shall call it SP). It acts just like MP and skills can cost SP, MP, or both. Otherwise, it's MP under a different name. If I could get a script to do that for me... I'd really appreciate it, thanks.

**
Rep:
Level 75
RMRK Junior
i know there is a "jp" system you could probably rename, i never used it myself however i believe it works as a second cost for skills much like you describe.

http://rmrk.net/index.php/topic,42396.0.html
i can't for the life of me remember if it's even on there, the computer i'm on currently hasn't got any of my files on it, i'll check for you later unless someone else replies. (there are demos on there displaying scripts, look at a few... i think it may be on http://www.rpgmakervx.net/index.php?showtopic=19726 )

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
The JP system is in the YEM demo which is on that page. But I don't think that's what you're after.
So basically, you want another MP system that is displayed in actor's statuses, skill costs and can be recovered through potions? That would actually be quite easy if you aren't using any other scripts.
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
@Wakka: Yes, that's exactly what I'm looking for! :D

Err... I am using these scripts though:
YERD_Victory Aftermath
YERD_Extended Equip
KGC_EquipExtension
SSS Passive Skills
YERD_CustomBattleAction
YERD_Subclass
YERD_Custom_Skill_Effects

:P

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
I think I have all of those scripts somewhere. I'll look into it.
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
I added another script which I think is quite relevant:

YERD Party Display:
Spoiler for:
Code: [Select]
#===============================================================================
#
# Yanfly Engine RD - Display Party Data 2.0
# Last Date Updated: 2009.05.30
# Level: Easy
#
# This pretty much changes the party information window in battles to show the
# party member names horizontally than vertically. When structured as such,
# you'll be able to see the party members' faces and/or sprites. With the new
# arrangement, the player can also see up to four status effects on each actor
# as opposed to the original two. A big difference.
#
# Version 2.0 gives options to change font size, show extra gauges (for rage and
# morale) and no longer hides the actor sprite behind the states.
#
#===============================================================================
# Instructions
#===============================================================================
#
# Just put this script under Materials and that's it. If you'd like to change
# other settings such as showing the face graphic or changing its opacity, just
# scroll down a bit and make adjustments as necessary.
#
#===============================================================================
# Updates:
# ----------------------------------------------------------------------------
# o 2009.05.30 - Fixed max states shown bug.
#              - Greatly improved drawing efficiency.
# o 2009.05.16 - Started and finished version 2.0.
# o 2009.02.23 - Started script and finished.
#===============================================================================
#
# Compatibility
# - Alias: Window_BattleStatus, initialize
# - Overwrites: Window_BattleStatus, draw_item
#
#===============================================================================

$imported = {} if $imported == nil
$imported["DisplayPartyData"] = true

module YE
  module BATTLE
    module DISPLAY
     
      # This changes what will and will not be shown. If you choose to shown
      # the actor's face graphic, you can choose its opacity. 255 means it's
      # fully visible while 0 means it's completely transparent. For the
      # number of states shown, do not exceed 4 unless you want the states to
      # overlap into the next actor's data window.
      SHOW_ALLY_FACE    = true
      ALLY_FACE_OPACITY = 100
      SHOW_ALLY_SPRITE  = false
      MAX_STATES_SHOWN  = 4
     
      # This governs the sizes used for each of the items in the display.
      NAME_FONT_SIZE  = 16
      STAT_FONT_SIZE  = 16
     
      # This governs how HP and MP are shown. Here is a type listing for each
      # individual one.
      # Type 1 = Current           Type 4 = Current & Percentage
      # Type 2 = Current/Maximum   Type 5 = Current/Max & Percent
      # Type 3 = Percentage
      SHOWN_HP_TYPE = 2
      SHOWN_MP_TYPE = 2
     
      # For those using Custom Skill Effects and would like to show Rage for
      # your bar, input the ID's of the classes you would Rage to appear for.
      # The reason this is dependent on class rather than character is because
      # if the character switches classes to one that no longer uses rage, the
      # rage meter will be useless there.
      RAGE_CLASSES = [1, 2]
     
      # This governs the type of display used for Rage. Here's a list of the
      # various types of way you can choose to display Rage. If you don't want
      # rage to be displayed at all, set it to 0.
      # Type 1 - Rage icon and number value appears in lower left corner. MP
      #          bar is moved over to give room for Rage bar.
      # Type 2 - Rage icon and number value appears in lower right corner. MP
      #          bar is on the left side instead.
      RAGE_DISPLAY = 1
     
      # This governs the text shown for rage and the gauge colours used.
      RAGE_TEXT   = "RG"
      RAGE_GAUGE1 = 2
      RAGE_GAUGE2 = 10
     
      # For those who are using Battler Stat Morale, this script can place a
      # morale gauge under your MP bar (after pushing it upward).
      GAUGE_MORALE   = false
      MORALE_TEXT    = "Morale"
      MORALE_GAUGE1  = 28        # This is for positive morale.
      MORALE_GAUGE2  = 29        # This is for positive morale.
      MORALE_GAUGE3  = 30        # This is for positive morale.
      MORALE_GAUGE4  = 31        # This is for positive morale.
     
      # For those who don't want an extra gauge but would still like to show
      # morale, there's an icon you can display for it instead. Morale icon
      # will not appear if morale is equal to zero.
      ICON_MORALE = true
      ICON_MORALE_HIGH = 242     # Appears when morale is positive.
      ICON_MORALE_LOW  = 241     # Appears when morale is negative.
      MORALE_DIVISOR   = 100     # How much morale shown is divided by.
      MORALE_FONT_SIZE = 16      # This is the font size used for morale icon.
      MORALE_COL_HIGH  = 0       # This is the text colour used for high morale.
      MORALE_COL_LOW   = 8       # This is the text colour used for low morale.
     
    end # end module DISPLAY
  end # end module BATTLE
end # end module YE

#===============================================================================
# Don't touch anything past here or else your computer will explode and you will
# be a very sad person.
#===============================================================================

#==============================================================================
# Window_BattleStatus
#==============================================================================

class Window_BattleStatus < Window_Selectable

  #--------------------------------------------------------------------------
  # Alias Object Initialization
  #--------------------------------------------------------------------------
  alias displaypartydata_initialize initialize unless $@
  def initialize
    displaypartydata_initialize
    @column_max = $game_party.members.size
    @spacing = 0
  end
 
  #--------------------------------------------------------------------------
  # Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = 96
    rect.height = 96
    rect.x = index * 96
    rect.y = 0
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    @actor = $game_party.members[index]
    draw_party_face(index)
    draw_party_state(index)
    draw_party_name(index)
    draw_party_graphic(index)
    draw_party_hp(index)
    draw_party_mp(index)
    draw_party_morale(index)
  end
 
  #--------------------------------------------------------------------------
  # Update Cursor
  #--------------------------------------------------------------------------
  def update_cursor
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(@index * 96, 0, 96, 96)
    end
  end
 
  #--------------------------------------------------------------------------
  # Draw Party Face
  #--------------------------------------------------------------------------
  def draw_party_face(index)
    return unless YE::BATTLE::DISPLAY::SHOW_ALLY_FACE
    opacity = YE::BATTLE::DISPLAY::ALLY_FACE_OPACITY
    @actor = $game_party.members[index]
    face_name = @actor.face_name
    face_index = @actor.face_index
    bitmap = Cache.face(face_name)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = face_index % 4 * 96 + 4 / 2
    rect.y = face_index / 4 * 96 + 4 / 2
    rect.width = 92
    rect.height = 92
    self.contents.blt(index * 96 + 2, 2, bitmap, rect, opacity)
    bitmap.dispose
  end
 
  #--------------------------------------------------------------------------
  # Draw Party State
  #--------------------------------------------------------------------------
  def draw_party_state(index)
    return unless YE::BATTLE::DISPLAY::MAX_STATES_SHOWN > 0
    dx = index * 96
    dy = WLH * 1
    dw = YE::BATTLE::DISPLAY::MAX_STATES_SHOWN * 24
    draw_actor_state(@actor, dx, dy, dw)
  end
 
  #--------------------------------------------------------------------------
  # Draw Party Graphic
  #--------------------------------------------------------------------------
  def draw_party_graphic(index)
    return unless YE::BATTLE::DISPLAY::SHOW_ALLY_SPRITE
    @actor = $game_party.members[index]
    dx = index * 96 + 48
    dy = WLH * 3 - YE::BATTLE::DISPLAY::STAT_FONT_SIZE + 16 + 2
    if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
      dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    end
    draw_character(@actor.character_name, @actor.character_index, dx, dy)
  end
 
  #--------------------------------------------------------------------------
  # Draw Party Name
  #--------------------------------------------------------------------------
  def draw_party_name(index)
    self.contents.font.color = hp_color(@actor)
    self.contents.font.size = YE::BATTLE::DISPLAY::NAME_FONT_SIZE
    dx = 96 * index + 4
    dy = 0
    dw = 94
    if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::ICON_MORALE
      dw -= 24
    end
    self.contents.draw_text(dx, dy, dw, WLH, @actor.name)
  end
 
  #--------------------------------------------------------------------------
  # Draw Party HP
  #--------------------------------------------------------------------------
  def draw_party_hp(index)
    dx = index * 96 + 2
    dy = WLH * 3 - YE::BATTLE::DISPLAY::STAT_FONT_SIZE + 2
    if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
      dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    end
    dw = 92
    draw_actor_hp_gauge(@actor, dx, dy, dw)
    self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    self.contents.font.color = system_color
    self.contents.draw_text(dx + 2, dy + 4, 28, WLH, Vocab::hp_a, 0)
    self.contents.font.color = hp_color(@actor)
    text = sprintf("%d/%d", @actor.hp, @actor.maxhp)
    percent = @actor.hp * 100.0 / @actor.maxhp
    case YE::BATTLE::DISPLAY::SHOWN_HP_TYPE
    when 1; text = @actor.hp
    when 2; text = sprintf("%d/%d", @actor.hp, @actor.maxhp)
    when 3; text = sprintf("%d%%", percent)
    when 4; text = sprintf("%d %d%%", @actor.hp, percent)
    when 5; text = sprintf("%d/%d %d%%", @actor.hp, @actor.maxhp, percent)
    end
    self.contents.draw_text(dx + 30, dy + 4, dw - 32, WLH, text, 2)
  end
 
  #--------------------------------------------------------------------------
  # Draw Party HP
  #--------------------------------------------------------------------------
  def draw_party_mp(index)
    dx = index * 96 + 2
    dy = WLH * 3
    if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
      dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    end
    dw = 92
    #---
    move_mp_bar = false
    if $imported["CustomSkillEffects"]
      if YE::BATTLE::DISPLAY::RAGE_CLASSES.include?(@actor.class.id)
        move_mp_bar = true
      end
      if $imported["SubclassSelectionSystem"] and @actor.subclass != nil
        if YE::BATTLE::DISPLAY::RAGE_CLASSES.include?(@actor.subclass.id)
          move_mp_bar = true
        end
      end
    end
    if move_mp_bar and YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
      dw /= 2
      dx += dw
      draw_party_rage(index)
    elsif move_mp_bar and YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
      dw /= 2
      draw_party_rage(index)
    end
    #---
    draw_actor_mp_gauge(@actor, dx, dy, dw)
    self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    self.contents.font.color = system_color
    self.contents.draw_text(dx + 2, dy + 4, 28, WLH, Vocab::mp_a, 0)
    self.contents.font.color = mp_color(@actor)
    text = sprintf("%d/%d", @actor.mp, @actor.maxmp)
    unless @actor.maxmp == 0
      percent = @actor.mp * 100.0 / @actor.maxmp
    else
      percent = 0
    end
    case YE::BATTLE::DISPLAY::SHOWN_MP_TYPE
    when 1; text = @actor.mp
    when 2; text = sprintf("%d/%d", @actor.mp, @actor.maxmp)
    when 3; text = sprintf("%d%%", percent)
    when 4; text = sprintf("%d %d%%", @actor.mp, percent)
    when 5; text = sprintf("%d/%d %d%%", @actor.mp, @actor.maxmp, percent)
    end
    self.contents.draw_text(dx + 30, dy + 4, dw - 32, WLH, text, 2)
  end
 
  #--------------------------------------------------------------------------
  # Draw Party Rage
  #--------------------------------------------------------------------------
  def draw_party_rage(index)
    return unless $imported["CustomSkillEffects"]
    dx = 0
    dy = WLH * 3
    if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
      dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    end
    dw = 92 / 2
    if YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
      dx = index * 96 + 2
    elsif YE::BATTLE::DISPLAY::RAGE_DISPLAY == 2
      dx = index * 96 + 2 + dw
    end
    draw_rage_gauge(@actor, dx, dy, dw)
    self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    self.contents.font.color = system_color
    text = YE::BATTLE::DISPLAY::RAGE_TEXT
    self.contents.draw_text(dx + 2, dy + 4, 28, WLH, text, 0)
    self.contents.font.color = mp_color(@actor)
    text = @actor.rage
    self.contents.draw_text(dx + 30, dy + 4, dw - 32, WLH, text, 2)
  end
 
  #--------------------------------------------------------------------------
  # Draw Rage Gauge
  #--------------------------------------------------------------------------
  def draw_rage_gauge(actor, x, y, width = 120)
    return unless $imported["CustomSkillEffects"]
    gc0 = gauge_back_color
    gc1 = text_color(YE::BATTLE::DISPLAY::RAGE_GAUGE1)
    gc2 = text_color(YE::BATTLE::DISPLAY::RAGE_GAUGE2)
    gh = 6
    gy = y + WLH - 8 - (gh - 6)
    gb = width
    self.contents.fill_rect(x, gy, gb, gh, gc0)
    if actor.rage <= 0
      gw = 0
    else
      gw = gb * actor.rage / YE::BATTLE::MAX_RAGE
    end
    self.contents.gradient_fill_rect(x, gy, gw, gh, gc1, gc2)
  end
 
  #--------------------------------------------------------------------------
  # Draw Party Morale
  #--------------------------------------------------------------------------
  def draw_party_morale(index)
    return unless $imported["BattlerStatMorale"]
    draw_morale_icon(index)
    return unless YE::BATTLE::DISPLAY::GAUGE_MORALE
    dx = index * 96 + 2
    dy = WLH * 3
    dw = 92
    draw_morale_gauge(@actor, dx, dy, dw)
    self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
    self.contents.font.color = system_color
    text = YE::BATTLE::DISPLAY::MORALE_TEXT
    self.contents.draw_text(dx + 2, dy + 4, 44, WLH, text, 0)
    self.contents.font.color = normal_color
    text = sprintf("%+d", @actor.morale)
    self.contents.draw_text(dx + 46, dy + 4, 44, WLH, text, 2)
  end
 
  #--------------------------------------------------------------------------
  # Draw Morale Gauge
  #--------------------------------------------------------------------------
  def draw_morale_gauge(actor, x, y, width = 120)
    return unless $imported["BattlerStatMorale"]
    gc0 = gauge_back_color
    gc1 = text_color(YE::BATTLE::DISPLAY::MORALE_GAUGE1)
    gc2 = text_color(YE::BATTLE::DISPLAY::MORALE_GAUGE2)
    gc3 = text_color(YE::BATTLE::DISPLAY::MORALE_GAUGE3)
    gc4 = text_color(YE::BATTLE::DISPLAY::MORALE_GAUGE4)
    gh = 6
    gy = y + WLH - 8 - (gh - 6)
    gb = width
    self.contents.fill_rect(x, gy, gb, gh, gc0)
    if actor.morale == 0
      gw = 0
    elsif actor.morale > 0
      gw = gb * actor.morale / actor.max_morale
      self.contents.gradient_fill_rect(x, gy, gw, gh, gc1, gc2)
    else
      gw = gb * actor.morale / actor.min_morale
      x += gb - gw
      self.contents.gradient_fill_rect(x, gy, gw, gh, gc3, gc4)
    end
  end
 
  #--------------------------------------------------------------------------
  # Draw Morale Icon
  #--------------------------------------------------------------------------
  def draw_morale_icon(index)
    return unless YE::BATTLE::DISPLAY::ICON_MORALE
    morale = @actor.morale / YE::BATTLE::DISPLAY::MORALE_DIVISOR
    return if morale == 0
    dx = index * 96 + 72
    dy = 0
    if morale > 0
      icon = YE::BATTLE::DISPLAY::ICON_MORALE_HIGH
      colour = YE::BATTLE::DISPLAY::MORALE_COL_HIGH
    else
      icon = YE::BATTLE::DISPLAY::ICON_MORALE_LOW
      colour = YE::BATTLE::DISPLAY::MORALE_COL_LOW
    end
    draw_icon(icon, dx, dy)
    self.contents.font.size = YE::BATTLE::DISPLAY::MORALE_FONT_SIZE
    self.contents.font.color = text_color(colour)
    text = sprintf("%+d%%", morale)
    self.contents.draw_text(dx + 2, dy + 2, 20, 20, text, 1)
  end
 
end # end Window_BattleStatus

#===============================================================================
#
# END OF FILE
#
#===============================================================================
If it could work with that... Thank you so much for helping me out with this!

EDIT: I'll message you the codes for the rest. Stupid character limit ><

EDIT2: Well, the character limit still applies and even worse, 1 of the scripts can't even fit into a single message. Feel free to tell me if you're missing any of the scripts or too lazy to find, I'll send it to you right away. Thanks again for helping me!
« Last Edit: July 06, 2011, 05:48:08 AM by doomed2die »

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Because of the number of scripts you're using, I think it'd be easier to just upload the project, link it to me and then I'd be able to make the system to your exact specifications. Could you possibly include a text file or whatever that gives me more specific instructions?
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
Umm sure. Will do.


I'll create a commented text description of what it would do at the top of the script editor above everything else.

Thanks so much for this man :)

**
Rep: +0/-0Level 72
RMRK Junior
Pacman, if you can successfully make this script compatible with Melody, I'll send you a donation through paypal {if you have it}. There have been SEVERAL people asking for a script like this. There is one that exists, and it executes it pretty well, but there is no compatibility for Melody. I'll keep an eye on this topic, because I desperately need this script in order to continue with my project.

**
Rep:
Level 76
Interested RMKR
Pacman, if you can successfully make this script compatible with Melody, I'll send you a donation through paypal {if you have it}. There have been SEVERAL people asking for a script like this. There is one that exists, and it executes it pretty well, but there is no compatibility for Melody. I'll keep an eye on this topic, because I desperately need this script in order to continue with my project.

One exists? I've been searching but no success...

Tell me, can you link it for me?

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Yeah, can you give us links? It'd be much easier for me if I just had to make it compatible.
And no, I don't have PayPal, but I wouldn't want to take your money for something as relatively simple as this.
it's like a metaphor or something i don't know

***
Rep:
Level 75
The YEM battle melody has a system like this called rage it can be used as a skill cost rage is earned by taking damage dealing damage things like that rage can also be added or subtraced by putting tags in the item or skill note boxes the rage feature is standard with the YEM battle system but it can be added by itself too you will just have to find the script.

Spoiler for:



Spoiler for:
John 3:16: For God loved the world so much that he gave his one and only Son, so that everyone who believes in him will not perish but have eternal life

**
Rep:
Level 76
Interested RMKR
The YEM battle melody has a system like this called rage it can be used as a skill cost rage is earned by taking damage dealing damage things like that rage can also be added or subtraced by putting tags in the item or skill note boxes the rage feature is standard with the YEM battle system but it can be added by itself too you will just have to find the script.

I have the YEM Battle Engine Melody but the compatibility is rather terrible so I left it be.

Anyways, the problem with a rage feature is that the rage system gains rage by being hit, attacking, etc. and to my knowledge, I cannot make a potion of rage.

**
Rep: +0/-0Level 72
RMRK Junior
I'll post a couple reference links.

THIS is the script I was referring to earlier. It allows for multiple resources and can set multiple costs to skills. The scripter had tried a compatibility patch for melody, but couldn't pull it off.

THIS is a request I made that explains how Rage can be tweaked to allow for it to become a more useful alternate resource, thus eliminating the need for a new script. The only thing I forgot to add was that, as doomed2die said, there was no way to replenish rage through items.

**
Rep:
Level 76
Interested RMKR
That's nearly exactly what I was looking for! Thank you! I just need it to be compatible with the battle HUD now :P

Also, I'm unsure if it can, but I do need skills/items to cost/heal multiple energies (I only have 2 but.. :P)

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
I've completed all the Data Structure, module, REGEXP and Game data stuff, and I'm now starting on the windows. Would you like the SP bar drawn underneath the MP bar in the menu?
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
Yeah, under would be nice.

**
Rep: +0/-0Level 72
RMRK Junior
I've completed all the Data Structure, module, REGEXP and Game data stuff, and I'm now starting on the windows. Would you like the SP bar drawn underneath the MP bar in the menu?

This is fantastic. Any idea of a release date? This will be such a motivator, can't wait.

**
Rep:
Level 76
Interested RMKR
I've completed all the Data Structure, module, REGEXP and Game data stuff, and I'm now starting on the windows. Would you like the SP bar drawn underneath the MP bar in the menu?

This is fantastic. Any idea of a release date? This will be such a motivator, can't wait.

He looks like he's far along; he sent me a screenshot and it's looking great.

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Should be done either today or Friday. I'm busy most of Thursday.
My VX has stopped working for whatever reason, but I'll see what I can do.

I've finished the window work. All that's left is fine-tuning everything and making sure the notetags work.
it's like a metaphor or something i don't know

**
Rep: +0/-0Level 72
RMRK Junior
Wonderful. If you need to test it more, I'll be available pretty much all day today. Just in case your VX is still acting up.

EDIT: Wait, I'm slightly confused. Was this script going to be compatible with Melody? Or was it being made specifically for doomed2die's HUD?
« Last Edit: July 13, 2011, 12:40:59 PM by thechancellor »

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
I'll first make it for the YERD Party Display, then I'll try and integrate it into BEM completely.
it's like a metaphor or something i don't know

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Excuse the double-post, but I've had a revelation.
Now, both items and skills will be able to cost sp, recover sp by a set percentage or value, and weapons and armor will be able to half sp costs for skills a la mp. Actors can be set as skillful, meaning their skills have half sp cost like pharmacology for mp. Damage done by skills and items can also be applied to sp now. Most of this is done through notebox tags, but because actors don't have noteboxes their features are now handled through arrays built into the script. The script is in a very flimsy beta, the window work is still shaky (I realized something going wrong, it'll be fixed soon), and it is very hopeful to be released on Friday.
Of course, I'm yet to annotate the script, but that should be a very quick process.
« Last Edit: July 13, 2011, 02:17:15 PM by Pacman »
it's like a metaphor or something i don't know

**
Rep: +0/-0Level 72
RMRK Junior
That's quite a list of features. Great to hear. Keep us posted, and thanks again.

**
Rep:
Level 76
Interested RMKR
That's perfect. :) You're awesome lol

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Due to personal problems and me not being motivated to doing anything, rather stay in bed all day wishing I could sleep for the next three weeks, I've had to postpone work on this. If anyone else wants to take off where I left off, this is what I have.
Code: [Select]
module SP
  ACTOR_MAXSP = [80, 100, 100, 110]
  SP_TEXT = "SP"
  SP_ABB = "S"
  SKILLFUL = [true, false, false, true]
  SHOWN_SP_TYPE = 2
end

module Vocab
  def self.sp
    return SP::SP_TEXT
  end
  def self.sp_a
    return SP::SP_ABB
  end
end

module RPG
class UsableItem < BaseItem
  attr_accessor :sp_recovery_rate
  attr_accessor :sp_recovery
  attr_accessor :sp_cost
  attr_accessor :damage_to_sp
  alias dual_mpsp_initialize initialize
  def initialize
    dual_mpsp_initialize
    @sp_recovery_rate = 0
    @sp_recovery = 0
    @sp_cost = 0
    @damage_to_sp = false
  end
  def sp_cost
    return @sp_cost if @sp_cost != nil
    @sp_cost = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:SP_COST|SP COST):[ ](\d+)>/i
        @sp_cost = $1.to_i
      end
    }
    return @sp_cost
  end
  def sp_recovery
    return @sp_recovery if @sp_recovery != nil
    @sp_recovery = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:SP_RECOVERY|SP RECOVERY):[ ](\d+)>/i
        @sp_recovery = $1.to_i
      end
    }
    return @sp_recovery
  end
  def sp_recovery_rate
    return @sp_recovery_rate if @sp_recovery_rate != nil
    @sp_recovery_rate = 0
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /<(?:SP_RECOVERY_RATE|SP RECOVERY RATE):[ ](\d+)>/i
        @sp_recovery_rate = $1.to_i
      end
    }
    return @sp_recovery_rate
  end
end
class Actor
  attr_accessor :skillful
  alias dual_mpsp_initialize initialize
  def initialize
    dual_mpsp_initialize
    for i in 1..99
      @parameters[6,i] = 80+i*10
    end
    @skillful = false
  end
  def maxsp
    for i in actor
      i.maxsp = SP::ACTOR_MAXSP[i]
    end
  end
  def skillful
    for i in actor
      i.skillful = SP::SKILLFUL[i]
    end
  end
end
class Enemy
  def base_maxsp
    return 0    # Not for enemies.
  end
end
class BaseItem
  attr_accessor :half_sp_cost
  alias dual_mpsp_initialize initialize
  def initialize
    dual_mpsp_initialize
    @half_sp_cost = false
  end
  def half_sp_cost
    return if self.is_a?(RPG::Item) or self.is_a?(RPG::Skill)
    @half_sp_cost = !self.note[/\\HALF_SP_COST/i].nil? if @half_sp_cost.nil?
    return @half_sp_cost
  end
end
class System
  class Terms
    attr_accessor :sp
    attr_accessor :sp_a
    alias dual_mpsp_initialize initialize
    def initialize
      dual_mpsp_initialize
      @sp = SP::SP_TEXT
      @sp_a = SP::SP_ABB
    end
  end
end
end

class Game_Battler
  attr_accessor :sp
  attr_accessor :sp_damage
  alias dual_mpsp_initialize initialize
  def initialize
    dual_mpsp_initialize
    @sp = 0
  end
  alias dual_mpsp_clractnres clear_action_results
  def clear_action_results
    dual_mpsp_clractnres
    @sp_damage = 0
  end
  alias dual_mpsp_clrextval clear_extra_values
  def clear_extra_values
    dual_mpsp_clrextval
    @maxsp_plus = 0
  end
  def maxsp
    maxsp = 0
    if self.is_a?(Game_Actor)
      maxsp += actor.maxsp
    elsif self.is_a?(Game_Enemy)
      maxsp += enemy.base_maxsp
    end
    maxsp += @maxsp_plus
    return [[maxsp, 0].max, 9999].min
  end
  def half_sp_cost
    return false
  end
  def maxsp=(new_maxsp)
    @maxsp_plus += new_maxsp - self.maxsp
    @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min
    @sp = [@sp, self.maxsp].min
  end
  def sp=(sp)
    @sp = [[sp, maxsp].min, 0].max
  end
  alias dual_mpsp_recall recover_all
  def recover_all
    @sp = maxsp
    dual_mpsp_recall
  end
  def calc_sp_cost(skill)
    if half_sp_cost
      return skill.sp_cost / 2
    else
      return skill.sp_cost
    end
  end
  alias dual_mpsp_sklcnus skill_can_use?
  def skill_can_use?(skill)
    return false if calc_sp_cost(skill) > sp
    dual_mpsp_sklcnus(skill)
  end
  alias dual_mpsp_mkdmgal make_obj_damage_value
  def make_obj_damage_value(user, obj)
    dual_mpsp_mkdmgal(user, obj)
    if obj.damage_to_sp
      @sp_damage = damage
    end
  end
  def calc_sp_recovery(user, item)
    result = maxsp * item.sp_recovery_rate / 100 + item.sp_recovery
    result *= 2 if user.skillful    # Skillful doubles the effect
    return result
  end
  alias dual_mpsp_exctdmg execute_damage
  def execute_damage(user)
    dual_mpsp_exctdmg(user)
    self.sp -= @sp_damage
  end
  alias dual_mpsp_skltst skill_test
  def skill_test(user, skill)
    tester = self.clone
    tester.make_obj_damage_value(user, skill)
    tester.apply_state_changes(skill)
    return true if tester.sp_damage < 0 && tester.sp < tester.maxsp
    dual_mpsp_skltst(user, skill)
  end
  alias dual_mpsp_itmtst item_test
  def item_test(user, item)
    tester = self.clone
    tester.make_obj_damage_value(user, item)
    tester.apply_state_changes(item)
    if tester.sp_damage < 0 or tester.calc_sp_recovery(user, item) > 0
      return true if tester.sp < tester.maxsp
    end
    dual_mpsp_itmtst(user, item)
  end
  alias dual_mpsp_itmefct item_effect
  def item_effect(user, item)
    dual_mpsp_itmefct(user, item)
    sp_recovery = calc_sp_recovery(user, item)
    @sp_damage -= sp_recovery
  end
  alias dual_mpsp_itmgrthtp item_growth_effect
  def item_growth_effect(user, item)
    dual_mpsp_itmgrthtp
    if item.parameter_type > 0 and item.parameter_points != 0
      case item.parameter_type
      when 7  # SP
        @maxsp_plus += item.parameter_points
      end
    end
  end
end

class Game_Actor < Game_Battler
  def base_maxsp
    return SP::ACTOR_MAXSP[actor[@level]]
  end
  def skillful
    return actor.skillful
  end
  def half_sp_cost
    for armor in armors.compact
      return true if armor.half_sp_cost
    end
    for weapon in weapons.compact
      return true if weapon.half_sp_cost
    end
    return false
  end
  alias dual_mpsp_chngexp change_exp
  def change_exp(exp, show)
    dual_mpsp_chngexp(exp, show)
    @sp = [@sp, maxsp].min
  end
end

class Game_Enemy < Game_Battler
  def base_maxsp
    return 0
  end
end

class Window_Base < Window
  def sp_gauge_color1
    return text_color(24)
  end
  def sp_gauge_color2
    return text_color(28)
  end
  def sp_color(actor)
    return crisis_color if actor.sp < actor.maxsp / 4
    return normal_color
  end
  def draw_actor_sp(actor, x, y, width = 120)
    draw_actor_sp_gauge(actor, x, y, width)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, Vocab::sp_a)
    self.contents.font.color = sp_color(actor)
    last_font_size = self.contents.font.size
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 44, y, 44, WLH, actor.sp, 2)
    else
      self.contents.draw_text(xr - 99, y, 44, WLH, actor.sp, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
      self.contents.draw_text(xr - 44, y, 44, WLH, actor.maxsp, 2)
    end
  end
  def draw_actor_sp_gauge(actor, x, y, width = 120)
    gw = width * actor.sp / [actor.maxsp, 1].max
    gc1 = sp_gauge_color1
    gc2 = sp_gauge_color2
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
end

class Window_MenuStatus < Window_Selectable
  alias dual_mpsp_refresh refresh
  def refresh
    dual_mpsp_refresh
    if $scene.is_a?(Scene_Menu)
      for actor in $game_party.members
        y = actor.index * 96 + WLH / 2
        draw_actor_sp(actor, x - 64, y + WLH * 2)
      end
    elsif $scene.is_a?(Scene_Skill)
      for actor in $game_party.members
        y = actor.index * 96 + WLH / 2
        draw_actor_sp(actor, x + 96, y + WLH * 2)
      end
    end
  end
end

class Window_Skill < Window_Selectable
  alias dual_mpsp_drwitm draw_item
  def draw_item(index)
    dual_mpsp_drwitm(index)
    sp_rect = item_rect(index)
    if skill != nil
      self.contents.draw_text(sp_rect, @actor.calc_sp_cost(skill), 1)
    end
  end
end

class Window_SkillStatus < Window_Base
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 4, 0)
    draw_actor_level(@actor, 140, 0)
    draw_actor_mp(@actor, 240, 0)
    draw_actor_sp(@actor, 392, 0)
  end
end

class Window_Status < Window_Base
  alias dual_mpsp_drwbscinf draw_basic_info
  def draw_basic_info(x, y)
    dual_mpsp_drwbscinf(x, y)
    sx = x; sy = y
    draw_actor_sp(@actor, sx, sy + WLH * 4)
  end
end

class Window_BattleStatus < Window_Selectable
  if self.method_defined?(:draw_party_morale)
    alias dual_mpsp_yerd_item draw_item
    def draw_item(index)
      dual_mpsp_yerd_item(index)
      draw_party_sp(index)
    end
    def draw_party_hp(index)
      dx = index * 96 + 2
      dy = WLH * 2.5 - YE::BATTLE::DISPLAY::STAT_FONT_SIZE + 2
      if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
        dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
      end
      dw = 92
      draw_actor_hp_gauge(@actor, dx, dy, dw)
      self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
      self.contents.font.color = system_color
      self.contents.draw_text(dx + 2, dy + 4, 28, WLH, Vocab::hp_a, 0)
      self.contents.font.color = hp_color(@actor)
      text = sprintf("%d/%d", @actor.hp, @actor.maxhp)
      percent = @actor.hp * 100.0 / @actor.maxhp
      case YE::BATTLE::DISPLAY::SHOWN_HP_TYPE
        when 1; text = @actor.hp
        when 2; text = sprintf("%d/%d", @actor.hp, @actor.maxhp)
        when 3; text = sprintf("%d%%", percent)
        when 4; text = sprintf("%d %d%%", @actor.hp, percent)
        when 5; text = sprintf("%d/%d %d%%", @actor.hp, @actor.maxhp, percent)
      end
      self.contents.draw_text(dx + 30, dy + 4, dw - 32, WLH, text, 2)
    end
    def draw_party_mp(index)
      dx = index * 96 + 2
      dy = WLH * 3 - YE::BATTLE::DISPLAY::STAT_FONT_SIZE + 2
      if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
        dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
      end
      dw = 92
      #---
      move_mp_bar = false
      if $imported["CustomSkillEffects"]
        if YE::BATTLE::DISPLAY::RAGE_CLASSES.include?(@actor.class.id)
          move_mp_bar = true
        end
        if $imported["SubclassSelectionSystem"] and @actor.subclass != nil
          if YE::BATTLE::DISPLAY::RAGE_CLASSES.include?(@actor.subclass.id)
            move_mp_bar = true
          end
        end
      end
      if move_mp_bar and YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
        dw /= 2
        dx += dw
        draw_party_rage(index)
      elsif move_mp_bar and YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
        dw /= 2
        draw_party_rage(index)
      end
      #---
      draw_actor_mp_gauge(@actor, dx, dy, dw)
      self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
      self.contents.font.color = system_color
      self.contents.draw_text(dx + 2, dy + 4, 28, WLH, Vocab::mp_a, 0)
      self.contents.font.color = mp_color(@actor)
      text = sprintf("%d/%d", @actor.mp, @actor.maxmp)
      unless @actor.maxmp == 0
        percent = @actor.mp * 100.0 / @actor.maxmp
      else
        percent = 0
      end
      case YE::BATTLE::DISPLAY::SHOWN_MP_TYPE
        when 1; text = @actor.mp
        when 2; text = sprintf("%d/%d", @actor.mp, @actor.maxmp)
        when 3; text = sprintf("%d%%", percent)
        when 4; text = sprintf("%d %d%%", @actor.mp, percent)
        when 5; text = sprintf("%d/%d %d%%", @actor.mp, @actor.maxmp, percent)
      end
      self.contents.draw_text(dx + 30, dy + 4, dw - 32, WLH, text, 2)
    end
    def draw_party_sp(index)
      dx = index * 96 + 2
      dy = WLH * 3
      if $imported["BattlerStatMorale"] and YE::BATTLE::DISPLAY::GAUGE_MORALE
        dy -= YE::BATTLE::DISPLAY::STAT_FONT_SIZE
      end
      dw = 92
      #---
      move_sp_bar = false
      if $imported["CustomSkillEffects"]
        if YE::BATTLE::DISPLAY::RAGE_CLASSES.include?(@actor.class.id)
          move_sp_bar = true
        end
        if $imported["SubclassSelectionSystem"] and @actor.subclass != nil
          if YE::BATTLE::DISPLAY::RAGE_CLASSES.include?(@actor.subclass.id)
            move_sp_bar = true
          end
        end
      end
      if move_sp_bar and YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
        dw /= 2
        dx += dw
        draw_party_rage(index)
      elsif move_sp_bar and YE::BATTLE::DISPLAY::RAGE_DISPLAY == 1
        dw /= 2
        draw_party_rage(index)
      end
      #---
      draw_actor_sp_gauge(@actor, dx, dy, dw)
      self.contents.font.size = YE::BATTLE::DISPLAY::STAT_FONT_SIZE
      self.contents.font.color = system_color
      self.contents.draw_text(dx + 2, dy + 4, 28, WLH, Vocab::sp_a, 0)
      self.contents.font.color = sp_color(@actor)
      text = sprintf("%d/%d", @actor.sp, @actor.maxsp)
      unless @actor.maxsp == 0
        percent = @actor.sp * 100.0 / @actor.maxsp
      else
        percent = 0
      end
      case SP::SHOWN_SP_TYPE
        when 1; text = @actor.sp
        when 2; text = sprintf("%d/%d", @actor.sp, @actor.maxmp)
        when 3; text = sprintf("%d%%", percent)
        when 4; text = sprintf("%d %d%%", @actor.sp, percent)
        when 5; text = sprintf("%d/%d %d%%", @actor.sp, @actor.maxsp, percent)
      end
      self.contents.draw_text(dx + 30, dy + 4, dw - 32, WLH, text, 2)
    end
  else
    def draw_item(index)
      rect = item_rect(index)
      rect.x += 4
      rect.width -= 8
      self.contents.clear_rect(rect)
      self.contents.font.color = normal_color
      actor = $game_party.members[index]
      y = rect.y
      draw_actor_name(actor, 4, y)
      draw_actor_state(actor, 114, y, 48)
      draw_actor_hp(actor, 174, y, 70)
      draw_actor_mp(actor, 260, y, 50)
      draw_actor_sp(actor, 326, y, 50)
    end
  end
end
There are some small problems with that code, but it is almost done. I'll try to continue work on it, but it doesn't seem very likely. I deeply apologize for any inconvenience. And to any scripter who feels like completing this, make sure it's below YERD Party Display. Otherwise a method would be overwritten.
Sorry for the lack of completion and notes.
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
Oh I see. Okay, well thank you for all the work you've put into this so far! I'll ask around and see if anyone is interested in completing a script. You've been really helpful up until now.

Are all the core features already inside or is there anything you've yet to add?

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
Most of what I promised is there.
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
I just need to know what isn't there so I'm aware, when I'm seeing if someone will either write the script or complete your script, that they're aware of anything that they must add. So can you give a list of what is incomplete as of now please? Thank you for doing this much so far anyway.

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Best IRC Quote2014 Zero to Hero2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
The only thing that isn't there would probably be functionality. I'm not sure how to put it in laymen's terms, but there are a couple methods in RPG::Actor that aren't working and should be placed elsewhere. The script will throw a syntax error upon pressing new game in the title screen.
it's like a metaphor or something i don't know

**
Rep:
Level 76
Interested RMKR
Alright, that's enough for me. I'll see if I can get it finished. Thanks for helping out to this point :)