#フィールドか手札の生け贄モンのレベルチェック(儀式)
sub nie_lv_chk_sub{
my($res)=@_;
my($lv,@tmp);
local($seast,$jokenst,@res_s);
$lv=$c_lv[$tehuda[$s_a][$res-50]];#元々のレベルで判断する
$seast='099210001';$jokenst='$res_si!='.$res;&card_search;
for my $r (@res_s){
my $cno=&getf_res($r);return 0 if $cno==2789;#儀式の供物
if($r<50){push(@tmp,&lv_st2($r));}
else{push(@tmp,&lv_st($cno));}
}
return &nie_lv_chk2($lv,@tmp);
}
#デッキの生け贄モンのレベルチェック(高等儀式術)
sub nie_lv_chk1_sub{
my($res)=@_;
my(@tmp);
local($seast,$jokenst,@res_s);
my $lv=$c_lv[$tehuda[$s_a][$res-50]];#元々のレベルで判断する
$seast='0999000000001';$jokenst='$c_koka[$cardno] eq "" && $c_syokan[$cardno] eq ""';&card_search;
for(@res_s){push(@tmp,$c_lv[&getf_res($_)]);}
return &nie_lv_chk2($lv,@tmp);
}
sub nie_lv_chk2_sub{
my($lv,@arr)=@_;
#&add_msg($NULL,"(lv=$lv arr=@arr)");
for(my $i1=0;$i1<@arr;$i1++){
if($arr[$i1]==$lv){return 0;}
for(my $i2=0;@arr>1 && $i2<@arr;$i2++){
if($i2==$i1){next;}
if($arr[$i1]+$arr[$i2]==$lv){return 0;}
for(my $i3=0;@arr>2 && $i3<@arr;$i3++){
if($i3==$i1 || $i3==$i2){next;}
if($arr[$i1]+$arr[$i2]+$arr[$i3]==$lv){return 0;}
for(my $i4=0;@arr>3 && $i4<@arr;$i4++){
if($i4==$i1 || $i4==$i2 || $i4==$i3){next;}
if($arr[$i1]+$arr[$i2]+$arr[$i3]+$arr[$i4]==$lv){return 0;}
for(my $i5=0;@arr>4 && $i5<@arr;$i5++){
if($i5==$i1 || $i5==$i2 || $i5==$i3 || $i5==$i4){next;}
if($arr[$i1]+$arr[$i2]+$arr[$i3]+$arr[$i4]+$arr[$i5]==$lv){return 0;}
for(my $i6=0;@arr>5 && $i6<@arr;$i6++){
if($i6==$i1 || $i6==$i2 || $i6==$i3 || $i6==$i4 || $i6==$i5){next;}
if($arr[$i1]+$arr[$i2]+$arr[$i3]+$arr[$i4]+$arr[$i5]+$arr[$i6]==$lv){return 0;}
for(my $i7=0;@arr>6 && $i7<@arr;$i7++){
if($i7==$i1 || $i7==$i2 || $i7==$i3 || $i7==$i4 || $i7==$i5 || $i7==$i6){next;}
if($arr[$i1]+$arr[$i2]+$arr[$i3]+$arr[$i4]+$arr[$i5]+$arr[$i6]+$arr[$i7]==$lv){return 0;}
for(my $i8=0;@arr>7 && $i8<@arr;$i8++){
if($i8==$i1 || $i8==$i2 || $i8==$i3 || $i8==$i4 || $i8==$i5 || $i8==$i6 || $i8==$i7){next;}
if($arr[$i1]+$arr[$i2]+$arr[$i3]+$arr[$i4]+$arr[$i5]+$arr[$i6]+$arr[$i7]+$arr[$i8]==$lv){return 0;}
}
}
}
}
}
}
}
}
return 1;
}
#拡散する波動のチェック
sub kakusan_chk_sub{
my(@tmp);
return 0 if ($phase==4 || !$fld[$hk[65]] || $fld_ad[$hk[65]]==1 || $a_b[$hk[65]]==1);
return 0 if $fld_koka[$hk[65]]!~/kakusan_$turn<>/;
my @arr=($hk[65]);
return 0 if &change_phase_chk_sub(@arr)==0;
my $fno=$hk[65];
my $tmp=$a_b[$fno];$tmp=~s/p$//;
my @tmp2=split(/<>/,$tmp);shift @tmp2;
for(my $i=$fw1[$s_d];$i<$fw1[$s_d]+5;$i++){
push(@tmp,$i) if $fld[$i];
}
for(my $i=0;$i<@tmp;$i++){#場にいるモンスター
my($j);
for($j=0;$j<@tmp2;$j++){#既に攻撃したモンスター
last if $tmp2[$j]==$tmp[$i];
}
if($j==@tmp2){
&error_msg($c_name[$fld[$fno]].'が全てのモンスターに攻撃してない');
return 1;
}
}
return 0;
}
#立ちはだかる強敵のチェック
sub kyoteki_chk_sub{
my(@tmp);
return 0 if ($phase==4 || !$fld[$hk2[13]]);
# my @arr=($hk2[13]);
# return 0 if &change_phase_chk_sub(@arr)==0;
for(my $i=$fw1[$s_a];$i<$fw1[$s_a]+5;$i++){
if($fld[$i] && $fld_rf[$i]!=1 && $fld_ad[$i]!=1 && $a_b[$i]!=1){push @tmp,$i;}
}
return 0 if !@tmp;
my $fno=&change_phase_chk_sub(@tmp);
if($fno!=0){
&error_msg($c_name[$fld[$fno]].'が攻撃してない');
return 1;
}
return 0;
}
#攻撃可能なモンスターは攻撃しなければならない
#アマゾネスの弩弓隊
#ヴォルカニック・デビル
#E-HERO マリシャス・デビル
sub dokyutai_chk_sub{
my(@tmp);
return 0 if ($cpu[$s_a]==1 || $phase==4);
for(my $i=$fw1[$s_a];$i<$fw1[$s_a]+5;$i++){
if($fld[$i] && $fld_rf[$i]!=1 && $fld_ad[$i]!=1 && $a_b[$i]!=1){push @tmp,$i;}
}
return 0 if !@tmp;
my $fno=&change_phase_chk_sub(@tmp);
if($fno!=0){
&error_msg($c_name[$fld[$fno]].'が攻撃してない');
return 1;
}
return 0;
}
#アース・グラビティのチェック
sub gravity_chk_sub{
my(@tmp);
return 0 if $phase==4;
for($fw1[$s_a]..$fw1[$s_a]+4){
if($fld[$_] && $fld_rf[$_]!=1 && $fld_ad[$_]!=1 && $a_b[$_]!=1 && &lv_st2($_)<5){push @tmp,$_;}
}
return 0 if !@tmp;
my $fno=&change_phase_chk_sub(@tmp);
if($fno!=0){
&error_msg($c_name[$fld[$fno]].'がジ・アースに攻撃してない');
return 1;
}
return 0;
}
#薄幸の乙女、ダーク・アイズ・イリュージョニスト、暗黒の眠りを誘うルシファー
sub otome_chk_sub{
my($afld,$fno)=@_;
my $msg;
if(($fld[$fno]!=711 && $fld[$fno]!=920 && $fld[$fno]!=1725) || $fld_muko[$fno]!=1){return 0;}
elsif($fld_koka[$fno]!~/otome_$afld/){return 0;}
elsif($fld_rf[$fno]==1){return 0;}
if($fld[$fno]==1725){
if($fld_ad[$fno]==1){return 0;}
$msg='薄幸の乙女に魅入っている';
}elsif($fld[$fno]==920){
$msg='暗黒の眠りについている';
}else{
$msg='邪眼の呪縛を受けている';
}
&error_msg("$c_name[$fld[$afld]]は$msg");
return 1;
}
1;
最終更新:2008年09月06日 13:30