| 赞 | 168 |
| VIP | |
| 好人卡 | |
| 积分 | 229 |
| 经验 | |
| 最后登录 | 2025-4-1 |
| 在线时间 | 8598 小时 |
- 梦石
- 0
- 星屑
- 22879
- 在线时间
- 8598 小时
- 注册时间
- 2011-12-31
- 回帖
- 3270
|
发表于 2015-7-15 13:34:39
|
显示全部楼层
VXAceにて、イベントコマンド「職業の変更」の仕様を変更するスクリプトです。
ステータスの一定割合引き継ぎ(いわゆる転生)等々ができます。
VXAceのデフォルトでは、「職業の変更」は以下の仕様になっています。
・経験値を職業毎に管理しているため、職業を変更するとレベルが1になる。
・前述の理由で、以前の職業に戻すとレベルが以前のものになる。
・「成長効果」によって増えたステータス分は引き継ぐ。
・変更前に習得していたスキルを引き継ぐ。
・変更後の職業で習得できるスキルを習得する処理が無いため、
レベル1で覚えるスキルを覚えない。
これらを各種設定によって変更、修正します。
また、ステータス一定割合引き継ぎ機能を追加します。
RGSS3 転生システム[pre lang="ruby"]#===============================================================================
#★ RGSS3 転生システム Ver1.00 by ヒール
#-------------------------------------------------------------------------------
#イベント「職業の変更」の仕様を変更します。
#-------------------------------------------------------------------------------
#VXAceのデフォルトでの「職業の変更」は以下の仕様になっています。
#
#・経験値を職業毎に管理しているため、職業を変更するとレベルが1になる。
#・前述の理由で、以前の職業に戻すとレベルが以前のものになる。
#・「成長効果」によって増えたステータス分は引き継ぐ。
#・変更前に習得していたスキルを引き継ぐ。
#・変更後の職業で習得できるスキルを習得する処理が無いため、
# レベル1で覚えるスキルを覚えない。
#
#以上の仕様を設定によって変更します。最後の項目は修正されます。
#また、職業の変更時に「一定割合のステータスを引き継ぐ」機能を追加します。
#===============================================================================
module Hi_ru_transmigration
#以下是可設定項目。
#職業変更後的等級。
#下設定為true時才適用。
TRANS_TO_LEVEL = 1
#true、職業変更時固定等級変更。
TRANS_LEVEL = true
#職業変更時経験値変化比例。
#上記設定為true場合無意味。
#預設100%引継。
TRANS_RATE = 100 #単位は(%)
#以下為true時、変更前習得的職業技能引継。(預設)
#以下為false時、変更前習得職業技能全忘卻。
#・技能的附註欄<引き継ぎ不可>書、不論設定該技能強制忘卻。
# ※アイテム等で習得していても忘れます。
#・職業技能的附註欄<引き継ぎ許可>書、
#不論設定該技能強制引継。
TRANS_SKILL = true
#以下為true時、各能力成長効果引継。(預設)
TRANS_GROW = true
#変更時に引き継ぐ各ステータスの割合の設定です。(いわゆる転生)
#上記の設定でfalseの時、引き継ぎの計算に成長効果分を含みます。
#この増加分は「転生増加分」となり、成長効果と同様の仕様になります。
TRANS_MAXHP = 5 #単位は(%)
TRANS_MAXMP = 5
TRANS_ATK = 5
TRANS_DEF = 5
TRANS_MAT = 5
TRANS_MDF = 5
TRANS_AGI = 5
TRANS_LUK = 5
#設定を配列に代入
TRANS_RATES = [TRANS_MAXHP,TRANS_MAXMP,TRANS_ATK,TRANS_DEF,TRANS_MAT,TRANS_MDF,TRANS_AGI,TRANS_LUK]
#trueにすると、ステータス引き継ぎの計算に転生増加分を加えます。
#(影響は小さいですが、trueのほうが2回目以降、若干ステータスが高くなります)
TRANS_STATUS = true
#trueにすると、2回目以降の転生増加分が和算に、falseだと上書きになります。
#例:デフォルトの5%だと、trueのとき
#・・・+2つ前の職業の5%+1つ前の職業の5% が転生増加分になります。
#falseだと、1つ前の職業の5%のみが適用されます。
#つまり、trueだと大きくステータスに影響するようになります。
TRANS_PLUS_STATUS = true
#設定はここまでです。
end
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
# バトラーを扱う基本のクラスです。主に能力値計算のメソッドを含んでいます。こ
# のクラスは Game_Battler クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_BattlerBase
include Hi_ru_transmigration
#--------------------------------------------------------------------------
# ● 能力値に加算する値をクリア
#--------------------------------------------------------------------------
alias trans_clear_param_plus clear_param_plus
def clear_param_plus
trans_clear_param_plus
@trans_param_plus = [0] * 8
end
#--------------------------------------------------------------------------
# ● 通常能力値の加算値取得
#--------------------------------------------------------------------------
alias trans_param_plus param_plus
def param_plus(param_id)
data = trans_param_plus(param_id)
data += @trans_param_plus[param_id]
return data
end
#--------------------------------------------------------------------------
# ● 能力値の加算(転生増加分) 設定がfalseの時は上書き
#--------------------------------------------------------------------------
def trans_add_param(param_id, value)
@trans_param_plus[param_id] += value if TRANS_PLUS_STATUS == true
@trans_param_plus[param_id] = value if TRANS_PLUS_STATUS == false
refresh
end
#--------------------------------------------------------------------------
# ● 転生増加分の参照
#--------------------------------------------------------------------------
def how_trans_plus(param_id)
@trans_param_plus[param_id]
end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
# アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 職業の変更
# keep_exp : 経験値を引き継ぐ
#--------------------------------------------------------------------------
alias trans_change_class change_class
def change_class(class_id, keep_exp = false)
for i in 0..7
trans_plus = self.param_base(i)
trans_plus += self.trans_param_plus(i) if TRANS_GROW == false
trans_plus += self.how_trans_plus(i) if TRANS_STATUS
trans_plus *= TRANS_RATES * 0.01
self.trans_add_param(i,trans_plus)
end
self.trans_clear_param_plus if TRANS_GROW == false
self.change_exp((exp * TRANS_RATE * 0.01).round,false)
keep_exp = true
loopx = $data_skills.size - 1
for i in 1..loopx
self.forget_skill(i) if /<引き継ぎ不可>/ =~ $data_skills.note
end
self.class.learnings.each do |learning|
unless /<引き継ぎ許可>/ =~ learning.note
forget_skill(learning.skill_id) if TRANS_SKILL == false
end
end
trans_change_class(class_id, keep_exp)
self.change_level(TRANS_TO_LEVEL,false) if TRANS_LEVEL
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level <= @level
end
end
end[/pre] |
|