input(type="hidden", name="attr_ship_class_normalised", value="").ship-class input(type="hidden", name="attr_ship_vehicle_type", value="SHIP").input-type .type.col-2.core-box.flex-between.edit h3(data-i18n="VEHICLE_TYPE") select(name="attr_ship_vehicle_type") each val in ["SHIP", "MECH", "VEHICLE"] option(value=val, data-i18n=val, selected=val==="SHIP") .menus.col-3 .vehicle-type.vehicle-type-ship.flex-between.core-box h3(data-i18n="QUICK_MENUS") input(type="hidden", name="attr_macro_ship_weapons", value="") button(type="roll", name="roll_ship_travel", data-i18n="TRAVEL_TIME", value=`&{template:swn-default} {{system=@{system}}} {{charname=@{ship_name}}} {{title=^{TRAVEL_TIME}}} {{info=It will take [[(?{Traveling Time?|Inside Region, 6|Region to Region, 48}) / ?{Drive Rating?}]] hours}}`).btn //- Ship header .info.core-box-text.flex +text-input("ship_name", "NAME").col40.grow.important .text-input.col25.grow.focusinfo input(type="text", name="attr_ship_hulltype",) .label(data-i18n="HULL_TYPE") +text-input("ship_class", "CLASS").colsixth.vehicle-type.vehicle-type-ship.vehicle-type-mech +text-input("ship_size", "SIZE").colsixth.vehicle-type.vehicle-type-custom +text-input("ship_cargo_tonnage", "CARGO").colsixth.vehicle-type.vehicle-type-ship .grid.grid-flow-col.gap-1.w-full +text-input("ship_ground_speed", "GROUND_SPEED").vehicle-type.vehicle-type-custom +text-input("ship_home_port", "HOME_PORT").vehicle-type.vehicle-type-ship +text-input("ship_price", "COST") .grid.grid-flow-col.gap-1 each val in ["operating_cost", "maintenance_cost", "last_maintenance"] +text-input(`ship_${val}`, val) .data.core-box-text +text-input-duo( "ship_fuel", "ship_fuel_max", "FUEL", {type: "number", min: 0, value: 0})(type="number" min="0" value="0") .vehicle-type.vehicle-type-ship.vehicle-type-custom Fuel each val in ["ac", "speed", "armor"] +text-input(`ship_${val}`, val)(type="number", min="0") +text-input("ship_command_points", "CP_GAIN")(type="number", min="0", value="0") CP Gain +text-input-duo( "ship_life_support", "ship_life_support_max", "LIFE_SUPPORT", {type: "number", min: 0, value: 0})(type="number" min="0" value="0") .vehicle-type.vehicle-type-ship.vehicle-type-custom Life Support +text-input-trio( "ship_crew_min", "ship_crew", "ship_crew_max", "CREW_MIN/CURRENT/MAX", {type: "number", min: 0}, {type: "number", min: 0})(type="number", min="0") .vehicle-type.vehicle-type-ship.vehicle-type-custom Crew Min/Current/Max .stats.core-box-text +text-input-duo("ship_hp", "ship_hp_max", "HIT_POINTS", {min: "0"})(min="0").important input(type="hidden", name="attr_ship_power" value="0").input-color-negative +text-input-duo("ship_power", "ship_power_max", "FREE_POWER", {min: "0", value: "0"})(value="0", readonly) Free Power input(type="hidden", name="attr_ship_mass" value="0").input-color-negative +text-input-duo("ship_mass", "ship_mass_max", "FREE_MASS", {min: "0", value: "0"})(value="0", readonly) Free Mass input(type="hidden", name="attr_ship_hardpoints" value="0").input-color-negative +text-input-duo("ship_hardpoints", "ship_hardpoints_max", "FREE_HARDPOINTS", {min: "0", value: "0"})(value="0", readonly) Free Hardpoints //- Weapons .section +sectionheader("show_ship_weapons", "WEAPONS") .ship-weapons fieldset.repeating_ship-weapons each val in ["api", "price"] input(type="hidden", name=`attr_weapon_${val}`, value="") button(type="roll", name="roll_Attack", value!="&{template:swn-attack} {{system=@{system}}} {{charname=@{ship_name}}} {{title=@{weapon_name} – @{weapon_qualities}}} {{attack=[[1d20 + @{weapon_attack_bonus}[Attack Bonus] @{modifier_query}]]}} {{damage=[[@{weapon_damage}]]}} @{weapon_use_ammo} @{weapon_api}").display.invisible-button .display.grey-box-bordered input(type="hidden", name="attr_weapon_broken", value="0").hider span.broken.space-after #[span(data-i18n="BROKEN")]: span.name.ellipsis.space-after span(name="attr_weapon_name").space-after input(type="hidden", name="attr_weapon_attack_bonus").add-plus span(name="attr_weapon_attack_bonus") span | ( span(name="attr_weapon_damage").space-after span.space-after #[span(data-i18n="DAMAGE").lowercase]; span(name="attr_weapon_qualities") input(type="hidden", name="attr_weapon_range", value="").hide-empty span.vehicle-type.vehicle-type-mech | ; #[span(data-i18n="RANGE")] #[span(name="attr_weapon_range")] | ; #[span(data-i18n="POWER")]  span(name="attr_weapon_power") | , #[span(data-i18n="MASS")]  span(name="attr_weapon_mass") | , #[span(data-i18n="HARDPOINTS")]  span(name="attr_weapon_hardpoints") | ) input(type="hidden", name="attr_weapon_use_ammo", value="0").hider span.vehicle-type.vehicle-type-ship.vehicle-type-custom | . #[span(data-i18n="AMMO")]:  input(type="number", name="attr_weapon_ammo").inline-input |  /  span(name="attr_weapon_ammo_max") .edit.flex-wrap.grey-box-bordered +text-input("weapon_name", "NAME").name.ellipsis each val in ["power", "mass", "hardpoints"] +text-input(`weapon_${val}`, val)(type="number", value="0", min="0").center.number +fake-text-input("BROKEN").center.broken input(type="checkbox", name="attr_weapon_broken", value="1") +text-input("weapon_attack_bonus", "AB")(type="number", value="0").center.number +text-input("weapon_damage", "DAMAGE")(value="0").center.damage +text-input("weapon_qualities", "QUALITIES").qualities.grow +text-input("weapon_range", "RANGE").range.vehicle-type.vehicle-type-mech +text-input-duo("weapon_ammo", "weapon_ammo_max", "", {min: "0"})(min="0").vehicle-type.vehicle-type-ship.vehicle-type-custom label.label input(type="checkbox", name="attr_weapon_use_ammo", value="{{ammo=[[@{weapon_ammo} - 1]] / @{weapon_ammo_max}}}") span(data-i18n="AMMO") //- Fittings .section.cols-2.rows-2 +sectionheader("show_ship_fittings", "FITTING") .ship-fitting fieldset.repeating_ship-fittings input(type="hidden", name="attr_fitting_price") .display input(type="hidden", name="attr_fitting_broken", value="0").hider span.broken.space-after #[span(data-i18n="BROKEN")]: span(name="attr_fitting_name").name.ellipsis.space-after span.space-after | (#[span(data-i18n="POWER")]  span(name="attr_fitting_power") | , #[span(data-i18n="MASS")]  span(name="attr_fitting_mass") | ). span(name="attr_fitting_effect").description .edit.flex.grey-box-bordered +text-input("fitting_name", "NAME").name.ellipsis each val in ["power", "mass"] +text-input(`fitting_${val}`, val)(type="number", value="0").center.number +fake-text-input("EFFECT").effect textarea(name="attr_fitting_effect") +fake-text-input("BROKEN").center.broken input(type="checkbox", name="attr_fitting_broken", value="1") //- Defenses .section +sectionheader("show_ship_defenses", "DEFENSES") .ship-defenses fieldset.repeating_ship-defenses input(type="hidden", name="attr_defense_price") .display input(type="hidden", name="attr_defense_broken", value="0").hider span.broken.space-after #[span(data-i18n="BROKEN")]: span(name="attr_defense_name").name.ellipsis.space-after span.space-after | (#[span(data-i18n="POWER")]  span(name="attr_defense_power") | , #[span(data-i18n="MASS")]  span(name="attr_defense_mass") | ). span(name="attr_defense_effect").description .edit.flex.grey-box-bordered +text-input("defense_name", "NAME").name.ellipsis each val in ["power", "mass"] +text-input(`defense_${val}`, val)(type="number", value="0").center.number +fake-text-input("EFFECT").effect textarea(name="attr_defense_effect") +fake-text-input("BROKEN").center.broken input(type="checkbox", name="attr_defense_broken", value="1") //- Notes .section.cols-3 +sectionheader("show_ship_other)", "NOTES") .halfgrid textarea(name="attr_ship_notes") textarea(name="attr_ship_other_notes")