Skip to content

Commit

Permalink
lots of lmop work in template & in family and sean worlds. Mostly cha…
Browse files Browse the repository at this point in the history
…racter creations.
  • Loading branch information
ChrisAndelin committed Aug 2, 2021
1 parent 7496725 commit e97cb1c
Show file tree
Hide file tree
Showing 26 changed files with 207 additions and 236 deletions.
82 changes: 38 additions & 44 deletions lmop-family/data/actors.db

Large diffs are not rendered by default.

35 changes: 1 addition & 34 deletions lmop-family/data/chat.db

Large diffs are not rendered by default.

17 changes: 5 additions & 12 deletions lmop-family/data/fog.db

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions lmop-family/data/folders.db
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{"_id":"4VW5ZU2BKVxZVUdN","name":"Thundertree","type":"Actor","sort":2700000,"flags":{},"parent":"dKuzbyQztndLPaBc","sorting":"a","color":""}
{"name":"Redbrand Hideout","type":"Actor","sort":3000000,"flags":{},"parent":"dKuzbyQztndLPaBc","sorting":"a","color":"","_id":"B6Pe8JGGqehiNHnT"}
{"_id":"BUeYtiv4j7Fc74pl","name":"Sword Coast","type":"JournalEntry","sort":1400000,"flags":{},"parent":null,"sorting":"a","color":""}
{"name":"_fql_quests","type":"JournalEntry","parent":null,"sorting":"a","sort":0,"flags":{},"_id":"J3Jy3AySmRFM1Via"}
{"_id":"M2Y2MzY4MDM1MzM4","name":"Abilities & Feats (PC)","flags":{},"type":"Item","color":"","parent":null,"sort":100000}
{"_id":"M2Y5NjkwNDE4NTVh","name":"All Floor Map Keys","flags":{},"type":"JournalEntry","color":"","parent":"MzJjNGJlZDhiZDJm","sort":100000}
{"_id":"MGYwODllOWU0M2I1","name":"Act 4: Wave Echo Cave","type":"JournalEntry","sort":1800000,"flags":{},"parent":null,"sorting":"a","color":""}
Expand All @@ -11,20 +12,16 @@
{"_id":"NDY4NGVmMWRkN2Vi","name":"Weapons (NPC)","flags":{},"type":"Item","color":"","parent":null,"sort":100000}
{"_id":"NDk1NTQ3MWRmYzIy","name":"Notable NPCs","type":"JournalEntry","sort":200000,"flags":{},"parent":"MzJjNGJlZDhiZDJm","sorting":"a","color":""}
{"_id":"NTljMzBjYzM4ZTE5","name":"Player Handouts","type":"JournalEntry","sort":1200000,"flags":{},"parent":null,"sorting":"a","color":""}
{"_id":"NjExMjdkMTQwNjVh","name":"Decks","flags":{},"type":"Item","color":"","parent":null,"sort":2300000}
{"_id":"NzFhZWYwYmRmYWY1","name":"Villagers of Phandalin","flags":{},"type":"Actor","color":"","parent":"ZTdjZmJhOTlmYTYy","sort":1300000}
{"_id":"NzhjMzJlNGQ1NmZk","name":"Archived Handouts","type":"JournalEntry","sort":300000,"flags":{},"parent":"MzJjNGJlZDhiZDJm","sorting":"a","color":""}
{"_id":"ODMyMjRkYmI3NGRj","name":"Decks","flags":{},"type":"RollTable","color":"","parent":null,"sort":2200000}
{"_id":"OWEwNmY3NTRlZWQz","name":"Loot (PC)","flags":{},"type":"Item","color":"","parent":null,"sort":100000}
{"_id":"OWVlZmM0YTcwOTgw","name":"Spells (PC)","flags":{},"type":"Item","color":"","parent":null,"sort":100000}
{"name":"Wyvern Tor","type":"Actor","sort":3100000,"flags":{},"parent":"dKuzbyQztndLPaBc","sorting":"a","color":"","_id":"OlXlhC4F3zVQRTkV"}
{"name":"Creatures","type":"Actor","sort":2800000,"flags":{},"parent":null,"sorting":"a","_id":"QZVqJtinhwIrmTBu"}
{"name":"_fql_quests","type":"JournalEntry","sort":2200000,"flags":{},"parent":null,"sorting":"a","_id":"USDO6FiVEZuGOIx2"}
{"_id":"Y2UyZTRiYmIzZmQ1","name":"Rollable Tables","flags":{},"type":"RollTable","color":"","parent":null,"sort":2100000}
{"_id":"YTBjMmI5ZGVhMzNk","name":"Bestiary","type":"Actor","sort":100000,"flags":{},"parent":null,"sorting":"a","color":""}
{"_id":"YTI2Nzk3ZjljNDI5","name":"Quests","flags":{},"type":"JournalEntry","color":"","parent":"NTljMzBjYzM4ZTE5","sort":1000000}
{"_id":"YTRkYWEyZmNiODM3","name":"Personal Goals","flags":{},"type":"JournalEntry","color":"","parent":"YTI2Nzk3ZjljNDI5","sort":1100000}
{"_id":"YWFmNWNmZWU2ZTk3","name":"Playing Cards","flags":{},"type":"Item","color":"","parent":"NjExMjdkMTQwNjVh","sort":2400000}
{"_id":"YjcyN2UxZDE1YTQ1","name":"Landscape Images","flags":{},"type":"JournalEntry","color":"","parent":"NTljMzBjYzM4ZTE5","sort":900000}
{"_id":"ZDY1Y2NkYmI5MTE2","name":"Player Characters (PCs)","type":"Actor","sort":200000,"flags":{},"parent":null,"sorting":"a","color":""}
{"_id":"ZTAxOTk4YTI1ZTYx","name":"Abilities & Feats (NPC)","flags":{},"type":"Item","color":"","parent":null,"sort":100000}
Expand All @@ -36,6 +33,7 @@
{"_id":"dKuzbyQztndLPaBc","name":"LootNpc","type":"Actor","sort":600000,"flags":{},"parent":null,"sorting":"a","color":""}
{"_id":"fdjzSagEmHUDW1z9","name":"Cragmaw Castle","type":"Actor","sort":2600000,"flags":{},"parent":"dKuzbyQztndLPaBc","sorting":"a","color":""}
{"name":"Loot (NPC)","type":"Item","sort":2500000,"flags":{},"parent":null,"sorting":"a","color":"","_id":"n2XukCrMqUxc9HHt"}
{"_id":"oFYeXmAOh9mRbhA0","name":"Teleport Helpers","type":"JournalEntry","parent":null,"sorting":"a","sort":2100000,"color":"#878787","flags":{}}
{"name":"Cragmaw Hideout","type":"Actor","sort":2900000,"flags":{},"parent":"dKuzbyQztndLPaBc","sorting":"a","color":"","_id":"pXjSqaNNdDSkOYqm"}
{"name":"Locations","type":"JournalEntry","sort":2100000,"flags":{},"parent":"MjAyZjQxNDQ1Mjkz","sorting":"a","color":"","_id":"uw1IkAt6OFHFUyZW"}
{"name":"Items","type":"Item","sort":2600000,"flags":{},"parent":null,"sorting":"a","color":"","_id":"wkYzHVdveFQBQ985"}
54 changes: 0 additions & 54 deletions lmop-family/data/items.db

