じ☆ve冰风 发表于 2026-7-26 19:10:52

Non Kombatant XP

Non Kombatant XP

by Kyonides​

Introduction

This scriptlet allows you to prevent a certain hero from being present during battles.

This feature can also be disabled at any given time.

There are separate calls for party members and individual heroes. This lets you include or exclude any hero no matter if he has ever joined the party or has recently left it. How convenient that is, don't you agree?


The Script

                Ruby:       
# * Non Kombatant XP * #
#   Scripter : Kyonides Arkanthes
#   v0.3.0 - 2024-12-29

# This scriptlet allows you to prevent a certain hero from being present during
# battles. This feature can also be disabled at any given time.

# There are separate calls for party members and individual heroes. This lets
# you include or exclude any hero no matter if he has ever joined the party or
# has recently left it.

# Warning: Game_Party#actors method has been aliased.

# * Script Calls * #
# - Set Party Member as NPC - Disabling him during battles
# $game_party.actor_as_npc(Index)

# - Set Party Single Hero as NPC - Disabling him during battles
# $game_actors.is_npc = true

# - Set Party Member as Combatant - Enabling him during battles
# $game_party.npc_as_actor(Index)

# - Set Hero as Combatant - Enabling him during battles
# $game_actors.is_npc = false

class Game_BattleAction
alias :kyon_non_kombat_gm_bta_dc_rand_tgt_act :decide_random_target_for_actor
alias :kyon_non_kombat_gm_bta_dc_rand_tgt_act :decide_random_target_for_enemy
def decide_random_target_for_actor
    kyon_non_kombat_gm_bta_dc_rand_tgt_act
    clear unless @target_index
end

def decide_random_target_for_enemy
    kyon_non_kombat_gm_bta_dc_rand_tgt_act
    clear unless @target_index
end
end

class Game_Actor
attr_accessor :is_npc
end

class Game_Party
alias :kyon_non_kombat_gm_pty_rand_trgt_actor :random_target_actor
alias :actors_full :actors
def npcs
    @actors.select {|actor| actor.is_npc }
end

def actors_without_npcs
    @actors.reject {|actor| actor.is_npc }
end

def actors
    $game_temp.in_battle ? actors_without_npcs : actors_full
end

def actor_as_npc(n)
    @actors.is_npc = true
end

def npc_as_actor(n)
    @actors.is_npc = false
end

def random_target_actor(hp0=false)
    actor = kyon_non_kombat_gm_pty_rand_trgt_actor(hp0)
    return if !actor or actor.is_npc
    actor
end
end


Terms & Conditions

Free for use in non commercial games but you gotta own a legal copy of the engine.

Due credit is mandatory!

That's it!



本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/non-kombatant-xp.171532/
页: [1]
查看完整版本: Non Kombatant XP