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
endCredit
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.
This is useful! I was wondering about a script like this a while ago.
"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
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.
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.
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!