Large diffs are not rendered by default.

30 changes: 25 additions & 5 deletions lmop-family/data/journal.db

Large diffs are not rendered by default.

8 changes: 5 additions & 3 deletions lmop-family/data/macros.db
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{"_id":"BSUjXhAm5kSuQtuJ","name":"Pause Game","type":"script","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","scope":"global","command":"game.togglePause(true, true)","folder":null,"sort":0,"permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"flags":{"combat-utility-belt":{"macroTrigger":""}}}
{"_id":"MTU3YWIxNGEwNWY5","name":"Initiative","permission":{"default":2,"ODY1ZmU3OWIzNzY2":3},"type":"chat","sort":0,"flags":{},"scope":"global","command":"Initiative: @{selected|npcd_name}\n/roll 1d20 + @{selected|npcd_dex_mod} &{tracker}","author":"ODY1ZmU3OWIzNzY2","img":"modules/lmop-shared/macros/roll20_macro.png","actorIds":[]}
{"_id":"Scy7Of1fQMxf6Vga","name":"Skeletons Appear","permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"type":"script","sort":100001,"flags":{},"scope":"global","command":"game.togglePause()\nlet tile = canvas.tiles.get(\"YjE1YTgwNTcyMjA4\")\ntile.update({\"hidden\" : false})","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","actorIds":[]}
{"_id":"UI9bbgICtaaeSivX","name":"turn_defeated_into_loot","permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"type":"script","sort":100001,"flags":{"combat-utility-belt":{"macroTrigger":"o3vye983ffphivnf"},"exportSource":{"world":"lmop-kids","system":"dnd5e","coreVersion":"0.7.9","systemVersion":"1.2.0"}},"scope":"global","command":"(async () => {\n let defeated = canvas.tokens.placeables.filter(t => {\n return t.data.disposition === -1 && t.data.actorData.data?.attributes?.hp?.value <= 0\n });\n\n for (let token of defeated) {\n if (token.actor.data.type != 'npc')\n continue;\n\n let invalid = await token.getFlag(`world`,`lootyfied`) ? await token.getFlag(`world`,`lootyfied`) : false;\n if (invalid)\n continue;\n\n let newItems = token.actor.data.items.filter(item => {\n // Weapons are fine, unless they're natural.\n if (item.type == 'weapon') {\n return item.data.weaponType != 'natural';\n }\n // Equipment's fine, unless it's natural armor.\n if (item.type == 'equipment') {\n if (!item.data.armor)\n return true;\n return item.data.armor.type != 'natural';\n }\n // Item type blocklist.\n // Less intuitive than an allowlist,\n // but permits unknown module items.\n return !(['class', 'spell', 'feat'].includes(item.type));\n });\n\n // Change sheet to lootable, and give players permissions.\n let newActorData = {\n 'flags': {\n 'core': {\n 'sheetClass': 'dnd5e.LootSheet5eNPC'\n },\n 'lootsheetnpc5e': {\n 'lootsheettype': 'Loot'\n }\n },\n 'items': newItems,\n [`permission.default`]: 2\n };\n // Add proper currency info to the new data, if the actor needs it.\n if (undefined == token.actor.data.data.currency || token.actor.data.data.currency.cp == 0 ) // should be an object, not a number\n {\n newActorData['data.currency'] = {\n 'cp': { 'value': null },\n 'ep': { 'value': null },\n 'gp': { 'value': null },\n 'pp': { 'value': null },\n 'sp': { 'value': null }\n };\n }\n await token.actor.update(newActorData);\n await token.setFlag(`world`,`lootyfied`,true);\n }\n})();","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","actorIds":[]}
{"_id":"Scy7Of1fQMxf6Vga","name":"Skeletons Appear","type":"script","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","scope":"global","command":"const update = game.actors.getName(\"Skeleton\").getActiveTokens().map(t => ({_id: t.id, hidden: false}));\ncanvas.scene.updateEmbeddedDocuments(\"Token\", update);","folder":null,"sort":100001,"permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"flags":{"combat-utility-belt":{"macroTrigger":""}}}
{"_id":"TkTj0SiNr5ZIYADs","name":"!custom","type":"script","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","scope":"global","command":"(async ()=>{\n console.log(\"starting\");\n let processed = [];\n for(let iToken of canvas.tokens.placeables)\n {\n if (!iToken.data)\n {\n console.log(\"error: no token.data\");\n continue;\n }\n if (!iToken.data.name)\n {\n console.log(\"error: no token.data.name\");\n continue;\n }\n if (processed.indexOf(iToken.name) >= 0)\n {\n console.log(\"skipping \" + iToken.name);\n continue;\n }\n processed.push(iToken.name)\n console.log(\"token = \" + iToken.data.name);\n a = game.actors.getName(iToken.name);\n if (a == null)\n {\n console.log(\"no game actor found for \" + iToken.name);\n continue;\n }\n updateTokensForActorByName(iToken.name);\n }\n console.log(\"ending\");\n})();\n\nfunction updateTokensForActorByName(actorName)\n{\n a = game.actors.getName(actorName);\n const update = a.getActiveTokens().map(t => {\n if (t.name == a.data.token.name)\n {\n result = Object.assign({}, a.data.token);\n result._id = t.id;\n }\n else\n {\n result = {_id : t.id};\n }\n return result;\n });\n canvas.scene.updateEmbeddedDocuments(\"Token\", update);\n}","folder":null,"sort":0,"permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"flags":{"combat-utility-belt":{"macroTrigger":""}}}
{"_id":"Z1PVcJrfjEqwC5zZ","name":"Remove Top Bar","permission":{"default":0,"ZjdmMWEyMmE2NzVk":3},"type":"script","folder":null,"sort":100000,"flags":{"combat-utility-belt":{"macroTrigger":""}},"scope":"global","command":"(async ()=>{\r\n console.log(\"starting\");\r\n for(let token of canvas.tokens.placeables)\r\n {\r\n if (!token.data)\r\n {\r\n console.log(\"error: no token.data\");\r\n continue;\r\n }\r\n if (!token.data.name)\r\n {\r\n console.log(\"error: no token.data.name\");\r\n continue;\r\n }\r\n console.log(\"token = \" + token.data.name);\r\n await token.update({ 'bar2.attribute' : 'None' });\r\n await token.update({ 'bar1.attribute' : 'attributes.hp' });\r\n }\r\n console.log(\"ending\");\r\n})();\r\n\r\n","author":"ZjdmMWEyMmE2NzVk","img":"icons/svg/dice-target.svg","actorIds":[]}
{"_id":"Zkyhd4OHoorlpqks","name":"Redbrand Trapped Hallway","permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"type":"script","sort":100001,"flags":{},"scope":"global","command":"game.togglePause()\nlet tile = canvas.tiles.get(\"qM38okJKIFR3bcPB\")\ntile.update({\"hidden\" : false})","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","actorIds":[]}
{"_id":"Zkyhd4OHoorlpqks","name":"Redbrand Trapped Hallway","type":"script","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","scope":"global","command":"game.togglePause(true, true)\nlet tile = canvas.scene.data.tiles.get(\"ZTE0NDkyNjlmYWQ1\")\ntile.update({\"hidden\" : false})","folder":null,"sort":100001,"permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"flags":{"combat-utility-belt":{"macroTrigger":""}}}
{"_id":"ugYsDBEsytMqZZKH","name":"Goblin Ambush","type":"script","author":"ODY1ZmU3OWIzNzY2","img":"icons/svg/dice-target.svg","scope":"global","command":"(async ()=>{\n console.log(\"starting\");\n let found = false;\n let update = [];\n for(let iToken of canvas.tokens.placeables)\n {\n if (!iToken.data)\n {\n console.log(\"error: no token.data\");\n continue;\n }\n if (!iToken.data.name)\n {\n console.log(\"error: no token.data.name\");\n continue;\n }\n if (iToken.data.name != \"Goblin\")\n {\n continue;\n }\n if (!iToken.data.hidden)\n {\n continue;\n }\n console.log(\"token = \" + iToken.data.name);\n found = true;\n update.push(iToken);\n }\n if (found)\n {\n game.togglePause(true, true)\n canvas.scene.updateEmbeddedDocuments(\"Token\", update.map(t => ({_id: t.id, hidden: false})));\n }\n console.log(\"ending\");\n})();","folder":null,"sort":0,"permission":{"default":0,"ODY1ZmU3OWIzNzY2":3},"flags":{"combat-utility-belt":{"macroTrigger":""}}}
Loading

0 comments on commit e97cb1c

Please sign in to comment.