-
Notifications
You must be signed in to change notification settings - Fork 4
/
index.coffee
54 lines (49 loc) · 1.06 KB
/
index.coffee
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
match = (a, b) -> (a.high is b.high) and (a.low is b.low)
module.exports = class Recall
constructor: (dispatch) ->
party = {}
id =
high: 0
low: 0
dispatch.hook 'sSelfInfo', (data) ->
id = data.cid
return
dispatch.hook 'sAbsorbDamage', (data) ->
if !match data.target, id
dispatch.toClient 'sAttackResult',
source: id
target: data.target
model: 10101
skill: 10100 + 0x4000000
stage: 0
unk1: 0
id: 0
time: 0
damage: data.damage
type: 1
type2: 4
crit: 0
unk2: 0
unk3: 0
unk4: 0
unk5: 0
unk6: 0
unk7: 0
unk8: 0
unk9: 0
unk10: 0
unk11: []
return
dispatch.hook 'sPartyList', (data) ->
party = {}
for member in data.members
party[member.cID.high] ?= {}
party[member.cID.high][member.cID.low] = 1
return
dispatch.hook 'sAttackResult', (data) ->
if party[data.source.high]?[data.source.low]?
if data.type is 1
noct = +match data.source, id
data.source = id
data.type2 = (data.type2 & ~4) | (noct << 2)
true