Notice: fwrite(): Write of 44 bytes failed with errno=28 No space left on device in /home/rmrk/domains/rmrk.net/public_html/Sources/Cache/APIs/FileBased.php on line 96
Print Page - Cursed Equipment

The RPG Maker Resource Kit

RMRK RPG Maker Creation => VX => VX Scripts Database => Topic started by: modern algebra on August 23, 2010, 11:30:56 PM

Title: Cursed Equipment
Post by: modern algebra on August 23, 2010, 11:30:56 PM
Cursed Equipment
Version: 1.0
Author: modern algebra
Date: August 23, 2010

Version History




Description



This script allows you to make cursed equipment; equipment that, once equipped, cannot be unequipped from the Equip scene. The only way it can be removed is manually, by an event command or a script call, or through items and skills that are specifically noted to remove curses.

Essentially, it operates like the Fix Equipment Actor Option, but it applies to weapons and armors, rather than by actor, and an actor will not be prevented from unequipping other equipment, only the cursed ones.

Features


Instructions

Please see the header of the script for instructions.

Script



#==============================================================================
#    Cursed Equipment
#    Version: 1.0
#    Author: modern algebra (rmrk.net)
#    Date: August 23, 2010
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script allows you to make cursed equipment; equipment that, once
#   equipped, cannot be unequipped from the Equip scene. The only way it can be
#   removed is manually, by an event command or a script call, or through items
#   and skills that are specifically noted to remove curses.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Place the script below the default scripts but above Main in the Script
#   Editor (F11). If you are using any custom scripts that modify equipment,
#   this script should be below them as well.
#
#    The script is easy to use. To specify an equippable item as cursed, put
#   the following code in its note field in the database:
#        \curse
#   Any items with that in their note field will be unremovable by the player.
#
#    To specify an item or skill as being able to remove cursed equipment, set
#   the following code in its notebox:
#        \uncurse
#
#    And that's pretty much it. If you wish to manually remove a particular
#   cursed piece of equipment, you can use the regular event command and it
#   will work. If you want to make an event that removes all cursed equipment
#   from an actor, you can use the following code in a script call:
#        $game_actors[actor_id].unequip_cursed_equips
#==============================================================================

#==============================================================================
# *** RPG
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    modified classes - UsableItem; Weapon; Armor
#==============================================================================

module RPG
  #==========================================================================
  # ** UsableItem
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    new method - remove_curse?
  #==========================================================================
 
  class UsableItem
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Remove Curse?
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def remove_curse?
      @uncurse = !self.note[/\\UNCURSE/i].nil? if @uncurse.nil?
      return @uncurse
    end
  end
 
  #==========================================================================
  # ** Weapon
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    new method - cursed?
  #==========================================================================
 
  class Weapon
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Cursed?
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def cursed?
      @cursed = !self.note[/\\CURSE/i].nil? if @cursed.nil?
      return @cursed
    end
  end
 
  #==========================================================================
  # ** Armor
  #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  #  Summary of Changes:
  #    new method - cursed?
  #==========================================================================
 
  class Armor
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # * Cursed?
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def cursed?
      @cursed = !self.note[/\\CURSE/i].nil? if @cursed.nil?
      return @cursed
    end
  end
end

#==============================================================================
# ** Game_Actor
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - skill_effect; skill_test; item_effect; item_test
#    new method - unequip_cursed_equips
#==============================================================================

class Game_Actor
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Stem Test
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias odragb_curseqp_skltst_5tx2 skill_test
  def skill_test (user, skill, *args)
    if skill.remove_curse?
      equips.each { |equip| return true if !equip.nil? && equip.cursed? }
    end
    return odragb_curseqp_skltst_5tx2 (user, skill, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Effect
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mdgebra_curse_sklefct_2df3 skill_effect
  def skill_effect (user, skill, *args)
    unequip_cursed_equips if skill.remove_curse?
    mdgebra_curse_sklefct_2df3 (user, skill, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Item Test
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malgba_crs_itmtst_2bk7 item_test
  def item_test (user, item, *args)
    if item.remove_curse?
      equips.each { |equip| return true if !equip.nil? && equip.cursed? }
    end
    return malgba_crs_itmtst_2bk7 (user, item, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Item Effect
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modrnl_cursed_itmefct_9ik1 item_effect
  def item_effect (user, item, *args)
    modrnl_cursed_itmefct_9ik1 (user, item, *args) # Run Original Method
    unequip_cursed_equips if item.remove_curse?
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Unequip Cursed Items
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def unequip_cursed_equips
    for i in 0...equips.size
      change_equip (i, nil, false) if !equips[i].nil? && equips[i].cursed?
    end
  end
end

#==============================================================================
# ** Scene_Equip
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - update_equip_selection
#==============================================================================

class Scene_Equip
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Equip Region Selection
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malg_crseqp_updteqpselect_6yj3 update_equip_selection
  def update_equip_selection (*args)
    if Input.trigger? (Input::C) && !@equip_window.item.nil? && @equip_window.item.cursed?
      Sound.play_buzzer
      return
    end
    malg_crseqp_updteqpselect_6yj3 (*args) # Run Original Method
  end
end


Credit




Thanks


Support



Please post in this topic at RMRK for support, no matter how old this topic is. Do not PM me.

Known Compatibility Issues

No known compatibility issues, but it should be pasted below any scripts that substantially modify Scene_Equip and will likely still not work with some.
Title: Re: Cursed Equipment
Post by: CompanionWulf on August 25, 2010, 05:37:06 PM
This is useful! I was wondering about a script like this a while ago.
Title: Re: Cursed Equipment
Post by: DaedaliusRE on March 12, 2011, 05:44:33 PM
"Please post in this topic at RMRK for support, no matter how old this topic is"

I hope this still applies : P


I desperately need help with this script. Everything works how it´s supposed to work. But sometimes (not too rare or too frequent) an error which kicks me out of the game. But when I reload and to the exact same thing again, there is no error anymore. At least till next time it spontaniously wants to kick me : (
I don´t remember what error EXACTLY but it was definitively an "stack Level is too deep!" Error. Can someone tell me how to fix this? I refuse to give up this script because it´s very very important for my Story X.x

I hope someone can help me!

And if you need more infos about the stack Level error (i honestly don´t know if there are multiple sorts of Stack Level errors) I will write everything down when it happens once more!

mfg
Daedae
Title: Re: Cursed Equipment
Post by: pacdiggity on March 12, 2011, 11:47:44 PM
The most likely possibility is that you have the script in your database twice or you copied and pasted the script within itself. Either that or another script you have refers to this script and keeps going or something. Now, I'm not a scripter, but I'm pretty good at troubleshooting. If problems persist upload the project and see if someone can fix it.
EDIT:
@TDS -  Oh yeah. I forgot that could happen.
Title: Re: Cursed Equipment
Post by: TDS on March 13, 2011, 12:23:54 AM
Or it could be that he's pressing F12 to reset the game while testing, which would explain why the error appears randomly for him.
Title: Re: Cursed Equipment
Post by: DaedaliusRE on March 13, 2011, 02:37:48 PM
I don´t remember pressing F12 to restart it. Sure I did this one time or another, but there were moments the error occured even if I didn´t press F12 since starting the game again.

But I will try and goo further with my balancing work and if the Problem persists, I will try to upload it and search for help If I´m allowed to.

Thank you very much for your fast answers!