设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1005|回复: 3
打印 上一主题 下一主题

[已经解决] 有个问题想请教

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2011-12-18
帖子
34
跳转到指定楼层
1
发表于 2012-1-22 09:36:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想让每个武器都附带一个技能“投掷”。投掷的效果是丢弃手中的武器造成伤害,同时消耗一回合时间去捡取武器。丢弃手中的武器应该怎么解决?难道是要每个武器都附带一个技能,每个技能附带一个公共事件吗?

Lv2.观梦者

路人

梦石
0
星屑
590
在线时间
943 小时
注册时间
2011-8-20
帖子
1011
2
发表于 2012-1-22 09:44:36 | 只看该作者
你说的好像是武器当做物品使用,貌似宝典里有。不过你能搜索下吗?


另:LZ的帖子标题违规了,还是改个吧
为填坑而修炼中……
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2012-1-21
帖子
67
3
发表于 2012-1-22 10:07:13 | 只看该作者
只要把这段脚本插入到MAIN前面就可以了,并且一定要在数据库——系统——属性里设置上【武器投掷】和【投掷威力(数字)%】,只要在可以用来投掷的武器的属性上勾选这两个就可以了!

投掷威力(数字)% : 配合武器投掷使用,例如:投掷威力50%;投掷威力300%

只有选择了武器投掷和投掷威力(数字)%两个属性的武器才能投掷出去.

