襲撃判定が終わったら、今度は占い師の処理をします。
ほとんど護衛と同じような処理になりますね。
$Fortune_Target = -1; $Fortune_Index = -1; for($index = 0; $index < @Char_Alive_Index; $index++){ if( $Char_Cast[ $Char_Alive_Index[$index] ] eq "fortune" ){ $Fortune_Index = $Char_Alive_Index[$index]; last; } } if( $Fortune_Index > -1 ){ if( $Exec_Fortune[0] < 0 || $Exec_Fortune[1] < 0 ){ @Char_Alive_Index_Temp = (); for($index = 0; $index < @Char_Alive_Index; $index++){ if( $Char_Alive_Index[$index] != $Fortune_Index ){ push(@Char_Alive_Index_Temp, $Char_Alive_Index[$index]); } } $Fortune_Target = $Char_Alive_Index_Temp[ int( rand( @Char_Alive_Index_Temp ) ) ]; }else{ if( $Char_Life[ $Exec_Fortune[0] ] == 0 ){ $Fortune_Target = $Exec_Fortune[0]; }elsif( $Char_Life[ $Exec_Fortune[1] ] == 0 ){ $Fortune_Target = $Exec_Fortune[1]; } } if( $Fortune_Target > -1 ){ print LOGFILE "$Day_Count_Max<>84<>$Fortune_Target<>$Time_Stamp\n"; } }
まずは占い師が生きているかどうかをチェックします。生きていれば、占い先設定がされているかどうかを確認し、設定されていない場合には生きている人で自分以外のキャラクターからランダムに占い先を決定します。占い先が設定されているなら、第一候補の生死を確認し、生きているなら第一候補を、死んでいるなら第二候補を占い先に決定します。
最後に、決定した占い先が-1でなければログファイルに占い実行(84)として出力します。