Could someone please copy that section of the default code where an enemy decides which skill of the action pattern to use here?
I need to check how it works for a complex tutorial on action patterns I'm currently writing, and at the moment I can't search for the code myself.
No need to comment or explain it, I can read the code myself - I just have a problem finding and getting the correct part now.
Thanks
default javascript code for enemy skill selection
● ARCHIVED · READ-ONLY
-
-
Code:
Game_Enemy.prototype.meetsCondition = function(action) { var param1 = action.conditionParam1; var param2 = action.conditionParam2; switch (action.conditionType) { case 1: return this.meetsTurnCondition(param1, param2); case 2: return this.meetsHpCondition(param1, param2); case 3: return this.meetsMpCondition(param1, param2); case 4: return this.meetsStateCondition(param1); case 5: return this.meetsPartyLevelCondition(param1); case 6: return this.meetsSwitchCondition(param1); default: return true; } }; Game_Enemy.prototype.meetsTurnCondition = function(param1, param2) { var n = $gameTroop.turnCount(); if (param2 === 0) { return n === param1; } else { return n > 0 && n >= param1 && n % param2 === param1 % param2; } }; Game_Enemy.prototype.meetsHpCondition = function(param1, param2) { return this.hpRate() >= param1 && this.hpRate() <= param2; }; Game_Enemy.prototype.meetsMpCondition = function(param1, param2) { return this.mpRate() >= param1 && this.mpRate() <= param2; }; Game_Enemy.prototype.meetsStateCondition = function(param) { return this.isStateAffected(param); }; Game_Enemy.prototype.meetsPartyLevelCondition = function(param) { return $gameParty.highestLevel() >= param; }; Game_Enemy.prototype.meetsSwitchCondition = function(param) { return $gameSwitches.value(param); }; Game_Enemy.prototype.isActionValid = function(action) { return this.meetsCondition(action) && this.canUse($dataSkills[action.skillId]); }; Game_Enemy.prototype.selectAction = function(actionList, ratingZero) { var sum = actionList.reduce(function(r, a) { return r + a.rating - ratingZero; }, 0); if (sum > 0) { var value = Math.randomInt(sum); for (var i = 0; i < actionList.length; i++) { var action = actionList[i]; value -= action.rating - ratingZero; if (value < 0) { return action; } } } else { return null; } }; Game_Enemy.prototype.selectAllActions = function(actionList) { var ratingMax = Math.max.apply(null, actionList.map(function(a) { return a.rating; })); var ratingZero = ratingMax - 3; actionList = actionList.filter(function(a) { return a.rating > ratingZero; }); for (var i = 0; i < this.numActions(); i++) { this.action(i).setEnemyAction(this.selectAction(actionList, ratingZero)); } }; Game_Enemy.prototype.makeActions = function() { Game_Battler.prototype.makeActions.call(this); if (this.numActions() > 0) { var actionList = this.enemy().actions.filter(function(a) { return this.isActionValid(a); }, this); if (actionList.length > 0) { this.selectAllActions(actionList); } } this.setActionState('waiting'); }; -
Thanks
So basically weight mathematics with the skill of the highest rating getting a weigth of 3 and the mathematically next two ratings a weigth of 2 and 1.
I assumed as much, but with the limited examples of the help file I couldn't be sure, because they selected the examples to get simple percentages... -
This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.