Add character sheet World-of-the-Storytellers-WoS

This commit is contained in:
headdrop
2022-01-31 02:30:41 +09:00
parent ebc3dd9fca
commit 5281c2819e
7 changed files with 2229 additions and 0 deletions
@@ -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

+9
View File
@@ -0,0 +1,9 @@
{
"html": "wos.html",
"css": "wos.css",
"authors": "HD",
"roll20userid": "1188201",
"preview": "preview.png",
"instructions": "## &#51060;&#50556;&#44592;&#44988;&#51032; &#49464;&#44228;(WoS) \n\n\n Character sheet for the 'World of the Storytellers(&#51060;&#50556;&#44592;&#44988;&#51032; &#49464;&#44228;)', which is a TRPG rule you can play for free. \n &#47784;&#46304; &#44163;&#51012; &#50948;&#54620; &#51088;&#50976;&#47196;&#50868; TRPG, &#51060;&#50556;&#44592;&#44988;&#51032; &#49464;&#44228;&#45716; Fate &#49884;&#49828;&#53596;&#51012; &#44592;&#48152;&#51004;&#47196; &#51228;&#51089;&#46108; &#52285;&#51089; TRPG &#47344;&#51077;&#45768;&#45796;. \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
+472
View File
@@ -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">&#xf1ec</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">&#xf205</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="&amp;{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="&amp;{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="&amp;{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="&amp;{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>