3 votes

Comment puis-je écrire des règles de valeur d'attribut personnalisées pour l'outil de feuille de personnage GURPS ?

Lors de l'utilisation de l'outil Fiche de personnage GURPS Est-ce qu'il y a un moyen de changer la valeur de l'attribut lors du calcul des niveaux de compétence ?

Dans ma prochaine campagne GURPS, je prévois d'introduire cette règle de la Pyramide #3/65 :

Au lieu des valeurs par défaut habituelles des attributs Easy, Average et et difficiles, convertissez ces valeurs par défaut en demi-stat en changeant la base en changeant la base de toutes les valeurs par défaut en Attribut/2 (arrondissez les fractions à l'inférieur) plus un modificateur. modificateur. Le modificateur est égal à la pénalité normale par défaut (exprimée sous la forme d'un nombre négatif) plus 5. un nombre négatif) plus 5.

Je prévois également de modifier le coût des attributs, ou d'appliquer cette règle lors de l'achat de niveaux de compétences, car je veux réduire l'impact des attributs élevés sur les compétences.

J'ai une certaine expérience du codage, alors n'hésitez pas à indiquer toute solution impliquant un extrait ou quelque chose de ce genre.

0 votes

Ce serait une excellente question pour la liste de diffusion gcs_java_devel, bien que je ne sois pas sûr que l'auteur soit d'une grande aide, car la vie l'en empêche.

0 votes

En fait, j'ai ouvert un problème sur github en demandant directement à M. Wilkes !

1voto

Dronz Points 5581

(Edit : J'ai écrit que je n'avais pas réellement essayé de construire une nouvelle version du logiciel, mais j'ai étudié les fichiers dans tous les répertoires installés par le logiciel, et j'ai étudié le code source du programme, et je suis un développeur professionnel de logiciels avec des décennies d'expérience, et un MJ de GURPS avec des décennies d'expérience, et je suis sûr que c'est probablement l'endroit correct pour faire le changement demandé (pour la question secondaire aussi), et probablement un changement de code syntaxiquement correct pour faire le changement demandé. S'il vous plaît (tous les critiques de rpg.se) ayez pitié et ne déclassez pas encore plus ma réponse juste parce que je n'ai pas passé des heures à mettre en place un environnement de développement fonctionnel (je n'ai même pas de Mac et l'environnement de développement est configuré sur Mac) et à implémenter et tester les changements, pour une question de rpg.se qui demande juste des pointeurs de code).

Je n'ai pas encore essayé de faire (les heures de travail qu'il faudrait probablement pour faire fonctionner et tester un environnement de développement non-Mac) ceci (je n'ai pas d'environnement de développement Java, ni de Mac), mais je vois un candidat très probable pour l'endroit où modifier le code pour faire ceci :

Dans le dossier : https://github.com/richardwilkes/gcs/blob/master/src/com/trollworks/gcs/skill/SkillAttribute.java

Il y a des sections pour chaque attribut comme :

/** The dexterity attribute. */
DX {
    @Override
    public String toString() {
        return DX_TITLE;
    }

    @Override
    public int getBaseSkillLevel(GURPSCharacter character) {
        return character != null ? character.getDexterity() : Integer.MIN_VALUE;
    }
}

Et je commencerais par changer le

character.getDexterity() : Integer.MIN_VALUE;

pour être plus comme :

(character.getDexterity() / 2 + 5: Integer.MIN_VALUE);

Pour ce qui est de la modification du coût des points d'attribut, il semble que vous deviez modifier la fonction getPointsForAttribute() (et/ou les méthodes individuelles de chaque attribut qui l'appellent (par exemple, updateStrengthInfo()), et/ou examiner comment SheetPreferences.areOptionalStrengthRulesUsed() est utilisée.

c'est-à-dire dans https://github.com/richardwilkes/gcs/blob/master/src/com/trollworks/gcs/character/GURPSCharacter.java

private static int getPointsForAttribute(int delta, int ptsPerLevel, int reduction) {
    int amt = delta * ptsPerLevel;

    if (reduction > 0 && delta > 0) {
        int rounder = delta < 0 ? -99 : 99;

        if (reduction > 80) {
            reduction = 80;
        }
        amt = (rounder + amt * (100 - reduction)) / 100;
    }

    return amt;
}

2 votes

À mon avis, c'est parce que cela n'a pas été essayé (à part cela, les utilisateurs ne peuvent pas jurer sur les autres, donc ce commentaire a été supprimé).

0 votes

Donc, vous pensez que la seule solution est de compiler ma propre version ? Hmph.

1 votes

@Cazacurdas C'est mon impression en regardant tous les fichiers qui sont installés, oui. Il y a des fichiers de données, mais comme vous pouvez le voir dans le code source, le code calcule le niveau de base des compétences. Vous pourriez changer le modificateur de difficulté en modifiant toutes ( !) les compétences, mais cela ne vous permettrait pas d'ajouter un diviseur à l'effet de l'attribut de base.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X