求认可!!!
  1. #==============================================================================
  2. # ■ 以下内容定义各特技的属性名
  3. #==============================================================================
  4. class Game_Battler
  5.   RERAISE_STATE_NAME = /复活/           
  6.   LIBLA_SKILL_ELEMENT_NAME = "透视"     
  7.   POWERSTOCK_SKILL_ELEMENT_NAME = "聚气"
  8.   POWERSTOCK_BASE_RATE = 0.5            #——每回合聚气威力上升倍率
  9.   STEAL_SKILL_ELEMENT_NAME = "偷窃"
  10.   ELEMENT_NAME_SP_DAMAGE = "SP损伤"
  11.   ELEMENT_NAME_HP_DRAIN = "HP吸收"
  12.   ELEMENT_NAME_SP_DRAIN = "SP吸收"
  13.   ELEMENT_NAME_CRITICAL_HIT = "必杀"
  14.   ELEMENT_NAME_CERTAIN_HIT = "必中"
  15.   ELEMENT_NAME_HP_COST = "HP消耗"
  16. end
  17. class Game_BattleAction
  18.   ELEMENT_NAME_SPEED_PRIORITY = "优先度"
  19. end
  20. class Scene_Battle
  21.   ELEMENT_NAME_HP_COST = "HP消耗"
  22.   ELEMENT_NAME_DERIVER = "派生"
  23.   ELEMENT_NAME_MOVE_TIMES = "行动回数"
  24.   ELEMENT_NAME_AREA_ENEMY_ALL = "全体化"
  25.   ELEMENT_NAME_AREA_WHOLE = "全域化"
  26.   ELEMENT_NAME_AREA_ENEMY_RAND = "敌方随机"
  27.   ELEMENT_NAME_AREA_ACTOR_RAND ="我方随机"
  28.   ELEMENT_NAME_AREA_ALL_RANDOM ="对象随机"
  29.   RERAISE_HP = 1
  30.   RERAISE_HP_PERCENT = 0
  31.   RERAISE_ANIMATION_ID = 26
  32. end
  33. module Cover_Module
  34.   ELEMENT_NAME_COVER = "援助"
  35.   STATE_NAME_COVER = "援助"
  36.   COVER_HP_PERCENT = 100
  37.   COVER_EFFECT_PERCENT = 100
  38.   COVER_EFFECT_CHAR = "Covered!"
  39.   COVER_ANIMATION_ID = 64
  40.   COVER_DEFAULT_NUMBER = 2
  41. end
  42. #==============================================================================
  43. $xrxs19_special_effections_set_work = true
  44. #--------------------------------------------------------------------------
  45. # ● 属性修正の計算?改
  46. #--------------------------------------------------------------------------
  47. class Game_Battler
  48. def elements_correct(element_set)
  49. # 無属性の場合 100 を返す
  50. return 100 if element_set == []
  51. # 与えられた属性のレートを全て乗算
  52. result = 100
  53. for i in element_set
  54. result *= self.element_rate(i) / 100.0
  55. end
  56. return result.to_i
  57. end
  58. end
  59. #==============================================================================
  60. # ■ Game_Battler
  61. #==============================================================================
  62. class Game_Battler
  63. #--------------------------------------------------------------------------
  64. # ● 追加公開インスタンス変数
  65. #--------------------------------------------------------------------------
  66. attr_accessor :reraise_state
  67. attr_accessor :reraised # リレイズしたかどうか
  68. attr_accessor :metamor_target # 変身対象
  69. attr_accessor :battler_name # バトラーグラフィック
  70. attr_reader :battler_name_original # バトラーグラフィック初期値
  71. attr_writer :hp0_ban # HP/SPの 0 化または最大制限の解除
  72. attr_writer :certain_hit # 必中受け(Trueだと攻撃を避けられない)
  73. attr_accessor :covered_friends #庇っている味方の配列
  74. attr_accessor :effect_message #
  75. attr_accessor :current_friend #かばっている味方
  76. attr_accessor :cover_remain #かばう可能な残り回数
  77. #--------------------------------------------------------------------------
  78. # ● 初期化
  79. #--------------------------------------------------------------------------
  80. alias xrxs19_battler_initialize initialize
  81. def initialize
  82. xrxs19_battler_initialize
  83. # 「かばう」用変数初期化
  84. @covered_friends = []
  85. @effect_message = nil
  86. @current_friend = nil
  87. @cover_remain = 0
  88. end
  89. #--------------------------------------------------------------------------
  90. # ● ステートの付加
  91. # state_id : ステート ID
  92. # force : 強制付加フラグ (オートステートの処理で使用)
  93. #--------------------------------------------------------------------------
  94. alias xrxs19_add_state add_state
  95. def add_state(state_id, force = false)
  96. xrxs19_add_state(state_id, force)
  97. # 「かばう」のステート付加の場合
  98. if state_id == get_cover_state_id()
  99. self.cover_remain = COVER_DEFAULT_NUMBER
  100. end
  101. end
  102. #--------------------------------------------------------------------------
  103. # ● HP の変更
  104. #--------------------------------------------------------------------------
  105. def hp=(hp)
  106. if @hp0_ban
  107. @hp = hp
  108. else
  109. @hp = [[hp, maxhp].min, 0].max
  110. # 戦闘不能を付加または解除
  111. for i in 1...$data_states.size
  112. if $data_states[i].zero_hp
  113. if self.dead?
  114. # 追加
  115. for x in 1...$data_states.size
  116. # ステート名は変更可。
  117. if $data_states[x].name[RERAISE_STATE_NAME] != nil
  118. reraise_id = $data_states[x].id
  119. break
  120. end
  121. end
  122. # リレイズ復活
  123. if reraise_id != nil && self.state?(reraise_id)
  124. self.remove_state(reraise_id)
  125. @reraised = true
  126. # 戦闘不能マイナスステートに設定されているものを解除
  127. if $data_states[i].minus_state_set != []
  128. for j in $data_states[i].minus_state_set
  129. remove_state(j)
  130. end
  131. end
  132. elsif
  133. # ここまで
  134. add_state(i)
  135. end
  136. else
  137. remove_state(i)
  138. end
  139. end
  140. end
  141. end
  142. end
  143. #--------------------------------------------------------------------------
  144. # ● SP の変更
  145. #--------------------------------------------------------------------------
  146. def sp=(sp)
  147. if @hp0_ban
  148. @sp = sp
  149. else
  150. @sp = [[sp, maxsp].min, 0].max
  151. end
  152. end
  153. #--------------------------------------------------------------------------
  154. # ● ステート [攻撃を回避できない] 判定
  155. #--------------------------------------------------------------------------
  156. alias xrxs19_cant_evade? cant_evade?
  157. def cant_evade?
  158. return true if @certain_hit
  159. return xrxs19_cant_evade?
  160. end
  161. #--------------------------------------------------------------------------
  162. # ● 通常攻撃の効果適用
  163. #--------------------------------------------------------------------------
  164. alias xrxs19_attack_effect attack_effect# alias したものは effect_it 内で使用
  165. def attack_effect(attacker)
  166. # 通常攻撃の場合、skill = nil で呼ぶ
  167. return effect_it(attacker, nil)
  168. end
  169. #--------------------------------------------------------------------------
  170. # ● スキルの効果適用
  171. #--------------------------------------------------------------------------
  172. alias xrxs19_skill_effect skill_effect # alias したものは effect_it 内で使用
  173. def skill_effect(user, skill)
  174. # スキルの場合は、skill を指定して呼ぶ
  175. return effect_it(user, skill)
  176. end
  177. #--------------------------------------------------------------------------
  178. # ● 効果適用
  179. #--------------------------------------------------------------------------
  180. def effect_it(user, skill = nil)
  181. # 実行前の数値を保持
  182. last_hp = self.hp
  183. last_sp = self.sp
  184. @hp0_ban = true
  185. # 武器IDの取得
  186. weapon_id = user.is_a?(Game_Actor) ? user.weapon_id : 0
  187. # 特殊効果:必中
  188. if skill != nil and skill_element_include?(skill, ELEMENT_NAME_CERTAIN_HIT)
  189. self.certain_hit = true
  190. elsif skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_CERTAIN_HIT)
  191. self.certain_hit = true
  192. end
  193. # 基本実行、skill が nil かどうかで通常攻撃とスキルを分別
  194. if skill == nil
  195. bool = xrxs19_attack_effect(user)
  196. else
  197. bool = xrxs19_skill_effect(user, skill)
  198. end
  199. # ダメージ測定
  200. damage = last_hp - self.hp
  201. # 必中の解除
  202. self.certain_hit = false
  203. # 特殊効果:スティール/アイテム奪取
  204. if skill != nil and skill_element_include?(skill, STEAL_SKILL_ELEMENT_NAME)
  205. self.steal_effect(user, skill) if self.is_a?(Game_Enemy)
  206. elsif skill == nil and equip_weapon_element_include?(user, STEAL_SKILL_ELEMENT_NAME)
  207. self.steal_effect(user, skill) if self.is_a?(Game_Enemy)
  208. end
  209. # 特殊効果:対象に変身
  210. if skill != nil and skill_element_include?(skill, "变身")
  211. if user.metamor_target == nil
  212. if self.metamor_target == nil
  213. # 変身状態で無い場合、変身
  214. user.metamor_target = self
  215. else
  216. # 対象が変身状態の場合、対象の変身対象に変身する。
  217. user.metamor_target = self.metamor_target
  218. end
  219. else
  220. # 変身状態の場合、変身を解除する
  221. user.metamor_target = user
  222. end
  223. # 自分への変身を禁止
  224. user.metamor_target = nil if user.metamor_target == user
  225. # 対象のダメージ表示を消す
  226. self.damage = nil if self.damage == "Miss"
  227. # HP/SP最大値変更への対応
  228. @hp0_ban = false
  229. user.hp = user.hp
  230. user.sp = user.sp
  231. end
  232. # 特殊効果:武器を投げる
  233. if (skill != nil and skill_element_include?(skill, "武器投掷"))
  234. # 投擲武器の取得
  235. throw_weapon = $data_weapons[user.current_action.basic]
  236. # 武器の消費
  237. if $xrxs24_weapon_property_system_work
  238. $game_party.lose_weapon(throw_weapon.id, user.current_action.basic_ex)
  239. else
  240. $game_party.lose_weapon(throw_weapon.id, 1)
  241. end
  242. # ダメージの変更
  243. self.hp += damage if bool
  244. damage = throw_weapon.atk
  245. if weapon_element_include?(throw_weapon.id, "投掷威力")
  246. damage = damage * @one.to_i / 100
  247. end
  248. self.damage = damage
  249. self.hp -= self.damage
  250. bool = true
  251. end
  252. # 特殊効果:消費金額に順ずる固定ダメージ
  253. if skill != nil and skill_element_include?(skill, "金钱投掷")
  254. # ゴールドの消費
  255. last_gold = $game_party.gold
  256. $game_party.gain_gold(-1 * ($game_party.gold * skill.variance / 100 + skill.power))
  257. self.hp += damage if bool
  258. damage = last_gold - $game_party.gold
  259. self.damage = damage
  260. self.hp -= self.damage
  261. bool = true
  262. end
  263. # 基本実行でfalse(Miss等)の場合、ここで終了する
  264. # つまり、この上までにダメージに関係なく実行される特殊効果をいれて
  265. # これより下はダメージに関係する特殊効果を入れる。
  266. # "武器投擲"と"銭投げ"はMissでも金額を消費するため上に。
  267. return false if bool == false
  268. # 特殊効果:防御能力の判定
  269. if damage > 0 and self.guarding?
  270. # 特殊効果:防御能力 2(強防御)
  271. if battler_element_rank?(self, "防御能力") == 2
  272. damage /= 2
  273. self.damage -= damage
  274. self.hp += damage
  275. end
  276. # 特殊効果:防御能力 1(無効防御)
  277. if battler_element_rank?(self, "防御能力") == 1
  278. self.hp += damage
  279. damage = 0
  280. self.damage = damage
  281. end
  282. end
  283. # 特殊効果:必殺確実クリティカル
  284. if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_CRITICAL_HIT)) or
  285. (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_CRITICAL_HIT)) and damage > 0
  286. if self.critical
  287. self.critical = false
  288. damage /= 2
  289. self.damage -= damage
  290. self.hp += damage
  291. end
  292. if @one == nil or rand(100) < @one.to_i
  293. self.critical = true
  294. self.hp -= damage
  295. damage *= 2
  296. self.damage = damage
  297. end
  298. end
  299. # 特殊効果:使用者の 最大HP - 現在HP 固定ダメージ
  300. if skill != nil and skill_element_include?(skill, "固定HP差分")
  301. self.hp += damage
  302. damage = user.maxhp - user.hp
  303. self.damage = damage
  304. self.hp -= self.damage
  305. self.critical = false # 固定ダメージ故クリティカルを禁止
  306. end
  307. # 特殊効果:使用者の 現在HP 固定ダメージ
  308. if skill != nil and skill_element_include?(skill, "现在HP损伤")
  309. self.hp += damage
  310. damage = user.hp
  311. self.damage = damage
  312. self.hp -= self.damage
  313. self.critical = false # 固定ダメージ故クリティカルを禁止
  314. end
  315. # 特殊効果:現在HPに順ずる固定ダメージ
  316. if skill != nil and skill_element_include?(skill, "固定现在HP")
  317. self.hp += damage
  318. damage = self.hp * skill.variance / 100 + skill.power
  319. damage *= -1 if skill.power < 0
  320. self.damage = damage
  321. self.hp -= self.damage
  322. self.critical = false # 固定ダメージ故クリティカルを禁止
  323. end
  324. # 特殊効果:最大HPに順ずる固定ダメージ
  325. if skill != nil and skill_element_include?(skill, "固定最大HP")
  326. self.hp += damage
  327. damage = self.maxhp * @one.to_i / 100
  328. damage *= -1 if skill.power < 0
  329. self.damage = damage
  330. self.hp -= self.damage
  331. self.critical = false # 固定ダメージ故クリティカルを禁止
  332. end
  333. # 特殊効果:HPではなくSPにダメージを与える
  334. if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_SP_DAMAGE)) or
  335. (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_SP_DAMAGE))
  336. self.hp += damage
  337. self.sp -= damage
  338. self.damage = "SP " + damage.to_s
  339. # このタイミングで戦闘不能判定
  340. @hp0_ban = false
  341. self.sp = self.sp
  342. real_damage = last_sp - self.sp
  343. else
  344. # このタイミングで戦闘不能判定
  345. @hp0_ban = false
  346. self.hp = self.hp
  347. real_damage = last_hp - self.hp
  348. end
  349. # 使用者のHP/SPもリセット
  350. user.hp = user.hp
  351. user.sp = user.sp
  352. # 特殊効果:与えたダメージを自分のHPとして吸収
  353. if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_HP_DRAIN)) or
  354. (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_HP_DRAIN))
  355. user.damage = -real_damage * @one.to_i / 100
  356. user.hp -= user.damage
  357. end
  358. # 特殊効果:与えたダメージを自分のSPとして吸収
  359. if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_SP_DRAIN)) or
  360. (skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_SP_DRAIN))
  361. user.damage = -real_damage * @one.to_i / 100
  362. user.sp -= user.damage
  363. user.damage = "SP " + user.damage.to_s
  364. end
  365. return true
  366. end
  367. #--------------------------------------------------------------------------
  368. # ● バトラーの指定名の属性のランクを判定
  369. #--------------------------------------------------------------------------
  370. def battler_element_rank?(battler, element_name)
  371. for i in 1..$data_system.elements.size
  372. if $data_system.elements[i] == element_name
  373. if self.is_a?(Game_Actor)
  374. return $data_classes[battler.class_id].element_ranks[i]
  375. else
  376. return $data_enemies[battler.id].element_ranks[i]
  377. end
  378. end
  379. end
  380. return 3
  381. end
  382. #--------------------------------------------------------------------------
  383. # ● MaxHP の取得
  384. #--------------------------------------------------------------------------
  385. alias xrxs19_maxhp maxhp
  386. def maxhp
  387. if !@metamor_target.nil?
  388. return @metamor_target.maxhp
  389. end
  390. xrxs19_maxhp
  391. end
  392. #--------------------------------------------------------------------------
  393. # ● MaxSP の取得
  394. #--------------------------------------------------------------------------
  395. alias xrxs19_maxsp maxsp
  396. def maxsp
  397. if !@metamor_target.nil?
  398. return @metamor_target.maxsp
  399. end
  400. xrxs19_maxsp
  401. end
  402. #--------------------------------------------------------------------------
  403. # ● 腕力の取得
  404. #--------------------------------------------------------------------------
  405. alias xrxs19_str str
  406. def str
  407. if !@metamor_target.nil?
  408. return @metamor_target.str
  409. end
  410. xrxs19_str
  411. end
  412. #--------------------------------------------------------------------------
  413. # ● 器用さの取得
  414. #--------------------------------------------------------------------------
  415. alias xrxs19_dex dex
  416. def dex
  417. if !@metamor_target.nil?
  418. return @metamor_target.dex
  419. end
  420. xrxs19_dex
  421. end
  422. #--------------------------------------------------------------------------
  423. # ● 素早さの取得
  424. #--------------------------------------------------------------------------
  425. alias xrxs19_agi agi
  426. def agi
  427. if !@metamor_target.nil?
  428. return @metamor_target.agi
  429. end
  430. xrxs19_agi
  431. end
  432. #--------------------------------------------------------------------------
  433. # ● 魔力の取得
  434. #--------------------------------------------------------------------------
  435. alias xrxs19_int int
  436. def int
  437. if !@metamor_target.nil?
  438. return @metamor_target.int
  439. end
  440. xrxs19_int
  441. end
  442. #--------------------------------------------------------------------------
  443. # ● 攻撃力の取得
  444. #--------------------------------------------------------------------------
  445. alias xrxs19_atk atk
  446. def atk
  447. if !@metamor_target.nil?
  448. return @metamor_target.atk
  449. end
  450. xrxs19_atk
  451. end
  452. #--------------------------------------------------------------------------
  453. # ● 物理防御の取得
  454. #--------------------------------------------------------------------------
  455. alias xrxs19_pdef pdef
  456. def pdef
  457. if !@metamor_target.nil?
  458. return @metamor_target.pdef
  459. end
  460. xrxs19_pdef
  461. end
  462. #--------------------------------------------------------------------------
  463. # ● 魔法防御の取得
  464. #--------------------------------------------------------------------------
  465. alias xrxs19_mdef mdef
  466. def mdef
  467. if !@metamor_target.nil?
  468. return @metamor_target.mdef
  469. end
  470. xrxs19_mdef
  471. end
  472. #--------------------------------------------------------------------------
  473. # ● 回避修正の取得
  474. #--------------------------------------------------------------------------
  475. alias xrxs19_eva eva
  476. def eva
  477. if !@metamor_target.nil?
  478. return @metamor_target.eva
  479. end
  480. xrxs19_eva
  481. end
  482. end

  483. #==============================================================================
  484. # ■ Game_BattleAction
  485. #==============================================================================
  486. class Game_BattleAction
  487. #--------------------------------------------------------------------------
  488. # ● 公開インスタンス変数
  489. #--------------------------------------------------------------------------
  490. attr_accessor :speed_priority # スピード優先度
  491. attr_accessor :weapon_id # 武器 ID
  492. attr_accessor :basic_ex # 基本拡張(補助的に数値を保持)
  493. #--------------------------------------------------------------------------
  494. # ● クリア
  495. #--------------------------------------------------------------------------
  496. alias xrxs19_clear clear
  497. def clear
  498. @weapon_id = 0
  499. xrxs19_clear
  500. end
  501. #--------------------------------------------------------------------------
  502. # ● スキルの優先度取得
  503. #--------------------------------------------------------------------------
  504. def speed_priority
  505. if @kind == 0 and @basic == 0
  506. # 通常攻撃の場合
  507. elsif @kind == 1
  508. # スキルの場合
  509. return 0 if $data_skills[@skill_id] == nil
  510. for i in $data_skills[@skill_id].element_set
  511. if $data_system.elements[i] != nil
  512. if $data_system.elements[i] =~ /^#{ELEMENT_NAME_SPEED_PRIORITY}([+-]?[0-9]+)/
  513. return $1.to_i
  514. end
  515. end
  516. end
  517. end
  518. return 0
  519. end
  520. end
  521. #==============================================================================
  522. # ■ Game_Actor
  523. #==============================================================================
  524. class Game_Actor < Game_Battler
  525. #--------------------------------------------------------------------------
  526. # ● セットアップ
  527. #--------------------------------------------------------------------------
  528. alias xrxs19_setup setup
  529. def setup(actor_id)
  530. xrxs19_setup(actor_id)
  531. @reraised = false
  532. @reraise_state = 0
  533. @metamor_target = nil
  534. @battler_name_original = @battler_name
  535. end
  536. #--------------------------------------------------------------------------
  537. # ● MaxHP の取得
  538. #--------------------------------------------------------------------------
  539. alias xrxs19_maxhp maxhp
  540. def maxhp
  541. if !@metamor_target.nil?
  542. return @metamor_target.maxhp
  543. end
  544. xrxs19_maxhp
  545. end
  546. #--------------------------------------------------------------------------
  547. # ● スキルの使用可能判定
  548. #--------------------------------------------------------------------------
  549. alias xrxs19_skill_can_use? skill_can_use?
  550. def skill_can_use?(skill_id)
  551. # スキルを取得
  552. @skill = $data_skills[skill_id]
  553. # HP消費スキルの場合
  554. if skill_element_include?(@skill, ELEMENT_NAME_HP_COST) and @actor_id > 0
  555. # HP が足りない場合は使用不可
  556. if $data_skills[skill_id].sp_cost > self.hp
  557. return false
  558. end
  559. # SP消費量を回復させ、SP が足りない場合を回避(最大値を超えて回復)
  560. self.hp0_ban = true
  561. self.sp += @skill.sp_cost
  562. bool = xrxs19_skill_can_use?(skill_id)
  563. # SPを元に戻す
  564. self.sp -= @skill.sp_cost
  565. self.hp0_ban = false
  566. return bool
  567. else
  568. return xrxs19_skill_can_use?(skill_id)
  569. end
  570. end
  571. end
  572. #==============================================================================
  573. # ■ Game_Enemy
  574. #==============================================================================
  575. class Game_Enemy < Game_Battler
  576. #--------------------------------------------------------------------------
  577. # ● オブジェクト初期化
  578. #--------------------------------------------------------------------------
  579. alias xrxs19_initialize initialize
  580. def initialize(troop_id, member_index)
  581. xrxs19_initialize(troop_id, member_index)
  582. @reraised = false
  583. @reraise_state = 0
  584. @metamor_target = nil
  585. @battler_name_original = @battler_name
  586. end
  587. end
  588. #==============================================================================
  589. # ■ Window_Item
  590. #==============================================================================
  591. class Window_Item < Window_Selectable
  592. #--------------------------------------------------------------------------
  593. # ● オブジェクト初期化
  594. #--------------------------------------------------------------------------
  595. alias xrxs19_initialize initialize
  596. def initialize
  597. xrxs19_initialize
  598. refresh
  599. end
  600. #--------------------------------------------------------------------------
  601. # ● 値の受け渡し
  602. #--------------------------------------------------------------------------
  603. def set_itemkind(itemkind)
  604. @itemkind = itemkind
  605. refresh
  606. end
  607. #--------------------------------------------------------------------------
  608. # ● 値の受け渡し
  609. #--------------------------------------------------------------------------
  610. def set_restrict(restrict)
  611. @restrict = restrict
  612. refresh
  613. end
  614. #--------------------------------------------------------------------------
  615. # ● リフレッシュ
  616. #--------------------------------------------------------------------------
  617. alias xrxs19_refresh refresh
  618. def refresh
  619. if @itemkind != 11
  620. xrxs19_refresh
  621. return
  622. end
  623. # 11 = 制限:投擲武器のみ
  624. if self.contents != nil
  625. self.contents.dispose
  626. self.contents = nil
  627. end
  628. @data = []
  629. @data_id = []
  630. for i in 1...$data_weapons.size
  631. if $game_party.weapon_number(i) > 0
  632. @data.push($data_weapons[i]) if weapon_element_include?(i, "投掷威力")
  633. end
  634. end
  635. # 項目数が 0 でなければビットマップを作成し、全項目を描画
  636. @item_max = @data.size
  637. if @item_max > 0
  638. self.contents = Bitmap.new(width - 32, row_max * 32)
  639. for i in 0...@item_max
  640. draw_item(i)
  641. end
  642. end
  643. end
  644. #--------------------------------------------------------------------------
  645. # ● 項目の描画
  646. #--------------------------------------------------------------------------
  647. alias xrxs19_draw_item draw_item
  648. def draw_item(index)
  649. if @itemkind != 11
  650. xrxs19_draw_item(index)
  651. return
  652. end
  653. # 11 = 制限:投擲武器のみ
  654. item = @data[index]
  655. number = $game_party.weapon_number(item.id)
  656. self.contents.font.color = normal_color
  657. x = 4 + index % @column_max * (288 + 32)
  658. y = index / @column_max * 32
  659. rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  660. self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  661. bitmap = RPG::Cache.icon(item.icon_name)
  662. opacity = self.contents.font.color == normal_color ? 255 : 128
  663. self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  664. self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  665. self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  666. self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  667. end
  668. end
  669. #==============================================================================
  670. # ■ Scene_Battle
  671. #==============================================================================
  672. class Scene_Battle
  673. #--------------------------------------------------------------------------
  674. # ● メイン処理
  675. #--------------------------------------------------------------------------
  676. alias xrxs19_main main
  677. def main
  678. @phase4_5_done = false
  679. xrxs19_main
  680. end
  681. #--------------------------------------------------------------------------
  682. # ● フレーム更新 (アクターコマンドフェーズ)
  683. #--------------------------------------------------------------------------
  684. alias xrxs19_update_phase3 update_phase3
  685. def update_phase3
  686. # 武器のみアイテムウィンドウが有効の場合
  687. if @item_window_weapons != nil and @item_window_weapons.visible
  688. update_phase3_item_window_weapons
  689. return
  690. end
  691. # 他
  692. xrxs19_update_phase3
  693. end
  694. #--------------------------------------------------------------------------
  695. # ● フレーム更新 (アクターコマンドフェーズ : スキル選択)
  696. #--------------------------------------------------------------------------
  697. alias xrxs19_update_phase3_skill_select update_phase3_skill_select
  698. def update_phase3_skill_select
  699. # C ボタンが押された場合
  700. if Input.trigger?(Input::C)
  701. # スキルウィンドウで現在選択されているデータを取得
  702. @skill = @skill_window.skill
  703. if skill_element_include?(@skill, "武器投掷")
  704. # 使用できない場合
  705. if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
  706. # ブザー SE を演奏
  707. $game_system.se_play($data_system.buzzer_se)
  708. return
  709. end
  710. # 決定 SE を演奏
  711. $game_system.se_play($data_system.decision_se)
  712. # アクションを設定
  713. @active_battler.current_action.skill_id = @skill.id
  714. # アイテム選択へ移行する
  715. start_item_select_from_skill(@one.to_i)
  716. return
  717. end
  718. end
  719. xrxs19_update_phase3_skill_select
  720. end
  721. #--------------------------------------------------------------------------
  722. # ● フレーム更新 (アクターコマンドフェーズ : 武器のみアイテム選択)
  723. #--------------------------------------------------------------------------
  724. def update_phase3_item_window_weapons
  725. # 武器アイテムウィンドウを可視状態にする
  726. @item_window_weapons.visible = true
  727. # 武器アイテムウィンドウを更新
  728. @item_window_weapons.update
  729. # B ボタンが押された場合
  730. if Input.trigger?(Input::B)
  731. # キャンセル SE を演奏
  732. $game_system.se_play($data_system.cancel_se)
  733. # 武器アイテムの選択を終了
  734. end_item_select_from_skill
  735. return
  736. end
  737. # C ボタンが押された場合
  738. if Input.trigger?(Input::C)
  739. # 決定 SE を演奏
  740. $game_system.se_play($data_system.decision_se)
  741. # アイテムウィンドウで現在選択されているデータを取得
  742. @item = @item_window_weapons.item
  743. # アクションを設定
  744. @active_battler.current_action.basic = @item.id
  745. if $xrxs24_weapon_property_system_work
  746. # アイテムウィンドウで現在選択されているデータを取得
  747. @item_room_no = @item_window_weapons.item_room_no
  748. # アクションを設定
  749. @active_battler.current_action.basic_ex = @item_room_no
  750. end
  751. # 武器のみアイテムウィンドウを不可視化
  752. @item_window_weapons.visible = false
  753. # 効果範囲が敵単体の場合
  754. if @skill.scope == 1
  755. # エネミーの選択を開始
  756. start_enemy_select
  757. # 効果範囲が味方単体の場合
  758. elsif @skill.scope == 3 or @skill.scope == 5
  759. # アクターの選択を開始
  760. start_actor_select
  761. # 効果範囲が単体ではない場合
  762. else
  763. # アイテムの選択を終了
  764. end_item_select_from_skill
  765. # 次のアクターのコマンド入力へ
  766. phase3_next_actor
  767. end
  768. return
  769. end
  770. end
  771. #--------------------------------------------------------------------------
  772. # ● スキルからのアイテム選択開始
  773. #--------------------------------------------------------------------------
  774. def start_item_select_from_skill(restrict = 0)
  775. # 投擲アイテムウィンドウを作成 ( 武器のみ:投擲可能のみ )
  776. @item_window_weapons = Window_Item.new
  777. if restrict == 1
  778. @item_window_weapons.set_itemkind(11)
  779. else
  780. @item_window_weapons.set_itemkind(1)
  781. end
  782. # ヘルプウィンドウを関連付け
  783. @item_window_weapons.help_window = @help_window
  784. # スキルウィンドウを無効化
  785. @skill_window.active = false
  786. @skill_window.visible = false
  787. end
  788. #--------------------------------------------------------------------------
  789. # ● スキルからのアイテム選択終了
  790. #--------------------------------------------------------------------------
  791. def end_item_select_from_skill
  792. # 武器のみアイテムウィンドウを解放
  793. @item_window_weapons.dispose
  794. @item_window_weapons = nil
  795. # ヘルプウィンドウを隠す
  796. @help_window.visible = false
  797. # スキルウィンドウを有効化
  798. @skill_window.active = true
  799. @skill_window.visible = true
  800. end
  801. #--------------------------------------------------------------------------
  802. # ● エネミー選択開始
  803. #--------------------------------------------------------------------------
  804. alias xrxs19_start_enemy_select start_enemy_select
  805. def start_enemy_select
  806. return if start_select_check
  807. xrxs19_start_enemy_select
  808. end
  809. #--------------------------------------------------------------------------
  810. # ● アクター選択開始
  811. #--------------------------------------------------------------------------
  812. alias xrxs19_start_actor_select start_actor_select
  813. def start_actor_select
  814. return if start_select_check
  815. xrxs19_start_actor_select
  816. end
  817. #--------------------------------------------------------------------------
  818. # ● 選択開始時のチェック
  819. #--------------------------------------------------------------------------
  820. def start_select_check
  821. # "全体化"、"全域化"、"対象ランダム"の判定
  822. case @active_battler.current_action.kind
  823. when 0 # 攻撃
  824. # ここで「攻撃」使用者の武器IDを保持しておく
  825. @active_battler.current_action.weapon_id = @active_battler.weapon_id
  826. # チェックに戻る
  827. if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_ALL) or
  828. equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_WHOLE) or
  829. equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_RAND) or
  830. equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ACTOR_RAND) or
  831. equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ALL_RANDOM)
  832. phase3_next_actor
  833. return true
  834. end
  835. when 1 # スキル
  836. if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_ALL) or
  837. skill_element_include?(@skill, ELEMENT_NAME_AREA_WHOLE) or
  838. skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_RAND) or
  839. skill_element_include?(@skill, ELEMENT_NAME_AREA_ACTOR_RAND) or
  840. skill_element_include?(@skill, ELEMENT_NAME_AREA_ALL_RANDOM)
  841. end_skill_select
  842. phase3_next_actor
  843. return true
  844. end
  845. when 2 # アイテム
  846. if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_ALL) or
  847. item_element_include?(@item, ELEMENT_NAME_AREA_WHOLE) or
  848. item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_RAND) or
  849. item_element_include?(@item, ELEMENT_NAME_AREA_ACTOR_RAND) or
  850. item_element_include?(@item, ELEMENT_NAME_AREA_ALL_RANDOM)
  851. end_item_select
  852. phase3_next_actor
  853. return true
  854. end
  855. end
  856. return false
  857. end
  858. #--------------------------------------------------------------------------
  859. # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  860. #--------------------------------------------------------------------------
  861. alias xrxs19_update_phase4_step1 update_phase4_step1
  862. def update_phase4_step1
  863. # 初期化
  864. @phase4_act_continuation = 0
  865. @phase4_act_times_max = 1
  866. @skill = nil
  867. @weapon_id = nil
  868. # 戻す
  869. xrxs19_update_phase4_step1
  870. end
  871. #--------------------------------------------------------------------------
  872. # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  873. #--------------------------------------------------------------------------
  874. alias xrxs19_update_phase4_step2 update_phase4_step2
  875. def update_phase4_step2
  876. #リレイズ判定
  877. next_phase_ok = true
  878. next_phase_ok = update_reraise_effect(@active_battler)
  879. if !next_phase_ok
  880. return
  881. end
  882. if next_phase_ok
  883. # ステップ 2 へ
  884. xrxs19_update_phase4_step2
  885. end
  886. end
  887. #--------------------------------------------------------------------------
  888. # ● 基本アクション 結果作成
  889. #--------------------------------------------------------------------------
  890. alias xrxs19_make_basic_action_result make_basic_action_result
  891. def make_basic_action_result
  892. # 攻撃の場合
  893. if @active_battler.current_action.basic == 0
  894. # 武器IDの取得
  895. @weapon_id = @active_battler.is_a?(Game_Actor) ? @active_battler.weapon_id : 0
  896. # 指定行動回数取得 ( "行動回数"が無い場合は 1 のまま )
  897. weapon_element_include?(@weapon_id, ELEMENT_NAME_MOVE_TIMES)
  898. @phase4_act_times_max = @one.to_i if @one != nil
  899. # アニメーション ID を設定
  900. @animation1_id = @active_battler.animation1_id
  901. @animation2_id = @active_battler.animation2_id
  902. # 初期化
  903. @target_battlers = []
  904. # 対象側バトラーの配列を設定
  905. # "全体化"の判定
  906. if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_ALL)
  907. # 行動側バトラーがエネミーの場合
  908. if @active_battler.is_a?(Game_Enemy)
  909. if @active_battler.restriction == 3
  910. @target_battlers = $game_troop.enemies
  911. else
  912. @target_battlers = $game_party.actors
  913. end
  914. end
  915. # 行動側バトラーがアクターの場合
  916. if @active_battler.is_a?(Game_Actor)
  917. if @active_battler.restriction == 3
  918. @target_battlers = $game_party.actors
  919. else
  920. @target_battlers = $game_troop.enemies
  921. end
  922. end
  923. end
  924. # "敵ランダム"の判定
  925. if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_RAND)
  926. # 行動側バトラーがエネミーの場合
  927. if @active_battler.is_a?(Game_Enemy)
  928. if @active_battler.restriction == 3
  929. tb_array = $game_troop.enemies
  930. else
  931. tb_array = $game_party.actors
  932. end
  933. end
  934. # 行動側バトラーがアクターの場合
  935. if @active_battler.is_a?(Game_Actor)
  936. if @active_battler.restriction == 3
  937. tb_array = $game_party.actors
  938. else
  939. tb_array = $game_troop.enemies
  940. end
  941. end
  942. @target_battlers = [tb_array[rand(tb_array.size)]]
  943. end
  944. # "味方ランダム"の判定
  945. if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ACTOR_RAND)
  946. # 行動側バトラーがエネミーの場合
  947. if @active_battler.is_a?(Game_Enemy)
  948. if @active_battler.restriction == 3
  949. tb_array = $game_party.actors
  950. else
  951. tb_array = $game_troop.enemies
  952. end
  953. end
  954. # 行動側バトラーがアクターの場合
  955. if @active_battler.is_a?(Game_Actor)
  956. if @active_battler.restriction == 3
  957. tb_array = $game_troop.enemies
  958. else
  959. tb_array = $game_party.actors
  960. end
  961. end
  962. @target_battlers = [tb_array[rand(tb_array.size)]]
  963. end
  964. # "全域化"の判定
  965. if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_WHOLE)
  966. @target_battlers = $game_party.actors + $game_troop.enemies
  967. end
  968. # "対象ランダム"の判定
  969. if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ALL_RANDOM)
  970. tb_array = $game_party.actors + $game_troop.enemies
  971. @target_battlers = [tb_array[rand(tb_array.size)]]
  972. end
  973. if @target_battlers.size > 0
  974. ##かばう追加
  975. get_target_battlers_after_cover!(@target_battlers, @active_battler)
  976. # 通常攻撃の効果を適用
  977. for target in @target_battlers
  978. target.attack_effect(@active_battler)
  979. end
  980. return
  981. end
  982. end
  983. xrxs19_make_basic_action_result
  984. end
  985. #--------------------------------------------------------------------------
  986. # ● スキルまたはアイテムの対象側バトラー設定
  987. #--------------------------------------------------------------------------
  988. alias xrxs19_set_target_battlers set_target_battlers
  989. def set_target_battlers(scope)
  990. case @active_battler.current_action.kind
  991. when 1
  992. # "全体化"の判定
  993. if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_ALL)
  994. scope = 2
  995. return
  996. end
  997. # "全域化"の判定
  998. scope = 8 if skill_element_include?(@skill, ELEMENT_NAME_AREA_WHOLE)
  999. # "敵ランダム"の判定
  1000. scope = 9 if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_RAND)
  1001. # "味方ランダム"の判定
  1002. scope =10 if skill_element_include?(@skill, ELEMENT_NAME_AREA_ACTOR_RAND)
  1003. # "対象ランダム"の判定
  1004. scope =11 if skill_element_include?(@skill, ELEMENT_NAME_AREA_ALL_RANDOM)
  1005. when 2
  1006. # "全体化"の判定
  1007. if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_ALL)
  1008. scope = 2
  1009. return
  1010. end
  1011. # "全域化"の判定
  1012. scope = 8 if item_element_include?(@item, ELEMENT_NAME_AREA_WHOLE)
  1013. # "敵ランダム"の判定
  1014. scope = 9 if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_RAND)
  1015. # "味方ランダム"の判定
  1016. scope =10 if item_element_include?(@item, ELEMENT_NAME_AREA_ACTOR_RAND)
  1017. # "対象ランダム"の判定
  1018. scope =11 if item_element_include?(@item, ELEMENT_NAME_AREA_ALL_RANDOM)
  1019. end
  1020. case scope
  1021. when 8
  1022. @target_battlers = $game_party.actors + $game_troop.enemies
  1023. return
  1024. when 9
  1025. # 行動側バトラーがエネミーの場合
  1026. if @active_battler.is_a?(Game_Enemy)
  1027. tb_array = $game_party.actors
  1028. end
  1029. # 行動側バトラーがアクターの場合
  1030. if @active_battler.is_a?(Game_Actor)
  1031. tb_array = $game_troop.enemies
  1032. end
  1033. @target_battlers = [tb_array[rand(tb_array.size)]]
  1034. return
  1035. when 10
  1036. # 行動側バトラーがエネミーの場合
  1037. if @active_battler.is_a?(Game_Enemy)
  1038. tb_array = $game_troop.enemies
  1039. end
  1040. # 行動側バトラーがアクターの場合
  1041. if @active_battler.is_a?(Game_Actor)
  1042. tb_array = $game_party.actors
  1043. end
  1044. @target_battlers = [tb_array[rand(tb_array.size)]]
  1045. return
  1046. when 11
  1047. tb_array = $game_party.actors + $game_troop.enemies
  1048. @target_battlers = [tb_array[rand(tb_array.size)]]
  1049. return
  1050. end
  1051. # 呼び戻す
  1052. xrxs19_set_target_battlers(scope)
  1053. ##追加
  1054. get_target_battlers_after_cover!(@target_battlers, @active_battler)
  1055. end
  1056. #--------------------------------------------------------------------------
  1057. # ● スキルアクション 結果作成
  1058. #--------------------------------------------------------------------------
  1059. alias xrxs19_make_skill_action_result make_skill_action_result
  1060. def make_skill_action_result
  1061. # スキルを取得
  1062. @skill = $data_skills[@active_battler.current_action.skill_id]
  1063. # 既に一回以上行動している場合
  1064. if @phase4_act_continuation >= 1
  1065. # SP消費分のSPを回復させて擬似的にSPを減らさない
  1066. @active_battler.sp += @skill.sp_cost
  1067. else
  1068. # 指定行動回数取得
  1069. skill_element_include?(@skill, ELEMENT_NAME_MOVE_TIMES)
  1070. @phase4_act_times_max = @one.to_i if @one != nil
  1071. # 特殊効果:消費金額に順ずる固定ダメージ
  1072. if skill_element_include?(@skill, "金钱投掷")
  1073. # ゴールドウィンドウを作成
  1074. if @gold_window == nil or @gold_window.visible == false
  1075. @gold_window = Window_Gold.new
  1076. @gold_window.x = 640 - @gold_window.width
  1077. @gold_window.y = 64
  1078. @gold_window.opacity = 160
  1079. @gold_window.visible = true
  1080. end
  1081. end
  1082. # HP消費スキルの場合
  1083. if skill_element_include?(@skill, ELEMENT_NAME_HP_COST)
  1084. # HPが足りるか判定
  1085. if @active_battler.hp <= @skill.sp_cost
  1086. # 足りない場合
  1087. # ステップ 1 に移行
  1088. @phase4_step = 1
  1089. return
  1090. end
  1091. # SP消費分のSPを回復させて擬似的にSPを減らさない(最大値を超えて回復)
  1092. @active_battler.hp0_ban = true
  1093. @active_battler.sp += @skill.sp_cost
  1094. # 戻す
  1095. xrxs19_make_skill_action_result
  1096. # HPを消費
  1097. @active_battler.hp -= @skill.sp_cost
  1098. # HP/SPの制限の解除
  1099. @active_battler.hp0_ban = false
  1100. return
  1101. end
  1102. end
  1103. xrxs19_make_skill_action_result
  1104. ##追加
  1105. make_cover_skill_action_result()
  1106. end
  1107. #--------------------------------------------------------------------------
  1108. # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
  1109. #--------------------------------------------------------------------------
  1110. alias xrxs19_update_phase4_step3 update_phase4_step3
  1111. def update_phase4_step3
  1112. # 既に一回以上行動している場合
  1113. if @phase4_act_continuation >= 1
  1114. # ステップ 4 に移行
  1115. @phase4_step = 4
  1116. @wait_count = 0
  1117. return
  1118. end
  1119. xrxs19_update_phase4_step3
  1120. # ちからためメッセージ表示。
  1121. for target in @target_battlers
  1122. if !target.action_message.nil?
  1123. @help_window.set_text(target.action_message, 1)
  1124. target.action_message = nil
  1125. end
  1126. end
  1127. end
  1128. #--------------------------------------------------------------------------
  1129. # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  1130. #--------------------------------------------------------------------------
  1131. alias xrxs19_update_phase4_step4 update_phase4_step4
  1132. def update_phase4_step4
  1133. # 武器投擲時、「武器のアニメーション」を対象に使う
  1134. if skill_element_include?(@skill, "武器投掷")
  1135. @animation2_id = $data_weapons[@active_battler.current_action.basic].animation2_id
  1136. end
  1137. # ゴールドウィンドウを更新
  1138. @gold_window.refresh if @gold_window != nil
  1139. if skill_element_include?(@skill, "变身")
  1140. tb_array = @target_battlers
  1141. @target_battlers = [@active_battler]
  1142. xrxs19_update_phase4_step4
  1143. @target_battlers = tb_array
  1144. else
  1145. xrxs19_update_phase4_step4
  1146. end
  1147. # かばわれたメンバーのアニメーション
  1148. for target in @target_battlers
  1149. if target.current_friend != nil
  1150. target.current_friend.animation_id = COVER_ANIMATION_ID
  1151. end
  1152. end
  1153. # 既に一回以上行動している場合
  1154. if @phase4_act_continuation >= 1
  1155. @wait_count = 0
  1156. end
  1157. end
  1158. #--------------------------------------------------------------------------
  1159. # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  1160. #--------------------------------------------------------------------------
  1161. alias xrxs19_update_phase4_step5 update_phase4_step5
  1162. def update_phase4_step5
  1163. # 呼び戻す
  1164. xrxs19_update_phase4_step5
  1165. # かばわれたメンバーのダメージ
  1166. for target in @target_battlers
  1167. if target.current_friend != nil
  1168. target.current_friend.damage_pop = true
  1169. #かばっている状態の初期化
  1170. target.current_friend = nil
  1171. end
  1172. end
  1173. # 生存確認
  1174. target_still_left = false
  1175. for target in @target_battlers
  1176. # ターゲットが生き残っているか判別
  1177. target_still_left = true if !target.dead?
  1178. # 戦闘不能時で、変身を解除
  1179. if target.dead? and target.metamor_target != nil
  1180. target.animation_id = 17 # 戦闘不能変身解除時のアニメーションID
  1181. target.animation_hit = true
  1182. target.battler_name = target.battler_name_original
  1183. target.metamor_target = nil
  1184. end
  1185. end
  1186. # ダメージ表示
  1187. if @active_battler.damage != nil
  1188. @active_battler.damage_pop = true
  1189. end
  1190. # 変身対象のバトラーグラフィックをコピー
  1191. if skill_element_include?(@skill, "变身")
  1192. if @active_battler.metamor_target != nil
  1193. @active_battler.battler_name = @active_battler.metamor_target.battler_name
  1194. else
  1195. @active_battler.battler_name = @active_battler.battler_name_original
  1196. end
  1197. end
  1198. # ターゲットの敵への処理
  1199. for target in @target_battlers
  1200. # スティール結果メッセージ表示。ただし、複数ターゲットの表示は不可能
  1201. if !target.effect_message.nil?
  1202. @help_window.set_text(target.effect_message, 1)
  1203. target.effect_message = nil
  1204. end
  1205. end
  1206. # 行動した回数のカウントを 1 加算
  1207. @phase4_act_continuation += 1
  1208. # 実行済み行動回数が、指定行動回数に達したかを判別
  1209. if @phase4_act_continuation < @phase4_act_times_max
  1210. # 達していない場合
  1211. # 生存している場合、続ける。
  1212. if target_still_left
  1213. # 指定行動回数に満たない場合は繰り返す為、ステップ 2 に移行
  1214. @phase4_step = 2
  1215. @wait_count = 0
  1216. # スキル使用中の場合はヘルプウィンドウを隠すのをやめる
  1217. if @active_battler.current_action.kind == 1
  1218. @help_window.visible = true
  1219. end
  1220. end
  1221. else
  1222. # 達した場合
  1223. # 敵が生存、かつ skillが"派生"属性を持つ場合
  1224. if target_still_left and
  1225. (skill_element_include?(@skill, ELEMENT_NAME_DERIVER) or
  1226. (@weapon_id != nil and equip_weapon_element_include?(@active_battler, ELEMENT_NAME_DERIVER)))
  1227. if @one.to_i > 0
  1228. # 回数をリセット
  1229. @phase4_act_continuation = 0
  1230. @phase4_act_times_max = 1
  1231. # 武器攻撃ではなくなるため @weapon_id を nil 化
  1232. @weapon_id = nil
  1233. # 新しいスキルID
  1234. @active_battler.current_action.kind = 1
  1235. @active_battler.current_action.skill_id = @one.to_i
  1236. # ステップ 2 に移行
  1237. @phase4_step = 2
  1238. @wait_count = 0
  1239. end
  1240. end
  1241. end
  1242. # ゴールドウィンドウを隠す
  1243. @gold_window.visible = false if @gold_window != nil
  1244. end
  1245. #--------------------------------------------------------------------------
  1246. # ● フレーム更新 (メインフェーズ ステップ 6 : リレイズ表示→リフレッシュ)
  1247. #--------------------------------------------------------------------------
  1248. alias xrxs19_update_phase4_step6 update_phase4_step6
  1249. def update_phase4_step6
  1250. next_phase_ok = true
  1251. #リレイズ判定
  1252. for enemy in $game_troop.enemies
  1253. next_phase_ok = update_reraise_effect(enemy)
  1254. if !next_phase_ok
  1255. return
  1256. end
  1257. end
  1258. for actor in $game_party.actors
  1259. next_phase_ok = update_reraise_effect(actor)
  1260. if !next_phase_ok
  1261. return
  1262. end
  1263. end
  1264. if next_phase_ok
  1265. xrxs19_update_phase4_step6
  1266. end
  1267. end
  1268. #===================================================
  1269. #リレイズエフェクト
  1270. #===================================================
  1271. def update_reraise_effect(battler)
  1272. if battler.reraised
  1273. case battler.reraise_state
  1274. when 0
  1275. battler.reraise_state = 1 # コラプス待ち
  1276. @wait_count = 16
  1277. return false
  1278. when 1
  1279. battler.reraise_state = 2 # 復活アニメーション
  1280. ##IDは好きなアニメーションIDを指定
  1281. battler.animation_id = RERAISE_ANIMATION_ID
  1282. @wait_count = 8
  1283. return false#
  1284. when 2
  1285. #復活処理
  1286. battler.hp = battler.maxhp * RERAISE_HP_PERCENT / 100 + RERAISE_HP
  1287. battler.reraise_state = 3 #アピアーアニメーション
  1288. @wait_count = 8
  1289. return false#
  1290. when 3
  1291. battler.reraise_state = 0 #終了?通常処理に戻る
  1292. battler.reraised = false #フラグを初期値へ
  1293. @status_window.refresh
  1294. return true
  1295. end
  1296. else
  1297. return true
  1298. end
  1299. end
  1300. #--------------------------------------------------------------------------
  1301. # ● アフターバトルフェーズ開始
  1302. #--------------------------------------------------------------------------
  1303. alias xrxs19_update_phase5 update_phase5
  1304. def update_phase5
  1305. next_phase_ok = false
  1306. # 次のアクターへ
  1307. @phase5_i = -1 if @phase5_i == nil
  1308. @phase5_i += 1
  1309. if @phase5_i < $game_party.actors.size
  1310. actor = $game_party.actors[@phase5_i]
  1311. # 変身状態の味方がいるか判別し、それを解除する
  1312. if actor.metamor_target != nil
  1313. actor.animation_id = 17 # 戦闘終了変身解除時のアニメーションID
  1314. actor.animation_hit = true
  1315. actor.battler_name = actor.battler_name_original
  1316. actor.metamor_target = nil
  1317. # ステータスウィンドウをリフレッシュ
  1318. @status_window.refresh
  1319. # アニメーションの長さにかかわらず、最低 4 フレーム待つ
  1320. @wait_count = 4
  1321. end
  1322. else
  1323. next_phase_ok = true
  1324. end
  1325. if next_phase_ok
  1326. xrxs19_update_phase5
  1327. end
  1328. end
  1329. #--------------------------------------------------------------------------
  1330. # ● 行動順序作成
  1331. #--------------------------------------------------------------------------
  1332. alias xrxs19_make_action_orders make_action_orders
  1333. def make_action_orders
  1334. xrxs19_make_action_orders
  1335. # 優先度の大きい順 (同値の場合は素早さの速い順) に並び替え
  1336. @action_battlers.sort! do |a, b|
  1337. if a.current_action.speed_priority > b.current_action.speed_priority
  1338. -1
  1339. elsif a.current_action.speed_priority < b.current_action.speed_priority
  1340. +1
  1341. elsif a.current_action.speed > b.current_action.speed
  1342. -1
  1343. elsif a.current_action.speed < b.current_action.speed
  1344. +1
  1345. else
  1346. 0 # a <=> b
  1347. end
  1348. end
  1349. end
  1350. #--------------------------------------------------------------------------
  1351. # ● バトル終了
  1352. #--------------------------------------------------------------------------
  1353. alias xrxs19_battle_end battle_end
  1354. def battle_end(result)
  1355. for i in 0...$game_party.actors.size
  1356. actor = $game_party.actors[i]
  1357. # 変身状態の味方がいるか判別し、それを解除する
  1358. if actor.metamor_target != nil
  1359. actor.battler_name = actor.battler_name_original
  1360. actor.metamor_target = nil
  1361. end
  1362. end
  1363. xrxs19_battle_end(result)
  1364. end
  1365. end
  1366. #=============================================================================
  1367. # ◇ スティール
  1368. #=============================================================================
  1369. class Game_Battler
  1370. #--------------------------------------------------------------------------
  1371. # ● 公開インスタンス変数
  1372. #--------------------------------------------------------------------------
  1373. attr_accessor :effect_message
  1374. #--------------------------------------------------------------------------
  1375. # ● オブジェクト初期化
  1376. #--------------------------------------------------------------------------
  1377. alias before_steal_original_battler_initialize initialize
  1378. def initialize
  1379. before_steal_original_battler_initialize()
  1380. @effect_message = nil
  1381. @steal_skill_id = $data_system.elements.index(STEAL_SKILL_ELEMENT_NAME)
  1382. end
  1383. end
  1384. class Game_Enemy < Game_Battler
  1385. #--------------------------------------------------------------------------
  1386. # ● オブジェクト初期化
  1387. #--------------------------------------------------------------------------
  1388. alias before_steal_original_enemy_initialize initialize
  1389. def initialize(troop_id, member_index)
  1390. before_steal_original_enemy_initialize(troop_id, member_index)
  1391. @item_possession = true
  1392. end
  1393. #===================================================
  1394. #
  1395. #===================================================
  1396. def name
  1397. name = $data_enemies[@enemy_id].name.split(/-/)[0]
  1398. if !name.nil?
  1399. return name = name.strip()
  1400. else
  1401. return ''
  1402. end
  1403. end
  1404. #===================================================
  1405. #ノーマルアイテムの指定 
  1406. #エネミーネームに -n種類 ID 個数(-na 10 10) と入れて指定。
  1407. #種類は、i(アイテム) w(武器) a(防具)のいずれか一つ
  1408. #個数は省略可能、自動で1扱い。
  1409. #また、ドロップアイテムと同一にしたい場合は
  1410. #エネミーネームに -nd 個数(-nd 2) と入れて指定。
  1411. #個数は省略可能、自動で1扱い。
  1412. #===================================================

  1413. def normal_item
  1414. return get_item_from_name("n")#オプション"n"の文字列から取得
  1415. end

  1416. #===================================================
  1417. #レアアイテムの指定 
  1418. #エネミーネームに -r種類 ID 個数(-na 10 10) と入れて指定。
  1419. #種類は、i(アイテム) w(武器) a(防具)のいずれか一つ
  1420. #個数は省略可能、自動で1扱い。
  1421. #また、ドロップアイテムと同一にしたい場合は
  1422. #エネミーネームに -rd 個数(-nd 2) と入れて指定。
  1423. #個数は省略可能、自動で1扱い。
  1424. #===================================================

  1425. def rare_item
  1426. return get_item_from_name("r")#オプション"r"の文字列から取得
  1427. end

  1428. #===================================================
  1429. #*Nameからアイテムを抜き出す処理
  1430. #===================================================
  1431. def get_item_from_name(opt)
  1432. names = $data_enemies[@enemy_id].name.split(/-/)
  1433. if names.size > 1
  1434. for i in 1...names.size
  1435. if names[i][0,1] != opt
  1436. next
  1437. end

  1438. names[i].sub!(/^.(.*)/){$1}
  1439. ary = names[i].split(/ /)

  1440. if ary[0][0,1] == "g"
  1441. cgy = "g"
  1442. id = 0
  1443. if ary[1].nil?
  1444. ary[1] = "1"
  1445. elsif ary[1].sub!(/^([0-9]+)/){$1}.nil?
  1446. ary[1] = "1"
  1447. end
  1448. possession = {"Category"=>cgy, "ID"=>id, "Num"=>ary[1].to_i}
  1449. return possession

  1450. elsif ary[0][0,1] == "d"
  1451. cgy = ""
  1452. id = 0
  1453. if self.item_id != 0
  1454. cgy = "i"
  1455. id = self.item_id
  1456. elsif self.weapon_id != 0
  1457. cgy = "w"
  1458. id = self.weapon_id
  1459. elsif self.armor_id != 0
  1460. cgy = "a"
  1461. id = self.armor_id
  1462. else
  1463. return nil
  1464. end

  1465. if ary[1].nil?
  1466. ary[1] = "1"
  1467. elsif ary[1].sub!(/^([0-9]+)/){$1}.nil?
  1468. ary[1] = "1"
  1469. end
  1470. possession = {"Category"=>cgy, "ID"=>id, "Num"=>ary[1].to_i}
  1471. return possession

  1472. elsif !ary[0].sub!(/^([iwa])/){$1}.nil? && !ary[1].sub!(/^([0-9]+)/){$1}.nil?
  1473. if ary[2].nil? || ary[2].sub!(/^([0-9]+)/){$1}.nil?
  1474. ary[2] = "1"
  1475. end
  1476. possession = {"Category"=>ary[0], "ID"=>ary[1].to_i, "Num"=>ary[2].to_i}
  1477. return possession

  1478. end
  1479. end
  1480. end
  1481. return nil
  1482. end

  1483. #===================================================
  1484. #スティールエフェクト
  1485. #===================================================

  1486. def steal_effect(user, skill) # 引数skillを追加

  1487. pos = self.normal_item

  1488. if !@item_possession || pos.nil?
  1489. @effect_message = "没有东西可偷。"
  1490. #self.damage = "Miss"
  1491. return false
  1492. end

  1493. #盗み成功判定 アジリティが同一で50%、2倍で100%
  1494. if rand(100) <= ((user.agi+0.01)/(self.agi+0.01))*100/2
  1495. r_pos = self.rare_item
  1496. #レアアイテム判定
  1497. if !r_pos.nil? && rand(10) <= 1
  1498. pos = r_pos
  1499. end

  1500. case pos["Category"]
  1501. when "i"
  1502. item = $data_items[pos["ID"]]
  1503. if item.nil?
  1504. print "这个物品不存在!"
  1505. return false
  1506. end
  1507. $game_party.gain_item(item.id, pos["Num"])
  1508. when "w"
  1509. item = $data_weapons[pos["ID"]]
  1510. if item.nil?
  1511. print "这个物品不存在!"
  1512. return false
  1513. end
  1514. $game_party.gain_weapon(item.id, pos["Num"])
  1515. when "a"
  1516. item = $data_armors[pos["ID"]]
  1517. if item.nil?
  1518. print "这个物品不存在!"
  1519. return false
  1520. end
  1521. $game_party.gain_armor(item.id, pos["Num"])
  1522. when "g"
  1523. # ゴールド獲得
  1524. $game_party.gain_gold(pos["Num"])
  1525. end

  1526. if pos["Category"] == "g"
  1527. @effect_message = "#{pos["Num"]}#{$data_system.words.gold}偷到!"
  1528. else
  1529. @effect_message = "#{item.name}#{pos["Num"]}个偷到!"
  1530. end
  1531. @item_possession = false

  1532. self.damage = "Steal!" if self.damage == "Miss"
  1533. return true
  1534. else
  1535. @effect_message = "没有东西可偷???"
  1536. #self.damage = "Miss
  1537. return false
  1538. end

  1539. return false # 念のためfalse返す処理追加
  1540. # 多分なくてもifの結果(false)が返ると思うけど…
  1541. end
  1542. end
  1543. #=============================================================================
  1544. # ■ ライブラ スキル実装スクリプト 2004/09/24 - 0.1α
  1545. #=============================================================================
  1546. class Game_Battler
  1547. #--------------------------------------------------------------------------
  1548. # ● 追加公開インスタンス変数
  1549. #--------------------------------------------------------------------------
  1550. attr_accessor :libla_reserve # ライブラ予約
  1551. #--------------------------------------------------------------------------
  1552. # ● 初期化
  1553. #--------------------------------------------------------------------------
  1554. alias before_libra_initialize initialize

  1555. def initialize
  1556. before_libra_initialize
  1557. # 「ライブラ」属性のID取得
  1558. @libra_element_id = $data_system.elements.index(LIBLA_SKILL_ELEMENT_NAME)
  1559. @libra_element_id = 0 if @libra_element_id.nil?
  1560. # 今回の行動フェイズでライブラを受けたかどうかフラグ、初期化
  1561. @libla_reserve = false
  1562. end
  1563. #--------------------------------------------------------------------------
  1564. # ● スキルの効果適用
  1565. # user : 使用者 (バトラー)
  1566. # skill: スキル
  1567. #--------------------------------------------------------------------------
  1568. alias before_libra_skill_effect skill_effect
  1569. def skill_effect(user, skill)
  1570. #「ライブラ」スキルかどうかの判定。
  1571. if skill.element_set.include?(@libra_element_id)
  1572. # 命中率を適用する場合は下のif文のコメントを外してください
  1573. #if rand(100) < skill.hit
  1574. # このバトラーがエネミーなら情報ウィンドウを表示する
  1575. if self.is_a?(Game_Enemy)
  1576. self.libla_reserve = true
  1577. end
  1578. # 命中率を適用する場合は下のelse~endのコメントを外してください
  1579. #else
  1580. # self.damage = "Miss"
  1581. #end
  1582. # 普通のスキル判定は行わない。
  1583. return true
  1584. else
  1585. return before_libra_skill_effect(user, skill)
  1586. end
  1587. end
  1588. end
  1589. #==============================================================================
  1590. # ■ Scene_Battle
  1591. #==============================================================================
  1592. class Scene_Battle
  1593. #--------------------------------------------------------------------------
  1594. # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  1595. #--------------------------------------------------------------------------
  1596. alias before_libra_update_phase4_step5 update_phase4_step5
  1597. def update_phase4_step5
  1598. # ダメージ表示
  1599. for target in @target_battlers
  1600. if target.libla_reserve
  1601. libra_window = Window_EnemyStatus.new(target)
  1602. loop do
  1603. # ゲーム画面を更新
  1604. Graphics.update
  1605. # 入力情報を更新
  1606. Input.update
  1607. # ボタンが押されたら情報ウィンドウを閉じてループを中断
  1608. if Input.trigger?(Input::C) or Input.trigger?(Input::B)
  1609. libra_window.dispose
  1610. libra_window = nil
  1611. break
  1612. end
  1613. end
  1614. end
  1615. # ライブラ予約フラグを解除
  1616. target.libla_reserve = false
  1617. end
  1618. before_libra_update_phase4_step5
  1619. end
  1620. end
  1621. #==============================================================================
  1622. # ■ Window_EnemyStatus
  1623. #------------------------------------------------------------------------------
  1624. #  エネミーのステータスを表示するステータスウィンドウです。
  1625. #==============================================================================
  1626. class Window_EnemyStatus < Window_Base
  1627. #--------------------------------------------------------------------------
  1628. # ● オブジェクト初期化
  1629. # enemy : エネミー
  1630. #--------------------------------------------------------------------------
  1631. def initialize(enemy)
  1632. super(0, 64, 640, 256)
  1633. self.contents = Bitmap.new(width - 32, height - 32)
  1634. self.back_opacity = 127
  1635. @enemy = enemy
  1636. refresh
  1637. end
  1638. #--------------------------------------------------------------------------
  1639. # ● リフレッシュ
  1640. #--------------------------------------------------------------------------
  1641. def refresh
  1642. self.contents.clear
  1643. draw_enemy_name(@enemy, 4, 0)
  1644. draw_enemy_state(@enemy, 4, 48)
  1645. draw_enemy_hp(@enemy,196, 48, 172)
  1646. draw_enemy_sp(@enemy,196, 72, 172)
  1647. draw_enemy_parameter(@enemy, 4, 120, 0)
  1648. draw_enemy_parameter(@enemy, 4, 144, 1)
  1649. draw_enemy_parameter(@enemy, 4, 168, 2)
  1650. draw_enemy_parameter(@enemy, 4, 192, 7)
  1651. draw_enemy_parameter(@enemy,196, 120, 3)
  1652. draw_enemy_parameter(@enemy,196, 144, 4)
  1653. draw_enemy_parameter(@enemy,196, 168, 5)
  1654. draw_enemy_parameter(@enemy,196, 192, 6)
  1655. self.contents.font.color = system_color
  1656. self.contents.draw_text(384, 24, 80, 32, "EXP")
  1657. self.contents.draw_text(384, 48, 80, 32, "金钱")
  1658. self.contents.draw_text(384, 96, 96, 32, "战利品")
  1659. self.contents.draw_text(384, 144, 96, 32, "偷窃物")
  1660. self.contents.font.color = normal_color
  1661. self.contents.draw_text(384 + 80, 24, 84, 32, @enemy.exp.to_s, 2)
  1662. self.contents.draw_text(384 + 80, 48, 84, 32, @enemy.gold.to_s, 2)
  1663. draw_item_name(get_enemy_item(@enemy,1), 384 + 16, 120)
  1664. draw_item_name(get_enemy_item(@enemy,2), 384 + 16, 168)
  1665. draw_item_name(get_enemy_item(@enemy,3), 384 + 16, 192)
  1666. end
  1667. #--------------------------------------------------------------------------
  1668. # ○ アイテムの取得
  1669. #--------------------------------------------------------------------------
  1670. def get_enemy_item( enemy, type )
  1671. case type
  1672. when 1:
  1673. if enemy.item_id != nil and enemy.item_id != 0
  1674. return $data_items[enemy.item_id]
  1675. elsif enemy.weapon_id != nil and enemy.weapon_id != 0
  1676. return $data_weapons[enemy.weapon_id]
  1677. elsif enemy.armor_id != nil and enemy.armor_id != 0
  1678. return $data_armors[enemy.armor_id]
  1679. else
  1680. return nil
  1681. end
  1682. when 2:
  1683. info = enemy.get_item_from_name("n")
  1684. return nil if info == nil
  1685. case info["Category"]
  1686. when "i"
  1687. return $data_items[info["ID"]]
  1688. when "w"
  1689. return $data_weapons[info["ID"]]
  1690. when "a"
  1691. return $data_armors[info["ID"]]
  1692. otherwise
  1693. return nil
  1694. end
  1695. when 3:
  1696. info = enemy.get_item_from_name("r")
  1697. return nil if info == nil
  1698. case info["Category"]
  1699. when "i"
  1700. return $data_items[info["ID"]]
  1701. when "w"
  1702. return $data_weapons[info["ID"]]
  1703. when "a"
  1704. return $data_armors[info["ID"]]
  1705. otherwise
  1706. return nil
  1707. end
  1708. otherwise
  1709. return nil
  1710. end
  1711. end
  1712. #--------------------------------------------------------------------------
  1713. # ● 名前の描画
  1714. # enemy : エネミー
  1715. # x : 描画先 X 座標
  1716. # y : 描画先 Y 座標
  1717. #--------------------------------------------------------------------------
  1718. def draw_enemy_name(enemy, x, y)
  1719. self.contents.font.color = normal_color
  1720. self.contents.draw_text(x, y, 120, 32, enemy.name)
  1721. end
  1722. #--------------------------------------------------------------------------
  1723. # ● ステートの描画
  1724. # enemy : エネミー
  1725. # x : 描画先 X 座標
  1726. # y : 描画先 Y 座標
  1727. # width : 描画先の幅
  1728. #--------------------------------------------------------------------------
  1729. def draw_enemy_state(enemy, x, y, width = 120)
  1730. text = make_battler_state_text(enemy, width, true)
  1731. self.contents.font.color = enemy.hp == 0 ? knockout_color : normal_color
  1732. self.contents.draw_text(x, y, width, 32, text)
  1733. end
  1734. #--------------------------------------------------------------------------
  1735. # ● HP の描画
  1736. # enemy : エネミー
  1737. # x : 描画先 X 座標
  1738. # y : 描画先 Y 座標
  1739. # width : 描画先の幅
  1740. #--------------------------------------------------------------------------
  1741. def draw_enemy_hp(enemy, x, y, width = 144)
  1742. # 文字列 "HP" を描画
  1743. self.contents.font.color = system_color
  1744. self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
  1745. # MaxHP を描画するスペースがあるか計算
  1746. if width - 32 >= 108
  1747. hp_x = x + width - 108
  1748. flag = true
  1749. elsif width - 32 >= 48
  1750. hp_x = x + width - 48
  1751. flag = false
  1752. end
  1753. # HP を描画
  1754. self.contents.font.color = enemy.hp == 0 ? knockout_color :
  1755. enemy.hp <= enemy.maxhp / 4 ? crisis_color : normal_color
  1756. self.contents.draw_text(hp_x, y, 48, 32, enemy.hp.to_s, 2)
  1757. # MaxHP を描画
  1758. if flag
  1759. self.contents.font.color = normal_color
  1760. self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
  1761. self.contents.draw_text(hp_x + 60, y, 48, 32, enemy.maxhp.to_s)
  1762. end
  1763. end
  1764. #--------------------------------------------------------------------------
  1765. # ● SP の描画
  1766. # enemy : エネミー
  1767. # x : 描画先 X 座標
  1768. # y : 描画先 Y 座標
  1769. # width : 描画先の幅
  1770. #--------------------------------------------------------------------------
  1771. def draw_enemy_sp(enemy, x, y, width = 144)
  1772. # 文字列 "SP" を描画
  1773. self.contents.font.color = system_color
  1774. self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
  1775. # MaxSP を描画するスペースがあるか計算
  1776. if width - 32 >= 108
  1777. sp_x = x + width - 108
  1778. flag = true
  1779. elsif width - 32 >= 48
  1780. sp_x = x + width - 48
  1781. flag = false
  1782. end
  1783. # SP を描画
  1784. self.contents.font.color = enemy.sp == 0 ? knockout_color :
  1785. enemy.sp <= enemy.maxsp / 4 ? crisis_color : normal_color
  1786. self.contents.draw_text(sp_x, y, 48, 32, enemy.sp.to_s, 2)
  1787. # MaxSP を描画
  1788. if flag
  1789. self.contents.font.color = normal_color
  1790. self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
  1791. self.contents.draw_text(sp_x + 60, y, 48, 32, enemy.maxsp.to_s)
  1792. end
  1793. end
  1794. #--------------------------------------------------------------------------
  1795. # ● パラメータの描画
  1796. # enemy : エネミー
  1797. # x : 描画先 X 座標
  1798. # y : 描画先 Y 座標
  1799. # type : パラメータの種類 (0~6)
  1800. #--------------------------------------------------------------------------
  1801. def draw_enemy_parameter(enemy, x, y, type)
  1802. case type
  1803. when 0
  1804. parameter_name = $data_system.words.atk
  1805. parameter_value = enemy.atk
  1806. when 1
  1807. parameter_name = $data_system.words.pdef
  1808. parameter_value = enemy.pdef
  1809. when 2
  1810. parameter_name = $data_system.words.mdef
  1811. parameter_value = enemy.mdef
  1812. when 3
  1813. parameter_name = $data_system.words.str
  1814. parameter_value = enemy.str
  1815. when 4
  1816. parameter_name = $data_system.words.dex
  1817. parameter_value = enemy.dex
  1818. when 5
  1819. parameter_name = $data_system.words.agi
  1820. parameter_value = enemy.agi
  1821. when 6
  1822. parameter_name = $data_system.words.int
  1823. parameter_value = enemy.int
  1824. when 7
  1825. parameter_name = "回避"
  1826. parameter_value = enemy.eva
  1827. end
  1828. self.contents.font.color = system_color
  1829. self.contents.draw_text(x, y, 120, 32, parameter_name)
  1830. self.contents.font.color = normal_color
  1831. self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  1832. end
  1833. end
  1834. #=============================================================================
  1835. # ◇ ちからため スキル実装スクリプト by 和希
  1836. #=============================================================================
  1837. class Game_Battler
  1838. #--------------------------------------------------------------------------
  1839. # ● 追加公開インスタンス変数
  1840. #--------------------------------------------------------------------------
  1841. attr_accessor :powerstock # 「ちからため」回数
  1842. attr_accessor :action_message # ヘルプウィンドウに表示する文字
  1843. #--------------------------------------------------------------------------
  1844. # ● 初期化
  1845. #--------------------------------------------------------------------------
  1846. alias before_powerstock_original_initialize initialize
  1847. def initialize
  1848. before_powerstock_original_initialize
  1849. @powerstock = 0
  1850. @powerstock_skill_id = $data_system.elements.index(POWERSTOCK_SKILL_ELEMENT_NAME)
  1851. @powerstock_skill_id = 0 if @powerstock_skill_id == nil
  1852. @effect_message = nil
  1853. end
  1854. #--------------------------------------------------------------------------
  1855. # ● 通常攻撃の効果適用
  1856. # attacker : 攻撃者 (バトラー)
  1857. #--------------------------------------------------------------------------
  1858. alias before_powerstock_original_attack_effect attack_effect
  1859. def attack_effect(attacker)
  1860. # 攻撃者が「ちからため」しているか?
  1861. if attacker.powerstock > 0
  1862. bool_powerstock = true
  1863. # 攻撃者の力を一時的に上昇させる
  1864. stock_attacker_str = attacker.str
  1865. attacker.str += ( stock_attacker_str * POWERSTOCK_BASE_RATE * attacker.powerstock ).to_i
  1866. # ヘルプメッセージに「ちからためx?」を出す
  1867. @action_message = POWERSTOCK_SKILL_ELEMENT_NAME
  1868. @action_message += " x"
  1869. @action_message += attacker.powerstock.to_s
  1870. # ストックを消す
  1871. attacker.powerstock = 0
  1872. else
  1873. bool_powerstock = false
  1874. end
  1875. # fukuyamaさん↓のミス発見ありがとうございました
  1876. result = before_powerstock_original_attack_effect(attacker)
  1877. # 力を上昇させていた場合、元に戻す
  1878. if bool_powerstock
  1879. attacker.str = stock_attacker_str
  1880. end
  1881. return result
  1882. end
  1883. #--------------------------------------------------------------------------
  1884. # ● スキルの効果適用
  1885. # user : 使用者 (バトラー)
  1886. # skill: スキル
  1887. #--------------------------------------------------------------------------
  1888. alias before_powerstock_original_skill_effect skill_effect
  1889. def skill_effect(user, skill)
  1890. #「ちからため」スキルかどうかの判定。
  1891. if skill.element_set.include?(@powerstock_skill_id)
  1892. # 命中率を適用する場合は下のif文のコメントを外してください
  1893. #if rand(100) < skill.hit
  1894. @powerstock += 1 # 「ちからため」回数を1増やす
  1895. # ダメージに"Charge"をセットする
  1896. self.damage = "Charge"
  1897. # 命中率を適用する場合は下のelse~endのコメントを外してください
  1898. #else
  1899. # self.damage = "Miss"
  1900. #end
  1901. # 普通のスキル判定は行わない。
  1902. return true
  1903. else
  1904. return before_powerstock_original_skill_effect(user, skill)
  1905. end
  1906. end
  1907. end
  1908. #=============================================================================
  1909. # ◇ 見切りステート by 和希
  1910. #=============================================================================
  1911. class Game_Battler
  1912. # 見切りステートの名前
  1913. ABANDONS_SKILL_STATE_NAME = "断念"
  1914. #--------------------------------------------------------------------------
  1915. # ● 通常攻撃の効果適用
  1916. #--------------------------------------------------------------------------
  1917. alias before_abandons_original_attack_effect attack_effect

  1918. def attack_effect(attacker)
  1919. # 見切りステートが存在するか?
  1920. if nil != (abandons_skill = get_abandons_id)
  1921. # 見切りステートにかかっているか?
  1922. if self.state?(abandons_skill)
  1923. ## 避ける!
  1924. # クリティカルフラグをクリア
  1925. self.critical = false
  1926. # ダメージに "Avoid!!" を設定
  1927. self.damage = "Avoid!!"
  1928. # 見切りステートを解除
  1929. self.remove_state(abandons_skill,true)
  1930. # メソッド終了
  1931. return false
  1932. end
  1933. end
  1934. # 見切りステート状態でなかった時は通常どおり
  1935. return before_abandons_original_attack_effect(attacker)
  1936. end
  1937. #--------------------------------------------------------------------------
  1938. # ● 見切りステータスのID取得
  1939. #--------------------------------------------------------------------------
  1940. def get_abandons_id
  1941. result = nil
  1942. if @abandons_status_id == nil
  1943. for i in 1 ... $data_states.size
  1944. if $data_states[i].name[/\A#{ABANDONS_SKILL_STATE_NAME}\Z/]
  1945. result = $data_states[i].id
  1946. break
  1947. end
  1948. end
  1949. @abandons_status_id = ( result != nil ? result : 0 )
  1950. elsif @abandons_status_id > 0
  1951. result = @abandons_status_id
  1952. end
  1953. return result
  1954. end
  1955. end
  1956. #=============================================================================
  1957. # ◇ かばう by シムナフ
  1958. #=============================================================================
  1959. #==============================================================================
  1960. # ■ Scene_Battle
  1961. #==============================================================================
  1962. class Scene_Battle
  1963. #追加
  1964. attr_reader :active_battler
  1965. #ここまで
  1966. ##新メソッド
  1967. def make_cover_skill_action_result
  1968. cover_num = 0
  1969. cover_bool = false
  1970. for i in @skill.element_set
  1971. if !($data_system.elements[i][/^#{ELEMENT_NAME_COVER}/].nil?)
  1972. cover_bool = true
  1973. elm_num = $data_system.elements[i][/([+-]*[0-9]+)/]
  1974. if !(elm_num.nil?)
  1975. cover_num += elm_num.to_i
  1976. end
  1977. end
  1978. end

  1979. if cover_bool.equal?(true)
  1980. ##自分のみが対象だった場合は味方からランダムに1人をかばう
  1981. if @target_battlers.include?(@active_battler)
  1982. if @target_battlers.size == 1
  1983. if @target_battlers[0].is_a?(Game_Actor)
  1984. friends = $game_party.actors.dup
  1985. friends.delete(@active_battler)
  1986. @target_battlers = [friends[rand(friends.size)]]
  1987. elsif @target_battlers[0].is_a?(Game_Enemy)
  1988. friends = $game_troop.enemies.dup
  1989. friends.delete(@active_battler)
  1990. @target_battlers = [friends[rand(friends.size)]]
  1991. end
  1992. else
  1993. @target_battlers.delete(@active_battler)
  1994. end
  1995. end

  1996. @active_battler.covered_friends = @target_battlers.dup
  1997. @active_battler.add_state(get_cover_state_id())##ステート付加時にデフォルト回数で発動回数が設定される
  1998. if (cover_num > 0)
  1999. @active_battler.cover_remain = cover_num#発動回数が有った場合はその回数で上書き
  2000. end
  2001. for target in @target_battlers
  2002. target.damage = COVER_EFFECT_CHAR
  2003. end
  2004. end
  2005. end
  2006. ##ここまで
  2007. end

  2008. class Game_Party
  2009. ##追加エイリアス
  2010. include Cover_Module
  2011. #--------------------------------------------------------------------------
  2012. # ● 対象アクターのスムーズな決定
  2013. # actor_index : アクターインデックス
  2014. #--------------------------------------------------------------------------

  2015. alias before_cover_original_smooth_target_actor smooth_target_actor

  2016. def smooth_target_actor(actor_index)
  2017. if $scene.is_a?(Scene_Battle)
  2018. battler = $scene.active_battler()
  2019. else
  2020. battler = nil
  2021. end

  2022. target = [before_cover_original_smooth_target_actor(actor_index)]
  2023. get_target_battlers_after_cover!(target, battler)

  2024. return target[0]
  2025. end
  2026. ##ここまで
  2027. end

  2028. class Game_Troop
  2029. ##追加エイリアス
  2030. include Cover_Module
  2031. #--------------------------------------------------------------------------
  2032. # ● 対象エネミーのスムーズな決定
  2033. # enemy_index : エネミーインデックス
  2034. #--------------------------------------------------------------------------

  2035. alias before_cover_original_smooth_target_enemy smooth_target_enemy

  2036. def smooth_target_enemy(enemy_index)
  2037. if $scene.is_a?(Scene_Battle)
  2038. battler = $scene.active_battler()
  2039. else
  2040. battler = nil
  2041. end

  2042. target = [before_cover_original_smooth_target_enemy(enemy_index)]
  2043. get_target_battlers_after_cover!(target, battler)

  2044. return target[0]
  2045. end
  2046. ##ここまで
  2047. end


  2048. #==============================================================================
  2049. # ◇ 付加属性名称判定モジュール
  2050. #==============================================================================
  2051. module Check_ElementName_Set
  2052. #--------------------------------------------------------------------------
  2053. # ● スキルが指定名の属性を持つか判定
  2054. #--------------------------------------------------------------------------
  2055. def skill_element_include?(skill, element_name)
  2056. @one = @two = nil
  2057. return false if skill == nil or !skill.is_a?(RPG::Skill)
  2058. for i in skill.element_set
  2059. if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
  2060. @one = $1
  2061. @two = $2
  2062. return true
  2063. end
  2064. end
  2065. return false
  2066. end
  2067. #--------------------------------------------------------------------------
  2068. # ● アイテムが指定名の属性を持つか判定
  2069. #--------------------------------------------------------------------------
  2070. def item_element_include?(item, element_name)
  2071. @one = @two = nil
  2072. return false if item == nil or !item.is_a?(RPG::Item)
  2073. for i in item.element_set
  2074. if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
  2075. @one = $1
  2076. @two = $2
  2077. return true
  2078. end
  2079. end
  2080. return false
  2081. end
  2082. #--------------------------------------------------------------------------
  2083. # ● 武器が指定名の属性を持つか判定
  2084. #--------------------------------------------------------------------------
  2085. def weapon_element_include?(weapon_id, element_name)
  2086. @one = @two = nil
  2087. return false if weapon_id == nil or weapon_id <= 0
  2088. for i in $data_weapons[weapon_id].element_set
  2089. if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
  2090. @one = $1
  2091. @two = $2
  2092. return true
  2093. end
  2094. end
  2095. return false
  2096. end
  2097. #--------------------------------------------------------------------------
  2098. # ● 防具が指定名の属性を持つか判定
  2099. #--------------------------------------------------------------------------
  2100. def armor_element_include?(armor_id, element_name)
  2101. @one = @two = nil
  2102. return false if armor_id == nil or armor_id <= 0
  2103. for i in $data_armors[armor_id].guard_element_set
  2104. if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
  2105. @one = $1
  2106. @two = $2
  2107. return true
  2108. end
  2109. end
  2110. return false
  2111. end
  2112. #--------------------------------------------------------------------------
  2113. # ● 防具が指定名の属性を持つ場合その後に付く接尾テキストを取得
  2114. #--------------------------------------------------------------------------
  2115. def armor_element_suftext(armor_id, element_name)
  2116. return nil if armor_id == nil or armor_id <= 0
  2117. for i in $data_armors[armor_id].guard_element_set
  2118. if $data_system.elements[i] =~ /#{element_name}(.*)/
  2119. return $1
  2120. end
  2121. end
  2122. return nil
  2123. end
  2124. #--------------------------------------------------------------------------
  2125. # ● アクターが指定名の属性を持つ武器を装備しているかか判定
  2126. #--------------------------------------------------------------------------
  2127. def equip_weapon_element_include?(actor, element_name)
  2128. @one = @two = nil
  2129. return false if !actor.is_a?(Game_Actor)
  2130. return false if actor.weapon_id == nil or actor.weapon_id <= 0
  2131. bool = false
  2132. one_total = 0
  2133. for i in $data_weapons[actor.weapon_id].element_set
  2134. if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
  2135. one_total += $1.to_i
  2136. @two = $2
  2137. bool = true
  2138. end
  2139. end
  2140. # 武器管理システムXC.が導入されている場合
  2141. if $xrxs24_weapon_property_system_work
  2142. for i in [PROPERTY_ELEMENT_GRANT_1st, PROPERTY_ELEMENT_GRANT_2nd,
  2143. PROPERTY_ELEMENT_GRANT_3rd, PROPERTY_ELEMENT_GRANT_4th]
  2144. if $data_system.elements[actor.weapon_property[i]] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
  2145. one_total += $1.to_i
  2146. @two = $2
  2147. bool = true
  2148. end
  2149. end
  2150. end
  2151. @one = one_total
  2152. return bool
  2153. end
  2154. #--------------------------------------------------------------------------
  2155. # ● アクターが指定名の属性を持つ武器/防具を装備中か判定 数値の合計も保持
  2156. #--------------------------------------------------------------------------
  2157. def actor_element_equip?(actor, element_name)
  2158. one_total = 0
  2159. bool = false
  2160. return false if !actor.is_a?(Game_Actor)
  2161. weapon = $data_weapons[actor.weapon_id]
  2162. armor1 = $data_armors[actor.armor1_id]
  2163. armor2 = $data_armors[actor.armor2_id]
  2164. armor3 = $data_armors[actor.armor3_id]
  2165. armor4 = $data_armors[actor.armor4_id]
  2166. if equip_weapon_element_include?(actor, element_name)
  2167. one_total += @one.to_i
  2168. bool = true
  2169. end
  2170. if armor_element_include?(armor1.id, element_name)
  2171. one_total += @one.to_i
  2172. bool = true
  2173. end
  2174. if armor_element_include?(armor2.id, element_name)
  2175. one_total += @one.to_i
  2176. bool = true
  2177. end
  2178. if armor_element_include?(armor3.id, element_name)
  2179. one_total += @one.to_i
  2180. bool = true
  2181. end
  2182. if armor_element_include?(armor4.id, element_name)
  2183. one_total += @one.to_i
  2184. bool = true
  2185. end
  2186. @one = one_total
  2187. return bool
  2188. end
  2189. end
  2190. #=============================================================================
  2191. # ◇ かばうModule
  2192. #=============================================================================
  2193. ####以下新規追加Module
  2194. module Cover_Module
  2195. #--------------------------------------------------------------------------
  2196. # ● かばう 後のターゲット配列生成
  2197. #--------------------------------------------------------------------------
  2198. def get_target_battlers_after_cover!(target_battlers, active_battler = nil)
  2199. #HP割合の低い順にソート
  2200. #target_battlers.sort_by!{|b| (b.hp.to_f/b.maxhp.to_f)}
  2201. target_battlers.sort!{|a,b| (a.hp.to_f/a.maxhp.to_f) <=> (b.hp.to_f/b.maxhp.to_f)}
  2202. #HP割合の多い順にソート
  2203. actors = $game_party.actors.sort_by{|b| (b.hp.to_f/b.maxhp.to_f)}.reverse
  2204. enemies = $game_troop.enemies.sort_by{|b| (b.hp.to_f/b.maxhp.to_f)}.reverse

  2205. for i in 0...target_battlers.size
  2206. if target_battlers[i].is_a?(Game_Actor)
  2207. for actor in actors
  2208. new_target = get_target_after_cover(active_battler,target_battlers[i],actor)
  2209. if !new_target.equal?(target_battlers[i]) && new_target.current_friend.nil? #かばう人がすでにかばっていた場合かばえない
  2210. new_target.effect_message = "#{new_target.name}は#{target_battlers[i].name}をかばった!"
  2211. new_target.current_friend = target_battlers[i]
  2212. new_target.current_friend.damage = COVER_EFFECT_CHAR
  2213. target_battlers[i] = new_target
  2214. break
  2215. end
  2216. end
  2217. end

  2218. if target_battlers[i].is_a?(Game_Enemy)
  2219. for enemy in enemies
  2220. new_target = get_target_after_cover(active_battler,target_battlers[i],enemy)
  2221. if !new_target.equal?(target_battlers[i]) && new_target.current_friend.nil? #かばう人がすでにかばっていた場合かばえない
  2222. new_target.effect_message = "#{new_target.name}は#{target_battlers[i].name}をかばった!"
  2223. new_target.current_friend = target_battlers[i]
  2224. new_target.current_friend.damage = COVER_EFFECT_CHAR
  2225. target_battlers[i] = new_target
  2226. break
  2227. end
  2228. end
  2229. end
  2230. end
  2231. #ターゲット重複を排除する(かばった人が2度ダメージを受けない)
  2232. target_battlers.uniq!()
  2233. #「かばう」ステートの解除判定
  2234. for target in target_battlers
  2235. if !target.current_friend.nil?
  2236. #かばう 残り回数がなくなった場合
  2237. target.cover_remain -= 1
  2238. if target.cover_remain <= 0
  2239. target.remove_state(get_cover_state_id())
  2240. target.cover_remain = 0
  2241. end
  2242. end
  2243. end
  2244. end
  2245. #--------------------------------------------------------------------------
  2246. # ● かばう の発動判定
  2247. #--------------------------------------------------------------------------
  2248. def get_target_after_cover(battler, target, coverer)
  2249. #味方からのターゲットは庇わない
  2250. if battler.is_a?(Game_Actor)
  2251. if target.is_a?(Game_Actor)
  2252. return target
  2253. end
  2254. end
  2255. if battler.is_a?(Game_Enemy)
  2256. if target.is_a?(Game_Enemy)
  2257. return target
  2258. end
  2259. end
  2260. #庇う人が動けない時は庇わない
  2261. if !(coverer.movable? && coverer.exist?)
  2262. return target
  2263. end
  2264. #庇う人が かばう のステートになっている時のみ
  2265. if !coverer.state?(get_cover_state_id())
  2266. return target
  2267. end
  2268. #ターゲットが既に他の人を庇っている時は無効
  2269. if target.state?(get_cover_state_id())
  2270. return target
  2271. end
  2272. #ターゲットと庇う人が同じの場合は無効
  2273. if target.equal?(coverer)
  2274. return target
  2275. end
  2276. #発動確率判定
  2277. if !(rand(100) <= COVER_EFFECT_PERCENT)
  2278. return taget
  2279. end
  2280. #ターゲットのHP割合判定
  2281. if !(100.0*target.hp.to_f/target.maxhp.to_f <= COVER_HP_PERCENT)
  2282. return target
  2283. end
  2284. #「かばっている味方配列」が空だったら、全ての味方を庇う
  2285. if coverer.covered_friends.size.zero?
  2286. return coverer
  2287. else
  2288. for covered_friend in coverer.covered_friends
  2289. if target.equal?(covered_friend)
  2290. return coverer
  2291. end
  2292. end
  2293. end
  2294. return target
  2295. end
  2296. #--------------------------------------------------------------------------
  2297. # ● かばう のStateID
  2298. #--------------------------------------------------------------------------
  2299. def get_cover_state_id
  2300. result = nil
  2301. if @cover_status_id == nil
  2302. for i in 1 ... $data_states.size
  2303. if $data_states[i].name[/\A#{STATE_NAME_COVER}\Z/]
  2304. result = $data_states[i].id
  2305. break
  2306. end
  2307. end
  2308. @cover_status_id = ( result != nil ? result : 0 )
  2309. elsif @cover_status_id > 0
  2310. result = @cover_status_id
  2311. end
  2312. return result
  2313. end
  2314. end
  2315. ####Module End
  2316. #//////////////////////////////////////////////////////////////////////////////
  2317. # ◇ インクルード
  2318. #//////////////////////////////////////////////////////////////////////////////
  2319. module Check_ElementName_Set
  2320. include Fixed_PropertyNumber if $xrxs24_weapon_property_system_work
  2321. end
  2322. class Game_Battler
  2323. include Check_ElementName_Set
  2324. include Cover_Module
  2325. end
  2326. class Window_Item < Window_Selectable
  2327. include Check_ElementName_Set
  2328. end
  2329. class Scene_Battle
  2330. include Check_ElementName_Set
  2331. include Cover_Module
  2332. end
  2333. #==============================================================================
  2334. # ◇ RPG::再定義「"SP "を含む場合SPダメージとして色を変更」
  2335. #==============================================================================
  2336. module RPG
  2337. class Sprite < ::Sprite
  2338. alias xrxs19_damage damage
  2339. def damage(value, critical)
  2340. if value.is_a?(String) and value.include?($data_system.words.sp)
  2341. # 解放
  2342. dispose_damage
  2343. # 数値部分を抜き取る
  2344. value = value.scan(/[+-]?[0-9]+/)[0].to_i
  2345. # 表示文字列の設定
  2346. damage_string = $data_system.words.sp + " " + value.abs.to_s
  2347. # 描写
  2348. bitmap = Bitmap.new(160, 48)
  2349. bitmap.font.name = "黑体"
  2350. bitmap.font.size = 32
  2351. bitmap.font.color.set(0, 0, 0)
  2352. bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  2353. bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  2354. bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  2355. bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  2356. if value < 0
  2357. bitmap.font.color.set(128, 255, 255)
  2358. else
  2359. bitmap.font.color.set(255, 176, 144)
  2360. end
  2361. bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  2362. if critical
  2363. bitmap.font.size = 20
  2364. bitmap.font.color.set(0, 0, 0)
  2365. bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  2366. bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  2367. bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  2368. bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  2369. bitmap.font.color.set(255, 255, 255)
  2370. bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  2371. end
  2372. @_damage_sprite = ::Sprite.new(self.viewport)
  2373. @_damage_sprite.bitmap = bitmap
  2374. @_damage_sprite.ox = 80
  2375. @_damage_sprite.oy = 20
  2376. @_damage_sprite.x = self.x
  2377. @_damage_sprite.y = self.y - self.oy / 2
  2378. @_damage_sprite.z = 3000
  2379. @_damage_duration = 40
  2380. else
  2381. # 通常時?戻す
  2382. xrxs19_damage(value, critical)
  2383. end
  2384. end
  2385. end
  2386. end
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2011-12-18
帖子
34
4
 楼主| 发表于 2012-1-22 10:12:06 | 只看该作者
A.actor 发表于 2012-1-22 10:07
只要把这段脚本插入到MAIN前面就可以了,并且一定要在数据库——系统——属性里设置上【武器投掷】和【投掷 ...

虽然不是我想问的意思,但你辛辛苦苦找了个脚本……我认可答案了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 21:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表