|
楼主 |
发表于 2008-8-30 00:16:31
|
显示全部楼层
上面已经说了最基本的攻击捕捉,这次就说说很多人的梦想——创造属于自己的攻击事件~
给每个单位添加 攻击捕捉 这个技能,就能够捕捉所有单位攻击产生伤害的事件了。
还是以上图的技能和触发器为基础,说说怎么实现属性(敏捷)决定闪避几率,抱歉这可能要用到一点JASS
触发如下:- function H2I takes handle i returns integer
- return i
- return 0
- endfunction
- function GetStoredUnit takes string i,string key returns unit
- return GetStoredInteger(bj_lastCreatedGameCache,i,key)
- return null
- endfunction
- function SetAssailable takes nothing returns nothing
- local timer localtimer = GetExpiredTimer()
- local string str = I2S(H2I(localtimer))
- call SetUnitInvulnerable(GetStoredUnit(str,"unit"),false)
- call FlushStoredMission(bj_lastCreatedGameCache,str)
- set localtimer = null
- endfunction
复制代码 [trigger]
对战初始化
事件
地图初始化
条件
动作
游戏缓存 - 创建游戏缓存,使用文件名: MapName.w3v
自定义代码: set bj_wantDestroyGroup = true
单位组 - 选取 ((可用地图区域) 内的所有单位) 内所有单位做动作
Loop - 动作
触发器 - 为 AttackEvent <预设> 添加事件: (单位 - (选取单位) 接受伤害)
单位 - 添加 攻击捕捉 给 (选取单位)
[/trigger]
[trigger]
New
事件
单位 - 单位进入 (可用地图区域)
条件
动作
触发器 - 为 AttackEvent <预设> 添加事件: (单位 - (进入的单位) 接受伤害)
单位 - 添加 攻击捕捉 给 (进入的单位)
[/trigger]
[trigger]
AttackEvent
事件
条件
((触发单位) 拥有 攻击捕捉BUFF ) 等于 TRUE
动作
设置 TempUnit = (触发单位)
单位 - 删除 攻击捕捉BUFF 从 TempUnit
如果所有条件成立则做动作1,否则做动作2
If - 条件
(随机实数,最小值: 0.00 最大值: 1.00) 大于 (1.00 / (1.00 + (0.06 x (转换 (敏捷 对 TempUnit (包括 加成)) 为实数))))
Then - 动作
漂浮文字 - 创建漂浮文字:未击中 在 (伤害来源) 头顶Z轴偏移 0.00 处,字体大小: 10.00 ,颜色值:(100.00%, 0.00%, 0.00%) ,透明度: 0.00%
漂浮文字 - 设置 (最后创建的漂浮文字) : 禁用 永久显示.
漂浮文字 - 设置 (最后创建的漂浮文字) 的移动速率为 54.00 ,方向为 90.00 度
漂浮文字 - 设置 (最后创建的漂浮文字) 的生命周期为 3.00 秒
漂浮文字 - 设置 (最后创建的漂浮文字) 的消逝时间点为 1.00 秒
单位 - 设置 TempUnit 无敌的
自定义代码: set udg_TempTimer = CreateTimer()
自定义代码: call StoreInteger(bj_lastCreatedGameCache,I2S(H2I(udg_TempTimer)),"unit",H2I(udg_TempUnit))
自定义代码: call TimerStart(udg_TempTimer,0,false,function SetAssailable)
Else - 动作
[/trigger]
这个演示,能够让单位的闪避几率和敏捷相关,几率公式等于护甲减伤公式
其中的JASS部分,只是为了在设置单位无敌躲避攻击伤害后立即使单位复原。
由于腐蚀之球是法球类技能,所以采用攻击捕捉系统的话,就不要使单位具有其他法球技能了。一般的法球,都可以通过捕捉攻击事件来完美模拟,当然也有一些是模拟不了的。
这些是完全不能模拟或者不能完全模拟的:弹幕攻击,弹射攻击,溅射攻击,直线攻击(其他的一时想不起来了),其中弹幕攻击是最大的遗憾,完全不能模拟。
关于球体技能的冲突,如果想了解更多,可以参考这个帖子
http://www.islga.org/bbs/read.php?tid=578 |
|