Ver. 1.5.x
1p1 1p2 1p3 6p1 6p2 6p3

Ver. 1.5.0
α2 α3 α4 α5 α7 β1 β5 β9 β11 β12 β13 β14 β15 p1

## Ver. 1.5.6

### Patch 3 (2014/04/27 (Sun) 17:30)

- 憑依先の処刑得票能力が発動するバグ修正 (Rev. 1083)
- はぐれ者・囁耳鳴：PHP のバージョン依存でエラーになる対応 (Rev. 1033)

### Patch 2 (2013/11/04 (Mon) 17:20)

- 耳栓・スピーカー：PHP のバージョン依存でエラーになる対応 (Rev. 948)
- 死亡した門番の暗殺護衛判定が有効になるバグ修正 (Rev. 920)
- Twitter API1.1 対応 (Rev. 857)

### Patch 1 (2013/06/23 (Sun) 19:55)

- 夜雀の目隠し効果を修正 (Rev. 826)
- 配役：最小補正陣営カウント修正 (Rev. 799)

## Ver. 1.5.1

### Patch 3 (2012/01/31 (Tue) 01:05)

- 人魚のバグ修正 (Rev. 491)

### Patch 2 (2012/01/21 (Sat) 23:46)

- 憑依・決闘者のバグ修正 (Rev. 476)

### Patch 1 (2012/01/19 (Thu) 00:41)

- 投票済み表示の憑依関連バグ修正 (Rev. 472)

## Ver. 1.5.0

### Patch 2 (2012/01/08 (Sun) 00:25)

- 獏のバグ修正 (Rev. 453)

### Patch 1 (2011/12/30 (Fri) 20:00)

- ジョーカーのバグ修正 (Rev. 445)
- generate_html_log.php のバグ修正 (Rev. 444)

## Ver. 1.5.0 β15

### include/role/mage.php % 61行目付近 (2011/10/30 (Sun) 01:46)

#### [before]

    }
    return false;

#### [after]

      $USERS->Kill($this->GetActor()->user_no, 'CURSED');
      return true;
    }
    return false;

### include/role/jammer_mad.php % 20行目付近 (2011/10/30 (Sun) 17:37)

    × global $ROOM, $ROLES;
    ○ global $ROOM, $ROLES, $USERS;

### include/role/jammer_mad.php % 26行目付近 (2011/10/30 (Sun) 17:37)

#### [before]

    foreach($filter_list as $filter){ //厄神の護衛判定
      if($filter->GuardCurse($this->GetActor())) return false;
    }

#### [after]

    foreach($filter_list as $filter){ //厄神の護衛判定
      if($filter->GuardCurse($this->GetActor())) return false;
    }
    $USERS->Kill($this->GetActor()->user_no, 'CURSED');
    return false;

### include/role/voodoo_mad.php % 18行目付近 (2011/10/30 (Sun) 17:37)

#### [before]

    foreach($ROLES->LoadFilter('anti_voodoo') as $filter){ //厄神の護衛判定
      if($filter->GuardCurse($this->GetActor())) return false;
    }

#### [after]

    foreach($ROLES->LoadFilter('anti_voodoo') as $filter){ //厄神の護衛判定
      if($filter->GuardCurse($this->GetActor())) return false;
    }
    $USERS->Kill($this->GetActor()->user_no, 'CURSED');
    return false;

### include/role/voodoo_mad.php % 38行目付近 (2011/10/31 (Mon) 00:25)

#### [before]

    foreach($filter_list as $filter) $filter->GuardCurse($USERS->ByUname($uname));

#### [after]

    $user = $USERS->ByUname($uname);
    foreach($filter_list as $filter){
      if($filter->GuardCurse($user)) continue 2;
    }
    $USERS->Kill($user->user_no, 'CURSED');

### include/role/dummy_chiroptera.php % 24行目付近 (2011/11/06 (Sun) 04:20)

