赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 47 |
经验 | 251834 |
最后登录 | 2024-10-11 |
在线时间 | 5240 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4684
- 在线时间
- 5240 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
本帖最后由 protosssonny 于 2012-10-18 13:08 编辑
先给范例链接:http://pan.baidu.com/share/link?shareid=87287&uk=875076719
实现要求:强迫对方某一敌手攻击我方嘲讽技能使用者。范例中技能使用者是3号角色泰伦斯。
使用方法:
1、新状态设计。需要设计两个新状态,分别给技能被嘲讽的敌人和使用者附加。
(1)新状态1,给被嘲讽的敌人附加的状态,范例中默认是26号状态。敌人附加状态时的文字填上“被激怒了!”;敌人状态解除时的文字填上“不再愤怒!”。
(2)新状态2,给技能使用者附加的状态,范例中默认是27号状态。
(3)两个状态持续的回合数必须要保持一致,因为只有两个状态同事存在时,嘲讽才会有效。比如同时填1~1,持续1个回合。
有了这两个状态后,被附加“被嘲讽”状态的敌人就会强制攻击附加“嘲讽”状态的角色,也就是技能使用者。
2、新技能设计。比如范例中的第127号技能是嘲讽技能。新技能必须这样设计:
(1)速度修正为正,比如为300,这样本技能才能在回合以开始就释放出来,让指定敌人攻击自己。若不设定速度修正,有可能敌人已经攻击完毕才释放技能,达不到目的。
(2)“使用效果”栏中要设定附加状态,就是让敌人增加仇恨的状态。也是脚本设定中“BEICHAOFENG”定义的状态ID。范例中默认是26号“被嘲讽”状态。
(3)伤害计算公式的类型除了“无”以外随便填,属性随便填,但是计算公式必须填写a.add_state(P叔::CHAOFENG)。意思就是要让技能使用者(即a)附加脚本设定中“CHAOFENG”定义的状态ID。范例中默认是27号“嘲讽”状态。
按要求上图:
3号角色泰伦斯嘲讽了史莱姆B:
史莱姆B因被嘲讽而攻击3号角色泰伦斯:
按要求上脚本:- #==============================================================================
- # ■ 系统设定
- #------------------------------------------------------------------------------
- module P叔
- # 请在下面设定敌人被嘲讽后附加的状态的ID,默认ID是26
- BEICHAOFENG = 26
- # 请在下面设定角色释放嘲讽后自己附加的状态的ID,默认ID是27
- CHAOFENG = 27
- end
- #==============================================================================
- #==============================================================================
- # ■ Game_Action
- #------------------------------------------------------------------------------
- # 处理战斗中的行动的类。本类在 Game_Battler 类的内部使用。
- #==============================================================================
- class Game_Action
- #--------------------------------------------------------------------------
- # ● 目标为敌人 # 再定义
- #--------------------------------------------------------------------------
- def targets_for_opponents
- if item.for_random?
- Array.new(item.number_of_targets) { opponents_unit.random_target }
- elsif item.for_one?
- num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
- if @target_index < 0
- # 当攻击者处于被嘲讽状态并且攻击者是敌人时
- if @subject.state?(P叔::BEICHAOFENG) and @subject.is_a?(Game_Enemy)
- # 攻击目标为处于嘲讽状态的角色
- $game_party.alive_members.each do |actor|
- return [actor] * num if actor.state?(P叔::CHAOFENG) end
- end
- return [opponents_unit.random_target] * num
- else
- [opponents_unit.smooth_target(@target_index)] * num
- end
- else
- opponents_unit.alive_members
- end
- end
- end
- #==============================================================================
- # ■ Game_ActionResult
- #------------------------------------------------------------------------------
- # 战斗行动结果的管理类。本类在 Game_Battler 类的内部使用。
- #==============================================================================
- class Game_ActionResult
- #--------------------------------------------------------------------------
- # ● 获取 HP 伤害的文字 # 再定义
- #--------------------------------------------------------------------------
- def hp_damage_text
- if @hp_drain > 0
- fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
- sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
- elsif @hp_damage > 0
- fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
- sprintf(fmt, @battler.name, @hp_damage)
- elsif @hp_damage < 0
- fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
- sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
- else
- fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
- # 修改以下脚本,以消除附加被嘲讽状态时HP伤害为0而显示“毫发无伤”的文字。
- sprintf(fmt, @battler.name) unless @battler.state?(P叔::BEICHAOFENG)
- end
- end
- end
- #==============================================================================
- # ■ Game_Battler
- #------------------------------------------------------------------------------
- # 处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
- #==============================================================================
- class Game_Battler < Game_BattlerBase
- #--------------------------------------------------------------------------
- # ● 判定状态是否可以附加 # 再定义
- #--------------------------------------------------------------------------
- def state_addable?(state_id)
- # 取消了对!state_removed?(state_id)的判断。
- # 如果执行该判断将导致状态附加失败。
- alive? && $data_states[state_id] && !state_resist?(state_id) &&
- !state_restrict?(state_id)
- end
- end
复制代码 |
评分
-
查看全部评分
|