人狼BBS:G また構成の変更など

13人村の狂人が復活しました。13人村はいろいろ悩ましいのでまた変わるかもです。

10人 狼狼占霊村村村村村楽
11人 狼狼狂占霊狩村村村村楽
12人 狼狼狂占霊狩村村村村村楽
13人 狼狼狼狂占霊狩村村村村村楽
14人 狼狼狼狂占霊狩村村村村村村楽

役職希望も復活しました。ただし30%の確率でおまかせにされます。初参加時は村人希望ですが、これもおなじく30%の確率でおまかせになります。以下実装。

  size = wolf_live_person.size
  max = {
    'werewolf'   => (13 <= size ? 3 : 6 <= size ? 2 : 1),
    'seer'       => 1,
    'medium'     => ( 9 <= size ? 1 : 0),
    'possessed'  => (11 <= size ? 1 : 0),
    'bodyguard'  => (11 <= size ? 1 : 0),
    'freemasons' => (16 <= size ? 0 : 0),
  }
  sum = 0
  max.values.each{|i| sum += i}
  max['villagers'] = size - sum
  wolf_live_person.each do |i|
    if i['user_id'] != 'master'
      i['skill'] = '' if !max.keys.index(i['skill']) # 不正な文字列ならおまかせ
      i['skill'] = '' if rand(100) < 30 # 30%の確率でおまかせ
    end
  end
  max.each do |k, v|
    # 希望が多すぎる場合はランダムで選ばれた人(ゲルト以外)がおまかせ
    wolf_skill_rand(k)['skill'] = '' while v < wolf_skill_person(k).size
  end
  max.each do |k, v|
    # 足りない役はおまかせの人からランダムで割り当て
    wolf_skill_rand('')['skill'] = k while wolf_skill_person(k).size < v
  end