RPGでMoose、その3:能力値と種族(+職業)

RPGMoose、その3:能力値と種族(+職業)

 名前とか口調が決まればゲームブックというかアドベンチャーゲームっぽいもの*1は作れるわけですが、見出しにもあるとおり作っているのはRPGです。

 RPGと言ったら「能力値」なので、能力値を扱えるようにします。

package TG::PC;
use utf8;
use Any::Moose;

# 能力値
my @abilities = qw(
    hitpoint
    agl
    dur
    str
    con
    pow
);
foreach my $ability (@abilities) {
    has $ability => (
        is => 'rw',
        isa => 'Int',
        writer => "_set_${ability}",
    );
}
sub ABILITIES { @abilities; }

sub _up_ability {
  my $self = shift;
  my($ability, $score) = @_;

  my $org = $pc->$ability;
  my $set = "_set_$ability";
  $self->$set($org + $score);

  my $max_score = $ability eq 'hitpoint'? 900: 150;
  $self->$set($max_score) if $self->$ability > $max_score;

  my $up_score = $self->$ability - $org;

  # $abilityが$up_scoreポイント上がりました。
  $self->append_message( "up_ability", "A_$ability", $up_score) if $up_score;
}

 めんどくさいのでこういう書き方にしてるんですが、いいんでしょうかね?

 いちおう日本語での対応を書くと、

  • hitpoint - ヒットポイント
  • agl - 敏捷
  • dur - 体力
  • str - 筋力
  • con - 集中
  • pow - 精神

――になってます。

 それぞれの意味は……戦闘システムの時に出てくると思います、たぶん。

(あと、テンプレートの条件判定の時にも使えます)

 でまあ、テーブルトークRPGだとダイスで決めることも多いですが、今回は種族を選ぶと決め打ちです。

package TG::PC;
use utf8;
use Any::Moose;

# 種族
use TG::Race;
has race => (
    is  => 'ro',
    isa => 'TG::Race',
    handles => { race_name => 'name' },
);

#職業
use TG::Param::Work;
has race => (
    is  => 'ro',
    isa => 'TG::Param::Work',
    handles => { work_name => 'name' },
);

 選べる種族はこんな感じ:

(パラメーター名の横の数値は初期値。カッコ内はレベルアップ時に上昇する値)

1 人間

 我々と同じ人間です。ただ少しだけ違うのは、彼らには常人にはない能力があったり、常人より飛び抜けて優れている部分がある、ということです。それ以外の部分は我々と変わりありません。

 能力値は平均的にまとまっており、どんなクラスもそつなくこなすことができるでしょう。

HP:650(5)

敏捷:65(3)

体力:65(3)

筋力:65(4)

集中:65(4)

精神:65(4)

2 改造人間

 彼らも生物学的には我々と同じ人間です。しかし彼らはドラッグや強化手術、機械化などにより能力強化されています。人体改造に至る理由は人それぞれです。何らかの理由で損傷した体を補うためであることが多いようですが、中には自分でも知らないうちに改造されている人々もいます。

 肉体的な能力は通常の人間よりも優れていますが、集中力や敏捷性などはやや劣ります。

HP:700(5)

敏捷:60(3)

体力:70(3)

筋力:90(5)

集中:60(1)

精神:60(4)

3 獣人

 東京のように人口の多い都市には必ずと言っていいほど紛れ込んでいる種族です。その正体は不明ですが、遠い昔に獣達の能力を「受け入れた」者たちの末裔だと考えられています。

 機敏な動きと獲物を狙う集中力に優れていますが、防御に必要な体力や魔法などに影響する精神力は劣ります。

HP:630(4)

敏捷:80(5)

体力:50(2)

筋力:60(4)

集中:80(5)

精神:55(2)

4 半妖

 なんらかの形で「ヒトならざるもの」の影響を受けて生まれてきた者たちです。やはり東京のような人混みのなかに紛れ、ひっそりと隠れるように生きています。その出自からか特殊な能力をもつ者が多いようです。

 精神力は極めて高く魔法などを使うのに向いていますが、筋力やHPが低いため肉弾戦にはあまり向いていません。

HP:600(3)

敏捷:70(4)

体力:60(3)

筋力:50(2)

集中:60(4)

精神:90(6)

 もはや加工するのがめんどうなのでコピペです。

 ちなみに「改造人間」は「強化人間」と「サイボーグ」に分かれてましたが、差別化が難しくて統合されたという歴史があります。

 種族を見るとなんとなく分かると思いますが、このゲームはいちおう「現代東京退魔もの」の設定です。

 最初は「年齢」を決めるという話もあったのですが、そんなに細かく分けてもしょうがないので「職業」を選ぶことになりました。

コード 職業名 初期所持金(円) 初期所持金(ビット)
1 小学生 1,000円 400ビット
2 中学生 2,000円 400ビット
3 高校生 5,000円 400ビット
4 大学生 10,000円 400ビット
5 フリーター 20,000円 400ビット
6 社会人 30,000円 400ビット

 学生だけが細分化されてるのは、このゲームはライトノベルとか漫画とかアニメの再現を目的にしていたからです。

 ……あ、「所持金」が出てきましたが、まだ定義してませんね。これは「アイテム」のところで定義しましょう。

(アイテムの売買で使うので)

 他にもRPGでは必須な「経験値」「レベル」もまだ定義してません。こちらは「クラス」のところで定義します。

(クラスとレベル/経験値は密接な関係にあるので)

*1:あ、「ノベルゲーム」って言ったほうが今風なのか……。