Forbid the character from unequipping weapon in inventory.

Kurot

Villager
Member
Joined
Jun 5, 2016
Messages
17
Reaction score
5
First Language
Portuguese
Primarily Uses
RMMV
How do I forbid the character from unequipping the weapon he starts in the game and being left with nothing in place?

I need that somehow he can only exchange the weapons for other weapons, so that he can never be without anything. Is it possible?
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
33,340
Reaction score
8,387
First Language
German
Primarily Uses
RMMV
you can seal or fix the equipment slots with traits, but that would stop them from changing the weapons at all.
you can use a parallel process event to re-equip something but that will either increase lag or not be immediatly as well as having a few other quirks.

to really prevent the "unequip" option only you'll need a plugin.
 

Kurot

Villager
Member
Joined
Jun 5, 2016
Messages
17
Reaction score
5
First Language
Portuguese
Primarily Uses
RMMV
Just to conclude, I got what I wanted with the Zevia plugin, which I found on this link:


I had only a small problem with the plugin. Because despite preventing him from removing the weapon with the Clear command, when I clicked on Optimize or Formation he removed the weapon anyway.

So I just added a few more commands and managed to fix.

JavaScript:
/*:
* @plugindesc This plugin allows users to specify equipment slots on an Actor that cannot be unequipped
* in a way that would leave them empty.
* @author Zevia
*
* @help If the option to prevent all actors from unequipping items without replacing
* them is true, then this Plugin does not require any further configuration and no
* Actor will be able to unequip an item without replacing it.
* If the option is false, then within an Actor's note box, you can specify which
* slot IDs should not be unequippable without a replacement. By default, the
* slots are:
* 0: Weapon
* 1: Shield
* 2: Head
* 3: Body
* 4: Accessory
*
* So, if you wanted an Actor to always require an item in the Body slot, you would
* put <preventBlankEquip: 3>. You can prevent multiple slots by comma-separating
* each slot ID. If you want to prevent unequipping without replacements for the
* weapon and shield slot, you would put <preventBlankEquip: 0, 1>
*
* If the Prevent All Actors & Slots option is true, then the clear command will be
* removed from the equip menu.
*
* @param shouldPreventAll
* @text Prevent All Actors & Slots
* @type boolean
* @desc Whether every Actor should be unable to unequip an item without a replacement for all equipment slots.
* @default false
*/

(function(module) {
    'use strict';

    module.Zevia = module.Zevia || {};
    var PreventBlankEquip = module.Zevia.PreventBlankEquip = {};
    var shouldPreventAll = !!PluginManager.parameters('PreventBlankEquip').shouldPreventAll.match(/true/i);

    PreventBlankEquip.shouldPreventEquip = function(actor, slotId) {
        if (shouldPreventAll) { return true; }

        var meta = $dataActors[actor._actorId].meta.preventBlankEquip;
        if (!meta) { return false; }

        var slotIds = meta.match(/\d+/g);
        if (!slotIds || !slotIds.length) { return false; }

        return slotIds.indexOf('' + slotId) !== -1;
    };

    PreventBlankEquip.onItemOk = Scene_Equip.prototype.onItemOk;
    Scene_Equip.prototype.onItemOk = function() {
        if (this._itemWindow.item() || !PreventBlankEquip.shouldPreventEquip(this._actor, this._slotWindow.index())) {
            PreventBlankEquip.onItemOk.call(this);
            return;
        }

        SoundManager.playBuzzer();
        this._itemWindow.activate();
    };

    PreventBlankEquip.clearEquipments = Game_Actor.prototype.clearEquipments;
    Game_Actor.prototype.clearEquipments = function() {
        var maxSlots = this.equipSlots().length;
        for (var i = 0; i < maxSlots; i++) {
            if (this.isEquipChangeOk(i) && !PreventBlankEquip.shouldPreventEquip(this, i)) {
                this.changeEquip(i, null);
            }
        }
    };

    PreventBlankEquip.optimizeEquipments = Game_Actor.prototype.optimizeEquipments;
    Game_Actor.prototype.optimizeEquipments = function() {
        var maxSlots = this.equipSlots().length;
        this.clearEquipments();
        for (var i = 0; i < maxSlots; i++) {
            if (this.isEquipChangeOk(i) && !PreventBlankEquip.shouldPreventEquip(this, i)) {
                this.changeEquip(i, this.bestEquipItem(i));
            }
        }
    };

    PreventBlankEquip.makeCommandList = Window_EquipCommand.prototype.makeCommandList;
    Window_EquipCommand.prototype.makeCommandList = function() {
        if (!shouldPreventAll) {
            PreventBlankEquip.makeCommandList.call(this);
            return;
        }

        this.addCommand(TextManager.equip2, 'equip');
        this.addCommand(TextManager.optimize, 'optimize');
    };
})(window);
 
Last edited:

Aesica

undefined
Veteran
Joined
May 12, 2018
Messages
1,799
Reaction score
1,709
First Language
English
Primarily Uses
RMMV
I know it's kind of cliche, but... "there's a Yanfly plugin for that." YEP_EquipCore I think is the one that lets you force slots to always have something equipped.
 

Kurot

Villager
Member
Joined
Jun 5, 2016
Messages
17
Reaction score
5
First Language
Portuguese
Primarily Uses
RMMV
Yeah, I'm aware. The problem is that his plugin is incompatible with several others that I am using, so I was looking for one more ..., simple, haha.

But thanks anyway.
 

Latest Threads

Latest Posts

Latest Profile Posts

Orbiting the cactus
unborn180.png
Here's this for an idea I might do: A Touhou RPG set in the universe of the Hoi4 mod "The New Order: Last Days of Europe". Expect BurgSys Yukari, the Great Fairy Trial, and funni clock Flandre
The thing I don't like about VRMMORPG anime is that they're unrealistic. I mean, we know we have a lot of ping issues, latency, and desync. Would be funny if you shoot a player and they immediately teleport somewhere because "ha, your internet suck!".
I've decided to try and be more social and less nervous about engaging. I'm always over thinking things - from now on when I'm worried or don't get something I'll just ask.
Sometimes a mechanic that is meant to add challenge is just annoying. Even the Final Fantasy games did not completely escape this pitfall of design. (FF8 draw system I'm looking at you - grrrr)

Forum statistics

Threads
113,748
Messages
1,077,163
Members
147,780
Latest member
vvikovv
Top