赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 2374 |
最后登录 | 2017-7-20 |
在线时间 | 58 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 58 小时
- 注册时间
- 2013-10-24
- 帖子
- 30
|
4楼
楼主 |
发表于 2013-11-2 20:14:36
|
只看该作者
本帖最后由 76213585 于 2013-11-2 11:27 编辑
完整脚本如下 用英文翻译确实蛋疼得紧
#============================================================================== # # ▼ Yanfly Engine Ace - TP Manager v1.02 # -- Last Updated: 2011.12.10 # -- Level: Hard # -- Requires: n/a # #============================================================================== $imported = {} if $imported.nil? $imported["YEA-TPManager"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2011.12.10 - Added <tp cost: x> notetag. # 2011.12.06 - Fixed an error in one of the formulas. # 2011.12.05 - Started Script and Finished. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # The TP system in RPG Maker VX Ace is actually rather limiting. A lot of the # system is hardcoded in giving Ace users very little control over how much TP # gain a battler can receive from particular actions and situations. This # script gives you the ability to adjust how much TP actors will acquire from # various actions, different TP modes, and letting players select and pick what # TP mode they want for each actor (akin to Final Fantasy X). # #============================================================================== # ▼ Instructions # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save. # # ----------------------------------------------------------------------------- # Actor Notetags - These notetags go in the actors notebox in the database. # ----------------------------------------------------------------------------- # <tp mode: x> # This sets the actor's default TP mode to x. If this tag isn't used, the # default TP mode will be set to whatever the module uses as default. # # <unlock tp: x> # <unlock tp: x, x> # This unlocks what TP modes the actor can use by default. If this tag isn't # used, the default unlocked TP modes will be whatever the module uses. # # ----------------------------------------------------------------------------- # Item Notetags - These notetags go in the item notebox in the database. # ----------------------------------------------------------------------------- # <unlock tp: x> # <unlock tp: x, x> # When this item is used upon an actor, that actor will learn TP Mode(s) x, # making it available to change in the TP Menu. # # ----------------------------------------------------------------------------- # Skill Notetags - These notetags go in the skill notebox in the database. # ----------------------------------------------------------------------------- # <unlock tp: x> # <unlock tp: x, x> # When this skill targets an actor, that actor will learn TP Mode(s) x thus, # making it available to change in the TP Menu. # # <learn unlock tp: x> # <learn unlock tp: x, x> # When an actor learns a skill with this notetag, that actor will learn # TP Mode(s) x making it available to change in the TP Menu. # # <tp cost: x> # When this notetag appears in a skill's notebox, the TP cost for that skill # becomes x. This notetag allows TP costs to surpass 100 TP, which is the max # TP cost in the RPG Maker VX Ace database editor. # # ----------------------------------------------------------------------------- # Enemy Notetags - These notetags go in the enemy notebox in the database. # ----------------------------------------------------------------------------- # <tp mode: x> # This sets the enemy's default TP mode to x. If this tag isn't used, the # default TP mode will be set to whatever the module uses as default. # # ----------------------------------------------------------------------------- # Script Calls - These commands are used with script calls. # ----------------------------------------------------------------------------- # change_tp_mode(x, y) # Replace x with the ID of the actor you want to change to the TP Mode y. This # will also unlock the TP mode for the actor, and make it available under the # skill menu for changing. # # unlock_tp_mode(x, y) # Replace x with the ID of the actor you want to learn for the TP Mode y. This # will cause the actor to learn the TP mode and have it accessible in the skill # menu for changing. # # remove_tp_mode(x, y) # Replace x with the ID of the actor you want to remove the TP Mode y. This # will cause the actor to forget the TP mode and no longer have it accessible # through the skill menu for changing. # # unlock_all_tp_modes(x) # Replace x with the ID of the actor you want to unlock all TP modes for. This # will make all the TP modes available to the actor from the skill menu. # # remove_all_tp_modes(x) # Removes all TP modes for actor x except for the actor's default TP mode. # This removes all TP modes from being available in the actor's skill menu. # #============================================================================== # ▼ Compatibility # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that # it will run with RPG Maker VX without adjusting. # #============================================================================== module YEA module TP_MANAGER #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - General TP Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Here, you can adjust global settings for TP including the maximum TP, # whether or not you want the player to change TP modes, and more. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- TP_LIMIT = 100 # Sets the maximum TP. Default: 100 DEFAULT_TP_MODE = 0 # This is the TP mode everybody starts with # unless changed through notetags. DEFAULT_UNLOCKS = [0, 1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,] # These modes are unlocked for all actors # unless changed through notetags. LOW_HP = 0.25 # Percent for what is considered low HP. LOW_MP = 0.25 # Percent for what is considered low MP. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - TP Mode Change Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Adjust the settings here for TP Mode Menu related items. Also, be sure # to bind the TP_MODE_SWITCH to a switch ID. If that switch is on, the # TP Mode item will appear in the skill menu. If off, it won't appear. # If you set it to 0, then TP mode will always be enabled. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- MENU_NAME = "性格" # The displayed name for the TP Menu. TP_MODE_SWITCH = 0 # Switch ID used for enabling TP Mode menu. DEFAULT_ENABLE = true # Enable switch by default? CHANGE_TP_RESET = true # Reset TP to 0 whenever a mode is changed? EQUIPPED_COLOUR = 17 # Window text colour used for equipped TP mode. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - TP Modes - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # TP modes have a number of things that can change the way actors gain TP. # Adjust the settings below to change how much gain and loss incurs per # each of the different actions. # # Setting Description # ------------------------------------------------------------------------- # - :name - Name that appears in the TP Mode menu. # - :icon - Icon used for the TP Mode menu. # - :description - Help window description. Use \n for line breaks. # - :preserve_tp - Carry over TP from last battle to next battle? # - :init_tp - TP at the start of each battle if no TP preservation. # - :regen_tp - TP regenerated each turn. Uses a formula. # - :take_hp_dmg - TP charged by receiving HP damage. Uses a formula. # - :deal_hp_dmg - TP gained by dealing HP damage. Uses a formula. # - :heal_hp_dmg - TP gained through healing HP damage. Uses a formula. # - :ally_hp_dmg - TP gained when allies take HP damage. Uses a formula. # - :take_mp_dmg - TP charged by receiving MP damage. Uses a formula. # - :deal_mp_dmg - TP gained by dealing MP damage. Uses a formula. # - :heal_mp_dmg - TP gained through healing MP damage. Uses a formula. # - :ally_mp_dmg - TP gained when allies take MP damage. Uses a formula. # - :deal_state - TP gained when user inflicts a state to a foe. Formula. # - :gain_state - TP gained when user gains a state from a foe. Formula. # - :kill_ally - TP gained when an ally is killed. Uses a formula. # - :kill_enemy - TP gained when killing an enemy. Uses a formula. # - :win_battle - TP gained whenever a battle is won. Uses a formula. # - :flee_battle - TP gained whenever party escapes. Uses a formula. # - :lose_battle - TP gained whenever a battle is lost. Uses a formula. # - :low_hp_turn - TP gained at the end of a turn with user at low HP. # - :low_mp_turn - TP gained at the end of a turn with user at low MP. # - :only_ally - TP gained when user is only ally alive. # - :evasion - TP gained when user evades an attack. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- TP_MODES ={ # TP Mode => { Settings } # ------------------------------------------------------------------------- 0 => { # This is the default mode. # :setting => Adjust settings as you see fit. :name => "苦行僧", :icon => 121, :description => "在等待或者受到攻击时增加TP.", :preserve_tp => false, :init_tp => "rand * 25", :regen_tp => "100 * trg", :take_hp_dmg => "50 * damage_rate * tcr", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 1 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "难友", :icon => 122, :description => "每当同伴受伤都增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "20 * tcr", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 2 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "勇者", :icon => 116, :description => "进攻和治疗时增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "[@result.hp_damage * 100 / mhp, 16].min * tcr", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 3 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "守护者", :icon => 112, :description => "治疗时增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "[@result.hp_damage * -100 / mhp, 16].min * tcr", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 4 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "中断者", :icon => 215, :description => "恢复MP损害受到MP损伤或者同伴受到损伤时提高TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "50 * damage_rate * tcr", :deal_mp_dmg => "[@result.mp_damage / 4, 16].min * tcr", :heal_mp_dmg => "0", :ally_mp_dmg => "20 * tcr", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 5 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "炼金术士", :icon => 193, :description => "恢复同伴MP时增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "[@result.mp_damage / -4, 16].min * tcr", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 6 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "杀手", :icon => 115, :description => "当同伴死亡时增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "25 * tcr", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 7 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "复仇者", :icon => 1, :description => "当同伴死亡时增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "50 * tcr", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 8 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "胜利者", :icon => 113, :description => "不管是否战斗都增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "20 * tcr", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 9 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "胆小鬼", :icon => 114, :description => "不管是否逃跑都增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "20 * tcr", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 10 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "狂人", :icon => 48, :description => "不管战斗结束后多少TP都增加.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "16 * tcr", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 11 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "调剂师", :icon => 49, :description => "不管战斗结束后多少MP都增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "16 * tcr", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 12 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "战略家", :icon => 10, :description => "每当使敌人状态受到攻击提高TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "16 * tcr", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 13 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "病人", :icon => 3, :description => "每当状态受到攻击提高TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "16 * tcr", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- 14 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "舞者", :icon => 12, :description => "每当成功地逃避攻击提高TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "0", :evasion => "16 * tcr", }, # Do not remove this. # ------------------------------------------------------------------------- 15 => { # New TP mode! # :setting => Adjust settings as you see fit. :name => "独行侠", :icon => 14, :description => "当只剩最后一人时增加TP.", :preserve_tp => true, :init_tp => "0", :regen_tp => "0", :take_hp_dmg => "0", :deal_hp_dmg => "0", :heal_hp_dmg => "0", :ally_hp_dmg => "0", :take_mp_dmg => "0", :deal_mp_dmg => "0", :heal_mp_dmg => "0", :ally_mp_dmg => "0", :deal_state => "0", :gain_state => "0", :kill_ally => "0", :kill_enemy => "0", :win_battle => "0", :flee_battle => "0", :lose_battle => "0", :low_hp_turn => "0", :low_mp_turn => "0", :only_alive => "16 * tcr", :evasion => "0", }, # Do not remove this. # ------------------------------------------------------------------------- } # Do not remove this. end # TP_MANAGER end # YEA #============================================================================== # ▼ Editting anything past this point may potentially result in causing # computer damage, incontinence, explosion of user's head, coma, death, and/or # halitosis so edit at your own risk. #============================================================================== module YEA module REGEXP module ACTOR TP_MODE = /<(?:TP_MODE|tp mode):[ ](\d+)>/i UNLOCK_TP = /<(?:UNLOCK_TP|unlock tp):[ ]*(\d+(?:\s*,\s*\d+)*)>/i end # ACTOR module ENEMY TP_MODE = /<(?:TP_MODE|tp mode):[ ](\d+)>/i end # ENEMY module BASEITEM UNLOCK_TP = /<(?:UNLOCK_TP|unlock tp):[ ]*(\d+(?:\s*,\s*\d+)*)>/i LEARN_TP = /<(?:LEARN_UNLOCK_TP|learn unlock tp):[ ]*(\d+(?:\s*,\s*\d+)*)>/i TP_COST = /<(?:TP_COST|tp cost):[ ](\d+)>/i end # BASEITEM end # REGEXP end # YEA #============================================================================== # ■ Switch #============================================================================== module Switch #-------------------------------------------------------------------------- # self.tp_mode #-------------------------------------------------------------------------- def self.tp_mode return true if YEA::TP_MANAGER::TP_MODE_SWITCH <= 0 return $game_switches[YEA::TP_MANAGER::TP_MODE_SWITCH] end #-------------------------------------------------------------------------- # self.tp_mode_set #-------------------------------------------------------------------------- def self.tp_mode_set(item) return if YEA::TP_MANAGER::TP_MODE_SWITCH <= 0 $game_switches[YEA::TP_MANAGER::TP_MODE_SWITCH] = item end end # Switch #============================================================================== # ■ Numeric #============================================================================== class Numeric #-------------------------------------------------------------------------- # new method: group_digits #-------------------------------------------------------------------------- unless $imported["YEA-CoreEngine"] def group; return self.to_s; end end # $imported["YEA-CoreEngine"] end # Numeric #============================================================================== # ■ DataManager #============================================================================== module DataManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class <<self; alias load_database_tpm load_database; end def self.load_database load_database_tpm load_notetags_tpm end #-------------------------------------------------------------------------- # new method: load_notetags_tpm #-------------------------------------------------------------------------- def self.load_notetags_tpm groups = [$data_actors, $data_enemies, $data_items, $data_skills] for group in groups for obj in group next if obj.nil? obj.load_notetags_tpm end end end #-------------------------------------------------------------------------- # alias method: setup_new_game #-------------------------------------------------------------------------- class <<self; alias setup_new_game_tpm setup_new_game; end def self.setup_new_game setup_new_game_tpm Switch.tp_mode_set(YEA::TP_MANAGER::DEFAULT_ENABLE) end end # DataManager #============================================================================== # ■ RPG::Actor #============================================================================== class RPG::Actor < RPG::BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :tp_mode attr_accessor :unlocked_tp_modes #-------------------------------------------------------------------------- # common cache: load_notetags_tpm #-------------------------------------------------------------------------- def load_notetags_tpm @tp_mode = nil @unlocked_tp_modes = [] #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEA::REGEXP::ACTOR::TP_MODE @tp_mode = $1.to_i when YEA::REGEXP::ACTOR::UNLOCK_TP $1.scan(/\d+/).each { |num| @unlocked_tp_modes.push(num.to_i) if num.to_i > 0 } #--- end } # self.note.split #--- @tp_mode = YEA::TP_MANAGER::DEFAULT_TP_MODE if @tp_mode.nil? if @unlocked_tp_modes.empty? @unlocked_tp_modes = YEA::TP_MANAGER::DEFAULT_UNLOCKS.clone end @unlocked_tp_modes.push(@tp_mode) if !@unlocked_tp_modes.include?(@tp_mode) @unlocked_tp_modes.uniq! @unlocked_tp_modes.sort! end end # RPG::Actor #============================================================================== # ■ RPG::Enemy #============================================================================== class RPG::Enemy < RPG::BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :tp_mode #-------------------------------------------------------------------------- # common cache: load_notetags_tpm #-------------------------------------------------------------------------- def load_notetags_tpm @tp_mode = YEA::TP_MANAGER::DEFAULT_TP_MODE #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEA::REGEXP::ENEMY::TP_MODE @tp_mode = $1.to_i #--- end } # self.note.split #--- end end # RPG::Enemy #============================================================================== # ■ RPG::BaseItem #============================================================================== class RPG::BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :unlocked_tp_modes attr_accessor :learn_tp_modes attr_accessor :tp_cost #-------------------------------------------------------------------------- # common cache: load_notetags_tpm #-------------------------------------------------------------------------- def load_notetags_tpm @unlocked_tp_modes = [] @learn_tp_modes = [] #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEA::REGEXP::BASEITEM::UNLOCK_TP $1.scan(/\d+/).each { |num| @unlocked_tp_modes.push(num.to_i) if num.to_i > 0 } when YEA::REGEXP::BASEITEM::LEARN_TP $1.scan(/\d+/).each { |num| @learn_tp_modes.push(num.to_i) if num.to_i > 0 } when YEA::REGEXP::BASEITEM::TP_COST next unless self.is_a?(RPG::Skill) @tp_cost = $1.to_i #--- end } # self.note.split #--- end end # RPG::BaseItem #============================================================================== # ■ BattleManager #============================================================================== module BattleManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class <<self; alias battle_end_tpm battle_end;end def self.battle_end(result) battle_end_tpm(result) case result when 0 for member in $game_party.alive_members member.tp += eval(member.tp_setting(:win_battle)) end when 1 for member in $game_party.alive_members member.tp += eval(member.tp_setting(:flee_battle)) end end end end # BattleManager #============================================================================== # ■ Game_BattlerBase #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :tp_mode attr_accessor :unlocked_tp_modes #-------------------------------------------------------------------------- # overwrite method: max_tp #-------------------------------------------------------------------------- def max_tp; return YEA::TP_MANAGER::TP_LIMIT; end #-------------------------------------------------------------------------- # anti-crash methods: max_tp, unlocked_tp_modes #-------------------------------------------------------------------------- def tp_mode; return 0; end def unlocked_tp_modes; return [0]; end #-------------------------------------------------------------------------- # new method: tp_setting #-------------------------------------------------------------------------- def tp_setting(setting) return YEA::TP_MANAGER::TP_MODES[tp_mode][setting] end #-------------------------------------------------------------------------- # alias method: preserve_tp? #-------------------------------------------------------------------------- alias game_battlerbase_preserve_tp_tpm preserve_tp? def preserve_tp? return true if tp_setting(:preserve_tp) return game_battlerbase_preserve_tp_tpm end end # Game_BattlerBase #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # overwrite method: init_tp #-------------------------------------------------------------------------- def init_tp self.tp = eval(tp_setting(:init_tp)) end #-------------------------------------------------------------------------- # overwrite method: charge_tp_by_damage #-------------------------------------------------------------------------- def charge_tp_by_damage(damage_rate) self.tp += eval(tp_setting(:take_hp_dmg)) end #-------------------------------------------------------------------------- # new method: charge_tp_by_mp_damage #-------------------------------------------------------------------------- def charge_tp_by_mp_damage(damage_rate) self.tp += eval(tp_setting(:take_mp_dmg)) end #-------------------------------------------------------------------------- # overwrite method: #-------------------------------------------------------------------------- def regenerate_tp self.tp += eval(tp_setting(:regen_tp)) self.tp += eval(tp_setting(:low_hp_turn)) if self.hp < tp_low_hp self.tp += eval(tp_setting(:low_mp_turn)) if self.mp < tp_low_mp if friends_unit.alive_members.size == 1 self.tp += eval(tp_setting(:only_alive)) end end #-------------------------------------------------------------------------- # new method: tp_low_hp #-------------------------------------------------------------------------- def tp_low_hp return self.mhp * YEA::TP_MANAGER::LOW_HP end #-------------------------------------------------------------------------- # new method: tp_low_mp #-------------------------------------------------------------------------- def tp_low_mp return self.mmp * YEA::TP_MANAGER::LOW_MP end #-------------------------------------------------------------------------- # alias method: execute_damage #-------------------------------------------------------------------------- alias game_battler_execute_damage_tpm execute_damage def execute_damage(user) game_battler_execute_damage_tpm(user) return unless $game_party.in_battle if @result.hp_damage > 0 user.tp += eval(user.tp_setting(:deal_hp_dmg)) gain_tp_ally_hp_damage elsif @result.hp_damage < 0 user.tp += eval(user.tp_setting(:heal_hp_dmg)) end if @result.mp_damage > 0 user.tp += eval(user.tp_setting(:deal_mp_dmg)) gain_tp_ally_mp_damage charge_tp_by_mp_damage(@result.mp_damage) elsif @result.mp_damage < 0 user.tp += eval(user.tp_setting(:heal_mp_dmg)) end user.tp += eval(user.tp_setting(:kill_enemy)) if self.hp == 0 gain_tp_kill_ally if self.hp == 0 end #-------------------------------------------------------------------------- # new method: gain_tp_ally_hp_damage #-------------------------------------------------------------------------- def gain_tp_ally_hp_damage for member in friends_unit.alive_members next if member == self member.tp += eval(member.tp_setting(:ally_hp_dmg)) end end #-------------------------------------------------------------------------- # new method: gain_tp_ally_mp_damage #-------------------------------------------------------------------------- def gain_tp_ally_mp_damage for member in friends_unit.alive_members next if member == self member.tp += eval(member.tp_setting(:ally_mp_dmg)) end end #-------------------------------------------------------------------------- # new method: gain_tp_kill_ally #-------------------------------------------------------------------------- def gain_tp_kill_ally for member in friends_unit.alive_members next if member == self member.tp += eval(member.tp_setting(:kill_ally)) end end #-------------------------------------------------------------------------- # alias method: item_effect_add_state #-------------------------------------------------------------------------- alias game_battler_item_effect_add_state_tpm item_effect_add_state def item_effect_add_state(user, item, effect) original_states = states.clone game_battler_item_effect_add_state_tpm(user, item, effect) return unless $game_party.in_battle if original_states != states && opponents_unit.members.include?(user) user.tp += eval(user.tp_setting(:deal_state)) self.tp += eval(tp_setting(:gain_state)) end end #-------------------------------------------------------------------------- # alias method: item_apply #-------------------------------------------------------------------------- alias game_battler_item_apply_tpm item_apply def item_apply(user, item) game_battler_item_apply_tpm(user, item) return unless $game_party.in_battle return if @result.hit? self.tp += eval(tp_setting(:evasion)) end #-------------------------------------------------------------------------- # alias method: item_test #-------------------------------------------------------------------------- alias game_battler_item_test_tpm item_test def item_test(user, item) return false if item.for_dead_friend? != dead? return true if item.unlocked_tp_modes.size > 0 return game_battler_item_test_tpm(user, item) end #-------------------------------------------------------------------------- # alias method: item_user_effect #-------------------------------------------------------------------------- alias game_battler_item_user_effect_tpm item_user_effect def item_user_effect(user, item) game_battler_item_user_effect_tpm(user, item) return unless actor? for mode in item.unlocked_tp_modes unlock_tp_mode(mode) end end end # Game_Battler #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # alias method: setup #-------------------------------------------------------------------------- alias game_actor_setup_tpm setup def setup(actor_id) game_actor_setup_tpm(actor_id) @tp_mode = actor.tp_mode @unlocked_tp_modes = actor.unlocked_tp_modes.clone end #-------------------------------------------------------------------------- # new method: tp_mode #-------------------------------------------------------------------------- def tp_mode @tp_mode = actor.tp_mode if @tp_mode.nil? return @tp_mode end #-------------------------------------------------------------------------- # new method: unlocked_tp_modes #-------------------------------------------------------------------------- def unlocked_tp_modes if @unlocked_tp_modes.empty? @unlocked_tp_modes = actor.unlocked_tp_modes.clone end return @unlocked_tp_modes.uniq end #-------------------------------------------------------------------------- # new method: change_tp_mode #-------------------------------------------------------------------------- def change_tp_mode(mode) @tp_mode = mode unlock_tp_mode(mode) self.tp = 0 if YEA::TP_MANAGER::CHANGE_TP_RESET end #-------------------------------------------------------------------------- # new method: unlock_tp_mode #-------------------------------------------------------------------------- def unlock_tp_mode(mode) if @unlocked_tp_modes.empty? @unlocked_tp_modes = actor.unlocked_tp_modes.clone end @unlocked_tp_modes.push(mode) @unlocked_tp_modes.uniq! @unlocked_tp_modes.sort! end #-------------------------------------------------------------------------- # new method: remove_tp_mode #-------------------------------------------------------------------------- def remove_tp_mode(mode) if @unlocked_tp_modes.empty? @unlocked_tp_modes = actor.unlocked_tp_modes.clone end @unlocked_tp_modes.delete(mode) @tp_mode = @unlocked_tp_modes[0] if @tp_mode == mode end #-------------------------------------------------------------------------- # alias method: learn_skill #-------------------------------------------------------------------------- alias game_actor_learn_skill_tpm learn_skill def learn_skill(skill_id) game_actor_learn_skill_tpm(skill_id) for mode in $data_skills[skill_id].learn_tp_modes unlock_tp_mode(mode) end end end # Game_Actor #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # new method: tp_mode #-------------------------------------------------------------------------- def tp_mode; return enemy.tp_mode; end end # Game_Enemy #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # new method: change_tp_mode #-------------------------------------------------------------------------- def change_tp_mode(actor_id, mode) $game_actors[actor_id].change_tp_mode(mode) end #-------------------------------------------------------------------------- # new method: unlock_tp_mode #-------------------------------------------------------------------------- def unlock_tp_mode(actor_id, mode) $game_actors[actor_id].unlock_tp_mode(mode) end #-------------------------------------------------------------------------- # new method: remove_tp_mode #-------------------------------------------------------------------------- def remove_tp_mode(actor_id, mode) $game_actors[actor_id].remove_tp_mode(mode) end #-------------------------------------------------------------------------- # new method: unlock_all_tp_modes #-------------------------------------------------------------------------- def unlock_all_tp_modes(actor_id) for key in YEA::TP_MANAGER::TP_MODES $game_actors[actor_id].unlock_tp_mode(key[0]) end end #-------------------------------------------------------------------------- # new method: remove_all_tp_modes #-------------------------------------------------------------------------- def remove_all_tp_modes(actor_id) for key in YEA::TP_MANAGER::TP_MODES next if key[0] == $data_actors[actor_id].tp_mode $game_actors[actor_id].remove_tp_mode(key[0]) end end end # Game_Interpreter #============================================================================== # ■ Window_SkillCommand #============================================================================== class Window_SkillCommand < Window_Command #-------------------------------------------------------------------------- # alias method: make_command_list #-------------------------------------------------------------------------- alias window_skillcommand_make_command_list_tpm make_command_list def make_command_list return unless @actor window_skillcommand_make_command_list_tpm end #-------------------------------------------------------------------------- # new method: add_tp_modes #-------------------------------------------------------------------------- def add_tp_modes return unless Switch.tp_mode add_command(YEA::TP_MANAGER::MENU_NAME, :tp_mode, true, :tp_mode) end end # Window_SkillCommand #============================================================================== # ■ Window_SkillList #============================================================================== class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # new method: tp_mode? #-------------------------------------------------------------------------- def tp_mode?; return @stype_id == :tp_mode; end #-------------------------------------------------------------------------- # new method: tp_mode #-------------------------------------------------------------------------- def tp_mode return nil unless tp_mode? return @data[index] end #-------------------------------------------------------------------------- # alias method: make_item_list #-------------------------------------------------------------------------- alias window_skilllist_make_item_list_tpm make_item_list def make_item_list if tp_mode? @data = @actor.unlocked_tp_modes @data.sort! else window_skilllist_make_item_list_tpm end end #-------------------------------------------------------------------------- # alias method: draw_item #-------------------------------------------------------------------------- alias window_skilllist_draw_item_tpm draw_item def draw_item(index) if tp_mode? draw_tp_mode_item(index) else window_skilllist_draw_item_tpm(index) end end #-------------------------------------------------------------------------- # new method: draw_tp_mode_item #-------------------------------------------------------------------------- def draw_tp_mode_item(index) tp_mode = @data[index] return unless YEA::TP_MANAGER::TP_MODES.include?(tp_mode) rect = item_rect(index) rect.width -= 4 icon = YEA::TP_MANAGER::TP_MODES[tp_mode][:icon] draw_icon(icon, rect.x, rect.y) change_color(tp_mode_colour(tp_mode)) name = YEA::TP_MANAGER::TP_MODES[tp_mode][:name] draw_text(rect.x+24, rect.y, rect.width-24, line_height, name) end #-------------------------------------------------------------------------- # new method: tp_mode_colour #-------------------------------------------------------------------------- def tp_mode_colour(mode) if @actor.tp_mode == mode return text_color(YEA::TP_MANAGER::EQUIPPED_COLOUR) else return normal_color end end #-------------------------------------------------------------------------- # alias method: current_item_enabled? #-------------------------------------------------------------------------- alias window_skilllist_current_item_enabled current_item_enabled? def current_item_enabled? if tp_mode? return @actor.tp_mode != @data[index] else return window_skilllist_current_item_enabled end end #-------------------------------------------------------------------------- # alias method: update_help #-------------------------------------------------------------------------- alias window_skilllist_update_help_tpm update_help def update_help if tp_mode? tp_mode = @data[index] if YEA::TP_MANAGER::TP_MODES.include?(tp_mode) text = YEA::TP_MANAGER::TP_MODES[tp_mode][:description] else text = "" end @help_window.set_text(text) else window_skilllist_update_help_tpm end end end # Window_SkillList #============================================================================== # ■ Scene_Skill #============================================================================== class Scene_Skill < Scene_ItemBase #-------------------------------------------------------------------------- # alias method: create_command_window #-------------------------------------------------------------------------- alias scene_skill_create_command_window_tpm create_command_window def create_command_window scene_skill_create_command_window_tpm @command_window.set_handler(:tp_mode, method(:command_skill)) end #-------------------------------------------------------------------------- # alias method: on_item_ok #-------------------------------------------------------------------------- alias scene_skill_on_item_ok_tpm on_item_ok def on_item_ok if @item_window.tp_mode? Sound.play_equip user.change_tp_mode(@item_window.tp_mode) @status_window.refresh @item_window.refresh @item_window.activate else scene_skill_on_item_ok_tpm end end end # Scene_Skill #============================================================================== # # ▼ End of File # #==============================================================================
#==============================================================================
#
# ▼ Yanfly Engine Ace - TP Manager v1.02
# -- Last Updated: 2011.12.10
# -- Level: Hard
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-TPManager"] = true
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.10 - Added <tp cost: x> notetag.
# 2011.12.06 - Fixed an error in one of the formulas.
# 2011.12.05 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# The TP system in RPG Maker VX Ace is actually rather limiting. A lot of the
# system is hardcoded in giving Ace users very little control over how much TP
# gain a battler can receive from particular actions and situations. This
# script gives you the ability to adjust how much TP actors will acquire from
# various actions, different TP modes, and letting players select and pick what
# TP mode they want for each actor (akin to Final Fantasy X).
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Actor Notetags - These notetags go in the actors notebox in the database.
# -----------------------------------------------------------------------------
# <tp mode: x>
# This sets the actor's default TP mode to x. If this tag isn't used, the
# default TP mode will be set to whatever the module uses as default.
#
# <unlock tp: x>
# <unlock tp: x, x>
# This unlocks what TP modes the actor can use by default. If this tag isn't
# used, the default unlocked TP modes will be whatever the module uses.
#
# -----------------------------------------------------------------------------
# Item Notetags - These notetags go in the item notebox in the database.
# -----------------------------------------------------------------------------
# <unlock tp: x>
# <unlock tp: x, x>
# When this item is used upon an actor, that actor will learn TP Mode(s) x,
# making it available to change in the TP Menu.
#
# -----------------------------------------------------------------------------
# Skill Notetags - These notetags go in the skill notebox in the database.
# -----------------------------------------------------------------------------
# <unlock tp: x>
# <unlock tp: x, x>
# When this skill targets an actor, that actor will learn TP Mode(s) x thus,
# making it available to change in the TP Menu.
#
# <learn unlock tp: x>
# <learn unlock tp: x, x>
# When an actor learns a skill with this notetag, that actor will learn
# TP Mode(s) x making it available to change in the TP Menu.
#
# <tp cost: x>
# When this notetag appears in a skill's notebox, the TP cost for that skill
# becomes x. This notetag allows TP costs to surpass 100 TP, which is the max
# TP cost in the RPG Maker VX Ace database editor.
#
# -----------------------------------------------------------------------------
# Enemy Notetags - These notetags go in the enemy notebox in the database.
# -----------------------------------------------------------------------------
# <tp mode: x>
# This sets the enemy's default TP mode to x. If this tag isn't used, the
# default TP mode will be set to whatever the module uses as default.
#
# -----------------------------------------------------------------------------
# Script Calls - These commands are used with script calls.
# -----------------------------------------------------------------------------
# change_tp_mode(x, y)
# Replace x with the ID of the actor you want to change to the TP Mode y. This
# will also unlock the TP mode for the actor, and make it available under the
# skill menu for changing.
#
# unlock_tp_mode(x, y)
# Replace x with the ID of the actor you want to learn for the TP Mode y. This
# will cause the actor to learn the TP mode and have it accessible in the skill
# menu for changing.
#
# remove_tp_mode(x, y)
# Replace x with the ID of the actor you want to remove the TP Mode y. This
# will cause the actor to forget the TP mode and no longer have it accessible
# through the skill menu for changing.
#
# unlock_all_tp_modes(x)
# Replace x with the ID of the actor you want to unlock all TP modes for. This
# will make all the TP modes available to the actor from the skill menu.
#
# remove_all_tp_modes(x)
# Removes all TP modes for actor x except for the actor's default TP mode.
# This removes all TP modes from being available in the actor's skill menu.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
module YEA
module TP_MANAGER
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - General TP Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Here, you can adjust global settings for TP including the maximum TP,
# whether or not you want the player to change TP modes, and more.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TP_LIMIT = 100 # Sets the maximum TP. Default: 100
DEFAULT_TP_MODE = 0 # This is the TP mode everybody starts with
# unless changed through notetags.
DEFAULT_UNLOCKS = [0, 1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,]
# These modes are unlocked for all actors
# unless changed through notetags.
LOW_HP = 0.25 # Percent for what is considered low HP.
LOW_MP = 0.25 # Percent for what is considered low MP.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - TP Mode Change Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Adjust the settings here for TP Mode Menu related items. Also, be sure
# to bind the TP_MODE_SWITCH to a switch ID. If that switch is on, the
# TP Mode item will appear in the skill menu. If off, it won't appear.
# If you set it to 0, then TP mode will always be enabled.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
MENU_NAME = "性格" # The displayed name for the TP Menu.
TP_MODE_SWITCH = 0 # Switch ID used for enabling TP Mode menu.
DEFAULT_ENABLE = true # Enable switch by default?
CHANGE_TP_RESET = true # Reset TP to 0 whenever a mode is changed?
EQUIPPED_COLOUR = 17 # Window text colour used for equipped TP mode.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - TP Modes -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# TP modes have a number of things that can change the way actors gain TP.
# Adjust the settings below to change how much gain and loss incurs per
# each of the different actions.
#
# Setting Description
# -------------------------------------------------------------------------
# - :name - Name that appears in the TP Mode menu.
# - :icon - Icon used for the TP Mode menu.
# - :description - Help window description. Use \n for line breaks.
# - :preserve_tp - Carry over TP from last battle to next battle?
# - :init_tp - TP at the start of each battle if no TP preservation.
# - :regen_tp - TP regenerated each turn. Uses a formula.
# - :take_hp_dmg - TP charged by receiving HP damage. Uses a formula.
# - :deal_hp_dmg - TP gained by dealing HP damage. Uses a formula.
# - :heal_hp_dmg - TP gained through healing HP damage. Uses a formula.
# - :ally_hp_dmg - TP gained when allies take HP damage. Uses a formula.
# - :take_mp_dmg - TP charged by receiving MP damage. Uses a formula.
# - :deal_mp_dmg - TP gained by dealing MP damage. Uses a formula.
# - :heal_mp_dmg - TP gained through healing MP damage. Uses a formula.
# - :ally_mp_dmg - TP gained when allies take MP damage. Uses a formula.
# - :deal_state - TP gained when user inflicts a state to a foe. Formula.
# - :gain_state - TP gained when user gains a state from a foe. Formula.
# - :kill_ally - TP gained when an ally is killed. Uses a formula.
# - :kill_enemy - TP gained when killing an enemy. Uses a formula.
# - :win_battle - TP gained whenever a battle is won. Uses a formula.
# - :flee_battle - TP gained whenever party escapes. Uses a formula.
# - :lose_battle - TP gained whenever a battle is lost. Uses a formula.
# - :low_hp_turn - TP gained at the end of a turn with user at low HP.
# - :low_mp_turn - TP gained at the end of a turn with user at low MP.
# - :only_ally - TP gained when user is only ally alive.
# - :evasion - TP gained when user evades an attack.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TP_MODES ={
# TP Mode => { Settings }
# -------------------------------------------------------------------------
0 => { # This is the default mode.
# :setting => Adjust settings as you see fit.
:name => "苦行僧",
:icon => 121,
:description => "在等待或者受到攻击时增加TP.",
:preserve_tp => false,
:init_tp => "rand * 25",
:regen_tp => "100 * trg",
:take_hp_dmg => "50 * damage_rate * tcr",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
1 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "难友",
:icon => 122,
:description => "每当同伴受伤都增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "20 * tcr",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
2 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "勇者",
:icon => 116,
:description => "进攻和治疗时增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "[@result.hp_damage * 100 / mhp, 16].min * tcr",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
3 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "守护者",
:icon => 112,
:description => "治疗时增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "[@result.hp_damage * -100 / mhp, 16].min * tcr",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
4 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "中断者",
:icon => 215,
:description => "恢复MP损害受到MP损伤或者同伴受到损伤时提高TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "50 * damage_rate * tcr",
:deal_mp_dmg => "[@result.mp_damage / 4, 16].min * tcr",
:heal_mp_dmg => "0",
:ally_mp_dmg => "20 * tcr",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
5 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "炼金术士",
:icon => 193,
:description => "恢复同伴MP时增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "[@result.mp_damage / -4, 16].min * tcr",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
6 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "杀手",
:icon => 115,
:description => "当同伴死亡时增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "25 * tcr",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
7 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "复仇者",
:icon => 1,
:description => "当同伴死亡时增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "50 * tcr",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
8 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "胜利者",
:icon => 113,
:description => "不管是否战斗都增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "20 * tcr",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
9 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "胆小鬼",
:icon => 114,
:description => "不管是否逃跑都增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "20 * tcr",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
10 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "狂人",
:icon => 48,
:description => "不管战斗结束后多少TP都增加.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "16 * tcr",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
11 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "调剂师",
:icon => 49,
:description => "不管战斗结束后多少MP都增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "16 * tcr",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
12 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "战略家",
:icon => 10,
:description => "每当使敌人状态受到攻击提高TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "16 * tcr",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
13 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "病人",
:icon => 3,
:description => "每当状态受到攻击提高TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "16 * tcr",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
14 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "舞者",
:icon => 12,
:description => "每当成功地逃避攻击提高TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "0",
:evasion => "16 * tcr",
}, # Do not remove this.
# -------------------------------------------------------------------------
15 => { # New TP mode!
# :setting => Adjust settings as you see fit.
:name => "独行侠",
:icon => 14,
:description => "当只剩最后一人时增加TP.",
:preserve_tp => true,
:init_tp => "0",
:regen_tp => "0",
:take_hp_dmg => "0",
:deal_hp_dmg => "0",
:heal_hp_dmg => "0",
:ally_hp_dmg => "0",
:take_mp_dmg => "0",
:deal_mp_dmg => "0",
:heal_mp_dmg => "0",
:ally_mp_dmg => "0",
:deal_state => "0",
:gain_state => "0",
:kill_ally => "0",
:kill_enemy => "0",
:win_battle => "0",
:flee_battle => "0",
:lose_battle => "0",
:low_hp_turn => "0",
:low_mp_turn => "0",
:only_alive => "16 * tcr",
:evasion => "0",
}, # Do not remove this.
# -------------------------------------------------------------------------
} # Do not remove this.
end # TP_MANAGER
end # YEA
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
module YEA
module REGEXP
module ACTOR
TP_MODE = /<(?:TP_MODE|tp mode):[ ](\d+)>/i
UNLOCK_TP = /<(?:UNLOCK_TP|unlock tp):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
end # ACTOR
module ENEMY
TP_MODE = /<(?:TP_MODE|tp mode):[ ](\d+)>/i
end # ENEMY
module BASEITEM
UNLOCK_TP = /<(?:UNLOCK_TP|unlock tp):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
LEARN_TP = /<(?:LEARN_UNLOCK_TP|learn unlock tp):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
TP_COST = /<(?:TP_COST|tp cost):[ ](\d+)>/i
end # BASEITEM
end # REGEXP
end # YEA
#==============================================================================
# ■ Switch
#==============================================================================
module Switch
#--------------------------------------------------------------------------
# self.tp_mode
#--------------------------------------------------------------------------
def self.tp_mode
return true if YEA::TP_MANAGER::TP_MODE_SWITCH <= 0
return $game_switches[YEA::TP_MANAGER::TP_MODE_SWITCH]
end
#--------------------------------------------------------------------------
# self.tp_mode_set
#--------------------------------------------------------------------------
def self.tp_mode_set(item)
return if YEA::TP_MANAGER::TP_MODE_SWITCH <= 0
$game_switches[YEA::TP_MANAGER::TP_MODE_SWITCH] = item
end
end # Switch
#==============================================================================
# ■ Numeric
#==============================================================================
class Numeric
#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]
end # Numeric
#==============================================================================
# ■ DataManager
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
class <<self; alias load_database_tpm load_database; end
def self.load_database
load_database_tpm
load_notetags_tpm
end
#--------------------------------------------------------------------------
# new method: load_notetags_tpm
#--------------------------------------------------------------------------
def self.load_notetags_tpm
groups = [$data_actors, $data_enemies, $data_items, $data_skills]
for group in groups
for obj in group
next if obj.nil?
obj.load_notetags_tpm
end
end
end
#--------------------------------------------------------------------------
# alias method: setup_new_game
#--------------------------------------------------------------------------
class <<self; alias setup_new_game_tpm setup_new_game; end
def self.setup_new_game
setup_new_game_tpm
Switch.tp_mode_set(YEA::TP_MANAGER::DEFAULT_ENABLE)
end
end # DataManager
#==============================================================================
# ■ RPG::Actor
#==============================================================================
class RPG::Actor < RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :tp_mode
attr_accessor :unlocked_tp_modes
#--------------------------------------------------------------------------
# common cache: load_notetags_tpm
#--------------------------------------------------------------------------
def load_notetags_tpm
@tp_mode = nil
@unlocked_tp_modes = []
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::ACTOR::TP_MODE
@tp_mode = $1.to_i
when YEA::REGEXP::ACTOR::UNLOCK_TP
$1.scan(/\d+/).each { |num|
@unlocked_tp_modes.push(num.to_i) if num.to_i > 0 }
#---
end
} # self.note.split
#---
@tp_mode = YEA::TP_MANAGER::DEFAULT_TP_MODE if @tp_mode.nil?
if @unlocked_tp_modes.empty?
@unlocked_tp_modes = YEA::TP_MANAGER::DEFAULT_UNLOCKS.clone
end
@unlocked_tp_modes.push(@tp_mode) if !@unlocked_tp_modes.include?(@tp_mode)
@unlocked_tp_modes.uniq!
@unlocked_tp_modes.sort!
end
end # RPG::Actor
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
class RPG::Enemy < RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :tp_mode
#--------------------------------------------------------------------------
# common cache: load_notetags_tpm
#--------------------------------------------------------------------------
def load_notetags_tpm
@tp_mode = YEA::TP_MANAGER::DEFAULT_TP_MODE
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::ENEMY::TP_MODE
@tp_mode = $1.to_i
#---
end
} # self.note.split
#---
end
end # RPG::Enemy
#==============================================================================
# ■ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :unlocked_tp_modes
attr_accessor :learn_tp_modes
attr_accessor :tp_cost
#--------------------------------------------------------------------------
# common cache: load_notetags_tpm
#--------------------------------------------------------------------------
def load_notetags_tpm
@unlocked_tp_modes = []
@learn_tp_modes = []
#---
self.note.split(/[\r\n]+/).each { |line|
case line
#---
when YEA::REGEXP::BASEITEM::UNLOCK_TP
$1.scan(/\d+/).each { |num|
@unlocked_tp_modes.push(num.to_i) if num.to_i > 0 }
when YEA::REGEXP::BASEITEM::LEARN_TP
$1.scan(/\d+/).each { |num|
@learn_tp_modes.push(num.to_i) if num.to_i > 0 }
when YEA::REGEXP::BASEITEM::TP_COST
next unless self.is_a?(RPG::Skill)
@tp_cost = $1.to_i
#---
end
} # self.note.split
#---
end
end # RPG::BaseItem
#==============================================================================
# ■ BattleManager
#==============================================================================
module BattleManager
#--------------------------------------------------------------------------
# alias method: load_database
#--------------------------------------------------------------------------
class <<self; alias battle_end_tpm battle_end;end
def self.battle_end(result)
battle_end_tpm(result)
case result
when 0
for member in $game_party.alive_members
member.tp += eval(member.tp_setting(:win_battle))
end
when 1
for member in $game_party.alive_members
member.tp += eval(member.tp_setting(:flee_battle))
end
end
end
end # BattleManager
#==============================================================================
# ■ Game_BattlerBase
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :tp_mode
attr_accessor :unlocked_tp_modes
#--------------------------------------------------------------------------
# overwrite method: max_tp
#--------------------------------------------------------------------------
def max_tp; return YEA::TP_MANAGER::TP_LIMIT; end
#--------------------------------------------------------------------------
# anti-crash methods: max_tp, unlocked_tp_modes
#--------------------------------------------------------------------------
def tp_mode; return 0; end
def unlocked_tp_modes; return [0]; end
#--------------------------------------------------------------------------
# new method: tp_setting
#--------------------------------------------------------------------------
def tp_setting(setting)
return YEA::TP_MANAGER::TP_MODES[tp_mode][setting]
end
#--------------------------------------------------------------------------
# alias method: preserve_tp?
#--------------------------------------------------------------------------
alias game_battlerbase_preserve_tp_tpm preserve_tp?
def preserve_tp?
return true if tp_setting(:preserve_tp)
return game_battlerbase_preserve_tp_tpm
end
end # Game_BattlerBase
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# overwrite method: init_tp
#--------------------------------------------------------------------------
def init_tp
self.tp = eval(tp_setting(:init_tp))
end
#--------------------------------------------------------------------------
# overwrite method: charge_tp_by_damage
#--------------------------------------------------------------------------
def charge_tp_by_damage(damage_rate)
self.tp += eval(tp_setting(:take_hp_dmg))
end
#--------------------------------------------------------------------------
# new method: charge_tp_by_mp_damage
#--------------------------------------------------------------------------
def charge_tp_by_mp_damage(damage_rate)
self.tp += eval(tp_setting(:take_mp_dmg))
end
#--------------------------------------------------------------------------
# overwrite method:
#--------------------------------------------------------------------------
def regenerate_tp
self.tp += eval(tp_setting(:regen_tp))
self.tp += eval(tp_setting(:low_hp_turn)) if self.hp < tp_low_hp
self.tp += eval(tp_setting(:low_mp_turn)) if self.mp < tp_low_mp
if friends_unit.alive_members.size == 1
self.tp += eval(tp_setting(:only_alive))
end
end
#--------------------------------------------------------------------------
# new method: tp_low_hp
#--------------------------------------------------------------------------
def tp_low_hp
return self.mhp * YEA::TP_MANAGER::LOW_HP
end
#--------------------------------------------------------------------------
# new method: tp_low_mp
#--------------------------------------------------------------------------
def tp_low_mp
return self.mmp * YEA::TP_MANAGER::LOW_MP
end
#--------------------------------------------------------------------------
# alias method: execute_damage
#--------------------------------------------------------------------------
alias game_battler_execute_damage_tpm execute_damage
def execute_damage(user)
game_battler_execute_damage_tpm(user)
return unless $game_party.in_battle
if @result.hp_damage > 0
user.tp += eval(user.tp_setting(:deal_hp_dmg))
gain_tp_ally_hp_damage
elsif @result.hp_damage < 0
user.tp += eval(user.tp_setting(:heal_hp_dmg))
end
if @result.mp_damage > 0
user.tp += eval(user.tp_setting(:deal_mp_dmg))
gain_tp_ally_mp_damage
charge_tp_by_mp_damage(@result.mp_damage)
elsif @result.mp_damage < 0
user.tp += eval(user.tp_setting(:heal_mp_dmg))
end
user.tp += eval(user.tp_setting(:kill_enemy)) if self.hp == 0
gain_tp_kill_ally if self.hp == 0
end
#--------------------------------------------------------------------------
# new method: gain_tp_ally_hp_damage
#--------------------------------------------------------------------------
def gain_tp_ally_hp_damage
for member in friends_unit.alive_members
next if member == self
member.tp += eval(member.tp_setting(:ally_hp_dmg))
end
end
#--------------------------------------------------------------------------
# new method: gain_tp_ally_mp_damage
#--------------------------------------------------------------------------
def gain_tp_ally_mp_damage
for member in friends_unit.alive_members
next if member == self
member.tp += eval(member.tp_setting(:ally_mp_dmg))
end
end
#--------------------------------------------------------------------------
# new method: gain_tp_kill_ally
#--------------------------------------------------------------------------
def gain_tp_kill_ally
for member in friends_unit.alive_members
next if member == self
member.tp += eval(member.tp_setting(:kill_ally))
end
end
#--------------------------------------------------------------------------
# alias method: item_effect_add_state
#--------------------------------------------------------------------------
alias game_battler_item_effect_add_state_tpm item_effect_add_state
def item_effect_add_state(user, item, effect)
original_states = states.clone
game_battler_item_effect_add_state_tpm(user, item, effect)
return unless $game_party.in_battle
if original_states != states && opponents_unit.members.include?(user)
user.tp += eval(user.tp_setting(:deal_state))
self.tp += eval(tp_setting(:gain_state))
end
end
#--------------------------------------------------------------------------
# alias method: item_apply
#--------------------------------------------------------------------------
alias game_battler_item_apply_tpm item_apply
def item_apply(user, item)
game_battler_item_apply_tpm(user, item)
return unless $game_party.in_battle
return if @result.hit?
self.tp += eval(tp_setting(:evasion))
end
#--------------------------------------------------------------------------
# alias method: item_test
#--------------------------------------------------------------------------
alias game_battler_item_test_tpm item_test
def item_test(user, item)
return false if item.for_dead_friend? != dead?
return true if item.unlocked_tp_modes.size > 0
return game_battler_item_test_tpm(user, item)
end
#--------------------------------------------------------------------------
# alias method: item_user_effect
#--------------------------------------------------------------------------
alias game_battler_item_user_effect_tpm item_user_effect
def item_user_effect(user, item)
game_battler_item_user_effect_tpm(user, item)
return unless actor?
for mode in item.unlocked_tp_modes
unlock_tp_mode(mode)
end
end
end # Game_Battler
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# alias method: setup
#--------------------------------------------------------------------------
alias game_actor_setup_tpm setup
def setup(actor_id)
game_actor_setup_tpm(actor_id)
@tp_mode = actor.tp_mode
@unlocked_tp_modes = actor.unlocked_tp_modes.clone
end
#--------------------------------------------------------------------------
# new method: tp_mode
#--------------------------------------------------------------------------
def tp_mode
@tp_mode = actor.tp_mode if @tp_mode.nil?
return @tp_mode
end
#--------------------------------------------------------------------------
# new method: unlocked_tp_modes
#--------------------------------------------------------------------------
def unlocked_tp_modes
if @unlocked_tp_modes.empty?
@unlocked_tp_modes = actor.unlocked_tp_modes.clone
end
return @unlocked_tp_modes.uniq
end
#--------------------------------------------------------------------------
# new method: change_tp_mode
#--------------------------------------------------------------------------
def change_tp_mode(mode)
@tp_mode = mode
unlock_tp_mode(mode)
self.tp = 0 if YEA::TP_MANAGER::CHANGE_TP_RESET
end
#--------------------------------------------------------------------------
# new method: unlock_tp_mode
#--------------------------------------------------------------------------
def unlock_tp_mode(mode)
if @unlocked_tp_modes.empty?
@unlocked_tp_modes = actor.unlocked_tp_modes.clone
end
@unlocked_tp_modes.push(mode)
@unlocked_tp_modes.uniq!
@unlocked_tp_modes.sort!
end
#--------------------------------------------------------------------------
# new method: remove_tp_mode
#--------------------------------------------------------------------------
def remove_tp_mode(mode)
if @unlocked_tp_modes.empty?
@unlocked_tp_modes = actor.unlocked_tp_modes.clone
end
@unlocked_tp_modes.delete(mode)
@tp_mode = @unlocked_tp_modes[0] if @tp_mode == mode
end
#--------------------------------------------------------------------------
# alias method: learn_skill
#--------------------------------------------------------------------------
alias game_actor_learn_skill_tpm learn_skill
def learn_skill(skill_id)
game_actor_learn_skill_tpm(skill_id)
for mode in $data_skills[skill_id].learn_tp_modes
unlock_tp_mode(mode)
end
end
end # Game_Actor
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# new method: tp_mode
#--------------------------------------------------------------------------
def tp_mode; return enemy.tp_mode; end
end # Game_Enemy
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# new method: change_tp_mode
#--------------------------------------------------------------------------
def change_tp_mode(actor_id, mode)
$game_actors[actor_id].change_tp_mode(mode)
end
#--------------------------------------------------------------------------
# new method: unlock_tp_mode
#--------------------------------------------------------------------------
def unlock_tp_mode(actor_id, mode)
$game_actors[actor_id].unlock_tp_mode(mode)
end
#--------------------------------------------------------------------------
# new method: remove_tp_mode
#--------------------------------------------------------------------------
def remove_tp_mode(actor_id, mode)
$game_actors[actor_id].remove_tp_mode(mode)
end
#--------------------------------------------------------------------------
# new method: unlock_all_tp_modes
#--------------------------------------------------------------------------
def unlock_all_tp_modes(actor_id)
for key in YEA::TP_MANAGER::TP_MODES
$game_actors[actor_id].unlock_tp_mode(key[0])
end
end
#--------------------------------------------------------------------------
# new method: remove_all_tp_modes
#--------------------------------------------------------------------------
def remove_all_tp_modes(actor_id)
for key in YEA::TP_MANAGER::TP_MODES
next if key[0] == $data_actors[actor_id].tp_mode
$game_actors[actor_id].remove_tp_mode(key[0])
end
end
end # Game_Interpreter
#==============================================================================
# ■ Window_SkillCommand
#==============================================================================
class Window_SkillCommand < Window_Command
#--------------------------------------------------------------------------
# alias method: make_command_list
#--------------------------------------------------------------------------
alias window_skillcommand_make_command_list_tpm make_command_list
def make_command_list
return unless @actor
window_skillcommand_make_command_list_tpm
end
#--------------------------------------------------------------------------
# new method: add_tp_modes
#--------------------------------------------------------------------------
def add_tp_modes
return unless Switch.tp_mode
add_command(YEA::TP_MANAGER::MENU_NAME, :tp_mode, true, :tp_mode)
end
end # Window_SkillCommand
#==============================================================================
# ■ Window_SkillList
#==============================================================================
class Window_SkillList < Window_Selectable
#--------------------------------------------------------------------------
# new method: tp_mode?
#--------------------------------------------------------------------------
def tp_mode?; return @stype_id == :tp_mode; end
#--------------------------------------------------------------------------
# new method: tp_mode
#--------------------------------------------------------------------------
def tp_mode
return nil unless tp_mode?
return @data[index]
end
#--------------------------------------------------------------------------
# alias method: make_item_list
#--------------------------------------------------------------------------
alias window_skilllist_make_item_list_tpm make_item_list
def make_item_list
if tp_mode?
@data = @actor.unlocked_tp_modes
@data.sort!
else
window_skilllist_make_item_list_tpm
end
end
#--------------------------------------------------------------------------
# alias method: draw_item
#--------------------------------------------------------------------------
alias window_skilllist_draw_item_tpm draw_item
def draw_item(index)
if tp_mode?
draw_tp_mode_item(index)
else
window_skilllist_draw_item_tpm(index)
end
end
#--------------------------------------------------------------------------
# new method: draw_tp_mode_item
#--------------------------------------------------------------------------
def draw_tp_mode_item(index)
tp_mode = @data[index]
return unless YEA::TP_MANAGER::TP_MODES.include?(tp_mode)
rect = item_rect(index)
rect.width -= 4
icon = YEA::TP_MANAGER::TP_MODES[tp_mode][:icon]
draw_icon(icon, rect.x, rect.y)
change_color(tp_mode_colour(tp_mode))
name = YEA::TP_MANAGER::TP_MODES[tp_mode][:name]
draw_text(rect.x+24, rect.y, rect.width-24, line_height, name)
end
#--------------------------------------------------------------------------
# new method: tp_mode_colour
#--------------------------------------------------------------------------
def tp_mode_colour(mode)
if @actor.tp_mode == mode
return text_color(YEA::TP_MANAGER::EQUIPPED_COLOUR)
else
return normal_color
end
end
#--------------------------------------------------------------------------
# alias method: current_item_enabled?
#--------------------------------------------------------------------------
alias window_skilllist_current_item_enabled current_item_enabled?
def current_item_enabled?
if tp_mode?
return @actor.tp_mode != @data[index]
else
return window_skilllist_current_item_enabled
end
end
#--------------------------------------------------------------------------
# alias method: update_help
#--------------------------------------------------------------------------
alias window_skilllist_update_help_tpm update_help
def update_help
if tp_mode?
tp_mode = @data[index]
if YEA::TP_MANAGER::TP_MODES.include?(tp_mode)
text = YEA::TP_MANAGER::TP_MODES[tp_mode][:description]
else
text = ""
end
@help_window.set_text(text)
else
window_skilllist_update_help_tpm
end
end
end # Window_SkillList
#==============================================================================
# ■ Scene_Skill
#==============================================================================
class Scene_Skill < Scene_ItemBase
#--------------------------------------------------------------------------
# alias method: create_command_window
#--------------------------------------------------------------------------
alias scene_skill_create_command_window_tpm create_command_window
def create_command_window
scene_skill_create_command_window_tpm
@command_window.set_handler(:tp_mode, method(:command_skill))
end
#--------------------------------------------------------------------------
# alias method: on_item_ok
#--------------------------------------------------------------------------
alias scene_skill_on_item_ok_tpm on_item_ok
def on_item_ok
if @item_window.tp_mode?
Sound.play_equip
user.change_tp_mode(@item_window.tp_mode)
@status_window.refresh
@item_window.refresh
@item_window.activate
else
scene_skill_on_item_ok_tpm
end
end
end # Scene_Skill
#==============================================================================
#
# ▼ End of File
#
#==============================================================================
|
|