BattleEnd XP
BattleEnd XPby Kyonides
Introduction
As many years passed, some RMXP scripts got lost in the sands of time for many reasons. This is why I thought that offering you another option for improving the Party's Victory processing stage was something very convenient for everybody.
What this scriptlet does is simple:
It rewrites the Scene_Battle#start_phase5 by subdividing it into several other methods that handle very specific stuff.
Then I added a Game Variable and a Game Switch to alter its normal behavior.
The Game Variable handles how much EXP your heroes will get.
[*]0 stands for EXP divided by Total Heroes
[*]1 stands for EXP divided by Total Heroes * 2
[*]2 stands for Full EXP
The Game Switch defines if the Party will get the whole list of Treasures.
The Party will only get up to 5 Treasures if the Game Switch is OFF.
Ruby:
# * BattleEnd XP * #
# Scripter : Kyonides Arkanthes
# 2023-06-16
# - Values for VAR_FULL_EXP Game Variable:
# 0 - EXP divided by Total Heroes
# 1 - EXP divided by Total Heroes * 2 (Punishment)
# 2 - Full EXP (Reward)
# - SWITCH_ALL_TREASURES Game Switch allows you to let the party get all of
# the treasures they have earned instead of just 5 of them.
module BattleEnd
VAR_FULL_EXP = 1
SWITCH_ALL_TREASURES = 1
end
class Scene_Battle
def start_phase5
@phase = 5
$game_system.me_play($game_system.battle_end_me)
$game_system.bgm_play($game_temp.map_bgm)
process_exp_gold_treasures
limit_treasures
distribute_treasures
distribute_exp_gold
end
def process_exp_gold_treasures
@exp = 0
@gold = 0
@treasures = []
for enemy in $game_troop.enemies
next if enemy.hidden
@exp += enemy.exp
@gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
@treasures << $data_items
elsif enemy.weapon_id > 0
@treasures << $data_weapons
elsif enemy.armor_id > 0
@treasures << $data_armors
end
end
end
end
def limit_treasures
return if $game_variables
@treasures = @treasures
end
def gain_treasure(item_id)
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
def distribute_treasures
@treasures.each {|treasure| gain_treasure(treasure.id) }
end
def distribute_exp(actor)
case $game_variables
when 0
@final_exp = @exp / $game_party.actors.size
actor.exp += @final_exp
when 1
@final_exp = @exp / $game_party.actors.size / 2
actor.exp += @final_exp
when 2
@final_exp = @exp
actor.exp += @exp
end
end
def distribute_exp_gold
$game_party.actors.each_with_index do |actor, i|
next if actor.cant_get_exp?
last_level = actor.level
distribute_exp(actor)
@status_window.level_up(i) if actor.level > last_level
end
$game_party.gain_gold(@gold)
@result_window = Window_BattleResult.new(@final_exp, @gold, @treasures)
@phase5_wait_count = 100
end
end
Terms & Conditions
Free for use in any game.
Due credit is mandatory.
That's it!
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
本贴来自国际rpgmaker官方论坛作者:kyonides处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/battleend-xp.158407/
页:
[1]