#-----------------------------------------------------------# # 罪と罰++ 二律背反 # # Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # # Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # # BLANK BOARD [ http://pom.to/ ] # #-----------------------------------------------------------# # 外交 Version 1.2 # Arranged by あくあ # Aqure's Web Page [http://aqure.zive.net/] #--- [注意事項] --------------------------------------------# # ・このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# # 1.2 06.11.05 友好度成功確率バグ修正(マサさん報告) # 1.1 05.05.15 メニューバグ修正(いしい家さん報告) # 1.0 04.09.19 不可コマンドを非表示/やめるコマンド修正(aniさんバグ修正報告) # 1.0 04.09.19 交戦中と同盟中メッセージ/不可条件 修正 # # 1.0 04.02.26 友好条約の成功確率を修正、$wr_mesに出力しない # 1.0 04.02.14 資金援助、食料援助、援軍派遣を追加 # 友好条約、成功条件変更 # 1.0 04.02.06 操作ミス防止外交選択メニューを追加 # 国ログ記録を個々のメッセージごとに書き込み # 国ログに名前を記載 # 1.0 04.02.01 停戦交渉失敗処理を追加 # #-----------------------------------------------------------# sub fore{ if($camp<1){ $log.="放浪の身では外交は行えない
\n"; $tm=$cmd=0; $type=''; &call_main_st; }else{ $type='外交'; $log.="条約など他国に対して外交を行います
\n"; $log.="外交を行う相手国を選んでください"; $log.="(交渉の場に向かうのに$GMM分かかります)"; $tm=0; &fore_menu; &call_mapdata if($mv_mode eq 'pc'); } &dat_write; } # ------------------------------------------------------------ # 相手国選択 # ------------------------------------------------------------ sub fore_menu{ $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n|; $log2 .=qq|\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; } # ------------------------------------------------------------ # 外交選択 # ------------------------------------------------------------ sub fore_menu2{ if($camp<$nation){ $v1=$camp; $v2=$nation; }else{ $v1=$nation; $v2=$camp; } $log2 .= qq|
\n|; $log2 .= qq|\n| if($mv_mode eq 'pc'); $log2 .= qq|\n|; $log2 .= qq|\n|; $log2 .= qq|
\n|; $log2 .= qq|$td_end
\n|; } # ------------------------------------------------------------ # # ------------------------------------------------------------ sub fore_exe{ @fore_str = ('友好条約','同盟','同盟破棄','宣戦布告','停戦','資金援助','食料援助','援軍派遣'); if($tm==0){ if($cmd<=-1 || $cmd>5){ $log.="中止しました(0)
\n"; $tm=$cmd=0; $type=''; &call_main_st; } else { $nation = $cmd; $log.="$cmp[$nation]に交渉に向かいました
\n"; $log.="交渉の準備に$GMW時間かかります
\n"; $tm=1; $pr=$GMT; } }elsif( $tm==1 || ($tm==2 && $cmd==10) ){ $log.="$cmp[$nation]に対しどのような交渉を行いますか?
\n"; $log.=qq|資金援助、食料援助、援軍派遣は同盟国のみ可能\です|; $tm=2; &fore_menu2; }elsif($tm==2 && $cmd>-1){ $log.="$cmp[$nation]と $fore_str[$cmd] の交渉を行います
\n"; if($camp<$nation){ $v1=$camp; $v2=$nation; }elsif($camp>$nation){ $v1=$nation; $v2=$camp; }else{ $v1=''; $v2=''; } if($v1 eq '' || $v2 eq ''){ $log.="適正な相手国を選択してください"; }else{ # ---------------------------------------------- if($cmd==0){ # 友好条約 if($cfs[$v2.$v1]==2){ $log.="$cmp[$nation]とは、友好条約を結べません
\n"; }else{ if($cfs[$v1.$v2]>int(rand(100))){ $cfs[$v2.$v1]+=int(rand(10)+5); $cfs[$v2.$v1]=100 if($cfs[$v2.$v1]>100); $rank_exe+=1; # 貢献度UP $log.="$cmp[$camp]は、$cmp[$nation]と友好条約を結びました
\n"; $wr_mes="$date $cmp[$camp]の$nmは、$cmp[$nation]と友好条約を結んだようです"; &hist_write; $for_cnt++; }else{ $log.="残念ですが、友好条約の締結に失敗しました
\n"; $wr_mes="$date $cmp[$camp]の$nmは、$cmp[$nation]と友好条約の締結に失敗したようです"; &hist_write; $for_cnt++; } } # ---------------------------------------------- }elsif($cmd==1){ # 同盟 if($cfs[$v1.$v2]==0 && $cfs[$v2.$v1]>int(rand(20)+40)){ $log.="$cmp[$camp]は、$cmp[$nation]と同盟を結びました
\n"; $wr_mes="$date $cmp[$camp]の$nmは、$cmp[$nation]と同盟を結んだようです"; $cfs[$v2.$v1]+=int(rand(10)+5); $cfs[$v2.$v1]=100 if($cfs[$v2.$v1]>100); $cfs[$v1.$v2]=1; $rank_exe+=1; # 貢献度UP &hist_write; $for_cnt++; }else{ $log.="$cmp[$nation]と同盟交渉が決裂しました
\n"; $log.="もう少し、友好度を回復する必要があります
\n"; $rank_exe-=1; # 貢献度 $wr_mes="$date $cmp[$camp]の$nmは$cmp[$nation]のと同盟交渉に失敗したようです"; &hist_write; } # ---------------------------------------------- }elsif($cmd==2){ # 同盟破棄 if ($cfs[$v1.$v2]==1){ $cfs[$v2.$v1]-=int(rand(10)+10); $cfs[$v2.$v1]=0 if($cfs[$v2.$v1]<0); $log .= "$cmp[$camp]は$cmp[$nation]との同盟を破棄しました
\n"; $wr_mes="$date $cmp[$camp]の$nmは$cmp[$nation]との同盟を破棄したようです"; $cfs[$v1.$v2]=0; &hist_write; $for_cnt++; } else { $log .= "$cmp[$camp]は$cmp[$nation]と同盟を結んでいません
\n"; } # ---------------------------------------------- }elsif($cmd==3){ # 宣戦布告 if($cfs[$v1.$v2]==1){ $log .= "同盟中です
\n"; $log .= "$cfs_str[$cfs[$v1.$v2]]の相手には宣戦布告できません
\n"; } elsif($cfs[$v1.$v2]==2){ $log .= "交戦中です
\n"; $log .= "$cfs_str[$cfs[$v1.$v2]]の相手には宣戦布告できません
\n"; } else { $log .= "$cmp[$camp]は$cmp[$nation]に宣戦布告しました
\n"; $wr_mes="$date $cmp[$camp]の$nmは$cmp[$nation]に宣戦布告したようです"; &hist_write; $for_cnt++; $cfs[$v2.$v1]=int($cfs[$v2.$v1]/int(rand(2)+2)); $cfs[$v1.$v2]=2; # 友好度が高い相手に宣戦した場合各国の友好度を下げる if($cfs[$v1.$v2]>int(rand(20)+50)){ $rank_exe-=1; # 貢献度 for ($i=1;$i<5;$i++){ if($camp>$i){ $cfs[$camp.$v2] -= inc(rand(5)); } elsif($camp<$i) { $cfs[$v2.$camp] -= inc(rand(5)); } } } } # ---------------------------------------------- }elsif($cmd==4){ # 停戦 if($cfs[$v1.$v2]==2){ if ($cfs[$v2.$v1]>int(rand(40)+10)){ $log .= "$cmp[$camp]と$cmp[$nation]は停戦しました
\n"; $wr_mes="$date $cmp[$camp]の$nmは$cmp[$nation]との停戦交渉に成功したようです"; &hist_write; $for_cnt++; $cfs[$v2.$v1]+=int(rand(10)+10); # 友好度回復 $cfs[$v2.$v1]=100 if($cfs[$v2.$v1]>100); $cfs[$v1.$v2]=0; }else{ $log .= "停戦交渉に失敗しました
\n"; $wr_mes="$date $cmp[$camp]の$nmは、$cmp[$nation]に停戦交渉を行いましたが失敗したようです"; &hist_write; $for_cnt++; $cfs[$v2.$v1]+=int(rand(20)-10); # 友好度が±10 $cfs[$v2.$v1]=100 if($cfs[$v2.$v1]>100); } }else{ $log .= "交戦中ではありません
\n"; } # ---------------------------------------------- }elsif($cmd==5){ # 資金 if($cfs[$v1.$v2]==1){ $cg[1] = $cg1; $cg[2] = $cg2; $cg[3] = $cg3; $cg[4] = $cg4; $cg[5] = $cg5; $vg = int($rank*100); # $vg = int(((rand(10)+1)*100)*$lr); $vg=1000 if($vg>999); if($cg[$camp]>$cg[$nation]){ $vg = int($cg[$camp]/2) if($cg[$camp]/2<$vg); $cg[$camp] -= $vg; $cg[$nation] += $vg; # $cfs[$v2.$v1] += int(rand(5)+3); $cfs[$v2.$v1] = 100 if($cfs[$v2.$v1]>100); $rank_exe+=1; # 貢献度UP $log=qq|$cmp[$nation]に $vg Gの$fore_str[$cmd]を行いました
|; $wr_mes = qq|$date $cmp[$camp]の$nmは、$cmp[$nation]に $vg Gの$fore_str[$cmd]を行いました|; &hist_write; $for_cnt++; # 結果を戻す $cg1 = $cg[1]; $cg2 = $cg[2]; $cg3 = $cg[3]; $cg4 = $cg[4]; $cg5 = $cg[5]; }else{ $log .= qq|$cmp[$camp]の資金は$cmp[$nation]より少ないため実施できません
|; } }else{ $log .= qq|失敗しました。資金援助は同盟国に対してのみ実行できます
\n|; } # ---------------------------------------------- }elsif($cmd==6){ # 食糧援助 if($cfs[$v1.$v2]==1){ $cf[1] = $cf1; $cf[2] = $cf2; $cf[3] = $cf3; $cf[4] = $cf4; $cf[5] = $cf5; # $vg = int(((rand(10)+1)*100)*$lr); $vg = int($rank*1000); $vg=10000 if($vg>9999); if($cf[$camp]>$cf[$nation]){ $vg = int($cf[$camp]/2) if($cf[$camp]/2<$vg); $cf[$camp] -= $vg; $cf[$nation] += $vg; # $cfs[$v2.$v1] += int(rand(5)+3); $cfs[$v2.$v1] = 100 if($cfs[$v2.$v1]>100); $rank_exe+=1; # 貢献度UP $log=qq|$cmp[$nation]に $vg Gの$fore_str[$cmd]を行いました
|; $wr_mes = qq|$date $cmp[$camp]の$nmは、$cmp[$nation]に $vg Gの$fore_str[$cmd]を行いました|; &hist_write; $for_cnt++; # 結果を戻す $cf1 = $cf[1]; $cf2 = $cf[2]; $cf3 = $cf[3]; $cf4 = $cf[4]; $cf5 = $cf[5]; }else{ $log .= qq|$cmp[$camp]の兵糧は$cmp[$nation]より少ないため実施できません
|; } }else{ $log .= qq|失敗しました。食料援助は同盟国に対してのみ実行できます
\n|; } # ---------------------------------------------- }elsif($cmd==7){ # 援軍派遣 if($cfs[$v1.$v2]==1){ $cs[1] = $cs1; $cs[2] = $cs2; $cs[3] = $cs3; $cs[4] = $cs4; $cs[5] = $cs5; # $vg = int(((rand(10)+1)*100)*$lr); $vg = int($rank*1000); $vg=10000 if($vg>9999); if($cs[$camp]>$cs[$nation]){ $vg = int($cs[$camp]/2) if($cs[$camp]/2<$vg); $cs[$camp] -= $vg; $cs[$nation] += $vg; # $cfs[$v2.$v1] += int(rand(5)+3); $cfs[$v2.$v1] = 100 if($cfs[$v2.$v1]>100); $rank_exe+=1; # 貢献度UP $log=qq|$cmp[$nation]に $vg 人の援軍派遣を行いました
|; $wr_mes = qq|$date $cmp[$camp]の$nmは、$cmp[$nation]に $vg 人の援軍派遣を行いました|; &hist_write; $for_cnt++; # 結果を戻す $cs1 = $cs[1]; $cs2 = $cs[2]; $cs3 = $cs[3]; $cs4 = $cs[4]; $cs5 = $cs[5]; }else{ $log .= qq|$cmp[$camp]の兵士数は$cmp[$nation]より少ないため実施できません
|; } }else{ $log .= qq|失敗しました。軍派遣は同盟国に対してのみ実行できます
|; } } } $tm=$cmd=0; $type=''; &call_main_st; }else{ $log.="中止しました(2)
\n"; $tm=$cmd=0; $type=''; &call_main_st; } &dat_write; } 1;