mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 11:42:29 +00:00
371 lines
22 KiB
HTML
371 lines
22 KiB
HTML
<html>
|
|
|
|
<script type="text/worker">
|
|
|
|
on("change:gm", function(eventInfo ) {
|
|
getAttrs(["gm"], function(values) {
|
|
let _gm = values["gm"];
|
|
var newattrs = {};
|
|
if (_gm == 0)
|
|
{
|
|
newattrs["rollmacro_footer"] = "]]";
|
|
newattrs["rollmacro_bdy_msg"] = "/em @{character_name} @{rolls_bdy}";
|
|
newattrs["rollmacro_ref_msg"] = "/em @{character_name} @{rolls_ref}";
|
|
newattrs["rollmacro_mnd_msg"] = "/em @{character_name} @{rolls_mnd}";
|
|
newattrs["rollmacro_spr_msg"] = "/em @{character_name} @{rolls_spr}";
|
|
newattrs["rollmacro_skill_msg"] = "/em @{character_name} @{rolls_skill} ";
|
|
newattrs["rollmacro_weapon_msg"] = "/em @{character_name} @{rolls_weapon} ";
|
|
newattrs["rollmacro_bdy"] = "/em [[1d10+@{BDY}+@{penalty}]]";
|
|
newattrs["rollmacro_ref"] = "/em [[1d10+@{REF}+@{penalty}]]";
|
|
newattrs["rollmacro_mnd"] = "/em [[1d10+@{MND}+@{penalty}]]";
|
|
newattrs["rollmacro_spr"] = "/em [[1d10+@{SPR}+@{penalty}]]";
|
|
newattrs["rollmacro_skill"] = "/em [[";
|
|
newattrs["rollmacro_weapon"] = "/em [[";
|
|
}
|
|
else
|
|
{
|
|
newattrs["rollmacro_footer"] = " ";
|
|
newattrs["rollmacro_bdy_msg"] = "/w gm @{character_name} @{rolls_bdy}";
|
|
newattrs["rollmacro_ref_msg"] = "/w gm @{character_name} @{rolls_ref}";
|
|
newattrs["rollmacro_mnd_msg"] = "/w gm @{character_name} @{rolls_mnd}";
|
|
newattrs["rollmacro_spr_msg"] = "/w gm @{character_name} @{rolls_spr}";
|
|
newattrs["rollmacro_skill_msg"] = "/w gm @{character_name} @{rolls_skill} ";
|
|
newattrs["rollmacro_weapon_msg"] = "/w gm @{character_name} @{rolls_weapon} ";
|
|
newattrs["rollmacro_bdy"] = "/gmroll 1d10+@{BDY}+@{penalty}";
|
|
newattrs["rollmacro_ref"] = "/gmroll 1d10+@{REF}+@{penalty}";
|
|
newattrs["rollmacro_mnd"] = "/gmroll 1d10+@{MND}+@{penalty}";
|
|
newattrs["rollmacro_spr"] = "/gmroll 1d10+@{SPR}+@{penalty}";
|
|
newattrs["rollmacro_skill"] = "/gmroll ";
|
|
newattrs["rollmacro_weapon"] = "/gmroll ";
|
|
}
|
|
setAttrs(newattrs);
|
|
});
|
|
});
|
|
|
|
function p10_set_repeating_skill_ability_mod(eventInfo) {
|
|
getAttrs(["repeating_skills_skillability"], function(values) {
|
|
let _skillability = values["repeating_skills_skillability"];
|
|
getAttrs([_skillability], function(values) {
|
|
let _abilitymod = parseInt(values[_skillability])||0;
|
|
setAttrs({ repeating_skills_skillabilitymod: _abilitymod });
|
|
});
|
|
});
|
|
}
|
|
|
|
function p10_set_repeating_skill_specific_ability_mod(eventInfo, abilityname) {
|
|
getSectionIDs("skills", function(idarray) {
|
|
for(var i=0; i < idarray.length; i++) {
|
|
let _id = idarray[i];
|
|
let _attrname = "repeating_skills_" + _id + "_skillability";
|
|
getAttrs([_attrname], function(values) {
|
|
let _skillability = values[_attrname];
|
|
if (_skillability == abilityname) {
|
|
getAttrs([_skillability], function(values) {
|
|
var newattrs = {};
|
|
newattrs["repeating_skills_" + _id + "_skillabilitymod"] = parseInt(values[_skillability])||0;
|
|
setAttrs(newattrs);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function p10_set_repeating_weapon_type_mod(eventInfo) {
|
|
getAttrs(["repeating_weapons_weapontype"], function(values) {
|
|
let _weapontype = parseInt(values["repeating_weapons_weapontype"])||0;
|
|
var _attrname = "melee_dmg_mod";
|
|
if (_weapontype != 0) _attrname = "ranged_dmg_mod";
|
|
getAttrs([_attrname], function(values) {
|
|
let _typemod = parseInt(values[_attrname])||0;
|
|
setAttrs({ repeating_weapons_weapontypemod: _typemod });
|
|
});
|
|
});
|
|
}
|
|
|
|
function p10_set_all_repeating_weapon_type_mods(eventInfo) {
|
|
getSectionIDs("weapons", function(idarray) {
|
|
for(var i=0; i < idarray.length; i++) {
|
|
let _id = idarray[i];
|
|
let _attrname = "repeating_weapons_" + _id + "_weapontype";
|
|
getAttrs([_attrname], function(values) {
|
|
let _weapontype = parseInt(values[_attrname])||0;
|
|
var _attrname = "melee_dmg_mod";
|
|
if (_weapontype != 0) _attrname = "ranged_dmg_mod";
|
|
getAttrs([_attrname], function(values) {
|
|
let _typemod = parseInt(values[_attrname])||0;
|
|
var newattrs = {};
|
|
newattrs["repeating_weapons_" + _id + "_weapontypemod"] = _typemod;
|
|
setAttrs(newattrs);
|
|
});
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
on("change:melee_dmg_mod", function(eventInfo ) {
|
|
p10_set_all_repeating_weapon_type_mods(eventInfo);
|
|
});
|
|
|
|
on("change:ranged_dmg_mod", function(eventInfo ) {
|
|
p10_set_all_repeating_weapon_type_mods(eventInfo);
|
|
});
|
|
|
|
on("sheet:opened", function(eventInfo){
|
|
var newattrs = {};
|
|
newattrs["rolls_bdy"] = getTranslationByKey("string_rolls_bdy");
|
|
newattrs["rolls_ref"] = getTranslationByKey("string_rolls_ref");
|
|
newattrs["rolls_spr"] = getTranslationByKey("string_rolls_spr");
|
|
newattrs["rolls_mnd"] = getTranslationByKey("string_rolls_mnd");
|
|
newattrs["rolls_skill"] = getTranslationByKey("string_rolls_skill");
|
|
newattrs["rolls_weapon"] = getTranslationByKey("string_rolls_weapon");
|
|
setAttrs(newattrs);
|
|
});
|
|
|
|
on("change:repeating_skills:skillname", function(eventInfo ) {
|
|
p10_set_repeating_skill_ability_mod(eventInfo);
|
|
});
|
|
|
|
on("change:repeating_skills:skillability", function(eventInfo ) {
|
|
p10_set_repeating_skill_ability_mod(eventInfo);
|
|
});
|
|
|
|
on("change:repeating_skills:skillabilitymod", function(eventInfo ) {
|
|
p10_set_repeating_skill_ability_mod(eventInfo);
|
|
});
|
|
|
|
on("change:BDY", function(eventInfo ) {
|
|
p10_set_repeating_skill_specific_ability_mod(eventInfo, "BDY");
|
|
});
|
|
|
|
on("change:REF", function(eventInfo ) {
|
|
p10_set_repeating_skill_specific_ability_mod(eventInfo, "REF");
|
|
});
|
|
|
|
on("change:SPR", function(eventInfo ) {
|
|
p10_set_repeating_skill_specific_ability_mod(eventInfo, "SPR");
|
|
});
|
|
|
|
on("change:MND", function(eventInfo ) {
|
|
p10_set_repeating_skill_specific_ability_mod(eventInfo, "MND");
|
|
});
|
|
|
|
on("change:repeating_weapons:weaponname", function(eventInfo ) {
|
|
p10_set_repeating_weapon_type_mod(eventInfo);
|
|
});
|
|
|
|
on("change:repeating_weapons:weapontype", function(eventInfo ) {
|
|
p10_set_repeating_weapon_type_mod(eventInfo);
|
|
});
|
|
|
|
on("change:repeating_weapons:weapontypemod", function(eventInfo ) {
|
|
p10_set_repeating_weapon_type_mod(eventInfo);
|
|
});
|
|
|
|
|
|
on("change:repeating_weapons:weapondicetext", function(eventInfo) {
|
|
getAttrs(["repeating_weapons_weapondicetext"], function(values) {
|
|
var _weapondicetext = values["repeating_weapons_weapondicetext"].replace(/\s/g,"");
|
|
if ((_weapondicetext == "1/2") || (_weapondicetext == "½") || (_weapondicetext == "0.5") || (_weapondicetext == "0,5"))
|
|
{
|
|
setAttrs({ repeating_weapons_weapondice: "ceil(1d10/2)" });
|
|
}
|
|
else
|
|
{
|
|
setAttrs({ repeating_weapons_weapondice: _weapondicetext + "d10" });
|
|
}
|
|
});
|
|
});
|
|
|
|
</script>
|
|
|
|
<body>
|
|
|
|
<div class="header">
|
|
<div class="header-logo">
|
|
<img src="https://i.imgur.com/7NSfRec.png" alt="P10 Logo" width="50">
|
|
</div>
|
|
<div class="header-text">
|
|
<h2><span data-i18n="string_p10_character_sheet">P10 - CHARACTER SHEET</span></h2>
|
|
</div>
|
|
<div class="header-gm">
|
|
<input type="checkbox" id="attr_gm" name="attr_gm"/>
|
|
<label for="attr_gm"><span data-i18n="string_gm">GM</span></label>
|
|
<input type="hidden" name="attr_rollmacro_footer" value="]]"/>
|
|
<input type="hidden" name="attr_rollmacro_bdy_msg" value="/em @{character_name} @{rolls_bdy}"/>
|
|
<input type="hidden" name="attr_rollmacro_ref_msg" value="/em @{character_name} @{rolls_ref}"/>
|
|
<input type="hidden" name="attr_rollmacro_spr_msg" value="/em @{character_name} @{rolls_spr}"/>
|
|
<input type="hidden" name="attr_rollmacro_mnd_msg" value="/em @{character_name} @{rolls_mnd}"/>
|
|
<input type="hidden" name="attr_rollmacro_skill_msg" value="/em @{character_name} @{rolls_skill} "/>
|
|
<input type="hidden" name="attr_rollmacro_weapon_msg" value="/em @{character_name} @{rolls_weapon} "/>
|
|
<input type="hidden" name="attr_rollmacro_bdy" value="/em [[1d10+@{BDY}+@{penalty}]]"/>
|
|
<input type="hidden" name="attr_rollmacro_ref" value="/em [[1d10+@{REF}+@{penalty}]]"/>
|
|
<input type="hidden" name="attr_rollmacro_spr" value="/em [[1d10+@{MND}+@{penalty}]]"/>
|
|
<input type="hidden" name="attr_rollmacro_mnd" value="/em [[1d10+@{SPR}+@{penalty}]]"/>
|
|
<input type="hidden" name="attr_rollmacro_skill" value="/em [["/>
|
|
<input type="hidden" name="attr_rollmacro_weapon" value="/em [["/>
|
|
</div>
|
|
</div>
|
|
|
|
<br>
|
|
|
|
<div class="grid-upper">
|
|
<div class="info">
|
|
<div class="info-title"><h3><span data-i18n="string_info">Info</span></h3></div>
|
|
<div class="info-character-name-title"><span data-i18n="string_character_name">Character name</span></div>
|
|
<div class="info-character-name"><input type="text" name="attr_character_name" style="width: 100%;" /></div>
|
|
<div class="info-species-title"><span data-i18n="string_species">Species</span></div>
|
|
<div class="info-species"><input type="text" name="attr_species" style="width: 100%;" /></div>
|
|
<div class="info-gender-title"><span data-i18n="string_gender">Gender</span></div>
|
|
<div class="info-gender"><input type="text" name="attr_gender" style="width: 100%;" /></div>
|
|
<div class="info-appearance-title"><span data-i18n="string_appearance">Appearance</span></div>
|
|
<div class="info-appearance"><input type="text" name="attr_appearance" style="width: 100%;" /></div>
|
|
<div class="info-demeanor-title"><span data-i18n="string_demeanor">Demeanor</span></div>
|
|
<div class="info-demeanor"><input type="text" name="attr_demeanor" style="width: 100%;" /></div>
|
|
<div class="info-notes-title"><span data-i18n="string_notes">Notes</span></div>
|
|
<div class="info-notes"><textarea name="attr_notes"></textarea></div>
|
|
</div>
|
|
<div class="abilities">
|
|
<div class="abilities-title"><h3><span data-i18n="string_Abilities">Abilities</span></h3></div>
|
|
<div class="abilities-bdy-title"><span data-i18n="string_bdy">BDY</span></div>
|
|
<div class="abilities-bdy">
|
|
<input type="number" name="attr_BDY" />
|
|
<button type='roll' name='roll_BDY' value="@{rollmacro_bdy_msg}\n@{rollmacro_bdy}"></button>
|
|
<span style="display: none" data-i18n="string_rolls_bdy">rolls BDY:</span>
|
|
</div>
|
|
<div class="abilities-ref-title"><span data-i18n="string_ref">REF</span></div>
|
|
<div class="abilities-ref">
|
|
<input type="number" name="attr_REF" />
|
|
<button type='roll' name='roll_REF' value="@{rollmacro_ref_msg}\n@{rollmacro_ref}"></button>
|
|
<span style="display: none" data-i18n="string_rolls_ref">rolls REF:</span>
|
|
</div>
|
|
<div class="abilities-spr-title"><span data-i18n="string_spr">SPR</span></div>
|
|
<div class="abilities-spr">
|
|
<input type="number" name="attr_SPR" />
|
|
<button type='roll' name='roll_SPR' value="@{rollmacro_spr_msg}\n@{rollmacro_spr}"></button>
|
|
<span style="display: none" data-i18n="string_rolls_spr">rolls SPR:</span>
|
|
</div>
|
|
<div class="abilities-mnd-title"><span data-i18n="string_mnd">MND</span></div>
|
|
<div class="abilities-mnd">
|
|
<input type="number" name="attr_MND" />
|
|
<button type='roll' name='roll_MND' value="@{rollmacro_mnd_msg}\n@{rollmacro_mnd}"></button>
|
|
<span style="display: none" data-i18n="string_rolls_mnd">rolls MND:</span>
|
|
</div>
|
|
<div class="dmg-mod-title"><h3><span data-i18n="string_damage_modifiers">Damage modifiers</span></h3></div>
|
|
<div class="dmg-mod-melee-title"><span data-i18n="string_melee_damage_modifier">Melee</span></div>
|
|
<div class="dmg-mod-melee"><input type="number" name="attr_melee_dmg_mod" /></div>
|
|
<div class="dmg-mod-ranged-title"><span data-i18n="string_ranged_damage_modifier">Ranged</span></div>
|
|
<div class="dmg-mod-ranged"><input type="number" name="attr_ranged_dmg_mod" /></div>
|
|
<div class="action-order-title">
|
|
<h3><span data-i18n="string_order_of_action">Order of action</span></h3>
|
|
</div>
|
|
<div class="action-order">
|
|
<span data-i18n="string_roll_button">Roll!</span>
|
|
<button type='roll' name='roll_orderofaction' value="/em [[1d10+@{selected|REF} &{tracker}]]"></button>
|
|
</div>
|
|
</div>
|
|
<div class="stats">
|
|
<div class="stats-title"><h3><span data-i18n="string_p10_stats">Stats</span></h3></div>
|
|
<div class="stats-hp-current-title"><span data-i18n="string_hp_current">Current HP</span></div>
|
|
<div class="stats-hp-current"><input type="number" name="attr_HP" /></div>
|
|
<div class="stats-hp-total-title"><span data-i18n="string_hp_total">Total HP</span></div>
|
|
<div class="stats-hp-total"><input type="number" name="attr_HP_max" /></div>
|
|
<div class="stats-ag-title"><span data-i18n="string_armor_grade">Armor Grade</span></div>
|
|
<div class="stats-ag"><input type="number" name="attr_AG" /></div>
|
|
<div class="stats-mov-title"><span data-i18n="string_mov">Movement</span></div>
|
|
<div class="stats-mov"><input type="number" name="attr_MOV" /></div>
|
|
<div class="stats-xp-title"><span data-i18n="string_xp">Unspent XP</span></div>
|
|
<div class="stats-xp"><input type="number" name="attr_XP" /></div>
|
|
<div class="stats-xp-total-title"><span data-i18n="string_xp_total">Total XP</span></div>
|
|
<div class="stats-xp-total"><input type="number" name="attr_XP_max" /></div>
|
|
<div class="stats-penalty-title"><span data-i18n="string_penalty">Penalty</span></div>
|
|
<div class="stats-penalty"><input type="number" name="attr_penalty" value="0" /></div>
|
|
</div>
|
|
</div>
|
|
|
|
<br>
|
|
|
|
<h3><span data-i18n="string_skills">Skills</span></h3>
|
|
<fieldset class="repeating_skills">
|
|
<div class="skills">
|
|
<div class="skill-name-title"><span data-i18n="string_skill">Skill</span></div>
|
|
<div class="skill-level-title"><span data-i18n="string_level">Level</span></div>
|
|
<div class="skill-ability-title"><span data-i18n="string_ability">Ability</span></div>
|
|
<div class="skill-mod-title"><span data-i18n="string_modifier">Mod.</span></div>
|
|
<div class="skill-notes-title"><span data-i18n="string_notes">Notes</span></div>
|
|
<div class="skill-roll-title"><span data-i18n="string_roll_button">Roll!</span></div>
|
|
<div class="skill-name"><input type="text" name="attr_skillname" style="width: 100%;" /></div>
|
|
<div class="skill-level"><input type="number" name="attr_skilllevel" style="width: 100%;" /></div>
|
|
<div class="skill-ability">
|
|
<select name="attr_skillability" class="dtype" style="width: 100%;" >
|
|
<option value="BDY" data-i18n="string_bdy">BDY</option>
|
|
<option value="REF" data-i18n="string_ref">REF</option>
|
|
<option value="SPR" data-i18n="string_spr">SPR</option>
|
|
<option value="MND" data-i18n="string_mnd">MND</option>
|
|
</select>
|
|
</div>
|
|
<div class="skill-mod"><input type="number" name="attr_skillabilitymod" style="width: 100%;" /></div>
|
|
<div class="skill-notes"><input type="text" name="attr_skillnotes"/ style="width: 100%;" ></div>
|
|
<div class="skill-roll"><button type='roll' name='roll_skill' value="@{rollmacro_skill_msg}@{skillability} + @{skillname}\n@{rollmacro_skill}1d10+@{skilllevel}+@{skillabilitymod}+@{penalty}@{rollmacro_footer}"></button></div>
|
|
</div>
|
|
</fieldset>
|
|
|
|
<br>
|
|
|
|
<h3><span data-i18n="string_weapons">Weapons</span></h3>
|
|
<fieldset class="repeating_weapons">
|
|
<div class="weapons">
|
|
<div class="weapon-name-title"><span data-i18n="string_weapon">Weapon</span></div>
|
|
<div class="weapon-hands-title"><span data-i18n="string_hands">Hands</span></div>
|
|
<div class="weapon-range-title"><span data-i18n="string_range">Range</span></div>
|
|
<div class="weapon-ammo-title"><span data-i18n="string_ammo">Ammo</span></div>
|
|
<div class="weapon-penetration-title"><span data-i18n="string_penetration">Penet.</span></div>
|
|
<div class="weapon-damage-title"><span data-i18n="string_damage">Damage</span></div>
|
|
<div class="weapon-type-title"><span data-i18n="string_type">Type</span></div>
|
|
<div class="weapon-mod-title"><span data-i18n="string_mod">Mod.</span></div>
|
|
<div class="weapon-notes-title"><span data-i18n="string_notes">Notes</span></div>
|
|
<div class="weapon-roll-title"><span data-i18n="string_roll_button">Roll!</span></div>
|
|
<div class="weapon-name"><input type="text" name="attr_weaponname" style="width: 100%;" /></div>
|
|
<div class="weapon-hands"><input type="number" name="attr_hands" style="width: 100%;" /></div>
|
|
<div class="weapon-range"><input type="number" name="attr_range" style="width: 100%;" /></div>
|
|
<div class="weapon-ammo"><input type="number" name="attr_ammo" style="width: 100%;" /></div>
|
|
<div class="weapon-penetration"><input type="number" name="attr_penet" style="width: 100%;" /></div>
|
|
<div class="weapon-damage-dice">
|
|
<input type="text" name="attr_weapondicetext" value="½" style="width: 100%;" />
|
|
<input type="hidden" name="attr_weapondice" value="ceil(1D10/2)"/>
|
|
</div>
|
|
<div class="weapon-damage-d10"><span data-i18n="string_d10_plus">D10 +</span></div>
|
|
<div class="weapon-damage-mod"><input type="number" name="attr_weaponmod" value="0"/ style="width: 100%;" ></div>
|
|
<div class="weapon-type-melee"><input type="radio" value="0" name="attr_weapontype" checked="true" style="width: 100%;" /><span data-i18n="string_melee">Melee</span></div>
|
|
<div class="weapon-type-ranged"><input type="radio" value="1" name="attr_weapontype"/><span data-i18n="string_ramged">Ranged</span></div>
|
|
<div class="weapon-mod"><input type="number" name="attr_weapontypemod"/ style="width: 100%;" ></div>
|
|
<div class="weapon-notes"><input type="text" name="attr_weaponnotes"/ style="width: 100%;" ></div>
|
|
<div class="weapon-roll"><button type='roll' name='roll_weapon' value="@{rollmacro_weapon_msg}@{weaponname}\n@{rollmacro_weapon}@{weapondice}+@{weaponmod}+@{weapontypemod}@{rollmacro_footer}"></button></div>
|
|
</div>
|
|
</fieldset>
|
|
|
|
<br>
|
|
|
|
<div class="grid-lower">
|
|
<div class="benefits-area">
|
|
<div class="benefits-title"><h3><span data-i18n="string_benefits">Benefits</span></h3></div>
|
|
<div class="benefits"><textarea name="attr_benefits"></textarea></div>
|
|
</div>
|
|
<div class="flaws-area">
|
|
<div class="flaws-title"><h3><span data-i18n="string_flaws">Flaws</span></h3></div>
|
|
<div class="flaws"><textarea name="attr_flaws"></textarea></div>
|
|
</div>
|
|
<div class="powers-area">
|
|
<div class="powers-title"><h3><span data-i18n="string_powers">Powers</span></h3></div>
|
|
<div class="powers"><textarea name="attr_powers"></textarea></div>
|
|
</div>
|
|
<div class="gear-area">
|
|
<div class="gear-title"><h3><span data-i18n="string_gear">Gear</span></h3></div>
|
|
<div class="gear"><textarea name="attr_gear"></textarea></div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|