mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
Merge pull request #14619 from blaze-sanecki/landofeem-chat-share
[Land of Eem] New Feature: Sharing abilities with the chat; Fix: small changes in translation.json
This commit is contained in:
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 1229 1207" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g id="Background"><path d="M1228.798,491.982l0,2.4c-1.472,7.222 -1.496,7.021 0,14.4l0,64.8c-1.863,7.38 -3.722,7.251 0,14.4l0,2.4c-1.54,7.653 -2,7.121 -2.917,14.494c-18.358,147.754 -113.855,284.5 -228.104,360.91c-213.087,142.514 -376.998,114.567 -444.581,115.13c-7.622,0.064 -173.126,90.408 -448.71,124.517c-103.045,12.754 -91.073,-70.819 -83.377,-89.099c1.108,-2.631 137.394,-152.817 151.885,-190.453c3.01,-7.819 -30.072,-29.433 -70.161,-81.807c-86.405,-112.884 -98.678,-233.288 -102.834,-253.693l0,-2.4c1.473,-7.229 1.495,-7.027 0,-14.4l-0,-64.8c1.498,-7.38 1.474,-7.178 0,-14.4l-0,-2.4c1.553,-7.635 2.03,-7.135 2.947,-14.49c13.486,-108.183 71.891,-204.41 102.286,-241.602c245.891,-300.88 626.251,-259.314 801.225,-172.064c285.54,142.383 308.97,362.369 322.339,428.156l-523.217,36.173c10.156,-49.467 -17.279,-84.425 -44.858,-100.033c-66.751,-37.777 -116.439,17.93 -118.511,21.281c-87.053,140.715 123.291,218.997 163.37,78.752l523.217,-36.173l-837.636,-7.396c-0.933,-2.782 -8.385,-25.004 -16.069,-32.974c-91.198,-94.602 -175.309,14.727 -168.128,57.296c26.502,157.122 210.714,97.455 184.197,-24.322l837.636,7.396l-391.159,-7.396c-26.517,121.777 157.695,181.444 184.197,24.322c7.18,-42.569 -76.93,-151.899 -168.128,-57.296c-7.684,7.97 -15.136,30.192 -16.069,32.974l391.159,7.396Z" style="fill-opacity:1;"/><path d="M0,508.782l0,-14.4c1.474,7.222 1.498,7.02 0,14.4Z" style="fill-opacity:0.4;"/><path d="M1228.798,494.382l0,14.4c-1.496,-7.379 -1.472,-7.178 0,-14.4Z" style="fill-opacity:0.4;"/><path d="M0,587.982l0,-14.4c1.495,7.373 1.473,7.171 0,14.4Z" style="fill-opacity:0.4;"/><path d="M1228.798,573.582l0,14.4c-3.722,-7.149 -1.863,-7.02 0,-14.4Z" style="fill-opacity:0.42;"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
+52
-9
@@ -125,7 +125,8 @@ div.container {
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack,
|
||||
.sheet-rolltemplate-check {
|
||||
.sheet-rolltemplate-check,
|
||||
.sheet-rolltemplate-description {
|
||||
--sheet-primary-color: #cc9133;
|
||||
--sheet-background-color: #fff4e7;
|
||||
background-color: #ffffff;
|
||||
@@ -137,27 +138,31 @@ div.container {
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack:has(.sheet-adversary),
|
||||
.sheet-rolltemplate-check:has(.sheet-adversary) {
|
||||
.sheet-rolltemplate-check:has(.sheet-adversary),
|
||||
.sheet-rolltemplate-description:has(.sheet-adversary) {
|
||||
--sheet-primary-color: #da3831;
|
||||
--sheet-background-color: #f9e7e4;
|
||||
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack:has(.sheet-npc),
|
||||
.sheet-rolltemplate-check:has(.sheet-npc) {
|
||||
.sheet-rolltemplate-check:has(.sheet-npc),
|
||||
.sheet-rolltemplate-description:has(.sheet-npc) {
|
||||
--sheet-primary-color: #2babe3;
|
||||
--sheet-background-color: #e7f4fb;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack ul,
|
||||
.sheet-rolltemplate-check ul {
|
||||
.sheet-rolltemplate-check ul,
|
||||
.sheet-rolltemplate-description ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack h3,
|
||||
.sheet-rolltemplate-check h3 {
|
||||
.sheet-rolltemplate-check h3,
|
||||
.sheet-rolltemplate-description h3 {
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
background-color: var(--sheet-background-color);
|
||||
@@ -166,7 +171,8 @@ div.container {
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack h4,
|
||||
.sheet-rolltemplate-check h4 {
|
||||
.sheet-rolltemplate-check h4,
|
||||
.sheet-rolltemplate-description h4 {
|
||||
padding: 4px;
|
||||
font-size: 13px;
|
||||
font-weight: normal;
|
||||
@@ -174,7 +180,8 @@ div.container {
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack h5,
|
||||
.sheet-rolltemplate-check h5 {
|
||||
.sheet-rolltemplate-check h5,
|
||||
.sheet-rolltemplate-description h5 {
|
||||
padding: 4px;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
@@ -185,7 +192,8 @@ div.container {
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack h2,
|
||||
.sheet-rolltemplate-check h2 {
|
||||
.sheet-rolltemplate-check h2,
|
||||
.sheet-rolltemplate-description h2 {
|
||||
background-color: var(--sheet-primary-color);
|
||||
font-size: 14px;
|
||||
font-weight: 900;
|
||||
@@ -196,7 +204,8 @@ div.container {
|
||||
}
|
||||
|
||||
.sheet-rolltemplate-attack h2 i,
|
||||
.sheet-rolltemplate-check h2 i {
|
||||
.sheet-rolltemplate-check h2 i,
|
||||
.sheet-rolltemplate-description h2 i {
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
text-transform: none;
|
||||
@@ -2046,4 +2055,38 @@ section.hint {
|
||||
display: block;
|
||||
text-align: center;
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
/* ===================================== */
|
||||
|
||||
/* Share Button */
|
||||
|
||||
/* ===================================== */
|
||||
|
||||
.btn-share {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 4px;
|
||||
padding: 0;
|
||||
border: none;
|
||||
background: transparent;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.btn-share div {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
mask: url('https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/LandOfEem/images/icon-chat.svg');
|
||||
mask-size: contain;
|
||||
mask-repeat: no-repeat;
|
||||
mask-position: center;
|
||||
background-color: var(--sheet-primary-color);
|
||||
}
|
||||
|
||||
.btn-share:hover div {
|
||||
background-color: #000;
|
||||
}
|
||||
@@ -184,7 +184,7 @@
|
||||
</div>
|
||||
<div class="non-creeper">
|
||||
<h2 data-i18n="adversary-actions">Actions</h2>
|
||||
<span name="attr_actions">1</span>
|
||||
<span name="attr_adversary_actions">1</span>
|
||||
</div>
|
||||
<div class="keywords"><span name="attr_keywords">-</span></div>
|
||||
</div>
|
||||
@@ -235,6 +235,9 @@
|
||||
<input type="hidden" class="skilledit" name="attr_skilledit" value="0" />
|
||||
<input type="checkbox" name="attr_skilledit" />
|
||||
<input type="text" name="attr_skillname" value="">
|
||||
<button type="action" name="act_share" class="btn-share">
|
||||
<div></div>
|
||||
</button>
|
||||
<div class="sheet-auto-expand">
|
||||
<span name="attr_skilldescription"></span>
|
||||
<textarea class="skill-description" name="attr_skilldescription" rows="4"></textarea>
|
||||
@@ -379,6 +382,9 @@
|
||||
<input type="hidden" class="skilledit" name="attr_skilledit" value="0" />
|
||||
<input type="checkbox" name="attr_skilledit" />
|
||||
<input type="text" name="attr_skillname" value="">
|
||||
<button type="action" name="act_share" class="btn-share">
|
||||
<div></div>
|
||||
</button>
|
||||
<div class="sheet-auto-expand">
|
||||
<span name="attr_skilldescription"></span>
|
||||
<textarea class="skill-description" name="attr_skilldescription" rows="4"></textarea>
|
||||
@@ -642,11 +648,11 @@
|
||||
</div>
|
||||
<!--********* FOOTER **********-->
|
||||
<div class="footer">
|
||||
<span>Character Sheet (v.<span name="attr_version"></span>) by </span><a href="https://github.com/blaze-sanecki/LandOfEem">Blaze Sanecki</a>, made with a blessing from <span>by Ben Costa & James Parks</span> - creators of the <a href="https://landofeem.com/"><b>Land of Eem</b></a>.
|
||||
<span>Character Sheet (v.<span name="attr_version"></span>) by </span><a href="https://ko-fi.com/blazesanecki/">Blaze Sanecki</a>, made with a blessing from <span>by Ben Costa & James Parks</span> - creators of the <a href="https://landofeem.com/"><b>Land of Eem</b></a>.
|
||||
</div>
|
||||
</div>
|
||||
<!--********* HIDDEN ATTRIBUTES **********-->
|
||||
<input type="hidden" name="attr_version" value="2.0.0" />
|
||||
<input type="hidden" name="attr_version" value="2.1.0" />
|
||||
<!--********* ROLL TEMPLATES **********-->
|
||||
<rolltemplate class="sheet-rolltemplate-attack">
|
||||
<div class="template-container {{sheet_type}}">
|
||||
@@ -761,6 +767,19 @@
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-description">
|
||||
<div class="template-container {{sheet_type}}">
|
||||
<h2><span>{{name}}</span><i> ({{character}})</i></h2>
|
||||
<div class="results check">
|
||||
<ul>
|
||||
<li>
|
||||
<h4>{{description}}</h4>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
|
||||
<rolltemplate class="sheet-rolltemplate-hidden">
|
||||
<div class="sheet-template-container" style="display: none;"></div>
|
||||
</rolltemplate>
|
||||
@@ -777,6 +796,19 @@ buttonlist.forEach(button => {
|
||||
})
|
||||
})
|
||||
|
||||
//********* SKILL SHARE **********/
|
||||
on("clicked:repeating_skills:share", function(eventinfo) {
|
||||
const rowId = eventinfo.sourceAttribute.split("_")[2]
|
||||
getAttrs([`repeating_skills_${rowId}_skillname`, `repeating_skills_${rowId}_skilldescription`, "character_name"], async (values) => {
|
||||
const skillName = values[`repeating_skills_${rowId}_skillname`] || "Unnamed Skill"
|
||||
const skillDescription = values[`repeating_skills_${rowId}_skilldescription`] || "No description."
|
||||
const characterName = values["character_name"] || "Unknown Character"
|
||||
|
||||
const roll = await startRoll(`&{template:description} {{sheet_type=@{sheet_type}}} {{name=${skillName}}} {{character=${characterName}}} {{description=${skillDescription}}} {{ignore=[[0]]}}`);
|
||||
finishRoll(roll.rollId);
|
||||
})
|
||||
})
|
||||
|
||||
//********* DEFINE SIGNED AND UNSIGNED ATTRIBUTES **********/
|
||||
const signed = ["attack", "defense", "vim", "charm", "inspire", "mettle", "perception", "vigor", "athletics", "intimidate", "might", "vitality", "knack", "nimbleness", "search", "sneak", "trickery", "knowhow", "lore", "realms", "tinker", "wilderness", "treasure_hunting"];
|
||||
const unsigned = ["courage", "courage_max", "quest_pts", "block", "inventory_slots", "inventory_slots_max", "material_number", "coins_copper", "coins_silver", "coins_gold", "coins_ancient", "rations_d6", "rations_d8", "rations_d10", "lv", "xp"];
|
||||
@@ -1396,4 +1428,4 @@ on("clicked:attack", async () => {
|
||||
})
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
"authors": "Blaze Sanecki",
|
||||
"roll20userid": "10036432",
|
||||
"preview": "preview.png",
|
||||
"instructions": "# Land Of Eem - Roll20 Character Sheet\n\n#### Version\n\nCurrent Version: 2.0.0\n\n## Features\n\n- **Custom design** matching the Land of Eem official character sheet aesthetic\n- **Expandable and Flexible Skill Lists** to better fit all of your character content\n- **Interactive rolls** with advantage/disadvantage support\n- **Auto-Recalculation** of abilities and stats when changing related attributes\n- **Optional modifier validation** (total modifier clamped to -3 and +3)\n- **Full Multi-language support** with English and Polish already implemented\n- **NPC Sheet type** for storing data about NPCs\n- **Adversary Sheet type** for storing data about Adversaries (with automated attack and mettle rolls)\n\n## Instructions\n**Selecting a PC Class**\n\n- Class input field has suggested values which correspond to Land of Eem core classes\n- Selecting a predefined class resets Courage and Dread to its defaults\n\n**Making a Roll**\n\n- Click on attribute, ability or stat name label to make a roll. Rollable elements will be underlined when you hover over them\n- Popup dialog will appear and let you apply Advantage or Disadvantage\n- Popup dialog will let you apply additional custom modifier\n- Calculated final modifier is clamped to -3 and +3 range (optional - can be disabled in sheet settings) and the roll result is displayed in the chat\n- You can still see the uncapped modifier when you hover over the roll result in the chat if needed\n\n**Changing the Sheet Type**\n\n- Go into the 'Settings' tab (right side of the navbar)\n- Choose between PC/NPC/Adversary from the type dropdown\n\n**Setting up the Adversary Sheet**\n\n- First fill in the options in the 'Constraints' tab\n- Fill in the 'Attack', 'Defense' and 'Wrangle'/'Parley' in the 'Attributes' tab\n- You can now choose level, class and size from the dropdowns in the 'Attributes' tab to recalculate the default 'Courage' and 'Mettle' that apply to your choices\n\n## Development\n\n#### Roadmap (TODO list)\n\n- Add interactive dice icons for making generic rolls\n- Buttons for consuming rations (automated usage die roll)\n- Buttons for spending coins (automated usage die roll)\n\n#### Credits\n\n**Character Sheet Created by**: Blaze Sanecki\n**Land of Eem Created By**: Ben Costa & James Parks \n**Official Land of Eem Website**: [landofeem.com](https://landofeem.com/)\n\nThis is an unofficial fan-made sheet created with the official blessing of the Land of Eem creators.\n\n#### License\n\nThis character sheet is a fan work created for use with The Land of Eem tabletop RPG. All Land of Eem intellectual property belongs to Ben Costa & James Parks.\n\n#### Fonts Used\n\n- Bird of Feather (replacement for the Blackriver font used in the Land of Eem rulebooks)\n- DM Sans (replacement for the New Atten font used in the Land of Eem rulebooks)\n\nAll used fonts are free for non-commercial use and allow being used as embeded online fonts.",
|
||||
"patreon": "https://patreon.com/BearlyWorks",
|
||||
"instructions": "# Land Of Eem - Roll20 Character Sheet\n\n#### Version\n\nCurrent Version: 2.1.0\n\n## Features\n\n- **Custom design** matching the Land of Eem official character sheet aesthetic\n- **Expandable and Flexible Skill Lists** to better fit all of your character content\n- **Interactive rolls** with advantage/disadvantage support\n- **Auto-Recalculation** of abilities and stats when changing related attributes\n- **Optional modifier validation** (total modifier clamped to -3 and +3)\n- **Full Multi-language support** with English and Polish already implemented\n- **NPC Sheet type** for storing data about NPCs\n- **Adversary Sheet type** for storing data about Adversaries (with automated attack and mettle rolls)\n\n## Instructions\n**Selecting a PC Class**\n\n- Class input field has suggested values which correspond to Land of Eem core classes\n- Selecting a predefined class resets Courage and Dread to its defaults\n\n**Making a Roll**\n\n- Click on attribute, ability or stat name label to make a roll. Rollable elements will be underlined when you hover over them\n- Popup dialog will appear and let you apply Advantage or Disadvantage\n- Popup dialog will let you apply additional custom modifier\n- Calculated final modifier is clamped to -3 and +3 range (optional - can be disabled in sheet settings) and the roll result is displayed in the chat\n- You can still see the uncapped modifier when you hover over the roll result in the chat if needed\n\n**Changing the Sheet Type**\n\n- Go into the 'Settings' tab (right side of the navbar)\n- Choose between PC/NPC/Adversary from the type dropdown\n\n**Setting up the Adversary Sheet**\n\n- First fill in the options in the 'Initial Setup' tab\n- Fill in the 'Attack', 'Defense' and 'Wrangle'/'Parley' in the 'Attributes' tab\n- You can now choose level, class and size from the dropdowns in the 'Attributes' tab to recalculate the default 'Courage' and 'Mettle' that apply to your choices\n\n## Development\n\n#### Roadmap (TODO list)\n\n- Add interactive dice icons for making generic rolls\n- Buttons for consuming rations (automated usage die roll)\n- Buttons for spending coins (automated usage die roll)\n\n#### Credits\n\n**Character Sheet Created by**: Blaze Sanecki\n**Land of Eem Created By**: Ben Costa & James Parks \n**Official Land of Eem Website**: [landofeem.com](https://landofeem.com/)\n\nThis is an unofficial fan-made sheet created with the official blessing of the Land of Eem creators.\n\n#### License\n\nThis character sheet is a fan work created for use with The Land of Eem tabletop RPG. All Land of Eem intellectual property belongs to Ben Costa & James Parks.\n\n#### Fonts Used\n\n- Bird of Feather (replacement for the Blackriver font used in the Land of Eem rulebooks)\n- DM Sans (replacement for the New Atten font used in the Land of Eem rulebooks)\n\nAll used fonts are free for non-commercial use and allow being used as embeded online fonts.\n\n#### Support My Work\n\nIf you like my work, consider buying me a [Monster Energy Drink](https://ko-fi.com/blazesanecki/).",
|
||||
"legacy": false
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"attack": "Attack",
|
||||
"defense": "Defense",
|
||||
"quest": "Quest Pts.",
|
||||
"name-and-pronouns": "Name & Pronouns",
|
||||
"name-and-pronouns": "Name<br>& Pronouns",
|
||||
"name": "Name",
|
||||
"and-pronouns": "& Pronouns",
|
||||
"class": "Class",
|
||||
@@ -99,7 +99,7 @@
|
||||
"hit": "Hit.",
|
||||
"critical-hit": "Critical Hit.",
|
||||
"modifier-clamped": "Modifier clamped to [-3..3] range.",
|
||||
"damage": "Damage",
|
||||
"damage": "Dread",
|
||||
"complete-failure": "Complete Failure.",
|
||||
"failure-with-a-plus": "Failure with a Plus.",
|
||||
"success-with-a-twist": "Success with a Twist.",
|
||||
@@ -134,7 +134,7 @@
|
||||
"keywords": "Keywords",
|
||||
"preview": "Attributes",
|
||||
"detail": "Detail",
|
||||
"definition": "Constraints",
|
||||
"definition": "Initial Setup",
|
||||
"sizes": "Sizes:",
|
||||
"tiny": "Tiny",
|
||||
"small": "Small",
|
||||
|
||||
Reference in New Issue
Block a user