Re: [問題] 幾個狀態問題和設定修改
看板RPGMaker (RPG製作大師 - RPG Maker)作者ritud (小風)時間16年前 (2008/12/15 18:06)推噓0(0推 0噓 0→)留言0則, 0人參與討論串6/6 (看更多)
關於我問的第一個問題,我在66rpg找到解決法了(不過還沒試=v=)
分享給大家,以後如果有人要做類似效果也能用了。
原文網址:http://www.66rpg.com/htm/news84.htm
簡單來說就是在我上一篇提到的連續傷害定義中再多加幾個判斷式,
雖然概念很簡單,但是不懂RGSS就做不出來(沒錯,就是我),所以
那篇文章就把範例寫出來了。
內容:
一般來說,在數據庫設置"連續傷害"這個狀態只是為了表現中毒發作
減HP的效果,可能很少有人想到用它來做一些其他的事情。
「連續傷害」這個狀態的屬性是在角色每一次行動之前檢查毒發作用
,它在戰鬥中在角色準備開始執行動作時觸發一次。即使是在RTAB戰
鬥中也不例外。(當然,通過修改腳本判定位置,可以使它挪動到每
個角色行動後,或每個回合開始前等等,此話與本文無關,不表)
「連續傷害」這個功能調用雖然是在戰鬥中,但它的定義是在Game_Battler 3
里面,接近結束的位置(考慮到這一段可能已被很多人修改的面目全
非,我就不說是第幾行了)
def slip_damage_effect
# 設置傷害
self.damage = self.maxhp / 10
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# HP 的傷害減法運算
self.hp -= self.damage
# 過程結束
return true
end
那麼這個可以拿來做什麼"妙用"呢?
利用它每回合檢查一次的特性,可以做出很多以回合數為基礎的特殊狀態效果:
舉個兩個例子:
1."再生"狀態: 戰鬥中每回合固定恢復角色最大HP的5%,最大SP的5%,
效果持續十六回合後結束
2."老化"狀態: 戰鬥中每回合角色的各項能力(除HP和SP以外)降為前
一回合的70%,降到1為止
首先在數據庫裡設定好這兩個狀態,都勾上「連續傷害」的選項,這裡
假設它們的編號為28和29
其中"再生"狀態可設為:16回合後100%的概率解除
而"老化"狀態,則把所有需要下降的能力值都設成70 (注意迴避力要設成-30)
最重要的是,這些戰鬥中臨時用的狀態一定要勾上戰鬥後自動解除的選
項,否則影響到地圖連續傷害的檢查
然後修改腳本裡「連續傷害」這部分的定義
原本的定義是關於毒的,查到毒狀態的編號為3,那麼就在外面包一個條件
def slip_damage_effect
if self.state?(3)
# 設置傷害
self.damage = self.maxhp / 10
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# HP 的傷害減法運算
self.hp -= self.damage
end
# 過程結束
return true
end
然後再加上"再生"和"老化"的定義
def slip_damage_effect
# 毒
if self.state?(3)
# 設置傷害
self.damage = self.maxhp / 10
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# HP 的傷害減法運算
self.hp -= self.damage
# 再生
elsif self.state?(28)
# 設置傷害
self.damage = -self.maxhp / 20
recover_sp = self.maxsp / 20
# HP 的傷害減法運算
self.hp -= self.damage
self.sp += recover_sp
# 老化
elsif self.state?(29)
# 設置傷害
self.damage = "Being aged!"
# 能力值下降
$data_states[29].hit_rate *= 0.7
$data_states[29].pdef_rate *= 0.7
$data_states[29].mdef_rate *= 0.7
$data_states[29].atk_rate *= 0.7
$data_states[29].str_rate *= 0.7
$data_states[29].dex_rate *= 0.7
$data_states[29].int_rate *= 0.7
$data_states[29].agi_rate *= 0.7
$data_states[29].eva -= 30
$data_states[29].eva = [$data_states[29].eva, -100].max
end
# 過程結束
return true
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.235.77
討論串 (同標題文章)
RPGMaker 近期熱門文章
PTT遊戲區 即時熱門文章
78
141
25
39