Ver. 1.4.x
6
12p1
12p2
13p1
15p1
15p2
15p3
17p1
17p2
Ver. 1.4.0
α24
β2
β3
β4
β11
β12
β13
β16
β17
β18
β19
β20
β21
β22
Release
$target->ReturnPossessed('possessed_target', $ROOM->date + 1);
$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);
}
else{ continue; }
elseif($voted_wolf->IsRole('possessed_wolf') && $voted_wolf->IsSame($target->uname)){
$voted_wolf->possessed_cancel = true;
}
else{
continue;
}
× 0, in_array('gerd', $option_role_list) ? $USER_ICON->gerd : 0)) break; ○ 1, in_array('gerd', $option_role_list) ? $USER_ICON->gerd : 0)) break;
//表示する他のサーバのリスト var $server_list = array( /* 設定例 'cirno' => array('name' => 'チルノ鯖', 'url' => 'http://www12.atpages.jp/cirno/', 'encode' => 'UTF-8', 'separator' => '<!-- atpages banner tag -->', 'footer' => '</a><br>', 'disable' => false), */ }
//表示する他のサーバのリスト
var $server_list = array(
/* 設定例
'cirno' => array('name' => 'チルノ鯖',
'url' => 'http://www12.atpages.jp/cirno/',
'encode' => 'UTF-8',
'separator' => '<!-- atpages banner tag -->',
'footer' => '</a><br>',
'disable' => false),
*/
);
}
× if($SELF->IsRole('evoke_scanner')){ ○ elseif($SELF->IsRole('evoke_scanner')){
array_push($check_game_option_list, 'deep_sleep', 'mind_open', 'blinder');
$check_option_role_list[] = 'joker';
array_push($check_game_option_list, 'joker', 'deep_sleep', 'mind_open', 'blinder');
$stack = array();
if(! $ROOM->IsOption('joker')) return false;
$stack = array();
× $joker_flag = false; //ジョーカー移動成立フラグ ○ $joker_flag = ! $ROOM->IsOption('joker'); //ジョーカー移動成立フラグ
× if($role_flag->bishop_priest && $user->GetCamp(true) != 'human') $live_count['dead']++;
○ if($user->GetCamp(true) != 'human') $live_count['dead']++;
× if($role_flag->priest && $user->GetCamp() == 'human') $live_count['human_side']++;
○ if($user->GetCamp() == 'human') $live_count['human_side']++;
× $SELF->live->virtual_live = true;
○ $SELF->virtual_live = true;
//リストにデータを追加 $live_uname_list[$user->user_no] = $user->uname; $vote_message_list[$user->uname] = $message_list; $vote_target_list[$user->uname] = $target->uname; $vote_count_list[$user->uname] = $voted_number; foreach($ROLES->Load('vote_ability') as $filter) $filter->SetVoteAbility($target->uname); }
//リストにデータを追加
$live_uname_list[$user->user_no] = $user->uname;
$vote_message_list[$user->user_no] = $message_list;
$vote_target_list[$user->uname] = $target->uname;
$vote_count_list[$user->uname] = $voted_number;
foreach($ROLES->Load('vote_ability') as $filter) $filter->SetVoteAbility($target->uname);
}
ksort($vote_message_list);
$stack = array();
foreach($vote_message_list as $id => $list) $stack[$USERS->ByID($id)->uname] = $list;
$vote_message_list = $stack;
$user = $USERS->ByVirtual($SELF->user_no); if($ROOM->IsPlaying() && $user->IsLive()){ $ROLES->actor = $user; foreach($ROLES->Load('voice') as $filter) $filter->FilterVoice($voice, $say); }
if($ROOM->IsPlaying() && $SELF->IsLive()){ $ROLES->actor = $USERS->ByVirtual($SELF->user_no); foreach($ROLES->Load('voice') as $filter) $filter->FilterVoice($voice, $say); }
function Ignored(){
global $ROOM, $ROLES;
//return false; //テスト用
return ! ($ROOM->IsPlaying() && $ROLES->actor->IsLive());
}
function Ignored(){ global $ROOM, $USERS, $ROLES; //return false; //テスト用 return ! ($ROOM->IsPlaying() && $USERS->IsVirtualLive($ROLES->actor->user_no)); }
× 'ogre' => 'yaksa'); ○ 'yaksa' => 'yaksa');
× 'ogre' => 'succubus_yaksa'); ○ 'yaksa' => 'succubus_yaksa');
× if($this->IsRole('mind_scanner')) return $this->IsVoted($vote_data, 'MIND_SCANNER_DO');
○ if($this->IsRole('mind_scanner', 'presage_scanner')) return $this->IsVoted($vote_data, 'MIND_SCANNER_DO');
× result_succbus_vampire.gif
○ result_succubus_vampire.gif
× if(FetchResult($ROOM->GetQueryHeader('room', 'day_night') != 'beforegame')){ ○ if(FetchResult($ROOM->GetQueryHeader('room', 'day_night')) != 'beforegame'){
× return $result && ! $reverse ? 'wolf' : 'human'; ○ return ($result xor $reverse) ? 'wolf' : 'human';
× if(empty($uname)) $uname = 'system'; ○ if($uname == '') $uname = 'system';
if($target->IsSame($vote_kill_uname)) continue; if($target->IsActive($stack)) $target->LostAbility(); elseif($target->IsRole('lost_ability')){ $USERS->SuddenDeath($target->user_no, 'SUDDEN_DEATH_SEALED'); }
if($target->IsSame($vote_kill_uname) || ! $target->IsRole($stack)) continue; $target->IsActive() ? $target->LostAbility() : $USERS->SuddenDeath($target->user_no, 'SUDDEN_DEATH_SEALED');
× $this->IsVoted($vote_data, 'MAGE_DO');
○ return $this->IsVoted($vote_data, 'MAGE_DO');
$target = $user; do{ //覚醒者・夢語部ならコピー先を辿る if(! $target->IsRole('soul_mania', 'dummy_mania')) break; $stack = $target->GetPartner($target->main_role); if(is_null($stack)) break; //コピー先が見つからなければスキップ $target = $this->ByID($stack[0]); if($target->IsRoleGroup('mania')) $target = $user; //神話マニア系なら元に戻す }while(false); while($target->IsRole('unknown_mania')){ //鵺ならコピー先を辿る $stack = $target->GetPartner('unknown_mania'); if(is_null($stack)) break; //コピー先が見つからなければスキップ $target = $this->ByID($stack[0]); if($target->IsSelf()) break; //自分に戻ったらスキップ }
$target = $user; $stack = array(); while($target->IsRole('unknown_mania')){ //鵺ならコピー先を辿る $id = array_shift($target->GetPartner('unknown_mania', true)); if(is_null($id) || in_array($id, $stack)) break; $stack[] = $id; $target = $this->ByID($id); } //覚醒者・夢語部ならコピー先を辿る if($target->IsRole('soul_mania', 'dummy_mania') && is_array($stack = $target->GetPartner($target->main_role))){ $target = $this->ByID(array_shift($stack)); if($target->IsRoleGroup('mania')) $target = $user; //神話マニア系なら元に戻す }
× $delete_role_list = array('lovers', 'admire_lovers', 'copied', 'copied_trick', 'copied_soul', ○ $delete_role_list = array('lovers', 'challenge_lovers', 'copied', 'copied_trick', 'copied_soul',
case 'doll_master':
case 'whisper_scanner':
case 'howl_scanner':
case 'telepath_scanner':
$stack_role = 'mind_scanner';
break;
case 'doll_master':
$target->AddRole($add_role);
$target->AddRole($add_role);
$target->ParseRoles($target->GetRole());
× elseif($said_user->IsLonely('silver_wolf')){ ○ elseif($said_user->IsWolf() && $said_user->IsLonely()){
$random_replace_list = $CAST_CONF->GenerateRandomList($replace_human_list);
$CAST_CONF->AddRandom($role_list, $random_replace_list, $over_count);
$CAST_CONF->AddRandom($role_list, $replace_human_list, $over_count);
function IsLonely(){ return $is_role && ($this->IsRole('mind_lonely') || $this->IsRoleGroup('silver')); }
function IsLonely($role = NULL){ $is_role = is_null($role) ? true : $this->IsRole($role); return $is_role && ($this->IsRole('mind_lonely') || $this->IsRoleGroup('silver')); }
× return $ROOM->date > 1 && $ROOM < 5 && $this->IsRole('challenge_lovers');
○ return $ROOM->date > 1 && $ROOM->date < 5 && $this->IsRole('challenge_lovers');
× if(! $SELF->IsRole('scanner', 'evoke_scanner')){ ○ if(! $SELF->IsRole('mind_scanner', 'evoke_scanner')){
× if($target->IsRole('escaper')) break; //逃亡者は暗殺不可 ○ if($target->IsRole('escaper')) continue; //逃亡者は暗殺不可
× elseif($said_user->IsLonely('wolf')){ ○ elseif($said_user->IsLonely('silver_wolf')){
//項目被りチェック
$query = "SELECT COUNT(icon_no) FROM user_icon WHERE icon_no = " . $icon_no;
if(FetchResult($query) < 1) OutputActionResult('村人登録 [入力エラー]', '無効なアイコン番号です');
//項目被りチェック
× if($ROOM->IsOptionGroup('mania')) $wish_role_list[] = 'mania';
○ if($ROOM->IsOptionGroup('mania') && ! in_array('mania', $wish_role_list)) $wish_role_list[] = 'mania';
$builder->AddSystemTalk($sentence, 'dummy-boy');
LineToBR($sentence);
$builder->AddSystemTalk($sentence, 'dummy-boy');
× $sub_role_list = $GAME_CONF->sub_role_group_list['sudden-death']; ○ $sub_role_list = array_diff($GAME_CONF->sub_role_group_list['sudden-death'], array('panelist'));
× if($ROOM->IsPlaying() && $virtual->IsLive()){ ○ if($ROOM->IsPlaying() && $virtual_self->IsLive()){
× global $RQ_ARGS;
○ global $GAME_CONF, $RQ_ARGS;
if($RQ_ARGS->add_role) $handle_name .= $user->GenarateShortRoleName(); //役職表示モード対応
if($RQ_ARGS->add_role){ //役職表示モード対応
$real_user = $talk->scene == 'heaven' ? $user : $USERS->ByReal($user->user_no);
$handle_name .= $real_user->GenerateShortRoleName();
}
case 'dummy_boy': if($this->type == $this->uname){
case 'dummy_boy':
if($this->type == 'system') break;
if($this->type == $this->uname){
× $handle_name .= $real_user->GenarateShortRoleName(); ○ $handle_name .= $real_user->GenerateShortRoleName();
× function GenarateShortRoleName(){ ○ function GenerateShortRoleName(){
$builder->AddSystemTalk($sentence, 'dummy-boy');
LineToBR($sentence);
$builder->AddSystemTalk($sentence, 'dummy-boy');
× elseif(! $ROOM->IsOpenCast() && $user->IsGroup('evoke_scanner')){ ○ elseif(! $ROOM->IsOpenCast() && $user->IsRole('evoke_scanner')){
× array_push($actor_list, 'poison_cat'); ○ array_push($actor_list, '%cat', 'revive_fox');
× $USERS->GetHandleName($target_uname) . 'さんに投票済み');
○ $USERS->GetHandleName($target_uname, true) . 'さんに投票済み');
×elseif($pseud_self->IsRole('wise_wolf')){ ○elseif($virtual_self->IsRole('wise_wolf')){
× array_push($wish_role_list, 'mage', 'necromancer', 'priest', 'common', 'poison',
○ array_push($wish_role_list, 'mage', 'necromancer', 'priest', 'guard', 'common', 'poison',
$said_user = $USERS->ByVirtualUname($talk->uname);
if(strpos($talk->location, 'heaven') === false) $said_user = $USERS->ByVirtualUname($talk->uname); else $said_user = $USERS->ByUname($talk->uname);
$target->dead_flag = false; //死亡フラグをリセット $USERS->Kill($target->user_no, 'WOLF_KILLED'); if($target->revive_flag) $target->Update('live', 'live'); //蘇生対応
if(isset($target->user_no)){ $target->dead_flag = false; //死亡フラグをリセット $USERS->Kill($target->user_no, 'WOLF_KILLED'); if($target->revive_flag) $target->Update('live', 'live'); //蘇生対応 }