>>798
特定のアイテム"だけ"でいいならこんな感じ。剣全般とかになるともう少し工夫しないと駄目
targetItem:{id:<対象のID>, isWeapon: <対象が武器ならtrue, アイテムならfalse>}
extraRecoveryValue: <耐久変化値、減らすなら負の値、増やすなら正の値>
の2つを耐久変化アイテムに入れれば動く。行数制限きついから結構見辛くしてしまった
(function(){
var alias1 = Miscellaneous.isDurabilityChangeAllowed;
Miscellaneous.isDurabilityChangeAllowed = function(item, targetItem) {
if (item && targetItem && typeof item.custom.targetItem === 'object') {
if (item.custom.targetItem.id === targetItem.getId() && item.custom.targetItem.isWeapon === targetItem.isWeapon()) {
return true;
}
else {
return false;
}
}
return alias1.call(this, item, targetItem);
};
var alias2 = DurabilityChangeItemUse.enterMainUseCycle;
DurabilityChangeItemUse.enterMainUseCycle = function(itemUseParent) {
var durability, generator;
var itemTargetInfo = itemUseParent.getItemTargetInfo();
if (typeof itemTargetInfo.item.custom.extraRecoveryValue !== 'number') {
return alias2.call(this, itemUseParent);
}
durability = itemTargetInfo.targetItem.getLimit() + itemTargetInfo.item.custom.extraRecoveryValue;
if (durability > itemTargetInfo.targetItem.getLimitMax()) {
durability = itemTargetInfo.targetItem.getLimitMax();
}
else if (durability <= 0) {
durability = -1;
}
this._dynamicEvent = createObject(DynamicEvent);
generator = this._dynamicEvent.acquireEventGenerator();
generator.itemDurabilityChange(itemTargetInfo.targetUnit, itemTargetInfo.targetItem, durability, IncreaseType.ASSIGNMENT, itemUseParent.isItemSkipMode());
return this._dynamicEvent.executeDynamicEvent();
};
})();