mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 03:40:32 +00:00
Add character sheet World-of-the-Storytellers-WoS
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 511.882 511.882" style="enable-background:new 0 0 511.882 511.882;" xml:space="preserve">
|
||||
<path style="fill:#79AA41;" d="M259.171,233.014c-0.125,0.484-12.731,48.484-50.079,104.077
|
||||
c-34.287,50.984-97.111,119.104-201.798,153.984v0.016C3.061,492.496,0,496.48,0,501.197c0,5.889,4.78,10.668,10.668,10.668
|
||||
c1.171,0,2.312-0.203,3.358-0.562v0.016c48.907-16.307,93.299-40.769,131.991-72.759c30.928-25.57,58.264-55.952,81.256-90.3
|
||||
c39.16-58.529,52.031-107.889,52.562-109.951L259.171,233.014z"/>
|
||||
<g>
|
||||
<path style="fill:#8AC054;" d="M55.249,162.536C-9.809,225.47,83.818,283.842,83.818,283.842s-58.029,93.846,28.179,121.4
|
||||
s169.699-167.667,169.699-167.667S120.307,99.617,55.249,162.536z"/>
|
||||
<path style="fill:#8AC054;" d="M488.882,317.113c65.058-62.917-28.569-121.306-28.569-121.306s58.029-93.831-28.18-121.385
|
||||
C345.926,46.868,262.42,242.089,262.42,242.089S423.825,380.047,488.882,317.113z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path style="fill:#9ED36A;" d="M194.769,456.649c62.934,65.058,121.307-28.57,121.307-28.57s93.847,58.029,121.4-28.178
|
||||
c27.554-86.209-167.667-160.373-167.667-160.373S131.85,391.59,194.769,456.649z"/>
|
||||
<path style="fill:#9ED36A;" d="M349.346,23.016c-62.918-65.058-121.307,28.569-121.307,28.569s-93.83-58.029-121.384,28.179
|
||||
c-27.57,86.208,163.154,159.764,163.154,159.764S412.281,88.074,349.346,23.016z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 124 KiB |
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"html": "wos.html",
|
||||
"css": "wos.css",
|
||||
"authors": "HD",
|
||||
"roll20userid": "1188201",
|
||||
"preview": "preview.png",
|
||||
"instructions": "## 이야기꾼의 세계(WoS) \n\n\n Character sheet for the 'World of the Storytellers(이야기꾼의 세계)', which is a TRPG rule you can play for free. \n 모든 것을 위한 자유로운 TRPG, 이야기꾼의 세계는 Fate 시스템을 기반으로 제작된 창작 TRPG 룰입니다. \n\n [RULEBOOK LINK](https://github.com/n0n3x1573n7/World-of-the-Storytellers/blob/master/WoS.pdf)",
|
||||
"legacy": "false"
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name":"name",
|
||||
"species":"species",
|
||||
"hp":"hp",
|
||||
"san":"san",
|
||||
"likelihood":"likelihood",
|
||||
"resistance":"resistance",
|
||||
"basic stats":"basic stats",
|
||||
"special stats":"special stats",
|
||||
"speed":"speed",
|
||||
"deception":"deception",
|
||||
"notice":"notice",
|
||||
"strength":"strength",
|
||||
"stealth":"stealth",
|
||||
"sympathy":"sympathy",
|
||||
"taunt":"taunt",
|
||||
"will":"will",
|
||||
"fight":"fight",
|
||||
"connection":"connection",
|
||||
"manufacture":"manufacture",
|
||||
"drive":"drive",
|
||||
"knowledge":"knowledge",
|
||||
"asset":"asset",
|
||||
"shoot":"shoot",
|
||||
"class":"class",
|
||||
"story-name":"story name",
|
||||
"stat+":"stat+",
|
||||
"stat-":"stat-",
|
||||
"cost":"cost",
|
||||
"invasion":"invasion",
|
||||
"power":"power",
|
||||
"status-name":"status",
|
||||
"countlength":"count/length",
|
||||
"physical":"physical",
|
||||
"mental":"mental",
|
||||
"roll":"rolls",
|
||||
"":"{{0}}",
|
||||
"status":"status",
|
||||
"desc_luck":"Dice rolling including luck(4df).",
|
||||
"desc_stats":"Press the edit button to modify the name of the added special stat.",
|
||||
"desc_likelihood_start":"For general character, maximum likelihood is starts at 80.",
|
||||
"desc_likelihood_max":"This value decreases with the likelihood cost of the story.",
|
||||
"desc_calc":"When clicked, HP and SAN automatically calculated from the default stats.",
|
||||
"desc_tog_story":"Show or hide the power section of the story."
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name":"이름",
|
||||
"species":"종족",
|
||||
"hp":"체력",
|
||||
"san":"정신력",
|
||||
"likelihood":"개연성",
|
||||
"resistance":"저항도",
|
||||
"basic stats":"스탯:기본",
|
||||
"special stats":"스탯:특화",
|
||||
"speed":"기민",
|
||||
"deception":"기만",
|
||||
"notice":"인식",
|
||||
"strength":"근력",
|
||||
"stealth":"은신",
|
||||
"sympathy":"공감",
|
||||
"taunt":"도발",
|
||||
"will":"의지",
|
||||
"fight":"전투",
|
||||
"connection":"인맥",
|
||||
"manufacture":"제작",
|
||||
"drive":"운전",
|
||||
"knowledge":"지식",
|
||||
"asset":"자본",
|
||||
"shoot":"사격",
|
||||
"class":"구분",
|
||||
"story-name":"이야기",
|
||||
"stat+":"스탯+",
|
||||
"stat-":"스탯-",
|
||||
"cost":"코스트",
|
||||
"invasion":"침범도",
|
||||
"power":"능력",
|
||||
"status-name" : "명칭",
|
||||
"countlength" : "횟수/길이",
|
||||
"physical" : "물리적",
|
||||
"mental" : "정신적",
|
||||
"roll" : "판정",
|
||||
"" : "{{0}}",
|
||||
"status" : "상태",
|
||||
"desc_luck" : "행운 판정(4df)포함 롤",
|
||||
"desc_stats" : "추가된 특화 스탯의 이름을 수정하려면 편집 버튼을 누르세요.",
|
||||
"desc_likelihood_start" : "기본 최대 개연성. 일반적인 인물의 경우 80에서 시작합니다.",
|
||||
"desc_likelihood_max" : "최대 개연성. 이야기의 개연성 비용으로 감소합니다.",
|
||||
"desc_calc" : "클릭하면 기본 스탯에서 체력과 정신력을 자동으로 계산합니다.",
|
||||
"desc_tog_story" : "이야기의 능력 란을 표시하거나 숨깁니다."
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,472 @@
|
||||
|
||||
<div class="section-info"><img name="attr_character_avatar"/>
|
||||
<div class="section-col">
|
||||
<input type="text" name="attr_character_name" data-i18n-placeholder="name"/>
|
||||
<div class="section-char"><span class="sheet-label" data-i18n="species">종족</span>
|
||||
<input type="text" name="attr_species"/><span class="sheet-label">PL</span>
|
||||
<input type="text" name="attr_PL"/>
|
||||
</div>
|
||||
<div class="sheet-section">
|
||||
<div class="section-item"><span class="sheet-label-fig" data-i18n="hp">체력</span>
|
||||
<input type="number" name="attr_hp"/>
|
||||
<input type="number" name="attr_hp_max"/>
|
||||
</div>
|
||||
<div class="section-item"><span class="sheet-label" data-i18n="san">정신력</span>
|
||||
<input type="number" name="attr_san"/>
|
||||
<input type="number" name="attr_san_max"/>
|
||||
</div>
|
||||
<div class="section-item"><span class="sheet-label" data-i18n="likelihood">개연성</span>
|
||||
<input type="number" name="attr_likelihood"/>
|
||||
<input type="number" name="attr_likelihood_max" data-i18n-title="desc_likelihood_max"/>
|
||||
<input type="number" name="attr_likelihood_start" value="80" data-i18n-title="desc_likelihood_start"/>
|
||||
</div>
|
||||
<div class="section-item"><span class="sheet-label" data-i18n="resistance">저항도</span>
|
||||
<input type="number" name="attr_resistance" readonly="readonly"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-col"><span class="sheet-label">MEMO</span>
|
||||
<textarea class="sheet-memo" name="attr_memo"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-roll">
|
||||
<div>
|
||||
<input id="isluck" type="checkbox" name="attr_is_luck" data-i18n-title="desc_luck"/>
|
||||
<label class="sheet-is-luck" for="isluck" data-i18n-title="desc_luck"></label>
|
||||
</div>
|
||||
<div>
|
||||
<div class="rule-name">World of the Storytellers : WoS</div>
|
||||
</div>
|
||||
<div>
|
||||
<input type="text" name="attr_r_roll" placeholder="2D6"/>
|
||||
<button class="roll" name="act_r-roll" type="action">t</button>
|
||||
</div>
|
||||
<div class="displaynone">
|
||||
<input type="hidden" name="attr_zero" value="0" readonly="readonly"/>
|
||||
<input type="hidden" name="attr_r_speed" value=""/>
|
||||
<input type="hidden" name="attr_r_deception" value=""/>
|
||||
<input type="hidden" name="attr_r_notice" value=""/>
|
||||
<input type="hidden" name="attr_r_strength" value=""/>
|
||||
<input type="hidden" name="attr_r_stealth" value=""/>
|
||||
<input type="hidden" name="attr_r_sympathy" value=""/>
|
||||
<input type="hidden" name="attr_r_taunt" value=""/>
|
||||
<input type="hidden" name="attr_r_will" value=""/>
|
||||
<input type="hidden" name="attr_r_fight" value=""/>
|
||||
<input type="hidden" name="attr_r_connection" value=""/>
|
||||
<input type="hidden" name="attr_r_manufacture" value=""/>
|
||||
<input type="hidden" name="attr_r_drive" value=""/>
|
||||
<input type="hidden" name="attr_r_knowledge" value=""/>
|
||||
<input type="hidden" name="attr_r_asset" value=""/>
|
||||
<input type="hidden" name="attr_r_shoot" value=""/>
|
||||
<button class="displaynone" name="act_r-speed" type="action"></button>
|
||||
<button class="displaynone" name="act_r-deception" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-notice" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-strength" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-stealth" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-sympathy" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-taunt" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-will" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-fight" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-connection" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-manufacture" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-drive" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-knowledge" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-asset" type="action"> </button>
|
||||
<button class="displaynone" name="act_r-shoot" type="action"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-box">
|
||||
<div class="section-stat">
|
||||
<div class="section-h2">
|
||||
<h2 data-i18n="basic stats">스탯:기본</h2>
|
||||
<button class="fas" type="action" name="act_calc" data-i18n-title="desc_calc"></button>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_speed" data-i18n="speed" type="roll" value="@{r_speed}"></button>
|
||||
<input type="number" name="attr_speed" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_deception" data-i18n="deception" type="roll" value="@{r_deception}"></button>
|
||||
<input type="number" name="attr_deception" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_notice" data-i18n="notice" type="roll" value="@{r_notice}"></button>
|
||||
<input type="number" name="attr_notice" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_strength" data-i18n="strength" type="roll" value="@{r_strength}"></button>
|
||||
<input type="number" name="attr_strength" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_stealth" data-i18n="stealth" type="roll" value="@{r_stealth}"> </button>
|
||||
<input type="number" name="attr_stealth" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_sympathy" data-i18n="sympathy" type="roll" value="@{r_sympathy}"></button>
|
||||
<input type="number" name="attr_sympathy" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_도발" data-i18n="taunt" type="roll" value="@{r_taunt}"></button>
|
||||
<input type="number" name="attr_taunt" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_will" data-i18n="will" type="roll" value="@{r_will}"></button>
|
||||
<input type="number" name="attr_will" value="0"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-stat">
|
||||
<div class="section-h2">
|
||||
<h2 data-i18n="special stats">스탯:특화</h2>
|
||||
<div> <span data-i18n="desc_stats">추가된 특화 스탯의 이름을 수정하려면 편집 버튼을 누르세요.</span><span class="sheet-pictos">x</span></div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_fight" data-i18n="fight" type="roll" value="@{r_fight}"></button>
|
||||
<input type="number" name="attr_fight" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_connection" data-i18n="connection" type="roll" value="@{r_connection}"></button>
|
||||
<input type="number" name="attr_connection" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_manufacture" data-i18n="manufacture" type="roll" value="@{r_manufacture}"></button>
|
||||
<input type="number" name="attr_manufacture" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_drive" data-i18n="drive" type="roll" value="@{r_drive}"></button>
|
||||
<input type="number" name="attr_drive" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_knowledge" data-i18n="knowledge" type="roll" value="@{r_knowledge}"></button>
|
||||
<input type="number" name="attr_knowledge" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_asset" data-i18n="asset" type="roll" value="@{r_asset}"></button>
|
||||
<input type="number" name="attr_asset" value="0"/>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<button class="sheet-label" name="roll_shoot" data-i18n="shoot" type="roll" value="@{r_shoot}"></button>
|
||||
<input type="number" name="attr_shoot" value="0"/>
|
||||
</div>
|
||||
<fieldset class="repeating_repstat">
|
||||
<input class="sheet-label" type="text" name="attr_statname" value=""/>
|
||||
<button class="sheet-label" name="act_roll-action" type="action"></button>
|
||||
<input type="number" name="attr_stat" value="0"/>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-story">
|
||||
<div class="section-h2">
|
||||
<h2>이야기</h2>
|
||||
<button class="fas" type="action" name="act_tog_story" data-i18n-title="desc_tog_story"></button>
|
||||
</div>
|
||||
<div class="story-item sheet-head">
|
||||
<div class="story-class" data-i18n="class">구분</div>
|
||||
<div class="story-name" data-i18n="story-name">이야기</div>
|
||||
<div class="story-stat-plus" data-i18n="stat+">스탯+</div>
|
||||
<div class="story-stat-minus" data-i18n="stat-">스탯-</div>
|
||||
<div class="story-cost" data-i18n-title="cost">C</div>
|
||||
<div class="story-invasion" data-i18n-title="invasion">I</div>
|
||||
<div class="story-power" data-i18n="power">능력</div>
|
||||
</div>
|
||||
<div class="story-item">
|
||||
<button type="roll" value="&{template:wos_story} {{name=@{character_name}}}{{storyname=@{story-1-name}}}{{note=@{story-1-power}}}{{statplus=@{story-1-statplus}}}{{statminus=@{story-1-statminus}}}"></button>
|
||||
<input type="checkbox"/>
|
||||
<input type="text" name="attr_story-1-class" value="권능"/>
|
||||
<input type="text" name="attr_story-1-name" value="소통"/>
|
||||
<input type="text" name="attr_story-1-statplus"/>
|
||||
<input type="text" name="attr_story-1-statminus"/>
|
||||
<input type="text" name="attr_story-1-cost"/>
|
||||
<input type="text" name="attr_story-1-invasion"/>
|
||||
<textarea class="story-power" rows="3" name="attr_story-1-power" value="자신의 생애 이야기가 아니라면 모든 언어를 이해할 수 있다.">자신의 생애 이야기가 아니라면 모든 언어를 이해할 수 있다.</textarea>
|
||||
</div>
|
||||
<div class="story-item">
|
||||
<button type="roll" value="&{template:wos_story} {{name=@{character_name}}}{{storyname=@{story-2-name}}}{{note=@{story-2-power}}}{{statplus=@{story-2-statplus}}}{{statminus=@{story-2-statminus}}}"></button>
|
||||
<input type="checkbox"/>
|
||||
<input type="text" name="attr_story-2-class" value=""/>
|
||||
<input type="text" name="attr_story-2-name" value=""/>
|
||||
<input type="text" name="attr_story-2-statplus"/>
|
||||
<input type="text" name="attr_story-2-statminus"/>
|
||||
<input type="text" name="attr_story-2-cost"/>
|
||||
<input type="text" name="attr_story-2-invasion"/>
|
||||
<textarea class="story-power" rows="3" name="attr_story-2-power" value=""></textarea>
|
||||
</div>
|
||||
<div class="story-item">
|
||||
<button type="roll" value="&{template:wos_story} {{name=@{character_name}}}{{storyname=@{story-3-name}}}{{note=@{story-3-power}}}{{statplus=@{story-3-statplus}}}{{statminus=@{story-3-statminus}}}"></button>
|
||||
<input type="checkbox"/>
|
||||
<input type="text" name="attr_story-3-class" value=""/>
|
||||
<input type="text" name="attr_story-3-name" value=""/>
|
||||
<input type="text" name="attr_story-3-statplus"/>
|
||||
<input type="text" name="attr_story-3-statminus"/>
|
||||
<input type="text" name="attr_story-3-cost"/>
|
||||
<input type="text" name="attr_story-3-invasion"/>
|
||||
<textarea class="story-power" rows="3" name="attr_story-3-power" value=""></textarea>
|
||||
</div>
|
||||
<fieldset class="repeating_story">
|
||||
<div class="story-item">
|
||||
<button type="roll" value="&{template:wos_story} {{name=@{character_name}}}{{storyname=@{storyname}}}{{note=@{storypower}}}{{statplus=@{storystatplus}}}{{statminus=@{storystatminus}}}"></button>
|
||||
<input type="checkbox"/>
|
||||
<input type="text" name="attr_storyclass"/>
|
||||
<input type="text" name="attr_storyname"/>
|
||||
<input type="text" name="attr_storystatplus"/>
|
||||
<input type="text" name="attr_storystatminus"/>
|
||||
<input type="text" name="attr_storycost"/>
|
||||
<input type="text" name="attr_storyinvasion"/>
|
||||
<textarea class="story-power" rows="3" name="attr_storypower"></textarea>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="section-status">
|
||||
<div class="section-h2">
|
||||
<h2 data-i18n="status">상태</h2>
|
||||
</div>
|
||||
<div class="status-item sheet-head">
|
||||
<div data-i18n="class">구분</div>
|
||||
<div data-i18n="status-name">명칭</div>
|
||||
<div data-i18n="countlength">횟수/길이</div>
|
||||
</div>
|
||||
<div class="status-item">
|
||||
<select name="attr_statusclass">
|
||||
<option data-i18n="physical">물리적</option>
|
||||
<option data-i18n="mental">정신적</option>
|
||||
</select>
|
||||
<input type="text" name="attr_statusname"/>
|
||||
<input type="text" name="attr_statuscount"/>
|
||||
</div>
|
||||
<fieldset class="repeating_status">
|
||||
<div class="status-item">
|
||||
<select name="attr_statusclass">
|
||||
<option data-i18n="physical">물리적</option>
|
||||
<option data-i18n="mental">정신적</option>
|
||||
</select>
|
||||
<input type="text" name="attr_statusname"/>
|
||||
<input type="text" name="attr_statuscount"/>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="sheet-by">
|
||||
<div>rule designed by None<a href="https://twitter.com/n0n3x1573n7_WS">(@n0n3x1573n7_WS)</a></div>
|
||||
<div>sheet designed by HD<a href="https://twitter.com/HDTRPG">(@HDTRPG)</a></div>
|
||||
</div>
|
||||
<rolltemplate class="sheet-rolltemplate-wos_stat">
|
||||
<div class="sheet-template-container">
|
||||
<h3>{{name}}</h3>
|
||||
<div class="sheet-template-title"><span data-i18n-vars="{{statnamerep}}" data-i18n="{{statname}}"></span><span data-i18n="roll"></span></div>
|
||||
<div class="sheet-arrow"></div>
|
||||
<div class="sheet-template-dices"><span title="mod_{{mod}}">{{mod}}</span><span class="sheet-dice-stat">{{statvalue}}</span>
|
||||
<div class="sheet-dice-sum">{{sum}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
<rolltemplate class="sheet-rolltemplate-wos_story">
|
||||
<div class="sheet-template-container">
|
||||
<h3>{{storyname}}</h3>
|
||||
<div class="sheet-template-stat-plus">{{statplus}}</div>
|
||||
<div class="sheet-template-stat-minus">{{statminus}}</div>
|
||||
<div class="sheet-template-by">{{name}}<span>가 이야기합니다.</span></div>
|
||||
<div class="sheet-template-note">{{note}}</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
<rolltemplate class="sheet-rolltemplate-wos_luck">
|
||||
<div class="sheet-template-container">
|
||||
<h3>{{name}}</h3>
|
||||
<div class="sheet-template-title">
|
||||
<div class="sheet-template-statname"> <span data-i18n-vars="{{statnamerep}}" data-i18n="{{statname}}"></span><span data-i18n="roll"></span></div>
|
||||
<div class="sheet-template-luck" data-i18n-title="desc_luck">{{luck}}</div>
|
||||
</div>
|
||||
<div class="sheet-template-dices">{{stat}}<span class="sheet-dice" title="{{statmod}}">{{statmod}}</span><span class="sheet-displaynone" title="{{computed::success}}"></span><span class="sheet-dice sheet-dice-computed">{{computed::r1}}</span>
|
||||
<div class="sheet-dice sheet-dice-result">{{computed::sum}}
|
||||
<div class="sheet-arrow"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
<rolltemplate class="sheet-rolltemplate-wos_roll">
|
||||
<div class="sheet-template-container">
|
||||
<h3>{{name}}</h3>
|
||||
<div class="sheet-box">
|
||||
<div class="sheet-template-dices">{{computed::exp}}<span>{{computed::formula}}</span></div>
|
||||
<div class="sheet-arrow"></div>
|
||||
<div class="sheet-dice-result">{{formula}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</rolltemplate>
|
||||
<script type="text/worker">
|
||||
on("clicked:calc", function(){
|
||||
getAttrs(["strength","will"],function(val){
|
||||
var iwill = parseInt(val.will);
|
||||
var istr = parseInt(val.strength);
|
||||
if (istr<0) istr=0;
|
||||
var ihp = 10 + istr*10;
|
||||
if (iwill<0) iwill=0;
|
||||
var isan = 10 + iwill*10;
|
||||
setAttrs({
|
||||
hp_max:ihp,
|
||||
san_max:isan
|
||||
});
|
||||
});
|
||||
});
|
||||
on("clicked:tog_story",function(){
|
||||
$20(".story-power").toggleClass("displaynone");
|
||||
$20(".story-item input[type='checkbox']").toggleClass("displaynone");
|
||||
});
|
||||
|
||||
var statList = ["speed","deception","notice","strength","stealth","sympathy","taunt","will","fight","connection","manufacture","drive","knowledge","asset","shoot"];
|
||||
statList.forEach(function(tgStat) {
|
||||
on("clicked:r-"+tgStat,(info)=>{
|
||||
rollDices(tgStat);
|
||||
});
|
||||
});
|
||||
on("sheet:opened",()=>{
|
||||
getAttrs(["character_name"],(v)=>{
|
||||
getAttrs(statList,function(val){
|
||||
var statObj = {};
|
||||
for (const k in val) {
|
||||
statObj["r_"+k] = "%{"+v["character_name"]+"|r-"+k+"}";
|
||||
}
|
||||
setAttrs(statObj);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
on("clicked:repeating_repstat:roll-action", (v)=>{
|
||||
getAttrs(["repeating_repstat_statname", "repeating_repstat_stat"],(val)=>{
|
||||
var statname = val["repeating_repstat_statname"];
|
||||
var statvalue = val["repeating_repstat_stat"];
|
||||
getAttrs(["is_luck"],(luck)=>{
|
||||
if(luck["is_luck"]==0) {
|
||||
startRoll("&{template:wos_stat} {{name=@{character_name}}}{{statnamerep="+statname+"}}{{statname}}{{statvalue="+statvalue+"}} {{mod=?{수정치|}}} {{sum=[[?{수정치|}"+"+"+statvalue+"]]}} ",(results)=>{
|
||||
finishRoll(results.rollId,{});
|
||||
});
|
||||
|
||||
} else if (luck["is_luck"]=="on") {
|
||||
startRoll("&{template:wos_luck}{{name=@{character_name}}}{{luck= }}{{statnamerep="+statname+"}}{{r1=[[df+df+df+df]]}}{{statmod=[[0?{수정치|}]]}}{{stat=[["+statvalue+"]]}}{{sum=[[0]]}}{{success=[[0]]}}",
|
||||
(results)=>{
|
||||
const rr1 = results.results.r1.dice.join();
|
||||
const rolled = rr1.replace(/-1/gi,'').replace(/1/gi,'').replace(/0/gi,'').replace(/,/gi,'');
|
||||
const df = results.results.r1.result;
|
||||
var success='';
|
||||
if (df=='-4') {
|
||||
success = " rollf ";
|
||||
}
|
||||
if (df==4) {
|
||||
success = " rollc ";
|
||||
}
|
||||
const st = results.results.stat.result;
|
||||
var sum;
|
||||
sum = st + df + results.results.statmod.result;
|
||||
finishRoll(
|
||||
results.rollId,
|
||||
{
|
||||
r1: rolled,
|
||||
sum : sum,
|
||||
success : success
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
function rollDices(tgStat) {
|
||||
getAttrs(["is_luck"],(v)=>{
|
||||
if(v["is_luck"]==0) {
|
||||
noLuckButton(tgStat);
|
||||
} else if (v["is_luck"]=="on") {
|
||||
luckButton(tgStat);
|
||||
}
|
||||
})
|
||||
}
|
||||
function noLuckButton(tgStat) {
|
||||
var tg = tgStat;
|
||||
startRoll("&{template:wos_stat} {{name=@{character_name}}}{{statname="+tg+"}}{{statvalue=@{"+tg+"}}} {{mod=?{수정치|}}} {{sum=[[?{수정치|}+@{"+tg+"}]]}} ",(results)=>{
|
||||
finishRoll(results.rollId,{});
|
||||
});
|
||||
}
|
||||
function luckButton (tgStat) {
|
||||
var tg = tgStat;
|
||||
startRoll("&{template:wos_luck}{{name=@{character_name}}}{{luck= }}{{statname="+tg+"}}{{r1=[[df+df+df+df]]}}{{statmod=[[?{수정치|0}=0]]}}{{stat=[[@{"+tg+"}]]}}{{sum=[[0]]}}{{success=[[0]]}}",
|
||||
(results)=>{
|
||||
const rr1 = results.results.r1.dice.join();
|
||||
const rolled = rr1.replace(/-1/gi,'').replace(/1/gi,'').replace(/0/gi,'').replace(/,/gi,'');
|
||||
const df = results.results.r1.result;
|
||||
var success='';
|
||||
if (df=='-4') {
|
||||
success = " rollf ";
|
||||
}
|
||||
if (df==4) {
|
||||
success = " rollc ";
|
||||
}
|
||||
const st = results.results.stat.result;
|
||||
var sum = st + df + results.results.statmod.result;
|
||||
finishRoll(
|
||||
results.rollId,
|
||||
{
|
||||
r1: rolled,
|
||||
sum : sum,
|
||||
success : success
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
on("clicked:r-roll",(eventInfo)=>{
|
||||
getAttrs(["r_roll"], (val)=>{
|
||||
startRoll("&{template:wos_roll}{{name=@{character_name}}}{{formula=[["+val["r_roll"]+"]]}}{{exp=[[0]]}}",
|
||||
(results)=>{
|
||||
const dices = results.results.formula.dice.join(", ");
|
||||
const exp = results.results.formula.expression;
|
||||
finishRoll(
|
||||
results.rollId,
|
||||
{
|
||||
formula : dices,
|
||||
exp : exp
|
||||
}
|
||||
);
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
on("sheet:opened change:character_avatar", (eventInfo)=>{
|
||||
getAttrs(["character_avatar"], function(val) {
|
||||
var im = val["character_avatar"];
|
||||
console.log(im);
|
||||
if (im=='') {
|
||||
$20("[name='attr_character_avatar']").addClass("displaynone");
|
||||
} else {
|
||||
$20("[name='attr_character_avatar']").removeClass("displaynone");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//- cost 변할때마다 침범도, 남은 개연성 코스트, 저항도 계산
|
||||
on("change:story-1-cost change:story-2-cost change:story-3-cost change:repeating_story:storycost", (eventInfo)=>{
|
||||
var tg = eventInfo.triggerName.replace("cost","");
|
||||
var tgCost = eventInfo.newValue;
|
||||
var resultVal, tgInv;
|
||||
if (tgCost<0) {
|
||||
resultVal=0;
|
||||
} else {
|
||||
resultVal = Math.ceil(tgCost/10);
|
||||
}
|
||||
if (tg.indexOf("repeating_story")=== -1) {
|
||||
tgInv = tg+"invasion";
|
||||
} else { //- 반복섹션일때
|
||||
tgInv = "repeating_story_storyinvasion";
|
||||
}
|
||||
const obj = {}
|
||||
obj[tgInv] = resultVal;
|
||||
setAttrs(obj);
|
||||
getAttrs(["story-1-cost", "story-2-cost", "story-3-cost", "likelihood_start"],(storycost)=>{
|
||||
getSectionIDs("story",(array)=>{
|
||||
getAttrs(array.map((id) => `repeating_story_${id}_storycost`), (object) => {
|
||||
var rep=0, sum=0;
|
||||
rep = Object.values(object).reduce((a,b) => a*1 + b*1);
|
||||
sum = storycost["story-1-cost"]*1 + storycost["story-2-cost"]*1 + storycost["story-3-cost"]*1 + rep;
|
||||
const obj1 = {};
|
||||
obj1["likelihood_max"] = storycost["likelihood_start"]*1 - sum;
|
||||
obj1["resistance"] = Math.floor((storycost["likelihood_start"]*1 - sum) / 10);
|
||||
setAttrs(obj1);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user