#### [before]

      $this->filter->OutputAction();
      //仮想恋人を表示 (憑依追跡 / 恋人・悲恋持ちなら処理委託)
      if(! is_array($target) || $this->GetActor()->IsRole('lovers', 'sweet_status')) return;
      $lovers = array();
      foreach($target as $id) $lovers[] = $USERS->GetHandleName($USERS->ById($id)->uname, true);
      OutputPartner($lovers, 'partner_header', 'lovers_footer');
    }

#### [after]

      //仮想恋人を表示 (憑依追跡 / 恋人・悲恋持ちなら処理委託)
      if(! is_array($target) || $this->GetActor()->IsRole('lovers', 'sweet_status')) return;
      $lovers = array();
      foreach($target as $id) $lovers[] = $USERS->GetHandleName($USERS->ById($id)->uname, true);
      OutputPartner($lovers, 'partner_header', 'lovers_footer');
    }

    function OutputAction(){ $this->filter->OutputAction(); }

    function IsVote(){ global $ROOM; return $ROOM->date == 1; }

## Ver. 1.5.0 β14

### include/role/resurrect_mania.php % 14行目付近 (2011/10/24 (Mon) 22:06)

    × if($this->IsResurrect() && $this->IsLivePartner() &&
    ○ if($this->IsResurrect($this->GetActor()) && $this->IsLivePartner() &&

### include/role/mania.php % 40行目付近 (2011/10/24 (Mon) 22:26)

    × if(! $this->delay_copy) $actor->AddRole($this->copied);
    ○ if(! $this->delay_copy) $actor->AddRole($this->GetCopiedRole());

### include/role/mania.php % 56行目付近 (2011/10/24 (Mon) 22:26)

#### [before]

    function GetCopyRole($user){ return $user->main_role; }

#### [after]

    function GetCopyRole($user){ return $user->main_role; }

    function GetCopiedRole(){ return $this->copied; }

### include/role/unknown_mania.php % 10行目付近 (2011/10/24 (Mon) 22:26)

#### [before]

    function __construct(){
      parent::__construct();
      $this->copied = $this->GetActor()->GetID('mind_friend');
    }

#### [after]

    function __construct(){ parent::__construct(); }

    function GetCopiedRole(){ return $this->GetActor()->GetID('mind_friend'); }

### include/role/autumn_fairy.php % 9行目付近 (2011/10/24 (Mon) 22:49)

    × public $bad_stauts = '秋ですよー';
    ○ public $bad_status = '秋ですよー';

### include/role/winter_fairy.php % 9行目付近 (2011/10/24 (Mon) 22:49)

    × public $bad_stauts = '冬ですよー';
    ○ public $bad_status = '冬ですよー';

### include/role/sex_wolf.php % 21行目付近 (2011/10/25 (Tue) 20:50)

    × $str = $this->GetActor()->GetHandleName($user->uname, $this->DistinguishSex($user));
    ○ $str = $this->GetWolfVoter()->GetHandleName($user->uname, $this->DistinguishSex($user));

### include/role/assassin.php % 56行目付近 (2011/10/25 (Tue) 22:23)

#### [before]

    $this->Assassin($user);

#### [after]

    $class = $this->GetClass($method = 'Assassin');
    $class->$method($user);

## Ver. 1.5.0 β13

### include/role/resurrect_mania.php % 15行目付近 (2011/10/16 (Sun) 21:19)

    × mt_rand(1, 100) <= $ROOM->IsEvent('full_revive') ? 100 : 40){
    ○ mt_rand(1, 100) <= ($ROOM->IsEvent('full_revive') ? 100 : 40)){

### room_manager.php % 10行目付近 (2011/10/17 (Mon) 21:02)

    × $INIT_CONF->LoadClass('USER_ICON', 'TWITTER');
    ○ $INIT_CONF->LoadClass('USER_ICON', 'MESSAGE', 'TWITTER');

### include/role/poison_cat.php % 75行目付近 (2011/10/18 (Tue) 21:14)

    × $ROOM->SystemMessage($this->GetActor()->handle_name, 'REVIVE_FAILED');
    ○ $ROOM->SystemMessage($USERS->GetHandleName($user->uname), 'REVIVE_FAILED');

### include/role/priest.php % 62行目付近 (2011/10/19 (Wed) 03:19)

#### [before]

    $role = ($ROOM->date % 2) == 1 ? 'priest' : 'bishop_priest';

#### [after]

    $role = ($ROOM->date % 2) == 1 ? 'priest' : 'bishop_priest';
    $type = ($ROOM->date % 2) == 1 ? 'human_side' : 'dead';

### include/room_class.php % 31行目付近 (2011/10/20 (Thu) 01:00)

#### [before]

    $this->event = new StdClass();
    $stack = $this->LoadRoom($request->room_no);

#### [after]

    $stack = $this->LoadRoom($request->room_no);

## Ver. 1.5.0 β12

### include/role/role_class.php % 217行目付近 (2011/09/26 (Mon) 04:07)

#### [before]

      function __construct(){
        $this->role = array_pop(explode('Role_', get_class($this)));
        if(isset($this->mix_in)) $this->LoadMix($this->mix_in);
      }

#### [after]

      function __construct(){
        $this->role = array_pop(explode('Role_', get_class($this)));
        if(isset($this->mix_in)) $this->LoadMix($this->mix_in);
      }

      function __call($name, $args){
        return call_user_func_array(array($this->filter, $name), $args);
      }

### include/game_vote_functions.php % 2433行目付近 (2011/09/26 (Mon) 19:25)

#### [before]

    PrintData($target->uname);
    $target->ReturnPossessed('possessed');
    #$USERS->ByReal($target->user_no)->ReturnPossessed('possessed_target');

#### [after]

    $target->ReturnPossessed('possessed');

### include/role/priest.php % 58行目付近 (2011/09/29 (Thu) 03:20)

    × $flag = $ROOM->date > 3 && ($ROOM->date % 2) == 0;
    ○ $flag = $ROOM->date > 1 && ($ROOM->date % 2) == 0;

## Ver. 1.5.0 β11

### room_manager.php % 265行目付近 (2011/08/27 (Sat) 05:20)

#### [before]

      break;
    }

#### [after]

      break;

    default:
      continue 3;
    }

