作者game7895 (triangler)
看板WarCraft
标题[CG] 圣域英雄 德鲁依制作技能介绍
时间Thu Jan 1 21:17:51 2009
范例地图︰
http://chikaru.myweb.hinet.net/Druid.w3x (未锁)
所需材料︰
单位︰
单位名称 注解
德鲁依 Druid 模组是熊德的英雄※(见注一)
1点怒气 随便一个人畜无害的单位*5
2点怒气
3点怒气
4点怒气
5点怒气
撕裂 适合拿来放法术的单位
※注一︰
德鲁依必须有这些内建技能︰
英雄技能 爪击 撕裂 狂怒 熊掌击
普通技能 爪击aspd 爪击orb 物品栏(英雄)
技能︰
技能名称 技能基底 注解
爪击 bash或cri为佳 只是当icon,所以找个可以把机率
调成0的被动技能
撕裂 channel
狂怒 channel
熊掌击 channel
怒气1 球体 ※(见注二)
怒气2 球体
怒气3 球体
怒气4 球体
怒气5 球体
撕裂 出血 邪狂气
爪击 orb 物品开火腐败加成
爪击 aspd 物品攻击速度加成 ※(见注三)
怒气 atk 战意
※注二︰
原本我想把五个怒气塞在同一个技能,用等级控制
可是技能的美术设定不会因为等级而更改,所以五点怒气只好分开成五个技能
※注三︰
爪击aspd这个技能有10级,数值设定是这样︰
lv1 0
lv2 -0.3
lv3 -0.2
lv4 -0.1
lv5 0
lv6 0.1
lv7 0.2
lv8 0.3
lv9 0.4
lv10 0.5
变数︰
变数名称 变数类型 注解
ALH_Dru_AtkedUnit 单位(unit) 纪录被普攻的单位
ALH_Dru_Ball 技能(ability) 阵列
ALH_Dru_BallInt 整数(integer) 纪录目前怒气等级
ALH_Dru_BallLimit 单位(unit) 纪录生出来的怒气限制,阵列
ALH_Dru_BallLimitType单位类型(unit-type) 阵列
ALH_Dru_FuryTimer 计时器(timer) 纪录狂怒持续时间
ALH_Dru_Hero 单位(unit) 纪录德鲁依
升级
名称 升级类型 注解
爪击攻击力 atk dmg bonus 爪击的攻击力升级※(见注四)
增益
增益名称 注解
爪击 判断怒气打人
怒气 攻击力加成
撕裂 出血
※注四
爪击攻击力的设定是base 10,increment 10
音效
音效名称 注解
RockHeavyBashFlesh1 熊掌击打人音效
GrizzlyBearReady1 狂怒熊吼
杂物︰
区域一个,名称随意,位置不要有单位可以走到就好
给打的靶子单位*1
触发︰
Dru Set Variable
Events
Map initialization
Conditions
Actions
Set ALH_Dru_Ball[1] = Dru 怒气1
Set ALH_Dru_Ball[2] = Dru 怒气2
Set ALH_Dru_Ball[3] = Dru 怒气3
Set ALH_Dru_Ball[4] = Dru 怒气4
Set ALH_Dru_Ball[5] = Dru 怒气5
//先把技能阵列设好,才能用阵列值抓
Set ALH_Dru_BallLimitType[1] = 1点怒气
Set ALH_Dru_BallLimitType[2] = 2点怒气
Set ALH_Dru_BallLimitType[3] = 3点怒气
Set ALH_Dru_BallLimitType[4] = 4点怒气
Set ALH_Dru_BallLimitType[5] = 5点怒气
//先把单位类型阵列设好,才能用阵列值抓
Dru Learn Craw
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Dru 爪击
Actions
Unit - Set level of Dru 爪击aspd for (Learning Hero) to (6 - (Level of
Dru 爪击 for (Learning Hero)))
//看看上面的注三,由於爪击等级1234时aspd必须是0%/-10%/-20%/-30%,在爪击aspd
对到的等级刚好是5432,也就是6-爪击等级
Player - Set the current research level of Dru 爪击攻击力 to (Level of
Dru 爪击 for (Learning Hero)) for (Owner of (Learning Hero))
//升级就1234级罗,跟爪击等级相同
Trigger - Turn on
Dru Craw atk <gen>
//学了爪击,打人才有怒气 │
│
Dru Craw atk ←─────┘
Events
Unit - A unit Is attacked
Conditions
(Unit-type of (Attacking unit)) Equal to 德鲁依 Druid
Actions
Set ALH_Dru_AtkedUnit = (Attacked unit)
Set ALH_Dru_Hero = (Attacking unit)
//用全域变数传递攻击者跟被攻击者
Trigger - Turn on
Dru Craw chech buff <gen>
//打人才开buff判定触发 │
Dru Craw chech buff ←────┘
Events
Time - Every 0.10 seconds of game time
Conditions
(ALH_Dru_AtkedUnit has buff Dru 爪击 ) Equal to True
//由於unit is attacked这条函数是从右键点人就有,而非打到人才有,所以需要更精准
的判定方式,我选择的是用法球方式,法球每「击中」一次会给一个buff
所以目标有buff就是真正被击中了,这时候就可以作很多事
Actions
Unit - Remove Dru buff from ALH_Dru_AtkedUnit
//先把buff删掉
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(ALH_Dru_BallInt + 1) Less than or equal to 5
//怒气上限到5,所以5之前都要一直加怒气
Then - Actions
Unit - Remove ALH_Dru_Ball[ALH_Dru_BallInt] from ALH_Dru_Hero
Set ALH_Dru_BallInt = (ALH_Dru_BallInt + 1)
Unit - Add ALH_Dru_Ball[ALH_Dru_BallInt] to ALH_Dru_Hero
//球体技能是分开的,所以怒气每加一次就要换一次技能
//先删目前的,然後怒气加1,再加上正确技能
For each (Integer A) from 1 to ALH_Dru_BallInt, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions)
else do (Else Actions)
If - Conditions
(Number of living
ALH_Dru_BallLimitType[(Integer A)] units owned by (Owner of ALH_Dru_Hero))
Equal to 0
//判定怒气限制单位生出来了没
Then - Actions
Unit - Create 1
ALH_Dru_BallLimitType[(Integer A)] for (Owner of ALH_Dru_Hero) at (Random
point in food <gen>) facing Default building facing degrees
//把怒气单位生在没人会去的区域
Set ALH_Dru_BallLimit[ALH_Dru_BallInt] =
(Last created unit)
用单位阵列设好才好抓
Else - Actions
Do nothing
Trigger - Turn off (This trigger)
//普攻该做的事都做完了,不要影响下次普攻,关掉
Else - Actions
Do nothing
Dru Laceration
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dru 撕裂
Actions
--------隐形单位给技能--------
Unit - Create 1 撕裂 for (Owner of (Casting unit)) at (Position of
(Casting unit)) facing Default building facing degrees
Unit - Add Dru 撕裂 出血 to (Last created unit)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Hide (Last created unit)
Unit - Order (Last created unit) to Undead Necromancer - Unholy
Frenzy (Target unit of ability being cast)
Unit - Create 1 撕裂 for (Owner of (Casting unit)) at (Position of
(Casting unit)) facing Default building facing degrees
Unit - Add Dru 撕裂 atk to (Last created unit)
Unit - Set level of Dru 撕裂 atk for (Last created unit) to (Level
of (Ability being cast) for (Casting unit))
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Hide (Last created unit)
Unit - Order (Last created unit) to Human Priest - Inner Fire
(Casting unit)
//放隐形单位去出血跟atk buff,取名为撕裂是这样杀人讯息才会写撕裂
-------- 隐形单位给技能--------
For each (Integer A) from 1 to 2, do (Actions)
Loop - Actions
Unit - Kill ALH_Dru_BallLimit[ALH_Dru_BallInt]
Unit - Remove ALH_Dru_Ball[ALH_Dru_BallInt] from ALH_Dru_Hero
Set ALH_Dru_BallInt = (ALH_Dru_BallInt - 1)
Unit - Add ALH_Dru_Ball[ALH_Dru_BallInt] to ALH_Dru_Hero
//怒气判断的系统,消耗2点怒气就跑两次for,杀两只怒气判定单位
Dru Fury
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dru 狂怒
Actions
Sound - Play GrizzlyBearReady1 <gen> at 100.00% volume, attached to
ALH_Dru_Hero
//放狂怒熊吼音效
Countdown Timer - Start ALH_Dru_FuryTimer as a One-shot timer that
will expire in 5.00 seconds
狂怒持续5秒
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Level of Dru 爪击 aspd for (Casting unit)) + 1) Less than or
equal to 10
Then - Actions
Unit - Increase level of Dru 爪击 aspd for (Casting unit)
Else - Actions
Unit - Set level of Dru 爪击 aspd for (Casting unit) to 10
//aspd到10级之前都可以一直升级,满了之後再狂怒只是维持在10级而已
For each (Integer A) from 1 to 3, do (Actions)
Loop - Actions
Unit - Kill ALH_Dru_BallLimit[ALH_Dru_BallInt]
Unit - Remove ALH_Dru_Ball[ALH_Dru_BallInt] from ALH_Dru_Hero
Set ALH_Dru_BallInt = (ALH_Dru_BallInt - 1)
Unit - Add ALH_Dru_Ball[ALH_Dru_BallInt] to ALH_Dru_Hero
怒气判断
Dru Fury Decrease
Events
Time - ALH_Dru_FuryTimer expires
//狂怒计时器时间到
Conditions
Actions
Unit - Decrease level of Dru 爪击 aspd for ALH_Dru_Hero
//时间到,降一级
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Level of Dru 爪击 aspd for ALH_Dru_Hero) - 1) Greater than
or equal to (6 - (Level of Dru 爪击 for ALH_Dru_Hero))
Then - Actions
Countdown Timer - Start ALH_Dru_FuryTimer as a One-shot timer
that will expire in 5.00 seconds
//狂怒在降到目前「初始的aspd等级」之前,应该要一直降
而这个初始的aspd等级跟爪击学到几级有关,就是6-爪击等级
所以只要aspd等级还大於6-爪击等级,就要一直降下去,也就是重跑timer
Else - Actions
Do nothing
Dru BearHand
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dru 熊掌击
Actions
Sound - Play RockHeavyBashFlesh1 <gen> at 100.00% volume, attached to
ALH_Dru_Hero
//播放熊掌巴人音效
Unit - Pause (Casting unit)
//这里要先把熊德定住,不然他接下来的普攻会把播放的攻击动画取消掉
Animation - Change ALH_Dru_Hero's animation speed to 1000.00% of its
original speed
Animation - Play ALH_Dru_Hero's attack alternate animation
Animation - Change ALH_Dru_Hero's animation speed to 100.00% of its
original speed
//把动画速度调快,然後播放熊掌巴人动画
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Target unit of ability being cast) has buff Dru ?厠?) Equal
to True
Then - Actions
Unit - Cause (Casting unit) to damage (Target unit of ability
being cast), dealing 200.00 damage of attack type Spells and
damage type Normal
Else - Actions
Unit - Cause (Casting unit) to damage (Target unit of ability
being cast), dealing 100.00 damage of attack type Spells and
damage type Normal
//有出血打两倍
For each (Integer A) from 1 to 4, do (Actions)
Loop - Actions
Unit - Kill ALH_Dru_BallLimit[ALH_Dru_BallInt]
Unit - Remove ALH_Dru_Ball[ALH_Dru_BallInt] from ALH_Dru_Hero
Set ALH_Dru_BallInt = (ALH_Dru_BallInt - 1)
Unit - Add ALH_Dru_Ball[ALH_Dru_BallInt] to ALH_Dru_Hero
//怒气判断
Unit - Unpause (Casting unit)
好长……中间pcman还当一次,不知道读取暂存档有没有p币?
--
──
T r i a n g l e r Triangler Triangler
r◥██████◤T What is this triangler?
│
e◥████◤r─ ┌─┐ ├─┐ ┌─┐ │ ┌─┐ ┌─
│
l◥██◤i │
君は谁とキスをする? │ │ │ ┘ │
│
g◥◤a │ └─┤ │ │ └─┤ │
坂本真绫 │
│ │
n │ └ │ ─┘ │ └
トライアングラー
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.131.87
1F:→ game7895:头end 01/01 21:18
2F:→ game7895:干 暂存档没p币 01/01 21:18
3F:推 jealous0953:快推 不然人家会以为我们没知识! 01/01 21:20
4F:推 idun:太棒了!! 01/01 21:22
5F:推 wxes50608:推 01/01 21:26
6F:推 Attui:看不懂推 01/01 21:26
7F:推 capedoz:么兽 - - 01/01 21:28
8F:推 ChaosM:推 01/01 21:48
9F:推 b0017570:这个不推不行 01/01 21:52
10F:推 wulouise:万一orb被吸血盖掉 情形是? 01/01 21:59
11F:→ game7895:情形就是162B会出现不能买吸血的修正 01/01 22:01
12F:推 wulouise:不能改成melee买会变成自身灵气吗? 01/01 22:03
13F:→ game7895:是做得到啦 这样好像range变相nerf 法球刀很多的话 01/01 22:04
14F:→ game7895:或是只有dru买才是灵气 01/01 22:05
15F:→ wulouise:也是可以 不然bm买回馈又可以买吸血.. 01/01 22:06
16F:推 FrostMaiden:专业 01/01 22:14
17F:推 bc026057:看不懂 01/01 23:02
18F:推 superzenki:专业! 楼上 我们只要负责玩就好 XD 01/01 23:10
19F:推 egg123:看不懂推 01/01 23:37
20F:推 exliver:程式码 晕... 01/01 23:43
21F:→ robinroy2003:就像在玩RPG制作大师... 01/01 23:53
22F:推 jokermoon:友情推~~ 01/02 00:14
23F:推 svcchaos:push~ 01/02 00:27