Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Can't find SyntaxError: Invalid left-hand side in assignment

This is code in progress, but I'm getting a&nbsp; SyntaxError: Invalid left-hand side in assignment &nbsp;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 &lt;h6&gt;Generating character&lt;/h6&gt;"); 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'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Name&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Name + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['STR'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;STR&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.STR + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['CON'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;CON&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.CON + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['SIZ'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;SIZ&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.SIZ + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['DEX'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;DEX&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.DEX + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['APP'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;APP&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.APP + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['INT'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;INT&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.INT + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['POW'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;POW&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.POW + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['EDU'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;EDU&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.EDU + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Age'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Age&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Age + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['SAN'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;SAN&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.SAN + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['MOV'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Movement&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.MOV + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Nationality'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Nationality&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Nationality + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Upbringing'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Upbringing&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Upbringing + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Personality'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Personality&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Personality + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['PreWar'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Pre-War Occupation&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.PreWar + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Milserv'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Military Service&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Military_Service + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Encounter'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Initial Mythos Encounter&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Mythos_Encounter + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Recruitment'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Reason for Joining&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Reason_for_Joining + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['Income'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Income&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.Income + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['DODGE'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Dodge&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.DODGE + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['LO'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Own Language&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.LO + "&lt;/td&gt;&lt;/tr&gt;"; WWCGen.output['RADIO'] = "&lt;tr&gt;&lt;td style='font-weight: bold; padding: 5px;'&gt;Operate Radio&lt;/td&gt;&lt;td style='padding: 5px;'&gt;" + WWCGen.RADIO + "&lt;/td&gt;&lt;/tr&gt;"; WWCText1 = "&lt;table font-size: 10px;'&gt; &lt;tbody&gt;" + 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'] + "&lt;/tbody&gt;&lt;/table&gt;"; WWCText2 = "&lt;table font-size: 10px;'&gt; &lt;tbody&gt;" + WWCGen.output['Nationality'] + WWCGen.output['Upbringing'] + WWCGen.output['Personality'] + WWCGen.output['PreWar'] + WWCGen.output['Milserv'] + WWCGen.output['Encounter'] + WWCGen.output['Recruitment'] + WWCGen.output['Income'] + "&lt;/tbody&gt;&lt;/table&gt;"; WWCText2 = "&lt;table font-size: 10px;'&gt; &lt;tbody&gt;" + WWCGen.output['DODGE'] + WWCGen.output['LO'] + WWCGen.output['RADIO'] + "&lt;/tbody&gt;&lt;/table&gt;"; WWCText = WWCText1 + "&lt;p&gt;&lt;p&gt;" + WWCText2 + "&lt;p&gt;&lt;p&gt;" + WWCText3 + "&lt;p&gt;&lt;p&gt;" + WWCText4 + "&lt;p&gt;&lt;p&gt;" 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: &lt;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;"&gt;Handout for ' + player.get('displayname') + '&lt;/a&gt;'); } } 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(); });
1661739033

Edited 1661739109
Oosh
Sheet Author
API Scripter
I'd highly recommend using a linter so you don't need to waste your time manually scanning for things like this: You also have: line 206 - missing closing bracket for createObj line 211 - missing comma between properties line 342 - missing comma between properties edit - line numbers are obviously from the above post, and might be out by a couple if that's not an exact match of your local copy