### include/game_vote_functions.php % 2638行目付近 (2011/08/30 (Tue) 16:56)

#### [before]

    foreach($ROOM->vote as $stack){
     if($user->IsSame($stack['target_uname'])) $count++;
    }

#### [after]

    foreach($ROOM->vote as $vote_stack){
      foreach($vote_stack as $stack){
        if($user->IsSame($stack['target_uname'])) $count++;
      }
    }

### include/role/power_yaksa.php % 8行目付近 (2011/09/23 (Fri) 01:13)

#### [before]

    class Role_power_yaksa extends Role{

#### [after]

    RoleManager::LoadFile('yaksa');
    class Role_power_yaksa extends Role_yaksa{

## Ver. 1.5.0 β9

### room_manager.php % 250行目付近 (2011/08/11 (Thu) 13:19)

#### [before]

    case 'chaos_open_cast':
      if(! $ROOM_CONF->$option) continue 2;
      switch($target = $_POST[$option]){
      case 'full':
        break 2;

      case 'camp':
      case 'role':
        if($ROOM_CONF->{'_' . $target}){
          $option .= '_' . $target;
          break 2;
        }
      }
      continue 2;

#### [after]

    case 'chaos_open_cast':
      switch($target = $_POST[$option]){
      case 'full':
        break;

      case 'camp':
      case 'role':
        $option .= '_' . $target;
        break;
      }
      if($ROOM_CONF->$option) break;
      continue 2;

### include/role/duelist.php % 11行目付近 (2011/08/14 (Sun) 00:59)

    × $role = $this->GetActor()->GetID('rival')
    ○ $role = $this->GetActor()->GetID('rival');

## Ver. 1.5.0 β6

### include/game_play_functions.php % 651行目付近 (2011/07/12 (Tue) 03:41)

#### [before]

    }
    OutputPartner($stack, 'partner_header', 'lovers_footer');

#### [after]

      OutputPartner($stack, 'partner_header', 'lovers_footer');
    }

