This is code in progress, but I'm getting a SyntaxError: Invalid left-hand side in assignment message when I save the script. It is a retooling of the Fodderator.js script. I've scanned line by line, but I can't find it. Any assistance will be greatly appreciated. /**
* Generates World War Cthulhu Characters
*
* Syntax: !WWCGen option
*
*/
var WWCGen = WWCGen || {
version: "0.0.1",
output: [],
listen: function () {
on('chat:message', function (msg) {
// Exit if not an api command
if (msg.type != "api") {
return;
}
if (msg.content.indexOf("!WWCGen ") != -1) {
var input = msg.content.split(" ");
WWCGen.setTables(input[1]);
sendChat('API', "/w gm <h6>Generating character</h6>");
WWCGen.generate(msg, WWCGen.printSheet, WWCGen.save);
}
});
},
generate: function (msg, outputCallback, saveCallback) {
WWCGen.id = msg.playerid;
WWCGen.name = msg.who + " #" + (findObjs({
_type: "character",
controlledby: msg.playerid
}).length + 1)
WWCGen.player = msg.who;
WWCGen.GenStats();
WWCGen.GenRolls();
WWCGen.GenNationality();
WWCGen.GenUpbringing();
WWCGen.GenPersonality();
WWCGen.GenPreWar();
WWCGen.GenMilServ();
WWCGen.GenEncounter();
WWCGen.GenRecruitment();
WWCGen.GenIncome();
setTimeout(outputCallback, 2500, msg, saveCallback);
},
GenStats: function () {
WWCGen.STR_roll = randomInteger(6) + randomInteger(6) + randomInteger(6);
WWCGen.CON_roll = randomInteger(6) + randomInteger(6) + randomInteger(6);
WWCGen.POW_roll = randomInteger(6) + randomInteger(6) + randomInteger(6);
WWCGen.DEX_roll = randomInteger(6) + randomInteger(6) + randomInteger(6);
WWCGen.APP_roll = randomInteger(6) + randomInteger(6) + randomInteger(6);
WWCGen.SIZ_roll = randomInteger(6) + randomInteger(6) + 6;
WWCGen.INT_roll = randomInteger(6) + randomInteger(6) + 6;
WWCGen.EDU_roll = randomInteger(6) + randomInteger(6) + randomInteger(6) + 6;
},
GenRolls: function () {
WWCGen.STR = WWCGen.STR_roll * 5;
WWCGen.CON = WWCGen.CON_roll * 5;
WWCGen.POW = WWCGen.POW_roll * 5;
WWCGen.DEX = WWCGen.DEX_roll * 5;
WWCGen.APP = WWCGen.APP_roll * 5;
WWCGen.SIZ = WWCGen.SIZ_roll * 5;
WWCGen.INT = WWCGen.INT_roll * 5;
WWCGen.EDU = WWCGen.EDU_roll * 5;
WWCGen.SAN = WWCGen.POW_roll * 5;
WWCGen.Age = WWCGen.EDU_roll + 6;
WWCGen.PER = WWCGen.INT_roll * 10;
WWCGen.OCC = WWCGen.EDU_roll * 20;
WWCGen.DODGE = WWCGen.DEX_roll * 2;
WWCGen.RADIO = WWCGen.INT_roll * 2;
WWCGen.LO == WWCGen.EDU_roll * 5;
},
GenNationality: function () {
sendChat("API", "/roll 1t[Nationality]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Nationality = content.rolls[0].results[0].tableItem.name;
});
},
GenUpbringing: function () {
sendChat("API", "/roll 1t[Upbringing]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Upbringing = content.rolls[0].results[0].tableItem.name;
});
},
GenPersonality: function () {
sendChat("API", "/roll 1t[Personality]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Personality = content.rolls[0].results[0].tableItem.name;
});
},
GenPreWar: function () {
sendChat("API", "/roll 1t[Pre-War_Occupation]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Pre - War_Occupation = content.rolls[0].results[0].tableItem.name;
});
},
GenMilServ: function () {
sendChat("API", "/roll 1t[Military_Service]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Military_Service = content.rolls[0].results[0].tableItem.name;
});
},
GenEncounter: function () {
sendChat("API", "/roll 1t[Mythos_Encounter]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Mythos_Encounter = content.rolls[0].results[0].tableItem.name;
});
},
GenRecruitment: function () {
sendChat("API", "/roll 1t[Reason_for_Joining]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Reason_for_Joining = content.rolls[0].results[0].tableItem.name;
});
},
GenIncome: function () {
sendChat("API", "/roll 1t[Income]", function (result) {
var content = JSON.parse(result[0].content);
WWCGen.Income = content.rolls[0].results[0].tableItem.name;
});
},
printSheet: function (msg, saveCallback) {
var styleLabel = "style='font-weight: bold; padding: 5px;'";
var styleVal = "style='padding: 5px;'";
WWCGen.output['Name'] = "<tr><td style='font-weight: bold; padding: 5px;'>Name</td><td style='padding: 5px;'>" + WWCGen.Name + "</td></tr>";
WWCGen.output['STR'] = "<tr><td style='font-weight: bold; padding: 5px;'>STR</td><td style='padding: 5px;'>" + WWCGen.STR + "</td></tr>";
WWCGen.output['CON'] = "<tr><td style='font-weight: bold; padding: 5px;'>CON</td><td style='padding: 5px;'>" + WWCGen.CON + "</td></tr>";
WWCGen.output['SIZ'] = "<tr><td style='font-weight: bold; padding: 5px;'>SIZ</td><td style='padding: 5px;'>" + WWCGen.SIZ + "</td></tr>";
WWCGen.output['DEX'] = "<tr><td style='font-weight: bold; padding: 5px;'>DEX</td><td style='padding: 5px;'>" + WWCGen.DEX + "</td></tr>";
WWCGen.output['APP'] = "<tr><td style='font-weight: bold; padding: 5px;'>APP</td><td style='padding: 5px;'>" + WWCGen.APP + "</td></tr>";
WWCGen.output['INT'] = "<tr><td style='font-weight: bold; padding: 5px;'>INT</td><td style='padding: 5px;'>" + WWCGen.INT + "</td></tr>";
WWCGen.output['POW'] = "<tr><td style='font-weight: bold; padding: 5px;'>POW</td><td style='padding: 5px;'>" + WWCGen.POW + "</td></tr>";
WWCGen.output['EDU'] = "<tr><td style='font-weight: bold; padding: 5px;'>EDU</td><td style='padding: 5px;'>" + WWCGen.EDU + "</td></tr>";
WWCGen.output['Age'] = "<tr><td style='font-weight: bold; padding: 5px;'>Age</td><td style='padding: 5px;'>" + WWCGen.Age + "</td></tr>";
WWCGen.output['SAN'] = "<tr><td style='font-weight: bold; padding: 5px;'>SAN</td><td style='padding: 5px;'>" + WWCGen.SAN + "</td></tr>";
WWCGen.output['MOV'] = "<tr><td style='font-weight: bold; padding: 5px;'>Movement</td><td style='padding: 5px;'>" + WWCGen.MOV + "</td></tr>";
WWCGen.output['Nationality'] = "<tr><td style='font-weight: bold; padding: 5px;'>Nationality</td><td style='padding: 5px;'>" + WWCGen.Nationality + "</td></tr>";
WWCGen.output['Upbringing'] = "<tr><td style='font-weight: bold; padding: 5px;'>Upbringing</td><td style='padding: 5px;'>" + WWCGen.Upbringing + "</td></tr>";
WWCGen.output['Personality'] = "<tr><td style='font-weight: bold; padding: 5px;'>Personality</td><td style='padding: 5px;'>" + WWCGen.Personality + "</td></tr>";
WWCGen.output['PreWar'] = "<tr><td style='font-weight: bold; padding: 5px;'>Pre-War Occupation</td><td style='padding: 5px;'>" + WWCGen.PreWar + "</td></tr>";
WWCGen.output['Milserv'] = "<tr><td style='font-weight: bold; padding: 5px;'>Military Service</td><td style='padding: 5px;'>" + WWCGen.Military_Service + "</td></tr>";
WWCGen.output['Encounter'] = "<tr><td style='font-weight: bold; padding: 5px;'>Initial Mythos Encounter</td><td style='padding: 5px;'>" + WWCGen.Mythos_Encounter + "</td></tr>";
WWCGen.output['Recruitment'] = "<tr><td style='font-weight: bold; padding: 5px;'>Reason for Joining</td><td style='padding: 5px;'>" + WWCGen.Reason_for_Joining + "</td></tr>";
WWCGen.output['Income'] = "<tr><td style='font-weight: bold; padding: 5px;'>Income</td><td style='padding: 5px;'>" + WWCGen.Income + "</td></tr>";
WWCGen.output['DODGE'] = "<tr><td style='font-weight: bold; padding: 5px;'>Dodge</td><td style='padding: 5px;'>" + WWCGen.DODGE + "</td></tr>";
WWCGen.output['LO'] = "<tr><td style='font-weight: bold; padding: 5px;'>Own Language</td><td style='padding: 5px;'>" + WWCGen.LO + "</td></tr>";
WWCGen.output['RADIO'] = "<tr><td style='font-weight: bold; padding: 5px;'>Operate Radio</td><td style='padding: 5px;'>" + WWCGen.RADIO + "</td></tr>";
WWCText1 = "<table font-size: 10px;'> <tbody>" +
WWCGen.output['Name'] +
WWCGen.output['STR'] +
WWCGen.output['CON'] +
WWCGen.output['DEX'] +
WWCGen.output['APP'] +
WWCGen.output['INT'] +
WWCGen.output['POW'] +
WWCGen.output['EDU'] +
WWCGen.output['SAN'] +
WWCGen.output['MOV'] + "</tbody></table>";
WWCText2 = "<table font-size: 10px;'> <tbody>" +
WWCGen.output['Nationality'] +
WWCGen.output['Upbringing'] +
WWCGen.output['Personality'] +
WWCGen.output['PreWar'] +
WWCGen.output['Milserv'] +
WWCGen.output['Encounter'] +
WWCGen.output['Recruitment'] +
WWCGen.output['Income'] + "</tbody></table>";
WWCText2 = "<table font-size: 10px;'> <tbody>" +
WWCGen.output['DODGE'] +
WWCGen.output['LO'] +
WWCGen.output['RADIO'] + "</tbody></table>";
WWCText = WWCText1 + "<p><p>" + WWCText2 + "<p><p>" + WWCText3 + "<p><p>" + WWCText4 + "<p><p>"
sendChat(msg.who, "/direct " + WWCText);
if (typeof saveCallback === "function") {
saveCallback();
}
},
save: function () {
var handout = createObj("handout", {
name: WWCGen.name,
});
player = getObj('player', msg.playerid);
if (player) {
handout = createObj('handout', {
name: 'World War Cthulhu Character for ' + player.get('displayname'),
inplayerjournals: "all",
controlledby: (playerIsGM(msg.playerid) ? '' : msg.playerid)
}
handout.set('notes', WWCText);
handoutId = handout.id;
sendChat('', '/w "' + player.get('displayname') + '" Created a handout for you: <a href="<a href="http://journal.roll20.net/handout/" rel="nofollow">http://journal.roll20.net/handout/</a>' + handout.id + '" style="color:blue;text-decoration:underline;">Handout for ' + player.get('displayname') + '</a>');
}
}
save: function () {
var character = createObj("character", {
name: WWCGen.name,
bio: "",
archived: false,
inplayerjournals: "all",
controlledby: WWCGen.id
});
createObj('attribute', {
name: 'player_name',
current: WWCGen.player,
_characterid: character.id
});
createObj('attribute', {
name: 'Name',
current: WWCGen.name,
_characterid: character.id
});
createObj('attribute', {
name: 'STR',
current: WWCGen.STR,
_characterid: character.id
});
createObj('attribute', {
name: 'CON',
current: WWCGen.CON,
_characterid: character.id
});
createObj('attribute', {
name: 'SIZ',
current: WWCGen.SIZ,
_characterid: character.id
});
createObj('attribute', {
name: 'DEX',
current: WWCGen.DEX,
_characterid: character.id
});
createObj('attribute', {
name: 'APP',
current: WWCGen.APP,
_characterid: character.id
});
createObj('attribute', {
name: 'INT',
current: WWCGen.INT,
_characterid: character.id
});
createObj('attribute', {
name: 'POW',
current: WWCGen.POW,
_characterid: character.id
});
createObj('attribute', {
name: 'EDU',
current: WWCGen.EDU,
_characterid: character.id
});
createObj('attribute', {
name: 'san',
current: WWCGen.SAN,
_characterid: character.id
});
createObj('attribute', {
name: 'Age',
current: WWCGen.Age,
_characterid: character.id
});
createObj('attribute', {
name: 'MOV',
current: '8',
_characterid: character.id
});
createObj('attribute', {
name: 'dodge',
current: WWCGen.DODGE,
_characterid: character.id
});
createObj('attribute', {
name: 'language_own',
current: WWCGen.LO,
_characterid: character.id
});
createObj('attribute', {
name: 'operate_radio',
current: WWCGen.RADIO,
_characterid: character.id
});
createObj('attribute', {
name: 'Nationality',
current: WWCGen.Nationality,
_characterid: character.id
});
createObj('attribute', {
name: 'Upbringing',
current: WWCGen.Upbringing,
_characterid: character.id
});
createObj('attribute', {
name: 'Personality',
current: WWCGen.Personality,
_characterid: character.id
});
createObj('attribute', {
name: 'occupation',
current: WWCGen.Pre - War_Occupation,
_characterid: character.id
});
createObj('attribute', {
name: 'milserv',
current: WWCGen.Military_Service,
_characterid: character.id
});
createObj('attribute', {
name: 'mythos_encounter',
current: WWCGen.Mythos_Encounter,
_characterid: character.id
});
createObj('attribute', {
name: 'recruitment',
current: WWCGen.Reason_for_Joining,
_characterid: character.id
});
createObj('attribute', {
name: 'wealth',
current: WWCGen.Income,
_characterid: character.id
});
createObj('attribute', {
name: 'dodge'
current: WWCGen.DODGE,
_characterid: character.id
});
createObj('attribute', {
name: 'language_own',
current: WWCGen.LO,
_characterid: character.id
});
createObj('attribute', {
name: 'operate_radio',
current: WWCGen.RADIO,
_characterid: character.id
});
}
};
on("ready", function () {
WWCGen.listen();
});