Cursed Equipment
Version: 1.0
Author: modern algebra
Date: August 23, 2010
Version History
- <Version 1.0> 08.23.2010 - Original Release
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
- Allows you to set certain items so that they cannot be unequipped by the player
- Can still remove cursed equipment manually through event commands or script commands
- Allows you to create items and skills with a property that will unequip any cursed items on an actor to whom it is applied
- Would allow you to make, for instance, a special pendant given to a character by a loved one which can never be unequipped.
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
- The Mormegil, for the request
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.