SWN-Revised: v2.1.0

This commit is contained in:
joesinghaus
2018-05-21 10:40:02 +02:00
parent 4a70c6859c
commit 53278bb2ec
13 changed files with 1307 additions and 234 deletions
+15 -1
View File
@@ -27,10 +27,24 @@ Report any problems, suggestions, or features by [creating an issue](https://git
## Changelog
### 2.1.0
* Additions
* Added option to disable modifier queries globally.
* Added button to roll hit points.
* Added weapon encumbrance tracking.
* Weapon shock damage can now be toggled independent of base being 0 (for Unarmed Combatant).
* Added option for automatic ammo reduction (requires ChatSetAttr).
* Bugfixes
* Attribute modifiers are now recalculated upon conversion from v1.6.2.
* Roll templates are no longer cut off when chat avatars are disabled.
* New NPC attacks should now receive the correct attack bonus.
* Line breaks in foci/technique/spell/cyberware descriptions now render correctly.
### 2.0.1
* Fixed a bug preventing successful conversion of NPC sheets.
* Fixed a bug that prevented extra effort from taking effect.
* Fixed a bug preventing extra effort from taking effect.
### 2.0.0
@@ -9,8 +9,9 @@ div
input(type="hidden", name="attr_attribute_query_wis", value="+ @{wisdom_mod}[Wisdom]]]}} {{attribute= + WIS}}")
input(type="hidden", name="attr_attribute_query_cha", value="+ @{charisma_mod}[Charisma]]]}} {{attribute= + CHA}}")
input(type="hidden", name="attr_attribute_query_none", value="]]}}")
input(type="hidden", name="attr_burst_query", value="?{Burst|Yes, 2|No, 0}[Burst]")
input(type="hidden", name="attr_modifier_query", value="?{Modifier|0}[Modifier]")
input(type="hidden", name="attr_burst_query", value="?{Burst|Yes,+ 2[Burst]|No, }")
input(type="hidden", name="attr_extra_hp_query", value!="?{Extra hit points? Enter 2 for Warrior|0}[Bonus]")
input(type="hidden", name="attr_modifier_query", value="+ ?{Modifier|0}[Mod]")
input(type="hidden", name="attr_proficient_query", value="?{Proficient|Yes, @{npc_skills}|No, 0}[Skill]")
input(type="hidden", name="attr_skill_name_query", value="?{Skill name|Skill}")
input(type="hidden", name="attr_translation_numdice", value="Number of dice")
@@ -165,7 +165,7 @@ h3 {
opacity: 0;
position: absolute;
}
.sheet-logo { width: 60% }
.sheet-logo { width: 480px }
.sheet-npc-chooser {
cursor: pointer;
margin-left: auto;
@@ -234,6 +234,7 @@ h3 {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
align-items: flex-start;
}
.sheet-grow { flex-grow: 1 }
@@ -302,6 +303,11 @@ input[type=number].sheet-inline-input {
font-size: .9em;
line-height: 14px;
border-top: 1px solid #AAA;
input[type="checkbox"] {
height: 14px;
margin: 0 3px 0 0;
}
}
input[type=text], input[type=number], textarea {
background: transparent;
@@ -320,7 +326,7 @@ input[type=number].sheet-inline-input {
height: 20px;
min-height: 20px;
}
input[type=checkbox] {
> input[type=checkbox] {
height: 14px;
margin: 3px 0;
}
@@ -349,6 +355,10 @@ input[type=number].sheet-inline-input {
}
div { grid-column: 1/4 }
}
button[type=roll].btn {
width: 100%;
&:hover { color: red }
}
}
.sheet-blue-button {
text-align: center;
@@ -369,6 +379,14 @@ input[type=number].sheet-inline-input {
.sheet-colon-after::after { content: ":" }
.sheet-hide-empty[value=""] + span { display: none }
.sheet-add-plus:not([value^="-"]) + span::before { content: "+" }
.sheet-api {
font-size: .8em;
background: $lightbox;
border-radius: 5px;
padding: 1px;
line-height: 1;
vertical-align: super;
}
/* force repeating row behaviour */
@@ -387,6 +405,7 @@ input[type=number].sheet-inline-input {
.sheet-details {
line-height: 1.4;
text-align: justify;
white-space: pre-wrap;
}
}
}
@@ -479,7 +498,7 @@ input[type=number].sheet-inline-input {
}
}
&.sheet-core-stats {
grid: auto / 1fr 260px 220px;
grid: auto / minmax(310px, 1fr) minmax(260px, 1fr) minmax(220px, 1fr);
}
.sheet-main-content {
margin-top: 3px;
@@ -488,10 +507,6 @@ input[type=number].sheet-inline-input {
grid-row-gap: 3px;
.sheet-left-margin { margin-left: 15px }
}
button[type=roll].sheet-doombutton {
width: 100%;
&:hover { color: red }
}
}
/* Saves */
@@ -554,12 +569,12 @@ input[type=number].sheet-inline-input {
.sheet-weapon-skill { width: 80px }
.sheet-attribute { width: 60px }
.sheet-burst { width: 65px }
.sheet-damage { width: 65px }
.sheet-shock-damage { width: 80px }
.sheet-damage { width: 70px }
.sheet-shock-damage { width: 95px }
.sheet-shock-ac { width: 55px }
.sheet-skill-to-damage { width: 40px }
.sheet-range { width: 65px }
.sheet-ammo { width: 50px }
.sheet-range { width: 70px }
.sheet-ammo { width: 53px }
}
.sheet-text-input { padding-right: 3px }
@@ -757,14 +772,19 @@ input[type=number].sheet-inline-input {
&[value="right"] ~ .sheet-column .sheet-foci-left { display: none }
}
.sheet-foci {
> .sheet-name {
border-bottom: 1px solid #777;
div {
.sheet-details-button {
position: relative;
z-index: 2;
}
.sheet-class-ability {
position: relative;
.sheet-edit .sheet-name {
font-weight: bold;
font-size: 1.1em;
border-bottom: 1px solid #777;
}
.sheet-name,.sheet-edit textarea, .sheet-display { margin-bottom: 3px }
}
> .sheet-name, > .sheet-edit textarea, > .sheet-display { margin-bottom: 3px }
.sheet-edit {
.sheet-name { flex-grow: 1 }
.sheet-level {
@@ -804,6 +824,7 @@ input[type=number].sheet-inline-input {
}
}
.sheet-equipment {
.repcontainer[data-groupname="repeating_weapons"] + .repcontrol { display: none }
.repitem {
margin-bottom: 2px;
input[type=text], input[type=number], select { background: transparent }
@@ -986,7 +1007,15 @@ input[type=number].sheet-inline-input {
}
}
/* New roll templates */
/* Roll templates */
.withoutavatars {
.sheet-rolltemplate-swn-default,
.sheet-rolltemplate-swn-attack,
.sheet-rolltemplate-swn-skill,
.sheet-rolltemplate-swn-save { margin-left: -11px }
}
.sheet-rolltemplate-swn-default,
.sheet-rolltemplate-swn-attack,
.sheet-rolltemplate-swn-skill,
@@ -1081,6 +1110,10 @@ input[type=number].sheet-inline-input {
font-size: 10px;
line-height: 1;
margin: -10px 0 5px;
.inlinerollresult {
font-size: 1em;
font-weight: normal;
}
}
}
@@ -1108,6 +1141,11 @@ input[type=number].sheet-inline-input {
font-style: italic;
font-size: 10px;
> span:first-child { margin-right: 10px }
.inlinerollresult {
font-weight: normal;
font-size: 1em;
margin-left: 2px;
}
}
.sheet-desc {
font-size: 12px;
@@ -22,6 +22,42 @@
psionic: ["biopsionics", "metapsionics", "precognition", "telekinesis", "telepathy", "teleportation"],
};
//- We have foci in two locations, so they are outsourced to this mixin
mixin foci
+sectionheader("show_foci", "FOCI")
.foci.simple-repsection
input(type="hidden", name="attr_show_focus_details", value="1").input-details
.class-ability
button.display.invisible-button(type="roll", name="roll_Class_ability", value!="&{template:swn-default} {{charname=@{name}}} {{title=^{CLASS_ABILITY}}} {{desc=@{class_ability}}}")
.display
.name.flex
div(data-i18n="CLASS_ABILITY")
label.details-button
input(type="checkbox", name="attr_show_focus_details", value="1", checked)
span(data-i18n="EXPAND")
.details
span(name="attr_class_ability")
.edit
.name.flex
div(data-i18n="CLASS_ABILITY")
label.details-button
input(type="checkbox", name="attr_show_focus_details", value="1", checked)
span(data-i18n="EXPAND")
.details
textarea.details(name="attr_class_ability")
fieldset.repeating_foci
button.display.invisible-button(type="roll", name="roll_Focus", value!="&{template:swn-default} {{charname=@{name}}} {{info=^{FOCUS}}} {{title=@{focus_name}}} {{desc=@{focus_description}}}")
.display
.name.flex
span(name="attr_focus_name")
span.level #[span(data-i18n="LEVEL")]-#[span(name="attr_focus_level")]
.details
span(name="attr_focus_description")
.edit.flex-wrap
input.name(type="text", name="attr_focus_name", data-i18n-placeholder="FOCUS")
input.level(type="number", min="0", name="attr_focus_level", data-i18n-placeholder="LEVEL")
textarea.details(name="attr_focus_description", data-i18n-placeholder="DESCRIPTION")
input(type="hidden", name="attr_homebrew_skill_list", value="revised").skills-type
input(type="hidden", name="attr_setting_super_type", value="psionics").super-type
input(type="hidden", name="attr_setting_foci_location", value="left").foci-loc
@@ -48,24 +84,25 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
.menus.core-box
h3(data-i18n="QUICK_MENUS")
.menus-content
button(type="roll", name="roll_Initiative", data-i18n="INITIATIVE", value="&{template:swn-default} {{charname=@{name}}} {{title=^{INITIATIVE}}} {{ =[[1d8+@{dexterity_mod} &{tracker}]]}}").unstyled-button
button(type="roll", name="roll_Initiative", data-i18n="INITIATIVE", value!="&{template:swn-default} {{charname=@{name}}} {{title=^{INITIATIVE}}} {{ =[[1d8+@{dexterity_mod} &{tracker}]]}}").unstyled-button
input(type="hidden", name="attr_macro_saves", value="[^{PHYSICAL} (v@{save_physical}),](~save_physical) [^{MENTAL} (v@{save_mental}),](~save_mental) [^{EVASION} (v@{save_evasion})](~save_evasion)")
button(type="roll", name="roll_Saves_macro", data-i18n="SAVES", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{SAVING_THROWS}}} {{buttons=@{macro_saves}}}`).unstyled-button
button(type="roll", name="roll_Saves_macro", data-i18n="SAVES", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{SAVING_THROWS}}} {{buttons=@{macro_saves}}}`).unstyled-button
input(type="hidden", name="attr_macro_skills" value="[^{ADMINISTER} (-1),](~skill_administer) [^{CONNECT} (-1),](~skill_connect) [^{EXERT} (-1),](~skill_exert) [^{FIX} (-1),](~skill_fix) [^{HEAL} (-1),](~skill_heal) [^{KNOW} (-1),](~skill_know) [^{LEAD} (-1),](~skill_lead) [^{NOTICE} (-1),](~skill_notice) [^{PERFORM} (-1),](~skill_perform) [^{PILOT} (-1),](~skill_pilot) [^{PROGRAM} (-1),](~skill_program) [^{PUNCH} (-1),](~skill_punch) [^{SHOOT} (-1),](~skill_shoot) [^{SNEAK} (-1),](~skill_sneak) [^{STAB} (-1),](~skill_stab) [^{SURVIVE} (-1),](~skill_survive) [^{TALK} (-1),](~skill_talk) [^{TRADE} (-1),](~skill_trade) [^{WORK} (-1)](~skill_work)")
button(type="roll", name="roll_Skills_macro", data-i18n="SKILLS", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{SKILLS}}} {{buttons=@{macro_skills}}}`).unstyled-button
button(type="roll", name="roll_Skills_macro", data-i18n="SKILLS", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{SKILLS}}} {{buttons=@{macro_skills}}}`).unstyled-button
input(type="hidden", name="attr_macro_weapons")
button(type="roll", name="roll_Weapons_macro", data-i18n="WEAPONS", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{WEAPONS}}} {{buttons=@{macro_weapons}}}`).unstyled-button
button(type="roll", name="roll_Weapons_macro", data-i18n="WEAPONS", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{WEAPONS}}} {{buttons=@{macro_weapons}}}`).unstyled-button
input(type="hidden", name="attr_macro_psionics" value="[^{BIOPSIONICS} (-1),](~skill_biopsionics) [^{METAPSIONICS} (-1),](~skill_metapsionics) [^{PRECOGNITION} (-1),](~skill_precognition) [^{TELEKINESIS} (-1),](~skill_telekinesis) [^{TELEPATHY} (-1),](~skill_telepathy) [^{TELEPORTATION} (-1)](~skill_teleportation)")
button(type="roll", name="roll_Psionics_macro", data-i18n="PSIONICS", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{PSYCHIC_SKILLS_TECHNIQUES}}} {{buttons=@{macro_psionics}}}`).unstyled-button.super-psionics.super
button(type="roll", name="roll_Psionics_macro", data-i18n="PSIONICS", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{PSYCHIC_SKILLS_TECHNIQUES}}} {{buttons=@{macro_psionics}}}`).unstyled-button.super-psionics.super
input(type="hidden", name="attr_macro_magic")
button(type="roll", name="roll_Magic_macro", data-i18n="MAGIC", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{SPACE_MAGIC}}} {{buttons=@{macro_magic}}}`).unstyled-button.super-magic.super
button(type="roll", name="roll_Magic_macro", data-i18n="MAGIC", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{name}}} {{title=^{SPACE_MAGIC}}} {{buttons=@{macro_magic}}}`).unstyled-button.super-magic.super
//- Stats
.core.core-stats.col-1-3
.main.core-box-text
h3(data-i18n="CORE_STATISTICS")
.main-content
+text-input-duo("HP", "HP_max", "HIT_POINTS").important
+text-input-duo("HP", "HP_max", false, {value: "0"}).important
button.unstyled-button(type="roll", name="roll_HP", data-i18n="HIT_POINTS" value!="&{template:swn-default} {{charname=@{name}}} {{title=^{HIT_POINTS}}} {{ =[[{@{level}d6 + @{level}*@{constitution_mod}[CON] + @{level}*@{extra_hp_query}, @{hp|max} + 1d1}kh1 ]]}} {{info=^{MAXIMUM_HP_1} @{level}d6 + @{level}*[[@{constitution_mod}[CON] + @{extra_hp_query}]] ^{MAXIMUM_HP_2} [[@{hp|max} + 1]]}}")
+text-input-duo("strain", "strain_max", "SYSTEM_STRAIN", {value: "10", readonly: true, "data-i18n-title": "CONSTITUTION"})(min="0", value="0")
+text-input("strain_permanent", "PERMANENT_STRAIN")(type="number", min="0", value="0").center
+text-input-duo("xp", "xp_next", "XP_NEXT_LEVEL", {min: "0", value: "3"})(min="0", value="0")
@@ -73,7 +110,7 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
+text-input("attack_bonus", "ATTACK_BONUS")(type="number", min="0", value="0").center
input(type="hidden", name="attr_setting_heroic_enable", value="0").hider
+text-input("hp_doom")(type="number").center
button.unstyled-button.doombutton(type="roll", name="roll_Doom", data-i18n="DOOM_DAMAGE", data-i18n-title="DEFY_DOOM", value="&{template:swn-default} {{charname=@{name}}} {{title=^{DEFYING_DOOM}}} {{^{DOOM_DAMAGE}=[[@{level}d@{doom_size}]]}}")
button.unstyled-button(type="roll", name="roll_Doom", data-i18n="DOOM_DAMAGE", data-i18n-title="DEFY_DOOM", value!="&{template:swn-default} {{charname=@{name}}} {{title=^{DEFYING_DOOM}}} {{^{DOOM_DAMAGE}=[[@{level}d@{doom_size}]]}}")
.attributes.core-box
table
thead
@@ -114,9 +151,10 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
+sectionheader("show_weapons", "WEAPONS")
.weapons
fieldset.repeating_weapons
input(type="hidden", name="attr_weapon_api", value="")
input(type="hidden", name="attr_weapon_attack_display", value="")
input(type="hidden", name="attr_weapon_damage_display", value="")
button(type="roll", name="roll_Attack", value="&{template:swn-attack} {{charname=@{name}}} {{title=@{weapon_name}}} {{attack=[[1d20 + @{attack_bonus}[AB] + @{weapon_attack}[Weapon AB] + [[{{@{weapon_skill_bonus},-1}>0}*(@{weapon_skill_bonus}+2) - 2]][Skill] + @{weapon_attribute_mod}[Attribute] + @{weapon_burst}[Burst] + @{modifier_query}]]}} {{damage=[[@{weapon_damage} + @{weapon_attribute_mod}[Attribute] + @{weapon_skill_to_damage}[Skill] + @{weapon_burst}[Burst]]]}} {{burst=[[@{weapon_burst}]]}} {{shock=[[@{weapon_shock_damage} + @{weapon_attribute_mod}[Attribute] + @{weapon_skill_to_damage}[Skill]]]}} {{shock_base=[[@{weapon_shock_damage}]]}} {{shock_ac=@{weapon_shock_ac}}} {{ammo=@{weapon_ammo}}} {{range=@{weapon_range}}} {{mod=[[@{modifier_query}]]}}").invisible-button.display
button(type="roll", name="roll_Attack", value!="&{template:swn-attack} {{charname=@{name}}} {{title=@{weapon_name}}} {{attack=[[1d20 + @{attack_bonus}[AB] + @{weapon_attack}[Weapon AB] + [[{{@{weapon_skill_bonus},-1}>0}*(@{weapon_skill_bonus}+2) - 2]][Skill] + @{weapon_attribute_mod}[Attribute] @{weapon_burst} @{modifier_query}]]}} {{damage=[[@{weapon_damage} + @{weapon_attribute_mod}[Attribute] + @{weapon_skill_to_damage}[Skill] @{weapon_burst}]]}} {{burst=[[0@{weapon_burst}]]}} @{weapon_shock} {{range=@{weapon_range}}} @{weapon_use_ammo} {{mod=[[0 @{modifier_query}]]}} @{weapon_api}").invisible-button.display
.display
span.name.space-after
span(name="attr_weapon_name").space-after
@@ -127,7 +165,7 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
input(type="hidden", name="attr_weapon_range", value="").hide-empty
span , #[span(data-i18n="RANGE")]: #[span(name="attr_weapon_range")]
| )
input(type="hidden", name="attr_weapon_ammo", value="").hide-empty
input(type="hidden", name="attr_weapon_use_ammo", value="0").hider
span
| . #[span(data-i18n="AMMO")]: 
input(type="number", name="attr_weapon_ammo").inline-input
@@ -154,44 +192,24 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
option(value=`@{${attr}_mod}`, data-i18n=`${attr.toUpperCase()}_SHORT`)
+fake-text-input("BURST").burst.center
select(name="attr_weapon_burst")
option(value="0", data-i18n="NO")
option(value="", data-i18n="NO", selected)
option(value="@{burst_query}", data-i18n="ASK")
option(value="2", data-i18n="ALWAYS")
option(value="+ 2[Burst]", data-i18n="ALWAYS")
+text-input("weapon_damage", "DAMAGE")(value="0").damage.center
+fake-text-input("+SKILL").skill-to-damage.center
input(type="checkbox", name="attr_weapon_skill_to_damage", value="@{weapon_skill_bonus}")
+text-input("weapon_shock_damage", "SHOCK_DAMAGE")(value="0").shock-damage.center
+text-input("weapon_shock_damage")(value="0").shock-damage.center
input(type="checkbox", name="attr_weapon_shock", value!="{{shock=[[@{weapon_shock_damage} + @{weapon_attribute_mod}[Attribute] + @{weapon_skill_to_damage}[Skill]]] ^{SHOCK_DAMAGE_AGAINST_AC_LEQ} @{weapon_shock_ac}!}}")
span(data-i18n="SHOCK_DAMAGE")
+text-input("weapon_shock_ac", "SHOCK_AC")(type="number", value="10").shock-ac.center
+text-input("weapon_range", "RANGE").range.center
+text-input("weapon_ammo", "AMMO")(type="number").ammo.center
+text-input("weapon_ammo")(type="number").ammo.center
input(type="checkbox", name="attr_weapon_use_ammo", value!="{{ammo=[[0@{weapon_ammo} - (1 @{weapon_burst})]]}}")
span(data-i18n="AMMO")
//- Foci
.section.foci-left
+sectionheader("show_foci", "FOCI")
.foci.simple-repsection
input(type="hidden", name="attr_show_focus_details", value="1").input-details
.name.flex
div(data-i18n="CLASS_ABILITY")
label.details-button
input(type="checkbox", name="attr_show_focus_details", value="1", checked)
span(data-i18n="EXPAND")
.display
.details
span(name="attr_class_ability")
.edit
textarea.details(name="attr_class_ability")
fieldset.repeating_foci
button.display.invisible-button(type="roll", name="roll_Focus", value="&{template:swn-default} {{charname=@{name}}} {{info=^{FOCUS}}} {{title=@{focus_name}}} {{desc=@{focus_description}}}")
.display
.name.flex
span(name="attr_focus_name")
span.level #[span(data-i18n="LEVEL")]-#[span(name="attr_focus_level")]
.details
span(name="attr_focus_description")
.edit.flex-wrap
input.name(type="text", name="attr_focus_name", data-i18n-placeholder="FOCUS")
input.level(type="number", min="0", name="attr_focus_level", data-i18n-placeholder="LEVEL")
textarea.details(name="attr_focus_description", data-i18n-placeholder="DESCRIPTION")
+foci
.section.super
+sectionheader("show_psionics", false)
@@ -227,7 +245,7 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
span(data-i18n="EXPAND")
input(type="hidden", name="attr_show_technique_details", value="1").input-details
fieldset.repeating_techniques
button.display.invisible-button(name="roll_Technique", type="roll", value="&{template:swn-default} {{charname=@{name}}} {{info=^{PSYCHIC_TECHNIQUE}}} {{title=@{technique_name}}} {{desc=@{technique_description}}}")
button.display.invisible-button(name="roll_Technique", type="roll", value!="&{template:swn-default} {{charname=@{name}}} {{info=^{PSYCHIC_TECHNIQUE}}} {{title=@{technique_name}}} {{desc=@{technique_description}}}")
.display
.name #[span(name="attr_technique_name")]
.details #[span(name="attr_technique_description")]
@@ -254,7 +272,7 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
.prepared(data-i18n="PREPARED")
.damage(data-i18n="DAMAGE")
fieldset.repeating_spells
button.display.invisible-button(type="roll", name="roll_Spell", value="&{template:swn-default} {{charname=@{name}}} {{title=@{spell_name}}} {{info=^{SPELL}}} {{desc=@{spell_description}}} {{damage=[[@{spell_damage}]]}}")
button.display.invisible-button(type="roll", name="roll_Spell", value!="&{template:swn-default} {{charname=@{name}}} {{title=@{spell_name}}} {{info=^{SPELL}}} {{desc=@{spell_description}}} {{damage=[[@{spell_damage}]]}}")
.display
.name.flex-center
span(name="attr_spell_name")
@@ -267,8 +285,8 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
input.damage(type="text", name="attr_spell_damage", value="0")
textarea.details(name="attr_spell_description")
//- Skills
.column
//- Skills
.section
+sectionheader("show_skills", "SKILLS")
.skills
@@ -300,31 +318,7 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
//- Foci
.section.foci-right
+sectionheader("show_foci", "FOCI")
.foci.simple-repsection
input(type="hidden", name="attr_show_focus_details", value="1").input-details
.name.flex
div(data-i18n="CLASS_ABILITY")
label.details-button
input(type="checkbox", name="attr_show_focus_details", value="1", checked)
span(data-i18n="EXPAND")
.display
.details
span(name="attr_class_ability")
.edit
textarea.details(name="attr_class_ability")
fieldset.repeating_foci
button.display.invisible-button(type="roll", name="roll_Focus", value="&{template:swn-default} {{charname=@{name}}} {{title=@{focus_name}}} {{info=^{FOCUS}}} {{desc=@{focus_description}}}")
.display
.name.flex
span(name="attr_focus_name")
span.level #[span(data-i18n="LEVEL")]-#[span(name="attr_focus_level")]
.details
span(name="attr_focus_description")
.edit.flex-wrap
input.name(type="text", name="attr_focus_name", data-i18n-placeholder="FOCUS")
input.level(type="number", min="0", name="attr_focus_level", data-i18n-placeholder="LEVEL")
textarea.details(name="attr_focus_description", data-i18n-placeholder="DESCRIPTION")
+foci
//- Gear
.section.col-1-3
@@ -340,14 +334,22 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
+text-input("credits", "CREDITS")(value="0", min="0", type="number").center
+text-input("credits_owed", "CREDITS_OWED")(value="0", min="0", type="number").center
.grey-box
fieldset.repeating_weapons
.flex
input.name(type="text", name="attr_weapon_name", readonly)
input.encumbrance(type="number", min="0", value="0", name="attr_weapon_encumbrance", data-i18n-title="ENCUMBRANCE")
select.status(name="attr_weapon_status")
option(value="", data-i18n="OTHER", selected)
option(value="READIED", data-i18n="READIED")
option(value="STOWED", data-i18n="STOWED")
fieldset.repeating_gear
.flex
input.name(type="text", name="attr_gear_name", data-i18n-placeholder="ITEM")
input.encumbrance(type="number", min="0", value="0", name="attr_gear_encumbrance", data-i18n-title="ENCUMBRANCE")
select.status(name="attr_gear_status")
option(value="", data-i18n="OTHER", selected)
option(value="readied", data-i18n="READIED")
option(value="stowed", data-i18n="STOWED")
option(value="READIED", data-i18n="READIED")
option(value="STOWED", data-i18n="STOWED")
.grey-box.other
h3(data-i18n="OTHER_EQUIPMENT")
textarea(name="attr_gear_other").other-gear
@@ -372,7 +374,7 @@ input(type="hidden", name="attr_setting_skill_query", value="hover").skills-quer
span(data-i18n="EXPAND")
input(type="hidden", name="attr_show_cyberware_details", value="1").input-details
fieldset.repeating_cyberware
button.display.invisible-button(name="roll_Cyberware", type="roll", value="&{template:swn-default} {{charname=@{name}}} {{title=@{cyberware_name}}} {{info=^{CYBERWARE}; @{cyberware_strain} ^{STRAIN}}} {{desc=@{cyberware_description}}}")
button.display.invisible-button(name="roll_Cyberware", type="roll", value!="&{template:swn-default} {{charname=@{name}}} {{title=@{cyberware_name}}} {{info=^{CYBERWARE}; @{cyberware_strain} ^{STRAIN}}} {{desc=@{cyberware_description}}}")
.display
.name.flex-between
span(name="attr_cyberware_name")
@@ -36,6 +36,14 @@ input(type="hidden", name="attr_show_settings" value="0").hider
span(data-i18n="ADD_EXTRA_SKILLS").colon-after
input(type="checkbox", name="attr_homebrew_extra_skills", value="1")
span(data-i18n="ADD_EXTRA_SKILLS_DESC")
h2 API
p
label
span.colon
span(data-i18n="USE_AMMO_AUTOMATICALLY")
span.api API
input(type="checkbox", name="attr_setting_use_ammo", value="1")
span(data-i18n="REQUIRES_CHATSETATTR")
div
h2(data-i18n="CHARACTER_OPTIONS")
p
@@ -82,6 +90,11 @@ input(type="hidden", name="attr_show_settings" value="0").hider
option(value="left", data-i18n="LEFT_COLUMN")
option(value="right", data-i18n="RIGHT_COLUMN")
span(data-i18n="FOCI_LOCATION_DESC")
p
label
span(data-i18n="QUERY_FOR_MODIFIERS").colon-after
input(type="checkbox", name="attr_setting_modifier_query", value="1", checked)
span(data-i18n="QUERY_FOR_MODIFIERS_DESC")
p
label
span(data-i18n="FINE_NPC_WHISPERING").colon-after
@@ -74,7 +74,7 @@ mixin makeSave(name)
button name, and for translation keys.
.blue-button
input(type="hidden", name=`attr_save_${name}`, value="15")
button(name=`roll_save_${name}`, type="roll", value=`&{template:swn-save} {{charname=@{name}}} {{title=^{${name.toUpperCase()}_SAVE}}} {{dice=[[1d20]]}} {{save=[[@{save_${name}}]]}}`)
button(name=`roll_save_${name}`, type="roll", value!=`&{template:swn-save} {{charname=@{name}}} {{title=^{${name.toUpperCase()}_SAVE}}} {{dice=[[1d20]]}} {{save=[[@{save_${name}}]]}}`)
| v#[span(name=`attr_save_${name}`)]
div(data-i18n=name.toUpperCase())
@@ -92,7 +92,7 @@ mixin makeSkill(skillName, custom, label)
else
- skillPrefix = skillName ? `skill_${skillName}` : "skill";
.skill(data-i18n-list-item=skillName)
button(type="roll", name=`roll_${skillPrefix}`, value=`&{template:swn-skill} {{title=${custom ? `@{${skillPrefix}_name}` : `^{${skillName.toUpperCase()}}`}}} {{charname=@{name}}} {{mod=[[@{modifier_query}]]}} {{dice=[[@{${skillPrefix}_specialist} + @{${skillPrefix}}[Skill] + @{modifier_query} @{${skillPrefix}_query}`).invisible-button.display
button(type="roll", name=`roll_${skillPrefix}`, value!=`&{template:swn-skill} {{title=${custom ? `@{${skillPrefix}_name}` : `^{${skillName.toUpperCase()}}`}}} {{charname=@{name}}} {{mod=[[0 @{modifier_query}]]}} {{dice=[[@{${skillPrefix}_specialist} + @{${skillPrefix}}[Skill] @{modifier_query} @{${skillPrefix}_query}`).invisible-button.display
.display.flex-center
input(type="hidden", name=`attr_${skillPrefix}_specialist`, value="2d6").dice
if (custom)
+15 -15
View File
@@ -4,11 +4,11 @@ input(type="hidden", name="attr_setting_individual_hidden", value="1").input-ind
.menus.col-3.core-box.flex-between
h3(data-i18n="QUICK_MENUS")
input(type="hidden", name="attr_macro_statblock", value="")
button(type="roll", name="roll_Statblock_macro", data-i18n="STATBLOCK", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{npc_name}}} {{title=[**^{HD}** @{npc_hd}](~npc_hp), ^{AC} @{AC}}} {{buttons=@{macro_statblock}}}`).unstyled-button
button(type="roll", name="roll_Statblock_macro", data-i18n="STATBLOCK", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{npc_name}}} {{title=[**^{HD}** @{npc_hd}](~npc_hp), ^{AC} @{AC}}} {{buttons=@{macro_statblock}}}`).unstyled-button
input(type="hidden", name="attr_macro_npc_attacks", value="")
button(type="roll", name="roll_NPC_Attack_macro", data-i18n="ATTACKS", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{npc_name}}} {{title=^{ATTACKS}}} {{buttons=@{macro_npc_attacks}}}`).unstyled-button
button(type="roll", name="roll_NPC_Attack_macro", data-i18n="ATTACKS", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{npc_name}}} {{title=^{ATTACKS}}} {{buttons=@{macro_npc_attacks}}}`).unstyled-button
input(type="hidden", name="attr_macro_npc_abilities", value="")
button(type="roll", name="roll_NPC_Abilities_macro", data-i18n="ABILITIES", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{npc_name}}} {{title=^{ABILITIES}}} {{buttons=@{macro_npc_abilities}}}`).unstyled-button
button(type="roll", name="roll_NPC_Abilities_macro", data-i18n="ABILITIES", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{npc_name}}} {{title=^{ABILITIES}}} {{buttons=@{macro_npc_abilities}}}`).unstyled-button
//- Name etc
.core-box-text.info
@@ -83,27 +83,27 @@ input(type="hidden", name="attr_setting_individual_hidden", value="1").input-ind
input(type="checkbox", name="attr_npc_rolls_hidden" value="/w GM")
.flex-between
.blue-button
button(type="roll", name="roll_NPC_HP", value="@{npc_hp_hidden} &{template:swn-default} {{charname=@{npc_name}}} {{title=^{HIT_POINTS}}} {{ =[[@{npc_hd}d8]]}}")
button(type="roll", name="roll_NPC_HP", value!="@{npc_hp_hidden} &{template:swn-default} {{charname=@{npc_name}}} {{title=^{HIT_POINTS}}} {{ =[[@{npc_hd}d8]]}}")
span(name="attr_npc_hd")
div(data-i18n="ROLL_HP")
label.individual-hide
input(type="checkbox", name="attr_npc_hp_hidden", value="/w GM")
span(data-i18n="HIDE")
.blue-button
button(type="roll", name="roll_NPC_Initiative", value="@{npc_initiative_hidden} &{template:swn-default} {{charname=@{npc_name}}} {{title=^{INITIATIVE}}} {{ =[[1d8 &{tracker}]]}}") d8
button(type="roll", name="roll_NPC_Initiative", value!="@{npc_initiative_hidden} &{template:swn-default} {{charname=@{npc_name}}} {{title=^{INITIATIVE}}} {{ =[[1d8 &{tracker}]]}}") d8
div(data-i18n="INITIATIVE")
label.individual-hide
input(type="checkbox", name="attr_npc_initiative_hidden", value="/w GM")
span(data-i18n="HIDE")
.blue-button
button(type="roll", name="roll_NPC_Save", value="@{npc_save_hidden} &{template:swn-save} {{title=^{SAVING_THROW}}} {{charname=@{npc_name}}} {{save=[[@{npc_saves}]]}} {{dice=[[1d20]]}}")
button(type="roll", name="roll_NPC_Save", value!="@{npc_save_hidden} &{template:swn-save} {{title=^{SAVING_THROW}}} {{charname=@{npc_name}}} {{save=[[@{npc_saves}]]}} {{dice=[[1d20]]}}")
| v#[span(name="attr_npc_saves")]
div(data-i18n="SAVE")
label.individual-hide
input(type="checkbox", name="attr_npc_save_hidden", value="/w GM")
span(data-i18n="HIDE")
.blue-button
button(type="roll", name="roll_NPC_Skill", value="@{npc_skill_hidden} &{template:swn-skill} {{charname=@{npc_name}}} {{title=@{skill_name_query}}} {{dice=[[2d6 + @{proficient_query}]]}}")
button(type="roll", name="roll_NPC_Skill", value!="@{npc_skill_hidden} &{template:swn-skill} {{charname=@{npc_name}}} {{title=@{skill_name_query}}} {{dice=[[2d6 + @{proficient_query} @{modifier_query}]]}}")
input(type="hidden", name="attr_npc_skills", value="0").add-plus
span(name="attr_npc_skills")
div(data-i18n="SKILL")
@@ -111,14 +111,14 @@ input(type="hidden", name="attr_setting_individual_hidden", value="1").input-ind
input(type="checkbox", name="attr_npc_skill_hidden", value="/w GM")
span(data-i18n="HIDE")
.blue-button
button(type="roll", name="roll_NPC_Morale", value="@{npc_morale_hidden} &{template:swn-save} {{charname=@{npc_name}}} {{title=^{MORALE}}} {{morale=[[@{npc_morale}]]}} {{dice=[[2d6]]}}")
button(type="roll", name="roll_NPC_Morale", value!="@{npc_morale_hidden} &{template:swn-save} {{charname=@{npc_name}}} {{title=^{MORALE}}} {{morale=[[@{npc_morale}]]}} {{dice=[[2d6 @{modifier_query}]]}}")
| v#[span(name="attr_npc_morale")]
div(data-i18n="MORALE")
label.individual-hide
input(type="checkbox", name="attr_npc_morale_hidden", value="/w GM")
span(data-i18n="HIDE")
.blue-button
button(type="roll", name="roll_NPC_Reaction", value="@{npc_reaction_hidden} &{template:swn-default} {{title=^{REACTION}}} {{charname=@{npc_name}}} {{reaction=[[2d6 + @{modifier_query}]]}}") 2d6
button(type="roll", name="roll_NPC_Reaction", value!="@{npc_reaction_hidden} &{template:swn-default} {{title=^{REACTION}}} {{charname=@{npc_name}}} {{reaction=[[2d6 @{modifier_query}]]}}") 2d6
div(data-i18n="REACTION")
label.individual-hide
input(type="checkbox", name="attr_npc_reaction_hidden", value="/w GM")
@@ -137,7 +137,7 @@ input(type="hidden", name="attr_setting_individual_hidden", value="1").input-ind
input(type="checkbox", name="attr_npc_attacks_hidden" value="/w GM")
fieldset.repeating_npc-attacks
input(type="hidden", name="attr_attack_extra_macro", value="")
button(type="roll", name="roll_Attack", value="@{npc_attacks_hidden} &{template:swn-attack} {{charname=@{npc_name}}} {{title=@{attack_name}}} {{attack=[[1d20 + @{attack_ab} + @{attack_burst} + @{modifier_query}]]}} {{damage=[[@{attack_damage} + @{attack_burst}]]}} {{burst=[[@{attack_burst}]]}} @{attack_extra_macro}").invisible-button.display
button(type="roll", name="roll_Attack", value!="@{npc_attacks_hidden} &{template:swn-attack} {{charname=@{npc_name}}} {{title=@{attack_name}}} {{attack=[[1d20 + @{attack_ab} @{attack_burst} @{modifier_query}]]}} {{damage=[[@{attack_damage} @{attack_burst}]]}} {{burst=[[0@{attack_burst}]]}} @{attack_extra_macro}").invisible-button.display
.display.flex-between.grey-box-bordered
span.name
span(name="attr_attack_name").space-after
@@ -150,13 +150,13 @@ input(type="hidden", name="attr_setting_individual_hidden", value="1").input-ind
span(name="attr_attack_damage")
.edit.flex.grey-box-bordered
+text-input("attack_name", "NAME").name
+text-input("attack_ab", "ATTACK_BONUS_SHORT")(type="number").ab.center
+text-input("attack_ab", "ATTACK_BONUS_SHORT")(type="number", value="0").ab.center
+text-input("attack_damage", "DAMAGE")(value="0").damage.center
+fake-text-input("BURST").burst.center
select(name="attr_attack_burst")
option(value="0", data-i18n="NO")
option(value="@{burst_query}", data-i18n="ASK", selected)
option(value="2", data-i18n="ALWAYS")
option(value="", data-i18n="NO", selected)
option(value="@{burst_query}", data-i18n="ASK")
option(value="+ 2[Burst]", data-i18n="ALWAYS")
+text-input("attack_number", "NUM_ATTACKS")(type="number", value="1").attacks.center
//- Abilities
@@ -168,7 +168,7 @@ input(type="hidden", name="attr_setting_individual_hidden", value="1").input-ind
span(data-i18n="HIDDEN")
input(type="checkbox", name="attr_npc_abilities_hidden" value="/w GM")
fieldset.repeating_npc-abilities
button.display.invisible-button(type="roll", name="roll_Ability", value="@{npc_abilities_hidden} &{template:swn-default} {{charname=@{npc_name}}} {{title=@{ability_name}}} {{desc=@{ability_description}}}")
button.display.invisible-button(type="roll", name="roll_Ability", value!="@{npc_abilities_hidden} &{template:swn-default} {{charname=@{npc_name}}} {{title=@{ability_name}}} {{desc=@{ability_description}}}")
.display.grey-box-bordered
span(name="attr_ability_name").name.space-after
span(name="attr_ability_description").description
@@ -59,9 +59,9 @@ rolltemplate.sheet-rolltemplate-swn-attack
.roll {{attack4}}
.rollname.damage(data-i18n="DAMAGE")
.roll {{damage4}}
| {{/attack4}}{{#rollGreater() shock_base 0}}
.shock {{shock}} #[span(data-i18n="SHOCK_DAMAGE_AGAINST_AC_LEQ")] {{shock_ac}}!
| {{/rollGreater() shock_base 0}}
| {{/attack4}} {{#shock}}
.shock {{shock}}
| {{/shock}}
.info
| {{#range}}
span #[span(data-i18n="RANGE")] {{range}}
@@ -1,7 +1,7 @@
.menus.col-4.core-box.flex-between
h3(data-i18n="QUICK_MENUS")
input(type="hidden", name="attr_macro_ship_weapons", value="")
button(type="roll", name="roll_ship_weapon_macro", data-i18n="WEAPONS", value=`/w "@{character_name}" &{template:swn-default} {{charname=@{ship_name}}} {{title=^{WEAPONS}}} {{buttons=@{macro_ship_weapons}}}`).unstyled-button
button(type="roll", name="roll_ship_weapon_macro", data-i18n="WEAPONS", value!=`/w "@{character_name}" &{template:swn-default} {{charname=@{ship_name}}} {{title=^{WEAPONS}}} {{buttons=@{macro_ship_weapons}}}`).unstyled-button
//- Ship header
.info.core-box-text.flex.col-1-3
@@ -34,7 +34,8 @@
+sectionheader("show_ship_weapons", "WEAPONS")
.ship-weapons
fieldset.repeating_ship-weapons
button(type="roll", name="roll_Attack", value="&{template:swn-attack} {{charname=@{ship_name}}} {{title=@{weapon_name} @{weapon_qualities}}} {{attack=[[1d20 + @{weapon_attack_bonus}[Attack Bonus] + @{modifier_query}]]}} {{damage=[[@{weapon_damage}]]}}").display.invisible-button
input(type="hidden", name="attr_weapon_api", value="")
button(type="roll", name="roll_Attack", value!="&{template:swn-attack} {{charname=@{ship_name}}} {{title=@{weapon_name} @{weapon_qualities}}} {{attack=[[1d20 + @{weapon_attack_bonus}[Attack Bonus] @{modifier_query}]]}} {{damage=[[@{weapon_damage}]]}} @{weapon_use_ammo} @{weapon_api}").display.invisible-button
.display.grey-box-bordered
input(type="hidden", name="attr_weapon_broken", value="0").hider
span.broken.space-after #[span(data-i18n="BROKEN")]:
@@ -54,7 +55,7 @@
| , #[span(data-i18n="HARDPOINTS")] 
span(name="attr_weapon_hardpoints")
| )
input(type="hidden", name="attr_weapon_ammo_max", value="").hide-empty
input(type="hidden", name="attr_weapon_use_ammo", value="0").hider
span
| . #[span(data-i18n="AMMO")]: 
input(type="number", name="attr_weapon_ammo").inline-input
@@ -70,7 +71,9 @@
+text-input("weapon_attack_bonus", "ATTACK_BONUS_SHORT")(type="number", value="0").center.number
+text-input("weapon_damage", "DAMAGE")(value="0").center.damage
+text-input("weapon_qualities", "QUALITIES").qualities
+text-input-duo("weapon_ammo", "weapon_ammo_max", "AMMO", {min: "0"})(min="0")
+text-input-duo("weapon_ammo", "weapon_ammo_max", "", {min: "0"})(min="0")
input(type="checkbox", name="attr_weapon_use_ammo", value="{{ammo=[[@{weapon_ammo} - 1]] / @{weapon_ammo_max}}}")
span(data-i18n="AMMO")
//- Fittings
.section.col-3-5.row-3-5
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -2,6 +2,7 @@
"+SKILL": "+skill",
"ABILITIES": "Abilities",
"ABILITY": "Ability",
"ABLATIVE_HULL_COMPARTMENTS": "Ablative Hull Compartments",
"AC": "AC",
"AC_DESC": "Determined by armor in Gear section",
"ADD_EXTRA_SKILLS": "Add extra skills",
@@ -9,33 +10,60 @@
"ADD_LUCK_SAVE": "Add a luck save",
"ADD_LUCK_SAVE_DESC": "Add a homebrew Luck Save for those times where only pure luck can pull the character through.",
"ADMINISTER": "Administer",
"ADVANCED_LAB": "Advanced lab",
"ADVANCED_LAB_DESC": "Skill bonus for analysis and research.",
"ADVANCED_NAV_COMPUTER": "Advanced nav computer",
"ADVANCED_NAV_COMPUTER_DESC": "Adds +2 for travelling familiar spike courses.",
"ALWAYS": "Always",
"AMMO": "Ammo",
"AMPHIBIOUS_OPERATION": "Amphibious operation",
"AMPHIBIOUS_OPERATION_DESC": "Can land and can operate under water.",
"AP": "AP",
"ARMOR": "Armor",
"ARMOR_CLASS": "Armor Class",
"ARMORY": "Armory",
"ARMORY_DESC": "Weapons and armor for the crew.",
"ARTIST": "Artist",
"ASK": "Ask",
"ASSISTED": "Assisted",
"ATHLETICS": "Athletics",
"ATMOSPHERIC_CONFIGURATION": "Atmospheric configuration",
"ATMOSPHERIC_CONFIGURATION_DESC": "Can land: Frigates and fighters only.",
"ATTACK": "Attack",
"ATTACK_BONUS": "Attack Bonus",
"ATTACK_BONUS_SHORT": "AB",
"ATTACKS": "Attacks",
"ATTRIBUTE": "Attribute",
"AUGMENTED_PLATING": "Augmented Plating",
"AUTO_TARGETING_SYSTEM": "Auto-targeting system",
"AUTO_TARGETING_SYSTEM_DESC": "Fires one weapon system per round without a gunner.",
"AUTOMATION_SUPPORT": "Automation Ssupport",
"AUTOMATION_SUPPORT_DESC": "Ship can use simple robots as crew.",
"BACKGROUND": "Background",
"BARBARIAN_HERO": "Barbarian Hero",
"BARBARIAN_TRIBAL": "Barbarian Tribal",
"BASE": "Base",
"BEAST": "Beast",
"BIOPSIONICS": "Biopsionics",
"BOARDING_COUNTERMEASURES": "Boarding Countermeasures",
"BOARDING_COUNTERMEASURES_DESC": "Makes enemy boarding more difficult.",
"BOARDING_TUBES": "Boarding tubes",
"BOARDING_TUBES_DESC": "Allows boarding of a hostile disabled ship.",
"BONUS": "Bonus",
"BROKEN": "Broken",
"BUREAUCRACY": "Bureaucracy",
"BURST": "Burst",
"BURST_ECM_GENERATOR": "Burst ECM Generator",
"BURST_ECM_GENERATOR_DESC": "Negates one successful hit.",
"BUSINESS": "Business",
"CARGO": "Cargo",
"CARGO_LIGHTER": "Cargo lighter",
"CARGO_LIGHTER_DESC": "Orbit-to-surface cargo shuttle.",
"CARGO_SPACE": "Cargo space",
"CARGO_SPACE_DESC": "Pressurized cargo space.",
"CHARACTER": "Character",
"CHARACTER_OPTIONS": "Character options",
"CHARGED_PARTICLE_CASTER": "Charged Particle Caster",
"CHARISMA": "Charisma",
"CHARISMA_DESC": "Commanding, charming, attracting attention, being taken seriously",
"CHARISMA_SHORT": "CHA",
@@ -44,6 +72,12 @@
"CIVILIAN_SECURITY_BOT": "Civilian Security Bot",
"CLASS": "Class",
"CLASS_ABILITY": "Class ability",
"CLOUD": "Cloud",
"CLUMSY": "Clumsy",
"COLD_SLEEP_PODS": "Cold sleep pods",
"COLD_SLEEP_PODS_DESC": "Keeps occupants in stasis.",
"COLONY_CORE": "Colony core",
"COLONY_CORE_DESC": "Ship can be deconstructed into a colony base.",
"COMBAT": "Combat",
"COMBAT_ENERGY": "Combat/Energy Weapons",
"COMBAT_GUNNERY": "Combat/Gunnery",
@@ -82,18 +116,33 @@
"DEXTERITY_DESC": "Speed, evasion, manual dexterity, reaction time, combat initiative",
"DEXTERITY_SHORT": "DEX",
"DOOM_DAMAGE": "Doom damage",
"DRILL_COURSE_REGULATOR": "Drill course regulator",
"DRILL_COURSE_REGULATOR_DESC": "Common drill routes become auto-successes.",
"DROP_POD": "Drop pod",
"DROP_POD_DESC": "Stealthed landing pod for troops.",
"EDIT_MODE_ONLY": "Edit mode only",
"EFFECT": "Effect",
"EFFORT_MODIFIER": "Effort modifier",
"ELITE_FIGHTER": "Elite Fighter",
"EMISSIONS_DAMPERS": "Emissions dampers",
"EMISSIONS_DAMPERS_DESC": "Adds +2 to skill checks to avoid detection.",
"ENCUMBRANCE": "Encumbrance",
"ENCUMBRANCE_SHORT": "Enc",
"EQUIPMENT": "Equipment",
"EVASION": "Evasion",
"EVASION_SAVE": "Evasion Save",
"EXERT": "Exert",
"EXODUS_BAY": "Exodus bay",
"EXODUS_BAY_DESC": "House vast number of cold sleep passengers.",
"EXOSUIT": "Exosuit",
"EXPAND": "Expand",
"EXTENDED_LIFE_SUPPORT": "Extended life support",
"EXTENDED_LIFE_SUPPORT_DESC": "Doubles maximum crew size.",
"EXTENDED_MEDBAY": "Extended medbay",
"EXTENDED_MEDBAY_DESC": "Can provide medical care to more patients.",
"EXTENDED_STORE": "Extended store",
"EXTENDED_STORE_DESC": "Maximum life support duration doubled.",
"EXTRA_HP_QUERY": "Extra hit points? Enter 2 for Warrior",
"FACTION": "Faction",
"FAILURE!": "Failure!",
"FINE_NPC_WHISPERING": "Fine-grained NPC whispers",
@@ -101,11 +150,20 @@
"FIRST_EDITION": "First Edition",
"FITTING": "Fitting",
"FIX": "Fix",
"FLAK": "Flak",
"FLAK_EMITTER_BATTERY": "Flak Emitter Battery",
"FOCI": "Foci",
"FOCI_LOCATION": "Foci location",
"FOCI_LOCATION_DESC": "Determines where the foci section on the character sheet is shown.",
"FOCUS": "Focus",
"FOXER_DRONES": "Foxer Drones",
"FOXER_DRONES_DESC": "+2 AC for one round when fired, Ammo 5.",
"FRACTAL_IMPACT_CHARGE": "Fractal Impact Charge",
"FRIENDLY": "Friendly",
"FUEL_BUNKERS": "Fuel bunkers",
"FUEL_BUNKERS_DESC": "Adds fuel for one more drill between fuelings.",
"FUEL_SCOOPS": "Fuel scoops",
"FUEL_SCOOPS_DESC": "Ship can scoop fuel from a gas giant or star.",
"GAMBLING": "Gambling",
"GANG_BOSS": "Gang Boss",
"GANG_MEMBER": "Gang Member",
@@ -116,7 +174,12 @@
"GENERIC_HUMAN": "Generic human",
"GLOBAL_STATS": "Global stats",
"GOALS": "Goals",
"GRAV_EDDY_DISPLACER": "Grav Eddy Displacer",
"GRAV_EDDY_DISPLACER_DESC": "1 in 6 chance of any given attack missing.",
"GRAVCANNON": "Gravcannon",
"GREATER_LONE_PREDATOR": "Greater Lone Predator",
"HARDENED_POLYCERAMIC_OVERLAY": "Hardened Polyceramic Overlay",
"HARDENED_POLYCERAMIC_OVERLAY_DESC": "AP quality of attacking weapons reduced by 5.",
"HARDPOINTS": "Hardpoints",
"HARDPOINTS_SHORT": "Hardpts",
"HD": "HD",
@@ -134,6 +197,8 @@
"HOMEWORLD": "Homeworld",
"HOSTILE": "Hostile",
"HULL_TYPE": "Hull Type",
"HYDROPONIC_PRODUCTION": "Hydroponic production",
"HYDROPONIC_PRODUCTION_DESC": "Ship produces life support resources.",
"INDUSTRIAL_WORK_BOT": "Industrial Work Bot",
"INITIATIVE": "Inititative",
"INNATE_AC": "Innate AC",
@@ -155,15 +220,25 @@
"LEGENDARY_FIGHTER": "Legendary Fighter",
"LESSER_LONE_PREDATOR": "Lesser Lone Predator",
"LEVEL": "Level",
"LIFEBOATS": "Lifeboats",
"LIFEBOATS_DESC": "Emergency escape craft for ship's crew.",
"LIGHTNING_CHARGE_MANTLE": "Lightning Charge Mantle",
"LUCK": "Luck",
"LUCK_SAVE": "Luck Save",
"LUXURY_CABINS": "Luxury cCabins",
"LUXURY_CABINS_DESC": "10% of max crew get luxurious quarters.",
"MAG_SPIKE_ARRAY": "Mag Spike Array",
"MAGIC": "Magic",
"MAINTENANCE COST": "Maintenance Cost",
"MARTIAL_HUMAN": "Martial Human",
"MASS": "Mass",
"MASS_CANNON": "Mass Cannon",
"MAX": "Max",
"MAXIMUM": "Maximum",
"MAXIMUM_EFFORT_DESC": "1 + WIS/CON mod + highest psychic skill + effort modifier",
"MAXIMUM_HIT_POINTS": "Maximum hit points",
"MAXIMUM_HP_1": "Maximum of",
"MAXIMUM_HP_2": "and",
"MECH": "Mech",
"MENTAL": "Mental",
"MENTAL_SAVE": "Mental Save",
@@ -171,10 +246,16 @@
"MILITARY_ELITE": "Military Elite",
"MILITARY_SOLDIER": "Military Soldier",
"MISCELLANEOUS": "Miscellaneous",
"MOBILE_EXTRACTOR": "Mobile extractor",
"MOBILE_EXTRACTOR_DESC": "Space mining and refinery fittings.",
"MOBILE_FACTORY": "Mobile factory",
"MOBILE_FACTORY_DESC": "Self-sustaining factory and repair facilities.",
"MODIFIER": "Modifier",
"MODIFIER_SHORT": "Mod",
"MONEY": "Money",
"MORALE": "Morale",
"MOVE": "Move",
"MULTIFOCAL_LASER": "Multifocal Laser",
"NAME": "Name",
"NAVIGATION": "Navigation",
"NEGATIVE": "Negative",
@@ -188,6 +269,7 @@
"NOTICE": "Notice",
"NPC": "NPC",
"NPC_DESC": "The NPC option sets new characters to default to the NPC sheet. Useful if the player characters have already been created and all new character sheets added to the game will likely represent non-player characters.",
"NUCLEAR_MISSILES": "Nuclear Missiles",
"NUM_ATTACKS": "# Attacks",
"NUMBER_OF_DICE": "Number of dice",
"OPERATING_COST": "Operating Cost",
@@ -203,16 +285,26 @@
"PHYSICAL_SAVE": "Physical Save",
"PILOT": "Pilot",
"PIRATE_KING": "Pirate King",
"PLANETARY_DEFENSE_ARRAY": "Planetary Defense Array",
"PLANETARY_DEFENSE_ARRAY_DESC": "Anti-impact and anti-nuke surface defenses.",
"PLASMA_BEAM": "Plasma Beam",
"POINT_DEFENSE_LASERS": "Point Defense Lasers",
"POINT_DEFENSE_LASERS_DESC": "+2 AC versus weapons that use ammo.",
"POLICE_OFFICER": "Police Officer",
"POLYSPECTRAL_MES_BEAM": "Polyspectral MES Beam",
"POSITIVE": "Positive",
"POWER": "Power",
"POWERED": "Powered",
"PRECOGNITION": "Precognition",
"PRECOGNITIVE_NAV_CHAMBER": "Precognitive Nav Chamber",
"PRECOGNITIVE_NAV_CHAMBER_DESC": "Allows a precog to assist in navigation.",
"PREPARED": "Prepared",
"PRIMITIVE": "Primitive",
"PROFESSION": "Profession",
"PROFICIENT": "Proficient",
"PROGRAM": "Program",
"PSIONIC_ANCHORPOINT": "Psionic anchorpoint",
"PSIONIC_ANCHORPOINT_DESC": "Focal point for allied psychics' powers.",
"PSIONICS": "Psionics",
"PSIONICS_AND_SPACE_MAGIC": "Psionics and Space Magic",
"PSYCHIC_SKILLS_TECHNIQUES": "Psychic Skills & Techniques",
@@ -221,14 +313,18 @@
"PUNCH": "Punch",
"QUALITIES": "Qualities",
"QUERY": "Query",
"QUERY_FOR_MODIFIERS": "Query for modifiers",
"QUERY_FOR_MODIFIERS_DESC": "Turn this off to stop roll buttons on the sheet from querying for roll modifiers.",
"QUICK_MENUS": "Quick Menus",
"QUICK_ROLLS": "Quick Rolls",
"RANGE": "Range",
"REACTION": "Reaction",
"READIED": "Readied",
"REAPER_BATTERY": "Reaper Battery",
"RELIGION": "Religion",
"REPAIR_BOT": "Repair Bot",
"REPORT_AN_ISSUE": "Report an issue",
"REQUIRES_CHATSETATTR": "Requires the ChatSetAttr API script.",
"RESOURCES": "Resources",
"RESULT": "Result",
"REVISED_EDITION": "Revised Edition",
@@ -237,6 +333,7 @@
"ROLL_FULL_ATTACK": "Roll full attack",
"ROLL_HP": "Roll HP",
"ROLLS": "Rolls",
"SANDTHROWER": "Sandthrower",
"SAVE": "Save",
"SAVES": "Saves",
"SAVING_THROW": "Saving Throw",
@@ -244,15 +341,26 @@
"SCENE": "Scene",
"SCIENCE": "Science",
"SECURITY": "Security",
"SENSOR_MASK": "Sensor mask",
"SENSOR_MASK_DESC": "At long distances, disguise ship as another.",
"SERIAL_KILLER": "Serial Killer",
"SHIP": "Ship",
"SHIP_BAY_FIGHTER": "Ship Bay/Fighter",
"SHIP_BAY_FIGHTER_DESC": "Carrier housing for a fighter.",
"SHIP_BAY_FRIGATE": "Ship Bay/Frigate",
"SHIP_BAY_FRIGATE_DESC": "Carrier housing for a frigate.",
"SHIP_TAB_LABEL": "Label for ship tab",
"SHIPS_LOCKER": "Ship's locker",
"SHIPS_LOCKER_DESC": "General equipment for the crew.",
"SHIPTENDER_MOUNT": "Shiptender mount",
"SHIPTENDER_MOUNT_DESC": "Allow another ship to hitch on a spike drive.",
"SHOCK": "Shock",
"SHOCK_AC": "Shock AC",
"SHOCK_DAMAGE": "Shock damage",
"SHOCK_DAMAGE_AGAINST_AC_LEQ": "shock damage against AC ≤",
"SHOOT": "Shoot",
"SHOW_HIDE": "show/hide",
"SINGULARITY_GUN": "Singularity Gun",
"SKILL": "Skill",
"SKILL_AB": "Skill AB",
"SKILL_ATTRIBUTE_CHOICE": "Skill attribute choice",
@@ -267,6 +375,9 @@
"SKILLS": "Skills",
"SMALL_PACK_HUNTER": "Small Pack Hunter",
"SMALL_VICIOUS_BEAST": "Small Vicious Beast",
"SMART_CLOUD": "Smart Cloud",
"SMUGGLERS_HOLD": "Smuggler's hold",
"SMUGGLERS_HOLD_DESC": "Small amount of well-hidden cargo space.",
"SNEAK": "Sneak",
"SOLDIER_BOT": "Soldier Bot",
"SPACE_MAGIC": "Space Magic",
@@ -275,6 +386,18 @@
"SPEED": "Speed",
"SPELL": "Spell",
"SPELLS": "Spells",
"SPIKE_DRIVE_2": "Drive-2 upgrade",
"SPIKE_DRIVE_2_DESC": "Upgrade a spike drive to drive-2 rating.",
"SPIKE_DRIVE_3": "Drive-3 upgrade",
"SPIKE_DRIVE_3_DESC": "Upgrade a spike drive to drive-3 rating.",
"SPIKE_DRIVE_4": " Drive-4 upgrade",
"SPIKE_DRIVE_4_DESC": "Upgrade a spike drive to drive-4 rating.",
"SPIKE_DRIVE_5": "Drive-5 upgrade",
"SPIKE_DRIVE_5_DESC": "Upgrade a spike drive to drive-5 rating.",
"SPIKE_DRIVE_6": "Drive-6 upgrade",
"SPIKE_DRIVE_6_DESC": "Upgrade a spike drive to drive-6 rating.",
"SPIKE_INVERSION_PROJECTOR": "Spike Inversion Projector",
"SPINAL_BEAM_CANNON": "Spinal Beam Cannon",
"STAB": "Stab",
"STAT_BLOCK": "Stat block",
"STATBLOCK": "Statblock",
@@ -291,8 +414,12 @@
"SUBSYSTEMS": "Subsystems",
"SUBSYSTEMS_DESC": "Determine which subsystems to show: Psionics, Space Magic, both, or neither.",
"SUCCESS!": "Success!",
"SURVEY_SENSOR_ARRAY": "Survey sensor array",
"SURVEY_SENSOR_ARRAY_DESC": "Improved planetary sensory array",
"SURVIVAL": "Survival",
"SURVIVE": "Survive",
"SYSTEM_DRIVE": "System drive",
"SYSTEM_DRIVE_DESC": "Replace spike drive with a small system drive.",
"SYSTEM_STRAIN": "System Strain",
"TACTICS": "Tactics",
"TALK": "Talk",
@@ -306,16 +433,25 @@
"TELEKINESIS": "Telekinesis",
"TELEPATHY": "Telepathy",
"TELEPORTATION": "Teleportation",
"TELEPORTATION_PADS": "Teleportation pads",
"TELEPORTATION_PADS_DESC": "Pretech teleportation to and from ship.",
"TERRIFYING_APEX_PREDATOR": "Terrifying Apex Predator",
"TORPEDO_LAUNCHER": "Torpedo Launcher",
"TRACTOR_BEAMS": "Tractor beams",
"TRACTOR_BEAMS_DESC": "Manipulate objects in space at a distance.",
"TRADE": "Trade",
"TYPE": "Type",
"UNSPENT_SKILL_POINTS": "Unspent skill points",
"USE_AMMO_AUTOMATICALLY": "Use ammo automatically",
"VEHICLE_AIR": "Vehicle/Air",
"VEHICLE_GRAV": "Vehicle/Grav",
"VEHICLE_LAND": "Vehicle/Land",
"VEHICLE_SPACE": "Vehicle/Space",
"VEHICLE_TRANSPORT_FITTINGS": "Vehicle transport fittings",
"VEHICLE_TRANSPORT_FITTINGS_DESC": "Halve tonnage space of carried vehicles.",
"VEHICLE_WATER": "Vehicle/Water",
"VETERAN_FIGHTER": "Veteran Fighter",
"VORTEX_TUNNEL_INDUCTOR": "Vortex Tunnel Inductor",
"VS": "vs",
"VS_AC_LEQ": "vs AC ≤",
"WARRIOR_TYRANT": "Warrior Tyrant",
@@ -324,6 +460,8 @@
"WISDOM_DESC": "Noticing things, making judgments, reading situations, intuition",
"WISDOM_SHORT": "WIS",
"WORK": "Work",
"WORKSHOP": "Workshop",
"WORKSHOP_DESC": "Automated tech workshops for maintenance.",
"XP": "XP",
"XP_NEXT_LEVEL": "XP / Next Level",
"XP_SCHEME": "XP scheme",