## Ver. 1.5.0 β5

### include/game_play_functions.php % 332行目付近 (2011/06/29 (Wed) 00:21)

#### [before]

      if($user->IsWolf(true)) $stack[] = $USERS->GetHandleName($user->uname, true);
    }
    OutputPartner($stack, 'wolf_partner');

#### [after]

    }
    OutputPartner($stack['wolf'], 'wolf_partner');

### include/role/mind_scanner.php % 8行目付近 (2011/07/01 (Fri) 01:42)

    × public $mind_role = 'mind_role';
    ○ public $mind_role = 'mind_read';

## Ver. 1.5.0 β1

### include/game_vote_functions.php % 1640行目付近 (2011/05/19 (Thu) 02:55)

    × break;
    ○ break 2;

## Ver. 1.5.0 α7

### include/role/betray_yaksa.php % 12行目付近 (2011/04/11 (Mon) 00:16)

    × function Ignored($user){ return ! $target->IsCamp('chiroptera', true); }
    ○ function Ignored($user){ return ! $user->IsCamp('chiroptera', true); }

## Ver. 1.5.0 α5

### include/game_functions.php % 185行目付近 (2011/03/10 (Thu) 23:51)

    × return GetSelfVoteNight($situation, $not_situation) > 0;
    ○ return GetSelfVoteNight($situation, $not_situation) !== false;

### include/game_functions.php % 168行目付近 (2011/03/11 (Fri) 00:43)

    × $query = $ROOM->GetQueryHeader('vote', 'uname') . ' AND ';
    ○ $query = $ROOM->GetQueryHeader('vote', 'target_uname') . ' AND date = ' . $ROOM->date . ' AND ';

## Ver. 1.5.0 α4

### include/game_vote_functions.php % 2648行目付近 (2011/02/24 (Thu) 08:24)

#### [before]

    $target->ReturnPossessed('possessed_target', $ROOM->date + 1);

#### [after]

    $target->ReturnPossessed('possessed_target', $ROOM->date + 1);
    $stack = $virtual_target->GetPartner('possessed');
    if($target->user_no == $stack[max(array_keys($stack))]){
      $virtual_target->ReturnPossessed('possessed', $ROOM->date + 1);
    }

### include/game_vote_functions.php % 2103行目付近 (2011/02/25 (Fri) 02:54)

#### [before]

    else{
      continue;
    }

#### [after]

    elseif($voted_wolf->IsRole('possessed_wolf') && $voted_wolf->IsSame($target->uname)){
      $voted_wolf->possessed_cancel = true;
    }
    else{
      continue;
    }

## Ver. 1.5.0 α3

### include/game_vote_functions.php % 1527行目付近 (2011/02/07 (Mon) 22:22)

#### [before]

    if($user->IsRole('dummy_guard')){ //夢守人は罠無効
      if($ROOM->IsEvent('no_dream')) continue; //熱帯夜ならスキップ
      $dummy_guard_target_list[$user->uname] = $target_uname;
    }

#### [after]

    if($user->IsRole('dummy_guard')){ //夢守人は罠無効
      if($ROOM->IsEvent('no_dream')) continue; //熱帯夜ならスキップ
      $dummy_guard_target_list[$user->uname] = $target_uname;
      continue;
    }

## Ver. 1.5.0 α2

### include/game_vote_functions.php % 2247行目付近 (2011/01/24 (Mon) 02:14)

    × if($user->IsRole('emerald_fox') || $user->IsRoleGroup('fairy')) continue;
    ○ if($user->IsRole('emerald_fox') || $user->IsRoleGroup('fairy') || $wizard_target_list[$uname] == 'light_fairy') continue;