1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
// TMW2 Scripts
// Author:
// The Mana World Brazil
// Jesusalva
// Description:
// Traps and other functions.
// SteelTrap( {damage=80%}, {delay=15s}, {stun=3s}, {npcname=auto} )
function script SteelTrap {
.@dmg=getarg(0, 80);
.@delay=getarg(1, 15);
.@stun=getarg(2, 3);
.@n$=getarg(3, strnpcinfo(0));
// It was disarmed
if (getnpctimer(0) == 0)
{
initnpctimer;
setnpcdisplay .@n$, NPC_TRAP_ONLINE;
return;
}
// Fire!!
setnpctimer 9000;
setnpcdisplay .@n$, NPC_TRAP_TRIGGERED;
// Boom - Hurt players and/or stun monsters
// This means you can - and SHOULD - lead Forains into these traps
if (playerattached())
{
percentheal -(.@dmg), 0;
}
else
{
.@stun*=1000;
sc_start SC_WALKSPEED,(.@delay*1000),60;
sc_start SC_STUN,rand(.@stun,.@stun*3),0;
}
// A minor special effect and we're done.
specialeffect 11;
return;
}
// Unlike SteelTrap, presents same behavior and absolute damage
// IronTrap( {damage=100}, {delay=15s}, {stun=3s}, {npcname=auto} )
function script IronTrap {
.@dmg=getarg(0, 100);
.@delay=getarg(1, 15);
.@stun=getarg(2, 3);
.@n$=getarg(3, strnpcinfo(0));
// It was disarmed
if (getnpctimer(0) == 0 && .@delay)
{
initnpctimer;
setnpcdisplay .@n$, NPC_TRAP_ONLINE;
return;
}
// Fire!!
setnpctimer 9000;
setnpcdisplay .@n$, NPC_TRAP_TRIGGERED;
// Boom - Hurt and Stun (only works on players and mobs)
.@stun*=1000;
sc_start SC_STUN, rand2(.@stun,.@stun*3), 0;
.@gid=(playerattached() ? playerattached() : mobattached());
// Just to be sure
if (.@gid > 0)
harm(.@gid, .@dmg, HARM_MISC);
else
Exception("IronTrap \""+.@n$+"\" called without GID!", RB_DEBUGMES);
// A minor special effect and we're done.
specialeffect 11;
return;
}
// WorldHeartTrap( {damage=8%}, {delay=6s}, {npcname=auto} )
function script WorldHeartTrap {
.@dmg=getarg(0, 8);
.@delay=getarg(1, 6);
.@n$=getarg(2, strnpcinfo(0));
// It cannot be disarmed, but unhide it anyway
if (getnpctimer(0) == 0 && getnpcclass() == NPC_TRAP)
{
initnpctimer;
setnpcdisplay .@n$, NPC_TRAP_ONLINE;
setnpctimer 9000;
}
// Fire!!
setnpcdisplay .@n$, NPC_TRAP_TRIGGERED;
// Unlike regular traps, the damage is centered on players
// Monsters are largely unaffected by them!
if (playerattached()) {
percentheal -(.@dmg), 0;
sc_start SC_WALKSPEED,(.@delay*1000),60;
} else {
sc_start SC_WALKSPEED,(.@delay*1000),64;
}
// A minor special effect and we're done.
specialeffect 11;
return;
}
// SkillTrap( {damage=100}, {delay=2s}, {npcname=auto} )
function script SkillTrap {
.@dmg=getarg(0, 100);
.@delay=getarg(1, 2);
.@n$=getarg(2, strnpcinfo(0));
// Fire!!
awake(.@n$);
setnpcdisplay .@n$, NPC_TRAP_TRIGGERED;
// Skill traps does not distinguish between players or monsters
// (and does not work on homunculus, mercenaries, etc.)
sc_start SC_STUN, .@delay, 0;
.@gid=(playerattached() ? playerattached() : mobattached());
// Just to be sure
if (.@gid > 0)
harm(.@gid, .@dmg, HARM_MISC);
else
Exception("SkillTrap \""+.@n$+"\" called without GID!", RB_DEBUGMES);
// A minor special effect and we're done.
specialeffect 11;
sleep(800);
setnpcdisplay .@n$, NPC_TRAP_ONLINE;
return;
}
|