default javascript code for enemy skill selection

● ARCHIVED · READ-ONLY
Started by Andar 4 posts View original ↗
  1. 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
  2. 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');
    };
  3. 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...
  4. 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.