6 Commits

Author SHA1 Message Date
JDR-Ninja
d0be581d78 Publier la version 0.1.1 2024-05-11 08:38:14 -04:00
JDR-Ninja
e18dd8abfa Correction appel de fonction et enlever mauvaise référence 2024-05-11 08:36:12 -04:00
JDR-Ninja
db54e5213c Ajout de texte 2024-05-07 12:29:20 -04:00
JDR-Ninja
dfb84aca1e Création répertoire web et ajustement texte 2024-05-07 08:03:59 -04:00
JDR-Ninja
cd6fc9fb01 Fix différent texte 2024-05-07 07:55:53 -04:00
JDR-Ninja
2998a62ff9 Traduction et compilation 2024-05-06 19:51:09 -04:00
8 changed files with 63 additions and 42 deletions

View File

@@ -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
![Alt text](https://raw.githubusercontent.com/JDR-Ninja/foundryvtt-mgt2/master/web/foundryvtt/inventory.jpg "Screenshot")
## 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)

View File

@@ -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",

View File

@@ -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"
},

View File

@@ -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

View File

@@ -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",

View File

@@ -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">

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB