Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0be581d78 | ||
|
|
e18dd8abfa | ||
|
|
db54e5213c | ||
|
|
dfb84aca1e | ||
|
|
cd6fc9fb01 | ||
|
|
2998a62ff9 |
19
README.md
19
README.md
@@ -1 +1,18 @@
|
||||
# foundryvtt-mgt2
|
||||
# MGT2 - Mongoose Traveller (Unofficial)
|
||||
|
||||
*English version below*
|
||||
|
||||
Ce système de jeu pour [Foundry Virtual Tabletop](http://foundryvtt.com) qui fournit une feuille de personnage et un système de jeu
|
||||
pour Mongoose Publishing Traveller.
|
||||
|
||||
Spécialement développé pour la version française traduite par [Modül](https://www.gameontabletop.com/cf3161/traveller-vf.html)
|
||||
|
||||
#### Screenshots
|
||||

|
||||
|
||||
## English
|
||||
This game system for [Foundry Virtual Tabletop](http://foundryvtt.com) provides character sheet and game system
|
||||
support for Mongoose Publishing Traveller.
|
||||
|
||||
Specially developed for the French version translated by [Modül](https://www.gameontabletop.com/cf3161/traveller-vf.html)
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
"EditArmor": "Edit Armor",
|
||||
"EditAugment": "Edit Augment",
|
||||
"EditContact": "Edit Contact",
|
||||
"EditComputer": "Editer Computer",
|
||||
"EditDisease": "Edit Disease",
|
||||
"EditItem": "Edit Item",
|
||||
"EditSoftware": "Edit Software",
|
||||
@@ -103,6 +104,7 @@
|
||||
"EditWound": "Edit Wound",
|
||||
"Encumbrance": "Encumbrance",
|
||||
"EncumbranceHint": "DM -2 on all physical actions. They will also count as performing heavy labour.",
|
||||
"EquipUnequip": "Equip/Unequip",
|
||||
"Fatigue": "Fatigue",
|
||||
"FatigueHint": "DM -2 to all checks until full rest.",
|
||||
"Finance": "Finance",
|
||||
@@ -115,7 +117,7 @@
|
||||
"NewArmor": "New Armor",
|
||||
"NewAugment": "New Augment",
|
||||
"NewContact": "New Contact",
|
||||
"NewDiseases": "New Diseases",
|
||||
"NewDisease": "New Diseases",
|
||||
"NewEquipment": "New Equipment",
|
||||
"NewItem": "New Item",
|
||||
"NewWeapon": "New Weapon",
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
"EditArmor": "Éditer Armure",
|
||||
"EditAugment": "Éditer Augmentation",
|
||||
"EditContact": "Éditer Contact",
|
||||
"EditComputer": "Éditer Ordinateur",
|
||||
"EditDisease": "Éditer Maladie",
|
||||
"EditItem": "Éditer Objet",
|
||||
"EditSoftware": "Éditer Logiciel",
|
||||
@@ -103,6 +104,7 @@
|
||||
"EditWound": "Éditer Blessure",
|
||||
"Encumbrance": "Encombrement",
|
||||
"EncumbranceHint": "DM -2 on all physical actions. They will also count as performing heavy labour.",
|
||||
"EquipUnequip": "Équipper/Déséquipper",
|
||||
"Fatigue": "Fatigue",
|
||||
"FatigueHint": "DM -2 to all checks until full rest.",
|
||||
"Finance": "Finance",
|
||||
@@ -115,7 +117,7 @@
|
||||
"NewArmor": "Nouvelle Armure",
|
||||
"NewAugment": "Nouvelle Augmentation",
|
||||
"NewContact": "Nouveau Contact",
|
||||
"NewDiseases": "Nouvelle Maladie",
|
||||
"NewDisease": "Nouvelle Maladie",
|
||||
"NewEquipment": "Nouvelle Équipement",
|
||||
"NewItem": "Nouveau Objet",
|
||||
"NewWeapon": "Nouvel Arme",
|
||||
@@ -143,7 +145,7 @@
|
||||
"TabOthers": "A",
|
||||
"TotalWeight": "Poids total",
|
||||
"UnloadSoftware": "Éjecter le Logiciel",
|
||||
"UnstoreItem": "Rependre",
|
||||
"UnstoreItem": "Reprendre l'objet",
|
||||
"Wounds": "Blessures",
|
||||
"Show": "Afficher"
|
||||
},
|
||||
|
||||
@@ -335,16 +335,16 @@ function createCharacteristicField(show = true, showMax = false) {
|
||||
});
|
||||
}
|
||||
|
||||
const MGT2$1 = {};
|
||||
MGT2$1.MetricRange = Object.freeze({
|
||||
const MGT2 = {};
|
||||
MGT2.MetricRange = Object.freeze({
|
||||
meter: "MGT2.MetricRange.meter",
|
||||
kilometer: "MGT2.MetricRange.kilometer"
|
||||
});
|
||||
MGT2$1.MetricWeight = Object.freeze({
|
||||
MGT2.MetricWeight = Object.freeze({
|
||||
kilogram: "MGT2.MetricWeight.kilogram",
|
||||
ton: "MGT2.MetricWeight.ton"
|
||||
});
|
||||
MGT2$1.Difficulty = Object.freeze({
|
||||
MGT2.Difficulty = Object.freeze({
|
||||
NA: "MGT2.Difficulty.NA",
|
||||
Simple: "MGT2.Difficulty.Simple",
|
||||
Easy: "MGT2.Difficulty.Easy",
|
||||
@@ -355,27 +355,27 @@ MGT2$1.Difficulty = Object.freeze({
|
||||
Formidable: "MGT2.Difficulty.Formidable",
|
||||
Impossible: "MGT2.Difficulty.Impossible"
|
||||
});
|
||||
MGT2$1.ItemSubType = Object.freeze({
|
||||
MGT2.ItemSubType = Object.freeze({
|
||||
loot: "MGT2.ItemSubType.loot",
|
||||
software: "MGT2.ItemSubType.software"
|
||||
});
|
||||
MGT2$1.EquipmentSubType = Object.freeze({
|
||||
MGT2.EquipmentSubType = Object.freeze({
|
||||
augment: "MGT2.EquipmentSubType.augment",
|
||||
clothing: "MGT2.EquipmentSubType.clothing",
|
||||
equipment: "MGT2.EquipmentSubType.equipment",
|
||||
trinket: "MGT2.EquipmentSubType.trinket",
|
||||
toolkit: "MGT2.EquipmentSubType.toolkit"
|
||||
});
|
||||
MGT2$1.TalentSubType = Object.freeze({
|
||||
MGT2.TalentSubType = Object.freeze({
|
||||
skill: "MGT2.TalentSubType.skill",
|
||||
psionic: "MGT2.TalentSubType.psionic"
|
||||
});
|
||||
MGT2$1.DiseaseSubType = Object.freeze({
|
||||
MGT2.DiseaseSubType = Object.freeze({
|
||||
disease: "MGT2.DiseaseSubType.disease",
|
||||
poison: "MGT2.DiseaseSubType.poison",
|
||||
wound: "MGT2.DiseaseSubType.wound"
|
||||
});
|
||||
MGT2$1.PsionicReach = Object.freeze({
|
||||
MGT2.PsionicReach = Object.freeze({
|
||||
NA: "MGT2.PsionicReach.NA",
|
||||
Personal: "MGT2.PsionicReach.Personal",
|
||||
Close: "MGT2.PsionicReach.Close",
|
||||
@@ -388,18 +388,18 @@ MGT2$1.PsionicReach = Object.freeze({
|
||||
Continental: "MGT2.PsionicReach.Continental",
|
||||
Planetary: "MGT2.PsionicReach.Planetary"
|
||||
});
|
||||
MGT2$1.ContactRelations = Object.freeze({
|
||||
MGT2.ContactRelations = Object.freeze({
|
||||
Allie: "MGT2.Contact.Relation.Allie",
|
||||
Contact: "MGT2.Contact.Relation.Contact",
|
||||
Rival: "MGT2.Contact.Relation.Rival",
|
||||
Enemy: "MGT2.Contact.Relation.Enemy"
|
||||
});
|
||||
MGT2$1.ContactStatus = Object.freeze({
|
||||
MGT2.ContactStatus = Object.freeze({
|
||||
Alive: "MGT2.Contact.Status.Alive",
|
||||
Unknow: "MGT2.Contact.Status.Unknow",
|
||||
Dead: "MGT2.Contact.Status.Dead"
|
||||
});
|
||||
MGT2$1.Attitudes = Object.freeze({
|
||||
MGT2.Attitudes = Object.freeze({
|
||||
Unknow: "MGT2.Contact.Attitude.Unknow",
|
||||
Hostile: "MGT2.Contact.Attitude.Hostile",
|
||||
Unfriendly: "MGT2.Contact.Attitude.Unfriendly",
|
||||
@@ -408,7 +408,7 @@ MGT2$1.Attitudes = Object.freeze({
|
||||
Helpful: "MGT2.Contact.Attitude.Helpful",
|
||||
Complicated: "MGT2.Contact.Attitude.Complicated"
|
||||
});
|
||||
MGT2$1.Characteristics = Object.freeze({
|
||||
MGT2.Characteristics = Object.freeze({
|
||||
strength: "MGT2.Characteristics.strength.name",
|
||||
dexterity: "MGT2.Characteristics.dexterity.name",
|
||||
endurance: "MGT2.Characteristics.endurance.name",
|
||||
@@ -422,16 +422,16 @@ MGT2$1.Characteristics = Object.freeze({
|
||||
psionic: "MGT2.Characteristics.psionic.name",
|
||||
other: "MGT2.Characteristics.other.name"
|
||||
});
|
||||
MGT2$1.InitiativeCharacteristics = Object.freeze({
|
||||
MGT2.InitiativeCharacteristics = Object.freeze({
|
||||
dexterity: "MGT2.Characteristics.dexterity.name",
|
||||
intellect: "MGT2.Characteristics.intellect.name"
|
||||
});
|
||||
MGT2$1.DamageCharacteristics = Object.freeze({
|
||||
MGT2.DamageCharacteristics = Object.freeze({
|
||||
strength: "MGT2.Characteristics.strength.name",
|
||||
dexterity: "MGT2.Characteristics.dexterity.name",
|
||||
endurance: "MGT2.Characteristics.endurance.name"
|
||||
});
|
||||
MGT2$1.TL = Object.freeze({
|
||||
MGT2.TL = Object.freeze({
|
||||
NA: "MGT2.TL.NA",
|
||||
Unknow: "MGT2.TL.Unknow",
|
||||
NotIdentified: "MGT2.TL.NotIdentified",
|
||||
@@ -452,12 +452,12 @@ MGT2$1.TL = Object.freeze({
|
||||
TL14: "MGT2.TL.L14",
|
||||
TL15: "MGT2.TL.L15"
|
||||
});
|
||||
MGT2$1.Timeframes = Object.freeze({
|
||||
MGT2.Timeframes = Object.freeze({
|
||||
Normal: "MGT2.Timeframes.Normal",
|
||||
Slower: "MGT2.Timeframes.Slower",
|
||||
Faster: "MGT2.Timeframes.Faster"
|
||||
});
|
||||
MGT2$1.SpeedBands = Object.freeze({
|
||||
MGT2.SpeedBands = Object.freeze({
|
||||
Stoppped: "MGT2.Stoppped",
|
||||
Idle: "MGT2.Idle",
|
||||
VerySlow: "MGT2.VerySlow",
|
||||
@@ -504,7 +504,7 @@ class ActorCharacter {
|
||||
await $this.deleteEmbeddedDocuments("Item", toDeleteIds);
|
||||
if (itemToUpdates.length > 0)
|
||||
await $this.updateEmbeddedDocuments("Item", itemToUpdates);
|
||||
await $this.recalculateWeight();
|
||||
await this.recalculateWeight();
|
||||
}
|
||||
static async onUpdateDescendantDocuments($this, parent, collection, documents, changes, options, userId) {
|
||||
await this.calculEncumbranceAndWeight($this, parent, collection, documents, changes, options, userId);
|
||||
@@ -1521,7 +1521,7 @@ class TravellerActorSheet extends ActorSheet {
|
||||
_prepareCharacterItems(sheetData) {
|
||||
const actorData = sheetData.data;
|
||||
actorData.isGM = game.user.isGM;
|
||||
actorData.showTrash = game.user.isGM || game.settings.get("mgt2", "showTrash");
|
||||
actorData.showTrash = false;
|
||||
actorData.initiative = this.actor.getInitiative();
|
||||
const weapons = [];
|
||||
const armors = [];
|
||||
@@ -1877,7 +1877,7 @@ class TravellerActorSheet extends ActorSheet {
|
||||
}
|
||||
}
|
||||
rollOptions.skills.sort(MGT2Helper.compareByName);
|
||||
rollOptions.skills = [{ _id: "NP", name: "Not proficient (-3)" }].concat(rollOptions.skills);
|
||||
rollOptions.skills = [{ _id: "NP", name: game.i18n.localize("MGT2.Items.NotProficient") }].concat(rollOptions.skills);
|
||||
let itemObj = null;
|
||||
let isInitiative = false;
|
||||
const button = event.currentTarget;
|
||||
@@ -1904,11 +1904,11 @@ class TravellerActorSheet extends ActorSheet {
|
||||
itemObj = this.actor.getEmbeddedDocument("Item", button.dataset.itemId);
|
||||
rollOptions.rollObjectName = itemObj.name;
|
||||
if (itemObj.type === "weapon")
|
||||
rollOptions.rollTypeName = "Weapon";
|
||||
rollOptions.rollTypeName = game.i18n.localize("TYPES.Item.weapon");
|
||||
else if (itemObj.type === "armor")
|
||||
rollOptions.rollTypeName = "Armor";
|
||||
rollOptions.rollTypeName = game.i18n.localize("TYPES.Item.armor");
|
||||
else if (itemObj.type === "computer")
|
||||
rollOptions.rollTypeName = "Computer";
|
||||
rollOptions.rollTypeName = game.i18n.localize("TYPES.Item.computer");
|
||||
}
|
||||
if (button.dataset.roll === "psionic") {
|
||||
rollOptions.rollObjectName = itemObj.name;
|
||||
@@ -1917,9 +1917,9 @@ class TravellerActorSheet extends ActorSheet {
|
||||
rollOptions.damageFormula = itemObj.system.damage;
|
||||
if (itemObj.type === "disease") {
|
||||
if (itemObj.system.subTypetype === "disease") {
|
||||
rollOptions.rollTypeName = "Disease";
|
||||
rollOptions.rollTypeName = game.i18n.localize("DiseaseSubType.disease");
|
||||
} else if (itemObj.system.subTypetype === "poison") {
|
||||
rollOptions.rollTypeName = "Poison";
|
||||
rollOptions.rollTypeName = game.i18n.localize("DiseaseSubType.poison");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1953,7 +1953,7 @@ class TravellerActorSheet extends ActorSheet {
|
||||
if (userRollData.hasOwnProperty("skill") && userRollData.skill !== "") {
|
||||
if (userRollData.skill === "NP") {
|
||||
rollFormulaParts.push("-3");
|
||||
rollModifiers.push("Not proficient (-3)");
|
||||
rollModifiers.push(game.i18n.localize("MGT2.Items.NotProficient"));
|
||||
} else {
|
||||
const skillObj = this.actor.getEmbeddedDocument("Item", userRollData.skill);
|
||||
rollFormulaParts.push(MGT2Helper.getFormulaDM(skillObj.system.level));
|
||||
@@ -2333,7 +2333,7 @@ function registerHandlebarsHelpers() {
|
||||
});
|
||||
}
|
||||
Hooks.once("init", async function() {
|
||||
CONFIG.MGT2 = MGT2$1;
|
||||
CONFIG.MGT2 = MGT2;
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "2d6 + @initiative",
|
||||
decimals: 2
|
||||
@@ -2408,5 +2408,5 @@ Hooks.once("init", async function() {
|
||||
await preloadHandlebarsTemplates();
|
||||
});
|
||||
|
||||
export { MGT2$1 as MGT2 };
|
||||
export { MGT2 };
|
||||
//# sourceMappingURL=mgt2.bundle.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"id": "mgt2",
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.1",
|
||||
"title": "MGT2 - Mongoose Traveller (Unofficial)",
|
||||
"description": "An unofficial implementation of Mongoose Publishing Traveller. Traveller is the property of Mongoose Publishing, and can be purchased at https://www.mongoosepublishing.com",
|
||||
"background": "systems/mgt2/assets/screens/rosette-nebula-ngc2239-hoo.webp",
|
||||
"url": "https://github.com/JDR-Ninja/foundryvtt-mgt2",
|
||||
"manifest": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/latest/download/system.json",
|
||||
"readme": "https://raw.githubusercontent.com/JDR-Ninja/foundryvtt-mgt2/main/README.md",
|
||||
"download": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/download/v0.1.0/mgt2.zip",
|
||||
"download": "https://github.com/JDR-Ninja/foundryvtt-mgt2/releases/download/v0.1.1/mgt2.zip",
|
||||
"authors": [
|
||||
{
|
||||
"name": "JdR Ninja",
|
||||
|
||||
@@ -252,7 +252,7 @@
|
||||
{{else}}
|
||||
<div class="characteristic-row">
|
||||
<input class="characteristic-input" type="text" maxlength="2" name="system.characteristics.psionic.value" value="{{system.characteristics.psionic.value}}" />
|
||||
<input class="characteristic-dm-input" type="text" maxlength="2" value="{{#if (gt system.characteristics.psionic.dm 0)}}+{{/if}}{{system.characteristics.psionic.dm}}" readonly tabindex='-1' />
|
||||
<input class="characteristic-dm" type="text" maxlength="2" value="{{#if (gt system.characteristics.psionic.dm 0)}}+{{/if}}{{system.characteristics.psionic.dm}}" readonly tabindex='-1' />
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
@@ -547,7 +547,7 @@
|
||||
<div class="row-item row-item-2 row-item-center">{{equipment.system.quantity}}</div>
|
||||
<div class="row-item row-item-2 row-item-right flex-fix">{{equipment.weight}}</div>
|
||||
<div class="row-item row-item-15 item-controls flex-fix">
|
||||
<a class="item-control item-equip {{equipment.toggleClass}}" title="Equip/Unequip"><i class="fa-solid fa-shield-halved"></i></a>
|
||||
<a class="item-control item-equip {{equipment.toggleClass}}" title="{{ localize 'MGT2.Actor.EquipUnequip' }}"><i class="fa-solid fa-shield-halved"></i></a>
|
||||
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreEquipment' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditEquipment' }}"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteEquipment' }}"><i class="fas fa-trash"></i></a>
|
||||
@@ -572,7 +572,7 @@
|
||||
<div class="row-item row-item-2 row-item-center">{{item.system.quantity}}</div>
|
||||
<div class="row-item row-item-2 row-item-right flex-fix">{{item.weight}}</div>
|
||||
<div class="row-item row-item-15 item-controls flex-fix">
|
||||
<a class="item-control item-storage-in" title="Store Item"><i class="fa-solid fa-inbox-in"></i></a>
|
||||
<a class="item-control item-storage-in" title="{{ localize 'MGT2.Actor.StoreItem' }}"><i class="fa-solid fa-inbox-in"></i></a>
|
||||
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditItem' }}"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteItem' }}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
@@ -584,7 +584,7 @@
|
||||
<div class="row-item row-item-2 row-item-center">{{subItem.system.quantity}}</div>
|
||||
<div class="row-item row-item-2 row-item-right flex-fix">{{subItem.weight}}</div>
|
||||
<div class="row-item row-item-15 item-controls flex-fix">
|
||||
<a class="item-control item-storage-out" title="Unstore Item"><i class="fa-solid fa-inbox-out"></i></a>
|
||||
<a class="item-control item-storage-out" title="{{ localize 'MGT2.Actor.UnstoreItem' }}"><i class="fa-solid fa-inbox-out"></i></a>
|
||||
<a class="item-control item-edit" title="{{ localize 'MGT2.Actor.EditItem' }}"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="{{ localize 'MGT2.Actor.DeleteItem' }}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
@@ -696,8 +696,8 @@
|
||||
{{#each contacts as |contact id|}}
|
||||
<div class="table-row" data-item-id="{{contact._id}}" role="rowgroup">
|
||||
<div class="row-item row-item-left flex-grow-2">{{contact.name}}</div>
|
||||
<div class="row-item row-item-center">{{localize (concat "Contact.Relation." contact.system.relation)}}</div>
|
||||
<div class="row-item row-item-center">{{localize (concat "Contact.Attitude." contact.system.attitude)}}</div>
|
||||
<div class="row-item row-item-center">{{localize (concat "MGT2.Contact.Relation." contact.system.relation)}}</div>
|
||||
<div class="row-item row-item-center">{{localize (concat "MGT2.Contact.Attitude." contact.system.attitude)}}</div>
|
||||
<div class="row-item row-item-center">{{contact.system.occupation}}</div>
|
||||
<div class="row-item row-item-center">{{contact.system.location}}</div>
|
||||
<div class="row-item item-controls">
|
||||
|
||||
BIN
web/foundryvtt/inventory.jpg
Normal file
BIN
web/foundryvtt/inventory.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 308 KiB |
Reference in New Issue
Block a user