Estendendo o sistema atual
Existem duas partes para esta resposta. O primeiro é bastante simples - para homebrew o sistema point-buy para estender o intervalo, basta usar a fórmula já implicitamente usada no livro. Especificamente:
- Se a pontuação for menor ou igual a 13, o valor do ponto = pontuação - 8
- Se a pontuação for maior que 13, cada ponto acima de 13 custa o dobro
Isso significaria que, sob o novo sistema, uma pontuação de habilidade de 3 teria um valor de ponto de compra de -5 e um valor de pontuação de habilidade de 18 custaria 15 pontos. Isso torna possível começar com uma pontuação de habilidade de 18, mas muito cara. Isso também permite que você jogue personagens com pontuação menor que 8 em troca de maior potência em outra área (que é uma das partes divertidas das estatísticas de rolagem).
Ajustar o orçamento de pontos
Eu não tenho as habilidades estatísticas para calcular o que o valor médio de compra de pontos de 4d6 cairia o menor neste sistema seria. Eu, no entanto, tenho as habilidades para lançar junto um programa C ++ rápido que rola estatísticas aleatoriamente e calcula o valor médio de pontos para uma amostra arbitrariamente grande:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int RollStats(int* dice);
int RollDice(int* dice);
int GetVal(int score);
int main()
{
srand(time(NULL));
bool endProgram = false;
int* dice = new int[4];
int i = 0;
float totalScore = 0;
float numRolls = 0;
string input;
while (!endProgram && i < 1000000)
{
while (!_kbhit() && i < 1000000)
{
totalScore += RollStats(dice);
numRolls++;
i++;
}
cout << endl << numRolls << " rolls. Average score: " << (totalScore / numRolls);
cout << endl << "quit? (y/n) ";
cin >> input;
if (input == "y" || input == "Y")
{
endProgram = true;
}
}
delete[] dice;
}
int RollStats(int* dice)
{
int total = 0;
for (int i = 0; i < 6; i++)
{
total += GetVal(RollDice(dice));
}
cout << endl << "Total Score: " << total << endl;
return total;
}
int RollDice(int* dice)
{
int lowest = 6;
int total = 0;
cout << endl << "Rolling: ";
for (int i = 0; i < 4; i++)
{
dice[i] = rand() % 6 + 1;
cout << dice[i] << " ";
total += dice[i];
if (dice[i] < lowest)
{
lowest = dice[i];
}
}
cout << "\tLowest: " << lowest;
total -= lowest;
cout << "\tTotal: " << total;
return total;
}
int GetVal(int score)
{
int value = 0;
if (score <= 13)
{
value = score - 8;
}
else
{
value = 5 + ((score - 13) * 2);
}
cout << "\tValue: " << value;
return value;
}
Eu corri isso duas vezes para amostras muito grandes (500.000 rolos e 750.000 rolos). Supondo que você confie no recurso de número aleatório do C ++ para ser suficientemente aleatório, o valor de ponto médio para estatísticas de rolagem é algo em torno de 30.21. Isso combina com meu sentimento anódoto de que as estatísticas de rolagem dão a você (em média) um personagem um pouco mais poderoso.
Se você conferir aos jogadores um orçamento de 30 pontos e acesso a todas as pontuações de habilidade (3-18), como descrito acima, seus jogadores terão estatísticas com o mesmo alcance e potência média que as estatísticas acumuladas, mas com o controle e níveis de potência equilibrados de um sistema de compra pontual.
Além disso, um efeito colateral divertido é que um personagem começando com três pontuações de habilidade em 3 e três pontuações de habilidade em 18 apenas acontece de se encaixar exatamente dentro deste sistema. Isso pode levar a personagens realmente divertidos, seja para interpretação ou para construções min / max.