Sistema de Pesca para RPG MAKER
Um sistema simples de pesca que você pode utilizar grátis no seu jogo.
Modificar e contribuir.
Deixe seu like aqui ou no youtube para eu saber que você veio desses canais.
Youtube: https://www.youtube.com/watch?v=H1QQ8kfDQAo
Itch io: https://satanturno.itch.io/fishing-system
/*:
* @target MV MZ
* @plugindesc Sistema de pesca com seleção de itens nos parâmetros
* @author Bruno Ferreira
*
* @param Fishing Rod Name
* @text Nome da Vara de Pesca
* @desc Nome exato do item vara de pesca
* @default Fishing Rod
*
* @param Fishing Region
* @text ID da Região de Pesca
* @desc ID da região onde é possível pescar
* @type number
* @default 1
*
* @param Wait Time
* @text Tempo de Espera (ms)
* @desc Tempo de espera em milissegundos
* @type number
* @default 3000
*
* @param Success Chance
* @text Chance de Sucesso (%)
* @desc Porcentagem de chance de pescar algo (0-100)
* @type number
* @min 0
* @max 100
* @default 70
*
* @param Success Balloon
* @text Balão de Sucesso
* @desc ID do balão ao pegar peixe
* @type number
* @default 12
*
* @param Fail Balloon
* @text Balão de Falha
* @desc ID do balão ao falhar
* @type number
* @default 11
*
* @param Success Sound
* @text Som de Sucesso
* @desc Nome do SE ao pescar com sucesso
* @default getFish
*
* @param Fishable Items
* @text Itens Pescáveis
* @desc IDs dos itens que podem ser pescados (separados por vírgula)
* @type string
* @default 1,2,3
*/
(function() {
var parameters = PluginManager.parameters('SimpleFishing');
var fishingRodName = parameters['Fishing Rod Name'] || 'Fishing Rod';
var fishingRegion = Number(parameters['Fishing Region'] || 1);
var waitTime = Number(parameters['Wait Time'] || 3000);
var successChance = Number(parameters['Success Chance'] || 70) / 100;
var successBalloon = Number(parameters['Success Balloon'] || 12);
var failBalloon = Number(parameters['Fail Balloon'] || 11);
var successSound = parameters['Success Sound'] || 'getFish';
var fishableItems = [];
var itemsString = String(parameters['Fishable Items'] || '1,2,3');
itemsString.split(',').forEach(function(itemId) {
var id = parseInt(itemId.trim());
if (!isNaN(id)) {
fishableItems.push(id);
}
});
var _isFishing = false;
var _playerCanMove = true;
var _balloonActive = false;
Scene_Map.prototype.canFish = function() {
var isCorrectRegion = $gameMap.regionId($gamePlayer.x, $gamePlayer.y) === fishingRegion;
var hasFishingRod = $gameParty.items().some(item => item.name === fishingRodName);
var isMessageBusy = $gameMessage.isBusy();
return isCorrectRegion && hasFishingRod && !isMessageBusy;
};
var _Scene_Map_update = Scene_Map.prototype.update;
Scene_Map.prototype.update = function() {
_Scene_Map_update.call(this);
if (_balloonActive && !$gamePlayer.isBalloonPlaying()) {
_balloonActive = false;
this.finishFishing();
}
if (Input.isTriggered('ok') && !_isFishing && this.canFish() && _playerCanMove) {
this.startFishing();
}
};
Scene_Map.prototype.startFishing = function() {
_isFishing = true;
_playerCanMove = false;
$gamePlayer.requestBalloon(8);
$gamePlayer._moveSpeed = 0;
setTimeout(() => {
if (Math.random() < successChance && fishableItems.length > 0) {
var randomIndex = Math.floor(Math.random() * fishableItems.length);
var itemId = fishableItems[randomIndex];
var item = $dataItems[itemId] || $dataWeapons[itemId] || $dataArmors[itemId];
if (item) {
$gameParty.gainItem(item, 1);
_balloonActive = true;
$gamePlayer.requestBalloon(successBalloon);
AudioManager.playSe({ name: successSound, volume: 90, pitch: 100, pan: 0 });
}
} else {
_balloonActive = true;
$gamePlayer.requestBalloon(failBalloon);
}
}, waitTime);
};
Scene_Map.prototype.finishFishing = function() {
_isFishing = false;
_playerCanMove = true;
$gamePlayer._moveSpeed = 4;
};
var _Game_Player_canMove = Game_Player.prototype.canMove;
Game_Player.prototype.canMove = function() {
return _playerCanMove && _Game_Player_canMove.call(this);
};
})();
Nenhum comentário ainda.