Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4aa22195a3 | |||
| 7e517bfb12 | |||
| 57706629e1 | |||
| 29cb687bbb | |||
| 973daae15a | |||
| ff180ddd2e | |||
| 585b9a1ab5 | |||
| 4bed84358b | |||
| 666fb4c00a | |||
| ef9c011186 |
BIN
assets/icons/deal.webp
Normal file
BIN
assets/icons/deal.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
BIN
assets/icons/tarot.webp
Normal file
BIN
assets/icons/tarot.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
BIN
assets/ui/sheet_background_01.webp
Normal file
BIN
assets/ui/sheet_background_01.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
File diff suppressed because it is too large
Load Diff
@@ -33,8 +33,7 @@ Hooks.once("init", function () {
|
|||||||
CONFIG.Actor.documentClass = documents.HellbornActor
|
CONFIG.Actor.documentClass = documents.HellbornActor
|
||||||
CONFIG.Actor.dataModels = {
|
CONFIG.Actor.dataModels = {
|
||||||
character: models.HellbornCharacter,
|
character: models.HellbornCharacter,
|
||||||
vehicle: models.HellbornVehicle,
|
enemy: models.HellbornEnemy,
|
||||||
creature: models.HellbornCreature
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG.Item.documentClass = documents.HellbornItem
|
CONFIG.Item.documentClass = documents.HellbornItem
|
||||||
@@ -45,14 +44,15 @@ Hooks.once("init", function () {
|
|||||||
malefica: models.HellbornMalefica,
|
malefica: models.HellbornMalefica,
|
||||||
equipment: models.HellbornEquipment,
|
equipment: models.HellbornEquipment,
|
||||||
armor: models.HellbornArmor,
|
armor: models.HellbornArmor,
|
||||||
|
deal: models.HellbornDeal,
|
||||||
|
tarot: models.HellbornTarot,
|
||||||
"species-trait": models.HellbornSpeciesTrait
|
"species-trait": models.HellbornSpeciesTrait
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet)
|
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet)
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornCharacterSheet , { types: ["character"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornCharacterSheet , { types: ["character"], makeDefault: true })
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornEnemySheet, { types: ["enemy"], makeDefault: true })
|
||||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornCreatureSheet, { types: ["creature"], makeDefault: true })
|
|
||||||
|
|
||||||
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet)
|
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet)
|
||||||
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornWeaponSheet, { types: ["weapon"], makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornWeaponSheet, { types: ["weapon"], makeDefault: true })
|
||||||
@@ -62,6 +62,8 @@ Hooks.once("init", function () {
|
|||||||
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornMaleficaSheet, { types: ["malefica"], makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornMaleficaSheet, { types: ["malefica"], makeDefault: true })
|
||||||
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornSpeciesTraitSheet, { types: ["species-trait"], makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornSpeciesTraitSheet, { types: ["species-trait"], makeDefault: true })
|
||||||
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornArmorSheet, { types: ["armor"], makeDefault: true })
|
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornArmorSheet, { types: ["armor"], makeDefault: true })
|
||||||
|
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornTarotSheet, { types: ["tarot"], makeDefault: true })
|
||||||
|
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornDealSheet, { types: ["deal"], makeDefault: true })
|
||||||
|
|
||||||
// Other Document Configuration
|
// Other Document Configuration
|
||||||
CONFIG.ChatMessage.documentClass = documents.HellbornChatMessage
|
CONFIG.ChatMessage.documentClass = documents.HellbornChatMessage
|
||||||
|
|||||||
696
lang/en.json
696
lang/en.json
@@ -1,41 +1,112 @@
|
|||||||
{
|
{
|
||||||
"HELLBORN": {
|
"HELLBORN": {
|
||||||
|
"Armor": {
|
||||||
|
"FIELDS": {
|
||||||
|
"bonus": {
|
||||||
|
"label": "Bonus"
|
||||||
|
},
|
||||||
|
"cost": {
|
||||||
|
"label": "Cost"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"label": "Description"
|
||||||
|
},
|
||||||
|
"reduction": {
|
||||||
|
"label": "Reduction"
|
||||||
|
},
|
||||||
|
"resilience": {
|
||||||
|
"label": "Resilience"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Enemy": {
|
||||||
|
"FIELDS": {
|
||||||
|
"description": {
|
||||||
|
"label": "Description"
|
||||||
|
},
|
||||||
|
"notes": {
|
||||||
|
"label": "Notes"
|
||||||
|
},
|
||||||
|
"flavorText": {
|
||||||
|
"label": "Flavor Text"
|
||||||
|
},
|
||||||
|
"enemyType" : {
|
||||||
|
"label": "Enemy Type"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Character": {
|
"Character": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
|
"mortality": {
|
||||||
|
"label": "Mortality",
|
||||||
|
"current": {
|
||||||
|
"label": "Mortality"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"limboes": {
|
||||||
|
"label": "Limboes"
|
||||||
|
},
|
||||||
|
"ammo": {
|
||||||
|
"label": "Ammo"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"label": "Age"
|
||||||
|
},
|
||||||
|
"archetype": {
|
||||||
|
"label": "Archetype"
|
||||||
|
},
|
||||||
"armor": {
|
"armor": {
|
||||||
"value": {
|
"value": {
|
||||||
"label": "Protection"
|
"label": "Protection"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"heroPoints": {
|
"biodata": {
|
||||||
"label": "Hero Points"
|
"age": {
|
||||||
},
|
"label": "Age"
|
||||||
"credits": {
|
|
||||||
"label": "Credits"
|
|
||||||
},
|
|
||||||
"enc": {
|
|
||||||
"label": "Enc",
|
|
||||||
"value": {
|
|
||||||
"label": "Enc Curr."
|
|
||||||
},
|
},
|
||||||
"max": {
|
"birthplace": {
|
||||||
"label": "Enc Max"
|
"label": "Birthplace"
|
||||||
|
},
|
||||||
|
"eyes": {
|
||||||
|
"label": "Eyes"
|
||||||
|
},
|
||||||
|
"gender": {
|
||||||
|
"label": "Gender"
|
||||||
|
},
|
||||||
|
"hair": {
|
||||||
|
"label": "Hair"
|
||||||
|
},
|
||||||
|
"height": {
|
||||||
|
"label": "Height"
|
||||||
|
},
|
||||||
|
"home": {
|
||||||
|
"label": "Home"
|
||||||
|
},
|
||||||
|
"label": "Biodata",
|
||||||
|
"weight": {
|
||||||
|
"label": "Weight"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"age": {
|
|
||||||
"label": "Age"
|
|
||||||
},
|
|
||||||
"birthplace": {
|
"birthplace": {
|
||||||
"label": "Birthplace"
|
"label": "Birthplace"
|
||||||
},
|
},
|
||||||
"concept": {
|
"concept": {
|
||||||
"label": "Concept"
|
"label": "Concept"
|
||||||
},
|
},
|
||||||
"species": {
|
"credits": {
|
||||||
"label": "Species"
|
"label": "Credits"
|
||||||
},
|
},
|
||||||
"archetype": {
|
"experience": {
|
||||||
"label": "Archetype"
|
"current": {
|
||||||
|
"label": "Current"
|
||||||
|
},
|
||||||
|
"training": {
|
||||||
|
"label": "Training"
|
||||||
|
},
|
||||||
|
"label": "Experience",
|
||||||
|
"total": {
|
||||||
|
"label": "Total"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"eyes": {
|
"eyes": {
|
||||||
"label": "Eyes"
|
"label": "Eyes"
|
||||||
@@ -46,69 +117,45 @@
|
|||||||
"hair": {
|
"hair": {
|
||||||
"label": "Hair"
|
"label": "Hair"
|
||||||
},
|
},
|
||||||
|
"health": {
|
||||||
|
"label": "Stamina",
|
||||||
|
"staminaMax": {
|
||||||
|
"label": "Max"
|
||||||
|
},
|
||||||
|
"staminaValue": {
|
||||||
|
"label": "Cur."
|
||||||
|
},
|
||||||
|
"wounds": {
|
||||||
|
"label": "Wounds"
|
||||||
|
}
|
||||||
|
},
|
||||||
"height": {
|
"height": {
|
||||||
"label": "Height"
|
"label": "Height"
|
||||||
},
|
},
|
||||||
"home": {
|
"home": {
|
||||||
"label": "Home"
|
"label": "Home"
|
||||||
},
|
},
|
||||||
"biodata": {
|
"pronouns": {
|
||||||
"label": "Biodata",
|
"label": "Pronouns"
|
||||||
"gender": {
|
|
||||||
"label": "Gender"
|
|
||||||
},
|
|
||||||
"height": {
|
|
||||||
"label": "Height"
|
|
||||||
},
|
|
||||||
"weight": {
|
|
||||||
"label": "Weight"
|
|
||||||
},
|
|
||||||
"age": {
|
|
||||||
"label": "Age"
|
|
||||||
},
|
|
||||||
"hair": {
|
|
||||||
"label": "Hair"
|
|
||||||
},
|
|
||||||
"eyes": {
|
|
||||||
"label": "Eyes"
|
|
||||||
},
|
|
||||||
"home": {
|
|
||||||
"label": "Home"
|
|
||||||
},
|
|
||||||
"birthplace": {
|
|
||||||
"label": "Birthplace"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"rank": {
|
"rank": {
|
||||||
"label": "Rank",
|
"elite": {
|
||||||
|
"label": "Elite"
|
||||||
|
},
|
||||||
"experienced": {
|
"experienced": {
|
||||||
"label": "Experienced"
|
"label": "Experienced"
|
||||||
},
|
},
|
||||||
"expert": {
|
"expert": {
|
||||||
"label": "Expert"
|
"label": "Expert"
|
||||||
},
|
},
|
||||||
"veteran": {
|
"label": "Rank",
|
||||||
"label": "Veteran"
|
|
||||||
},
|
|
||||||
"elite": {
|
|
||||||
"label": "Elite"
|
|
||||||
},
|
|
||||||
"legend": {
|
"legend": {
|
||||||
"label": "Legend"
|
"label": "Legend"
|
||||||
|
},
|
||||||
|
"veteran": {
|
||||||
|
"label": "Veteran"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"health": {
|
|
||||||
"staminaValue": {
|
|
||||||
"label": "Cur."
|
|
||||||
},
|
|
||||||
"staminaMax": {
|
|
||||||
"label": "Max"
|
|
||||||
},
|
|
||||||
"wounds": {
|
|
||||||
"label": "Wounds"
|
|
||||||
},
|
|
||||||
"label": "Stamina"
|
|
||||||
},
|
|
||||||
"skills:": {
|
"skills:": {
|
||||||
"combat": {
|
"combat": {
|
||||||
"label": "Combat"
|
"label": "Combat"
|
||||||
@@ -131,60 +178,17 @@
|
|||||||
"vehicles": {
|
"vehicles": {
|
||||||
"label": "Vehicles"
|
"label": "Vehicles"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"species": {
|
||||||
|
"label": "Species"
|
||||||
|
},
|
||||||
|
"trait": {
|
||||||
|
"label": "Trait"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Creature": {
|
"Creature": {
|
||||||
"Niche": {
|
|
||||||
"Prey": "Prey",
|
|
||||||
"Opportunist": "Opportunist",
|
|
||||||
"Herbivore": "Herbivore",
|
|
||||||
"Predator": "Predator"
|
|
||||||
},
|
|
||||||
"Size": {
|
|
||||||
"Tiny": "Tiny",
|
|
||||||
"Small": "Small",
|
|
||||||
"Medium": "Medium",
|
|
||||||
"Large": "Large",
|
|
||||||
"Huge": "Huge",
|
|
||||||
"Giant": "Giant",
|
|
||||||
"Titanic": "Titanic",
|
|
||||||
"Gargantuan": "Gargantuan"
|
|
||||||
},
|
|
||||||
"Terrain": {
|
|
||||||
"Cave": "Cave",
|
|
||||||
"Coast": "Coast",
|
|
||||||
"Desert": "Desert",
|
|
||||||
"Forest": "Forest",
|
|
||||||
"Jungle": "Jungle",
|
|
||||||
"Mountain": "Mountain",
|
|
||||||
"Plains": "Plains",
|
|
||||||
"Swamp": "Swamp",
|
|
||||||
"Urban": "Urban",
|
|
||||||
"Ocean": "Ocean",
|
|
||||||
"Coastal": "Coast",
|
|
||||||
"Mixed": "Mixed",
|
|
||||||
"River": "River",
|
|
||||||
"Ruins": "Ruins",
|
|
||||||
"Savannah": "Savannah",
|
|
||||||
"Shallows" : "Shallows"
|
|
||||||
},
|
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"damage": {
|
|
||||||
"label": "Damage"
|
|
||||||
},
|
|
||||||
"size": {
|
|
||||||
"label": "Size"
|
|
||||||
},
|
|
||||||
"numberAppearing": {
|
|
||||||
"label": "Number Appearing"
|
|
||||||
},
|
|
||||||
"terrain": {
|
|
||||||
"label": "Terrain"
|
|
||||||
},
|
|
||||||
"niche": {
|
|
||||||
"label": "Niche"
|
|
||||||
},
|
|
||||||
"biodata": {
|
"biodata": {
|
||||||
"adaptedToHelplessness": {
|
"adaptedToHelplessness": {
|
||||||
"label": "Adapted to helplessness"
|
"label": "Adapted to helplessness"
|
||||||
@@ -241,9 +245,18 @@
|
|||||||
"label": "Strength"
|
"label": "Strength"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"damage": {
|
||||||
|
"label": "Damage"
|
||||||
|
},
|
||||||
"damageBonus": {
|
"damageBonus": {
|
||||||
"label": "Dmg.Bonus"
|
"label": "Dmg.Bonus"
|
||||||
},
|
},
|
||||||
|
"niche": {
|
||||||
|
"label": "Niche"
|
||||||
|
},
|
||||||
|
"numberAppearing": {
|
||||||
|
"label": "Number Appearing"
|
||||||
|
},
|
||||||
"resources": {
|
"resources": {
|
||||||
"hand": {
|
"hand": {
|
||||||
"label": "Hand"
|
"label": "Hand"
|
||||||
@@ -257,16 +270,56 @@
|
|||||||
"stowed": {
|
"stowed": {
|
||||||
"label": "Stowed"
|
"label": "Stowed"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"label": "Size"
|
||||||
|
},
|
||||||
|
"terrain": {
|
||||||
|
"label": "Terrain"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Niche": {
|
||||||
|
"Herbivore": "Herbivore",
|
||||||
|
"Opportunist": "Opportunist",
|
||||||
|
"Predator": "Predator",
|
||||||
|
"Prey": "Prey"
|
||||||
|
},
|
||||||
|
"Size": {
|
||||||
|
"Gargantuan": "Gargantuan",
|
||||||
|
"Giant": "Giant",
|
||||||
|
"Huge": "Huge",
|
||||||
|
"Large": "Large",
|
||||||
|
"Medium": "Medium",
|
||||||
|
"Small": "Small",
|
||||||
|
"Tiny": "Tiny",
|
||||||
|
"Titanic": "Titanic"
|
||||||
|
},
|
||||||
|
"Terrain": {
|
||||||
|
"Cave": "Cave",
|
||||||
|
"Coast": "Coast",
|
||||||
|
"Coastal": "Coast",
|
||||||
|
"Desert": "Desert",
|
||||||
|
"Forest": "Forest",
|
||||||
|
"Jungle": "Jungle",
|
||||||
|
"Mixed": "Mixed",
|
||||||
|
"Mountain": "Mountain",
|
||||||
|
"Ocean": "Ocean",
|
||||||
|
"Plains": "Plains",
|
||||||
|
"River": "River",
|
||||||
|
"Ruins": "Ruins",
|
||||||
|
"Savannah": "Savannah",
|
||||||
|
"Shallows": "Shallows",
|
||||||
|
"Swamp": "Swamp",
|
||||||
|
"Urban": "Urban"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"SpeciesTrait": {
|
"Deal": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"description": {
|
"description": {
|
||||||
"label": "Description"
|
"label": "Description"
|
||||||
},
|
},
|
||||||
"isAdvantage": {
|
"promisor": {
|
||||||
"label": "Provide advantage"
|
"label": "Promisor"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -289,6 +342,180 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Label": {
|
||||||
|
"addArmor": "Add Armor",
|
||||||
|
"addPerk": "Add Perk",
|
||||||
|
"addRitual": "Add Ritual",
|
||||||
|
"addSpeciesTrait": "Add Trait",
|
||||||
|
"addTarot": "Add Tarot",
|
||||||
|
"addMalefica": "Add Malefica",
|
||||||
|
"addTrait": "Add Trait",
|
||||||
|
"newMalefica": "New Malefica",
|
||||||
|
"newPerk": "New Perk",
|
||||||
|
"newRitual": "New Ritual",
|
||||||
|
"newSpeciesTrait": "New Trait",
|
||||||
|
"newTarot": "New Tarot",
|
||||||
|
"titleStat": "Stat Roll Dialog",
|
||||||
|
"difficulty": "Difficulty",
|
||||||
|
"unknown": "Unknown",
|
||||||
|
"statRoll": "Stat Roll",
|
||||||
|
"stat": "Stat",
|
||||||
|
"formula": "Formula",
|
||||||
|
"characteristics": "Characteristics",
|
||||||
|
"deals": "Deals",
|
||||||
|
"tarot": "Tarot",
|
||||||
|
"backstory": "Backstory",
|
||||||
|
"scars": "Scars",
|
||||||
|
"likes": "Likes",
|
||||||
|
"dislikes": "Dislikes",
|
||||||
|
"fears": "Fears",
|
||||||
|
"vices": "Vices",
|
||||||
|
"goals": "Goals",
|
||||||
|
"ambitions": "Ambitions",
|
||||||
|
"values": "Values",
|
||||||
|
"bonds": "Bonds",
|
||||||
|
"abilities": "Abilities",
|
||||||
|
"Agility": "Agility",
|
||||||
|
"ailments": "Ailments",
|
||||||
|
"appearance": "Appearance",
|
||||||
|
"armor": "Armor",
|
||||||
|
"Armor": "Armor",
|
||||||
|
"armors": "Armors",
|
||||||
|
"biodata": "Biodata",
|
||||||
|
"biography": "Biography",
|
||||||
|
"capacity": "Capacity",
|
||||||
|
"cargo": "Cargo",
|
||||||
|
"character": "Character",
|
||||||
|
"combat": "Combat",
|
||||||
|
"Counters": "Counters",
|
||||||
|
"creature": "Creature",
|
||||||
|
"fiendishSuccess": "Fiendish Failure",
|
||||||
|
"satanicSuccess": "Satanic Success",
|
||||||
|
"bonus": "Bonus",
|
||||||
|
"penalty": "Penalty",
|
||||||
|
"quote": "Quote",
|
||||||
|
"current": "Curr.",
|
||||||
|
"damage": "Damage",
|
||||||
|
"damages": "Damages",
|
||||||
|
"damageShort": "Dmg",
|
||||||
|
"description": "Description",
|
||||||
|
"Details": "Details",
|
||||||
|
"Difficult": "Difficult (-1D)",
|
||||||
|
"Easy": "Easy (+1D)",
|
||||||
|
"equipment": "Equipment",
|
||||||
|
"equipments": "Equipment",
|
||||||
|
"experience": "Experience",
|
||||||
|
"failure": "Failure",
|
||||||
|
"finalScore": "Final Score",
|
||||||
|
"flesh": "Flesh",
|
||||||
|
"Formidable": "Formidable (-2D)",
|
||||||
|
"heart": "Heart",
|
||||||
|
"HP": "HP",
|
||||||
|
"implants": "Implants",
|
||||||
|
"Impossible": "Impossible (-4D)",
|
||||||
|
"knowledge": "Knowledge",
|
||||||
|
"languages": "Languages",
|
||||||
|
"maleficas": "Maleficas",
|
||||||
|
"malus": "Malus",
|
||||||
|
"max": "Max",
|
||||||
|
"maximum": "Maximum",
|
||||||
|
"mind": "Mind",
|
||||||
|
"Moderate": "Moderate (+0D)",
|
||||||
|
"modifications": "Modifications",
|
||||||
|
"modifier": "Modifier",
|
||||||
|
"multiplier": "Multiplier",
|
||||||
|
"negativeEffect": "Negative Effect",
|
||||||
|
"newAbility": "New Ability",
|
||||||
|
"newArmor": "New Armor",
|
||||||
|
"newCreatureAbility": "New Creature Ability",
|
||||||
|
"newCreatureTrait": "New Creature Trait",
|
||||||
|
"newEquipment": "New Equipment",
|
||||||
|
"newImplant": "New Implant",
|
||||||
|
"newLanguage": "New Language",
|
||||||
|
"newPsionic": "New Psionic",
|
||||||
|
"newSkill": "New Skill",
|
||||||
|
"newTalent": "New Talent",
|
||||||
|
"newTrait": "New Trait",
|
||||||
|
"newWeapon": "New Weapon",
|
||||||
|
"notes": "Notes",
|
||||||
|
"perks": "Perks",
|
||||||
|
"physical": "Physical",
|
||||||
|
"positiveEffect": "Positive Effect",
|
||||||
|
"psionics": "Psionics",
|
||||||
|
"Rank": "Rank",
|
||||||
|
"rituals": "Rituals",
|
||||||
|
"rollView": "Roll View",
|
||||||
|
"skill": "Skill",
|
||||||
|
"skillRoll": "Skill Roll",
|
||||||
|
"skills": "Skills",
|
||||||
|
"skin": "Skin",
|
||||||
|
"social": "Social",
|
||||||
|
"soul": "Soul",
|
||||||
|
"species": "Species",
|
||||||
|
"speciesTraits": "Species Traits",
|
||||||
|
"Stamina": "Stamina",
|
||||||
|
"starship": "Starship",
|
||||||
|
"stats": "Stats",
|
||||||
|
"status": "Status",
|
||||||
|
"stealth": "Stealth",
|
||||||
|
"success": "Success",
|
||||||
|
"talents": "Talents",
|
||||||
|
"targetScore": "Target Score",
|
||||||
|
"technology": "Technology",
|
||||||
|
"titleSkill": "Skill Roll",
|
||||||
|
"titleWeapon": "Weapon Roll",
|
||||||
|
"total": "Total",
|
||||||
|
"totalScore": "Total Score",
|
||||||
|
"traits": "Traits",
|
||||||
|
"trauma": "Trauma",
|
||||||
|
"Unarmed": "Unarmed",
|
||||||
|
"vehicle": "Vehicle",
|
||||||
|
"Vehicle": "Vehicle",
|
||||||
|
"vehicles": "Vehicles",
|
||||||
|
"weapons": "Weapons"
|
||||||
|
},
|
||||||
|
"Malefica": {
|
||||||
|
"FIELDS": {
|
||||||
|
"description": {
|
||||||
|
"label": "Description"
|
||||||
|
},
|
||||||
|
"domain": {
|
||||||
|
"label": "Domain"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"label": "Level"
|
||||||
|
},
|
||||||
|
"range": {
|
||||||
|
"label": "Range"
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"label": "Target"
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"label": "Time"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Notifications": {
|
||||||
|
"tarotDeleted": "Previous Tarot card deleted : ",
|
||||||
|
"speciesTraitDeleted": "Previous Species Trait deleted : "
|
||||||
|
},
|
||||||
|
"Perk": {
|
||||||
|
"FIELDS": {
|
||||||
|
"description": {
|
||||||
|
"label": "Description"
|
||||||
|
},
|
||||||
|
"flavorText": {
|
||||||
|
"label": "Flavor Text"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"label": "Level"
|
||||||
|
},
|
||||||
|
"role": {
|
||||||
|
"label": "Role"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Ritual": {
|
"Ritual": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"cost": {
|
"cost": {
|
||||||
@@ -300,8 +527,8 @@
|
|||||||
"difficulty": {
|
"difficulty": {
|
||||||
"label": "Difficulty"
|
"label": "Difficulty"
|
||||||
},
|
},
|
||||||
"threshold": {
|
"ingredients": {
|
||||||
"label": "Threshold"
|
"label": "Ingredients"
|
||||||
},
|
},
|
||||||
"limit": {
|
"limit": {
|
||||||
"label": "Limit"
|
"label": "Limit"
|
||||||
@@ -309,131 +536,8 @@
|
|||||||
"nbAttempts": {
|
"nbAttempts": {
|
||||||
"label": "Nb Attempts"
|
"label": "Nb Attempts"
|
||||||
},
|
},
|
||||||
"ingredients": {
|
"threshold": {
|
||||||
"label": "Ingredients"
|
"label": "Threshold"
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Label": {
|
|
||||||
"damages": "Damages",
|
|
||||||
"modifications": "Modifications",
|
|
||||||
"abilities": "Abilities",
|
|
||||||
"Details": "Details",
|
|
||||||
"traits": "Traits",
|
|
||||||
"capacity" : "Capacity",
|
|
||||||
"Agility" : "Agility",
|
|
||||||
"Armor": "Armor",
|
|
||||||
"cargo": "Cargo",
|
|
||||||
"vehicle": "Vehicle",
|
|
||||||
"starship": "Starship",
|
|
||||||
"Easy": "Easy (+1D)",
|
|
||||||
"Moderate": "Moderate (+0D)",
|
|
||||||
"Difficult": "Difficult (-1D)",
|
|
||||||
"Formidable": "Formidable (-2D)",
|
|
||||||
"Impossible": "Impossible (-4D)",
|
|
||||||
"combat": "Combat",
|
|
||||||
"physical": "Physical",
|
|
||||||
"social": "Social",
|
|
||||||
"stealth": "Stealth",
|
|
||||||
"technology": "Technology",
|
|
||||||
"vehicles": "Vehicles",
|
|
||||||
"knowledge": "Knowledge",
|
|
||||||
"Stamina": "Stamina",
|
|
||||||
"equipments": "Equipment",
|
|
||||||
"Rank": "Rank",
|
|
||||||
"HP": "HP",
|
|
||||||
"Unarmed": "Unarmed",
|
|
||||||
"Vehicle": "Vehicle",
|
|
||||||
"armor": "Armor",
|
|
||||||
"armors": "Armors",
|
|
||||||
"biodata": "Biodata",
|
|
||||||
"biography": "Biography",
|
|
||||||
"character": "Character",
|
|
||||||
"creature": "Creature",
|
|
||||||
"criticalFailure": "Critical Failure",
|
|
||||||
"criticalSuccess": "Critical Success",
|
|
||||||
"current": "Curr.",
|
|
||||||
"damage": "Damage",
|
|
||||||
"damageShort": "Dmg",
|
|
||||||
"description": "Description",
|
|
||||||
"equipment": "Equipment",
|
|
||||||
"experience": "Experience",
|
|
||||||
"failure": "Failure",
|
|
||||||
"finalScore": "Final Score",
|
|
||||||
"languages": "Languages",
|
|
||||||
"malus": "Malus",
|
|
||||||
"max": "Max",
|
|
||||||
"maximum": "Maximum",
|
|
||||||
"modifier": "Modifier",
|
|
||||||
"multiplier": "Multiplier",
|
|
||||||
"newArmor": "New Armor",
|
|
||||||
"newWeapon": "New Weapon",
|
|
||||||
"newTalent": "New Talent",
|
|
||||||
"newTrait": "New Trait",
|
|
||||||
"newAbility": "New Ability",
|
|
||||||
"newSkill": "New Skill",
|
|
||||||
"newImplant": "New Implant",
|
|
||||||
"newEquipment": "New Equipment",
|
|
||||||
"newLanguage": "New Language",
|
|
||||||
"newPsionic": "New Psionic",
|
|
||||||
"newCreatureAbility": "New Creature Ability",
|
|
||||||
"newCreatureTrait": "New Creature Trait",
|
|
||||||
"notes": "Notes",
|
|
||||||
"psionics": "Psionics",
|
|
||||||
"rollView": "Roll View",
|
|
||||||
"skill": "Skill",
|
|
||||||
"skillRoll": "Skill Roll",
|
|
||||||
"skills": "Skills",
|
|
||||||
"status": "Status",
|
|
||||||
"success": "Success",
|
|
||||||
"talents": "Talents",
|
|
||||||
"implants": "Implants",
|
|
||||||
"targetScore": "Target Score",
|
|
||||||
"titleSkill": "Skill Roll",
|
|
||||||
"titleWeapon": "Weapon Roll",
|
|
||||||
"total": "Total",
|
|
||||||
"totalScore": "Total Score",
|
|
||||||
"weapons": "Weapons"
|
|
||||||
},
|
|
||||||
"Notifications": {},
|
|
||||||
"Armor": {
|
|
||||||
"FIELDS": {
|
|
||||||
"bonus": {
|
|
||||||
"label": "Bonus"
|
|
||||||
},
|
|
||||||
"cost": {
|
|
||||||
"label": "Cost"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"label": "Description"
|
|
||||||
},
|
|
||||||
"resilience": {
|
|
||||||
"label": "Resilience"
|
|
||||||
},
|
|
||||||
"reduction": {
|
|
||||||
"label": "Reduction"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Malefica": {
|
|
||||||
"FIELDS": {
|
|
||||||
"description": {
|
|
||||||
"label": "Description"
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"label": "Time"
|
|
||||||
},
|
|
||||||
"range":{
|
|
||||||
"label": "Range"
|
|
||||||
},
|
|
||||||
"target": {
|
|
||||||
"label": "Target"
|
|
||||||
},
|
|
||||||
"level":{
|
|
||||||
"label": "Level"
|
|
||||||
},
|
|
||||||
"domain": {
|
|
||||||
"label": "Domain"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -442,46 +546,50 @@
|
|||||||
"roll": "Roll",
|
"roll": "Roll",
|
||||||
"skill": "Skill"
|
"skill": "Skill"
|
||||||
},
|
},
|
||||||
"Perk": {
|
"SpeciesTrait": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"level": {
|
"description": {
|
||||||
"label": "Level"
|
"label": "Description"
|
||||||
},
|
},
|
||||||
"role": {
|
"isAdvantage": {
|
||||||
"label": "Role"
|
"label": "Provide advantage"
|
||||||
},
|
}
|
||||||
"flavorText": {
|
}
|
||||||
"label": "Flavor Text"
|
},
|
||||||
|
"Tarot": {
|
||||||
|
"FIELDS": {
|
||||||
|
"bonus": {
|
||||||
|
"label": "Bonus"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"label": "Description"
|
"label": "Description"
|
||||||
|
},
|
||||||
|
"orientation": {
|
||||||
|
"label": "Orientation"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ToggleSheet": "Toggle Sheet",
|
"ToggleSheet": "Toggle Sheet",
|
||||||
"Tooltip": {
|
"Tooltip": {
|
||||||
"addTalent" : "Add Talent",
|
"addArmor": "Add Armor",
|
||||||
"addSkill" : "Add Skill",
|
"addCreatureAbility": "Add Creature Ability",
|
||||||
"addWeapon" : "Add Weapon",
|
"addCreatureTrait": "Add Creature Trait",
|
||||||
"addArmor" : "Add Armor",
|
"addEquipment": "Add Equipment",
|
||||||
"addEquipment" : "Add Equipment",
|
"addImplant": "Add Implant",
|
||||||
"addImplant" : "Add Implant",
|
"addLanguage": "Add Language",
|
||||||
"addLanguage" : "Add Language",
|
"addPsionic": "Add Psionic",
|
||||||
"addPsionic" : "Add Psionic",
|
"addSkill": "Add Skill",
|
||||||
"addCreatureAbility" : "Add Creature Ability",
|
"addTalent": "Add Talent",
|
||||||
"addCreatureTrait" : "Add Creature Trait",
|
"addWeapon": "Add Weapon",
|
||||||
"damages": "Enter current damages suffered"
|
"damages": "Enter current damages suffered"
|
||||||
},
|
},
|
||||||
"Vehicle": {
|
"Vehicle": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
"tonnage": {
|
|
||||||
"label": "Tonnage"
|
|
||||||
},
|
|
||||||
"agility": {
|
"agility": {
|
||||||
"label": "Agility"
|
"label": "Agility"
|
||||||
},
|
},
|
||||||
"force": {
|
"armor": {
|
||||||
"label": "Force"
|
"label": "Armor"
|
||||||
},
|
},
|
||||||
"cargo": {
|
"cargo": {
|
||||||
"label": "Cargo"
|
"label": "Cargo"
|
||||||
@@ -489,28 +597,34 @@
|
|||||||
"cost": {
|
"cost": {
|
||||||
"label": "Cost"
|
"label": "Cost"
|
||||||
},
|
},
|
||||||
"range": {
|
|
||||||
"label": "Range"
|
|
||||||
},
|
|
||||||
"speed": {
|
|
||||||
"label": "Speed"
|
|
||||||
},
|
|
||||||
"armor": {
|
|
||||||
"label": "Armor"
|
|
||||||
},
|
|
||||||
"crew": {
|
"crew": {
|
||||||
"label": "Crew"
|
"label": "Crew"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"label": "Description"
|
"label": "Description"
|
||||||
},
|
},
|
||||||
|
"force": {
|
||||||
|
"label": "Force"
|
||||||
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"label": "Notes"
|
"label": "Notes"
|
||||||
|
},
|
||||||
|
"range": {
|
||||||
|
"label": "Range"
|
||||||
|
},
|
||||||
|
"speed": {
|
||||||
|
"label": "Speed"
|
||||||
|
},
|
||||||
|
"tonnage": {
|
||||||
|
"label": "Tonnage"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Weapon": {
|
"Weapon": {
|
||||||
"FIELDS": {
|
"FIELDS": {
|
||||||
|
"ammo": {
|
||||||
|
"label": "Ammo"
|
||||||
|
},
|
||||||
"cost": {
|
"cost": {
|
||||||
"label": "Cost"
|
"label": "Cost"
|
||||||
},
|
},
|
||||||
@@ -520,29 +634,26 @@
|
|||||||
"description": {
|
"description": {
|
||||||
"label": "Description"
|
"label": "Description"
|
||||||
},
|
},
|
||||||
"subType": {
|
"properties": {
|
||||||
"label": "Sub-Type"
|
"label": "Properties"
|
||||||
},
|
},
|
||||||
"range": {
|
"range": {
|
||||||
"label": "Range"
|
"label": "Range"
|
||||||
},
|
},
|
||||||
"properties": {
|
"subType": {
|
||||||
"label": "Properties"
|
"label": "Sub-Type"
|
||||||
},
|
|
||||||
"ammo": {
|
|
||||||
"label": "Ammo"
|
|
||||||
},
|
},
|
||||||
"weaponType": {
|
"weaponType": {
|
||||||
"label": "Type"
|
"label": "Type"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Range": {
|
"Range": {
|
||||||
"Handgun": "Handgun",
|
|
||||||
"Assault": "Assault",
|
"Assault": "Assault",
|
||||||
|
"Handgun": "Handgun",
|
||||||
|
"HeavyWeapon": "Heavy Weapon",
|
||||||
"LongRange": "Long Range",
|
"LongRange": "Long Range",
|
||||||
"Melee": "Melee",
|
"Melee": "Melee",
|
||||||
"Rifle": "Rifle",
|
"Rifle": "Rifle",
|
||||||
"HeavyWeapon": "Heavy Weapon",
|
|
||||||
"ThrownWeapon": "Thrown Weapon"
|
"ThrownWeapon": "Thrown Weapon"
|
||||||
},
|
},
|
||||||
"Types": {
|
"Types": {
|
||||||
@@ -558,21 +669,18 @@
|
|||||||
"TYPES": {
|
"TYPES": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"character": "Character",
|
"character": "Character",
|
||||||
"creature": "Creature",
|
"enemy": "Enemy"
|
||||||
"vehicle": "Vehicle"
|
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"species-trait": "Species Trait",
|
"armor": "Armor",
|
||||||
|
"deal": "Deal",
|
||||||
"equipment": "Equipment",
|
"equipment": "Equipment",
|
||||||
"ritual": "Ritual",
|
|
||||||
"malefica": "Malefica",
|
"malefica": "Malefica",
|
||||||
"perk": "Perk",
|
"perk": "Perk",
|
||||||
"weapon": "Weapon",
|
"ritual": "Ritual",
|
||||||
"armor": "Armor"
|
"species-trait": "Trait",
|
||||||
|
"tarot": "Tarot",
|
||||||
|
"weapon": "Weapon"
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
export { default as HellbornWeaponSheet } from "./sheets/weapon-sheet.mjs"
|
export { default as HellbornWeaponSheet } from "./sheets/weapon-sheet.mjs"
|
||||||
export { default as HellbornVehicleSheet } from "./sheets/vehicle-sheet.mjs"
|
|
||||||
export { default as HellbornCharacterSheet } from "./sheets/character-sheet.mjs"
|
export { default as HellbornCharacterSheet } from "./sheets/character-sheet.mjs"
|
||||||
export { default as HellbornEquipmentSheet } from "./sheets/equipment-sheet.mjs"
|
export { default as HellbornEquipmentSheet } from "./sheets/equipment-sheet.mjs"
|
||||||
export { default as HellbornCreatureSheet } from "./sheets/creature-sheet.mjs"
|
export { default as HellbornEnemySheet } from "./sheets/enemy-sheet.mjs"
|
||||||
export { default as HellbornRitualSheet } from "./sheets/ritual-sheet.mjs"
|
export { default as HellbornRitualSheet } from "./sheets/ritual-sheet.mjs"
|
||||||
export { default as HellbornItemSheet } from "./sheets/base-item-sheet.mjs"
|
export { default as HellbornItemSheet } from "./sheets/base-item-sheet.mjs"
|
||||||
export { default as HellbornSpeciesTraitSheet } from "./sheets/species-trait-sheet.mjs"
|
export { default as HellbornSpeciesTraitSheet } from "./sheets/species-trait-sheet.mjs"
|
||||||
export { default as HellbornPerkSheet } from "./sheets/perk-sheet.mjs"
|
export { default as HellbornPerkSheet } from "./sheets/perk-sheet.mjs"
|
||||||
export { default as HellbornMaleficaSheet } from "./sheets/malefica-sheet.mjs"
|
export { default as HellbornMaleficaSheet } from "./sheets/malefica-sheet.mjs"
|
||||||
export { default as HellbornArmorSheet } from "./sheets/armor-sheet.mjs"
|
export { default as HellbornArmorSheet } from "./sheets/armor-sheet.mjs"
|
||||||
|
export { default as HellbornTarotSheet } from "./sheets/tarot-sheet.mjs"
|
||||||
|
export { default as HellbornDealSheet } from "./sheets/deal-sheet.mjs"
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
|||||||
editImage: HellbornActorSheet.#onEditImage,
|
editImage: HellbornActorSheet.#onEditImage,
|
||||||
toggleSheet: HellbornActorSheet.#onToggleSheet,
|
toggleSheet: HellbornActorSheet.#onToggleSheet,
|
||||||
edit: HellbornActorSheet.#onItemEdit,
|
edit: HellbornActorSheet.#onItemEdit,
|
||||||
delete: HellbornActorSheet.#onItemDelete
|
delete: HellbornActorSheet.#onItemDelete,
|
||||||
|
updateCheckboxArray: HellbornActorSheet.#onUpdateCheckboxArray,
|
||||||
|
toChat: HellbornActorSheet.#toChat,
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,8 +69,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
|||||||
actor: this.document,
|
actor: this.document,
|
||||||
system: this.document.system,
|
system: this.document.system,
|
||||||
source: this.document.toObject(),
|
source: this.document.toObject(),
|
||||||
isEncumbered: this.document.system.isEncumbered(),
|
enrichedBackstory: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.backstory, { async: true }),
|
||||||
enrichedDescription: await TextEditor.enrichHTML(this.document.system.description, { async: true }),
|
|
||||||
isEditMode: this.isEditMode,
|
isEditMode: this.isEditMode,
|
||||||
isPlayMode: this.isPlayMode,
|
isPlayMode: this.isPlayMode,
|
||||||
isEditable: this.isEditable,
|
isEditable: this.isEditable,
|
||||||
@@ -99,7 +101,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
|||||||
dragover: this._onDragOver.bind(this),
|
dragover: this._onDragOver.bind(this),
|
||||||
drop: this._onDrop.bind(this),
|
drop: this._onDrop.bind(this),
|
||||||
}
|
}
|
||||||
return new DragDrop(d)
|
return new foundry.applications.ux.DragDrop.implementation(d)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +139,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
|||||||
* @param {DragEvent} event The originating DragEvent
|
* @param {DragEvent} event The originating DragEvent
|
||||||
* @protected
|
* @protected
|
||||||
*/
|
*/
|
||||||
_onDragOver(event) {}
|
_onDragOver(event) { }
|
||||||
|
|
||||||
async _onDropItem(item) {
|
async _onDropItem(item) {
|
||||||
console.log("Dropped item", item)
|
console.log("Dropped item", item)
|
||||||
@@ -185,6 +187,40 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
|||||||
return fp.browse()
|
return fp.browse()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static #onUpdateCheckboxArray(event, target) {
|
||||||
|
console.log("Update checkbox array", event, target)
|
||||||
|
let arrayName = target.dataset.name
|
||||||
|
let arrayIdx = Number(target.dataset.index)
|
||||||
|
let dataPath = `system.mortality.${arrayName}`
|
||||||
|
let tab = foundry.utils.duplicate(this.document.system.mortality[arrayName])
|
||||||
|
tab[arrayIdx] = target.checked
|
||||||
|
this.actor.update({ [dataPath]: tab })
|
||||||
|
}
|
||||||
|
|
||||||
|
static async #toChat(event, target) {
|
||||||
|
const itemUuid = target.getAttribute("data-item-uuid")
|
||||||
|
const item = fromUuidSync(itemUuid)
|
||||||
|
if (!item) return
|
||||||
|
let content = ""
|
||||||
|
if (item.type === "perk") {
|
||||||
|
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-perk.hbs", item.toObject())
|
||||||
|
}
|
||||||
|
if (item.type === "malefica") {
|
||||||
|
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-malefica.hbs", item.toObject())
|
||||||
|
}
|
||||||
|
if (item.type === "ritual") {
|
||||||
|
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-ritual.hbs", item.toObject())
|
||||||
|
}
|
||||||
|
const chatData = {
|
||||||
|
user: game.user.id,
|
||||||
|
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
|
||||||
|
content: content,
|
||||||
|
type: CONST.CHAT_MESSAGE_TYPES.OTHER,
|
||||||
|
}
|
||||||
|
ChatMessage.create(chatData, { renderSheet: false })
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit an existing item within the Actor
|
* Edit an existing item within the Actor
|
||||||
* Start with the uuid, if it's not found, fallback to the id (as Embedded item in the actor)
|
* Start with the uuid, if it's not found, fallback to the id (as Embedded item in the actor)
|
||||||
|
|||||||
@@ -15,11 +15,10 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
createEquipment: HellbornCharacterSheet.#onCreateEquipment,
|
createEquipment: HellbornCharacterSheet.#onCreateEquipment,
|
||||||
createArmor: HellbornCharacterSheet.#onCreateArmor,
|
createArmor: HellbornCharacterSheet.#onCreateArmor,
|
||||||
createWeapon: HellbornCharacterSheet.#onCreateWeapon,
|
createWeapon: HellbornCharacterSheet.#onCreateWeapon,
|
||||||
createTalent: HellbornCharacterSheet.#onCreateTalent,
|
createDeal: HellbornCharacterSheet.#onCreateDeal,
|
||||||
createImplant: HellbornCharacterSheet.#onCreateImplant,
|
createMalefica: HellbornCharacterSheet.#onCreateMalefica,
|
||||||
createPsionic: HellbornCharacterSheet.#onCreatePsionic,
|
createRitual: HellbornCharacterSheet.#onCreateRitual,
|
||||||
createLanguage: HellbornCharacterSheet.#onCreateLanguage
|
createPerk: HellbornCharacterSheet.#onCreatePerk,
|
||||||
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,8 +30,11 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
tabs: {
|
tabs: {
|
||||||
template: "templates/generic/tab-navigation.hbs",
|
template: "templates/generic/tab-navigation.hbs",
|
||||||
},
|
},
|
||||||
talents: {
|
status: {
|
||||||
template: "systems/fvtt-hellborn/templates/character-talents.hbs",
|
template: "systems/fvtt-hellborn/templates/character-status.hbs",
|
||||||
|
},
|
||||||
|
maleficas: {
|
||||||
|
template: "systems/fvtt-hellborn/templates/character-maleficas.hbs",
|
||||||
},
|
},
|
||||||
equipment: {
|
equipment: {
|
||||||
template: "systems/fvtt-hellborn/templates/character-equipment.hbs",
|
template: "systems/fvtt-hellborn/templates/character-equipment.hbs",
|
||||||
@@ -44,7 +46,7 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
tabGroups = {
|
tabGroups = {
|
||||||
sheet: "talents",
|
sheet: "status",
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,7 +55,8 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
*/
|
*/
|
||||||
#getTabs() {
|
#getTabs() {
|
||||||
const tabs = {
|
const tabs = {
|
||||||
talents: { id: "talents", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.talents" },
|
status: { id: "status", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.status" },
|
||||||
|
maleficas: { id: "maleficas", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.maleficas" },
|
||||||
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "HELLBORN.Label.equipment" },
|
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "HELLBORN.Label.equipment" },
|
||||||
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "HELLBORN.Label.biography" },
|
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "HELLBORN.Label.biography" },
|
||||||
}
|
}
|
||||||
@@ -69,8 +72,10 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.tabs = this.#getTabs()
|
context.tabs = this.#getTabs()
|
||||||
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
const doc = this.document
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
context.trait = doc.itemTypes['species-trait']?.[0]
|
||||||
|
context.upright = doc.itemTypes.tarot.find(t => t.system.orientation === "Upright")
|
||||||
|
context.downright = doc.itemTypes.tarot.find(t => t.system.orientation === "Downright")
|
||||||
|
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
@@ -78,19 +83,33 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _preparePartContext(partId, context) {
|
async _preparePartContext(partId, context) {
|
||||||
const doc = this.document
|
const doc = this.document
|
||||||
|
context.systemFields = this.document.system.schema.fields
|
||||||
switch (partId) {
|
switch (partId) {
|
||||||
case "main":
|
case "main":
|
||||||
break
|
break
|
||||||
case "talents":
|
case "status":
|
||||||
context.tab = context.tabs.talents
|
context.tab = context.tabs.status
|
||||||
context.talents = doc.itemTypes.talent
|
context.perks = doc.itemTypes.perk
|
||||||
context.talents.sort((a, b) => a.name.localeCompare(b.name))
|
// Sort the perks by system.role and then by the system.level
|
||||||
context.implants = doc.itemTypes.implant
|
context.perks.sort((a, b) => {
|
||||||
context.implants.sort((a, b) => a.name.localeCompare(b.name))
|
if (a.system.role === b.system.role) {
|
||||||
context.psionics = doc.itemTypes.psionic
|
return a.system.level.localeCompare(b.system.level)
|
||||||
context.psionics.sort((a, b) => a.name.localeCompare(b.name))
|
}
|
||||||
context.languages = doc.itemTypes.language
|
return a.system.role.localeCompare(b.system.role)
|
||||||
context.languages.sort((a, b) => a.name.localeCompare(b.name))
|
})
|
||||||
|
break;
|
||||||
|
case "maleficas":
|
||||||
|
context.tab = context.tabs.maleficas
|
||||||
|
context.maleficas = doc.itemTypes.malefica
|
||||||
|
// Sort the maleficas by system.domain and then by the system.level
|
||||||
|
context.maleficas.sort((a, b) => {
|
||||||
|
if (a.system.domain === b.system.domain) {
|
||||||
|
return a.system.level.localeCompare(b.system.level)
|
||||||
|
}
|
||||||
|
return a.system.domain.localeCompare(b.system.domain)
|
||||||
|
})
|
||||||
|
context.rituals = doc.itemTypes.ritual
|
||||||
|
context.rituals.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
break
|
break
|
||||||
case "equipment":
|
case "equipment":
|
||||||
context.tab = context.tabs.equipment
|
context.tab = context.tabs.equipment
|
||||||
@@ -103,8 +122,19 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
break
|
break
|
||||||
case "biography":
|
case "biography":
|
||||||
context.tab = context.tabs.biography
|
context.tab = context.tabs.biography
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
context.deals = doc.itemTypes.deal
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
context.enrichedBackstory = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.backstory, { async: true })
|
||||||
|
context.enrichedAppearance = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.appearance, { async: true })
|
||||||
|
context.enrichedScars = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.scars, { async: true })
|
||||||
|
context.enrichedLikes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.likes, { async: true })
|
||||||
|
context.enrichedDislikes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.dislikes, { async: true })
|
||||||
|
context.enrichedFears = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.fears, { async: true })
|
||||||
|
context.enrichedVices = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.vices, { async: true })
|
||||||
|
context.enrichedGoals = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.goals, { async: true })
|
||||||
|
context.enrichedAmbitions = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.ambitions, { async: true })
|
||||||
|
context.enrichedValues = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.values, { async: true })
|
||||||
|
context.enrichedBonds = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.bonds, { async: true })
|
||||||
|
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true })
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
return context
|
return context
|
||||||
@@ -115,6 +145,18 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static #onCreateDeal(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newDeal"), type: "deal" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateMalefica(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newMalefica"), type: "malefica" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateRitual(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newRitual"), type: "ritual" }])
|
||||||
|
}
|
||||||
|
|
||||||
static #onCreateWeapon(event, target) {
|
static #onCreateWeapon(event, target) {
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
|
||||||
}
|
}
|
||||||
@@ -123,20 +165,8 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newArmor"), type: "armor" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newArmor"), type: "armor" }])
|
||||||
}
|
}
|
||||||
|
|
||||||
static #onCreateTalent(event, target) {
|
static #onCreatePerk(event, target) {
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTalent"), type: "talent" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newPerk"), type: "perk" }])
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreateImplant(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newImplant"), type: "implant" }])
|
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreatePsionic(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newPsionic"), type: "psionic" }])
|
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreateLanguage(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newLanguage"), type: "language" }])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -158,10 +188,11 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
const rollType = $(event.currentTarget).data("roll-type")
|
const rollType = $(event.currentTarget).data("roll-type")
|
||||||
let item
|
let item
|
||||||
let li
|
let li
|
||||||
|
let statKey
|
||||||
switch (rollType) {
|
switch (rollType) {
|
||||||
case "skill":
|
case "stat":
|
||||||
let skillId = $(event.currentTarget).data("skill-id");
|
statKey = $(event.currentTarget).data("stat-id");
|
||||||
item = this.actor.system.skills[skillId];
|
item = this.actor.system.stats[statKey];
|
||||||
break
|
break
|
||||||
case "weapon":
|
case "weapon":
|
||||||
case "damage":
|
case "damage":
|
||||||
@@ -176,14 +207,32 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
|||||||
|
|
||||||
async _onDrop(event) {
|
async _onDrop(event) {
|
||||||
if (!this.isEditable || !this.isEditMode) return
|
if (!this.isEditable || !this.isEditMode) return
|
||||||
const data = TextEditor.getDragEventData(event)
|
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event)
|
||||||
|
|
||||||
// Handle different data types
|
// Handle different data types
|
||||||
switch (data.type) {
|
if (data.type === "Item") {
|
||||||
case "Item":
|
const item = await fromUuid(data.uuid)
|
||||||
const item = await fromUuid(data.uuid)
|
if (item.type === "tarot") {
|
||||||
return super._onDropItem(item)
|
// Delete the existing tarot item
|
||||||
|
const existingTarot = this.document.items.find(i => i.type === "tarot" && i.system.orientation === item.system.orientation)
|
||||||
|
if (existingTarot) {
|
||||||
|
await existingTarot.delete()
|
||||||
|
// Display info message
|
||||||
|
ui.notifications.info(game.i18n.localize("HELLBORN.Notifications.tarotDeleted") + existingTarot.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.type === "species-trait") {
|
||||||
|
// Check if the item is already in the actor
|
||||||
|
const existingTrait = this.document.items.find(i => i.type === "species-trait" && i.name === item.name)
|
||||||
|
if (existingTrait) {
|
||||||
|
await existingTrait.delete()
|
||||||
|
// Display info message
|
||||||
|
ui.notifications.info(game.i18n.localize("HELLBORN.Notifications.speciesTraitDeleted")+ existingTrait.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super._onDropItem(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
28
module/applications/sheets/deal-sheet.mjs
Normal file
28
module/applications/sheets/deal-sheet.mjs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import HellbornItemSheet from "./base-item-sheet.mjs"
|
||||||
|
|
||||||
|
export default class HellbornDealSheet extends HellbornItemSheet {
|
||||||
|
/** @override */
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
classes: ["deal"],
|
||||||
|
position: {
|
||||||
|
width: 600,
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
contentClasses: ["deal-content"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static PARTS = {
|
||||||
|
main: {
|
||||||
|
template: "systems/fvtt-hellborn/templates/deal.hbs",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
async _prepareContext() {
|
||||||
|
const context = await super._prepareContext()
|
||||||
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
|
return context
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,35 +1,38 @@
|
|||||||
import HellbornActorSheet from "./base-actor-sheet.mjs"
|
import HellbornActorSheet from "./base-actor-sheet.mjs"
|
||||||
|
|
||||||
export default class HellbornCreatureSheet extends HellbornActorSheet {
|
export default class HellbornEnemySheet extends HellbornActorSheet {
|
||||||
/** @override */
|
/** @override */
|
||||||
static DEFAULT_OPTIONS = {
|
static DEFAULT_OPTIONS = {
|
||||||
classes: ["creature"],
|
classes: ["enemy"],
|
||||||
position: {
|
position: {
|
||||||
width: 860,
|
width: 860,
|
||||||
height: 620,
|
height: 620,
|
||||||
},
|
},
|
||||||
window: {
|
window: {
|
||||||
contentClasses: ["creature-content"],
|
contentClasses: ["enemy-content"],
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
createTrait: HellbornCreatureSheet.#onCreateTrait,
|
createTrait: HellbornEnemySheet.#onCreateTrait,
|
||||||
createAbility: HellbornCreatureSheet.#onCreateAbility
|
createEquipment: HellbornEnemySheet.#onCreateEquipment,
|
||||||
},
|
createWeapon: HellbornEnemySheet.#onCreateWeapon,
|
||||||
|
createMalefica: HellbornEnemySheet.#onCreateMalefica,
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static PARTS = {
|
static PARTS = {
|
||||||
main: {
|
main: {
|
||||||
template: "systems/fvtt-hellborn/templates/creature-main.hbs",
|
template: "systems/fvtt-hellborn/templates/enemy-main.hbs",
|
||||||
},
|
},
|
||||||
tabs: {
|
tabs: {
|
||||||
template: "templates/generic/tab-navigation.hbs",
|
template: "templates/generic/tab-navigation.hbs",
|
||||||
},
|
},
|
||||||
traits: {
|
traits: {
|
||||||
template: "systems/fvtt-hellborn/templates/creature-sheet-trait.hbs",
|
template: "systems/fvtt-hellborn/templates/enemy-trait.hbs",
|
||||||
},
|
},
|
||||||
biography: {
|
biography: {
|
||||||
template: "systems/fvtt-hellborn/templates/creature-biography.hbs",
|
template: "systems/fvtt-hellborn/templates/enemy-biography.hbs",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,6 +41,7 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
|||||||
sheet: "traits",
|
sheet: "traits",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare an array of form header tabs.
|
* Prepare an array of form header tabs.
|
||||||
* @returns {Record<string, Partial<ApplicationTab>>}
|
* @returns {Record<string, Partial<ApplicationTab>>}
|
||||||
@@ -59,9 +63,6 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
|||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.tabs = this.#getTabs()
|
context.tabs = this.#getTabs()
|
||||||
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
|
||||||
|
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,15 +74,19 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
|||||||
break
|
break
|
||||||
case "traits":
|
case "traits":
|
||||||
context.tab = context.tabs.traits
|
context.tab = context.tabs.traits
|
||||||
context.abilities = doc.itemTypes["creature-ability"]
|
context.traits = doc.itemTypes["species-trait"]
|
||||||
context.abilities.sort((a, b) => a.name.localeCompare(b.name))
|
|
||||||
context.traits = doc.itemTypes["creature-trait"]
|
|
||||||
context.traits.sort((a, b) => a.name.localeCompare(b.name))
|
context.traits.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
context.weapons = doc.itemTypes.weapon
|
||||||
|
context.weapons.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
context.maleficas = doc.itemTypes.malefica
|
||||||
|
context.maleficas.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
|
context.equipments = doc.itemTypes.equipment
|
||||||
|
context.equipments.sort((a, b) => a.name.localeCompare(b.name))
|
||||||
break
|
break
|
||||||
case "biography":
|
case "biography":
|
||||||
context.tab = context.tabs.biography
|
context.tab = context.tabs.biography
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.description, { async: true })
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.notes, { async: true })
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
return context
|
return context
|
||||||
@@ -93,13 +98,22 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
|||||||
* @param {HTMLElement} target The current target of the event listener.
|
* @param {HTMLElement} target The current target of the event listener.
|
||||||
*/
|
*/
|
||||||
static #onCreateTrait(event, target) {
|
static #onCreateTrait(event, target) {
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTrait"), type: "creature-trait" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTrait"), type: "species-trait" }])
|
||||||
}
|
}
|
||||||
|
|
||||||
static #onCreateAbility(event, target) {
|
static #onCreateEquipment(event, target) {
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newAbility"), type: "creature-ability" }])
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static #onCreateMalefica(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newMalefica"), type: "malefica" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
static #onCreateWeapon(event, target) {
|
||||||
|
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the roll action triggered by user interaction.
|
* Handles the roll action triggered by user interaction.
|
||||||
*
|
*
|
||||||
@@ -117,27 +131,21 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
|||||||
async _onRoll(event, target) {
|
async _onRoll(event, target) {
|
||||||
const rollType = $(event.currentTarget).data("roll-type")
|
const rollType = $(event.currentTarget).data("roll-type")
|
||||||
let item
|
let item
|
||||||
let formula
|
|
||||||
let roll
|
|
||||||
switch (rollType) {
|
switch (rollType) {
|
||||||
case "skill":
|
case "stat":
|
||||||
let skillId = $(event.currentTarget).data("skill-id");
|
{
|
||||||
item = this.actor.system.skills[skillId];
|
let statId = $(event.currentTarget).data("stat-id");
|
||||||
await this.document.system.roll(rollType, item)
|
item = this.actor.system.stats[statId];
|
||||||
|
await this.document.system.roll(rollType, item)
|
||||||
|
}
|
||||||
break
|
break
|
||||||
case "creature-damage":
|
case "weapon":
|
||||||
formula = this.actor.system.damage
|
case "damage":
|
||||||
// Rolll the damage
|
{
|
||||||
roll = new Roll(formula)
|
let li = $(event.currentTarget).parents(".item");
|
||||||
await roll.evaluate()
|
item = this.actor.items.get(li.data("item-id"));
|
||||||
roll.toMessage( { flavor: `${this.actor.name} : Damage roll` })
|
await this.document.system.roll(rollType, item)
|
||||||
break
|
}
|
||||||
case "creature-number":
|
|
||||||
formula = this.actor.system.numberAppearing
|
|
||||||
// Rolll the damage
|
|
||||||
roll = new Roll(formula)
|
|
||||||
await roll.evaluate()
|
|
||||||
roll.toMessage({flavor: `${this.actor.name} : Number Appearing roll`})
|
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown roll type ${rollType}`)
|
throw new Error(`Unknown roll type ${rollType}`)
|
||||||
@@ -22,7 +22,7 @@ export default class HellbornEquipmentSheet extends HellbornItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default class HellbornMaleficaSheet extends HellbornItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default class HellbornPerkSheet extends HellbornItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ export default class HellbornRitualSheet extends HellbornItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
|
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default class HellbornSpeciesTraitSheet extends HellbornItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async _prepareContext() {
|
async _prepareContext() {
|
||||||
const context = await super._prepareContext()
|
const context = await super._prepareContext()
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
return context
|
return context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
31
module/applications/sheets/tarot-sheet.mjs
Normal file
31
module/applications/sheets/tarot-sheet.mjs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import HellbornItemSheet from "./base-item-sheet.mjs"
|
||||||
|
|
||||||
|
export default class HellbornTarotSheet extends HellbornItemSheet {
|
||||||
|
/** @override */
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
classes: ["tarot"],
|
||||||
|
position: {
|
||||||
|
width: 800,
|
||||||
|
height: 800
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
contentClasses: ["tarot-content"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static PARTS = {
|
||||||
|
main: {
|
||||||
|
template: "systems/fvtt-hellborn/templates/tarot.hbs",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
async _prepareContext() {
|
||||||
|
const context = await super._prepareContext()
|
||||||
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
|
context.enrichedPositiveEffect = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.positiveEffect, { async: true })
|
||||||
|
context.enrichedNegativeEffect = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.negativeEffect, { async: true })
|
||||||
|
return context
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
import HellbornActorSheet from "./base-actor-sheet.mjs"
|
|
||||||
|
|
||||||
export default class HellbornVehicleSheet extends HellbornActorSheet {
|
|
||||||
/** @override */
|
|
||||||
static DEFAULT_OPTIONS = {
|
|
||||||
classes: ["vehicle"],
|
|
||||||
position: {
|
|
||||||
width: 680,
|
|
||||||
height: 540,
|
|
||||||
},
|
|
||||||
window: {
|
|
||||||
contentClasses: ["vehicle-content"],
|
|
||||||
},
|
|
||||||
actions: {
|
|
||||||
createEquipment: HellbornVehicleSheet.#onCreateEquipment,
|
|
||||||
createWeapon: HellbornVehicleSheet.#onCreateWeapon,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
static PARTS = {
|
|
||||||
main: {
|
|
||||||
template: "systems/fvtt-hellborn/templates/vehicle-main.hbs",
|
|
||||||
},
|
|
||||||
tabs: {
|
|
||||||
template: "templates/generic/tab-navigation.hbs",
|
|
||||||
},
|
|
||||||
equipment: {
|
|
||||||
template: "systems/fvtt-hellborn/templates/vehicle-equipment.hbs",
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
template: "systems/fvtt-hellborn/templates/vehicle-description.hbs",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
tabGroups = {
|
|
||||||
sheet: "equipment",
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare an array of form header tabs.
|
|
||||||
* @returns {Record<string, Partial<ApplicationTab>>}
|
|
||||||
*/
|
|
||||||
#getTabs() {
|
|
||||||
const tabs = {
|
|
||||||
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "HELLBORN.Label.equipment" },
|
|
||||||
description: { id: "description", group: "sheet", icon: "fa-solid fa-book", label: "HELLBORN.Label.description" },
|
|
||||||
}
|
|
||||||
for (const v of Object.values(tabs)) {
|
|
||||||
v.active = this.tabGroups[v.group] === v.id
|
|
||||||
v.cssClass = v.active ? "active" : ""
|
|
||||||
}
|
|
||||||
return tabs
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
async _prepareContext() {
|
|
||||||
const context = await super._prepareContext()
|
|
||||||
context.tabs = this.#getTabs()
|
|
||||||
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
|
||||||
|
|
||||||
return context
|
|
||||||
}
|
|
||||||
|
|
||||||
_generateTooltip(type, target) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
async _preparePartContext(partId, context) {
|
|
||||||
const doc = this.document
|
|
||||||
switch (partId) {
|
|
||||||
case "main":
|
|
||||||
break
|
|
||||||
case "equipment":
|
|
||||||
context.tab = context.tabs.equipment
|
|
||||||
context.weapons = doc.itemTypes.weapon
|
|
||||||
context.weapons.sort((a, b) => a.name.localeCompare(b.name))
|
|
||||||
context.equipments = doc.itemTypes.equipment
|
|
||||||
context.equipments.sort((a, b) => a.name.localeCompare(b.name))
|
|
||||||
break
|
|
||||||
case "description":
|
|
||||||
context.tab = context.tabs.description
|
|
||||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
|
||||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return context
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new attack item directly from the sheet and embeds it into the document.
|
|
||||||
* @param {Event} event The initiating click event.
|
|
||||||
* @param {HTMLElement} target The current target of the event listener.
|
|
||||||
*/
|
|
||||||
static #onCreateEquipment(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
|
|
||||||
}
|
|
||||||
|
|
||||||
static #onCreateWeapon(event, target) {
|
|
||||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
|
|
||||||
}
|
|
||||||
|
|
||||||
async _onRoll(event, target) {
|
|
||||||
const rollType = $(event.currentTarget).data("roll-type")
|
|
||||||
let item
|
|
||||||
let li
|
|
||||||
switch (rollType) {
|
|
||||||
case "damage":
|
|
||||||
li = $(event.currentTarget).parents(".item");
|
|
||||||
item = this.actor.items.get(li.data("item-id"));
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
throw new Error(`Unknown roll type ${rollType}`)
|
|
||||||
}
|
|
||||||
await this.document.system.roll(rollType, item)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async _onDrop(event) {
|
|
||||||
if (!this.isEditable || !this.isEditMode) return
|
|
||||||
const data = TextEditor.getDragEventData(event)
|
|
||||||
|
|
||||||
// Handle different data types
|
|
||||||
switch (data.type) {
|
|
||||||
case "Item":
|
|
||||||
const item = await fromUuid(data.uuid)
|
|
||||||
return super._onDropItem(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -18,4 +18,10 @@ export default class HellbornWeaponSheet extends HellbornItemSheet {
|
|||||||
template: "systems/fvtt-hellborn/templates/weapon.hbs",
|
template: "systems/fvtt-hellborn/templates/weapon.hbs",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _prepareContext() {
|
||||||
|
const context = await super._prepareContext()
|
||||||
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||||
|
return context
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,49 @@ export const ASCII = `
|
|||||||
|
|
||||||
`
|
`
|
||||||
|
|
||||||
|
export const AILMENTS = {
|
||||||
|
"bleeding": { id: "bleeding", label: "Bleeding" },
|
||||||
|
"blinded": { id: "blinded", label: "Blinded" },
|
||||||
|
"burning": { id: "burning", label: "Burning" },
|
||||||
|
"dazed": { id: "dazed", label: "Dazed" },
|
||||||
|
"deafened": { id: "deafened", label: "Deafened" },
|
||||||
|
"exposes": { id: "exposed", label: "Exposed" },
|
||||||
|
"mortally": { id: "mortal", label: "Mortal" },
|
||||||
|
"muted": { id: "muted", label: "Muted" },
|
||||||
|
"prone": { id: "prone", label: "Prone" },
|
||||||
|
"immobilized": { id: "immobilized", label: "Immobile" },
|
||||||
|
"shaken": { id: "shaken", label: "Shaken" },
|
||||||
|
"stunned": { id: "stunned", label: "Stunned" },
|
||||||
|
"winded": { id: "winded", label: "Winded" }
|
||||||
|
}
|
||||||
|
|
||||||
|
export const STATS = {
|
||||||
|
"flesh": { id: "flesh", label: "Flesh" },
|
||||||
|
"skin": { id: "skin", label: "Skin" },
|
||||||
|
"heart": { id: "heart", label: "Heart" },
|
||||||
|
"mind": { id: "mind", label: "Mind" },
|
||||||
|
"soul": { id: "soul", label: "Soul" }
|
||||||
|
}
|
||||||
|
|
||||||
|
export const DIFFICULTY_CHOICES = {
|
||||||
|
"unknown": { id: "unknown", label: "Unknown", value: "0" },
|
||||||
|
"trivial": { id: "trivial", label: "Trivial", value: "7" },
|
||||||
|
"easy": { id: "easy", label: "Easy", value: "9" },
|
||||||
|
"normal": { id: "normal", label: "Normal", value: "11" },
|
||||||
|
"hard": { id: "hard", label: "Hard", value: "15" },
|
||||||
|
"very-hard": { id: "very-hard", label: "Very Hard", value: "18" },
|
||||||
|
"impossible": { id: "impossible", label: "Impossible", value: "20" }
|
||||||
|
}
|
||||||
|
|
||||||
|
export const CHOICE_ADVANTAGES_DISADVANTAGES ={
|
||||||
|
"0": { id: "0", label: "None", value: "0" },
|
||||||
|
"1": { id: "1", label: "One", value: "1" },
|
||||||
|
"2": { id: "2", label: "Two", value: "2" },
|
||||||
|
"3": { id: "3", label: "Three", value: "3" },
|
||||||
|
"4": { id: "4", label: "Four", value: "4" },
|
||||||
|
"5": { id: "5", label: "Five", value: "5" },
|
||||||
|
}
|
||||||
|
|
||||||
export const PERK_ROLES = {
|
export const PERK_ROLES = {
|
||||||
"abbetor": { id: "abbetor", label: "Abbetor" },
|
"abbetor": { id: "abbetor", label: "Abbetor" },
|
||||||
"blade": { id: "blade", label: "Blade" },
|
"blade": { id: "blade", label: "Blade" },
|
||||||
@@ -47,86 +90,19 @@ export const WEAPON_TYPES = {
|
|||||||
"ranged": { id: "ranged", label: "Ranged" },
|
"ranged": { id: "ranged", label: "Ranged" },
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RANGED_SUBTYPES = {
|
export const AMMO_TYPES = {
|
||||||
"pistols": { id: "pistols", label: "Pistols" },
|
"blessed": { id: "blessed", label: "Blessed" },
|
||||||
"rifles": { id: "rifles", label: "Rifles" },
|
"hollow-points": { id: "hollow-points", label: "Hollow" },
|
||||||
"shotguns": { id: "shotguns", label: "Shotguns" },
|
"incendiary": { id: "incendiary", label: "Incendiary" },
|
||||||
"submachineguns": { id: "submachineguns ", label: "Sub machine guns" },
|
"poisoned": { id: "poisoned", label: "Poisoned" },
|
||||||
"grenades": { id: "grenades", label: "Grenades" },
|
"rubber": { id: "rubber", label: "Rubber" },
|
||||||
"heavy": { id: "heavy", label: "Heavy Weapons" },
|
"tesla": { id: "tesla", label: "Tesla" },
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ATTACK_MODIFIERS = {
|
export const ENEMY_TYPES = {
|
||||||
"two-attacks": -1,
|
"mook": { id: "mook", label: "Mook" },
|
||||||
"aiming": 1,
|
"elite": { id: "elite", label: "Elite" },
|
||||||
"dim": -1,
|
"legendary": { id: "legendary", label: "Legendary" }
|
||||||
"darkness": -2,
|
|
||||||
"prone": -1,
|
|
||||||
"cover": -2,
|
|
||||||
"recoil-first": -1,
|
|
||||||
"recoil-third": -2,
|
|
||||||
"aware": -1
|
|
||||||
}
|
|
||||||
|
|
||||||
export const TRIAGE_RESULTS = {
|
|
||||||
"none": { id: "none", dice:0, label: "HELLBORN.TriageResults.None" },
|
|
||||||
"death": { id: "death", dice:3, label: "HELLBORN.TriageResults.Death" },
|
|
||||||
"critical": { id: "critical", dice:4, label: "HELLBORN.TriageResults.Critical" },
|
|
||||||
"severe": { id: "severe", dice:7, label: "HELLBORN.TriageResults.Severe" },
|
|
||||||
"moderate": { id: "moderate", dice:10, label: "HELLBORN.TriageResults.Moderate" },
|
|
||||||
"fleshwound": { id: "fleshwound", dice:12, label: "HELLBORN.TriageResults.FleshWound" }
|
|
||||||
}
|
|
||||||
|
|
||||||
export const CREATURE_TERRAIN_TYPES = {
|
|
||||||
"cave": { id: "cave", label: "HELLBORN.Creature.Terrain.Cave", niche:0, size: 0 },
|
|
||||||
"coast": { id: "coast", label: "HELLBORN.Creature.Terrain.Coast", niche:1, size: 0 },
|
|
||||||
"desert": { id: "desert", label: "HELLBORN.Creature.Terrain.Desert", niche:-1, size: -1 },
|
|
||||||
"forest": { id: "forest", label: "HELLBORN.Creature.Terrain.Forest", niche:1, size: 1 },
|
|
||||||
"jungle": { id: "jungle", label: "HELLBORN.Creature.Terrain.Jungle", niche:1, size: 1 },
|
|
||||||
"mixed": { id: "mixed", label: "HELLBORN.Creature.Terrain.Mixed", niche:0, size: 0 },
|
|
||||||
"mountain": { id: "mountain", label: "HELLBORN.Creature.Terrain.Mountain", niche:-1, size: -1 },
|
|
||||||
"ocean": { id: "ocean", label: "HELLBORN.Creature.Terrain.Ocean", niche:-1, size: 1 },
|
|
||||||
"river": { id: "river", label: "HELLBORN.Creature.Terrain.River", niche:1, size: 0 },
|
|
||||||
"ruins": { id: "ruins", label: "HELLBORN.Creature.Terrain.Ruins", niche:0, size: 1 },
|
|
||||||
"savannah": { id: "savannah", label: "HELLBORN.Creature.Terrain.Savannah", niche:0, size: 1 },
|
|
||||||
"shallows": { id: "shallows", label: "HELLBORN.Creature.Terrain.Shallows", niche:1, size: 0 },
|
|
||||||
"swamp": { id: "swamp", label: "HELLBORN.Creature.Terrain.Swamp", niche:1, size: 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
export const CREATURE_NICHES = {
|
|
||||||
"prey": { id: "prey", label: "HELLBORN.Creature.Niche.Prey" },
|
|
||||||
"opportunist": { id: "opportunist", label: "HELLBORN.Creature.Niche.Opportunist" },
|
|
||||||
"herbivore": { id: "herbivore", label: "HELLBORN.Creature.Niche.Herbivore" },
|
|
||||||
"predator": { id: "predator", label: "HELLBORN.Creature.Niche.Predator" }
|
|
||||||
}
|
|
||||||
|
|
||||||
export const CREATURE_SIZES = {
|
|
||||||
"tiny": { id: "tiny", label: "HELLBORN.Creature.Size.Tiny" },
|
|
||||||
"small": { id: "small", label: "HELLBORN.Creature.Size.Small" },
|
|
||||||
"medium": { id: "medium", label: "HELLBORN.Creature.Size.Medium" },
|
|
||||||
"large": { id: "large", label: "HELLBORN.Creature.Size.Large" },
|
|
||||||
"giant": { id: "giant", label: "HELLBORN.Creature.Size.Giant" },
|
|
||||||
"titanic": { id: "titanic", label: "HELLBORN.Creature.Size.Titanic" }
|
|
||||||
}
|
|
||||||
|
|
||||||
export const MODIFIER_CHOICES = {
|
|
||||||
"easy": { id: "easy", label: "HELLBORN.Label.Easy", value :"1" },
|
|
||||||
"moderate": { id: "moderate", label: "HELLBORN.Label.Moderate", value: "0" },
|
|
||||||
"difficult": { id: "difficult", label: "HELLBORN.Label.Difficult", value: "-1" },
|
|
||||||
"formidable": { id: "formidable", label: "HELLBORN.Label.Formidable", value: "-2" },
|
|
||||||
"impossible": { id: "impossible", label: "HELLBORN.Label.Impossible", value: "-4" }
|
|
||||||
}
|
|
||||||
|
|
||||||
export const STARSHIP_HULL = {
|
|
||||||
"pod": { id: "pod", label: "HELLBORN.Starship.Hull.Pod" },
|
|
||||||
"micro": { id: "micro", label: "HELLBORN.Starship.Hull.Micro" },
|
|
||||||
"small": { id: "small", label: "HELLBORN.Starship.Hull.Small" },
|
|
||||||
"scout": { id: "scout", label: "HELLBORN.Starship.Hull.Scout" },
|
|
||||||
"picket": { id: "picket", label: "HELLBORN.Starship.Hull.Picket" },
|
|
||||||
"destroyer": { id: "destroyer", label: "HELLBORN.Starship.Hull.Destroyer" },
|
|
||||||
"cruiser": { id: "cruiser", label: "HELLBORN.Starship.Hull.Cruiser" },
|
|
||||||
"battleship": { id: "battleship", label: "HELLBORN.Starship.Hull.Battleship" },
|
|
||||||
"carrier": { id: "carrier", label: "HELLBORN.Starship.Hull.Carrier" }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -135,18 +111,16 @@ export const STARSHIP_HULL = {
|
|||||||
*/
|
*/
|
||||||
export const SYSTEM = {
|
export const SYSTEM = {
|
||||||
id: SYSTEM_ID,
|
id: SYSTEM_ID,
|
||||||
|
AILMENTS,
|
||||||
|
ENEMY_TYPES,
|
||||||
|
STATS,
|
||||||
PERK_ROLES,
|
PERK_ROLES,
|
||||||
PERK_LEVELS,
|
PERK_LEVELS,
|
||||||
MALEFICA_LEVELS,
|
MALEFICA_LEVELS,
|
||||||
MALEFICA_DOMAINS,
|
MALEFICA_DOMAINS,
|
||||||
MODIFIER_CHOICES,
|
|
||||||
ATTACK_MODIFIERS,
|
|
||||||
WEAPON_TYPES,
|
WEAPON_TYPES,
|
||||||
RANGED_SUBTYPES,
|
AMMO_TYPES,
|
||||||
TRIAGE_RESULTS,
|
DIFFICULTY_CHOICES,
|
||||||
CREATURE_TERRAIN_TYPES,
|
CHOICE_ADVANTAGES_DISADVANTAGES,
|
||||||
CREATURE_SIZES,
|
|
||||||
CREATURE_NICHES,
|
|
||||||
STARSHIP_HULL,
|
|
||||||
ASCII
|
ASCII
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ export const defaultItemImg = {
|
|||||||
perk: "systems/fvtt-hellborn/assets/icons/perk.webp",
|
perk: "systems/fvtt-hellborn/assets/icons/perk.webp",
|
||||||
"species-trait": "systems/fvtt-hellborn/assets/icons/species-trait.webp",
|
"species-trait": "systems/fvtt-hellborn/assets/icons/species-trait.webp",
|
||||||
armor: "systems/fvtt-hellborn/assets/icons/armor.webp",
|
armor: "systems/fvtt-hellborn/assets/icons/armor.webp",
|
||||||
|
deal: "systems/fvtt-hellborn/assets/icons/deal.webp",
|
||||||
|
tarot: "systems/fvtt-hellborn/assets/icons/tarot.webp",
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class HellbornItem extends Item {
|
export default class HellbornItem extends Item {
|
||||||
|
|||||||
@@ -62,11 +62,7 @@ export default class HellbornRoll extends Roll {
|
|||||||
|
|
||||||
static updateFullFormula(options) {
|
static updateFullFormula(options) {
|
||||||
let fullFormula
|
let fullFormula
|
||||||
if ( options.numericModifier >= 0) {
|
fullFormula = `3D6 + ${options.nbAdvantages}D6kh - ${options.nbDisadvantages}D6kh + ${options.rollItem.value}`
|
||||||
fullFormula = `${options.formula} + ${options.rollItem.value} + ${options.numericModifier}D`
|
|
||||||
} else {
|
|
||||||
fullFormula = `${options.formula} + ${options.rollItem.value} - ${Math.abs(options.numericModifier)}D`
|
|
||||||
}
|
|
||||||
$('#roll-dialog-full-formula').text(fullFormula)
|
$('#roll-dialog-full-formula').text(fullFormula)
|
||||||
options.fullFormula = fullFormula
|
options.fullFormula = fullFormula
|
||||||
}
|
}
|
||||||
@@ -86,81 +82,67 @@ export default class HellbornRoll extends Roll {
|
|||||||
* @returns {Promise<Object|null>} The roll result or null if the dialog was cancelled.
|
* @returns {Promise<Object|null>} The roll result or null if the dialog was cancelled.
|
||||||
*/
|
*/
|
||||||
static async prompt(options = {}) {
|
static async prompt(options = {}) {
|
||||||
let formula = "2d6"
|
let formula = `3D6 + 0D6KH - 0D6KH + ${options?.rollItem?.value}`
|
||||||
|
|
||||||
switch (options.rollType) {
|
switch (options.rollType) {
|
||||||
case "skill":
|
case "stat":
|
||||||
break
|
break
|
||||||
case "damage":
|
case "damage":
|
||||||
let formula = options.rollItem.system.damage
|
{
|
||||||
let damageRoll = new Roll(formula)
|
let formula = options.rollItem.system.damage
|
||||||
await damageRoll.evaluate()
|
let damageRoll = new Roll(formula)
|
||||||
await damageRoll.toMessage({
|
await damageRoll.evaluate()
|
||||||
flavor: `${options.rollItem.name} - Damage Roll`
|
await damageRoll.toMessage({
|
||||||
});
|
flavor: `${options.rollItem.name} - Damage Roll`
|
||||||
return
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
case "weapon":
|
case "weapon":
|
||||||
let actor = game.actors.get(options.actorId)
|
{
|
||||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
let actor = game.actors.get(options.actorId)
|
||||||
options.rollItem = actor.system.skills.combat
|
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||||
|
let statKey = "skin"
|
||||||
|
if (options.weapon.system.weaponType === "melee") {
|
||||||
|
if ( options.weapon.system.properties.toLowerCase().match("heavy") || options.weapon.system.properties.toLowerCase().match("oversized")) {
|
||||||
|
statKey = "flesh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
options.rollItem = actor.system.stats[statKey]
|
||||||
|
}
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
const rollModes = foundry.utils.duplicate(CONFIG.Dice.rollModes)
|
||||||
const fieldRollMode = new foundry.data.fields.StringField({
|
const fieldRollMode = new foundry.data.fields.StringField({
|
||||||
choices: rollModes,
|
choices: rollModes,
|
||||||
blank: false,
|
blank: false,
|
||||||
default: "public",
|
default: "public",
|
||||||
})
|
})
|
||||||
|
|
||||||
const choiceModifier = SYSTEM.MODIFIER_CHOICES
|
|
||||||
let choiceRangeModifier = {}
|
|
||||||
let rangeModifier = 0
|
|
||||||
if ( options.weapon) {
|
|
||||||
// Build the range modifiers
|
|
||||||
let range = SYSTEM.WEAPON_RANGE[options.weapon.system.rangeType]
|
|
||||||
for (let [key, value] of Object.entries(range.range)) {
|
|
||||||
choiceRangeModifier[key] = { label: `${key} (${value}D)`, value: value }
|
|
||||||
if (!rangeModifier && value) {
|
|
||||||
rangeModifier = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let modifier = "0"
|
|
||||||
options.numericModifier = rangeModifier
|
|
||||||
let fullFormula = `${formula} + ${options.rollItem.value}`
|
|
||||||
if (options.isEncumbered) {
|
|
||||||
options.numericModifier += -1
|
|
||||||
fullFormula += ` - ${options.numericModifier}D`
|
|
||||||
} else {
|
|
||||||
options.numericModifier += 0
|
|
||||||
fullFormula += ` + ${options.numericModifier}D`
|
|
||||||
}
|
|
||||||
options.fullFormula = fullFormula
|
|
||||||
options.formula = formula
|
options.formula = formula
|
||||||
|
options.nbAdvantages = "0"
|
||||||
|
options.nbDisadvantages = "0"
|
||||||
|
|
||||||
let dialogContext = {
|
let dialogContext = {
|
||||||
actorId: options.actorId,
|
actorId: options.actorId,
|
||||||
actorName: options.actorName,
|
actorName: options.actorName,
|
||||||
rollType: options.rollType,
|
rollType: options.rollType,
|
||||||
rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class
|
rollItem: foundry.utils.duplicate(options.rollItem), // Object only, no class
|
||||||
fullFormula,
|
|
||||||
weapon: options?.weapon,
|
weapon: options?.weapon,
|
||||||
isEncumbered: options.isEncumbered,
|
formula: formula,
|
||||||
talents: options.talents,
|
fullFormula: formula,
|
||||||
rollModes,
|
rollModes,
|
||||||
fieldRollMode,
|
fieldRollMode,
|
||||||
choiceModifier,
|
choiceAdvantages: SYSTEM.CHOICE_ADVANTAGES_DISADVANTAGES,
|
||||||
choiceRangeModifier,
|
choiceDisadvantages: SYSTEM.CHOICE_ADVANTAGES_DISADVANTAGES,
|
||||||
rangeModifier,
|
|
||||||
formula,
|
|
||||||
hasTarget: options.hasTarget,
|
hasTarget: options.hasTarget,
|
||||||
modifier,
|
difficulty: "0",
|
||||||
|
nbAdvantages: "0",
|
||||||
|
nbDisadvantages: "0",
|
||||||
}
|
}
|
||||||
const content = await renderTemplate("systems/fvtt-hellborn/templates/roll-dialog.hbs", dialogContext)
|
const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/roll-dialog.hbs", dialogContext)
|
||||||
|
|
||||||
const title = HellbornRoll.createTitle(options.rollType, options.rollTarget)
|
const title = HellbornRoll.createTitle(options.rollType, options.rollTarget)
|
||||||
const label = game.i18n.localize("HELLBORN.Roll.roll")
|
const label = game.i18n.localize("HELLBORN.Roll.roll")
|
||||||
@@ -184,19 +166,19 @@ export default class HellbornRoll extends Roll {
|
|||||||
},
|
},
|
||||||
rejectClose: false, // Click on Close button will not launch an error
|
rejectClose: false, // Click on Close button will not launch an error
|
||||||
render: (event, dialog) => {
|
render: (event, dialog) => {
|
||||||
$(".roll-skill-modifier").change(event => {
|
$(".roll-stat-advantages").change(event => {
|
||||||
options.numericModifier += Number(event.target.value)
|
options.nbAdvantages = Number(event.target.value)
|
||||||
HellbornRoll.updateFullFormula(options)
|
HellbornRoll.updateFullFormula(options)
|
||||||
})
|
})
|
||||||
$(".roll-skill-range-modifier").change(event => {
|
$(".roll-stat-disadvantages").change(event => {
|
||||||
options.numericModifier += Number(event.target.value)
|
options.nbDisadvantages = Number(event.target.value)
|
||||||
HellbornRoll.updateFullFormula(options)
|
HellbornRoll.updateFullFormula(options)
|
||||||
})
|
})
|
||||||
$(".select-combat-option").change(event => {
|
$(".select-combat-option").change(event => {
|
||||||
console.log(event)
|
console.log(event)
|
||||||
let field = $(event.target).data("field")
|
let field = $(event.target).data("field")
|
||||||
let modifier = SYSTEM.ATTACK_MODIFIERS[field]
|
let modifier = SYSTEM.ATTACK_MODIFIERS[field]
|
||||||
if ( event.target.checked) {
|
if (event.target.checked) {
|
||||||
options.numericModifier += modifier
|
options.numericModifier += modifier
|
||||||
} else {
|
} else {
|
||||||
options.numericModifier -= modifier
|
options.numericModifier -= modifier
|
||||||
@@ -211,42 +193,55 @@ export default class HellbornRoll extends Roll {
|
|||||||
|
|
||||||
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
|
let rollData = foundry.utils.mergeObject(foundry.utils.duplicate(options), rollContext)
|
||||||
rollData.rollMode = rollContext.visibility
|
rollData.rollMode = rollContext.visibility
|
||||||
// Update target score
|
|
||||||
rollData.targetScore = 8
|
rollData.targetScore = 8
|
||||||
|
|
||||||
if (Hooks.call("fvtt-hellborn.preRoll", options, rollData) === false) return
|
if (Hooks.call("fvtt-hellborn.preRoll", options, rollData) === false) return
|
||||||
|
|
||||||
let diceFormula = `${2+Math.abs(options.numericModifier)}D6`
|
options.nbAdvantages = Number(options.nbAdvantages)
|
||||||
if ( options.numericModifier > 0 ) {
|
options.nbDisadvantages = Number(options.nbDisadvantages)
|
||||||
diceFormula += `kh2 + ${options.rollItem.value}`
|
let diceFormula = `3D6 + ${options.nbAdvantages}D6kh - ${options.nbDisadvantages}D6kh + ${options.rollItem.value}`
|
||||||
} else {
|
|
||||||
diceFormula += `kl2 + ${options.rollItem.value}`
|
|
||||||
}
|
|
||||||
|
|
||||||
const roll = new this(diceFormula, options.data, rollData)
|
const roll = new this(diceFormula, options.data, rollData)
|
||||||
await roll.evaluate()
|
await roll.evaluate()
|
||||||
|
console.log("Roll", rollData, roll)
|
||||||
|
options.difficulty = (rollData.difficulty === "unknown") ? 0 : (Number(rollData.difficulty) || 0)
|
||||||
|
|
||||||
roll.displayRollResult(roll, options, rollData)
|
roll.displayRollResult(roll, options, rollData, roll)
|
||||||
|
|
||||||
if (Hooks.call("fvtt-hellborn.Roll", options, rollData, roll) === false) return
|
if (Hooks.call("fvtt-hellborn.Roll", options, rollData, roll) === false) return
|
||||||
|
|
||||||
return roll
|
return roll
|
||||||
}
|
}
|
||||||
|
|
||||||
displayRollResult(formula, options, rollData) {
|
displayRollResult(formula, options, rollData, roll) {
|
||||||
|
|
||||||
// Compute the result quality
|
|
||||||
let resultType = "failure"
|
let resultType = "failure"
|
||||||
if (this.total >= 8) {
|
if (options.difficulty === 0) {
|
||||||
|
resultType = "unknown"
|
||||||
|
} else if (this.total >= options.difficulty) {
|
||||||
resultType = "success"
|
resultType = "success"
|
||||||
// Detect if decimal == unit in the dire total result
|
|
||||||
}
|
}
|
||||||
|
// Compute the result quality
|
||||||
|
this.options.satanicSuccess = false
|
||||||
|
this.options.fiendishFailure = false
|
||||||
|
this.options.rollData = foundry.utils.duplicate(rollData)
|
||||||
|
if (resultType === "success") {
|
||||||
|
let nb6 = roll.terms[0].results.filter(r => r.result === 6).length
|
||||||
|
nb6 += roll.terms[3].total === 6 ? 1 : 0
|
||||||
|
this.options.satanicSuccess = nb6 >= 3
|
||||||
|
if (this.options.satanicSuccess) {
|
||||||
|
resultType = "success"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (resultType === "failure") {
|
||||||
|
let nb1 = roll.terms[0].results.filter(r => r.result === 1).length
|
||||||
|
nb1 += roll.terms[5].total === 1 ? 1 : 0
|
||||||
|
this.options.fiendishFailure = nb1 >= 3
|
||||||
|
if (this.options.fiendishFailure) {
|
||||||
|
resultType = "failure"
|
||||||
|
}
|
||||||
|
}
|
||||||
this.options.resultType = resultType
|
this.options.resultType = resultType
|
||||||
this.options.isSuccess = resultType === "success"
|
this.options.isSuccess = resultType === "success"
|
||||||
this.options.isFailure = resultType === "failure"
|
this.options.isFailure = resultType === "failure"
|
||||||
this.options.isEncumbered = rollData.isEncumbered
|
|
||||||
this.options.rollData = foundry.utils.duplicate(rollData)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -258,8 +253,8 @@ export default class HellbornRoll extends Roll {
|
|||||||
*/
|
*/
|
||||||
static createTitle(type, target) {
|
static createTitle(type, target) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "skill":
|
case "stat":
|
||||||
return `${game.i18n.localize("HELLBORN.Label.titleSkill")}`
|
return `${game.i18n.localize("HELLBORN.Label.titleStat")}`
|
||||||
case "weapon":
|
case "weapon":
|
||||||
return `${game.i18n.localize("HELLBORN.Label.titleWeapon")}`
|
return `${game.i18n.localize("HELLBORN.Label.titleWeapon")}`
|
||||||
default:
|
default:
|
||||||
@@ -270,7 +265,7 @@ export default class HellbornRoll extends Roll {
|
|||||||
/** @override */
|
/** @override */
|
||||||
async render(chatOptions = {}) {
|
async render(chatOptions = {}) {
|
||||||
let chatData = await this._getChatCardData(chatOptions.isPrivate)
|
let chatData = await this._getChatCardData(chatOptions.isPrivate)
|
||||||
return await renderTemplate(this.constructor.CHAT_TEMPLATE, chatData)
|
return await foundry.applications.handlebars.renderTemplate(this.constructor.CHAT_TEMPLATE, chatData)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -317,7 +312,6 @@ export default class HellbornRoll extends Roll {
|
|||||||
cardData.realDamage = this.realDamage
|
cardData.realDamage = this.realDamage
|
||||||
cardData.isPrivate = isPrivate
|
cardData.isPrivate = isPrivate
|
||||||
cardData.weapon = this.weapon
|
cardData.weapon = this.weapon
|
||||||
cardData.isEncumbered = this.isEncumbered
|
|
||||||
|
|
||||||
cardData.cssClass = cardData.css.join(" ")
|
cardData.cssClass = cardData.css.join(" ")
|
||||||
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
|
cardData.tooltip = isPrivate ? "" : await this.getTooltip()
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
export { default as HellbornCreature } from "./creature.mjs"
|
export { default as HellbornEnemy } from "./enemy.mjs"
|
||||||
export { default as HellbornVehicle } from "./vehicle.mjs"
|
|
||||||
export { default as HellbornCharacter } from "./character.mjs"
|
export { default as HellbornCharacter } from "./character.mjs"
|
||||||
export { default as HellbornEquipment } from "./equipment.mjs"
|
export { default as HellbornEquipment } from "./equipment.mjs"
|
||||||
export { default as HellbornRitual } from "./ritual.mjs"
|
export { default as HellbornRitual } from "./ritual.mjs"
|
||||||
@@ -8,3 +7,5 @@ export { default as HellbornMalefica } from "./malefica.mjs"
|
|||||||
export { default as HellbornSpeciesTrait } from "./species-trait.mjs"
|
export { default as HellbornSpeciesTrait } from "./species-trait.mjs"
|
||||||
export { default as HellbornWeapon } from "./weapon.mjs"
|
export { default as HellbornWeapon } from "./weapon.mjs"
|
||||||
export { default as HellbornArmor } from "./armor.mjs"
|
export { default as HellbornArmor } from "./armor.mjs"
|
||||||
|
export { default as HellbornTarot } from "./tarot.mjs"
|
||||||
|
export { default as HellbornDeal } from "./deal.mjs"
|
||||||
|
|||||||
@@ -7,51 +7,124 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel {
|
|||||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||||
const schema = {}
|
const schema = {}
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
|
// Ailments
|
||||||
|
const ailmentField = (label) => {
|
||||||
|
const schema = {
|
||||||
|
enabled: new fields.BooleanField({ required: true, initial: false }),
|
||||||
|
label: new fields.StringField({ required: true, initial: label })
|
||||||
|
}
|
||||||
|
return new fields.SchemaField(schema, { label })
|
||||||
|
}
|
||||||
|
schema.ailments = new fields.SchemaField(
|
||||||
|
Object.values(SYSTEM.AILMENTS).reduce((obj, ailment) => {
|
||||||
|
obj[ailment.id] = ailmentField(ailment.label)
|
||||||
|
return obj
|
||||||
|
}, {}),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Stats
|
||||||
|
const statField = (label) => {
|
||||||
|
const schema = {
|
||||||
|
label: new fields.StringField({ required: true, initial: label }),
|
||||||
|
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
}
|
||||||
|
return new fields.SchemaField(schema, { label })
|
||||||
|
}
|
||||||
|
schema.stats = new fields.SchemaField(
|
||||||
|
Object.values(SYSTEM.STATS).reduce((obj, stat) => {
|
||||||
|
obj[stat.id] = statField(stat.label)
|
||||||
|
return obj
|
||||||
|
}, {}),
|
||||||
|
)
|
||||||
|
|
||||||
|
schema.backstory = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.appearance = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.scars = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.likes = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.dislikes = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.fears = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.vices = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.goals = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.ambitions = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.values = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.bonds = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
schema.name = new fields.StringField({ required: true, nullable: false, initial: "" })
|
|
||||||
schema.pronouns = new fields.StringField({ required: true, nullable: false, initial: "" })
|
schema.pronouns = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
schema.species = new fields.StringField({ required: true, nullable: false, initial: "" })
|
schema.species = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
schema.trait = new fields.StringField({ required: true, nullable: false, initial: "" })
|
schema.trait = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
schema.upright = new fields.StringField({ required: true, nullable: false, initial: "" })
|
|
||||||
schema.reversed = new fields.StringField({ required: true, nullable: false, initial: "" })
|
|
||||||
|
|
||||||
schema.heroPoints = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
schema.limboes = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
|
schema.ammo = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
|
|
||||||
schema.health = new fields.SchemaField({
|
const ammoField = (label) => {
|
||||||
staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
const schema = {
|
||||||
staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
label: new fields.StringField({ required: true, initial: label }),
|
||||||
wounds: new fields.NumberField({ ...requiredInteger, initial:0, min: 0 }),
|
value: new fields.StringField({ required: true, initial: "" }),
|
||||||
triageResults: new fields.StringField({ required: true, nullable: false, initial: "none", choices: SYSTEM.TRIAGE_RESULTS })
|
}
|
||||||
|
return new fields.SchemaField(schema, { label })
|
||||||
|
}
|
||||||
|
schema.ammoArray = new fields.SchemaField(
|
||||||
|
Object.values(SYSTEM.AMMO_TYPES).reduce((obj, ammo) => {
|
||||||
|
obj[ammo.id] = ammoField(ammo.label)
|
||||||
|
return obj
|
||||||
|
}, {}),
|
||||||
|
)
|
||||||
|
|
||||||
|
schema.mortality = new fields.SchemaField({
|
||||||
|
/* Enabled: Array of 5 boolean field */
|
||||||
|
enabled: new fields.ArrayField(new fields.BooleanField(),
|
||||||
|
{ required: true, initial: [false, false, false, false, false], min:5, max:5 }),
|
||||||
|
|
||||||
|
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.enc = new fields.SchemaField({
|
schema.trauma = new fields.SchemaField({
|
||||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.armor = new fields.SchemaField({
|
schema.darkness = new fields.SchemaField({
|
||||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.credits = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
schema.defense = new fields.SchemaField({
|
||||||
schema.rank = new fields.SchemaField({
|
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
experienced: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }),
|
bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
expert: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }),
|
total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
veteran: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }),
|
resistance: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
elite: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 }),
|
})
|
||||||
legend: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0, max: 5 })
|
|
||||||
|
schema.movement = new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
reduce: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
})
|
||||||
|
|
||||||
|
schema.experience = new fields.SchemaField({
|
||||||
|
training: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||||
})
|
})
|
||||||
|
|
||||||
schema.biodata = new fields.SchemaField({
|
schema.biodata = new fields.SchemaField({
|
||||||
age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }),
|
age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }),
|
||||||
height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }),
|
|
||||||
weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }),
|
|
||||||
gender: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
gender: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
home: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }),
|
||||||
birthplace: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
|
||||||
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
hair: new fields.StringField({ required: true, nullable: false, initial: "" })
|
birthplace: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
|
hair: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
|
home: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
|
weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }),
|
||||||
|
apparentAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }),
|
||||||
|
chronologicalAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }),
|
||||||
|
dod: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
|
soul: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||||
|
aliases: new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||||
})
|
})
|
||||||
|
|
||||||
return schema
|
return schema
|
||||||
@@ -65,10 +138,6 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isEncumbered() {
|
|
||||||
return this.enc.value > this.enc.max
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
/**
|
/**
|
||||||
* Rolls a dice for a character.
|
* Rolls a dice for a character.
|
||||||
@@ -86,7 +155,6 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel {
|
|||||||
actorId: this.parent.id,
|
actorId: this.parent.id,
|
||||||
actorName: this.parent.name,
|
actorName: this.parent.name,
|
||||||
actorImage: this.parent.img,
|
actorImage: this.parent.img,
|
||||||
talents: this.parent.items.filter(i => i.type === "talent" && i.system.isAdvantage),
|
|
||||||
hasTarget,
|
hasTarget,
|
||||||
target: opponentTarget
|
target: opponentTarget
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
import { SYSTEM } from "../config/system.mjs"
|
|
||||||
import HellbornRoll from "../documents/roll.mjs"
|
|
||||||
|
|
||||||
export default class HellbornCreature extends foundry.abstract.TypeDataModel {
|
|
||||||
static defineSchema() {
|
|
||||||
const fields = foundry.data.fields
|
|
||||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
|
||||||
const schema = {}
|
|
||||||
|
|
||||||
|
|
||||||
schema.terrain = new fields.StringField({ required: true, nullable: false, initial: "cave", choices: SYSTEM.CREATURE_TERRAIN_TYPES })
|
|
||||||
schema.niche = new fields.StringField({ required: true, nullable: false, initial: "prey", choices: SYSTEM.CREATURE_NICHES })
|
|
||||||
schema.size = new fields.StringField({ required: true, nullable: false, initial: "small", choices: SYSTEM.CREATURE_SIZES })
|
|
||||||
|
|
||||||
schema.numberAppearing = new fields.StringField({ required: true, initial: "1d6" })
|
|
||||||
schema.health = new fields.SchemaField({
|
|
||||||
staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
|
||||||
staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }),
|
|
||||||
})
|
|
||||||
schema.damage = new fields.StringField({ required: true, initial: "1d6" })
|
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
|
|
||||||
return schema
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Creature"]
|
|
||||||
|
|
||||||
isEncumbered() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
async roll(rollType, rollItem) {
|
|
||||||
let opponentTarget
|
|
||||||
const hasTarget = opponentTarget !== undefined
|
|
||||||
|
|
||||||
let roll = await HellbornRoll.prompt({
|
|
||||||
rollType,
|
|
||||||
rollItem,
|
|
||||||
actorId: this.parent.id,
|
|
||||||
actorName: this.parent.name,
|
|
||||||
actorImage: this.parent.img,
|
|
||||||
traits: this.parent.items.filter(i => i.type === "creature-trait" && i.system.isAdvantage),
|
|
||||||
abilities: this.parent.items.filter(i => i.type === "creature-ability" && i.system.isAdvantage),
|
|
||||||
isEncumbered: this.isEncumbered(),
|
|
||||||
hasTarget,
|
|
||||||
target: opponentTarget
|
|
||||||
})
|
|
||||||
if (!roll) return null
|
|
||||||
|
|
||||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
16
module/models/deal.mjs
Normal file
16
module/models/deal.mjs
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import { SYSTEM } from "../config/system.mjs";
|
||||||
|
|
||||||
|
export default class HellbornDeal extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
const schema = {};
|
||||||
|
|
||||||
|
schema.promisor = new fields.StringField({ required: true, initial: "" });
|
||||||
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
|
||||||
|
return schema;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static LOCALIZATION_PREFIXES = ["HELLBORN.Deal"];
|
||||||
|
}
|
||||||
88
module/models/enemy.mjs
Normal file
88
module/models/enemy.mjs
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
import { SYSTEM } from "../config/system.mjs"
|
||||||
|
import HellbornRoll from "../documents/roll.mjs"
|
||||||
|
|
||||||
|
export default class HellbornEnemy extends foundry.abstract.TypeDataModel {
|
||||||
|
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields
|
||||||
|
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||||
|
const schema = {}
|
||||||
|
|
||||||
|
schema.enemyType = new fields.StringField({
|
||||||
|
required: true,
|
||||||
|
initial: "mook",
|
||||||
|
choices: SYSTEM.ENEMY_TYPES
|
||||||
|
})
|
||||||
|
|
||||||
|
const statField = (label) => {
|
||||||
|
const schema = {
|
||||||
|
label: new fields.StringField({ required: true, initial: label }),
|
||||||
|
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
|
||||||
|
}
|
||||||
|
return new fields.SchemaField(schema, { label })
|
||||||
|
}
|
||||||
|
|
||||||
|
schema.stats = new fields.SchemaField(
|
||||||
|
Object.values(SYSTEM.STATS).reduce((obj, stat) => {
|
||||||
|
obj[stat.id] = statField(stat.label)
|
||||||
|
return obj
|
||||||
|
}, {}),
|
||||||
|
)
|
||||||
|
schema.flavorText = new fields.StringField({ required: true, initial: "", textSearch: true })
|
||||||
|
|
||||||
|
schema.trauma = new fields.SchemaField({
|
||||||
|
current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
})
|
||||||
|
|
||||||
|
schema.darkness = new fields.SchemaField({
|
||||||
|
current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||||
|
})
|
||||||
|
|
||||||
|
schema.defense = new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
resistance: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
maleficDR: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
resilience: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
})
|
||||||
|
|
||||||
|
schema.movement = new fields.SchemaField({
|
||||||
|
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
reduce: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
|
||||||
|
return schema
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static LOCALIZATION_PREFIXES = ["HELLBORN.Enemy"]
|
||||||
|
|
||||||
|
async roll(rollType, rollItem) {
|
||||||
|
let opponentTarget
|
||||||
|
const hasTarget = opponentTarget !== undefined
|
||||||
|
|
||||||
|
let roll = await HellbornRoll.prompt({
|
||||||
|
rollType,
|
||||||
|
rollItem,
|
||||||
|
actorId: this.parent.id,
|
||||||
|
actorName: this.parent.name,
|
||||||
|
actorImage: this.parent.img,
|
||||||
|
traits: this.parent.items.filter(i => i.type === "trait"),
|
||||||
|
hasTarget,
|
||||||
|
target: opponentTarget
|
||||||
|
})
|
||||||
|
if (!roll) return null
|
||||||
|
|
||||||
|
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
27
module/models/tarot.mjs
Normal file
27
module/models/tarot.mjs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { SYSTEM } from "../config/system.mjs";
|
||||||
|
|
||||||
|
export default class HellbornTarot extends foundry.abstract.TypeDataModel {
|
||||||
|
static defineSchema() {
|
||||||
|
const fields = foundry.data.fields;
|
||||||
|
const schema = {};
|
||||||
|
|
||||||
|
schema.quote = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||||
|
schema.bonus = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||||
|
schema.penalty = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||||
|
|
||||||
|
schema.orientation = new fields.StringField({ required: true, initial: "Upright", choices: {"Upright": {label: "Upright"}, "Downright": {label: "Downright"}} });
|
||||||
|
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.positiveEffect = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.negativeEffect = new fields.HTMLField({ required: true, textSearch: true })
|
||||||
|
schema.image = new fields.FilePathField({
|
||||||
|
required: false,
|
||||||
|
categories: ["IMAGE"],
|
||||||
|
default: "icons/svg/treasure.svg",
|
||||||
|
})
|
||||||
|
|
||||||
|
return schema;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @override */
|
||||||
|
static LOCALIZATION_PREFIXES = ["HELLBORN.Tarot"];
|
||||||
|
}
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
import { SYSTEM } from "../config/system.mjs"
|
|
||||||
import HellbornRoll from "../documents/roll.mjs"
|
|
||||||
|
|
||||||
export default class HellbornVehicle extends foundry.abstract.TypeDataModel {
|
|
||||||
static defineSchema() {
|
|
||||||
const fields = foundry.data.fields
|
|
||||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
|
||||||
const schema = {}
|
|
||||||
|
|
||||||
schema.agility = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
|
||||||
schema.armor = new fields.StringField({ required: true, initial: "" })
|
|
||||||
schema.cargo = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
|
||||||
schema.crew = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
|
|
||||||
schema.force = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
|
|
||||||
schema.range = new fields.StringField({ required: true, initial: "1d6" })
|
|
||||||
schema.speed = new fields.StringField({ required: true, initial: "1d6" })
|
|
||||||
schema.techAge = new fields.StringField({ required: true, initial: "1d6" })
|
|
||||||
schema.tonnage = new fields.NumberField({ required: true, initial: 1, min: 0 })
|
|
||||||
schema.damages = new fields.StringField({ required: true, initial: "" })
|
|
||||||
|
|
||||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
|
||||||
|
|
||||||
return schema
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @override */
|
|
||||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Vehicle"]
|
|
||||||
|
|
||||||
isEncumbered() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
async roll(rollType, rollItem) {
|
|
||||||
let opponentTarget
|
|
||||||
const hasTarget = opponentTarget !== undefined
|
|
||||||
|
|
||||||
let roll = await HellbornRoll.prompt({
|
|
||||||
rollType,
|
|
||||||
rollItem,
|
|
||||||
actorId: this.parent.id,
|
|
||||||
actorName: this.parent.name,
|
|
||||||
actorImage: this.parent.img,
|
|
||||||
isEncumbered: this.isEncumbered(),
|
|
||||||
hasTarget,
|
|
||||||
target: opponentTarget
|
|
||||||
})
|
|
||||||
if (!roll) return null
|
|
||||||
|
|
||||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -168,7 +168,22 @@ export default class HellbornUtils {
|
|||||||
Handlebars.registerHelper('isCreature', function (key) {
|
Handlebars.registerHelper('isCreature', function (key) {
|
||||||
return key === "creature" || key === "daemon";
|
return key === "creature" || key === "daemon";
|
||||||
})
|
})
|
||||||
|
Handlebars.registerHelper('getRomanLevel', function (level) {
|
||||||
|
if (level=== "highpowers") return "High";
|
||||||
|
if (level === "mastery") return "Mastery";
|
||||||
|
level = parseInt(level);
|
||||||
|
if (level === 0) return "0";
|
||||||
|
if (level === 1) return "I";
|
||||||
|
if (level === 2) return "II";
|
||||||
|
if (level === 3) return "III";
|
||||||
|
if (level === 4) return "IV";
|
||||||
|
if (level === 5) return "V";
|
||||||
|
if (level === 6) return "VI";
|
||||||
|
if (level === 7) return "VII";
|
||||||
|
if (level === 8) return "VIII";
|
||||||
|
if (level === 9) return "IX";
|
||||||
|
return level;
|
||||||
|
})
|
||||||
// Handle v12 removal of this helper
|
// Handle v12 removal of this helper
|
||||||
Handlebars.registerHelper('select', function (selected, options) {
|
Handlebars.registerHelper('select', function (selected, options) {
|
||||||
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
|
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected));
|
||||||
@@ -178,21 +193,4 @@ export default class HellbornUtils {
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static setupCSSRootVariables() {
|
|
||||||
const era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
|
|
||||||
|
|
||||||
let eraCSS = SYSTEM.ERA_CSS[era];
|
|
||||||
if (!eraCSS) eraCSS = SYSTEM.ERA_CSS["jazz"];
|
|
||||||
|
|
||||||
document.documentElement.style.setProperty('--font-size-standard', eraCSS.baseFontSize);
|
|
||||||
document.documentElement.style.setProperty('--font-size-title', eraCSS.titleFontSize);
|
|
||||||
document.documentElement.style.setProperty('--font-size-result', eraCSS.titleFontSize);
|
|
||||||
document.documentElement.style.setProperty('--font-primary', eraCSS.primaryFont);
|
|
||||||
document.documentElement.style.setProperty('--font-secondary', eraCSS.secondaryFont);
|
|
||||||
document.documentElement.style.setProperty('--font-title', eraCSS.titleFont);
|
|
||||||
document.documentElement.style.setProperty('--img-icon-color-filter', eraCSS.imgFilter);
|
|
||||||
document.documentElement.style.setProperty('--background-image-base', `linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/${era}_background_main.webp")`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.character-main {
|
.character-main {
|
||||||
background-color: var(--color-light-1);
|
/*background-color: var(--color-light-1);*/
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.character-pc {
|
.character-pc {
|
||||||
@@ -57,17 +57,6 @@
|
|||||||
flex: none;
|
flex: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*.character-dmax-edit {
|
|
||||||
input {
|
|
||||||
display: flex;
|
|
||||||
width: 60px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0 5px 0 5px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-right {
|
.character-right {
|
||||||
@@ -75,17 +64,32 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
|
|
||||||
.character-spec {
|
.character-definition {
|
||||||
label {
|
.form-group {
|
||||||
max-width: 6rem;
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
.hero-armor {
|
.splitted {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
flex-direction: row;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
input {
|
}
|
||||||
max-width: 3rem;
|
label {
|
||||||
}
|
max-width: 5rem;
|
||||||
|
min-width: 5rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
text-align: left;
|
||||||
|
min-width: 9rem;
|
||||||
|
max-width: 9rem;
|
||||||
|
margin-bottom: auto;
|
||||||
|
}
|
||||||
|
.trait {
|
||||||
|
min-width: 7rem;
|
||||||
|
max-width: 7rem;
|
||||||
|
margin-right: 1rem;
|
||||||
|
margin-bottom: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.character-name {
|
.character-name {
|
||||||
@@ -110,17 +114,17 @@
|
|||||||
min-width: 500px;
|
min-width: 500px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-skills {
|
.character-stats {
|
||||||
background-color: var(--color-light-1);
|
/*background-color: var(--color-light-1);*/
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 5px;
|
gap: 5px;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
.character-skill {
|
.character-stat {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.icon-skill {
|
.icon-stat {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
@@ -131,99 +135,27 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.rollable {
|
.rollable {
|
||||||
min-width: 4.5rem;
|
min-width: 3.5rem;
|
||||||
max-width: 4.5rem;
|
max-width: 3.5rem;
|
||||||
}
|
}
|
||||||
.char-text {
|
input {
|
||||||
margin-left: 0.5rem;
|
min-width: 2.5rem;
|
||||||
}
|
max-width: 2.5rem;
|
||||||
.d100 {
|
|
||||||
flex: 0;
|
|
||||||
max-width: 0.6rem;
|
|
||||||
}
|
|
||||||
.form-group {
|
|
||||||
flex: 0;
|
|
||||||
padding-left: 5px;
|
|
||||||
.form-fields {
|
|
||||||
font-size: 1.1rem;
|
|
||||||
flex: none;
|
|
||||||
width: 40px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-skill-play {
|
.character-stats-play {
|
||||||
min-width: 225px;
|
min-width: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-skill-edit {
|
.character-stats-edit {
|
||||||
min-width: 225px;
|
min-width: 120px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.character-biography {
|
.tab.character-status .main-div {
|
||||||
background-color: var(--color-light-1);
|
/*background-color: var(--color-light-1);*/
|
||||||
prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
.field-label {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rank {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(5, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 6rem;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
max-width: 4rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 12rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.resources {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 8rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.features,
|
|
||||||
.biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 3rem;
|
|
||||||
}
|
|
||||||
.feature {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.character-skills {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
legend {
|
legend {
|
||||||
@@ -232,137 +164,53 @@
|
|||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.skills {
|
.mortality {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.skill {
|
margin-left: 4px;
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
label {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.counters {
|
||||||
|
display: flex;
|
||||||
|
direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
.characteristics-label{
|
||||||
|
color: grey;
|
||||||
|
font-size:small;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
|
.spaced-left{
|
||||||
|
margin-left: 0.8rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
min-width: 2.5rem;
|
||||||
|
max-width: 2.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.ailments {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(5, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.ailment {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
min-width: 12.3rem;
|
min-width: 8rem;
|
||||||
max-width: 12.3rem;
|
max-width: 8rem;
|
||||||
.rollable:hover,
|
label {
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.score {
|
|
||||||
min-width: 1.2rem;
|
|
||||||
max-width: 1.2rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.character-status {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
legend {
|
|
||||||
a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bonds {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.bond {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 12rem;
|
|
||||||
max-width: 12rem;
|
|
||||||
}
|
|
||||||
.type {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.level {
|
|
||||||
min-width: 2rem;
|
|
||||||
max-width: 2rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.motivations {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.motivation {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 14rem;
|
|
||||||
max-width: 14rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 12rem;
|
|
||||||
max-width: 12rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.mentaldisorders {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.mentaldisorder {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 14rem;
|
|
||||||
max-width: 14rem;
|
|
||||||
}
|
|
||||||
.cured {
|
|
||||||
min-width: 5rem;
|
min-width: 5rem;
|
||||||
max-width: 5rem;
|
max-width: 5rem;
|
||||||
}
|
}
|
||||||
@@ -373,25 +221,42 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.perks {
|
||||||
.injuries {
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(1, 1fr);
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.injury {
|
.perk {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 16rem;
|
margin-left: 4px;
|
||||||
max-width: 16rem;
|
min-width: 20rem;
|
||||||
|
max-width: 20rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
.controls {
|
.controls {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
min-width: 1.8rem;
|
min-width: 1.8rem;
|
||||||
max-width: 1.8rem;
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
|
.flavor {
|
||||||
|
min-width: 24rem;
|
||||||
|
max-width: 24rem;
|
||||||
|
}
|
||||||
|
.role {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.level {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 14rem;
|
min-width: 10rem;
|
||||||
max-width: 14rem;
|
max-width: 10rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@@ -402,8 +267,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.character-talents {
|
.tab.character-maleficas .main-div {
|
||||||
background-color: var(--color-light-1);
|
/*background-color: var(--color-light-1);*/
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
legend {
|
legend {
|
||||||
@@ -413,33 +278,32 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.talents {
|
.maleficas {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.talent {
|
.malefica {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 18rem;
|
||||||
max-width: 13rem;
|
max-width: 18rem;
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
.controls {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
min-width: 1.8rem;
|
min-width: 1.8rem;
|
||||||
max-width: 1.8rem;
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
.name {
|
||||||
min-width: 10rem;
|
min-width: 12rem;
|
||||||
max-width: 10rem;
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.domain {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.level {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@@ -449,33 +313,40 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.languages {
|
.rituals {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(1, 1fr);
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.language {
|
.ritual {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
min-width: 13rem;
|
min-width: 14rem;
|
||||||
max-width: 13rem;
|
max-width: 14rem;
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
.controls {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
min-width: 1.8rem;
|
min-width: 1.8rem;
|
||||||
max-width: 1.8rem;
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.damage {
|
.ingredients {
|
||||||
min-width: 6rem;
|
min-width: 26rem;
|
||||||
max-width: 6rem;
|
max-width: 26rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 10rem;
|
min-width: 12rem;
|
||||||
max-width: 10rem;
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.difficulty {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.threshold {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.limit {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@@ -484,47 +355,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.psionics {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.psionic {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.character-equipment {
|
.tab.character-equipment .main-div {
|
||||||
background-color: var(--color-light-1);
|
/*background-color: var(--color-light-1);*/
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
legend {
|
legend {
|
||||||
@@ -533,59 +367,38 @@
|
|||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.encumbrance {
|
|
||||||
display: grid;
|
.limboes {
|
||||||
grid-template-columns: repeat(4, 1fr);
|
display: flex;
|
||||||
gap: 4px;
|
flex-direction: row;
|
||||||
|
.limboes-line {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 6rem;
|
||||||
|
max-width: 6rem;
|
||||||
|
}
|
||||||
|
.ammo-quantity {
|
||||||
|
text-align: left;
|
||||||
|
max-width: 3rem;
|
||||||
|
min-width: 3rem;
|
||||||
|
}
|
||||||
input {
|
input {
|
||||||
max-width: 4rem;
|
text-align: left;
|
||||||
}
|
min-width: 8rem;
|
||||||
.encumbered {
|
max-width: 8rem;
|
||||||
color: red;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.implants {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.implant {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.weapons {
|
.weapons {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(1, 1fr);
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
.weapon {
|
.weapon {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -603,13 +416,21 @@
|
|||||||
min-width: 1.8rem;
|
min-width: 1.8rem;
|
||||||
max-width: 1.8rem;
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
|
.properties {
|
||||||
|
min-width: 21rem;
|
||||||
|
max-width: 21rem;
|
||||||
|
}
|
||||||
|
.type {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
.damage {
|
.damage {
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
max-width: 6rem;
|
max-width: 6rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 10rem;
|
min-width: 12rem;
|
||||||
max-width: 10rem;
|
max-width: 12rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@@ -618,7 +439,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.armors {
|
.armors {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
@@ -634,13 +455,21 @@
|
|||||||
min-width: 1.8rem;
|
min-width: 1.8rem;
|
||||||
max-width: 1.8rem;
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.protection {
|
.bonus {
|
||||||
min-width: 6rem;
|
min-width: 2rem;
|
||||||
max-width: 6rem;
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.resilience {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
|
}
|
||||||
|
.reduction {
|
||||||
|
min-width: 2rem;
|
||||||
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 10rem;
|
min-width: 13.5rem;
|
||||||
max-width: 10rem;
|
max-width: 13.5rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@@ -671,8 +500,8 @@
|
|||||||
max-width: 1.8rem;
|
max-width: 1.8rem;
|
||||||
}
|
}
|
||||||
.name {
|
.name {
|
||||||
min-width: 10rem;
|
min-width: 12rem;
|
||||||
max-width: 10rem;
|
max-width: 12rem;
|
||||||
}
|
}
|
||||||
.item-img {
|
.item-img {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
@@ -689,3 +518,92 @@
|
|||||||
min-height: 150px;
|
min-height: 150px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tab.character-biography .main-div {
|
||||||
|
/*background-color: var(--color-light-1);*/
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
legend {
|
||||||
|
a {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.splitted-text {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 4px;
|
||||||
|
fieldset {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.deals {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.deal {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 10rem;
|
||||||
|
max-width: 10rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.biodata {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.experience {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
label {
|
||||||
|
min-width: 6rem;
|
||||||
|
max-width: 6rem;
|
||||||
|
}
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 14rem;
|
||||||
|
max-width: 14rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
text-align: left;
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prose-mirror.inactive {
|
||||||
|
min-height: 40px;
|
||||||
|
}
|
||||||
|
prose-mirror.active {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,700 +0,0 @@
|
|||||||
.creature-content {
|
|
||||||
.sheet-common();
|
|
||||||
.creature-sheet-common();
|
|
||||||
overflow: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sheet-tabs {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-main {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.creature-pc {
|
|
||||||
display: flex;
|
|
||||||
gap: 4px;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
.creature-left {
|
|
||||||
min-width: 180px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.creature-left-image {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
padding-bottom: 8px;
|
|
||||||
.creature-img {
|
|
||||||
height: 140px;
|
|
||||||
width: auto;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-hp {
|
|
||||||
gap: 2px;
|
|
||||||
align-items: center;
|
|
||||||
input {
|
|
||||||
flex: none;
|
|
||||||
width: 2.5rem;
|
|
||||||
margin-left: 2px;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
.hp-separator {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.2);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-dv,
|
|
||||||
.creature-dmax {
|
|
||||||
.form-fields {
|
|
||||||
flex: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.creature-dmax-edit {
|
|
||||||
input {
|
|
||||||
display: flex;
|
|
||||||
width: 60px;
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0 5px 0 5px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-right {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 5px;
|
|
||||||
|
|
||||||
.creature-spec {
|
|
||||||
label {
|
|
||||||
max-width: 8rem;
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.dice-2d6 {
|
|
||||||
max-width: 1.5rem;
|
|
||||||
}
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.rollable {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-name {
|
|
||||||
display: flex;
|
|
||||||
input {
|
|
||||||
font-family: var(--font-title);
|
|
||||||
font-size: var(--font-size-title);
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
label {
|
|
||||||
min-width: 120px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-pc-play {
|
|
||||||
min-width: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-pc-edit {
|
|
||||||
min-width: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-skills {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 5px;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
.creature-skill {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
.icon-skill {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.rollable {
|
|
||||||
min-width: 4.5rem;
|
|
||||||
max-width: 4.5rem;
|
|
||||||
}
|
|
||||||
.char-text {
|
|
||||||
margin-left: 0.5rem;
|
|
||||||
}
|
|
||||||
.d100 {
|
|
||||||
flex: 0;
|
|
||||||
max-width: 0.6rem;
|
|
||||||
}
|
|
||||||
.form-group {
|
|
||||||
flex: 0;
|
|
||||||
padding-left: 5px;
|
|
||||||
.form-fields {
|
|
||||||
font-size: 1.1rem;
|
|
||||||
flex: none;
|
|
||||||
width: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-skill-play {
|
|
||||||
min-width: 225px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-skill-edit {
|
|
||||||
min-width: 225px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.creature-biography {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
.field-label {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rank {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(5, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 6rem;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
max-width: 4rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 12rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.resources {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 8rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.features,
|
|
||||||
.biodata {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 8px;
|
|
||||||
label {
|
|
||||||
min-width: 3rem;
|
|
||||||
}
|
|
||||||
.feature {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.creature-skills {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
legend {
|
|
||||||
a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.skills {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.skill {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
margin-left: 4px;
|
|
||||||
min-width: 12.3rem;
|
|
||||||
max-width: 12.3rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.score {
|
|
||||||
min-width: 1.2rem;
|
|
||||||
max-width: 1.2rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.creature-status {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
legend {
|
|
||||||
a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bonds {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.bond {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 12rem;
|
|
||||||
max-width: 12rem;
|
|
||||||
}
|
|
||||||
.type {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.level {
|
|
||||||
min-width: 2rem;
|
|
||||||
max-width: 2rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.motivations {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.motivation {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 14rem;
|
|
||||||
max-width: 14rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 12rem;
|
|
||||||
max-width: 12rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.mentaldisorders {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.mentaldisorder {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 18rem;
|
|
||||||
max-width: 18rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 14rem;
|
|
||||||
max-width: 14rem;
|
|
||||||
}
|
|
||||||
.cured {
|
|
||||||
min-width: 5rem;
|
|
||||||
max-width: 5rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.injuries {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.injury {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 16rem;
|
|
||||||
max-width: 16rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 14rem;
|
|
||||||
max-width: 14rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.creature-traits {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
legend {
|
|
||||||
a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.traits {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.trait {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.abilities {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.ability {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.psionics {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.psionic {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab.creature-equipment {
|
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
legend {
|
|
||||||
a {
|
|
||||||
font-size: calc(var(--font-size-standard) * 1.4);
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.encumbrance {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(4, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
input {
|
|
||||||
max-width: 4rem;
|
|
||||||
}
|
|
||||||
.encumbered {
|
|
||||||
color: red;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.implants {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.implant {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.weapons {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.weapon {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.damage {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.armors {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.armor {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.protection {
|
|
||||||
min-width: 6rem;
|
|
||||||
max-width: 6rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.equipments {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 4px;
|
|
||||||
.equipment {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 4px;
|
|
||||||
min-width: 13rem;
|
|
||||||
max-width: 13rem;
|
|
||||||
.rollable:hover,
|
|
||||||
.rollable:focus {
|
|
||||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.controls {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
min-width: 1.8rem;
|
|
||||||
max-width: 1.8rem;
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
min-width: 10rem;
|
|
||||||
max-width: 10rem;
|
|
||||||
}
|
|
||||||
.item-img {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
prose-mirror.inactive {
|
|
||||||
min-height: 40px;
|
|
||||||
}
|
|
||||||
prose-mirror.active {
|
|
||||||
min-height: 150px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
37
styles/deal.less
Normal file
37
styles/deal.less
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
.deal-content {
|
||||||
|
.sheet-common();
|
||||||
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.form-group.long-input input {
|
||||||
|
min-width: 24rem;
|
||||||
|
max-width: 24rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.form-group input {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.form-group select {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
img {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
flex: 10%;
|
||||||
|
}
|
||||||
|
}
|
||||||
455
styles/enemy.less
Normal file
455
styles/enemy.less
Normal file
@@ -0,0 +1,455 @@
|
|||||||
|
.enemy-content {
|
||||||
|
.sheet-common();
|
||||||
|
.enemy-sheet-common();
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sheet-tabs {
|
||||||
|
background-color: var(--color-light-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-main {
|
||||||
|
/*background-color: var(--color-light-1);*/
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.enemy-pc {
|
||||||
|
display: flex;
|
||||||
|
gap: 4px;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.enemy-left {
|
||||||
|
min-width: 180px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.enemy-left-image {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
.enemy-img {
|
||||||
|
height: 140px;
|
||||||
|
width: auto;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-hp {
|
||||||
|
gap: 2px;
|
||||||
|
align-items: center;
|
||||||
|
input {
|
||||||
|
flex: none;
|
||||||
|
width: 2.5rem;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
.hp-separator {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.2);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-dv,
|
||||||
|
.enemy-dmax {
|
||||||
|
.form-fields {
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-right {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
|
||||||
|
.enemy-definition {
|
||||||
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.splitted {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
max-width: 5rem;
|
||||||
|
min-width: 5rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
text-align: left;
|
||||||
|
min-width: 18rem;
|
||||||
|
max-width: 18rem;
|
||||||
|
margin-bottom: auto;
|
||||||
|
}
|
||||||
|
.trait {
|
||||||
|
min-width: 7rem;
|
||||||
|
max-width: 7rem;
|
||||||
|
margin-right: 1rem;
|
||||||
|
margin-bottom: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.enemy-name {
|
||||||
|
display: flex;
|
||||||
|
input {
|
||||||
|
font-family: var(--font-title);
|
||||||
|
font-size: var(--font-size-title);
|
||||||
|
width: 400px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-pc-play {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-pc-edit {
|
||||||
|
min-width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-stats {
|
||||||
|
/*background-color: var(--color-light-1);*/
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.enemy-stat {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.icon-stat {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.rollable {
|
||||||
|
min-width: 3.5rem;
|
||||||
|
max-width: 3.5rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
min-width: 2.5rem;
|
||||||
|
max-width: 2.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-stats-play {
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enemy-stats-edit {
|
||||||
|
min-width: 120px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab.enemy-traits .main-div {
|
||||||
|
/*background-color: var(--color-light-1);*/
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
legend {
|
||||||
|
a {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.enemy-column {
|
||||||
|
display:flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 4px;
|
||||||
|
fieldset {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mortality {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
label {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.counters {
|
||||||
|
display: flex;
|
||||||
|
direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
.characteristics-label{
|
||||||
|
color: grey;
|
||||||
|
font-size:small;
|
||||||
|
label {
|
||||||
|
min-width: 3.5rem;
|
||||||
|
max-width: 3.5rem;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
|
.spaced-left{
|
||||||
|
margin-left: 0.8rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
min-width: 2.5rem;
|
||||||
|
max-width: 2.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.traits {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(1, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.trait {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 18rem;
|
||||||
|
max-width: 18rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.equipments {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.equipment {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 13rem;
|
||||||
|
max-width: 13rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.maleficas {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(1, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.malefica {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.domain {
|
||||||
|
min-width: 5rem;
|
||||||
|
max-width: 5rem;
|
||||||
|
}
|
||||||
|
.level {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 11rem;
|
||||||
|
max-width: 11rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.weapons {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(1, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.weapon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
min-width: 13rem;
|
||||||
|
max-width: 13rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.properties {
|
||||||
|
min-width: 21rem;
|
||||||
|
max-width: 21rem;
|
||||||
|
}
|
||||||
|
.type {
|
||||||
|
min-width: 4rem;
|
||||||
|
max-width: 4rem;
|
||||||
|
}
|
||||||
|
.damage {
|
||||||
|
min-width: 6rem;
|
||||||
|
max-width: 6rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab.enemy-biography .main-div {
|
||||||
|
/*background-color: var(--color-light-1);*/
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
legend {
|
||||||
|
a {
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.splitted-text {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 4px;
|
||||||
|
fieldset {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.deals {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.deal {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
|
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.controls {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
min-width: 1.8rem;
|
||||||
|
max-width: 1.8rem;
|
||||||
|
}
|
||||||
|
.name {
|
||||||
|
min-width: 10rem;
|
||||||
|
max-width: 10rem;
|
||||||
|
}
|
||||||
|
.item-img {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.biodata {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
.experience {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
.form-group {
|
||||||
|
label {
|
||||||
|
min-width: 6rem;
|
||||||
|
max-width: 6rem;
|
||||||
|
}
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
margin-left: 4px;
|
||||||
|
min-width: 14rem;
|
||||||
|
max-width: 14rem;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
text-align: left;
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prose-mirror.inactive {
|
||||||
|
min-height: 40px;
|
||||||
|
}
|
||||||
|
prose-mirror.active {
|
||||||
|
min-height: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -22,7 +21,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
|||||||
@@ -5,10 +5,12 @@
|
|||||||
@import "mixins.less";
|
@import "mixins.less";
|
||||||
@import "character.less";
|
@import "character.less";
|
||||||
@import "vehicle.less";
|
@import "vehicle.less";
|
||||||
@import "creature.less";
|
@import "enemy.less";
|
||||||
@import "weapon.less";
|
@import "weapon.less";
|
||||||
@import "equipment.less";
|
@import "equipment.less";
|
||||||
@import "armor.less";
|
@import "armor.less";
|
||||||
|
@import "deal.less";
|
||||||
|
@import "tarot.less";
|
||||||
@import "ritual.less";
|
@import "ritual.less";
|
||||||
@import "perk.less";
|
@import "perk.less";
|
||||||
@import "malefica.less";
|
@import "malefica.less";
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
:root {
|
:root {
|
||||||
--font-size-standard: 0.9rem;
|
--font-size-standard: 0.9rem;
|
||||||
--font-size-result: 1.4rem;
|
--font-size-result: 1.4rem;
|
||||||
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
|
--background-image-base: url("../assets/ui/sheet_background_01.webp");
|
||||||
url("../assets/ui/ftl_nomad_background_01.webp");
|
|
||||||
--font-primary: "MinionProRegular";
|
--font-primary: "MinionProRegular";
|
||||||
--font-secondary: "MinionProRegular";
|
--font-secondary: "MinionProRegular";
|
||||||
--font-title: "SupernaturalKnight";
|
--font-title: "SupernaturalKnight";
|
||||||
--logo-standard: url("../assets/ui/pentagram_logo.webp");
|
--logo-standard: url("../assets/ui/pentagram_logo.webp");
|
||||||
--title-color: #f0443c;
|
--title-color: #f0443c;
|
||||||
--background-box: ##e0dcdc;
|
--background-box: #e0dcdc;
|
||||||
--color-success: rgb(15, 122, 15);
|
--color-success: rgb(15, 122, 15);
|
||||||
--color-failure: darkred;
|
--color-failure: darkred;
|
||||||
--color-warning: darkorange;
|
--color-warning: darkorange;
|
||||||
@@ -16,15 +15,9 @@
|
|||||||
--color-critical-failure: rgb(141, 32, 231);
|
--color-critical-failure: rgb(141, 32, 231);
|
||||||
}
|
}
|
||||||
|
|
||||||
.d100 {
|
body {
|
||||||
width: 18px;
|
--color-light-1: rgba(182, 178, 178, 0.6);
|
||||||
height: 18px;
|
--color-warm-1:#f0443c;
|
||||||
color: black;
|
|
||||||
border-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item .thumbnail,
|
|
||||||
.item-img {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#logo {
|
#logo {
|
||||||
@@ -34,15 +27,25 @@
|
|||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scrollable-content {
|
||||||
|
max-height: 600px; // Définissez la hauteur maximale selon vos besoins
|
||||||
|
overflow-y: auto; // Active le défilement vertical quand nécessaire
|
||||||
|
padding-right: 10px; // Espace pour la barre de défilement
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.tabs [data-tab] {
|
||||||
|
color: var(--title-color);
|
||||||
|
}
|
||||||
|
|
||||||
#pause > img {
|
#pause > img {
|
||||||
content: var(--logo-standard);
|
content: var(--logo-standard);
|
||||||
height: 192px;
|
height: 256px;
|
||||||
width: 256px;
|
width: 256px;
|
||||||
top: -45px;
|
top: -45px;
|
||||||
left: calc(50% - 96px);
|
left: calc(50% - 96px);
|
||||||
}
|
}
|
||||||
|
|
||||||
i.fvtt-ftl-nomad {
|
i.fvtt-hellborn {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
background-image: var(--logo-standard);
|
background-image: var(--logo-standard);
|
||||||
@@ -55,7 +58,7 @@ i.fvtt-ftl-nomad {
|
|||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.application.dialog.fvtt-ftl-nomad {
|
.application.dialog.fvtt-hellborn {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1.0);
|
||||||
background-image: var(--background-image-base);
|
background-image: var(--background-image-base);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -26,7 +25,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.creature-sheet-common {
|
.enemy-sheet-common {
|
||||||
label {
|
label {
|
||||||
font-family: var(--font-secondary);
|
font-family: var(--font-secondary);
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1.0);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -27,7 +26,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
|||||||
@@ -4,13 +4,10 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.form-group label {
|
|
||||||
}
|
|
||||||
.form-group.long-input input {
|
.form-group.long-input input {
|
||||||
min-width: 24rem;
|
min-width: 24rem;
|
||||||
max-width: 24rem;
|
max-width: 24rem;
|
||||||
@@ -27,7 +24,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.application.dialog.fvtt-cthulhu-eternal {
|
.application.dialog.fvtt-hellborn {
|
||||||
color: var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
background-color: var(--color-light-1);
|
background-color: var(--color-light-1);
|
||||||
|
|
||||||
@@ -10,13 +10,14 @@
|
|||||||
|
|
||||||
input,
|
input,
|
||||||
select {
|
select {
|
||||||
|
text-align: left;
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
border-color: var(--color-dark-6);
|
border-color: var(--color-dark-6);
|
||||||
color: var(--color-dark-2);
|
color: var(--color-dark-2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.fvtt-cthulhu-eternal-roll-dialog {
|
.fvtt-hellborn-roll-dialog {
|
||||||
fieldset {
|
fieldset {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: var(--color-light-1);
|
background-color: var(--color-light-1);
|
||||||
@@ -53,6 +54,27 @@
|
|||||||
color: var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.item-to-chat {
|
||||||
|
h2 {
|
||||||
|
margin-left:10px;
|
||||||
|
font-family: var(--font-title);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1.4);
|
||||||
|
color: var(--title-color);
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
li {
|
||||||
|
margin: 0 10px;
|
||||||
|
font-family: var(--font-primary);
|
||||||
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&.dice-roll {
|
&.dice-roll {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
@@ -70,7 +92,7 @@
|
|||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
.intro-chat {
|
.intro-chat {
|
||||||
color:var(--color-dark-1);
|
color: var(--color-dark-1);
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
@@ -91,19 +113,24 @@
|
|||||||
li {
|
li {
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
}
|
}
|
||||||
.nudge-roll {
|
.nudge-roll {
|
||||||
font-size: calc(var(--font-size-standard) * 1.0);
|
font-size: calc(var(--font-size-standard) * 1);
|
||||||
margin-left: 4rem;
|
margin-left: 4rem;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.result-unknown {
|
||||||
|
color: var(--color-dark-2);
|
||||||
|
font-family: var(--font-title);
|
||||||
|
font-size: var(--font-size-result);
|
||||||
|
}
|
||||||
.result-success {
|
.result-success {
|
||||||
color: var(--color-success);
|
color: var(--color-success);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.result-critical-success {
|
.result-satanic-success {
|
||||||
color: var(--color-critical-success);
|
color: var(--color-critical-success);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: var(--font-size-result);
|
||||||
@@ -113,7 +140,7 @@
|
|||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: var(--font-size-result);
|
||||||
}
|
}
|
||||||
.result-critical-failure {
|
.result-fiendish-failure {
|
||||||
color: var(--color-critical-failure);
|
color: var(--color-critical-failure);
|
||||||
font-family: var(--font-title);
|
font-family: var(--font-title);
|
||||||
font-size: var(--font-size-result);
|
font-size: var(--font-size-result);
|
||||||
|
|||||||
@@ -4,11 +4,26 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.form-group.long-input input {
|
||||||
|
min-width: 24rem;
|
||||||
|
max-width: 24rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.form-group input {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.form-group select {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
|||||||
37
styles/tarot.less
Normal file
37
styles/tarot.less
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
.tarot-content {
|
||||||
|
.sheet-common();
|
||||||
|
.item-sheet-common();
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
margin-top: 8px;
|
||||||
|
.form-group {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.form-group.long-input input {
|
||||||
|
min-width: 24rem;
|
||||||
|
max-width: 24rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.form-group input {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
.form-group select {
|
||||||
|
min-width: 12rem;
|
||||||
|
max-width: 12rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
display: flex;
|
||||||
|
img {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
flex: 10%;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
.item-sheet-common();
|
.item-sheet-common();
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
background-color: var(--color-light-1);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
img {
|
img {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
@@ -13,7 +12,6 @@
|
|||||||
|
|
||||||
fieldset {
|
fieldset {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
background-color: var(--color-light-1);
|
|
||||||
.form-group {
|
.form-group {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -33,9 +33,8 @@
|
|||||||
],
|
],
|
||||||
"documentTypes": {
|
"documentTypes": {
|
||||||
"Actor": {
|
"Actor": {
|
||||||
"character": { "htmlFields": ["description", "notes"] },
|
"character": { "htmlFields": ["backstory", "notes", "appearance", "scars", "likes", "dislikes", "fears", "vices", "goals", "ammbitions", "values", "bonds"] },
|
||||||
"monster": { "htmlFields": ["description", "notes"] },
|
"enemy": { "htmlFields": ["description", "notes"] }
|
||||||
"vehicle": { "htmlFields": ["description", "notes"] }
|
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
"perk": { "htmlFields": ["description"] },
|
"perk": { "htmlFields": ["description"] },
|
||||||
@@ -44,7 +43,9 @@
|
|||||||
"equipment": { "htmlFields": ["description"] },
|
"equipment": { "htmlFields": ["description"] },
|
||||||
"malefica": { "htmlFields": ["description"] },
|
"malefica": { "htmlFields": ["description"] },
|
||||||
"species-trait": { "htmlFields": ["description"] },
|
"species-trait": { "htmlFields": ["description"] },
|
||||||
"ritual": { "htmlFields": ["description"] }
|
"ritual": { "htmlFields": ["description"] },
|
||||||
|
"tarot": { "htmlFields": ["description", "positiveEffect", "negativeEFfect"] },
|
||||||
|
"deal": { "htmlFields": ["description"] }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"packs": [
|
"packs": [
|
||||||
|
|||||||
@@ -1,34 +1,146 @@
|
|||||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||||
|
<div class="main-div">
|
||||||
|
|
||||||
<fieldset class="rank">
|
<fieldset class="biodata">
|
||||||
<legend>Rank</legend>
|
<legend>{{localize "HELLBORN.Label.experience"}}</legend>
|
||||||
{{formField systemFields.rank.fields.experienced value=system.rank.experienced type="number" rootId=partId disabled=isPlayMode}}
|
<div class="experience">
|
||||||
{{formField systemFields.rank.fields.expert value=system.rank.expert type="number" rootId=partId disabled=isPlayMode}}
|
{{formField systemFields.experience.fields.current value=system.experience.current type="number" rootId=partId
|
||||||
{{formField systemFields.rank.fields.veteran value=system.rank.veteran type="number" rootId=partId disabled=isPlayMode}}
|
disabled=isPlayMode}}
|
||||||
{{formField systemFields.rank.fields.elite value=system.rank.elite type="number" rootId=partId disabled=isPlayMode}}
|
</div>
|
||||||
{{formField systemFields.rank.fields.legend value=system.rank.legend type="number" rootId=partId disabled=isPlayMode}}
|
<div class="experience">
|
||||||
|
{{formField systemFields.experience.fields.total value=system.experience.total type="number" rootId=partId
|
||||||
|
disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="experience">
|
||||||
|
{{formField systemFields.experience.fields.training value=system.experience.training type="number" rootId=partId
|
||||||
|
disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="biodata">
|
<fieldset class="biodata">
|
||||||
<legend>{{localize "HELLBORN.Label.biodata"}}</legend>
|
<legend>{{localize "HELLBORN.Label.biodata"}}</legend>
|
||||||
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode classes="short"}}
|
<div class="experience">
|
||||||
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode classes="short"}}
|
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode}}
|
||||||
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode classes="short"}}
|
</div>
|
||||||
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode classes="short"}}
|
<div class="experience">
|
||||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode classes="short"}}
|
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode}}
|
||||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode classes="short"}}
|
</div>
|
||||||
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
<div class="experience">
|
||||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId disabled=isPlayMode}}
|
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="experience">
|
||||||
|
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="experience">
|
||||||
|
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="experience">
|
||||||
|
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="experience">
|
||||||
|
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="experience">
|
||||||
|
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId
|
||||||
|
disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "HELLBORN.Label.description"}}</legend>
|
<legend>{{localize "HELLBORN.Label.deals"}}{{#if isEditMode}}
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addDeals"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createDeal"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="deals">
|
||||||
|
{{#each deals as |item|}}
|
||||||
|
<div class="deal" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "HELLBORN.Label.notes"}}</legend>
|
<legend>{{localize "HELLBORN.Label.backstory"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput systemFields.backstory enriched=enrichedBackstory value=system.backstory name="system.backstory" toggled=true}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="splitted-text">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.appearance"}}</legend>
|
||||||
|
{{formInput systemFields.appearance enriched=enrichedAppearance value=system.appearance name="system.appearance"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.scars"}}</legend>
|
||||||
|
{{formInput systemFields.scars enriched=scars value=system.scars name="system.scars"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="splitted-text">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.likes"}}</legend>
|
||||||
|
{{formInput systemFields.likes enriched=enrichedLikes value=system.likes name="system.likes"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.dislikes"}}</legend>
|
||||||
|
{{formInput systemFields.dislikes enriched=enrichedDislikes value=system.dislikes name="system.dislikes"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="splitted-text">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.fears"}}</legend>
|
||||||
|
{{formInput systemFields.fears enriched=enrichedFears value=system.fears name="system.fears"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.vices"}}</legend>
|
||||||
|
{{formInput systemFields.vices enriched=enrichedVices value=system.vices name="system.vices"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="splitted-text">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.goals"}}</legend>
|
||||||
|
{{formInput systemFields.goals enriched=enrichedGoals value=system.goals name="system.goals"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.ambitions"}}</legend>
|
||||||
|
{{formInput systemFields.ambitions enriched=enrichedAmbitions value=system.ambitions name="system.ambitions"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="splitted-text">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.values"}}</legend>
|
||||||
|
{{formInput systemFields.values enriched=enrichedValues value=system.values name="system.values"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.bonds"}}</legend>
|
||||||
|
{{formInput systemFields.bonds enriched=enrichedBonds value=system.bonds name="system.bonds"
|
||||||
|
toggled=true}}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -1,126 +1,111 @@
|
|||||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||||
|
<div class="main-div">
|
||||||
|
|
||||||
<fieldset class="encumbrance">
|
<fieldset>
|
||||||
{{#if isEncumbered}}
|
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
||||||
{{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true classes="encumbered"}}
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||||
{{else }}
|
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||||
{{formField systemFields.enc.fields.value value=system.enc.value rootId=partId disabled=true}}
|
</legend>
|
||||||
{{/if}}
|
<div class="weapons">
|
||||||
{{formField systemFields.enc.fields.max value=system.enc.max rootId=partId disabled=isPlayMode}}
|
{{#each weapons as |item|}}
|
||||||
{{formField systemFields.credits value=system.credits rootId=partId }}
|
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
<i class="fa-regular fa-dice"></i>
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
{{item.name}}
|
||||||
</legend>
|
</div>
|
||||||
<div class="weapons">
|
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
|
||||||
{{#each weapons as |item|}}
|
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
|
||||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||||
<i class="fa-regular fa-dice"></i>
|
data-roll-type="damage" data-roll-value="{{item.system.damage}}">
|
||||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
<i class="fa-regular fa-dice"></i>
|
||||||
{{item.name}}
|
{{item.system.damage}}</a>
|
||||||
</div>
|
|
||||||
|
<div class="controls">
|
||||||
<i class="fa-regular fa-dice"></i>
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
data-roll-value="{{item.system.damage}}">
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
{{localize "HELLBORN.Label.damageShort"}} :
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
{{item.system.damage}}</a>
|
</div>
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
</fieldset>
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "HELLBORN.Label.armors"}}{{#if isEditMode}}
|
<legend>{{localize "HELLBORN.Label.armors"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i
|
||||||
class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}
|
class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}
|
||||||
</legend>
|
</legend>
|
||||||
<div class="armors">
|
<div class="armors">
|
||||||
{{#each armors as |item|}}
|
{{#each armors as |item|}}
|
||||||
<div class="armor item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
<div class="armor item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
</div>
|
</div>
|
||||||
<span class="protection">{{localize "HELLBORN.Label.armor"}} : {{item.system.protection}}</span>
|
<span class="bonus" data-tooltip="Bonus">{{item.system.bonus}}</span>
|
||||||
<div class="controls">
|
<span class="resilience" data-tooltip="Resilience">{{item.system.resilience}}</span>
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<span class="reduction" data-tooltip="Reduction">{{item.system.reduction}}</span>
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
<div class="controls">
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
</fieldset>
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "HELLBORN.Label.implants"}}{{#if isEditMode}}
|
<legend>{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addTalent"}}" data-tooltip-direction="UP"><i
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
||||||
class="fas fa-plus" data-action="createImplant"></i></a>{{/if}}
|
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||||
</legend>
|
</legend>
|
||||||
<div class="implants">
|
<div class="equipments">
|
||||||
{{#each implants as |item|}}
|
{{#each equipments as |item|}}
|
||||||
{{!log 'weapon' this}}
|
{{!log 'armor' this}}
|
||||||
<div class="implant item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
{{item.name}}
|
||||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
</div>
|
||||||
{{item.name}}
|
<div class="controls">
|
||||||
</div>
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
data-roll-value="{{item.system.damage}}">
|
</div>
|
||||||
{{#if item.system.isAdvantage}}
|
|
||||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
|
||||||
{{else}}
|
|
||||||
{{/if}}
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
</div>
|
||||||
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
</fieldset>
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset class="limboes">
|
||||||
<legend>{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
|
<legend>Limboes and Ammo</legend>
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
<div class="limboes-line">
|
||||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
<div class="ammo-item">
|
||||||
</legend>
|
<input type="text" class="limboes-name" value="{{system.limboes}}" name="system.limboes"/>
|
||||||
<div class="equipments">
|
<span class="limboes-quantity">Limboes</span>
|
||||||
{{#each equipments as |item|}}
|
</div>
|
||||||
{{!log 'armor' this}}
|
|
||||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
|
<div class="ammo-item">
|
||||||
|
<input type="text" class="ammo" value="{{system.ammo}}" name="system.ammo"/>
|
||||||
|
<span class="limboes-quantity">Ammo</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{#each system.ammoArray as |ammo key|}}
|
||||||
|
<div class="ammo-item">
|
||||||
|
<input type="text" class="ammo-quantity" value="{{ammo.value}}" min="0" name="system.ammoArray.{{key}}.value" />
|
||||||
|
<span class="ammo-name">{{upperFirst ammo.label}}</span>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -8,16 +8,6 @@
|
|||||||
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
||||||
data-tooltip="{{actor.name}}" />
|
data-tooltip="{{actor.name}}" />
|
||||||
</div>
|
</div>
|
||||||
<fieldset class="character-hp">
|
|
||||||
<legend>{{localize "HELLBORN.Label.Stamina"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.health.fields.staminaValue value=system.health.staminaValue}}
|
|
||||||
{{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId disabled=true}}
|
|
||||||
</div>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.health.fields.wounds value=system.health.wounds }}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="character-right">
|
<div class="character-right">
|
||||||
@@ -28,13 +18,55 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="character-spec">
|
<fieldset class="character-definition">
|
||||||
{{formField systemFields.concept value=system.concept rootId=partId disabled=isPlayMode}}
|
<div class="splitted">
|
||||||
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
<div>
|
||||||
{{formField systemFields.archetype value=system.archetype rootId=partId disabled=isPlayMode}}
|
<div class="flexcol">
|
||||||
<div class="hero-armor">
|
{{formField systemFields.pronouns value=system.pronouns rootId=partId disabled=isPlayMode}}
|
||||||
{{formField systemFields.heroPoints value=system.heroPoints rootId=partId }}
|
</div>
|
||||||
{{formField systemFields.armor.fields.value value=system.armor.value rootId=partId disabled=isPlayMode}}
|
<div class="flexcol">
|
||||||
|
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Trait</label>
|
||||||
|
<input class="trait" type="text" value="{{trait.name}}" disabled >
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{trait.id}}"
|
||||||
|
data-item-uuid="{{trait.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{trait.id}}"
|
||||||
|
data-item-uuid="{{trait.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Upright</label>
|
||||||
|
<input class="trait" type="text" value="{{upright.name}}" disabled >
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{upright.id}}"
|
||||||
|
data-item-uuid="{{upright.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{upright.id}}"
|
||||||
|
data-item-uuid="{{upright.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Reversed</label>
|
||||||
|
<input class="trait" type="text" value="{{downright.name}}" disabled >
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{downright.id}}"
|
||||||
|
data-item-uuid="{{downright.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{downright.id}}"
|
||||||
|
data-item-uuid="{{downright.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
@@ -42,58 +74,33 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="character-skills character-skills-{{ifThen isPlayMode 'play' 'edit'}}">
|
<fieldset class="character-stats character-stats-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
<legend>{{localize "HELLBORN.Label.skills"}}</legend>
|
<legend>{{localize "HELLBORN.Label.stats"}}</legend>
|
||||||
<div class="character-skill">
|
<div class="character-stat">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_combat.svg" class="icon-skill" />
|
<label class="rollable" data-roll-type="stat" data-stat-id="flesh"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="combat">{{localize
|
"HELLBORN.Label.flesh"}}</label>
|
||||||
"HELLBORN.Label.combat"}}</label>
|
{{formInput systemFields.stats.fields.flesh.fields.value value=system.stats.flesh.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
{{formInput systemFields.skills.fields.combat.fields.value value=system.skills.combat.value rootId=partId disabled=isPlayMode type="number" }}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-stat">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_knowledge.svg" class="icon-skill" />
|
<label class="rollable" data-roll-type="stat" data-stat-id="skin"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="knowledge">{{localize
|
"HELLBORN.Label.skin"}}</label>
|
||||||
"HELLBORN.Label.knowledge"}}</label>
|
{{formInput systemFields.stats.fields.skin.fields.value value=system.stats.skin.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
{{formInput systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-stat">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_social.svg" class="icon-skill" />
|
<label class="rollable" data-roll-type="stat" data-stat-id="heart"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="social">{{localize
|
"HELLBORN.Label.heart"}}</label>
|
||||||
"HELLBORN.Label.social"}}</label>
|
{{formInput systemFields.stats.fields.heart.fields.value value=system.stats.heart.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
{{formInput systemFields.skills.fields.social.fields.value value=system.skills.social.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-stat">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_physical.svg" class="icon-skill" />
|
<label class="rollable" data-roll-type="stat" data-stat-id="mind"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="physical">{{localize
|
"HELLBORN.Label.mind"}}</label>
|
||||||
"HELLBORN.Label.physical"}}</label>
|
{{formInput systemFields.stats.fields.mind.fields.value value=system.stats.mind.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
{{formInput systemFields.skills.fields.physical.fields.value value=system.skills.physical.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="character-skill">
|
<div class="character-stat">
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_stealth.svg" class="icon-skill" />
|
<label class="rollable" data-roll-type="stat" data-stat-id="soul"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="stealth">{{localize
|
"HELLBORN.Label.soul"}}</label>
|
||||||
"HELLBORN.Label.stealth"}}</label>
|
{{formInput systemFields.stats.fields.soul.fields.value value=system.stats.soul.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
{{formInput systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="character-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_vehicles.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="vehicles">{{localize
|
|
||||||
"HELLBORN.Label.vehicles"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="character-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_technology.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="technology">{{localize
|
|
||||||
"HELLBORN.Label.technology"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.technology.fields.value value=system.skills.technology.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
62
templates/character-maleficas.hbs
Normal file
62
templates/character-maleficas.hbs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||||
|
<div class="main-div">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.maleficas"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addMalefica"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createMalefica"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="maleficas">
|
||||||
|
{{#each maleficas as |item|}}
|
||||||
|
{{!log 'weapon' this}}
|
||||||
|
<div class="malefica item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
|
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<!--<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||||
|
<div class="name" data-action="toChat" data-item-uuid="{{item.uuid}}" data-roll-type="malefica" data-tooltip="{{{item.system.description}}}">
|
||||||
|
<a>{{item.name}}</a>
|
||||||
|
</div>
|
||||||
|
<span class="domain" data-tooltip="Domain">{{upperFirst item.system.domain}}</span>
|
||||||
|
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.rituals"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addRitual"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createRitual"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="rituals">
|
||||||
|
{{#each rituals as |item|}}
|
||||||
|
<div class="ritual item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
|
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<!--<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||||
|
<div class="name" data-action="toChat" data-item-uuid="{{item.uuid}}" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||||
|
<a>{{item.name}}</a>
|
||||||
|
</div>
|
||||||
|
<span class="ingredients" data-tooltip="Ingredients">{{upperFirst item.system.ingredients}}</span>
|
||||||
|
<span class="difficulty" data-tooltip="Difficulty">{{upperFirst item.system.difficulty}}</span>
|
||||||
|
<span class="threshold" data-tooltip="Threshold">{{upperFirst item.system.threshold}}</span>
|
||||||
|
<span class="limit" data-tooltip="Limit">{{upperFirst item.system.limit}}</span>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
84
templates/character-status.hbs
Normal file
84
templates/character-status.hbs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||||
|
<div class="main-div">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.characteristics"}}</legend>
|
||||||
|
<div class="counters">
|
||||||
|
<div class="flexcol">
|
||||||
|
<div>
|
||||||
|
<label>Trauma </label>{{formInput systemFields.trauma.fields.current value=system.trauma.current}} /
|
||||||
|
{{formInput systemFields.trauma.fields.max value=system.trauma.max}}
|
||||||
|
|
||||||
|
<label class="spaced-left"> Darkness </label>{{formInput systemFields.darkness.fields.current value=system.darkness.current}} /
|
||||||
|
{{formInput systemFields.darkness.fields.max value=system.darkness.max}}
|
||||||
|
{{formInput systemFields.darkness.fields.value value=system.darkness.value}}
|
||||||
|
<label class="spaced-left"> Defense </label>{{formInput systemFields.defense.fields.base value=system.defense.base}}
|
||||||
|
{{formInput systemFields.defense.fields.bonus value=system.defense.bonus }}
|
||||||
|
{{formInput systemFields.defense.fields.total value=system.defense.total}}
|
||||||
|
{{formInput systemFields.defense.fields.resistance value=system.defense.resistance}}
|
||||||
|
<label class="spaced-left"> Movement </label>{{formInput systemFields.movement.fields.base value=system.movement.base}}
|
||||||
|
{{formInput systemFields.movement.fields.reduce value=system.defense.reduce }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexrow characteristics-label">
|
||||||
|
<label> </label><span>Curr.</span><span>Max</span>
|
||||||
|
<label> </label><span>Curr.</span><span>Max</span><span>Mal.DR</span>
|
||||||
|
<label> </label><span>Base</span><span>Armor</span><span>Total</span><span>Resi.</span>
|
||||||
|
<label> </label><span>Base</span><span>Redu.</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.perks"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addPerk"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createPerk"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="perks">
|
||||||
|
{{#each perks as |item|}}
|
||||||
|
<div class="perk item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
|
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<!-- <img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||||
|
<div class="name" data-roll-type="perk" data-action="toChat" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.system.description}}}">
|
||||||
|
<a>{{item.name}}</a>
|
||||||
|
</div>
|
||||||
|
<span class="flavor" data-tooltip="Flavor text">{{upperFirst item.system.flavorText}}</span>
|
||||||
|
<span class="role" data-tooltip="Role">{{upperFirst item.system.role}}</span>
|
||||||
|
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.ailments"}}</legend>
|
||||||
|
<div class="mortality">
|
||||||
|
<label>Mortality :</label>
|
||||||
|
{{#each system.mortality.enabled as |mortality idx|}}
|
||||||
|
<input class="mortality-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
|
||||||
|
data-name="enabled" {{#if mortality}} checked {{/if}}>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ailments">
|
||||||
|
{{#each system.ailments as |item id|}}
|
||||||
|
<div class="ailment " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="false">
|
||||||
|
<label>{{item.label}}</label> <input type="checkbox" class="checkbox" name="system.ailments.{{id}}.enabled"
|
||||||
|
{{#if item.enabled}} checked {{/if}}>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.talents"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addTalent"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createTalent"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="talents">
|
|
||||||
{{#each talents as |item|}}
|
|
||||||
{{!log 'weapon' this}}
|
|
||||||
<div class="talent item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">
|
|
||||||
{{#if item.system.isAdvantage}}
|
|
||||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
|
||||||
{{else}}
|
|
||||||
{{/if}}
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.psionics"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addImplant"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createPsionic"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="psionics">
|
|
||||||
{{#each psionics as |item|}}
|
|
||||||
{{!log 'weapon' this}}
|
|
||||||
<div class="psionic item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">
|
|
||||||
{{#if item.system.isAdvantage}}
|
|
||||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
|
||||||
{{else}}
|
|
||||||
{{/if}}
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.languages"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addLanguage"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createLanguage"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="languages">
|
|
||||||
{{#each languages as |item|}}
|
|
||||||
{{!log 'weapon' this}}
|
|
||||||
<div class="language item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />
|
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">
|
|
||||||
{{#if item.system.isAdvantage}}
|
|
||||||
<i data-tooltip="Provides advantage" class="fas fa-circle-chevron-up"></i>
|
|
||||||
{{else}}
|
|
||||||
{{/if}}
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
15
templates/chat-malefica.hbs
Normal file
15
templates/chat-malefica.hbs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<div class="item-to-chat">
|
||||||
|
<div class="intro-chat">
|
||||||
|
<h2>{{name}}</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><strong>Domain : </strong>{{upperFirst system.domain}}</li>
|
||||||
|
<li><strong>Level : </strong>{{getRomanLevel system.level}}</li>
|
||||||
|
<li><strong>Time : </strong>{{system.time}}</li>
|
||||||
|
<li><strong>Range : </strong>{{system.range}}</li>
|
||||||
|
<li><strong>Target : </strong>{{system.target}}</li>
|
||||||
|
<li>{{{system.description}}}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -1,39 +1,58 @@
|
|||||||
{{!log 'chat-message' this}}
|
|
||||||
<div class="{{cssClass}}">
|
<div class="{{cssClass}}">
|
||||||
<div class="intro-chat">
|
<div class="intro-chat">
|
||||||
<div class="intro-img">
|
<div class="intro-img">
|
||||||
<img src="{{actingCharImg}}" data-tooltip="{{actingCharName}}" />
|
<img src="{{actingCharImg}}" data-tooltip="{{actingCharName}}" />
|
||||||
|
{{actorName}}
|
||||||
</div>
|
</div>
|
||||||
<div class="intro-right">
|
<div class="intro-right">
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
{{#if (eq rollType "skill")}}
|
{{#if (eq rollType "stat")}}
|
||||||
<li><strong>{{localize "HELLBORN.Label.skillRoll"}}</strong></li>
|
<li><strong>{{localize "HELLBORN.Label.statRoll"}}</strong></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
|
||||||
{{#if weapon}}
|
{{#if weapon}}
|
||||||
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
||||||
|
<li><strong>Properties : {{weapon.system.properties}}</strong></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<li><strong>{{localize rollItem.label}} : {{fullFormula}}</strong></li>
|
<li><strong>{{localize rollItem.label}} : {{rollItem.value}}</strong></li>
|
||||||
|
|
||||||
{{#if isEncumbered}}
|
<li>{{localize "HELLBORN.Label.difficulty"}} : {{difficulty}}</li>
|
||||||
<li class="red-warning">Encumbered : -1D</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<li>{{localize "HELLBORN.Label.modifier"}} : {{numericModifier}}D</li>
|
{{#if (eq resultType "unknown")}}
|
||||||
|
<li class="result-unknown">
|
||||||
{{#if isSuccess}}
|
{{localize "HELLBORN.Label.unknown"}}
|
||||||
<li class="result-success">
|
|
||||||
{{localize "HELLBORN.Label.success"}}
|
|
||||||
</li>
|
</li>
|
||||||
{{/if}}
|
{{else}}
|
||||||
|
{{#if isSuccess}}
|
||||||
|
{{#if satanicSuccess}}
|
||||||
|
<li class="result-satanic-success">
|
||||||
|
{{localize "HELLBORN.Label.satanicSuccess"}}
|
||||||
|
</li>
|
||||||
|
{{else}}
|
||||||
|
<li class="result-success">
|
||||||
|
{{localize "HELLBORN.Label.success"}}
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if isFailure}}
|
|
||||||
<li class="result-failure">
|
{{#if isFailure}}
|
||||||
{{localize "HELLBORN.Label.failure"}}
|
{{#if fiendishFailure}}
|
||||||
</li>
|
<li class="result-fiendish-failure">
|
||||||
|
{{localize "HELLBORN.Label.fiendishFailure"}}
|
||||||
|
</li>
|
||||||
|
{{else}}
|
||||||
|
<li class="result-failure">
|
||||||
|
{{localize "HELLBORN.Label.failure"}}
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if isCritical}}
|
||||||
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
12
templates/chat-perk.hbs
Normal file
12
templates/chat-perk.hbs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<div class="item-to-chat">
|
||||||
|
<div class="intro-chat">
|
||||||
|
<h2>{{name}}</h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>{{system.flavorText}}</strong></li>
|
||||||
|
<li><strong>Role : </strong>{{upperFirst system.role}}</li>
|
||||||
|
<li><strong>Level : </strong>{{getRomanLevel system.level}}</li>
|
||||||
|
<li>{{{system.description}}}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
14
templates/chat-ritual.hbs
Normal file
14
templates/chat-ritual.hbs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<div class="item-to-chat">
|
||||||
|
<div class="intro-chat">
|
||||||
|
<h2>{{name}}</h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Difficulty : </strong>{{system.difficulty}}</li>
|
||||||
|
<li><strong>Threshold : </strong>{{system.threshold}}</li>
|
||||||
|
<li><strong>Limit : </strong>{{system.limit}}</li>
|
||||||
|
<li><strong>Ingredients : </strong>{{system.ingredients}}</li>
|
||||||
|
<li><strong>N. Attempts : </strong>{{system.nbAttempts}}</li>
|
||||||
|
<li>{{{system.description}}}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
<section class="creature-main creature-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
{{!log "creature-main" this}}
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.creature"}}</legend>
|
|
||||||
<div class="creature-pc creature-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
<div class="creature-left">
|
|
||||||
<div class="creature-left-image">
|
|
||||||
<img class="creature-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
|
||||||
data-tooltip="{{actor.name}}" />
|
|
||||||
</div>
|
|
||||||
<fieldset class="creature-hp">
|
|
||||||
<legend>{{localize "HELLBORN.Label.Stamina"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
Curr. {{formField systemFields.health.fields.staminaValue value=system.health.staminaValue}}
|
|
||||||
Max {{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="creature-right">
|
|
||||||
<div class="creature-name">
|
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="HELLBORN.ToggleSheet" data-tooltip-direction="UP">
|
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<fieldset class="creature-spec">
|
|
||||||
<legend>{{localize "HELLBORN.Label.Details"}}</legend>
|
|
||||||
{{formField systemFields.terrain value=system.terrain rootId=partId disabled=isPlayMode localize=true}}
|
|
||||||
{{formField systemFields.niche value=system.niche rootId=partId disabled=isPlayMode localize=true}}
|
|
||||||
{{formField systemFields.size value=system.size rootId=partId disabled=isPlayMode localize=true}}
|
|
||||||
<div class="flexrow rollable" data-roll-type="creature-number">
|
|
||||||
<i class="fa-regular fa-dice dice-2d6"></i>
|
|
||||||
{{formField systemFields.numberAppearing value=system.numberAppearing rootId=partId disabled=isPlayMode
|
|
||||||
localize=true}}
|
|
||||||
</div>
|
|
||||||
<div class="flexrow rollable" data-roll-type="creature-damage">
|
|
||||||
<i class="fa-regular fa-dice dice-2d6"></i>
|
|
||||||
{{formField systemFields.damage value=system.damage rootId=partId disabled=isPlayMode localize=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset class="creature-skills creature-skills-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
<legend>{{localize "HELLBORN.Label.skills"}}</legend>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_combat.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="combat">{{localize
|
|
||||||
"HELLBORN.Label.combat"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.combat.fields.value value=system.skills.combat.value rootId=partId
|
|
||||||
disabled=isPlayMode type="number" }}
|
|
||||||
</div>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_knowledge.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="knowledge">{{localize
|
|
||||||
"HELLBORN.Label.knowledge"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_social.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="social">{{localize
|
|
||||||
"HELLBORN.Label.social"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.social.fields.value value=system.skills.social.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_physical.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="physical">{{localize
|
|
||||||
"HELLBORN.Label.physical"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.physical.fields.value value=system.skills.physical.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_stealth.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="stealth">{{localize
|
|
||||||
"HELLBORN.Label.stealth"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_vehicles.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="vehicles">{{localize
|
|
||||||
"HELLBORN.Label.vehicles"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
<div class="creature-skill">
|
|
||||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_technology.svg" class="icon-skill" />
|
|
||||||
<label class="rollable" data-roll-type="skill" data-skill-id="technology">{{localize
|
|
||||||
"HELLBORN.Label.technology"}}</label>
|
|
||||||
{{formInput systemFields.skills.fields.technology.fields.value value=system.skills.technology.value
|
|
||||||
rootId=partId disabled=isPlayMode type="number"}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<section class="tab creature-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.traits"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addTrait"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createTrait"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="traits">
|
|
||||||
{{#each traits as |item|}}
|
|
||||||
<div class="trait item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.abilities"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addAbility"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createAbility"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="abilities">
|
|
||||||
{{#each abilities as |item|}}
|
|
||||||
{{!log 'armor' this}}
|
|
||||||
<div class="ability" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
{{formField systemFields.isAdvantage value=system.isAdvantage}}
|
{{formField systemFields.promisor value=system.promisor localize=true }}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
58
templates/enemy-main.hbs
Normal file
58
templates/enemy-main.hbs
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<section class="enemy-main enemy-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.character"}}</legend>
|
||||||
|
<div class="enemy-pc enemy-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
|
<div class="enemy-left">
|
||||||
|
<div class="enemy-left-image">
|
||||||
|
<img class="enemy-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
||||||
|
data-tooltip="{{actor.name}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="enemy-right">
|
||||||
|
<div class="enemy-name">
|
||||||
|
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
||||||
|
<a class="control" data-action="toggleSheet" data-tooltip="HELLBORN.ToggleSheet" data-tooltip-direction="UP">
|
||||||
|
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset class="enemy-definition">
|
||||||
|
{{formField systemFields.enemyType value=system.enemyType rootId=partId disabled=isPlayMode}}
|
||||||
|
{{formField systemFields.flavorText value=system.flavorText rootId=partId disabled=isPlayMode}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="enemy-stats enemy-stats-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||||
|
<legend>{{localize "HELLBORN.Label.stats"}}</legend>
|
||||||
|
<div class="enemy-stat">
|
||||||
|
<label class="rollable" data-roll-type="stat" data-stat-id="flesh"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
|
"HELLBORN.Label.flesh"}}</label>
|
||||||
|
{{formInput systemFields.stats.fields.flesh.fields.value value=system.stats.flesh.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
|
</div>
|
||||||
|
<div class="enemy-stat">
|
||||||
|
<label class="rollable" data-roll-type="stat" data-stat-id="skin"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
|
"HELLBORN.Label.skin"}}</label>
|
||||||
|
{{formInput systemFields.stats.fields.skin.fields.value value=system.stats.skin.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
|
</div>
|
||||||
|
<div class="enemy-stat">
|
||||||
|
<label class="rollable" data-roll-type="stat" data-stat-id="heart"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
|
"HELLBORN.Label.heart"}}</label>
|
||||||
|
{{formInput systemFields.stats.fields.heart.fields.value value=system.stats.heart.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
|
</div>
|
||||||
|
<div class="enemy-stat">
|
||||||
|
<label class="rollable" data-roll-type="stat" data-stat-id="mind"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
|
"HELLBORN.Label.mind"}}</label>
|
||||||
|
{{formInput systemFields.stats.fields.mind.fields.value value=system.stats.mind.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
|
</div>
|
||||||
|
<div class="enemy-stat">
|
||||||
|
<label class="rollable" data-roll-type="stat" data-stat-id="soul"><i class="fa-regular fa-dice"></i>{{localize
|
||||||
|
"HELLBORN.Label.soul"}}</label>
|
||||||
|
{{formInput systemFields.stats.fields.soul.fields.value value=system.stats.soul.value rootId=partId disabled=isPlayMode type="number" }}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</section>
|
||||||
152
templates/enemy-trait.hbs
Normal file
152
templates/enemy-trait.hbs
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<section class="tab enemy-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||||
|
<div class="main-div">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.characteristics"}}</legend>
|
||||||
|
<div class="counters">
|
||||||
|
<div class="flexcol">
|
||||||
|
<div>
|
||||||
|
<label>Trauma : </label>{{formInput systemFields.trauma.fields.current value=system.trauma.current}} /
|
||||||
|
{{formInput systemFields.trauma.fields.max value=system.trauma.max}}
|
||||||
|
|
||||||
|
<label class="spaced-left"> Darkness </label>
|
||||||
|
{{formInput systemFields.darkness.fields.current value=system.darkness.current}} /
|
||||||
|
{{formInput systemFields.darkness.fields.max value=system.darkness.max}}
|
||||||
|
{{formInput systemFields.darkness.fields.value value=system.darkness.value}}
|
||||||
|
<label class="spaced-left"> Defense </label>
|
||||||
|
{{formInput systemFields.defense.fields.base value=system.defense.base}}
|
||||||
|
{{formInput systemFields.defense.fields.resilience value=system.defense.resilience}}
|
||||||
|
<label class="spaced-left"> Movement </label>{{formInput systemFields.movement.fields.base value=system.movement.base}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flexrow characteristics-label">
|
||||||
|
<label></label><span>Curr.</span><span>Max</span>
|
||||||
|
<label></label><span> Curr.</span><span> Max</span><span> Mal.DR</span>
|
||||||
|
<label></label><span> Total</span><span> Resi.</span>
|
||||||
|
<label></label>
|
||||||
|
<label></label>
|
||||||
|
<label></label>
|
||||||
|
<label></label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="enemy-column">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.traits"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addTrait"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createTrait"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="traits">
|
||||||
|
{{#each traits as |item|}}
|
||||||
|
<div class="trait item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
|
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<!-- <img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||||
|
<div class="name" data-roll-type="trait" data-action="toChat" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.system.description}}}">
|
||||||
|
<a>{{item.name}}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.maleficas"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addMalefica"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createMalefica"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="maleficas">
|
||||||
|
{{#each maleficas as |item|}}
|
||||||
|
<div class="malefica item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
|
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<!-- <img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||||
|
<div class="name" data-roll-type="malefica" data-action="toChat" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.system.description}}}">
|
||||||
|
<a>{{item.name}}</a>
|
||||||
|
</div>
|
||||||
|
<span class="domain" data-tooltip="Domain">{{upperFirst item.system.domain}}</span>
|
||||||
|
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="weapons">
|
||||||
|
{{#each weapons as |item|}}
|
||||||
|
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||||
|
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<i class="fa-regular fa-dice"></i>
|
||||||
|
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
|
||||||
|
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
|
||||||
|
|
||||||
|
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||||
|
data-roll-type="damage" data-roll-value="{{item.system.damage}}">
|
||||||
|
<i class="fa-regular fa-dice"></i>
|
||||||
|
{{item.system.damage}}</a>
|
||||||
|
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
|
||||||
|
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
||||||
|
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||||
|
</legend>
|
||||||
|
<div class="equipments">
|
||||||
|
{{#each equipments as |item|}}
|
||||||
|
{{!log 'armor' this}}
|
||||||
|
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||||
|
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||||
|
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||||
|
{{item.name}}
|
||||||
|
</div>
|
||||||
|
<div class="controls">
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||||
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@@ -2,46 +2,33 @@
|
|||||||
|
|
||||||
<fieldSet>
|
<fieldSet>
|
||||||
|
|
||||||
{{#if (eq rollType "skill")}}
|
{{#if (eq rollType "stat")}}
|
||||||
<legend>{{localize "HELLBORN.Label.skill"}}</legend>
|
<legend>{{localize "HELLBORN.Label.stat"}}</legend>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="dialog-skill">{{localize rollItem.label}} : 2d6+{{rollItem.value}}</div>
|
<div class="dialog-stat">{{localize rollItem.label}} : 3d6+{{rollItem.value}}</div>
|
||||||
|
|
||||||
{{#if weapon}}
|
{{#if weapon}}
|
||||||
<div class="dialog-skill">Weapon : {{weapon.name}}</div>
|
<div class="dialog-stat">Weapon : {{weapon.name}}</div>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isEncumbered}}
|
|
||||||
<div class="dialog-skill red-warning">Encumbered : -1D</div>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
<fieldSet class="dialog-modifier">
|
<fieldSet class="dialog-modifier">
|
||||||
<legend>{{localize "HELLBORN.Label.modifier"}}</legend>
|
<legend>Advantages & Disadvantages</legend>
|
||||||
|
|
||||||
<select name="modifier" class="roll-skill-modifier">
|
<select name="nbadvantages" class="roll-stat-advantages">
|
||||||
{{selectOptions choiceModifier selected=modifier localize=true}}
|
{{selectOptions choiceAdvantages selected=nbAdvantages localize=true}}
|
||||||
|
</select>
|
||||||
|
<select name="nbdisadvantages" class="roll-stat-disadvantages">
|
||||||
|
{{selectOptions choiceDisadvantages selected=nbDisadvantages localize=true}}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
{{#if weapon}}
|
</fieldSet>
|
||||||
<select name="range-modifier" class="roll-skill-range-modifier">
|
|
||||||
{{selectOptions choiceRangeModifier selected=rangeModifier}}
|
|
||||||
</select>
|
|
||||||
<ul>
|
|
||||||
<li>Two Attacks : <input type="checkbox" name="isAiming" data-field="two-attacks" class="select-combat-option"></li>
|
|
||||||
<li>Aiming : <input type="checkbox" data-field="aiming" class="select-combat-option"></li>
|
|
||||||
<li>Dim Lightning : <input type="checkbox" data-field="dim" class="select-combat-option"></li>
|
|
||||||
<li>Darkness : <input type="checkbox" data-field="darkness" class="select-combat-option"></li>
|
|
||||||
<li>Target Prone/Obscured : <input type="checkbox" data-field="prone" class="select-combat-option"></li>
|
|
||||||
<li>Target Cover : <input type="checkbox" data-field="cover" class="select-combat-option"></li>
|
|
||||||
<li>1/2 Auto Fire Recoil : <input type="checkbox" data-field="recoil-first" class="select-combat-option"></li>
|
|
||||||
<li>2+ Auto Fire Recoil : <input type="checkbox" data-field="recoil-third" class="select-combat-option"></li>
|
|
||||||
<li>Target Aware : <input type="checkbox" data-field="aware" class="select-combat-option"></li>
|
|
||||||
</ul>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
|
<fieldSet class="dialog-formula">
|
||||||
|
<legend>Difficulty</legend>
|
||||||
|
<input name="difficulty" class="roll-difficulty" type="number" value="{{difficulty}}">
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
<fieldSet class="dialog-formula">
|
<fieldSet class="dialog-formula">
|
||||||
@@ -52,7 +39,7 @@
|
|||||||
<fieldSet>
|
<fieldSet>
|
||||||
<legend>{{localize "HELLBORN.Label.rollView"}}</legend>
|
<legend>{{localize "HELLBORN.Label.rollView"}}</legend>
|
||||||
<select name="visibility">
|
<select name="visibility">
|
||||||
{{selectOptions rollModes selected=visibility}}
|
{{selectOptions rollModes selected=visibility localize=true}}
|
||||||
</select>
|
</select>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
|
|||||||
37
templates/tarot.hbs
Normal file
37
templates/tarot.hbs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<section>
|
||||||
|
<div class="header">
|
||||||
|
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||||
|
{{formInput fields.name value=source.name}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
{{formField systemFields.orientation value=system.orientation localize=true }}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<div class="flexrow scrollable-content">
|
||||||
|
<div class="flexcol">
|
||||||
|
<legend>{{localize "HELLBORN.Label.quote"}}</legend>
|
||||||
|
{{formInput systemFields.quote value=system.quote toggled=true}}
|
||||||
|
<legend>{{localize "HELLBORN.Label.bonus"}}</legend>
|
||||||
|
{{formInput systemFields.bonus value=system.bonus toggled=true}}
|
||||||
|
<legend>{{localize "HELLBORN.Label.penalty"}}</legend>
|
||||||
|
{{formInput systemFields.penalty value=system.penalty toggled=true}}
|
||||||
|
<legend>{{localize "HELLBORN.Label.description"}}</legend>
|
||||||
|
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
|
||||||
|
toggled=true}}
|
||||||
|
<legend>{{localize "HELLBORN.Label.positiveEffect"}}</legend>
|
||||||
|
{{formInput systemFields.positiveEffect enriched=enrichedPositiveEffect value=system.positiveEffect name="system.positiveEffect"
|
||||||
|
toggled=true}}
|
||||||
|
<legend>{{localize "HELLBORN.Label.negativeEffect"}}</legend>
|
||||||
|
{{formInput systemFields.negativeEffect enriched=enrichedNegativeEffect value=system.negativeEffect name="system.negativeEffect"
|
||||||
|
toggled=true}}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<img src="{{system.image}}" class="item-img" data-edit="image" data-action="editImage" data-tooltip="{{localize "HELLBORN.Label.imageTooltip"}}"/>
|
||||||
|
{{formField systemFields.image value=system.image localize=true }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
</section>
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.damages"}}</legend>
|
|
||||||
<textarea class="form-control" rows="5" name="system.damages"
|
|
||||||
data-tooltip="{{localize "HELLBORN.Tooltip.damages"}}">{{system.damages}}</textarea>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.description"}}</legend>
|
|
||||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.notes"}}</legend>
|
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="weapons">
|
|
||||||
{{#each weapons as |item|}}
|
|
||||||
{{!log 'weapon' this}}
|
|
||||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
|
||||||
data-roll-value="{{item.system.damage}}">{{localize "HELLBORN.Label.damageShort"}} :
|
|
||||||
{{item.system.damage}}</a>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.equipment"}}{{#if isEditMode}}
|
|
||||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
|
||||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
|
||||||
</legend>
|
|
||||||
<div class="equipments">
|
|
||||||
{{#each equipments as |item|}}
|
|
||||||
{{!log 'armor' this}}
|
|
||||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
|
||||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
|
||||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
|
||||||
{{item.name}}
|
|
||||||
</div>
|
|
||||||
<div class="controls">
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
|
||||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
|
||||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
<section class="vehicle-main vehicle-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.vehicle"}}</legend>
|
|
||||||
<div class="vehicle-pc vehicle-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
|
||||||
<div class="vehicle-left">
|
|
||||||
<div class="vehicle-left-image">
|
|
||||||
<img class="vehicle-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
|
||||||
data-tooltip="{{actor.name}}" />
|
|
||||||
</div>
|
|
||||||
<fieldset>
|
|
||||||
<legend>{{localize "HELLBORN.Label.Agility"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.agility value=system.agility localize=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="vehicle-right">
|
|
||||||
<div class="vehicle-name">
|
|
||||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
|
||||||
<a class="control" data-action="toggleSheet" data-tooltip="HELLBORN.ToggleSheet"
|
|
||||||
data-tooltip-direction="UP">
|
|
||||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<fieldset class="capacity ">
|
|
||||||
<legend>{{localize "HELLBORN.Label.capacity"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.armor value=system.armor localize=true}}
|
|
||||||
{{formField systemFields.force value=system.force localize=true}}
|
|
||||||
</div>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.range value=system.range localize=true}}
|
|
||||||
{{formField systemFields.speed value=system.speed localize=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset class="cargo">
|
|
||||||
<legend>{{localize "HELLBORN.Label.cargo"}}</legend>
|
|
||||||
<div class="flexrow">
|
|
||||||
{{formField systemFields.crew value=system.crew localize=true}}
|
|
||||||
{{formField systemFields.cargo value=system.cargo localize=true}}
|
|
||||||
{{formField systemFields.tonnage value=system.tonnage localize=true}}
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
Reference in New Issue
Block a user