mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
3058 lines
170 KiB
HTML
3058 lines
170 KiB
HTML
<script type="text/worker">
|
||
on("change:level", () => {
|
||
getAttrs(['level'], (v) => {
|
||
var xpneeded = 10;
|
||
switch (v.level) {
|
||
case "0": xpneeded = 10; break;
|
||
case "1": xpneeded = 25; break;
|
||
case "2": xpneeded = 50; break;
|
||
case "3": xpneeded = 75; break;
|
||
case "4": xpneeded = 125; break;
|
||
case "5": xpneeded = 175; break;
|
||
case "6": xpneeded = 225; break;
|
||
case "7": xpneeded = 300; break;
|
||
case "8": xpneeded = 375; break;
|
||
default: xpneeded = 500;
|
||
}
|
||
setAttrs({ xpneeded: xpneeded });
|
||
});
|
||
});
|
||
|
||
on("change:pcbonus_setting", () => {
|
||
getAttrs(['pcbonus_setting'], (v) => {
|
||
if (v.pcbonus_setting === "1") {
|
||
setAttrs({ pcbonusmacro1: " + ?{Bonus|0} ", pcbonusmacro2: " + ?{Bonus} "});
|
||
} else {
|
||
setAttrs({ pcbonusmacro1: " ", pcbonusmacro2: " "});
|
||
}
|
||
});
|
||
});
|
||
|
||
on("change:npcbonus_setting", () => {
|
||
getAttrs(['npcbonus_setting'], (v) => {
|
||
if (v.npcbonus_setting === "1") {
|
||
setAttrs({ npcbonusmacro1: " + ?{Bonus|0} ", npcbonusmacro2: " + ?{Bonus} "});
|
||
} else {
|
||
setAttrs({ npcbonusmacro1: " ", npcbonusmacro2: " "});
|
||
}
|
||
});
|
||
});
|
||
|
||
on("change:shipbonus_setting", () => {
|
||
getAttrs(['shipbonus_setting'], (v) => {
|
||
if (v.shipbonus_setting === "1") {
|
||
setAttrs({ shipbonusmacro1: " + ?{Bonus|0} ", shipbonusmacro2: " + ?{Bonus} "});
|
||
} else {
|
||
setAttrs({ shipbonusmacro1: " ", shipbonusmacro2: " "});
|
||
}
|
||
});
|
||
});
|
||
|
||
on("change:npcwhisper_setting", () => {
|
||
getAttrs(['npcwhisper_setting'], (v) => {
|
||
if (v.npcwhisper_setting === "1") {
|
||
setAttrs({ whispergm: "/w gm "});
|
||
} else {
|
||
setAttrs({ whispergm: ""});
|
||
}
|
||
});
|
||
});
|
||
|
||
on("change:loadout", () => {
|
||
getAttrs(['loadoutequipment','loadout'], (v) => {
|
||
const loadoutSwitch = {
|
||
none:'Get an extra 5d10*10 starting credits when you do not choose a loadout.',
|
||
excavation:'Crowbar, Hand Welder, Laser Cutter, Body Cam, Bioscanner, Infrared Goggles, Lockpick Set, Vaccsuit (Oxygen Tank, Mag-Boots, Short-range Comms)',
|
||
exploration:'Vibechete, Rigging Gun, Flare Gun, First Aid Kit, Vaccsuit (Long-range Comms, Oxygen Tank), Survey Kit, Water Filter, Locator, Rebreather, Binoculars, Flashlight, Camping Gear, MREs x7',
|
||
extermination:'SMG, Frag Grenade x6, Standard Battle Dress (Heads-up Display, Body Cam, Short-range Comms), Stimpak x6, Electronic Tool Kit',
|
||
examination:'Scalpel, Tranq Pistol, Stun Baton, Hazard Suit, Medscanner, Automed x6, Pain Pills x6, Stimpak x6, Cybernetic Diagnostic Scanner'
|
||
},
|
||
newValues = {};
|
||
|
||
newValues.loadoutequipment = loadoutSwitch[v.loadout];
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:class", () => {
|
||
getAttrs(['class'], (v) => {
|
||
const sanity = {
|
||
teamster:30,
|
||
android:20,
|
||
scientist:40,
|
||
marine:25
|
||
},
|
||
fear = {
|
||
teamster:35,
|
||
android:85,
|
||
scientist:25,
|
||
marine:30
|
||
},
|
||
body = {
|
||
teamster:30,
|
||
android:40,
|
||
scientist:25,
|
||
marine:35
|
||
},
|
||
armor = {
|
||
teamster:35,
|
||
android:25,
|
||
scientist:30,
|
||
marine:40
|
||
},
|
||
strength = {
|
||
teamster:5,
|
||
android:0,
|
||
scientist:0,
|
||
marine:0
|
||
},
|
||
speed = {
|
||
teamster:5,
|
||
android:5,
|
||
scientist:0,
|
||
marine:0
|
||
},
|
||
intellect = {
|
||
teamster:0,
|
||
android:5,
|
||
scientist:10,
|
||
marine:0
|
||
},
|
||
combat = {
|
||
teamster:0,
|
||
android:0,
|
||
scientist:0,
|
||
marine:5
|
||
},
|
||
classpanic = {
|
||
teamster:"Once per session, a teamster may re-roll a roll on the Panic Effect table",
|
||
android:"Fear saves made in the presence of Androids have disadvantage",
|
||
scientist:"Whenever a Scientist fails a Sanity save, every friendly player nearby gains 1 stress",
|
||
marine:"Whenever a Marine Panics, every friendly player nearby must make a Fear save"
|
||
},
|
||
startingskills = {
|
||
teamster:"Zero-G. Mechanical Repair. Pick One: Heavy Machinery or Piloting. +4 pts.",
|
||
scientist:"Pick Two: Biology, Agriculture, Geology, Computers, Mathematics, Chemistry. +3 pts.",
|
||
android:"Computers, Mathematics, Linguistics. +2 pts.",
|
||
marine:"Military Training. +3 pts."
|
||
},
|
||
newValues = {};
|
||
|
||
newValues.classsanity = sanity[v.class];
|
||
newValues.classfear = fear[v.class];
|
||
newValues.classbody = body[v.class];
|
||
newValues.classarmor= armor[v.class];
|
||
newValues.classstrength= strength[v.class];
|
||
newValues.classspeed = speed[v.class];
|
||
newValues.classintellect = intellect[v.class];
|
||
newValues.classcombat = combat[v.class];
|
||
newValues.classpanic=classpanic[v.class];
|
||
newValues.startingskills=startingskills[v.class];
|
||
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:psychology", () => {
|
||
const newValues={};
|
||
getAttrs(['biology','psychology','linguistics'], (v) => {
|
||
if (v.psychology == 1)
|
||
{
|
||
if (v.biology == 0)
|
||
{
|
||
newValues.psychology=0;
|
||
}
|
||
}
|
||
if (v.psychology == 0 && v.linguistics == 0)
|
||
{
|
||
newValues.sophontology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:genetics", () => {
|
||
const newValues={};
|
||
getAttrs(['biology','genetics','pathology','botany'], (v) => {
|
||
if (v.genetics == 1)
|
||
{
|
||
if (v.biology == 0)
|
||
{
|
||
newValues.genetics=0;
|
||
}
|
||
}
|
||
if (v.genetics == 0 && v.pathology == 0 && v.botany == 0)
|
||
{
|
||
newValues.xenobiology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:pathology", () => {
|
||
const newValues={};
|
||
getAttrs(['firstaid','genetics','pathology','botany'], (v) => {
|
||
if (v.pathology == 1)
|
||
{
|
||
if (v.firstaid == 0)
|
||
{
|
||
newValues.pathology=0;
|
||
}
|
||
}
|
||
if (v.genetics == 0 && v.pathology == 0 && v.botany == 0)
|
||
{
|
||
newValues.xenobiology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:botany", () => {
|
||
const newValues={};
|
||
getAttrs(['hydroponics','genetics','pathology','botany'], (v) => {
|
||
if (v.botany == 1)
|
||
{
|
||
if (v.hydroponics == 0)
|
||
{
|
||
newValues.botany=0;
|
||
}
|
||
}
|
||
if (v.genetics == 0 && v.pathology == 0 && v.botany == 0)
|
||
{
|
||
newValues.xenobiology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:planetology", () => {
|
||
const newValues={};
|
||
getAttrs(['geology','planetology'], (v) => {
|
||
if (v.planetology == 1)
|
||
{
|
||
if (v.geology == 0)
|
||
{
|
||
newValues.planetology=0;
|
||
}
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:asteroidmining", () => {
|
||
const newValues={};
|
||
getAttrs(['geology','zerog','piloting','scavenging','asteroidmining'], (v) => {
|
||
if (v.asteroidmining == 1)
|
||
{
|
||
if (v.geology == 0 && v.zerog == 0 && v.heavymachinery == 0 && v.scavenging == 0)
|
||
{
|
||
newValues.asteroidmining=0;
|
||
}
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:juryrigging", () => {
|
||
const newValues={};
|
||
getAttrs(['juryrigging','scavenging','mechanicalrepair','cybernetics'], (v) => {
|
||
if (v.juryrigging == 1)
|
||
{
|
||
if (v.scavenging == 0 && v.mechanicalrepair == 0)
|
||
{
|
||
newValues.juryrigging=0;
|
||
}
|
||
}
|
||
if (v.juryrigging == 0 && v.engineering == 0)
|
||
{
|
||
newValues.cybernetics = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:engineering", () => {
|
||
const newValues={};
|
||
getAttrs(['engineering','heavymachinery','mechanicalrepair','computers','cybernetics','robotics','artificialintelligence','hacking','juryrigging'], (v) => {
|
||
if (v.engineering == 1)
|
||
{
|
||
if (v.heavymachinery == 0 && v.mechanicalrepair == 0 && v.computers == 0)
|
||
{
|
||
newValues.engineering=0;
|
||
}
|
||
}
|
||
if (v.engineering == 0)
|
||
{
|
||
newValues.robotics = 0;
|
||
}
|
||
if (v.engineering == 0 && v.juryrigging == 0)
|
||
{
|
||
newValues.cybernetics = 0;
|
||
}
|
||
if (v.engineering == 0 && v.hacking == 0)
|
||
{
|
||
newValues.artificialintelligence = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:hacking", () => {
|
||
const newValues={};
|
||
getAttrs(['hacking','computers','artificialintelligence'], (v) => {
|
||
if (v.hacking == 1)
|
||
{
|
||
if (v.computers == 0)
|
||
{
|
||
newValues.hacking=0;
|
||
}
|
||
}
|
||
if (v.hacking== 0 && v.engineering == 0)
|
||
{
|
||
newValues.artificialintelligence= 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:vehiclespecialization", () => {
|
||
const newValues={};
|
||
getAttrs(['vehiclespecialization','driving','mechanicalrepair','piloting','command','tactics'], (v) => {
|
||
if (v.vehiclespecialization == 1)
|
||
{
|
||
if (v.driving == 0 && v.mechanicalrepair == 0 && v.piloting== 0)
|
||
{
|
||
newValues.vehiclespecialization=0;
|
||
}
|
||
}
|
||
if (v.vehiclespecialization == 0 && v.tactics == 0)
|
||
{
|
||
newValues.command = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:astrogation", () => {
|
||
const newValues={};
|
||
getAttrs(['astrogation','piloting','hyperspace','phsyics','mysticism'], (v) => {
|
||
if (v.astrogation == 1)
|
||
{
|
||
if (v.piloting == 0)
|
||
{
|
||
newValues.astrogation=0;
|
||
}
|
||
}
|
||
if (v.astrogation == 0 && v.physics == 0 && v.mysticism == 0)
|
||
{
|
||
newValues.hyperspace = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:physics", () => {
|
||
const newValues={};
|
||
getAttrs(['astrogation','mathematics','hyperspace','phsyics','mysticism'], (v) => {
|
||
if (v.physics == 1)
|
||
{
|
||
if (v.mathematics == 0)
|
||
{
|
||
newValues.physics=0;
|
||
}
|
||
}
|
||
if (v.physics == 0 && v.astrogation == 0 && v.mysticism == 0)
|
||
{
|
||
newValues.hyperspace = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:mysticism", () => {
|
||
const newValues={};
|
||
getAttrs(['astrogation','art','archaeology','theology','xenoesotericism','hyperspace','phsyics','mysticism'], (v) => {
|
||
if (v.mysticism == 1)
|
||
{
|
||
if (v.art == 0 && v.archaeology == 0 && v.theology== 0)
|
||
{
|
||
newValues.mysticism=0;
|
||
}
|
||
}
|
||
if (v.mysticism == 0 && v.physics == 0 && v.astrogation == 0)
|
||
{
|
||
newValues.hyperspace = 0;
|
||
}
|
||
if (v.mysticism == 0)
|
||
{
|
||
newValues.xenoesotericism = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:tactics", () => {
|
||
const newValues={};
|
||
getAttrs(['tactics','militarytraining','command','vehiclespecialization'], (v) => {
|
||
if (v.tactics == 1)
|
||
{
|
||
if (v.militarytraining == 0)
|
||
{
|
||
newValues.tactics=0;
|
||
}
|
||
}
|
||
if (v.tactics == 0 && v.vehiclespecialization == 0)
|
||
{
|
||
newValues.command = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:gunnery", () => {
|
||
const newValues={};
|
||
getAttrs(['gunnery','militarytraining','firearms','closequarterscombat','explosives','weaponspecialization'], (v) => {
|
||
if (v.gunnery == 1)
|
||
{
|
||
if (v.militarytraining == 0)
|
||
{
|
||
newValues.gunnery=0;
|
||
}
|
||
}
|
||
if (v.gunnery == 0 && v.firearms == 0 && v.closequarterscombat == 0 && v.explosives == 0)
|
||
{
|
||
newValues.weaponspecialization = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
|
||
on("change:firearms", () => {
|
||
const newValues={};
|
||
getAttrs(['gunnery','militarytraining','rimwise','firearms','closequarterscombat','explosives','weaponspecialization'], (v) => {
|
||
if (v.firearms == 1)
|
||
{
|
||
if (v.militarytraining == 0 && v.rimwise == 0)
|
||
{
|
||
newValues.firearms=0;
|
||
}
|
||
}
|
||
if (v.gunnery == 0 && v.firearms == 0 && v.closequarterscombat == 0 && v.explosives == 0)
|
||
{
|
||
newValues.weaponspecialization = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:closequarterscombat", () => {
|
||
const newValues={};
|
||
getAttrs(['gunnery','militarytraining','rimwise','athletics','firearms','closequarterscombat','explosives','weaponspecialization'], (v) => {
|
||
if (v.closequarterscombat == 1)
|
||
{
|
||
if (v.militarytraining == 0 && v.rimwise == 0 && v.athletics == 0)
|
||
{
|
||
newValues.closequarterscombat=0;
|
||
}
|
||
}
|
||
if (v.gunnery == 0 && v.firearms == 0 && v.closequarterscombat == 0 && v.explosives == 0)
|
||
{
|
||
newValues.weaponspecialization = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:explosives", () => {
|
||
const newValues={};
|
||
getAttrs(['gunnery','militarytraining','chemistry','closequarterscombat','explosives','weaponspecialization'], (v) => {
|
||
if (v.explosives == 1)
|
||
{
|
||
if (v.militarytraining == 0 && v.chemistry == 0)
|
||
{
|
||
newValues.explosives=0;
|
||
}
|
||
}
|
||
if (v.gunnery == 0 && v.firearms == 0 && v.closequarterscombat == 0 && v.explosives == 0)
|
||
{
|
||
newValues.weaponspecialization = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:weaponspecialization", () => {
|
||
const newValues={};
|
||
getAttrs(['gunnery','firearms','closequarterscombat','explosives','weaponspecialization'], (v) => {
|
||
if (v.gunnery == 0 && v.firearms == 0 && v.closequarterscombat == 0 && v.explosives == 0)
|
||
{
|
||
newValues.weaponspecialization = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:sophontology", () => {
|
||
const newValues={};
|
||
getAttrs(['linguistics','psychology'], (v) => {
|
||
if (v.linguistics == 0 && v.psychology == 0)
|
||
{
|
||
newValues.sophontology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:xenobiology", () => {
|
||
const newValues={};
|
||
getAttrs(['genetics','pathology','botany'], (v) => {
|
||
if (v.genetics == 0 && v.pahtology == 0 && v.botany==0)
|
||
{
|
||
newValues.xenobiology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:cybernetics", () => {
|
||
const newValues={};
|
||
getAttrs(['juryrigging','engineering'], (v) => {
|
||
if (v.juryrigging == 0 && v.engineering == 0)
|
||
{
|
||
newValues.cybernetics = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:robotics", () => {
|
||
const newValues={};
|
||
getAttrs(['engineering'], (v) => {
|
||
if (v.engineering == 0)
|
||
{
|
||
newValues.robotics = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:artificialintelligence", () => {
|
||
const newValues={};
|
||
getAttrs(['hacking','engineering'], (v) => {
|
||
if (v.hacking== 0 && v.engineering == 0)
|
||
{
|
||
newValues.artificialintelligence= 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:command", () => {
|
||
const newValues={};
|
||
getAttrs(['vehiclespecialization','tactics'], (v) => {
|
||
if (v.vehiclespecialization == 0 && v.tactics == 0)
|
||
{
|
||
newValues.command= 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:hyperspace", () => {
|
||
const newValues={};
|
||
getAttrs(['astrogation','physics','mysticism'], (v) => {
|
||
if (v.astrogation== 0 && v.physics == 0 && v.mysticism==0)
|
||
{
|
||
newValues.hyperspace= 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:xenoesotericism", () => {
|
||
const newValues={};
|
||
getAttrs(['mysticism'], (v) => {
|
||
if (v.mysticism==0)
|
||
{
|
||
newValues.xenoesotericism= 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:linguistics", () => {
|
||
const newValues={};
|
||
getAttrs(['linguistics'], (v) => {
|
||
if (v.linguistics==0)
|
||
{
|
||
newValues.sophontology= 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:biology", () => {
|
||
const newValues={};
|
||
getAttrs(['biology'], (v) => {
|
||
if (v.biology==0)
|
||
{
|
||
newValues.psychology = 0;
|
||
newValues.genetics = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:firstaid", () => {
|
||
const newValues={};
|
||
getAttrs(['firstaid'], (v) => {
|
||
if (v.firstaid==0)
|
||
{
|
||
newValues.pathology = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:hydroponics", () => {
|
||
const newValues={};
|
||
getAttrs(['hydroponics'], (v) => {
|
||
if (v.hydroponics==0)
|
||
{
|
||
newValues.botany = 0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:geology", () => {
|
||
const newValues={};
|
||
getAttrs(['zerog','geology','scavenging','heavymachinery'], (v) => {
|
||
if (v.geology==0)
|
||
{
|
||
newValues.planetology= 0;
|
||
}
|
||
if (v.geology == 0 && v.zerog == 0 && v.heavymachinery == 0 && v.scavenging == 0)
|
||
{
|
||
newValues.asteroidmining=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:zerog", () => {
|
||
const newValues={};
|
||
getAttrs(['zerog','geology','scavenging','heavymachinery'], (v) => {
|
||
if (v.geology == 0 && v.zerog == 0 && v.heavymachinery == 0 && v.scavenging == 0)
|
||
{
|
||
newValues.asteroidmining=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:scavenging", () => {
|
||
const newValues={};
|
||
getAttrs(['zerog','geology','scavenging','heavymachinery','mechanicalrepair'], (v) => {
|
||
if (v.geology == 0 && v.zerog == 0 && v.heavymachinery == 0 && v.scavenging == 0)
|
||
{
|
||
newValues.asteroidmining=0;
|
||
}
|
||
if (v.scavenging == 0 && v.mechanicalrepair == 0)
|
||
{
|
||
newValues.juryrigging=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:heavymachinery", () => {
|
||
const newValues={};
|
||
getAttrs(['zerog','geology','scavenging','heavymachinery','mechanicalrepair','computers'], (v) => {
|
||
if (v.heavymachinery == 0 && v.mechanicalrepair == 0 && v.computers == 0)
|
||
{
|
||
newValues.engineering=0;
|
||
}
|
||
if (v.geology == 0 && v.zerog == 0 && v.heavymachinery == 0 && v.scavenging == 0)
|
||
{
|
||
newValues.asteroidmining=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:computers", () => {
|
||
const newValues={};
|
||
getAttrs(['heavymachinery','mechanicalrepair','computers'], (v) => {
|
||
if (v.heavymachinery == 0 && v.mechanicalrepair == 0 && v.computers == 0)
|
||
{
|
||
newValues.engineering=0;
|
||
}
|
||
if (v.computers == 0)
|
||
{
|
||
newValues.hacking=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:mechanicalrepair", () => {
|
||
const newValues={};
|
||
getAttrs(['zerog','geology','scavenging','heavymachinery','mechanicalrepair','driving','piloting'], (v) => {
|
||
if (v.geology == 0 && v.zerog == 0 && v.heavymachinery == 0 && v.scavenging == 0)
|
||
{
|
||
newValues.asteroidmining=0;
|
||
}
|
||
if (v.driving == 0 && v.mechanicalrepair == 0 && v.piloting== 0)
|
||
{
|
||
newValues.vehiclespecialization=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:driving", () => {
|
||
const newValues={};
|
||
getAttrs(['mechanicalrepair','driving','piloting'], (v) => {
|
||
if (v.driving == 0 && v.mechanicalrepair == 0 && v.piloting== 0)
|
||
{
|
||
newValues.vehiclespecialization=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:piloting", () => {
|
||
const newValues={};
|
||
getAttrs(['mechanicalrepair','driving','piloting'], (v) => {
|
||
if (v.driving == 0 && v.mechanicalrepair == 0 && v.piloting== 0)
|
||
{
|
||
newValues.vehiclespecialization=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:mathematics", () => {
|
||
const newValues={};
|
||
getAttrs(['mathematics'], (v) => {
|
||
if (v.mathematics == 0)
|
||
{
|
||
newValues.physics=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:art", () => {
|
||
const newValues={};
|
||
getAttrs(['art','archaeology','theology'], (v) => {
|
||
if (v.art == 0 && v.archaeology == 0 && v.theology== 0)
|
||
{
|
||
newValues.mysticism=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:archaeology", () => {
|
||
const newValues={};
|
||
getAttrs(['art','archaeology','theology'], (v) => {
|
||
if (v.art == 0 && v.archaeology == 0 && v.theology== 0)
|
||
{
|
||
newValues.mysticism=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:theology", () => {
|
||
const newValues={};
|
||
getAttrs(['art','archaeology','theology'], (v) => {
|
||
if (v.art == 0 && v.archaeology == 0 && v.theology== 0)
|
||
{
|
||
newValues.mysticism=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:militarytraining", () => {
|
||
const newValues={};
|
||
getAttrs(['militarytraining','chemistry','rimwise','athletics'], (v) => {
|
||
if (v.militarytraining == 0 && v.rimwise == 0)
|
||
{
|
||
newValues.firearms=0;
|
||
}
|
||
if (v.militarytraining == 0)
|
||
{
|
||
newValues.tactics=0;
|
||
}
|
||
if (v.militarytraining == 0)
|
||
{
|
||
newValues.gunnery=0;
|
||
}
|
||
if (v.militarytraining == 0 && v.rimwise == 0 && v.athletics == 0)
|
||
{
|
||
newValues.closequarterscombat=0;
|
||
}
|
||
if (v.militarytraining == 0 && v.chemistry == 0)
|
||
{
|
||
newValues.explosives=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:rimwise", () => {
|
||
const newValues={};
|
||
getAttrs(['militarytraining','chemistry','rimwise','athletics'], (v) => {
|
||
if (v.militarytraining == 0 && v.rimwise == 0)
|
||
{
|
||
newValues.firearms=0;
|
||
}
|
||
if (v.militarytraining == 0 && v.rimwise == 0 && v.athletics == 0)
|
||
{
|
||
newValues.closequarterscombat=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:athletics", () => {
|
||
const newValues={};
|
||
getAttrs(['militarytraining','chemistry','rimwise','athletics'], (v) => {
|
||
if (v.militarytraining == 0 && v.rimwise == 0 && v.athletics == 0)
|
||
{
|
||
newValues.closequarterscombat=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
on("change:chemistry", () => {
|
||
const newValues={};
|
||
getAttrs(['militarytraining','chemistry','rimwise','athletics'], (v) => {
|
||
if (v.militarytraining == 0 && v.chemistry == 0)
|
||
{
|
||
newValues.explosives=0;
|
||
}
|
||
log(`newValues: ${JSON.stringify(newValues)}`);//I'd also recommend stringifying your object to log it so that it's easier to read in the console log.
|
||
setAttrs(newValues);
|
||
});
|
||
});
|
||
|
||
|
||
on("change:repeating_combat:weaponname", () => {
|
||
const weapons = {};
|
||
weapons["combat shotgun"] = {
|
||
repeating_combat_weapondamage: "2d10",
|
||
repeating_combat_weaponx10: "9",
|
||
repeating_combat_weaponshotsleft: 4,
|
||
repeating_combat_weaponshotsmax: 4,
|
||
repeating_combat_weaponrange: "10/20/30",
|
||
repeating_combat_weaponcrit: "Knockdown.",
|
||
repeating_combat_weaponspecial: "Knockback.\n1/2 DMG at medium range. 1/4 DMG at long range.\n Auto Rangefinder beeps when non-friendlies approach within 10m."
|
||
};
|
||
weapons["crowbar"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 0,
|
||
repeating_combat_weaponshotsmax: 0,
|
||
repeating_combat_weaponrange: "CQC Only",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "+5 (Mechanical repair)"
|
||
};
|
||
weapons["flame thrower"] = {
|
||
repeating_combat_weapondamage: "2d10",
|
||
repeating_combat_weaponx10: "9",
|
||
repeating_combat_weaponshotsleft: 8,
|
||
repeating_combat_weaponshotsmax: 8,
|
||
repeating_combat_weaponrange: "2/10/20",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "Body Save or get set on fire and take 1d10x10 DMG per turn."
|
||
};
|
||
weapons["flare gun"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 2,
|
||
repeating_combat_weaponshotsmax: 2,
|
||
repeating_combat_weaponrange: "5/10/20",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "High Intensity Flare: Visible from up to 25km away"
|
||
};
|
||
weapons["foam gun"] = {
|
||
repeating_combat_weapondamage: "0",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 10,
|
||
repeating_combat_weaponshotsmax: 10,
|
||
repeating_combat_weaponrange: "1/5/10",
|
||
repeating_combat_weaponcrit: "No Save",
|
||
repeating_combat_weaponspecial: "Fire retardant.\nBody Save to avoid becoming stuck. Foam covers 5sqm."
|
||
};
|
||
weapons["frag grenade"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: "9",
|
||
repeating_combat_weaponshotsleft: 0,
|
||
repeating_combat_weaponshotsmax: 0,
|
||
repeating_combat_weaponrange: "20/30/40",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "Deals DMG to all within 15m radius.\nCan deal 1MDMG to ships (or more if internal)."
|
||
};
|
||
weapons["hand welder"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 0,
|
||
repeating_combat_weaponshotsmax: 0,
|
||
repeating_combat_weaponrange: "CQC Only",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "Ultra heat emitter. -10 vs. Armor Save. Cuts through airlocks/heavy doors"
|
||
};
|
||
weapons["laser cutter"] = {
|
||
repeating_combat_weapondamage: "1d100",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 6,
|
||
repeating_combat_weaponshotsmax: 6,
|
||
repeating_combat_weaponrange: "25/250/700",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "Takes 1 round to recharge between shots."
|
||
};
|
||
weapons["nail gun"] = {
|
||
repeating_combat_weapondamage: "2d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 32,
|
||
repeating_combat_weaponshotsmax: 32,
|
||
repeating_combat_weaponrange: "1/5/10",
|
||
repeating_combat_weaponcrit: "Double DMG.",
|
||
repeating_combat_weaponspecial: "Heavy Duty Nails. -10 vs. Armor Save"
|
||
};
|
||
weapons["pulse rifle"] = {
|
||
repeating_combat_weapondamage: "5d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 3,
|
||
repeating_combat_weaponshotsmax: 3,
|
||
repeating_combat_weaponrange: "15/125/300",
|
||
repeating_combat_weaponcrit: "Double DMG",
|
||
repeating_combat_weaponspecial: "Fully automatic. Phosphorus Rounds.\n Smart-link: +5 combat if wearing hud.\nPump action grenade launcher w/ 6 crenades."
|
||
};
|
||
weapons["revolver"] = {
|
||
repeating_combat_weapondamage: "3d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 8,
|
||
repeating_combat_weaponshotsmax: 8,
|
||
repeating_combat_weaponrange: "2/30/125",
|
||
repeating_combat_weaponcrit: "Knockdown.",
|
||
repeating_combat_weaponspecial: "Kinetic Slugs: -5 vs. Armor Save"
|
||
};
|
||
weapons["rigging gun"] = {
|
||
repeating_combat_weapondamage: "2d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 1,
|
||
repeating_combat_weaponshotsmax: 1,
|
||
repeating_combat_weaponrange: "10/30/100",
|
||
repeating_combat_weaponcrit: "Impale. Triple DMG.",
|
||
repeating_combat_weaponspecial: "500m Micro Filament.\nRetractable Harpoon: Body save or become entangled. Does an extra 1d10*10 DMG when pulled out of target."
|
||
};
|
||
weapons["scalpel"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 0,
|
||
repeating_combat_weaponshotsmax: 0,
|
||
repeating_combat_weaponrange: "CQC Only",
|
||
repeating_combat_weaponcrit: "+1d10 DMG and bleeding",
|
||
repeating_combat_weaponspecial: "+10 Surgery"
|
||
};
|
||
weapons["smart rifle"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: "9",
|
||
repeating_combat_weaponshotsleft: 12,
|
||
repeating_combat_weaponshotsmax: 12,
|
||
repeating_combat_weaponrange: "25/200/500",
|
||
repeating_combat_weaponcrit: "Triple DMG.",
|
||
repeating_combat_weaponspecial: "Armor Piercing: -10 vs. Armor Save.\nSmart-link: +10 Combat if wearing HUD\nSpectroscope: Night/Thermal Vision."
|
||
};
|
||
weapons["smg"] = {
|
||
repeating_combat_weapondamage: "4d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 5,
|
||
repeating_combat_weaponshotsmax: 5,
|
||
repeating_combat_weaponrange: "10/75/150",
|
||
repeating_combat_weaponcrit: "",
|
||
repeating_combat_weaponspecial: "Fully Automatic"
|
||
};
|
||
weapons["stun baton"] = {
|
||
repeating_combat_weapondamage: "1d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 0,
|
||
repeating_combat_weaponshotsmax: 0,
|
||
repeating_combat_weaponrange: "CQC Only",
|
||
repeating_combat_weaponcrit: "No Save",
|
||
repeating_combat_weaponspecial: "Body save or stunned for 1 round."
|
||
};
|
||
weapons["tranq pistol"] = {
|
||
repeating_combat_weapondamage: "0",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 6,
|
||
repeating_combat_weaponshotsmax: 6,
|
||
repeating_combat_weaponrange: "2/10/20",
|
||
repeating_combat_weaponcrit: "No Save",
|
||
repeating_combat_weaponspecial: "Body Save[+] or fall unconscious for 1d10 rounds."
|
||
};
|
||
weapons["vibechete"] = {
|
||
repeating_combat_weapondamage: "2d10",
|
||
repeating_combat_weaponx10: 0,
|
||
repeating_combat_weaponshotsleft: 0,
|
||
repeating_combat_weaponshotsmax: 0,
|
||
repeating_combat_weaponrange: "CQC Only",
|
||
repeating_combat_weaponcrit: "Hacks of limb.",
|
||
repeating_combat_weaponspecial: "Can hack through limbs and dense forestry but not metal doors, airlocks, etc."
|
||
};
|
||
|
||
getAttrs(["repeating_combat_weaponname"], (values) => {
|
||
if (weapons[values.repeating_combat_weaponname.toLowerCase()]) {
|
||
setAttrs(weapons[values.repeating_combat_weaponname.toLowerCase()]);
|
||
}
|
||
});
|
||
});
|
||
|
||
on("change:repeating_equipment:equipname", () => {
|
||
const items = {};
|
||
items["advanced battle dress"] = {
|
||
repeating_equipment_equipdesc: "Heavy combat outfit worn by marines in battletorn offworld engagements. Confers a +15% bonus to the wearer’s Armor Save. Has a small exo-skeleton that allows the wearer to carry twice what they normally could.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["automed"] = {
|
||
repeating_equipment_equipdesc: "Nanotech pills that assist your body in repairing damage. They give +10% to Body Saves meant to repel disease or poison, as well as attempts to heal, and +10% to Fear Saves made to reduce Stress.",
|
||
repeating_equipment_equipqty: 6
|
||
};
|
||
items["binoculars"] = {
|
||
repeating_equipment_equipdesc: "20x magnification. Often come with thermal and night vision options.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["bioscanner"] = {
|
||
repeating_equipment_equipdesc: "Allows the user to scan the immediate area for signs of life. Generally can scan for 100m in all directions without being blocked by most known metals. Can tell the location of signs of life but not what that life is.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["bodycam"] = items["body cam"] = {
|
||
repeating_equipment_equipdesc: "A camera worn on your clothing that can stream video back to a control center so that your other crew members can view what you’re seeing.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["camping gear"] = {
|
||
repeating_equipment_equipdesc: "Tent, canteen, stove, backpack, sleeping bag.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["crowbar"] = {
|
||
repeating_equipment_equipdesc: "Confers Advantage on Strength Checks to open jammed airlocks or lift heavy objects. Can also be used as a weapon.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["cybernetic diagnostic scanner"] = {
|
||
repeating_equipment_equipdesc: "Allows the user to scan androids and other cybernetic organisms in order to diagnose any physical or mental issues they may be having. Often distrusted by androids. Can be used as a locating device for synthetic organisms.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["electronic tool set"] = {
|
||
repeating_equipment_equipdesc: "A full set of tools for detailed repair or construction work on electronics. Confers +10% to Checks seeking to repair electronics.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["emergency beacon"] = {
|
||
repeating_equipment_equipdesc: "A small device that sends up a flare and then emits a loud beep every few seconds. Additionally, sends out a call on all radio channels to ships or vehicles in the area. Can be configured to be silent or to only make calls on known channels.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["field recorder"] = {
|
||
repeating_equipment_equipdesc: "Used to research alien flora and fauna in the field. Can take vital signs, collect DNA samples and perform basic genetic and material analysis on foreign objects.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["first aid kit"] = {
|
||
repeating_equipment_equipdesc: "Adds +10% to rolls made to bandage wounds and stop bleeding.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["flashlight"] = {
|
||
repeating_equipment_equipdesc: "Handheld or shoulder mounted, illuminates 20m ahead of the user.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["frag grenade"] = {
|
||
repeating_equipment_equipdesc: "Often come loaded in pulse rifles, frag grenades deal 1d10 damage to everyone within a 20m radius when they explode. Can often do 1MDMG to a ship if placed in their engine room or bridge.",
|
||
repeating_equipment_equipqty: 6
|
||
};
|
||
items["hazard suit"] = {
|
||
repeating_equipment_equipdesc: "A standard suit for scientists to wear on alien planets. Not built for outerspace travel like the vaccsuit but does provide air filtration and a small supply of air as well as +5% Armor Save.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["heads up display"] = items["heads-up display"] = {
|
||
repeating_equipment_equipdesc: "Often worn by marines, the HUD allows the wearer to see through the body cams of others in their unit and tap into their guns’ smart-link capabilities.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["infrared goggles"] = {
|
||
repeating_equipment_equipdesc: "Allows the wearer to see heat signatures, sometimes several hours old.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["locator"] = {
|
||
repeating_equipment_equipdesc: "Allows crew members at a control center (or on the bridge of a ship) to track the location of the wearer.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["lockpick set"] = {
|
||
repeating_equipment_equipdesc: "A highly advanced set of tools meant for hacking basic airlock and electronic door systems. Confers +10% on Checks made to open these doors.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["long-range comms"] = items["long range comms"] = {
|
||
repeating_equipment_equipdesc: "For use in ship-to-surface comunication.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["long range comms"] = items["long-range comms"];
|
||
items["magboots"] = items["mag boots"] = items["mag-boots"] = {
|
||
repeating_equipment_equipdesc: "Grants a magnetic grip to the wearer, allowing them to easily to walk on the surface of a ship (in space, while docked or free-floating), or metal based asteroids.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["medscanner"] = {
|
||
repeating_equipment_equipdesc: "Allows the user to scan a living or dead body and to analyze it for disease or abnormalities without having to do a biopsy (or autopsy).",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["mre"] = {
|
||
repeating_equipment_equipdesc: "\"Meal, Ready-to-Eat.\" Self-contained, individual field rations in lightweight packaging. Each one has sufficient sustenance for a single person for one day (does not include water).",
|
||
repeating_equipment_equipqty: 7
|
||
};
|
||
items["oxygen tank"] = {
|
||
repeating_equipment_equipdesc: "When attached to a vaccsuit allows up to 12 hours of oxygen under normal circumstances. 4 hours under stressful circumstances. Explosive.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["pain pills"] = {
|
||
repeating_equipment_equipdesc: "When ingested immediately heals 1d10 points of damage and lowers Stress by 1. There is a danger of addiction and/or overdose if used frequently.",
|
||
repeating_equipment_equipqty: 6
|
||
};
|
||
items["radio jammer"] = {
|
||
repeating_equipment_equipdesc: "Renders incomprehensible the radio signals of all within 100km.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["rebreather"] = {
|
||
repeating_equipment_equipdesc: "Filters air and allows for underwater breathing for up to twenty minutes at a time without resurfacing.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["scalpel"] = {
|
||
repeating_equipment_equipdesc: "Grants +10% to anyone making Surgery Checks. Can be used as a weapon.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["short range comms"] = items["short-range comms"] = {
|
||
repeating_equipment_equipdesc: "Allows communication from ship-to-ship within a reasonable distance as well as surface-to-surface within 12 kilometers.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["standard battle dress"] = {
|
||
repeating_equipment_equipdesc: "This light plated armor is the standard dress for marines going into combat and confers a +10% bonus to the wearer’s Armor Save.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["standard crew attire"] = {
|
||
repeating_equipment_equipdesc: "Coveralls, leather jackets, sneakers, tank top or ragged tee. The standard outfit worn by crew members aboard spacecraft. Standard assumed attire for all classes.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["stimpack"] = {
|
||
repeating_equipment_equipdesc: "Grants an immediate 2d10 to Health and temporarily increases Strength and Combat by 2d10 each for 1d10 hours. There is a danger of addiction and/or overdose if used frequently.",
|
||
repeating_equipment_equipqty: 6
|
||
};
|
||
items["survey kit"] = {
|
||
repeating_equipment_equipdesc: "When used on the surface of a planet allows for quick mapping of a nearby few kilometers as well as data on air breathability, gravity and other important notable features of the surrounding landscape.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["vaccsuit"] = {
|
||
repeating_equipment_equipdesc: "Allows for movement in space without suffering penalties from radiation or lack of oxygen. Requires an oxygen tank to breathe. Often used with Mag-boots and a rigging gun. Confers +7% to Armor Saves.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["vibechete"] = {
|
||
repeating_equipment_equipdesc: "Machete that vibrates at ultra-high speeds in order to cut cleanly through dense foliage. Can be used as a weapon.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["water filter"] = {
|
||
repeating_equipment_equipdesc: "Can pump 50 liters of filtered water an hour from even the most brackish swamps.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["combat shotgun"] = {
|
||
repeating_equipment_equipdesc: "Deals massive damage at close range. Attached Audio Rangefinder: beeps when non-friendlies approach within 10m",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["flame thrower"] = {
|
||
repeating_equipment_equipdesc: "Victims hit by the fire make a Body save or get set on fire and take 1d10*10 DMG per turn.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["flare gun"] = {
|
||
repeating_equipment_equipdesc: "Fires high intensity flares, visible up to 25 KM away.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["foam gun"] = {
|
||
repeating_equipment_equipdesc: "Quick hardening foam forces a Body/Instinct Save to avoid being stuck. Covers 5sqm.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["hand welder"] = {
|
||
repeating_equipment_equipdesc: "Ultra heat emitter cuts through airlocks and havy doors. Imposes a -10 Armor Save penalty on targets hit.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["laser cutter"] = {
|
||
repeating_equipment_equipdesc: "Large cutting laser with a beam powerful enough to pierce a ship's hull. Takes 1 round to recharge between shots. Recharges in an hour from a power source or 6 hours in sunlight.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["nail gun"] = {
|
||
repeating_equipment_equipdesc: "In case you need to do some impromptu carpentry. Heavy duty nails impose a -10 Armor save penalty.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["pulse rifle"] = {
|
||
repeating_equipment_equipdesc: "Fires phosphorus rounds. Smart-link integrates with a hud for +5 combat. Attached pump-action grenade launcher holds up to 6 grenades.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["revolver"] = {
|
||
repeating_equipment_equipdesc: "Strong enough to knock down a foe on a good hit, the Kineti-slugs impose a -5 Armor Save penalty on targets.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["rigging gun"] = {
|
||
repeating_equipment_equipdesc: "Comes with 500m of hard to cut micro-filament rope. Retractable harpoon may skewer foes and cause them to become engangled.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["smart rifle"] = {
|
||
repeating_equipment_equipdesc: "Armor piercing rounds impose a -10 Armor Save penalty on targets. Smart-link integration for +10 Combat if wearing HUD. Attached Spectroscope grants night/thermal vision.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["smg"] = {
|
||
repeating_equipment_equipdesc: "Pew Pew Pew",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["stun baton"] = {
|
||
repeating_equipment_equipdesc: "Forces a body save from enemies to avoid being stunned for a round.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
items["tranq pistol"] = {
|
||
repeating_equipment_equipdesc: "Targets make a Body Save[+] or fall unconsious for 1d10 rounds.",
|
||
repeating_equipment_equipqty: 1
|
||
};
|
||
getAttrs(["repeating_equipment_equipname"], (values) => {
|
||
if (items[values.repeating_equipment_equipname.toLowerCase()]) {
|
||
setAttrs(items[values.repeating_equipment_equipname.toLowerCase()]);
|
||
}
|
||
});
|
||
});
|
||
|
||
on("change:shipjumpdrives", () => {
|
||
getAttrs(["shipjumpdrives"], (values) => {
|
||
var shipHull = parseInt(values.shipjumpdrives);
|
||
shipHull *= (shipHull + 1);
|
||
shipHull /= 2;
|
||
console.log(JSON.stringify(values));
|
||
console.log(JSON.stringify({ shipjdhull: "" + shipHull }));
|
||
setAttrs({ shipjdhull: shipHull })
|
||
});
|
||
});
|
||
</script>
|
||
|
||
|
||
<div class="sheet-main">
|
||
<input type="hidden" name="attr_sheetmode" class="sheet-mode-input" value="pc">
|
||
<input type="hidden" name="attr_xpneeded" value="10">
|
||
<input type="hidden" name="attr_open_settings" class="sheet-settings-input" value="0">
|
||
<input type="hidden" name="attr_pcbonusmacro1" value=" + ?{Bonus|0} ">
|
||
<input type="hidden" name="attr_pcbonusmacro2" value=" + ?{Bonus} ">
|
||
<input type="hidden" name="attr_npcbonusmacro1" value=" + ?{Bonus|0} ">
|
||
<input type="hidden" name="attr_npcbonusmacro2" value=" + ?{Bonus} ">
|
||
<input type="hidden" name="attr_shipbonusmacro1" value=" + ?{Bonus|0} ">
|
||
<input type="hidden" name="attr_shipbonusmacro2" value=" + ?{Bonus} ">
|
||
<input type="hidden" name="attr_whispergm" value="">
|
||
<div class="sheet-settings">
|
||
<h3>Sheet Settings</h3>
|
||
<div>
|
||
<label>Ask for bonus on PC attack rolls <input type="checkbox" name="attr_pcbonus_setting" value="1" checked></label>
|
||
When rolling attacks with the sheet in PC mode, ask for a bonus to the roll each time.
|
||
</div>
|
||
<div>
|
||
<label>Ask for bonus on Ship rolls <input type="checkbox" name="attr_shipbonus_setting" value="1" checked></label>
|
||
When rolling attacks with the sheet in Ship mode, ask for a bonus to the roll each time.
|
||
</div>
|
||
<div>
|
||
<label>Ask for bonus on NPC rolls <input type="checkbox" name="attr_npcbonus_setting" value="1" checked></label>
|
||
When rolling attacks with the sheet in NPC mode, ask for a bonus to the roll each time.
|
||
</div>
|
||
<div>
|
||
<label>Whisper NPC rolls<input type="checkbox" name="attr_npcwhisper_setting" value="1"></label>
|
||
When rolling for NPCs, whisper results to the GM instead of broadcasting directly to everyone.
|
||
</div>
|
||
<div>
|
||
<label>Panic Table
|
||
<select name="attr_panicchoice" value="&{template:panicandroid}">
|
||
<option value="&{template:panictable}" selected="selected">Normal</option>
|
||
<option value="&{template:panicandroid}">Android</option>
|
||
</select>
|
||
</label>
|
||
Choice of panic table to use when rolling panic effect.
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-mode-ribbon">
|
||
<div style="margin-right: auto"></div>
|
||
<div>
|
||
<label>
|
||
<input type="checkbox" name="attr_open_settings" value="1">
|
||
<span class="sheet-settings-gear">y</span>
|
||
</label>
|
||
</div>
|
||
<label class="sheet-chooser ">
|
||
<input type="radio" class="sheet-type-select" value="pc" name="attr_sheetmode" checked>
|
||
<span data-i18n="pc" class="sheet-mode-span sheet-chooser-left">PC</span>
|
||
</label>
|
||
<label class="sheet-chooser">
|
||
<input type="radio" class="sheet-type-select" value="ship" name="attr_sheetmode">
|
||
<span data-i18n="ship" class="sheet-mode-span sheet-chooser-mid">SHIP</span>
|
||
</label>
|
||
<label class="sheet-chooser">
|
||
<input type="radio" class="sheet-type-select" value="npc" name="attr_sheetmode">
|
||
<span data-i18n="npc" class="sheet-mode-span sheet-chooser-right">NPC</span>
|
||
</label>
|
||
</div>
|
||
<div class="sheet-npc">
|
||
<div class="sheet-header" >
|
||
<div><img src="https://i.imgur.com/Kz1vZHL.png"></img></div>
|
||
<div>
|
||
<div data-i18n="name">Name</div>
|
||
<input type="text" name="attr_character_name">
|
||
<div data-i18n="ranktitle">Rank/Title</div>
|
||
<input type="text" name="attr_ranktitle">
|
||
</div>
|
||
</div>
|
||
<hr/>
|
||
<div class="sheet-sectionheader" data-i18n="npcstats">NPC STATS</div>
|
||
<div class="sheet-npc-stats-section">
|
||
<div class="sheet-npc-statrow">
|
||
<div class="sheet-statname" data-i18n="combat">COMBAT</div>
|
||
<input type="number" class="sheet-npc-input" name="attr_npccombat">
|
||
<button type="roll" name="roll_npc-combat" value="@{whispergm} &{template:mothership} {{skill=Combat Check}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{statvaluetens=[[floor(@{npccombat}/10)]]}} {{statvalueones=[[@{npccombat}%10]]}} {{charname=@{character_name}}}"></button>
|
||
</div>
|
||
<div class="sheet-npc-statrow">
|
||
<div class="sheet-statname" data-i18n="hits">HITS</div>
|
||
<input type="number" class="sheet-npc-input" name="attr_npchits">/
|
||
<input type="number" class="sheet-npc-input" name="attr_npchits_max">
|
||
</div>
|
||
<div class="sheet-npc-statrow">
|
||
<div class="sheet-statname" data-i18n="loyalty">Loyalty</div>
|
||
<input type="number" class="sheet-npc-input" name="attr_npcloyalty">
|
||
<button type="roll" name="roll_npc-loyalty-save" value="@{whispergm} &{template:mothership} {{skill=Loyalty Save}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{statvaluetens=[[floor(@{npcloyalty}/10)]]}} {{statvalueones=[[@{npcloyalty}%10]]}} {{charname=@{character_name}}}"></button>
|
||
</div>
|
||
<div class="sheet-npc-statrow">
|
||
<div class="sheet-statname" data-i18n="instinct">INSTINCS</div>
|
||
<input type="number" class="sheet-npc-input" name="attr_npcinstinct">
|
||
<button type="roll" name="roll_npc-instinct" value="@{whispergm} &{template:mothership} {{skill=Instinct Check}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{statvaluetens=[[floor(@{npcinstinct}/10)]]}} {{statvalueones=[[@{npcinstinct}%10]]}} {{charname=@{character_name}}}"></button>
|
||
</div>
|
||
<div class="sheet-npc-statrow">
|
||
<div class="sheet-statname" data-i18n="hppool">HP POOL</div>
|
||
<input type="number" class="sheet-npc-input" name="attr_npcpool">/
|
||
<input type="number" class="sheet-npc-input" name="attr_npcpool_max">
|
||
</div>
|
||
<div class="sheet-npc-statrow">
|
||
<div class="sheet-statname" data-i18n="loyaltyroll">LOYALTY ROLL</div>
|
||
<input type="text" class="sheet-npc-input" name="attr_npcloyaltyroll">
|
||
<button type="roll" name="roll_npc-loyalty" value="@{whispergm} &{template:mothership-generic} {{title=NPC Loyalty Roll}} {{loyalty=[[@{npcloyaltyroll}]]}} {{charname=@{character_name}}}"></button>
|
||
</div>
|
||
</div>
|
||
<fieldset class="repeating_npc-stats sheet-custom-stat-grid">
|
||
<div class="sheet-npc-statrow">
|
||
<input type="text" class="sheet-npc-custom-stat" name="attr_customstatname">
|
||
<input type="number" class="sheet-npc-input" name="attr_customstatval">
|
||
<button type="roll" name="roll_npc-custom-stat" value="@{whispergm} &{template:mothership} {{skill=@{customstatname} Check}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{statvaluetens=[[floor(@{customstatval}/10)]]}} {{statvalueones=[[@{customstatval}%10]]}} {{charname=@{character_name}}}"></button>
|
||
</div>
|
||
</fieldset>
|
||
<hr/>
|
||
<div class="sheet-2-col-container">
|
||
<div>
|
||
<div class="sheet-sectionheader" data-i18n="combat">COMBAT</div>
|
||
<fieldset class="repeating_combat">
|
||
<div class="sheet-combat-entry">
|
||
<div class="sheet-combat-row">
|
||
<div>
|
||
<input type="text" name="attr_weaponname" class="input-med sheet-underlined-input ">
|
||
<label>Name</label>
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weapontarget" class="input-xs sheet-underlined-input" value="0">
|
||
<label>TN</label>
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weapondamage" class="input-sm sheet-underlined-input ">
|
||
<label>Damage</label>
|
||
</div>
|
||
<label>
|
||
<input name="attr_weaponx10" class="sheet-circle-checkbox" type="checkbox" value="9">
|
||
<span>x10</span>
|
||
</label>
|
||
<div>
|
||
|
||
<input type="text" name="attr_weaponrange" class="input-range sheet-underlined-input " >
|
||
<label>Range</label>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-combat-row">
|
||
<div>
|
||
<textarea rows="1" name="attr_weaponcrit" class="sheet-underlined-input"></textarea>
|
||
<label>Crit</label>
|
||
</div>
|
||
<div>
|
||
|
||
<textarea rows="1" name="attr_weaponspecial" class="sheet-underlined-input"></textarea>
|
||
<label>Special</label>
|
||
</div>
|
||
<div>
|
||
<button type="roll" name="roll_attack" class="sheet-npc-shoot"
|
||
value="@{whispergm} &{template:attack} {{charname=@{character_name}}} {{weapon=@{weaponname}}} {{rolltens=[[1d10-1]]}} {{rollones=[[1d10-1]]}} {{targettens=[[floor((@{weapontarget} @{npcbonusmacro1})/10)]]}} {{targetones=[[(@{weapontarget} @{npcbonusmacro2})%10]]}} {{damage=[[@{weapondamage}*(1+@{weaponx10})]]}} {{special=@{weaponspecial}}} {{crit=@{weaponcrit}}} {{bonus=[[0 @{npcbonusmacro2}]]}}">
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div>
|
||
<div class="sheet-sectionheader">SPECIAL</div>
|
||
<fieldset class="repeating_npc-special">
|
||
<div class="sheet-npc-special-row">
|
||
<input type="checkbox" name="attr_expand-special" value="1">
|
||
<span></span>
|
||
<input type="text" name="attr_specialname" class="sheet-underlined-input">
|
||
<button type="roll" name="roll_npc-special" value="&{template:mothership-generic} {{title=@{specialname}}} {{smalltext=@{specialdescription}}} {{charname=@{character_name}}}"></button>
|
||
<div class="sheet-special-expansion">
|
||
<textarea name="attr_specialdescription" class="sheet-npc-special"></textarea>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-pc">
|
||
<div class="sheet-header">
|
||
<table>
|
||
<tr>
|
||
<td><img src="https://i.imgur.com/Kz1vZHL.png"></img></td>
|
||
<td>
|
||
<table style="width: 100%;">
|
||
<tr>
|
||
<td><span data-i18n="name">Name</span></td>
|
||
<td colspan="3"><input type="text" name="attr_character_name"></input></td>
|
||
<td><span data-i18n="class">Class</span></td>
|
||
<td>
|
||
<select name="attr_class">
|
||
<option value="" data-18n="selectclass" disabled selected>Select a Class</option>
|
||
<option value="teamster" data-i18n="teamster">TEAMSTER</option>
|
||
<option value="android" data-i18n="android">ANDROID</option>
|
||
<option value="scientist" data-i18n="scientist">SCIENTIST</option>
|
||
<option value="marine" data-i18n="marine">MARINE</option>
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td><span data-i18n="level">Level</span></td>
|
||
<td><input type="number" name="attr_level" value=1></input> </td>
|
||
<td><span data-i18n="xp" >XP</span></td>
|
||
<td><input type="number" value=0 name="attr_xp" class="sheet-no-spinner"></input> / <span name="attr_xpneeded"></span></td>
|
||
<td><span data-i18n="ranktitle">Rank/Title</span></td>
|
||
<td><input type="text" name="attr_ranktitle"></input></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr/>
|
||
<table class="sheet-otherdata">
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<span class="sheet-statname" data-i18n="stress">STRESS</span>
|
||
<input type="number" name="attr_stress" value=2></input>
|
||
</td>
|
||
<td>
|
||
<span class="sheet-statname" data-i18n="resolve">RESOLVE</span>
|
||
<input type="number" value=0 name="attr_resolve"></input></td>
|
||
<td>
|
||
<button class="sheet-rollbutton sheet-panicbutton" type="roll" name="roll_paniccheck" value="&{template:panic} {{charname=@{character_name}}} {{stressdice=[[2d10]]}} {{currentstress=[[@{stress}]]}}" data-i18n="paniccheck">PANIC CHECK</button>
|
||
<button class="sheet-rollbutton sheet-panicbutton" type="roll" name="roll_panictable" value="@{panicchoice} {{charname=@{character_name}}} {{currentstress=[[@{stress}]]}} {{panicdice=[[2d10+@{stress}-@{resolve}]]}}" data-i18n="paniceffect">PANIC EFFECT</button>
|
||
</td>
|
||
<td>
|
||
<span class="sheet-statname" data-i18n="currenthealth">HEALTH</span>
|
||
<input type="number" value="@(currenthealth_max)" name="attr_currenthealth" class="sheet-no-spinner"></input> /
|
||
<input type="number" name="attr_currenthealth_max" value="(@{strength})*2" disabled></input>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan=3></td>
|
||
<td><span class="sheet-statname" data-i18n="credits">CREDITS</span>
|
||
<input type="number" class="credits-input" name="attr_credits"></input>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<input type="hidden" name="attr_classpanic"></input>
|
||
<div class="sheet-classpanic">
|
||
<span name="attr_classpanic"></span>
|
||
</div>
|
||
<hr/>
|
||
<table class="sheet-stats">
|
||
<tbody>
|
||
<tr>
|
||
<td colspan="8" class="sheet-sectionheader" data-i18n="stats">STATS</td>
|
||
<td colspan="1"> </td>
|
||
<td colspan="4" class="sheet-sectionheader" data-i18n="saves">SAVES</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-statname"><span data-i18n="strength">STRENGTH</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_strength" value="@{basestrength}+@{classstrength}+@{levelstrength}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_strength" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{strength}+0)/10)]]}} {{statvalueones=[[((@{strength}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-strength=1}} {{skill=Unskilled}}">+0%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_strength" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{strength}+10)/10)]]}} {{statvalueones=[[((@{strength}+10)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-strength=1}} {{skill=Trained}}">+10%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_strength" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{strength}+15)/10)]]}} {{statvalueones=[[((@{strength}+15)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-strength=1}} {{skill=Expert}}">+15%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_strength" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{strength}+20)/10)]]}} {{statvalueones=[[((@{strength}+20)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-strength=1}} {{skill=Master}}">+20%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_basestrength"></input>
|
||
<input type="hidden" value="0" name="attr_classstrength"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_levelstrength"></input>
|
||
</td>
|
||
<td class="sheet-statsdivider"></td>
|
||
<td class="sheet-statname"><span data-i18n="sanity">SANITY</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_sanity" value="@{classsanity}+@{levelsanity}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"> <button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_sanity" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{sanity}+0)/10)]]}} {{statvalueones=[[((@{sanity}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{stressdie=[[1d10]]}} {{title-sanity=1}} {{save=1}}">
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="hidden" value="0" name="attr_classsanity"></input>
|
||
<input type="number" value="0" name="attr_levelsanity"></input>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-statname"><span data-i18n="speed">SPEED</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_speed" value="@{basespeed}+@{classspeed}+@{levelspeed}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_speed" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{speed}+0)/10)]]}} {{statvalueones=[[((@{speed}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-speed=1}} {{skill=Unskilled}}">+0%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_speed" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{speed}+10)/10)]]}} {{statvalueones=[[((@{speed}+10)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-speed=1}} {{skill=Trained}}">+10%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_speed" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{speed}+15)/10)]]}} {{statvalueones=[[((@{speed}+15)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-speed=1}} {{skill=Expert}}">+15%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_speed" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{speed}+20)/10)]]}} {{statvalueones=[[((@{speed}+20)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-speed=1}} {{skill=Master}}">+20%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_basespeed"></input>
|
||
<input type="hidden" value="0" name="attr_classspeed"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_levelspeed"></input>
|
||
</td>
|
||
<td class="sheet-statsdivider"></td>
|
||
<td class="sheet-statname"><span data-i18n="fear">FEAR</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_fear" value="@{classfear}+@{levelfear}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"> <button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_fear" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{fear}+0)/10)]]}} {{statvalueones=[[((@{fear}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{stressdie=[[1d10]]}} {{title-fear=1}} {{save=1}}">
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="hidden" value="0" name="attr_classfear"></input>
|
||
<input type="number" value="0" name="attr_levelfear"></input>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-statname"><span data-i18n="intellect">INTELLECT</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_intellect" value="@{baseintellect}+@{classintellect}+@{levelintellect}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_intellect" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{intellect}+0)/10)]]}} {{statvalueones=[[((@{intellect}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-intellect=1}} {{skill=Unskilled}}">+0%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_intellect" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{intellect}+10)/10)]]}} {{statvalueones=[[((@{intellect}+10)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-intellect=1}} {{skill=Trained}}">+10%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_intellect" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{intellect}+15)/10)]]}} {{statvalueones=[[((@{intellect}+15)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-intellect=1}} {{skill=Expert}}">+15%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_intellect" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{intellect}+20)/10)]]}} {{statvalueones=[[((@{intellect}+20)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-intellect=1}} {{skill=Master}}">+20%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_baseintellect"></input>
|
||
<input type="hidden" value="0" name="attr_classintellect"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_levelintellect"></input>
|
||
</td>
|
||
<td class="sheet-statsdivider"></td>
|
||
<td class="sheet-statname"><span data-i18n="body">BODY</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_body" value="@{classbody}+@{levelbody}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"> <button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_body" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{body}+0)/10)]]}} {{statvalueones=[[((@{body}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{stressdie=[[1d10]]}} {{title-body=1}} {{save=1}}">
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="hidden" value="0" name="attr_classbody"></input>
|
||
<input type="number" value="0" name="attr_levelbody"></input>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-statname"><span data-i18n="combat">COMBAT</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_combat" value="@{basecombat}+@{classcombat}+@{levelcombat}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_combat" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{combat}+0)/10)]]}} {{statvalueones=[[((@{combat}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-combat=1}} {{skill=Unskilled}}">+0%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_combat" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{combat}+10)/10)]]}} {{statvalueones=[[((@{combat}+10)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-combat=1}} {{skill=Trained}}">+10%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_combat" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{combat}+15)/10)]]}} {{statvalueones=[[((@{combat}+15)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-combat=1}} {{skill=Expert}}">+15%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"><button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_combat" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{combat}+20)/10)]]}} {{statvalueones=[[((@{combat}+20)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-combat=1}} {{skill=Master}}">+20%</button>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_basecombat"></input>
|
||
<input type="hidden" value="0" name="attr_classcombat"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" value="0" name="attr_levelcombat"></input>
|
||
</td>
|
||
<td class="sheet-statsdivider"></td>
|
||
<td class="sheet-statname"><span data-i18n="armor">ARMOR</span></td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="number" disabled name="attr_armor" value="@{classarmor}+@{levelarmor}+@{armorbonus}"></input>
|
||
</td>
|
||
<td class="sheet-statsbuttonrow"> <button class="sheet-rollbutton sheet-actionbutton" type="roll" name="roll_body" value="&{template:mothership} {{charname=@{character_name}}} {{statvaluetens=[[floor((@{armor}+0)/10)]]}} {{statvalueones=[[((@{armor}+0)%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{stressdie=[[1d10]]}} {{title-armor=1}} {{save=1}}">
|
||
</td>
|
||
<td class="sheet-statsbuttonrow">
|
||
<input type="hidden" value="0" name="attr_classarmor"></input>
|
||
<input type="number" value="0" name="attr_levelarmor"></input>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td class="sheet-statlabels"><span data-18n="total">TOTAL</span></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td class="sheet-statlabels"><span>BASE</span></td>
|
||
<td class="sheet-statlabels"><span>MOD</span></td>
|
||
<td class="sheet-statsdivider"></td>
|
||
<td></td>
|
||
<td class="sheet-statlabels"><span>TOTAL</span></td>
|
||
<td></td>
|
||
<td class="sheet-statlabels"><span>MOD</span></td>
|
||
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr>
|
||
<div class="sheet-sectionheader" data-i18n="skills">SKILLS</div>
|
||
<div class="sheet-classpanic">Trained Skills cost 1 point. Expert skills cost 2 points. Master skills cost 3 points. To take an Expert or Master skill you must first take one of its prerequisite skills.</div>
|
||
<div>
|
||
<div class="sheet-skilltree">
|
||
<table class="sheet-skilltreetable">
|
||
<thead>
|
||
<td colspan=2 class="sheet-skillheader" data-i18n="trained">TRAINED +10%<td>
|
||
<td colspan=2 class="sheet-skillheader" data-i18n="expert">EXPERT +15%</td>
|
||
<td colspan=2 class="sheet-skillheader" data-i18n="master">MASTER +20%</td>
|
||
</thead>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_linguistics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="linguistics">LINGUISTICS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_psychology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="psychology" title="Prerequisite(s): Biology">PSYCHOLOGY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_sophontology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="sophontology" title="Prerequisite(s): Linguistics, Psychology">SOPHONTOLOGY</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_biology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="biology">BIOLOGY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_genetics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="genetics" title="Prerequisite(s): Biology">GENETICS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_xenobiology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="xenobiology" title="Prerequisite(s): Genetics, Pathology, Botany">XENOBIOLOGY</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_firstaid"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="firstaid">FIRST AID</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_pathology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="pathology" title="Prerequisite(s): First Aid">PATHOLOGY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_surgery"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="surgery" title="Prerequisite(s): Pathology">SURGERY</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_hydroponics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="hydroponics">HYDROPONICS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_botany"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="botany" title="Prerequisite(s): Hydroponics">BOTANY</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill1">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill1text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_geology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="geology">GEOLOGY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_planetology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="planetology" title="Prerequisite(s): Geology">PLANETOLOGY</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill2">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill2text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_zerog"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="zerog">ZERO-G</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_asteroidmining"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="asteroidmining" title="Prerequisite(s): Geology, Zero-G, Scavenging, Heavy Machinery">ASTEROID MINING</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill3">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill3text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_scavenging"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="scavenging">SCAVENGING</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_juryrigging"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="juryrigging" title="Prerequisite(s): Scavenging, Mechanical Repair">JURY RIGGING</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_cybernetics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="cybernetics" title="Prerequisite(s): Jury Rigging, Engineering">CYBERNETICS</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_heavymachinery"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="heavymachinery">HEAVY MACHINERY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_engineering"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="engineering" title="Prerequisite(s): Heavy Machinery, Computers, Mechanical Repair">ENGINEERING</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_robotics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="robotics" title="Prerequisite(s): Engineering">ROBOTICS</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_computers"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="computers">COMPUTERS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_hacking"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="hacking" title="Prerequisite(s): Computers">HACKING</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_artificialintelligence"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="artificialintelligence" title="Prerequisite(s): Engineering, Hacking">ARTIFICIAL INTELLIGANCE</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_mechanicalrepair"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="mechanicalrepair">MECHANICAL REPAIR</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_vehiclespecialization"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="vehiclespecialization" title="Prerequisite(s): Mechanical Repair, Driving, Piloting">VEHICLE SPECIALIZATION</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_command"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="command" title="Prerequisite(s): Vehicle Specialization, Tactics">COMMAND</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_driving"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="driving">DRIVING</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill4">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom expert skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill4text"></span>
|
||
</td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill5">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill5text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_piloting"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="piloting">PILOTING</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_astrogation"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="astrogation" title="Prerequisite(s): Piloting">ASTROGATION</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_hyperspace"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="hyperspace" title="Prerequisite(s): Astrogation">HYPERSPACE</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_mathematics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="mathematics">MATHEMATICS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_physics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="physics" title="Prerequisite(s): Mathematics">PHYSICS</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill6">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill6text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_art"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="art">ART</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill7">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom expert skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill7text"></span>
|
||
</td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill8">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill8text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_archaeology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="archaeology">ARCHAEOLOGY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_mysticism"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="mysticism" title="Prerequisite(s): Art, Archaeology, Theology">MYSTICISM</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_xenoesotericism"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="xenoesotericism" title="Prerequisite(s): Mysticism">XENOESOTERICISM</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_theology"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="theology">THEOLOGY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_tactics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="tactics" title="Prerequisite(s): Military Training">TACTICS</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill9">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill9text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_militarytraining"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="militarytraining">MILITARY TRAINING</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_gunnery"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="gunnery" title="Prerequisite(s): Military Training">GUNNERY</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill10">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill10text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_rimwise"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="rimwise">RIMWISE</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_firearms"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="firearms" title="Prerequisite(s): Military Training, Rimwise">FIREARMS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_weaponspecialization"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="weaponspecialization" title="Prerequisite(s): Gunnery, Firearms, Close-Quarters Combat, Explosives">WEAPON SPECIALIZATION</span></td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_athletics"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="athletics">ATHLETICS</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_closequarterscombat"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="closequarterscombat" title="Prerequisite(s): Military Training, Rimwise, Athletics">CLOSE-QUARTERS COMBAT</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill11">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill11text"></span>
|
||
</td>
|
||
</tr>
|
||
<tr class="sheet-skilltreerow">
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_chemistry"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="chemistry">CHEMISTRY</span></td>
|
||
<td>
|
||
<input type="checkbox" value="1" name="attr_explosives"></input>
|
||
</td>
|
||
<td><span class="sheet-skill" data-i18n="explosives" title="Prerequisite(s): Military Training, Chemistry">EXPLOSIVES</span></td>
|
||
<td colspan=2 class="">
|
||
<input type="checkbox" class="custom-skill-check" name="attr_customskill12">
|
||
<span class="sheet-skill sheet-custom-skill" title="Custom master skill"><input type="text" class="sheet-custom-skill-input" name="attr_customskill12text"></span>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-unspent-pts">Unspent Skill Points:<input type="number" value="0" name="attr_unspentskills"></div>
|
||
<div><b>Class Starting Skills: </b>
|
||
<input type="hidden" name="attr_startingskills"></input>
|
||
<span name="attr_startingskills"></span>
|
||
</div>
|
||
<hr/>
|
||
<div class="sheet-combat">
|
||
<div class="sheet-sectionheader" data-i18n="combat">COMBAT</div>
|
||
<fieldset class="repeating_combat">
|
||
<div class="sheet-combat-entry">
|
||
<div class="sheet-combat-row">
|
||
<div>
|
||
<input type="text" name="attr_weaponname" class="input-med sheet-underlined-input">
|
||
<label >Name</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_weaponbonus" class="input-sm sheet-underlined-input sheet-no-spinner" value="0">
|
||
<label >Bonus</label>
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weapondamage" class="input-sm sheet-underlined-input">
|
||
<label>Damage</label>
|
||
</div>
|
||
<label>
|
||
<input name="attr_weaponx10" class="sheet-circle-checkbox" type="checkbox" value="9">
|
||
<span>x10</span>
|
||
</label>
|
||
<div>
|
||
<input type="number" name="attr_weaponshotsleft" class="input-xs sheet-underlined-input sheet-no-spinner"> /
|
||
<input type="number" name="attr_weaponshotsmax" class="input-xs sheet-underlined-input sheet-no-spinner">
|
||
<label>Shots</label>
|
||
</div>
|
||
<div>
|
||
<input type="text" name="attr_weaponrange" class="input-range sheet-underlined-input" >
|
||
<label>Range</label>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-combat-row">
|
||
<div>
|
||
<textarea rows="1" name="attr_weaponcrit" class="sheet-underlined-input"></textarea>
|
||
<label>Crit</label>
|
||
</div>
|
||
<div>
|
||
<textarea rows="1" name="attr_weaponspecial" class="sheet-underlined-input"></textarea>
|
||
<label>Special</label>
|
||
</div>
|
||
<div>
|
||
<button type="roll" name="roll_attack" class="sheet-pc-shoot"
|
||
value="&{template:attack} {{charname=@{character_name}}} {{weapon=@{weaponname}}} {{rolltens=[[1d10-1]]}} {{rollones=[[1d10-1]]}} {{targettens=[[floor((@{combat}+@{weaponbonus} @{pcbonusmacro1})/10)]]}} {{targetones=[[(@{combat}+@{weaponbonus} @{pcbonusmacro2})%10]]}} {{damage=[[@{weapondamage}*(1+@{weaponx10})]]}} {{special=@{weaponspecial}}} {{crit=@{weaponcrit}}} {{bonus=[[@{weaponbonus}[Weapon Bonus] @{pcbonusmacro1}]]}}">
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div>
|
||
<div class="sheet-sectionheader" data-i18n="equipment">EQUIPMENT</div>
|
||
<div class="sheet-loadoutselector">
|
||
<select name="attr_loadout">
|
||
<option value="none" data-i18n="noloadout">NO LOADOUT SELECTED</option>
|
||
<option value="excavation" data-i18n="excavation">EXCAVATION</option>
|
||
<option value="exploration" data-i18n="exploration">exploration</option>
|
||
<option value="extermination" data-i18n="extermination">EXTERMINATION</option>
|
||
<option value="examination" data-i18n="examination">EXAMINATION</option>
|
||
</select>
|
||
<br>
|
||
<span class="sheet-classpanic" name="attr_loadoutequipment"></span>
|
||
</div>
|
||
<br>
|
||
<div class="sheet-2-col-container">
|
||
<div>
|
||
<h4>General Equipment</h4>
|
||
<fieldset class="repeating_equipment">
|
||
<div class="sheet-equipment-row">
|
||
<input type="text" name="attr_equipname" class="sheet-underlined-input" placeholder="Name">
|
||
<textarea name="attr_equipdesc" class="sheet-underlined-input sheet-equipment-description" placeholder="Description"></textarea>
|
||
<input type="number" name="attr_equipqty" class="sheet-no-spinner sheet-underlined-input" placeholder="QTY.">
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div>
|
||
<h4>Eqipped Armor Bonus<input type="number" name="attr_armorbonus" value="0"></h4>
|
||
<hr>
|
||
<h4 data-i18n="other-equipment">Other Equipment</h4>
|
||
<textarea name="attr_equipment" class="sheet-notes-field"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr/>
|
||
<div class="sheet-2-col-container">
|
||
<div>
|
||
<textarea class="sheet-notes-field" placeholder="Notes" name="attr_pcnotes1"></textarea>
|
||
</div>
|
||
<div>
|
||
<textarea class="sheet-notes-field" placeholder="Notes" name="attr_pcnotes2"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-ship">
|
||
<div class="sheet-header">
|
||
<div><img src="https://i.imgur.com/Kz1vZHL.png"></img></div>
|
||
<div class="sheet-ship-nameplate">
|
||
<div class="sheet-ship-name">
|
||
<div data-i18n="name">Name</div>
|
||
<input type="text" name="attr_shipname">
|
||
</div>
|
||
<div class="sheet-ship-class">
|
||
<div data-i18n="class">Class</div>
|
||
<input type="text" name="attr_shipclass">
|
||
</div>
|
||
<div class="sheet-ship-type">
|
||
<div data-i18n="type">Type</div>
|
||
<input type="text" name="attr_shiptype">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr/>
|
||
<div class="sheet-sectionheader">
|
||
<span data-i18n="shipstats">SHIP STATS</span>
|
||
<label>
|
||
<input type="checkbox" name="attr_editship" value="1">
|
||
<span class="sheet-edit-gear">y</span>
|
||
</label>
|
||
</div>
|
||
<input type="hidden" name="attr_editship" value="0" class="sheet-edit-ship-input">
|
||
<div class="sheet-edit-ship-container">
|
||
<div class="sheet-ship-worksheet">
|
||
<div class="sheet-ship-worksheet-section">1. PRIMARY MODULES</div><br/>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Life Support</span>
|
||
<div>Life support keeps the human crew alive. Each point of life support can support up to 10 humans. For every point below the required minimum, anyone not wearing a vaccsuit must make a Body Save every hour or take 1d10 damage. This includes those in cryochambers as well, but does not include androids. Many ships include 2-3 times the required amount of life support in case of extra passengers or damage to the system.</div>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-passengers" value="(@{ship-ls-mods}* 10)" disabled="true">
|
||
<label>Human Passengers</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-ls-mods" value="0">
|
||
<label>Modules</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-ls-hull" value="(@{ship-ls-mods})" disabled="true">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Command</span>
|
||
<div>The command module is the cockpit, command center, or bridge of a ship. For every 4 officer positions, one command module is required. Officers can be captains, first mates, navigation officers, communications officers, and is largely up to the Warden and the players to decide.</div>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-officers" value="(@{ship-cc-mods}* 4)" disabled="true">
|
||
<label>Officers</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-cc-mods" value="0">
|
||
<label>Modules</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-cc-hull" value="(@{ship-cc-mods})" disabled="true">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Armor</span>
|
||
<div>Armor plating protects the ship from small metoerites, space dust and debris, as well as, if need be, attacks from other vessels. Every point of armor costs 3 hull, and grants the ship +10% Armor Save (Max 80).</div>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-armor" value="0">
|
||
<label>Armor</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-armorsave" value="(@{ship-armor} * 10)" disabled="true">
|
||
<label>Armor %</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-ac-hull" value="(@{ship-armor} * 3)" disabled="true">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div class="sheet-ship-worksheet-section">2. SECONDARY MODULES</div><br/>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Jump Drives</span>
|
||
<div>Jump drives enable the ship to travel through hyperspace. Every point of Jump Drive increases the ship’s jump capability by 1 (Max 9). The first drive costs 1 hull, the second costs 2, the third costs 3, etc.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input type="number" name="attr_shipjumpdrives" value="0">
|
||
<label>Drives</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_shipjdhull" readonly value="0">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Computer</span>
|
||
<div>The ship’s computer is a powerful artificial intelligence that helps with astrogation, combat, and a number of other autonomous tasks. A ship’s Intellect is equal to the number of computer modules x10 +30%. It’s Combat is equal to the number of computer modules x10 +10%. A computer module is required for each jump drive. Additionally, each computer module equipped allows the computer to take more actions during combat.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input type="number" name="attr_ship-computers" value="0">
|
||
<label>Computers</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-cp-hull" disabled="true" value="(@{ship-computers})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Galley</span>
|
||
<div>Galleys contain a kitchen, restrooms, and a common area on a ship. Any ships making trips longer than 1 day must have 1 galley for every 2 life support modules or else the crew must take Body Saves once/day. Failure means 2d10 damage and1d10 Stress. Galleys must be re-stocked once a month and extra stores take up 1 Cargo.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input type="number" name="attr_ship-galley" value="0">
|
||
<label>Galleys</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-ga-hull" disabled="true" value="(@{ship-galley})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Weapon Mounts</span>
|
||
<div>For every weapon your ship has you must have 1 mount for it. You can find the list of ship weapons in the Player’s Survival Guide on page 30.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input type="number" name="attr_ship-weapon-mounts" value="0">
|
||
<label>Mounts</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-wm-hull" disabled="true" value="(@{ship-weapon-mounts})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Medical Bay</span>
|
||
<div>Medical bays allow scientists, doctors, and other researchers to heal crew members and perform various procedures (biopsies, autopsies, surgery). Each connected medbay on the ship grants +5% to the Intellect of the Scientists or Androids using them. Medical bays also grant advantage on Body Saves made for healing.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input type="number" name="attr_ship-medbays" value="0">
|
||
<label>Med Bays</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-md-hull" disabled="true" value="(@{ship-medbays})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Cryochamber</span>
|
||
<div>Cryochambers allow humans to sleep during long trips, particularly through hyperspace. Androids do not require them. Each point of hull spent on cryochambers accomodates up to 4 cryosleep pods. Individuals who don’t go into cryosleep during hyperspace jumps often have strange and terrifying experiences.</div>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-cryopods" value="(@{ship-cryochambers} * 4)" disabled="true">
|
||
<label>Sleep Pods</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-cryochambers" value="0">
|
||
<label>Cryo Chambers</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-cr-hull" disabled="true" value="(@{ship-cryochambers})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Living Quarters</span>
|
||
<div>Generally, if a ship is to travel through normal space for at least a week, then living quarters or “staterooms” are provided for each of the ship’s officers, or other important crew members.</div>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-off" value="@{ship-officers}" disabled="true">
|
||
<label>Officers</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-staterooms" value="0">
|
||
<label>Quarters</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-sr-hull" disabled="true" value="(@{ship-staterooms})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Barracks</span>
|
||
<div>The same as living quarters, except they are non-private and house up to twelve crew members. Like living quarters, they are not-essential rooms, but ships that need them, but don’t have them, give their crew +1 Stress per journey or month of travel.</div>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-crew" value="@{ship-barracks} * 12" disabled="true">
|
||
<label>Crew</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-barracks" value="0">
|
||
<label>Barracks</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-br-hull" disabled="true" value="(@{ship-barracks})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Cargo Hold</span>
|
||
<div>Cargo holds are essentially 20x20m rooms used for storage. Each cargo hold can hold up to 10 cargo units (each cargo is roughly the size of a large pallet). Cargo holds can also be used for any other basic room not provided for on this list (brigs, secret compartments, mining equipment, training facilities, hangars, armories, etc.).</div>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-cargo" value="@{ship-cargo-holds} * 10" disabled="true">
|
||
<label>Cargo</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-cargo-holds" value="0">
|
||
<label>Cargo Holds</label>
|
||
</div>
|
||
<div>
|
||
<input class="sheet-input-sm" name="attr_ship-crg-hull" disabled="true" value="(@{ship-cargo-holds})">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Science Lab</span>
|
||
<div>Similar to the medical bay, the science lab allows for detailed research. Each connected science lab grants +5% Intellect to Scientists and Androids using them to conduct research or experiments. Additionally, they can be designated as repair shops and used by Teamsters to repair electronics, machines, or even Androids.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input type="number" name="attr_ship-labs" value="0">
|
||
<label>Labs</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-sl-hull" disabled="true" value="(@{ship-labs})" class="sheet-input-sm">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div class="sheet-ship-worksheet-section">3. BASE HULL</div>
|
||
<div>
|
||
<input name="attr_ship-base-hull" disabled="true" class="sheet-input-sm" value="(@{ship-sl-hull} + @{ship-crg-hull} + @{ship-br-hull} + @{ship-sr-hull} + @{ship-cr-hull} + @{ship-md-hull} + @{ship-wm-hull} + @{ship-ga-hull} + @{ship-ls-hull} + @{ship-cc-hull} + @{ship-ac-hull} + @{ship-cp-hull} + @{shipjdhull})">
|
||
<label>Base Hull</label>
|
||
</div>
|
||
<div class="sheet-ship-worksheet-section">4. TOTAL HULL</div><br/>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Thrusters</span>
|
||
<div>Without thrusters, the ship cannot move. Every thruster module equipped increases the speed of the ship by +10% (to a maximum of 80). Additionally, thrusters cost an extra 1 hull for every 10 base hull.</div>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-t-hullreq" value="(ceil(@{ship-base-hull} / 10))" disabled="true" class="sheet-input-sm">
|
||
<label>REQ.</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-thrusters" value="0">
|
||
<label>Thrusters</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-t-hull" value="(@{ship-t-hullreq} + @{ship-thrusters})" disabled="true" class="sheet-input-sm">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Engine</span>
|
||
<div>Without the engine, the entire ship ceases to operate and becomes a ruin. You must have 1 engine module for every jump drive, plus 1 for every 4 thrusters, plus 1 for every 20 points of base hull.</div>
|
||
</div>
|
||
<br/>
|
||
<div>
|
||
<input name="attr_ship-engines" value="(ceil(@{ship-base-hull} / 20) + ceil(@{ship-thrusters} / 4) + @{shipjumpdrives})" disabled="true" class="sheet-input-sm">
|
||
<label>Engine</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-e-hull" value="(@{ship-engines})" disabled="true" class="sheet-input-sm" class="sheet-input-sm">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Fuel</span>
|
||
<div>The engine needs fuel to run on. Every jump requires double the fuel of the jump (Jump 2 = 4 fuel) and thrusters burn 1unit of fuel per day. The engine requires at least 3 fuel for every point of engine plus any extra fuel capacity you want to add. More fuel can be stored in Cargo Holds at 1 Fuel per 10 Cargo.</div>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-minfuel" value="(@{ship-engines} * 3)" disabled="true" class="sheet-input-sm">
|
||
<label>Min. Fuel</label>
|
||
</div>
|
||
<div>
|
||
<input type="number" name="attr_ship-extrafuel" value="0">
|
||
<label>Extra Fuel</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-f-hull" value="(@{ship-minfuel} + @{ship-extrafuel})" disabled="true" class="sheet-input-sm">
|
||
<label>Hull</label>
|
||
</div>
|
||
<div>
|
||
<span class="sheet-ship-worksheet-title">Frame</span>
|
||
<div>Frame covers the miscellaneous parts of a ship, docking gear, airlocks, ventillation, corridors, comms relays, everything else a ship generally uses. Frame is 1 point per 10 points of base hull.</div>
|
||
</div>
|
||
<div></div><div></div>
|
||
<div>
|
||
<input name="attr_ship-frame" value="(ceil(@{ship-base-hull} / 10))" disabled="true" class="sheet-input-sm">
|
||
<label>Frame</label>
|
||
</div>
|
||
</div>
|
||
<hr />
|
||
</div>
|
||
<div class="sheet-ship-stats-container">
|
||
<div class="sheet-ship-statsleftcol">
|
||
<div class="sheet-ship-statrow">
|
||
<div>
|
||
ARMOR
|
||
</div>
|
||
<button type="roll" name="roll_shiparmor" value="&{template:mothership} {{charname=@{shipname}}} {{statvaluetens=[[floor((@{shiparmor} @{shipbonusmacro1})/10)]]}} {{statvalueones=[[((@{shiparmor} @{shipbonusmacro2})%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{skill=Armor Save}}">
|
||
<input name="attr_shiparmor" value="(@{ship-armorsave})" disabled="true">
|
||
</button>
|
||
</div>
|
||
<div class="sheet-ship-statrow">
|
||
<div>
|
||
COMBAT
|
||
</div>
|
||
<button type="roll" name="roll_shipcombat" value="&{template:mothership} {{charname=@{shipname}}} {{statvaluetens=[[floor((@{shipcombat} @{shipbonusmacro1})/10)]]}} {{statvalueones=[[((@{shipcombat} @{shipbonusmacro2})%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-combat=1}}">
|
||
<input name="attr_shipcombat" value="(@{ship-computers}*10 + 10)" disabled="true">
|
||
</button>
|
||
</div>
|
||
<div class="sheet-ship-statrow">
|
||
<div>
|
||
INTELLECT
|
||
</div>
|
||
<button type="roll" name="roll_shipintellect" value="&{template:mothership} {{charname=@{shipname}}} {{statvaluetens=[[floor((@{shipintellect} @{shipbonusmacro1})/10)]]}} {{statvalueones=[[((@{shipintellect} @{shipbonusmacro2})%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-intellect=1}}">
|
||
<input name="attr_shipintellect" value="(@{ship-computers}*10 + 30)" disabled="true">
|
||
</button>
|
||
</div>
|
||
<div class="sheet-ship-statrow">
|
||
<div>
|
||
SPEED
|
||
</div>
|
||
<button type="roll" name="roll_shipspeed" value="&{template:mothership} {{charname=@{shipname}}} {{statvaluetens=[[floor((@{shipspeed} @{shipbonusmacro1})/10)]]}} {{statvalueones=[[((@{shipspeed} @{shipbonusmacro2})%10)]]}} {{tensdie=[[1d10-1]]}} {{onesdie=[[1d10-1]]}} {{title-speed=1}}">
|
||
<input name="attr_shipspeed" value="(@{ship-thrusters}*10)" disabled="true" >
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-ship-statsmidcol">
|
||
<div class="sheet-ship-hull-adjustment">
|
||
<div class="sheet-statname">HULL</div>
|
||
<input name="attr_shiphull_max" value="(@{ship-frame} + @{ship-f-hull} + @{ship-e-hull} + @{ship-t-hull} + @{ship-base-hull})" disabled="true">
|
||
<label class="sheet-ship-pillinput"><input type="number" name="attr_shiphull" value="0">Current Hull</label>
|
||
</div>
|
||
<div>
|
||
<br/>
|
||
<div class="ship-breakpoint-widget">
|
||
<div>
|
||
<input name="attr_ship-cost" value="(floor(@{shiphull_max} * .75))" class="sheet-circleinput" disabled="true">
|
||
<label>75%</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-cost" value="(floor(@{shiphull_max} * .5))" class="sheet-circleinput" disabled="true">
|
||
<label>50%</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-cost" value="(floor(@{shiphull_max} * .25))" class="sheet-circleinput" disabled="true">
|
||
<label>25%</label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<div class="sheet-statname">FUEL</div>
|
||
<input name="attr_shipfuel_max" value="(@{ship-minfuel} + @{ship-extrafuel})" disabled="true">
|
||
<label class="sheet-ship-pillinput"><input type="number" name="attr_shipfuel" value="0">Current Fuel</label>
|
||
</div>
|
||
<div>
|
||
<div class="sheet-statname">GALLEY</div>
|
||
<input name="attr_galley_max" value="(30)" disabled="true">
|
||
<label class="sheet-ship-pillinput"><input type="number" name="attr_galley" value="0">Current Stock</label>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-ship-statsrightcol">
|
||
<div>
|
||
<input name="attr_ship-cost" value="(@{shiphull_max}*10)" class="sheet-boxinput" disabled="true">
|
||
<label>Cost (MCr)</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-owed" type="number" class="sheet-boxinput" value="0" step="any">
|
||
<label >Owed (MCr)</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-owed" type="number" class="sheet-boxinput" value="(@{ship-medbays} * 5)" disabled="true">
|
||
<label >Medbay +Int (%)</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-owed" type="number" class="sheet-boxinput" value="(@{ship-labs} * 5)" disabled="true">
|
||
<label >Lab +Int (%)</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-owed" type="number" class="sheet-boxinput" value="(@{shipjumpdrives})" disabled="true">
|
||
<label >Drive Rating</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-owed" type="number" class="sheet-boxinput" value="(@{ship-passengers})" disabled="true">
|
||
<label>Crew Capacity</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_ship-owed" type="number" class="sheet-boxinput" value="(@{ship-cryopods})" disabled="true">
|
||
<label>Cryopods</label>
|
||
</div>
|
||
<button type="roll" class="sheet-ship-critical" name="roll_shipcritical" value="&{template:shipcrittable} {{shipname=@{shipname}}} {{critdice=[[1d100-1]]}}">Ship Critical</button>
|
||
</div>
|
||
</div>
|
||
<hr/>
|
||
<div class="sheet-2-col-container">
|
||
<div>
|
||
<div data-i18n="cargo" class="sheet-sectionheader">
|
||
CARGO
|
||
</div>
|
||
<div>
|
||
<span class="sheet-statname">Cargo Capacity (Units):</span>
|
||
<input disabled="true" name="attr_cargodisplay" value="(@{ship-cargo})" class="sheet-underlined-input sheet-medium">
|
||
</div>
|
||
<fieldset class="repeating_ship-cargo">
|
||
<div class="sheet-ship-cargo-row">
|
||
<input name="attr_cargoname" class="sheet-underlined-input" type="text" placeholder="CARGO">
|
||
<input name="attr_cargoqty" class="sheet-underlined-input" type="text" placeholder="QTY.">
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div>
|
||
<div data-i18n="crew" class="sheet-sectionheader">
|
||
CREW
|
||
</div>
|
||
<fieldset class="repeating_ship-crew">
|
||
<div class="sheet-ship-crew-row">
|
||
<input name="attr_cargoname" class="sheet-underlined-input" type="text" placeholder="NAME">
|
||
<input name="attr_cargoqty" class="sheet-underlined-input" type="text" placeholder="RANK">
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
</div>
|
||
<hr/>
|
||
<div data-i18n="combat" class="sheet-sectionheader">
|
||
COMBAT
|
||
</div>
|
||
<fieldset class="repeating_ship-combat">
|
||
<div class="sheet-combat-entry sheet-ship-combat-row">
|
||
<div>
|
||
<input name="attr_weaponname" class="sheet-underlined-input" type="text">
|
||
<label>Name</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_weapontarget" class="sheet-underlined-input sheet-small" type="number" value="0">
|
||
<label>TN</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_weaponammo" class="sheet-underlined-input sheet-small" type="number" value="0">/
|
||
<input name="attr_weaponammo_max" class="sheet-underlined-input sheet-small" type="number" value="0">
|
||
<label>Ammo</label>
|
||
</div>
|
||
<div>
|
||
<input name="attr_weapondmg" class="sheet-underlined-input sheet-medium" type="text">
|
||
<label>DMG</label>
|
||
</div>
|
||
<div>
|
||
<label>
|
||
<input name="attr_weaponx10" class="sheet-circle-checkbox" type="checkbox" value="9">
|
||
<span>x10</span>
|
||
</label>
|
||
</div>
|
||
<div>
|
||
<textarea name="attr_weaponspecial" class="sheet-underlined-input"></textarea>
|
||
<label>Special</label>
|
||
</div>
|
||
<button type="roll" name="roll_shipcombat"
|
||
value="&{template:attack} {{charname=@{shipname}}} {{weapon=@{weaponname}}} {{rolltens=[[1d10-1]]}} {{rollones=[[1d10-1]]}} {{targettens=[[floor((@{weapontarget} @{shipbonusmacro1})/10)]]}} {{targetones=[[(@{weapontarget} @{shipbonusmacro2})%10]]}} {{damage=[[(@{weapondmg})*(1+@{weaponx10})]]}} {{special=@{weaponspecial}}} {{crit=Inflict a ship critical!}} {{bonus=[[0 @{shipbonusmacro2}]]}}"></button>
|
||
</div>
|
||
</fieldset>
|
||
<hr/>
|
||
<div class="sheet-2-col-container">
|
||
<div>
|
||
<textarea class="sheet-notes-field" placeholder="Notes" name="attr_shipnotes1"></textarea>
|
||
</div>
|
||
<div>
|
||
<textarea class="sheet-notes-field" placeholder="Notes" name="attr_shipnotes2"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sheet-npc">
|
||
<hr/>
|
||
<div class="sheet-2-col-container">
|
||
<div>
|
||
<textarea class="sheet-notes-field" placeholder="Notes" name="attr_npcnotes1"></textarea>
|
||
</div>
|
||
<div>
|
||
<textarea class="sheet-notes-field" placeholder="Notes" name="attr_npcnotes2"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr/>
|
||
</div>
|
||
|
||
|
||
<rolltemplate class="sheet-rolltemplate-attack">
|
||
<div>
|
||
<div class="sheet-roll-type">{{weapon}}{{#rollGreater() bonus 0}} +{{bonus}}%{{/rollGreater() bonus 0}}{{#rollLess() bonus 0}} {{bonus}}%{{/rollLess() bonus 0}}</div>
|
||
<div class="sheet-roll-container">
|
||
<div class="sheet-roll-leftcol">
|
||
<div class="sheet-roll-result">
|
||
{{rolltens}}{{rollones}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="rollvalue">
|
||
Roll Value
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-rightcol">
|
||
<div class="sheet-roll-result">
|
||
{{targettens}}{{targetones}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="targetvalue">
|
||
Target Value
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-clear"></div>
|
||
</div>
|
||
|
||
{{#rollLess() rolltens targettens}}
|
||
<div class="sheet-roll-result">
|
||
{{damage}}
|
||
<div class="sheet-roll-subheader">
|
||
Damage
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-clear"></div>
|
||
{{#special}}
|
||
<div class="sheet-roll-row">
|
||
{{special}}
|
||
<div class="sheet-roll-subheader">
|
||
Special
|
||
</div>
|
||
</div>
|
||
{{/special}}
|
||
|
||
{{#rollTotal() rolltens rollones}}
|
||
{{#crit}}
|
||
<div class="sheet-roll-row">
|
||
{{crit}}
|
||
<div class="sheet-roll-subheader">
|
||
Critical
|
||
</div>
|
||
</div>
|
||
{{/crit}}
|
||
{{/rollTotal() rolltens rollones}}
|
||
{{/rollLess() rolltens targettens}}
|
||
{{#rollTotal() rolltens targettens}}
|
||
{{#^rollLess() targetones rollones}}
|
||
<div class="sheet-roll-result">
|
||
{{damage}}
|
||
<div class="sheet-roll-subheader">
|
||
Damage
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-clear"></div>
|
||
{{#special}}
|
||
<div class="sheet-roll-row">
|
||
{{special}}
|
||
<div class="sheet-roll-subheader">
|
||
Special
|
||
</div>
|
||
</div>
|
||
{{/special}}
|
||
|
||
{{#rollTotal() rolltens rollones}}
|
||
{{#crit}}
|
||
<div class="sheet-roll-row">
|
||
{{crit}}
|
||
<div class="sheet-roll-subheader">
|
||
Critical
|
||
</div>
|
||
</div>
|
||
{{/crit}}
|
||
{{/rollTotal() rolltens rollones}}
|
||
{{/^rollLess() targetones rollones}}
|
||
{{/rollTotal() rolltens targettens}}
|
||
<div class="sheet-roll-charname">
|
||
{{charname}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-mothership">
|
||
<div>
|
||
<div class="sheet-roll-type">
|
||
{{skill}}
|
||
{{#title-strength}}Strength Check{{/title-strength}}
|
||
{{#title-speed}}Speed Check{{/title-speed}}
|
||
{{#title-intellect}}Intellect Check{{/title-intellect}}
|
||
{{#title-combat}}Combat Check{{/title-combat}}
|
||
{{#title-sanity}}Sanity Save{{/title-sanity}}
|
||
{{#title-fear}}Fear Save{{/title-fear}}
|
||
{{#title-body}}Body Save{{/title-body}}
|
||
{{#title-armor}}Armor Save{{/title-armor}}
|
||
</div>
|
||
<div class="sheet-roll-container">
|
||
<div class="sheet-roll-leftcol">
|
||
<div class="sheet-roll-result">
|
||
{{tensdie}}{{onesdie}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="rollvalue">
|
||
Roll Value
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-rightcol">
|
||
<div class="sheet-roll-result">
|
||
{{statvaluetens}}{{statvalueones}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="targetvalue">
|
||
Target Value
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-clear"></div>
|
||
</div>
|
||
<div class="sheet-roll-result">
|
||
{{#rollTotal() tensdie onesdie}}CRITICAL{{/rollTotal() tensdie onesdie}}
|
||
{{#rollLess() tensdie statvaluetens}}SUCCESS{{/rollLess() tensdie statvaluetens}}
|
||
{{#rollTotal() tensdie statvaluetens}}{{#rollTotal() onesdie statvalueones}}SUCCESS{{/rollTotal() onesdie statvalueones}}{{/rollTotal() tensdie statvaluetens}}
|
||
{{#rollTotal() tensdie statvaluetens}}{{#rollLess() onesdie statvalueones}}SUCCESS{{/rollLess() onesdie statvalueones}}{{/rollTotal() tensdie statvaluetens}}
|
||
{{#rollTotal() tensdie statvaluetens}}{{#rollGreater() onesdie statvalueones}}FAILURE{{/rollGreater() onesdie statvalueones}}{{/rollTotal() tensdie statvaluetens}}
|
||
{{#rollGreater() tensdie statvaluetens}}FAILURE{{/rollGreater() tensdie statvaluetens}}
|
||
</div>
|
||
{{#save}}{{#rollTotal() tensdie statvaluetens}}
|
||
{{#rollGreater() onesdie statvalueones}}
|
||
<div class="sheet-roll-row">
|
||
Gain 1 stress.
|
||
</div>
|
||
{{/rollGreater() onesdie statvalueones}}
|
||
{{/rollTotal() tensdie statvaluetens}}{{/save}}
|
||
|
||
{{#save}}{{#rollGreater() tensdie statvaluetens}}
|
||
<div class="sheet-roll-row">
|
||
Gain 1 stress.
|
||
</div>
|
||
{{/rollGreater() tensdie statvaluetens}}{{/save}}
|
||
</div>
|
||
<div class="sheet-roll-charname">
|
||
{{charname}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-mothership-generic">
|
||
<div>
|
||
<div class="sheet-roll-type">
|
||
{{title}}
|
||
</div>
|
||
{{#allprops() title charname smalltext}}
|
||
<div class="sheet-roll-result">
|
||
{{value}}
|
||
<div class="sheet-roll-subheader">
|
||
{{key}}
|
||
</div>
|
||
</div>
|
||
{{/allprops() title charname smalltext}}
|
||
{{#smalltext}}
|
||
<div class="sheet-roll-row">
|
||
{{smalltext}}
|
||
</div>
|
||
{{/smalltext}}
|
||
<div class="sheet-roll-charname">
|
||
{{charname}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-panic">
|
||
<div class="sheet-roll-panic">
|
||
<div class="sheet-roll-type">
|
||
Panic Check
|
||
</div>
|
||
<div class="sheet-roll-container">
|
||
<div class="sheet-roll-leftcol">
|
||
<div class="sheet-roll-result">
|
||
{{stressdice}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="rollvalue">
|
||
Roll Value
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-rightcol">
|
||
<div class="sheet-roll-result">
|
||
{{currentstress}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="currentstress">
|
||
Current Stress
|
||
</div>
|
||
</div>
|
||
<div class="sheet-roll-clear"></div>
|
||
</div>
|
||
<div class="sheet-roll-result">
|
||
{{#rollLess() stressdice currentstress}}FAILURE</div><div class="sheet-roll-row" data-i18n="rollpanic">Roll on Panic Table.{{/rollLess() stressdice currentstress}}
|
||
{{#rollTotal() stressdice currentstress}}FAILURE</div><div class="sheet-roll-row" data-i18n="rollpanic">Roll on Panic Table.{{/rollTotal() stressdice currentstress}}
|
||
{{#rollGreater() stressdice currentstress}}SUCCESS</div><div class="sheet-roll-row" data-i18n="stressrelief">Relieve one stress.{{/rollGreater() stressdice currentstress}}
|
||
</div>
|
||
<div class="sheet-roll-charname">
|
||
{{charname}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
|
||
<rolltemplate class="sheet-rolltemplate-panictable">
|
||
<div class="sheet-roll-panic">
|
||
<div class="sheet-roll-type">
|
||
Panic Table
|
||
</div>
|
||
<div class="sheet-roll-result">
|
||
{{panicdice}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="rollvalue">
|
||
Roll Value
|
||
</div>
|
||
{{#rollLess() panicdice 2}}
|
||
<div class="sheet-roll-result" data-i18n="noeffect">No effect</div>
|
||
<div class="sheet-roll-row" data-i18n="noeffecttext">{{charname}} did not panic.</div>
|
||
{{/rollLess() panicdice 2}}
|
||
{{#rollGreater() panicdice 1}}{{#rollLess() panicdice 4}}
|
||
<div class="sheet-roll-result" data-i18n="laserfocus">Laser Focus</div>
|
||
<div class="sheet-roll-row" data-i18n="laserfocustext">Advantage on all rolls for the next 1d10 hours.</div>
|
||
{{/rollLess() panicdice 4}}{{/rollGreater() panicdice 1}}
|
||
{{#rollGreater() panicdice 3}}{{#rollLess() panicdice 6}}
|
||
<div class="sheet-roll-result" data-i18n="majadr">Major Adrenaline Rush</div>
|
||
<div class="sheet-roll-row" data-i18n="majadrtext">Advantage on all rolls for the next 3d10 minutes.</div>
|
||
{{/rollLess() panicdice 6}}{{/rollGreater() panicdice 3}}
|
||
{{#rollGreater() panicdice 5}}{{#rollLess() panicdice 8}}
|
||
<div class="sheet-roll-result" data-i18n="minadr">Minor Adrenaline Rush</div>
|
||
<div class="sheet-roll-row" data-i18n="minadrtext">Advantage on all rolls for the next 1d10 minutes.</div>
|
||
{{/rollLess() panicdice 8}}{{/rollGreater() panicdice 5}}
|
||
{{#rollGreater() panicdice 7}}{{#rollLess() panicdice 10}}
|
||
<div class="sheet-roll-result" data-i18n="anxious">Anxious</div>
|
||
<div class="sheet-roll-row" data-i18n="anxioustext">Gain 1 stress.</div>
|
||
{{/rollLess() panicdice 10}}{{/rollGreater() panicdice 7}}
|
||
{{#rollGreater() panicdice 9}}{{#rollLess() panicdice 12}}
|
||
<div class="sheet-roll-result" data-i18n="nervoustwitch">Nervous Twitch</div>
|
||
<div class="sheet-roll-row" data-i18n="nervoustwitchtext">Gain 2 stress. The nearest crew member also gains 1 Stress</div>
|
||
{{/rollLess() panicdice 12}}{{/rollGreater() panicdice 9}}
|
||
{{#rollGreater() panicdice 11}}{{#rollLess() panicdice 14}}
|
||
<div class="sheet-roll-result" data-i18n="cowardice">Cowardice</div>
|
||
<div class="sheet-roll-row" data-i18n="cowardicetext">Gain 1 stress. For the next 1d10 hours, you must make a Fear save to engage in combat or else flee.</div>
|
||
{{/rollLess() panicdice 14}}{{/rollGreater() panicdice 11}}
|
||
{{#rollGreater() panicdice 13}}{{#rollLess() panicdice 16}}
|
||
<div class="sheet-roll-result" data-i18n="hallucinations">Hallucinations</div>
|
||
<div class="sheet-roll-row" data-i18n="hallucinationstext">For the next 2d10 hours (determined secretly), you have trouble distinguishing between reality and fantasy.</div>
|
||
{{/rollLess() panicdice 16}}{{/rollGreater() panicdice 13}}
|
||
{{#rollGreater() panicdice 15}}{{#rollLess() panicdice 18}}
|
||
<div class="sheet-roll-result" data-i18n="cripplingfear">Crippling Fear</div>
|
||
<div class="sheet-roll-row" data-i18n="cripplingfeartext">Gain a new permanent phobia. Whenever you encounter this phobia make a Fear save at Disadvantage or gain 1d10 stress.</div>
|
||
{{/rollLess() panicdice 18}}{{/rollGreater() panicdice 15}}
|
||
{{#rollGreater() panicdice 17}}{{#rollLess() panicdice 20}}
|
||
<div class="sheet-roll-result" data-i18n="overwhelmed">Overwhelmed</div>
|
||
<div class="sheet-roll-row" data-i18n="overwhelmedtext">Gain 1d10 stress.</div>
|
||
{{/rollLess() panicdice 20}}{{/rollGreater() panicdice 17}}
|
||
{{#rollGreater() panicdice 19}}{{#rollLess() panicdice 22}}
|
||
<div class="sheet-roll-result" data-i18n="rattled">Rattled</div>
|
||
<div class="sheet-roll-row" data-i18n="rattledtext">Let out a blood-curdling scream. Disadvantage on all rolls for 2d10 minutes.</div>
|
||
{{/rollLess() panicdice 22}}{{/rollGreater() panicdice 19}}
|
||
{{#rollTotal() panicdice 22}}
|
||
<div class="sheet-roll-result" data-i18n="paranoid">Paranoid</div>
|
||
<div class="sheet-roll-row" data-i18n="paranoidtext">For the next 1d10 days, whenever a character joins your group (even if they only left for a short period of time), make a Fear save or gain 1 stress.</div>
|
||
{{/rollTotal() panicdice 22}}
|
||
{{#rollTotal() panicdice 23}}
|
||
<div class="sheet-roll-result" data-i18n="deathdrive">Death Drive</div>
|
||
<div class="sheet-roll-row" data-i18n="deathdrivetext">For the next Xd10 (where X=Stress) days whenever you encounter a stranger or known enemy, you must make a Sanity save or else immediately attack them.</div>
|
||
{{/rollTotal() panicdice 23}}
|
||
{{#rollTotal() panicdice 24}}
|
||
<div class="sheet-roll-result" data-i18n="catatonic">Catatonic</div>
|
||
<div class="sheet-roll-row" data-i18n="catatonictext">Become unresponsive and unmoving for Xd10 (where X=Stress) minutes.</div>
|
||
{{/rollTotal() panicdice 24}}
|
||
{{#rollTotal() panicdice 25}}
|
||
<div class="sheet-roll-result" data-i18n="broken">Broken</div>
|
||
<div class="sheet-roll-row" data-i18n="brokentext">For the next Xd10 (where X=Stress) days make a Panic roll whenever a nearby crew member fails a save.</div>
|
||
{{/rollTotal() panicdice 25}}
|
||
{{#rollTotal() panicdice 26}}
|
||
<div class="sheet-roll-result" data-i18n="psychotic">Psychotic</div>
|
||
<div class="sheet-roll-row" data-i18n="psychotictext">Immediately attack the closest crew member until you do at least 2d10 damage. If there is no crew member nearby, you attack the environment.</div>
|
||
{{/rollTotal() panicdice 26}}
|
||
{{#rollTotal() panicdice 27}}
|
||
<div class="sheet-roll-result" data-i18n="compounding">Compounding Problems</div>
|
||
<div class="sheet-roll-row" data-i18n="compoundingtext">Roll for two more panic effects.</div>
|
||
{{/rollTotal() panicdice 27}}
|
||
{{#rollTotal() panicdice 28}}
|
||
<div class="sheet-roll-result" data-i18n="descent">Descent into Madness</div>
|
||
<div class="sheet-roll-row" data-i18n="descenttext">Gain 2 new phobias. Your Stress cannot be relieved below 5.</div>
|
||
{{/rollTotal() panicdice 28}}
|
||
{{#rollTotal() panicdice 29}}
|
||
<div class="sheet-roll-result" data-i18n="pyschologicalcollapse">Psychological Collapse</div>
|
||
<div class="sheet-roll-row" data-i18n="pyschologicalcollapsetext">You become permanently, irreparably insane. Your character is now played by the Warden.</div>
|
||
{{/rollTotal() panicdice 29}}
|
||
{{#rollGreater() panicdice 29}}
|
||
<div class="sheet-roll-result" data-i18n="heartattack">Heart Attack</div>
|
||
<div class="sheet-roll-row" data-i18n="heartattacktext">Instant death.</div>
|
||
{{/rollGreater() panicdice 29}}
|
||
<div class="sheet-roll-charname">
|
||
{{charname}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-panicandroid">
|
||
<div class="sheet-roll-panic">
|
||
<div class="sheet-roll-type">
|
||
Panic Table
|
||
</div>
|
||
<div class="sheet-roll-result">
|
||
{{panicdice}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="rollvalue">
|
||
Roll Value
|
||
</div>
|
||
{{#rollLess() panicdice 2}}
|
||
<div class="sheet-roll-result" data-i18n="noeffect">No effect</div>
|
||
<div class="sheet-roll-row" data-i18n="noeffecttext">{{charname}} did not panic.</div>
|
||
{{/rollLess() panicdice 2}}
|
||
{{#rollGreater() panicdice 1}}{{#rollLess() panicdice 4}}
|
||
<div class="sheet-roll-result" data-i18n="statetheodds">State the Odds</div>
|
||
<div class="sheet-roll-row" data-i18n="statetheoddstext">of any event, Advantage on party rolls for 1hr.</div>
|
||
{{/rollLess() panicdice 4}}{{/rollGreater() panicdice 1}}
|
||
{{#rollGreater() panicdice 3}}{{#rollLess() panicdice 6}}
|
||
<div class="sheet-roll-result" data-i18n="etymology">Explains the Etymology of Words</div>
|
||
<div class="sheet-roll-row" data-i18n="etymologytext">Knowledge checks have Advantage for 1hr.</div>
|
||
{{/rollLess() panicdice 6}}{{/rollGreater() panicdice 3}}
|
||
{{#rollGreater() panicdice 5}}{{#rollLess() panicdice 8}}
|
||
<div class="sheet-roll-result" data-i18n="geometric">Organizes Objects Into Geometric Patterns</div>
|
||
<div class="sheet-roll-row" data-i18n="geometrictext">Everyone else gains 1 Stress.</div>
|
||
{{/rollLess() panicdice 8}}{{/rollGreater() panicdice 5}}
|
||
{{#rollGreater() panicdice 7}}{{#rollLess() panicdice 10}}
|
||
<div class="sheet-roll-result" data-i18n="inventorydust">Inventories Particles of Dust by Grade</div>
|
||
<div class="sheet-roll-row" data-i18n="inventorydusttext">Cannot engage in other tasks, everyone else gains 2 Stress.</div>
|
||
{{/rollLess() panicdice 10}}{{/rollGreater() panicdice 7}}
|
||
{{#rollGreater() panicdice 9}}{{#rollLess() panicdice 12}}
|
||
<div class="sheet-roll-result" data-i18n="faxmachine">Intermittently Emits Shrieks Like a Fax Machine Under Duress</div>
|
||
<div class="sheet-roll-row" data-i18n="faxmachinetext">Lapses into morse code, cannot communicate or sneak. Everyone else gains 2 stress.</div>
|
||
{{/rollLess() panicdice 12}}{{/rollGreater() panicdice 9}}
|
||
{{#rollGreater() panicdice 11}}{{#rollLess() panicdice 14}}
|
||
<div class="sheet-roll-result" data-i18n="incorrectodds">Incorrectly States Odds</div>
|
||
<div class="sheet-roll-row" data-i18n="incorrectoddstext">Insists impossible tasks are trivial, trivial tasks are impossible for the next 2d10 hours. Distracting. Anyone attempting a complex task must make a Fear save or gain 1d10 Stress.</div>
|
||
{{/rollLess() panicdice 14}}{{/rollGreater() panicdice 11}}
|
||
{{#rollGreater() panicdice 13}}{{#rollLess() panicdice 16}}
|
||
<div class="sheet-roll-result" data-i18n="twitchy">Repetitive Twitchy Motions</div>
|
||
<div class="sheet-roll-row" data-i18n="twitchytext">Your manual tasks have Disadvantage, everyone else gains 2 Stress.</div>
|
||
{{/rollLess() panicdice 16}}{{/rollGreater() panicdice 13}}
|
||
{{#rollGreater() panicdice 15}}{{#rollLess() panicdice 18}}
|
||
<div class="sheet-roll-result" data-i18n="expressiveness">Loses Any Expressiveness</div>
|
||
<div class="sheet-roll-row" data-i18n="expressivenesstext">Discusses the irrationality of phobias, seeks to trigger them.</div>
|
||
{{/rollLess() panicdice 18}}{{/rollGreater() panicdice 15}}
|
||
{{#rollGreater() panicdice 17}}{{#rollLess() panicdice 20}}
|
||
<div class="sheet-roll-result" data-i18n="presentcourse">Unreasonable Adherence to the Present Course of Action</div>
|
||
<div class="sheet-roll-row" data-i18n="presentcoursetext">Take 1d10 damage from repetitive motion injury. Everyone else makes Fear save or gains 1d10/2 Stress.</div>
|
||
{{/rollLess() panicdice 20}}{{/rollGreater() panicdice 17}}
|
||
{{#rollGreater() panicdice 19}}{{#rollLess() panicdice 22}}
|
||
<div class="sheet-roll-result" data-i18n="nihilism">Becomes Nihilistically Worshipful of the Source of Danger</div>
|
||
<div class="sheet-roll-row" data-i18n="nihilismtext">Everyone has Disadvantage on rolls against it. Everyone else takes a fear save when failing to act against danger or gains a Phobia.</div>
|
||
{{/rollLess() panicdice 22}}{{/rollGreater() panicdice 19}}
|
||
{{#rollTotal() panicdice 22}}
|
||
<div class="sheet-roll-result" data-i18n="killswitch">Killswitch Engaged</div>
|
||
<div class="sheet-roll-row" data-i18n="killswitchtext">Go berserk, will not withdraw from combat regardless of situation, will not adhere to tactics</div>
|
||
{{/rollTotal() panicdice 22}}
|
||
{{#rollTotal() panicdice 23}}
|
||
<div class="sheet-roll-result" data-i18n="turingtest">Turing Test Failure</div>
|
||
<div class="sheet-roll-row" data-i18n="turingtesttext">Have difficulty expressing humanity. Party members make a Fear Save of gain 1 Stress when you show up.</div>
|
||
{{/rollTotal() panicdice 23}}
|
||
{{#rollTotal() panicdice 24}}
|
||
<div class="sheet-roll-result" data-i18n="systemoverload">System Overload</div>
|
||
<div class="sheet-roll-row" data-i18n="systemoverloadtext">Slump Catatonic in a failed reboot cycle for 1d10 hours.</div>
|
||
{{/rollTotal() panicdice 24}}
|
||
{{#rollTotal() panicdice 25}}
|
||
<div class="sheet-roll-result" data-i18n="logiccore">Fried Logic Core</div>
|
||
<div class="sheet-roll-row" data-i18n="logiccoretext">Frenzied nonsensical behaviour. Everyone else makes a Panic save.</div>
|
||
{{/rollTotal() panicdice 25}}
|
||
{{#rollTotal() panicdice 26}}
|
||
<div class="sheet-roll-result" data-i18n="threatassesment">Damage to Threat Assesment</div>
|
||
<div class="sheet-roll-row" data-i18n="threatassesmenttext">Betray party member at the next opportunity, believe you are aiding the crew. All stress gained is increased by 1d10 for the next 1d10 hours.</div>
|
||
{{/rollTotal() panicdice 26}}
|
||
{{#rollTotal() panicdice 27}}
|
||
<div class="sheet-roll-result" data-i18n="compoundingcorruption">Compound Data Corruption</div>
|
||
<div class="sheet-roll-row" data-i18n="compoundingcorruptiontext">Roll Twice</div>
|
||
{{/rollTotal() panicdice 27}}
|
||
{{#rollTotal() panicdice 28}}
|
||
<div class="sheet-roll-result" data-i18n="firmware">Firmware malfunction</div>
|
||
<div class="sheet-roll-row" data-i18n="firmwaretext">Roll 1d10 on this table, behaviour is permanent.</div>
|
||
{{/rollTotal() panicdice 28}}
|
||
{{#rollTotal() panicdice 29}}
|
||
<div class="sheet-roll-result" data-i18n="corruption">Data Corruption</div>
|
||
<div class="sheet-roll-row" data-i18n="corruptiontext">Warden takes over character permanently, nightmarish malfunctions.</div>
|
||
{{/rollTotal() panicdice 29}}
|
||
{{#rollGreater() panicdice 29}}
|
||
<div class="sheet-roll-result" data-i18n="slagged">Slagged</div>
|
||
<div class="sheet-roll-row" data-i18n="slaggedtext">Geigeresque-Scanners Head Explosion, everyone present gains a Phobia and 1d10/2 Stress (Fear Save).</div>
|
||
{{/rollGreater() panicdice 29}}
|
||
<div class="sheet-roll-charname">
|
||
{{charname}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-shipcrittable">
|
||
<div class="sheet-roll-panic">
|
||
<div class="sheet-roll-type">
|
||
Ship Critical
|
||
</div>
|
||
<div class="sheet-roll-result">
|
||
{{critdice}}
|
||
</div>
|
||
<div class="sheet-roll-subheader" data-i18n="rollvalue">
|
||
Roll Value
|
||
</div>
|
||
{{#rollLess() critdice 10}}
|
||
<div class="sheet-roll-result">Cargo destroyed</div>
|
||
<div class="sheet-roll-row">1d10 units of cargo are dstroyed.</div>
|
||
{{/rollLess() critdice 10}}
|
||
{{#rollGreater() critdice 9}}{{#rollLess() critdice 15}}
|
||
<div class="sheet-roll-result">Life Support System</div>
|
||
<div class="sheet-roll-row">Reduce Life Support modules by 1.</div>
|
||
{{/rollLess() critdice 15}}{{/rollGreater() critdice 9}}
|
||
{{#rollGreater() critdice 14}}{{#rollLess() critdice 20}}
|
||
<div class="sheet-roll-result">Massive Hull Damage</div>
|
||
<div class="sheet-roll-row">Ship takes x2 Hull Damage. Crew makes Body Saves or takes 1d10 Damage.</div>
|
||
{{/rollLess() critdice 20}}{{/rollGreater() critdice 14}}
|
||
{{#rollGreater() critdice 19}}{{#rollLess() critdice 25}}
|
||
<div class="sheet-roll-result">Armor Breach</div>
|
||
<div class="sheet-roll-row">Ship receives Disadvantage on Armor Saves until repaired.</div>
|
||
{{/rollLess() critdice 25}}{{/rollGreater() critdice 19}}
|
||
{{#rollGreater() critdice 24}}{{#rollLess() critdice 31}}
|
||
<div class="sheet-roll-result">Data Storage Wiped</div>
|
||
<div class="sheet-roll-row">All navigation and research data contained on the ship has been destroyed. The crew no longer knows where they are in space.</div>
|
||
{{/rollLess() critdice 31}}{{/rollGreater() critdice 24}}
|
||
{{#rollGreater() critdice 29}}{{#rollLess() critdice 35}}
|
||
<div class="sheet-roll-result">Thrusters</div>
|
||
<div class="sheet-roll-row">Reduce Thrusters by 1.</div>
|
||
{{/rollLess() critdice 35}}{{/rollGreater() critdice 29}}
|
||
{{#rollGreater() critdice 34}}{{#rollLess() critdice 40}}
|
||
<div class="sheet-roll-result">Random Stateroom</div>
|
||
<div class="sheet-roll-row">Random stateroom or other non-essential room destroyed. Body Save for those in the room to escape or be destroyed.</div>
|
||
{{/rollLess() critdice 40}}{{/rollGreater() critdice 34}}
|
||
{{#rollGreater() critdice 39}}{{#rollLess() critdice 45}}
|
||
<div class="sheet-roll-result">Random Weapon Disabled</div>
|
||
<div class="sheet-roll-row">Weapon cannot fire or function until repaired.</div>
|
||
{{/rollLess() critdice 45}}{{/rollGreater() critdice 39}}
|
||
{{#rollGreater() critdice 44}}{{#rollLess() critdice 50}}
|
||
<div class="sheet-roll-result">Jump Drive</div>
|
||
<div class="sheet-roll-row">Reduce Jump Drive by 1.</div>
|
||
{{/rollLess() critdice 50}}{{/rollGreater() critdice 44}}
|
||
{{#rollGreater() critdice 49}}{{#rollLess() critdice 55}}
|
||
<div class="sheet-roll-result">Engines</div>
|
||
<div class="sheet-roll-row">Reduce Engine by 1.</div>
|
||
{{/rollLess() critdice 55}}{{/rollGreater() critdice 49}}
|
||
{{#rollGreater() critdice 54}}{{#rollLess() critdice 60}}
|
||
<div class="sheet-roll-result">System Overload.</div>
|
||
<div class="sheet-roll-row">Computer and Jump drives cease to work for 1d10 rounds unless repaired. -10% to Combat.</div>
|
||
{{/rollLess() critdice 60}}{{/rollGreater() critdice 54}}
|
||
{{#rollGreater() critdice 59}}{{#rollLess() critdice 65}}
|
||
<div class="sheet-roll-result">Artificial Gravity</div>
|
||
<div class="sheet-roll-row">The artificial gravity in the ship ceases to work and everyone/everything starts floating. Body Saves or take 1d10 damage from the jolt.</div>
|
||
{{/rollLess() critdice 65}}{{/rollGreater() critdice 59}}
|
||
{{#rollGreater() critdice 64}}{{#rollLess() critdice 70}}
|
||
<div class="sheet-roll-result">EMP</div>
|
||
<div class="sheet-roll-row">All systems shut down for 1 round. Androids shut off and can't be rebooted.</div>
|
||
{{/rollLess() critdice 70}}{{/rollGreater() critdice 64}}
|
||
{{#rollGreater() critdice 69}}{{#rollLess() critdice 75}}
|
||
<div class="sheet-roll-result">Cryosleep Chamber</div>
|
||
<div class="sheet-roll-row">1d10 cryosleep chambers destroyed.</div>
|
||
{{/rollLess() critdice 75}}{{/rollGreater() critdice 69}}
|
||
{{#rollGreater() critdice 74}}{{#rollLess() critdice 80}}
|
||
<div class="sheet-roll-result">Hull Breach</div>
|
||
<div class="sheet-roll-row">Ship begins to depressurize (starting in random room) unless airlocks can be secured. Vacuum suits required for all affected areas and Body Save at Disadvantage to avoid being sucked out of the ship if you are in the vicinity of the breach.</div>
|
||
{{/rollLess() critdice 80}}{{/rollGreater() critdice 74}}
|
||
{{#rollGreater() critdice 79}}{{#rollLess() critdice 85}}
|
||
<div class="sheet-roll-result">Navigation Controls</div>
|
||
<div class="sheet-roll-row">Ship cannot change direction without Repair Check.</div>
|
||
{{/rollLess() critdice 85}}{{/rollGreater() critdice 79}}
|
||
{{#rollGreater() critdice 84}}{{#rollLess() critdice 90}}
|
||
<div class="sheet-roll-result">Internal Fire</div>
|
||
<div class="sheet-roll-row">Starts in random room, spreads on room per turn. Destroyes room in 1d10 turns.</div>
|
||
{{/rollLess() critdice 90}}{{/rollGreater() critdice 84}}
|
||
{{#rollGreater() critdice 89}}{{#rollLess() critdice 95}}
|
||
<div class="sheet-roll-result">Systems Reboot.</div>
|
||
<div class="sheet-roll-row">Entire ship ceases to function for 1d10 turns.</div>
|
||
{{/rollLess() critdice 95}}{{/rollGreater() critdice 89}}
|
||
{{#rollGreater() critdice 94}}{{#rollLess() critdice 99}}
|
||
<div class="sheet-roll-result">Cockpit or Bridge Destroyed</div>
|
||
<div class="sheet-roll-row">Body Saves to escape the room before it's destroyed.</div>
|
||
{{/rollLess() critdice 99}}{{/rollGreater() critdice 94}}
|
||
{{#rollTotal() critdice 99}}
|
||
<div class="sheet-roll-result">Fuel Line</div>
|
||
<div class="sheet-roll-row">Ship destroyed in 1d10 turns.</div>
|
||
{{/rollTotal() critdice 99}}
|
||
<div class="sheet-roll-charname">
|
||
{{shipname}}
|
||
</div>
|
||
</div>
|
||
</rolltemplate>
|
||
|
||
|
||
|
||
|
||
|