Skip to content

Commit 7325fb2

Browse files
author
Jean-Philippe Ghibaudo
committed
AgoneDice v0.4
1 parent 06d138e commit 7325fb2

File tree

3 files changed

+125
-6
lines changed

3 files changed

+125
-6
lines changed

AgoneDice/0.4/AgoneDice.js

+119
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
var AgoneDice = AgoneDice || (function () {
2+
'use strict';
3+
var version = '0.4',
4+
lastUpdate = 1618513706,
5+
6+
checkInstall = function() {
7+
log('### AgoneDice v'+version+' ### ['+(new Date(lastUpdate*1000))+']');
8+
},
9+
10+
handleInput = function(msg_orig) {
11+
var msg = _.clone(msg_orig), args, who, multiplier, dice, result;
12+
13+
if (msg.type == 'desc' || msg.type == 'api') {
14+
return;
15+
}
16+
17+
switch(msg.type) {
18+
case 'rollresult':
19+
case 'gmrollresult':
20+
var diceRoll = JSON.parse(msg.content);
21+
if (diceRoll.rolls.length === 2 && !_.has(diceRoll.rolls[0], 'mods')) {
22+
var i = 1;
23+
if (_.has(diceRoll.rolls[0], 'expr')) {
24+
if (diceRoll.rolls[0].expr.indexOf('-') > -1) {
25+
return;
26+
}
27+
}
28+
} else {
29+
var i = 0;
30+
if (_.has(diceRoll.rolls[1], 'expr')) {
31+
if (diceRoll.rolls[1].expr.indexOf('-') > -1) {
32+
return;
33+
}
34+
}
35+
}
36+
if (!_.has(diceRoll.rolls[i].mods, 'exploding')) {
37+
return;
38+
}
39+
var diceResult = diceRoll.rolls[i].results[0].v || 0;
40+
var total = diceRoll.total || 0;
41+
var prefix = '/r ';
42+
var person = msg.who;
43+
if (msg.type == 'gmrollresult') {
44+
prefix = '/gmroll ';
45+
person = '';
46+
}
47+
if (diceResult === 1) {
48+
sendChat(person, prefix+total+'-1d10!');
49+
}
50+
break;
51+
52+
case 'emote':
53+
if (!_.has(msg, 'inlinerolls') || msg.content.indexOf('Fumble') > -1) {
54+
return;
55+
}
56+
var diceRoll = msg.inlinerolls[0].results;
57+
if (diceRoll.rolls.length === 2 && !_.has(diceRoll.rolls[0], 'mods')) {
58+
var i = 1;
59+
} else {
60+
var i = 0;
61+
}
62+
if (!_.has(diceRoll.rolls[i].mods, 'exploding')) {
63+
return;
64+
}
65+
var diceResult = diceRoll.rolls[i].results[0].v || 0;
66+
var total = diceRoll.total || 0;
67+
if (diceResult === 1) {
68+
sendChat(msg.who, '/me Fumble : [['+total+'-1d10!]] !');
69+
}
70+
break;
71+
72+
case 'whisper':
73+
case 'general':
74+
if (!_.has(msg, 'inlinerolls') || (!_.has(msg, 'rolltemplate')) || (msg.content.indexOf('Fumble') > -1)) {
75+
return;
76+
}
77+
var diceRoll = msg.inlinerolls[0].results;
78+
if (diceRoll.rolls.length === 2 && !_.has(diceRoll.rolls[0], 'mods')) {
79+
var i = 1;
80+
} else {
81+
var i = 0;
82+
}
83+
if (!_.has(diceRoll.rolls[i].mods, 'exploding')) {
84+
return;
85+
}
86+
var diceResult = diceRoll.rolls[i].results[0].v || 0;
87+
var total = msg.inlinerolls[3].results.total || 0;
88+
var t = msg.content.split('{');
89+
t = t[2].split('}');
90+
t = t[0].split('=');
91+
var name = t[1];
92+
var prefix = '';
93+
var person = msg.who;
94+
if (person.indexOf('GM') > -1) {
95+
prefix = '/w gm ';
96+
}
97+
if (diceResult === 1) {
98+
sendChat(person, prefix+"&{template:agone-fumble} {{name=@{"+name+"|character_name}}} {{Fumble=@{"+name+"|fumbleRoll}[[[["+total+"]]-[[1d10!]]]]}} {{Dice=@{"+name+"|rollRoll}: $[[1]]}} {{Roll=@{"+name+"|lastRoll}: $[[0]]}}");
99+
}
100+
break;
101+
}
102+
},
103+
104+
registerEventHandlers = function() {
105+
on('chat:message', handleInput);
106+
};
107+
108+
return {
109+
CheckInstall: checkInstall,
110+
RegisterEventHandlers: registerEventHandlers
111+
};
112+
}());
113+
114+
115+
on('ready', function() {
116+
'use strict';
117+
AgoneDice.CheckInstall();
118+
AgoneDice.RegisterEventHandlers();
119+
});

AgoneDice/AgoneDice.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var AgoneDice = AgoneDice || (function () {
22
'use strict';
3-
var version = '0.3',
4-
lastUpdate = 1616165822,
3+
var version = '0.4',
4+
lastUpdate = 1618513706,
55

66
checkInstall = function() {
77
log('### AgoneDice v'+version+' ### ['+(new Date(lastUpdate*1000))+']');
@@ -84,7 +84,7 @@ var AgoneDice = AgoneDice || (function () {
8484
return;
8585
}
8686
var diceResult = diceRoll.rolls[i].results[0].v || 0;
87-
var total = diceRoll.total || 0;
87+
var total = msg.inlinerolls[msg.inlinerolls.length - 1].results.total || 0;
8888
var t = msg.content.split('{');
8989
t = t[2].split('}');
9090
t = t[0].split('=');
@@ -95,7 +95,7 @@ var AgoneDice = AgoneDice || (function () {
9595
prefix = '/w gm ';
9696
}
9797
if (diceResult === 1) {
98-
sendChat(person, prefix+"&{template:agone-fumble} {{name=@{"+name+"|character_name}}} {{Fumble=@{"+name+"|fumbleRoll}[["+total+"-1d10!]]}}");
98+
sendChat(person, prefix+"&{template:agone-fumble} {{name=@{"+name+"|character_name}}} {{Fumble=@{"+name+"|fumbleRoll}[[[["+total+"]]-[[1d10!]]]]}} {{Dice=@{"+name+"|rollRoll}: $[[1]]}} {{Roll=@{"+name+"|lastRoll}: $[[0]]}}");
9999
}
100100
break;
101101
}

AgoneDice/script.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "AgoneDice",
3-
"version": "0.3",
3+
"version": "0.4",
44
"description": "Allows automatic fumble with Agone-(french) sheet",
55
"authors": "Le GDF",
66
"roll20userid": "1686183",
@@ -9,5 +9,5 @@
99
"conflicts": [],
1010
"script": "AgoneDice.js",
1111
"useroptions": {},
12-
"previousversions": ["0.2"]
12+
"previousversions": ["0.3"]
1313
}

0 commit comments

Comments
 (0)