Project1
标题:
VA敌人仇恨系统的翻譯請益
[打印本页]
作者:
tseyik
时间:
2014-12-5 09:49
标题:
VA敌人仇恨系统的翻譯請益
本帖最后由 tseyik 于 2014-12-6 18:03 编辑
在網上只找到一個日本的敵對心脚本
不太明白下面一段的作用(紅色)
目の前のパーティメンバーに敵対心をなすり付ける
スキルを作る。
# ※
並び順にて使用者の直前の生存メンバーが対象になります
。
# ①データベースでステートを以下のように作成します。
# a.名前に“だまし討ち”が含まれるステートを作成します。
# b.ステートの解除条件を以下のように設定します。
# 例)自動解除のタイミング:行動終了時
# 継続ターン数:1 ~ 1
# c.この状態が解除されたときのメッセージを設定します。
# 例)は、だまし討ちの効果がきれた。
# ②データベースでだまし討ちステートを付加するスキルを作成します。
# a.効果範囲:使用者 に設定します。
# b.使用可能時:バトルのみ に設定します。
# c.使用効果に①で作ったステート付加を設定します。
作者:
taroxd
时间:
2014-12-5 12:36
https://rpg.blue/thread-237133-1-1.html
作者:
tseyik
时间:
2014-12-5 15:07
本帖最后由 tseyik 于 2014-12-5 20:17 编辑
未譯完
#==============================================================================
# ■ 敵對心腳本@ネ実ツクールスレ
#------------------------------------------------------------------------------
# VX ACE敵対心設定。
# (可通過HP變動設定累積仇恨。)
#------------------------------------------------------------------------------
# ■ 規格
# ・給予損害,將HP恢復等增加敵對。
# ※100傷害 or HP100回復時敵対心100増加。
# ・受到傷害時,會降低敵對心。
# ・[敵對]×的[狙撃率]值最大的角色將是敵人的目標。
# ・若[敵對]×的[狙撃率]值最大的結果是多個時,靠前的角色會成為目標。
# ・如果影響範圍是隨機的,會忽略敵意,狙撃率。
# ・若隊員全員的敵対心都是0時、會和原本乱数決定目標。
# ・戦闘不能時敵対心歸0。
#------------------------------------------------------------------------------
# ■ 使用方法 -一-
# ◆制作産生敵對値但無傷害的技能。
# ・在技能的備註中設定敵對値。
# 例)増加敵對値100。
# <敵対心 100>
# ◆制作減少敵對値害的技能。
# ・在技能的備註中現設定敵對値。
# ※敵対心減少以数値百分比計算。
# 例)減少敵対心50%。
# <敵対心 -50>
# ◆可在傷害中計算式中使用敵対心。
# ・計算式用“a.hat”書式、來參照現在的敵対心。
# 例)ロイエ的傷害計算式
# a.hat * a.tp * 0.001
#------------------------------------------------------------------------------
# ■ 使用方法 -二-
# ◆制作將自方隊員的敵對値轉移到自己身上。
# ①在資料庫中制作一個状態。
# a.任意制作一個状態名。
# 例)敵意減、敵対心下降等
# b.状態解除条件設定最短解除。
# 例)自動解除時間:回合完結時
# 継続回合数:0 ~ 0
# c.把信息設定自方隊員得到這状態。
# 例)から敵対心を盗んだ。
# ②在資料庫制作以下的轉移敵対心的技能。
# a.効果範囲:設定成自方隊員単体。
# b.使用可能時:設定成戦鬥時。
# c.使用効果設定成付加①所作成状態。
# d.附註成盗取敵対心。数値為盗取敵対心的比例(%)。
# 例)盗取敵対心50%。
# <盗む敵対心 50>
#------------------------------------------------------------------------------
# ■ 使用方法 -三-
# ◆目の前のパーティメンバーに敵対心をなすり付けるスキルを作る。
# ※並び順にて使用者の直前の生存メンバーが対象になります。
# ①データベースでステートを以下のように作成します。
# a.名前に“だまし討ち”が含まれるステートを作成します。
# b.ステートの解除条件を以下のように設定します。
# 例)自動解除のタイミング:行動終了時
# 継続ターン数:1 ~ 1
# c.この状態が解除されたときのメッセージを設定します。
# 例)は、だまし討ちの効果がきれた。
# ②データベースでだまし討ちステートを付加するスキルを作成します。
# a.効果範囲:使用者 に設定します。
# b.使用可能時:バトルのみ に設定します。
# c.使用効果に①で作ったステート付加を設定します。
#------------------------------------------------------------------------------
# ■ 使用方法 -四-
# ◆設定被傷害時敵対心下降的特徴。
# ・装備、状態等的附註進行以下的設定。
# 例)敵対心減少量10%下降。
# <敵対心減少量-10>
# ※各装備、技能効果可累積。
# ◆設定技能/道具使用時敵対心上升量減小的特徴。
# ・装備、状態等的附註進行以下的設定。
# 例)敵対心上昇量50%低下(半減)。
# <敵対心上昇量-50>
# ※各装備、技能効果可累積。
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 敵対心の上限の設定
#--------------------------------------------------------------------------
# 累積ヘイトの上限
MAX_HATE = 20000
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :hat # ヘイト
#--------------------------------------------------------------------------
# ● オブジェクト初期化 ※エイリアス
#--------------------------------------------------------------------------
alias enmity_initialize initialize
def initialize
enmity_initialize
@hat = 0
end
#--------------------------------------------------------------------------
# ● だまし討ちのステート ID を取得
#--------------------------------------------------------------------------
def damashi_state_id
$data_states.find {|state| return state.id if state.name.include?("だまし討ち") if state != nil}
end
end
class RPG::BaseItem
#--------------------------------------------------------------------------
# ● 敵対心減少量を取得
#--------------------------------------------------------------------------
def hate_down_depth
/<敵対心減少量-(\d+)>/ =~ note ? $1.to_i * 0.01 : 0
end
#--------------------------------------------------------------------------
# ● 敵対心上昇量を取得
#--------------------------------------------------------------------------
def hate_up_depth
/<敵対心上昇量-(\d+)>/ =~ note ? $1.to_i * 0.01 : 0
end
end
class RPG::UsableItem
#--------------------------------------------------------------------------
# ● メモから敵対心を取得
#--------------------------------------------------------------------------
def add_hate
/<敵対心\s*(\S+)>/ =~ note ? $1.to_i : 0
end
#--------------------------------------------------------------------------
# ● メモから盗む敵対心を取得
#--------------------------------------------------------------------------
def steal_hate
/<盗む敵対心\s*(\d+)>/ =~ note ? $1.to_i : 0
end
end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● ヘイトのクリア
#--------------------------------------------------------------------------
def clear_hate
self.hat = 0
end
#--------------------------------------------------------------------------
# ● 戦闘不能になる ※エイリアス
#--------------------------------------------------------------------------
alias enmity_die die
def die
enmity_die
clear_hate
end
#--------------------------------------------------------------------------
# ● ヘイトの処理
#--------------------------------------------------------------------------
def execute_enmity(user, item)
item.add_hate < 0 ? user.hat *= (item.add_hate * -0.01) : user.hat += item.add_hate
if user.state?(damashi_state_id)
ta_target = $game_party.alive_members.index(user) -1
ta_target = 0 if ta_target < 1
$game_party.alive_members[ta_target].hat += @result.hp_damage.abs
else
user.hat += @result.hp_damage.abs * (1 - user.hate_up_plus)
end
self.hat -= @result.hp_damage * (1 - self.hate_down_plus) if @result.hp_damage > 0
if item.steal_hate > 0
steal_hates = self.hat * (item.steal_hate * 0.01)
user.hat += steal_hates
self.hat -= steal_hates
end
user.hat = MAX_HATE if user.hat > MAX_HATE
self.hat = 0 if self.hat < 0
end
#--------------------------------------------------------------------------
# ● スキル/アイテムの使用者側への効果 ※エイリアス
#--------------------------------------------------------------------------
alias enmity_item_user_effect item_user_effect
def item_user_effect(user, item)
enmity_item_user_effect(user, item)
execute_enmity(user, item)
end
#--------------------------------------------------------------------------
# ● 戦闘開始処理 ※エイリアス
#--------------------------------------------------------------------------
alias enmity_on_battle_start on_battle_start
def on_battle_start
enmity_on_battle_start
clear_hate
end
#--------------------------------------------------------------------------
# ● 敵対心減少量の合計
#--------------------------------------------------------------------------
def hate_down_plus
feature_objects.inject(0.0){|r,i| r + i.hate_down_depth}
end
#--------------------------------------------------------------------------
# ● 敵対心上昇量の合計
#--------------------------------------------------------------------------
def hate_up_plus
feature_objects.inject(0.0){|r,i| r + i.hate_up_depth}
end
end
class Game_Unit
#--------------------------------------------------------------------------
# ● タゲを取得
#--------------------------------------------------------------------------
def top_hat
if hat_sum > 0
alive_members.sort {|a,b| b.hat * b.tgr - a.hat * a.tgr}[0]
else
random_target
end
end
#--------------------------------------------------------------------------
# ● ヘイトの合計を計算
#--------------------------------------------------------------------------
def hat_sum
alive_members.inject(0) {|r, member| r + member.hat }
end
#--------------------------------------------------------------------------
# ● ターゲットのランダムな決定(敵対心無視)
#--------------------------------------------------------------------------
def random_target_true
return alive_members[rand(alive_members.size)]
end
end
class Game_Action
#--------------------------------------------------------------------------
# ● 敵に対するターゲット ※再定義
#--------------------------------------------------------------------------
def targets_for_opponents
if item.for_random?
Array.new(item.number_of_targets) { opponents_unit.random_target_true }
elsif item.for_one?
num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
if @target_index < 0
[opponents_unit.top_hat] * num
else
[opponents_unit.smooth_target(@target_index)] * num
end
else
opponents_unit.alive_members
end
end
end
复制代码
作者:
taroxd
时间:
2014-12-19 15:32
感谢翻译。是否需要将帖子移动到地球村?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1