2019年 7月 26日
前回からまた 1ヶ月あっという間に過ぎてしまいました。
デバッグにつぐデバッグで、やっとまともに動くようになりました。
総日数 4ヶ月、恐るべし戦略プログラム。
結局夏休み販売に間に合いませんでしたけど、これが最後の山(今度こそだと思う、あってくれ)で、あとは音要素と、オープニング、エンディング、タイトル、オプション、あー後 SAVE LOADかあ、これも大変そうだな、それとデバッグとゲームバランスの調整とか。
そろそろ仕上げの段階に入ると思う、でもまだ何ヶ月かかかるだろうなあ。
代わりに次週から夏休み企画として、今回の成果を元に、またゆっくり動画を 1週ずつ上げていく予定です。
お楽しみに。
それでは実演を。
赤がCPU。
攻めて行きます。
HEX内のの 1段目の数字は、その国の配備戦力。
2段目は、その国の隣接する国の脅威値、つまり必要防衛戦力。
3段目は、左がその国の建設物で、右は建設要求物。
1は城、7は砦で、攻める国の隣接する自領に建てられる。
砦が建てられた。
ただこのテストでは敵を弱くしてあるので、砦が立つ前に占領していってしまう。
要らなくなった砦は取り壊され、ユニット上限の要求が無ければ、まず鍛冶屋が優先的に建てられる。
鍛冶屋はその国のアイテム出現率とアイテムLvを上げてくれる、魔術値の一番高い国に建てられる。
サークルは第二人材発掘予定地で、その国のマナを上げてくれる。
画像だと、先に建てられたサークル(3)は解体要請され、別のもっとマナの高い地に建設要求されてる。
プレイヤーと隣接した。
隣接した国で戦力が足りない場合、外交館が建てられ、領主の魅力に応じて配備戦力値が 1.5~2.0倍くらいに評価される。
プレイヤーには意味が無いため、プレイヤー隣接の場合は砦にする予定。
塔は第二アイテム地で、魔術を上げる。
市場は第二人口地で、人口を上げる。
11国、14国は倉庫で、アイテム数が上限の時に上限を上げるために建てられる。
しかしこれはバグで、一度に 1つだけ建てるように修正しないと。
鍛冶屋の国の様子。
隣接する脅威が無いため、戦力配備はしてない。
24 / 30はユニットの現在数 / 最大数、50 / 150はアイテムの現在数 / 最大数。
pubsnは人材府の建設数で、ユニットの上限を上げる、pibsnは倉庫の数で 2個建てられていて、元値 + 1個 50アイテムなのが分かる。
鍛冶屋領主のユニット装備は知力装備だったはず。
警察なら筋力装備、人材なら魅力装備と自動装備してくれる。
デバッグ表示のため分かり難いが、ユニットが余っていたり、国の数が一定数だと政府(ガバメント)にも配備してくれる。
左の数字はユニット種類で、右は配備している場所、1000の値が政府配備。
画像はプレイヤーの政府だが、こんな感じ。
余ってる土地には、最後に寺院が建てられる。
寺院の効果はオールマイティで、かつ祈りによって災害を抑えるという効果を持つ。
なお、このテストでは治安が始めから 100%にしてあるため、警察署が建てられないが、普段は治安が 100%になるまで、ほとんどの土地に警察署が建てられる事になる。
ユニットが上限になった。
どこかに人材府が建てられるはず。
右上の 22国に人材府が建てられた。
人材府が最優先で建てられ、鍛冶屋が 2番目。
人材府が最初に建てられないのは、上限の他に城が第一人材地であるため、マナ値によって変わってくる。
以下優先順位順に、各建設物が建てかえられる。
上限が増えてる。
全ての国を占領し、こんな感じで落ち着いた。
プレイヤー隣接国は戦力が上回っているため、余裕の寺院配置。
ちなみに 1国で攻める場合は、相手国戦力の 2倍無いと攻めない。
隣接 2国で攻める場合、3国で攻める場合を作ってある。
まあ恐らく、この状態になったら膠着状態になって千日手の可能性がある、後日の課題。
以上、そんな感じです。
それでは今回はソースをそのまま上げます。
緑の部分はコメントアウトで、実行時には反映されませんが、格闘の跡が分かるでしょう。
ちなみに左に寄せてあるコードは、だいたいデバッグ用です。
*hero_per ; 英雄の行動順番 repeat 26 ; リセット hmp(cnt)=0 ; ヒーローの勢力値 hap(cnt)=0 ; 順列 loop repeat 25,1 : pn=mpl(cnt) if pn=0 : continue ; ヒーローの勢力では無い hmp(pn)+=wp(cnt) ; 戦力値+ loop repeat 25,1 : pn1=cnt if hf(pn1)=0 : continue ; 生存確認 repeat 25 ; 順列のソート if hap(cnt)=0 : hap(cnt)=pn1 : break ; 空白なら入れて終わり if hmp(pn1)>hmp(hap(cnt)) : continue ; 値比較 pn2=hap(cnt) : hap(cnt)=pn1 : pn1=pn2 ; 入れ替え loop loop ;hper_put return #deffunc eq_set int eq_setn ; 単un装備 eq_setc=0 repeat eq_setn eq_setc+ if eq_setc\3=2 { hrs_eq 2 : if un=0 : hrs_eq 1 ; 2回目 continue } hrs_eq 1 : if un=0 : hrs_eq 2 ; 1と3回目 loop ;hrt1c=0 : hrt2c=0 : hrt3c=0 ; 現在の列の順番をリセット return #deffunc haibi int haibim,int haibin ; 戦力配備 ;if fff=1 : hrs_dpt : pkey ;if fff=1 : hrs_dpt : pkey : fff=0 haibic=0 ; どの部隊に配備するか if mu(haibim*10+1)>0 : haibic=1 ; 第一部隊が既にいる if mu(haibim*10+4)>0 : haibic=2 ; 第二部隊が既にいる if mu(haibim*10+7)>0 : haibic=3 : return ; 全部体いるので配備無し repeat haibin : cnt3=cnt ; 配備 if cnt3+haibic>2 : break eq_set 3 ; 装備 knc=haibim*mdb+(cnt3+haibic)*3 repeat 3,1 if cnt=1 { ; 1列目 un=hrt1(hrt1c) : if un>0 : mu(knc+1)=un : ud(un*udb+13)=knc+1 : hrt1c+ : /*wp(m)+=ud(un*udb+27)*/ : continue un=hrt2(hrt2c) : if un>0 : mu(knc+1)=un : ud(un*udb+13)=knc+1 : hrt2c+ : /*wp(m)+=ud(un*udb+27)*/ : continue un=hrt3(hrt3c) : if un>0 : mu(knc+1)=un : ud(un*udb+13)=knc+1 : hrt3c+ : /*wp(m)+=ud(un*udb+27)*/ : continue } if cnt=2 { ; 3列目 un=hrt3(hrt3c) : if un>0 : mu(knc+3)=un : ud(un*udb+13)=knc+3 : hrt3c+ : /*wp(m)+=ud(un*udb+27)*/ : continue un=hrt2(hrt2c) : if un>0 : mu(knc+3)=un : ud(un*udb+13)=knc+3 : hrt2c+ : /*wp(m)+=ud(un*udb+27)*/ : continue un=hrt1(hrt1c) : if un>0 : mu(knc+3)=un : ud(un*udb+13)=knc+3 : hrt1c+ : /*wp(m)+=ud(un*udb+27)*/ : continue } if cnt=3 { ; 2列目 un=hrt2(hrt2c) : if un>0 : mu(knc+2)=un : ud(un*udb+13)=knc+2 : hrt2c+ : /*wp(m)+=ud(un*udb+27)*/ : continue un=hrt1(hrt1c) : if un>0 : mu(knc+2)=un : ud(un*udb+13)=knc+2 : hrt1c+ : /*wp(m)+=ud(un*udb+27)*/ : continue un=hrt3(hrt3c) : if un>0 : mu(knc+2)=un : ud(un*udb+13)=knc+2 : hrt3c+ : /*wp(m)+=ud(un*udb+27)*/ : continue } loop ;if hrt1(hrt1c)=0 and hrt2(hrt2c)=0 and hrt3(hrt3c)=0 : haibif=1 : break ; 全員使った loop wpck haibim return #deffunc hrs_pic int hrs_picn un=0 if hrs_picn=1 { ; 筋力 repeat hub un=hrs1(cnt) : if un>0 : hrs_del un : break loop } if hrs_picn=2 { ; 魔力 repeat hub un=hrs2(cnt) : if un>0 : hrs_del un : break loop } if hrs_picn=3 { ; 知力 repeat hub n=hrs5(cnt) : if n=0 : continue if un=0 : un=n : continue if ud(n*udb+3)>ud(un*udb+3) : un=n loop if un>0 : hrs_del un : return } if hrs_picn=4 { ; 魅力 repeat hub n=hrs5(cnt) : if n=0 : continue if un=0 : un=n : continue if ud(n*udb+4)>ud(un*udb+4) : un=n loop if un>0 : hrs_del un : return } if hrs_picn=5 { ; 総力 repeat hub un=hrs5(cnt) : if un>0 : hrs_del un : break loop } return ;------- strategy ; 英雄勢力の人材とアイテムの発見と配置、戦略 ------- #deffunc mpn234_del int mpn234_deln repeat 25 if mpn2(cnt)=mpn234_deln : mpn2(cnt)=0 : break loop repeat 25 if mpn3(cnt)=mpn234_deln : mpn3(cnt)=0 : break loop repeat 25 if mpn4(cnt)=mpn234_deln : mpn4(cnt)=0 : break loop return #deffunc dependent_set ; 一時属領一覧セット repeat 25 : mpn(cnt)=0 : loop ; 一時属領一覧リセット mpnc=0 repeat 25,1 ; 一時属領一覧 if map(cnt)=0 or mpl(cnt)!pn : continue mpn(mpnc)=cnt : mpnc+ loop return #deffunc mana_point ; マナポイント repeat 25,1 : m=cnt : mdg=m*mdb if map(m)=0 : continue ; マップ無い if mpl(m)!pn : continue ; 勢力国では無い pmp(pn)+=md(mdg+3)/100 ; マナポイント+ loop return #deffunc un_it_found ; 人材とアイテムの発見 repeat 25,1 : m=cnt if map(m)=0 : continue ; マップ無い if mpl(m)!pn : continue ; 勢力国では無い ; ユニット repeat 1 if hf(pn)=1 and pubg(pn)>=pubn(pn) : break ; 登録が満杯 un_fd m : if un=0 : break ; 人材発見 hper_set pn,un ; 順列セット un_find_put ; ユニット発見表示 ;if pn=2 : gosub *jyun_put : pkey ;gosub *jyun_put loop ; アイテム n=1 ; 出現回数 mdg=m+mdb n+=md(m*mdb+1)/250000 ; 人口 if md(mdg+7)=1 : n+ ; 城 if md(mdg+7)=2 : n+ ; 塔 if md(mdg+7)=6 : n+=2 ; 鍛冶屋 un=mu(m*10) : if un>0 { ; 領主 ug=un*udb if ud(ug+8)=4 : n+ ; 魔術 if ud(ug+8)=6 : n+=2 ; 製作 } if hf(pn)=1 and pibg(pn)>=pibn(pn) : n=0 ; 登録が満杯 repeat n ;md(m*mdb+3)/20000+2 it_fd m ; アイテムの発見 if in>0 { hiper_set pn,in ; 順列セット in_find_put ; アイテム発見表示 } loop loop return ; 隣接国脅威値を算出 #deffunc hdn_cal ; 隣接国脅威値を算出 repeat 26 ; 脅威値をリセット hdp(cnt)=0 ; 脅威国の順列 hdn(cnt)=0 ; 脅威値 ;hdsn(cnt)=0 ; 脅威最小値 ;hdsp(cnt)=0 ; の国 loop hdfn=0 ; の部隊数 ;wp repeat 25,1 : m=cnt ; その国の脅威値を評価 if mpl(m)!pn : continue ; 自領では無い repeat 6,1 n=hmv(m,cnt) : if n=0 : continue ; 隣接する国があるか ;if map(n)=0 : continue ; 地形が無い if mpl(n)=pn or mpl(n)=0 : continue; 自領、NPC if n=matp : continue ; 攻勢国 ;if hf(mpl(n))=1 : wp(n)+=10000 ; プレイヤー国なら if hdn(m)<wpb(n) : hdn(m)=wpb(n) ; 一番大きな値 ;if hdn(m)<wp(n) : hdn(m)=wp(n) ; 一番大きな値 ;if hdsn(m)=0 or hdsn(m)>wp(n) : hdsn(m)=wp(n) : hdsp(m)=n ; 一番小さな値の国 loop /* repeat 3 : cnt4=cnt repeat 3,1 if mu(hdsp(m)*10+cnt4*3+cnt)>0 : hdfn(m)+ : break ; 部隊がある loop loop */ pn1=m repeat 25 ; 脅威国順列のソート if hdp(cnt)=0 : hdp(cnt)=pn1 : break ; 空白なら入れて終わり if hdp(cnt)=mpc(pn) and hdn(hdp(cnt))=0 : continue ; 城 if hdn(pn1)<=hdn(hdp(cnt)) and mpc(pn)!pn1 : continue ; 値比較 ;if hdn(pn1)<=hdn(hdp(cnt)) and mpc(pn)!pn1 : continue ; 値比較、首都は一番上 pn2=hdp(cnt) : hdp(cnt)=pn1 : pn1=pn2 ; 入れ替え loop loop ; 必要総防衛値 wp4=0 repeat 25,1 if mpl(cnt)!pn or map(cnt)=0 : continue wp4+=hdn(cnt) loop return #deffunc hdp_del int hdp_deln ; 脅威国の順列から1つ消去 repeat 25 if hdp(cnt)=hdp_deln : hdp(cnt)=0 : break loop return #deffunc equipment_set1 ; 仮装備、装備と列の順列のセット repeat hub ; 列の順列をリセット hrt1(cnt)=0 : hrt2(cnt)=0 : hrt3(cnt)=0 loop ;hrt1c=0 : hrt2c=0 : hrt3c=0 ; 現在の列の順番をリセット wp1=0 ; 総戦力値リセット es1n=0 repeat hub ; 装備 ;es1n+ : if es1n=10 : break if es1n\3=2 { ; 2回目 hrs_eq 2 : if un=0 : hrs_eq 1 continue } hrs_eq 1 : if un=0 : hrs_eq 2 ; 1と3回目 loop ; 最大脅威値(最強部隊)算出 hdb(pn)=0 : n=0 repeat 10 un=hrt1(cnt) : if un>0 : hdb(pn)+=ud(un*udb+27) : n+ : if n>=9 : break un=hrt2(cnt) : if un>0 : hdb(pn)+=ud(un*udb+27) : n+ : if n>=9 : break un=hrt3(cnt) : if un>0 : hdb(pn)+=ud(un*udb+27) : n+ : if n>=9 : break loop repeat 25,1 ; MAP最大脅威値 if mpl(cnt)!pn : continue wpb(cnt)=hdb(pn) loop ;hrt1c=0 : hrt2c=0 : hrt3c=0 ; 現在の列の順番をリセット return #deffunc equipment_set ; 全装備、装備と列の順列のセット es2n=0 repeat hub ; 装備 es2n+ if es2n\3=2 { ; 2回目 hrs_eq 2 : if un=0 : hrs_eq 1 continue } hrs_eq 1 : if un=0 : hrs_eq 2 ; 1と3回目 loop return #deffunc attack_point ; 攻勢点 matp=0 : wpn=0 ; 攻勢点と戦力値 hdkn=0 ; 攻められる国の数 repeat 25 ; 首都調べ m=mpn(cnt) : if m=0 : break repeat 6,1 n=hmv(m,cnt) : if n=0 : continue ; 隣接する国があるか repeat 25,1 if cnt=pn or mpc(cnt)=0 or mpc(cnt)!n : continue ; 首都では無い if wpn=0 or wpn>wp(n) : wpn=wp(n) : matp=n : break ; 最弱の首都 loop loop loop repeat 6,1 ; 攻勢点の周辺国 if matp=0 : break n=hmv(matp,cnt) : if n=0 : continue ; マップ無い if mpl(n)!pn : continue ; 自領では無い if hdn(n)=hdb(matp) : wp4d+=hdn(n) ; 攻める国の脅威しか無い場合、脅威値を無視 loop if wp1-(wp4-wp4d)<wpn*2 : matp=0 : wpn=0 ; 首都攻勢点無し if matp=0 { wpn=0 repeat 25 ; その他の国 m=mpn(cnt) : if m=0 : break repeat 6,1 n=hmv(m,cnt) : if n=0 : continue ; 隣接する国があるか if map(n)=0 or mpl(n)=pn : continue ; 地形無い、自領 wpn2=wp(n) if md(n*mdb+7)=10 { n=ud(mu(n*10)*udb+24)/2 ; 領主補整 wpn2=wpn2*(150+n)/100 ; 外交館があれば1.5倍 } if wpn=0 or wpn>wpn2 : wpn=wpn2 : matp=n : continue ; 最弱の国 loop loop repeat 6,1 ; 攻勢点の周辺国 if matp=0 : break n=hmv(matp,cnt) : if n=0 : continue ; マップ無い if mpl(n)!pn : continue ; 自領では無い if hdn(n)=hdb(matp) : wp4d+=hdn(n) ; 攻める国の脅威しか無い場合、脅威値を無視 loop if wp1-(wp4-wp4d)<wpn*2 : matp=0 : wpn=0 : return ; 攻勢点無し } if matp=0 : return ; 攻勢点無し repeat 6 : hdk(cnt)=0 : loop ; 攻める国の順列リセット repeat 6,1 ; 攻める国の順列 m1=hmv(matp,cnt) : if m1=0 : continue if mpl(m1)!pn : continue ; 自領では無い hdkn+ repeat 6 ; ソート if hdk(cnt)=0 : hdk(cnt)=m1 : break n1=hdn(hdk(cnt)) : if n1=hdb(matp) : n1=0 n2=hdn(m1) : if n2=hdb(matp) : n2=0 if n1<n2 : continue ; 脅威値の小さい順 m2=hdk(cnt) : hdk(cnt)=m1 : m1=m2 loop loop if hdkn>3 : hdkn=3 ; 最大数 hdfn=0 repeat 3 : cnt2=cnt ; 部隊数 repeat 3,1 if mu(matp*10+cnt2*3+cnt)>0 : hdfn+ : break ; 部隊がある loop loop return #deffunc fort_set ; 砦 repeat 25 m=mpn(cnt) : if m=0 : break mdg=m*mdb f=0 repeat 3 ; hdkn最大数 if matp=0 : break if hdk(cnt)=0 : break if m=hdk(cnt) : f=1 : break loop if f=0 { ; 砦必要無い if md(mdg+7)=7 : md(mdg+9)=-1 ; 解体 if md(mdg+9)=7 : md(mdg+9)=0 ; 建設リセット continue } ; 砦建設 n=md(mdg+7) if n=1 or n=7 or n=10 : continue ; 城、砦、外交館 n=md(cnt*mdb+9) if n=7 or n=10 : continue ; 砦、外交館 if md(mdg+7)!0 : md(mdg+9)=-1 if md(mdg+7)=0 : md(mdg+9)=7 loop return /* #deffunc not_enough ; 戦力が足りない repeat 25 : st_cnt=cnt ; 戦力配備 if hdp(cnt)=0 : break haibi hdp(cnt) : if haibif=1 : break loop if haibif=0 : return ; 終わり repeat 25 ; 外交館建設要請 m=hdn(st_cnt) : if m=0 : break st_cnt+ mdg=m*mdb if md(mdg+7)>0 or md(mdg+9)!0 : continue md(mdg+9)=10 ; 外交館建設要請 stmf(pn)=1 ; 建設モード loop if stmf(pn)=1 : return ; 終わり stmf(pn)=2 ; タレント要請モード return */ #deffunc mpn234_per ; 魔術、マナ、治安の順列 repeat 25 mpn2(cnt)=0 ; 魔術の順列リセット mpn3(cnt)=0 ; マナの順列リセット mpn4(cnt)=0 ; 治安の順列リセット loop repeat 25 ; 魔術の順列 m=mpn(cnt) : if m=0 : break repeat 25 ; ソート if mpn2(cnt)=0 : mpn2(cnt)=m : break if md(mpn2(cnt)*mdb+2)>md(m*mdb+2) : continue ; 大きい順 n=mpn2(cnt) : mpn2(cnt)=m : m=n loop loop repeat 25 ; マナの順列 m=mpn(cnt) : if m=0 : break repeat 25 ; ソート if mpn3(cnt)=0 : mpn3(cnt)=m : break if md(mpn3(cnt)*mdb+3)>md(m*mdb+3) : continue ; 大きい順 n=mpn3(cnt) : mpn3(cnt)=m : m=n loop loop repeat 25 ; 治安の順列 m=mpn(cnt) : if m=0 : break repeat 25 ; ソート if mpn4(cnt)=0 : mpn4(cnt)=m : break if md(mpn4(cnt)*mdb+4)<md(m*mdb+4) : continue ; 小さい順 n=mpn4(cnt) : mpn4(cnt)=m : m=n loop loop return #deffunc bds int bdsn ; 建築処理 if bdsn=-1 : bdsn2=12 : else : bdsn2=bdsn if bul_mp(bdsn2)>pmp(pn) : return ; マナが足りない repeat 25,1 : m=cnt if map(m)=0 or mpl(m)!pn : continue mdg=m*mdb if md(mdg+9)!bdsn : continue if bul_mp(bdsn2)>pmp(pn) : break ; マナが足りない pmp(pn)-=bul_mp(bdsn2) : md(mdg+9)=0 ; マナ消費、要請リセット if bdsn=-1 { ; 解体 if md(ndg+7)=5 : pubn(pn)-=pubs : pubsn(pn)- if md(ndg+7)=11 : pibn(pn)-=pibs : pibsn(pn)- md(mdg+7)=0 continue } ; 建築 if bdsn=5 : pubn(pn)+=pubs : pubsn(pn)+ if bdsn=11 : pibn(pn)+=pibs : pibsn(pn)+ md(mdg+7)=bdsn loop /* pmp(pn)-=bul_mp(bdsn) ; マナ消費 if bdsn=12 : md(bdsm*mdb+7)=0 : return ; 解体 md(bdsm*mdb+7)=bdsn */ return #deffunc build_syo ; 建設処理 if bul_mp(12)>pmp(pn) : return ; マナが足りない bds -1 ; 解体 if bul_mp(10)>pmp(pn) : return ; マナが足りない bds 10 ; 外交館 if bul_mp(5)>pmp(pn) : return ; マナが足りない bds 5 ; 人材府 if bul_mp(8)>pmp(pn) : return ; マナが足りない bds 8 ; 警察署 if bul_mp(7)>pmp(pn) : return ; マナが足りない bds 7 ; 砦 if bul_mp(6)>pmp(pn) : return ; マナが足りない bds 6 ; 鍛冶屋 if bul_mp(3)>pmp(pn) : return ; マナが足りない bds 3 ; サークル if bul_mp(2)>pmp(pn) : return ; マナが足りない bds 2 ; 塔 if bul_mp(4)>pmp(pn) : return ; マナが足りない bds 4 ; 市場 if bul_mp(9)>pmp(pn) : return ; マナが足りない bds 9 ; 寺院 if bul_mp(11)>pmp(pn) : return ; マナが足りない bds 11 ; 倉庫 return #deffunc human_set ; 人材 repeat 25 : m=mpn3(cnt) ; 第一人材地の選定 if m=0 : continue mdg=m*mdb if md(mdg+4)<pbn : m=0 : continue ; 治安が足りない n=md(mdg+7) if n=7 or n=8 or n=10 : m=0 : continue ; 砦、警察、外交館 n=md(mdg+9) if n=7 or n=8 or n=10 : m=0 : continue ; 砦、警察、外交館 break loop if m=0 : return mpn234_del m ; 順列からmNo.消去 repeat 1 ; 人材配置 if mu(m*10)!0 : break ; 既に配備してる if stmf=1 : break ; un無い hrs_pic 4 : if un=0 : stmf=1 : break ; un選択、魅力 rh_eq un,4 ; 魅力装備 mu(m*10)=un : ud(un*udb+13)=m*10 ; 配備 loop mdg=m*mdb repeat 1 ; 建築要請 n=md(mdg+7) if n=5 or n=7 or n=8 or n=10 or n=1 : break ; 人材府、砦、警察、外交府、城 if n>0 : md(mdg+9)=-1 : break ; 解体要請 n=md(mdg+9) if n=5 or n=7 or n=8 or n=10 : break ; 人材府、砦、警察、外交府 if pubsn(pn)<pubsb : md(mdg+9)=5 : break ; 人材府建築要請 n=0 ; 解体する国 repeat 25,1 : m=cnt : mdg=m*mdb ; 人材府が最大の時、解体する弱小国 if md(mdg+7)!5 : continue ; 外交館 if n=0 : n=m : continue if md(mdg+3)<md(n*mdb+3) : n=m ; 再弱国 loop md(n*mdb+9)=-1 : break ; 解体要請 loop ;mgv_put m : pkey return #deffunc blacksmith_set ; 鍛冶 repeat 25 : m=mpn2(cnt) ; 第一鍛冶地の選定 if m=0 : continue mdg=m*mdb if md(mdg+4)<pbn : m=0 : continue ; 治安が足りない n=md(mdg+7) if n=5 or n=7 or n=8 or n=10 : m=0 : continue ; 人材府、砦、警察、外交館 n=md(mdg+9) if n=5 or n=7 or n=8 or n=10 : m=0 : continue ; 人材府、砦、警察、外交館 break loop if m=0 : return mpn234_del m ; 順列からmNo.消去 repeat 1 ; 人材配置 if mu(m*10)!0 : break ; 既に配備してる if stmf=1 : break ; un無い hrs_pic 3 : if un=0 : stmf=1 : break ; un選択、知力 rh_eq un,3 ; 知力装備 mu(m*10)=un : ud(un*udb+13)=m*10 ; 配備 loop mdg=m*mdb repeat 1 ; 建築要請 n=md(mdg+7) if n=5 or n=6 or n=7 or n=8 or n=10 or n=1 : break ; 人材府、鍛冶屋、砦、警察、外交府、城 if n>0 : md(mdg+9)=-1 : break ; 解体要請 n=md(mdg+9) if n=5 or n=6 or n=7 or n=8 or n=10 : break ; 人材府、鍛冶屋、砦、警察、外交府 md(mdg+9)=6 ; 鍛冶建築要請 loop ; 1箇所以外は解体 repeat 25,1 : m2=cnt if map(m2)=0 or mpl(m2)!pn or m2=m : continue mdg2=m2*mdb if md(mdg2+7)=6 : md(mdg2+9)=-1 if md(mdg2+9)=6 : md(mdg2+9)=0 loop ;mgv_put m : pkey return #deffunc castle_set ; 城配備 m=mpc(pn) : mdg=m*mdb mpn234_del m ; 順列からmNo.消去 if mu(m*10)>0 or stmf=1 : return ; 配備済み chaibif=0 repeat 1 if md(mdg+4)<=pbn : chaibif=1 : break ; 筋力 repeat 25 ; 第二人材地 if mpn2(cnt)=0 : continue m2=mpn2(cnt) : break loop if m=m2 : chaibif=4 : break ; 魅力 repeat 25 ; 第二鍛冶地 if mpn3(cnt)=0 : continue m2=mpn3(cnt) : break loop if m=m2 : chaibif=3 : break ; 知力 chaibif=4 ; 魅力 loop if mu(m*10)!0 : return ; 既に配備してる hrs_pic chaibif : if un=0 : stmf=1 : return ; un選択 rh_eq un,chaibif ; 装備 mu(m*10)=un : ud(un*udb+13)=m*10 ; 配備 ;mgv_put m : pkey return #deffunc force_set ; 部隊配備 haibif=0 repeat 3 : cnt3=cnt ; 配備 if haibif=1 : break ; 残戦力無し repeat 25 : m=hdp(cnt) if m=0 : break ; 終わり if wp(m)>=hdn(m) or hdn(m)=0 /*and hdfn(m)<cnt3+1*/ : continue ; 必要戦力有り部隊数が揃ってる haibi m,1 ; 配備 if haibif=1 : break ; 残戦力無し loop loop /* repeat 25,1 ; 戦力値評価 if mpl(cnt)=pn : wpck(cnt) loop */ ;repeat 25 : wp(cnt)=wp(cnt)\10000 : loop ; プレイヤー脅威値をリセット ;mu_dpt ;hrt_put 1 ; 戦力評価 wp2=0 ; 総配備戦力 repeat 25,1 : m=cnt if mpl(m)!pn : continue ; 勢力国では無い wp2+=wp(cnt) ; 戦力値計測 loop wp3=wp1-wp2 ; 残戦力値 return #deffunc police_set ; 警察要請 ;mgv_put m ; 政府の警察 n=0 repeat 25 m=mpn(cnt) : if m=0 : continue if md(m*mdb+4)<pbn : n+ loop if n>=3 : hrs_pic 1 : if un>0 { ; 治安が悪い国3つ以上の時、警察長官任命 mgv(pn*mgvb+5)=un ud(un*udb+13)=1000+pn*mgvb+5 ; 配属場所登録 } ; 警察の解体処理 repeat 25,1 : m=cnt if map(m)=0 or mpl(m)!pn : continue ; 自領では無い mdg=m*mdb if md(mdg+4)>=100000 and md(mdg+7)=8 : md(mdg+9)=-1 : mpn234_del m ; 解体要請 loop ;mgv_put m repeat 25 m=mpn4(cnt) : if m=0 : continue mdg=m*mdb n=md(mdg+7) if n=1 or n=7 or n=8 or n=10 : continue ; 城、砦、警察、外交府 n=md(mdg+9) if n=7 or n=8 or n=10 or md(mdg+9)=-1 : continue ; 砦、警察、外交府 if md(mdg+7)=8 or md(mdg+4)>=pbn : continue ; 順列からmNo.消去 mpn234_del m ; 順列からmNo.消去 if md(mdg+7)>0 : md(mdg+9)=-1 : continue ; 解体要請 md(mdg+9)=8 ; 建築要請 loop ; 領主配備 if stmf=1 : return ; un無い repeat 25 m=mpn(cnt) : if m=0 : continue if mu(m*10)!0 : continue ; 既に配備してる mdg=m*mdb if md(mdg+4)>pbn and md(mdg+7)!8 : continue hrs_pic 1 : if un=0 : stmf=1 : continue ; un選択 ;if un=0 : talent_set pn : break ; いない rh_eq un,1 ; 装備 mu(m*10)=un : ud(un*udb+13)=m*10 ; 配備 loop return #deffunc diplomacy_set ; 外交要請 repeat 25 m=hdp(cnt) : if m=0 : break mdg=m*mdb if md(mdg+7)=1 : continue ; 城 if wp(m)>=hdn(m) { ; 戦力が足りてる if md(mdg+7)=10 : md(mdg+9)=-1 ; 解体要請 if md(mdg+9)=10 : md(mdg+9)=0 continue } if md(mdg+7)=0 : md(mdg+9)=10 if md(mdg+7)!0 and md(mdg+7)!10 : md(mdg+9)=-1 ; 建築要請 mpn234_del m ; 順列からmNo.消去 ; 領主配備 if mu(m*10)!0 : continue ; 既に配備してる if stmf=1 : continue ; un無い hrs_pic 4 : if un=0 : stmf=1 : continue ; un選択 rh_eq un,4 ; 装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 loop return #deffunc government_set int gv_setf ; 政府 ; gv_setf(0=領土数を考慮しない、1=領土数を考慮) ; 首領 if gv_setf=0 or mpnc>=5 { ; 領有国が5国以上 hrs_pic 5 ; 総力 if un=0 : stmf=1 : return rh_eq un,4 ; 装備 mgv(pn*mgvb+1)=un ; 首領 ud(un*udb+13)=1000+pn*mgvb+1 ; 配属場所登録 } if gv_setf=0 or mpnc>=3 { ; 領有国が3国以上 ; 警察 if mgv(pn*mgvb+5)=0 { hrs_pic 1 ; 筋力 if un=0 : stmf=1 : return rh_eq un,1 ; 装備 mgv(pn*mgvb+5)=un ; 宗教 ud(un*udb+13)=1000+pn*mgvb+5 ; 配属場所登録 } ; 政務 hrs_pic 4 ; 魅力 if un=0 : stmf=1 : return rh_eq un,4 ; 装備 mgv(pn*mgvb+2)=un ; 政務 ud(un*udb+13)=1000+pn*mgvb+2 ; 配属場所登録 ; 魔術 hrs_pic 3 ; 知力 if un=0 : stmf=1 : return rh_eq un,3 ; 装備 mgv(pn*mgvb+3)=un ; 魔術 ud(un*udb+13)=1000+pn*mgvb+3 ; 配属場所登録 ; 宗教 hrs_pic 2 ; 魔力 if un=0 : stmf=1 : return rh_eq un,2 ; 装備 mgv(pn*mgvb+4)=un ; 宗教 ud(un*udb+13)=1000+pn*mgvb+4 ; 配属場所登録 ; 軍務 hrs_pic 5 ; 総力 if un=0 : stmf=1 : return rh_eq un,1 ; 装備 mgv(pn*mgvb+6)=un ; 軍務 ud(un*udb+13)=1000+pn*mgvb+6 ; 配属場所登録 } return #deffunc mana2_set ; 第二マナ地 repeat 25 : m=mpn3(cnt) ; 人材地の選定 if m=0 or m=matp2 : continue mdg=m*mdb n=md(mdg+7) ; 建築物 if n=1 or n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : m=0 : continue ; 城、人材府、鍛冶屋、砦、警察、外交館、倉庫 n=md(mdg+9) ; 建築要請 if n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : m=0 : continue ; 人材府、鍛冶屋、砦、警察、外交館、倉庫 mpn234_del m ; 順列からmNo.消去 ; 満員では無い if pubn(pn)>pubg(pn) { ; 満員では無い場合はサークル repeat 1 if md(mdg+7)=3 or md(mdg+9)=3 : break ; 既にサークルがある if md(mdg+7)>0 : md(mdg+9)=-1 : break ; 解体要請 md(mdg+9)=3 ; サークル建築要請 loop if stmf=0 and mu(m*10)=0 { hrs_pic 2 : if un=0 : stmf=1 ; un選択、魔力 if un>0 { rh_eq un,2 ; 魔力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } break } ; 満員の場合 if pubsn(pn)<pubsb { ; 人材府がまだ建てられる if md(mdg+7)=0 : md(mdg+9)=5 : else : md(mdg+9)=-1 ; 建設要請 break } if pubsn(pn)>=pubsb { ; 人材府の数が最大 m1=m repeat 25,1 : m2=cnt : mdg=m2*mdb if map(m2)=0 or mpl(m2)!pn : continue if md(mdg+7)!5 : continue if md(m1*mdb+3)>md(m2*mdb+3) : m1=m2 ; 再弱国 loop if m1=m { ; 現国が再弱国ならサークル repeat 1 if md(mdg+7)=3 or md(mdg+9)=3 : break ; 既にサークルがある if md(mdg+7)>0 : md(mdg+9)=-1 : break ; 解体要請 md(mdg+9)=3 ; サークル建築要請 loop if stmf=0 and mu(m*10)=0 { hrs_pic 2 : if un=0 : stmf=1 ; un選択、魔力 if un>0 { rh_eq un,2 ; 魔力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } break } md(m2*mdb+9)=-1 ; 再弱国解体要請 break } loop ; 領主配備 repeat 25,1 : m=cnt if map(m)=0 or mpl(m)!pn : continue mdg=m*mdb if md(mdg+7)!5 : continue if stmf=0 and mu(m*10)=0 { ; 配備 hrs_pic 4 : if un=0 : stmf=1 : break ; un選択、魅力 if un>0 { rh_eq un,4 ; 魅力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } loop return /* #deffunc mana2_set ; 第二マナ地 m2sf=0 ; 満員フラグ if pubn(pn)<=pubg(pn) : m2sf=1 ; 満員 m2sc=0 ; 配備カウンター repeat 25,1 : m=cnt if map(m)=0 or mpl(m)!pn : continue if md(m*mdb+7)!5 or md(m*mdb+9)=0 : continue m2sc+ ; 配備してる loop m2sbf=0 ; 建設フラグ repeat 25,1 : m=cnt if map(m)=0 or mpl(m)!pn : continue if md(m*mdb+9)=5 : md(m*mdb+9)=0 ; 建設要請リセット loop repeat 25 : m=mpn3(cnt) ; 人材地の選定 if m=0 or m=matp2 : continue mdg=m*mdb n=md(mdg+7) ; 建築物 if n=1 or n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : m=0 : continue ; 城、人材府、鍛冶屋、砦、警察、外交館、倉庫 n=md(mdg+9) ; 建築要請 if n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : m=0 : continue ; 人材府、鍛冶屋、砦、警察、外交館、倉庫 if m2sc<pubsn(pn) { ; 現人材府数の配備を終えてない mpn234_del m ; 順列からmNo.消去 if md(mdg+7)!5 : md(mdg+9)=-1 : break ; 解体要請 if md(mdg+7)=0 { if pubsn(pn)<pubsb and m2sbf=0 : md(mdg+9)=5 : m2sbf=1 ; 建設要請 break } if stmf=0 and mu(m*10)=0 { ; 配備 hrs_pic 4 : if un=0 : stmf=1 ; un選択、魅力 if un>0 { rh_eq un,4 ; 魅力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } m2sc+ break } ; 現人材府数の配備を終えてる ; 満員では無い if m2sf=0 { ; 満員では無い場合はサークル mpn234_del m ; 順列からmNo.消去 repeat 1 if md(mdg+7)=3 or md(mdg+9)=3 : break ; 既にサークルがある if md(mdg+7)>0 : md(mdg+9)=-1 : break ; 解体要請 md(mdg+9)=3 ; サークル建築要請 loop if stmf=0 and mu(m*10)=0 { hrs_pic 2 : if un=0 : stmf=1 ; un選択、魔力 if un>0 { rh_eq un,2 ; 魔力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } break } ; 満員の場合 if pubsn(pn)>=pubsb { ; 人材府の数が最大 n=0 : f=0 repeat 25,1 : m2=cnt : mdg=m2*mdb if map(m2)=0 or mpl(cnt)!pn : continue if md(mdg+7)!5 : continue if md(mdg+9)=-1 : f=1 : break ; 既に解体要請がある if n=0 : n=m2 : continue if md(n*mdb+3)>md(m2*mdb+3) : n=m2 ; 再弱国 loop if f=0 : if md(m*mdb+3)>md(m2*mdb+3) : md(m2*mdb+9)=-1 : break ; 解体要請 } if md(mdg+7)!5 : md(mdg+9)=-1 : break ; 解体要請 if md(mdg+7)=0 { if pubsn(pn)<pubsb : if m2sbf=0 : md(mdg+9)=5 : m2sbf=1 ; 建設要請 mpn234_del m ; 順列からmNo.消去 } loop return */ #deffunc magic2_set ; 第二魔術地 repeat 25 : m=mpn2(cnt) ; 人材地の選定 if m=0 or m=matp2 : continue mdg=m*mdb n=md(mdg+7) ; 建築物 if n=1 or n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : m=0 : continue ; 城、人材府、鍛冶屋、砦、警察、外交館、倉庫 n=md(mdg+9) ; 建築要請 if n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : m=0 : continue ; 人材府、鍛冶屋、砦、警察、外交館、倉庫 break loop if m=0 : return ; 用地無し mpn234_del m ; 順列からmNo.消去 ; 人材配置 if stmf=0 and mu(m*10)=0 { hrs_pic 3 : if un=0 : stmf=1 ; un選択、知力 if un>0 { rh_eq un,3 ; 知力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } ; 建築要請 mdg=m*mdb n=md(mdg+7) ; 建築物 if n=0 : md(mdg+9)=2 ; 塔 if n!2 and n!0 : md(mdg+9)=-1 ; 解体要請 ; 1箇所以外は解体 repeat 25,1 : m2=cnt if map(m2)=0 or mpl(m2)!pn or m2=m : continue mdg2=m2*mdb if md(mdg2+7)=2 : md(mdg2+9)=-1 if md(mdg2+9)=2 : md(mdg2+9)=0 loop return #deffunc market_set ; 市場 m=0 repeat 25,1 if matp2=cnt : continue ; 今占領した国 if map(cnt)=0 or mpl(cnt)!pn : continue n=md(cnt*mdb+7) if n=1 or n=2 or n=3 or n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : continue ; 城、塔、サークル、人材府、鍛冶、砦、警察、外交館、倉庫 n=md(cnt*mdb+9) if n=2 or n=3 or n=5 or n=6 or n=7 or n=8 or n=10 or n=11 : continue ; 塔、サークル、人材府、鍛冶、砦、警察、外交館、倉庫 if m=0 : m=cnt : continue if md(cnt*mdb+1)>md(m*mdb+1) : m=cnt ; 一番人口が多い loop if m=0 : return ; 用地無し mpn234_del m ; 順列からmNo.消去 ; 人材配置 if stmf=0 and mu(m*10)=0 { hrs_pic 4 : if un=0 : stmf=1 ; un選択、魅力 if m>0 { rh_eq un,4 ; 魅力装備 mu(m*10)=un : ud(un*udb+13)=mdg ; 配備 } } mdg=m*mdb n=md(mdg+7) ; 建築物 if n=0 : md(mdg+9)=4 ; 市場 if n!4 and n!0 : md(mdg+9)=-1 ; 解体要請 ; 1箇所以外は解体 repeat 25,1 : m2=cnt if map(m2)=0 or mpl(m2)!pn or m2=m : continue mdg2=m2*mdb if md(mdg2+7)=4 : md(mdg2+9)=-1 if md(mdg2+9)=4 : md(mdg2+9)=0 loop return #deffunc talent_set int talent_setn ; 人材登用 if pubg(pn)>=pubn(pn) : return ; 登録がいっぱい c=100 repeat 100 ; マナがあるか if tal_mp(c)<=pmp(pn) : break c- loop if c=0 : return ; マナが無い m=mpn3(0) ; 出現地、マナ基準 r=un_fd_rlv(m) ; 出現Lv if r>c : r=c ; Lv分のマナポイントがあるか ;tal_fd m ; ユニット発掘 zn=map(m) ; 地形 cs=cha_syu(zn) ; その地形のキャラ種類総数 cz=cha_zoks(zn) ; その地形のキャラスタートNo. n=cz+cs-1 repeat cs cn=n-cnt if r<cd(15,cn) : continue ; 出現Lvに満たない r2=rnd(4) : if r2=0 : break; 4分の1でそのキャラを選択 loop if cn>0 { if pmp(pn)<tal_mp(cd(15,cn)) : return ; MPあるか unt 1,cn ; ユニット登録 if un=0 : return ; 登録できなかった hper_set pn,un ; 順列セット } pmp(pn)-=tal_mp(cd(15,cn)) ; マナポイント減少 return *strategy ; 英雄勢力の人材とアイテムの発見と配置、戦略 repeat plb : pn=hap(cnt) if pn=0 : continue ; 順列に無い if hf(pn)=0 : continue ; 勢力が滅んでる repeat 25 : hde(cnt)=0 : loop ; 既に攻め込むのに使ったかリセット str_map_put ; マップ表示 dependent_set ; 一時属領一覧セット mana_point ; マナポイント un_it_found ; ユニットとアイテムの発見 build_syo ; 建設処理 ;wpb_cal ; 最大脅威値算出 ; プレイヤー if hf(pn)=1 { gosub *map_main hdb(pn)=0 ; 最大戦力値の算出 repeat 9 : hdb_un(cnt)=0 : loop repeat pubn(pn),udsh(pn) : un1=cnt if ud(un1*udb)=0 : continue ; ユニットNo. repeat 9 ; 大きいのに入れ替え if hdb_un(cnt)=0 : hdb_un(cnt)=un1 : break if ud(hdb_un(cnt)*udb+27)>ud(un1*udb+27) : continue un2=hdb_un(cnt) : hdb_un(cnt)=un1 : un1=un2 loop loop repeat 9 hdb(pn)+=ud(hdb_un(cnt)*udb+27) loop ;hdb_put continue } ; CPU stmf=0 ; 人材全使用フラグ haibif=0 ; un全使用フラグ ;eq_setn=0 ; 装備種別カウント pmu_rst pn ; ユニット配置解除 ;hp_dpt pn peq_rst pn ; 装備解除 ;hp_dpt pn hrs_copy ; 英雄のユニット操作順列コピー his_copy ; 英雄のアイテム操作順列コピー mpn234_per ; 魔術、マナ、治安の順列 ; 仮配備 hrt1c=0 : hrt2c=0 : hrt3c=0 ; 列の順番カウントをリセット hrt1qc=0 : hrt2qc=0 : hrt3qc=0 ; 装備列の順番カウントをリセット human_set ; 人材 blacksmith_set ; 鍛冶 castle_set ; 城配備 equipment_set1 ; 装備と列の順列のセット matp=0 ; 攻勢点の国 matp2=0 ; 今攻略した国 hdn_cal ; 隣接国脅威値を算出 attack_point ; 攻勢点 if debugf=1 : map_dpt /* redraw 0 color 1,1,1 : boxf : color 255,255,255 map_put redraw 1 pkey hdn_put : pkey */ repeat 25 ; wpリセット m=mpn(cnt) : if m=0 : break wp(m)=0 loop haibif=0 ; un全使用フラグ pmu_rst pn ; ユニット配置解除 peq_rst pn ; 装備解除 hrs_copy ; 英雄のユニット操作順列コピー his_copy ; 英雄のアイテム操作順列コピー ;info_dpt2 hrt1c=0 : hrt2c=0 : hrt3c=0 ; 列の順番カウントをリセット hrt1qc=0 : hrt2qc=0 : hrt3qc=0 ; 装備列の順番カウントをリセット repeat hub ; 列の順列をリセット hrt1(cnt)=0 : hrt2(cnt)=0 : hrt3(cnt)=0 loop mpn234_per ; 魔術、マナ、治安の順列 human_set ; 人材 if debugf=1 : bil_dpt 1 ;map_dpt 1 ;info_dpt2 1 blacksmith_set ; 鍛冶 if debugf=1 : bil_dpt 2 ;map_dpt 2 ;info_dpt2 2 castle_set ; 城配備 if debugf=1 : bil_dpt 3 ;map_dpt 3 fort_set ; 砦 if debugf=1 : bil_dpt 4 ;map_dpt 4 ;info_dpt2 3 /* repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ ; 戦力が足りない if matp=0 {;: not_enough : break repeat 25 ;: st_cnt=cnt ; 戦力配備 if hdp(cnt)=0 : break if hdn(hdp(cnt))=0 : continue ; 脅威が無い haibi hdp(cnt),3 : if haibif=1 : break loop ;if haibif=0 : break ; 終わり /* redraw 0 color 1,1,1 : boxf : color 255,255,255 map_put redraw 1 pkey hdn_put pkey repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ ;stnf=0 repeat 25 ; 外交館建設要請 m=hdp(cnt) : if m=0 : break mdg=m*mdb if hdn(m)<=wp(m) { ; 戦力が足りてる if md(mdg+7)=10 : md(mdg+9)=-1 if md(mdg+9)=10 : md(mdg+9)=0 continue } if md(mdg+7)=1 or md(mdg+7)=10 : continue if md(mdg+7)>0 : md(mdg+9)=-1 : continue if md(mdg+9)=10 : continue md(mdg+9)=10 /* if bul_mp(10)<pmp(pn) /*: stmf=1*/ ;: break ; マナが足りない ; md(mdg+7)=10 : pmp(pn)-=bul_mp(10) ; 外交館建設 loop ;if stmf=1 : return ; 終わり talent_set pn ; タレント発掘 ;build_syo ; 建設処理 ;continue ;map_dpt 5 ;info_dpt2 4 } ; 戦力が足りてる if matp>0 { ;map_dpt -1 switch hdkn ; 攻める国数 case 1 ; 1国 m=hdk(0) haibi m,3;hdfn :; hdp_del m ; 第一攻勢国、配備 /* repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ ;map_dpt 5 ;info_dpt2 5 if wp(m)<wp(matp)*2 : swbreak ; 必要戦力が無い war m,matp ; 攻める ; win_syorif!2 : swbreak ; 負けた ; wp_ck matp : if wp_ckf=0 : swbreak ; 脅威無し ; haibi matp,hdfn ; 再配備 swbreak case 2 ; 2国 m1=hdk(0) : haibi m1,3;hdfn : ;hdp_del m1 ; 第一攻勢国、配備 if wp(m1)*10<wp(matp)*12 : swbreak ; 必要戦力が無い m2=hdk(1) : haibi m2,3;hdfn : ;hdp_del m2 ; 第二攻勢国、配備 if wp(m2)*10<wp(matp)*8 : swbreak ; 必要戦力が無い ;map_dpt -1 ;info_dpt2 6 war m1,matp ; 攻める if win_syorif=2 : swbreak ; 勝った ; wp_ck m1 : if wp_ckf=0 : swbreak ; 脅威無し ; haibi m1,hdfn ; 再配備 ;mgv_put m2 : pkey map_dpt 2 war m2,matp ; 攻める ; win_syorif!2 : swbreak ; 負けた ; wp_ck m2 : if wp_ckf=0 : swbreak ; 脅威無し ; haibi m2,hdfn ; 再配備 swbreak case 3 ; 3国 m1=hdk(0) : haibi m1,3;hdfn : ;hdp_del m1 ; 第一攻勢国、配備 if wp(m1)*10<wp(matp)*10 : swbreak ; 必要戦力が無い m2=hdk(1) : haibi m2,3;hdfn :; hdp_del m2 ; 第二攻勢国、配備 if wp(m2)*10<wp(matp)*8 : swbreak ; 必要戦力が無い m3=hdk(2) : haibi m3,3;hdfn : ;hdp_del m3 ; 第三攻勢国、配備 if wp(m3)*10<wp(matp)*6 : swbreak ; 必要戦力が無い ;map_dpt -1 ;info_dpt2 7 war m1,matp ; 攻める if win_syorif=2 : swbreak ; 勝った ; wp_ck m1 : if wp_ckf=0 : swbreak ; 脅威無し ; haibi m1.hdfn ; 再配備 ;mgv_put m2 : pkey map_dpt 2 war m2,matp ; 攻める if win_syorif=2 : swbreak ; 勝った ; wp_ck m2 : if wp_ckf=0 : swbreak ; 脅威無し ; haibi m2,hdfn ; 再配備 ;mgv_put m3 : pkey map_dpt 3 war m3,matp ; 攻める ;win_syorif!2 : break ; 負けた ;wp_ck m3 : if wp_ckf=0 : swbreak ; 脅威無し ;haibi m3,hdfn ; 再配備 swbreak swend repeat 25,1 ; wp再計算 if map(cnt)=0 or mpl(cnt)!pn : continue wpck cnt,1 loop matp2=matp ; データ退避 matp=0 ; 攻勢国リセット dependent_set ; 一時属領一覧セット mpn234_per ; 魔術、マナ、治安の順列 hdn_cal ; 隣接国脅威値を算出 ;hdn_put : pkey ;equipment_set ; 装備と列の順列のセット ;hrs_dpt : pkey ;hrt_dpt : pkey ;fff=1 force_set ; 部隊配備 ;hrs_dpt : pkey /* hrt_dpt : pkey repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ if haibif=1 : talent_set pn ;: continue ; ユニット足りない } if debugf=1 : map_dpt stmf=0 ; 人材全使用フラグ diplomacy_set ; 外交要請 if debugf=1 : bil_dpt 8 ;map_dpt 8 ;info_dpt2 8 police_set ; 警察要請 if debugf=1 : bil_dpt 9 ;map_dpt 10 ;info_dpt2 ;hrs_dpt : pkey /* repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ government_set 1 ; 政府 ;hrs_dpt : pkey /* repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ mana2_set ; 第二マナ地 if debugf=1 : bil_dpt 11 ;map_dpt 11 ;info_dpt2 11 magic2_set ; 第二魔術地 if debugf=1 : bil_dpt 12 ;map_dpt 12 ;info_dpt2 12 market_set ; 市場 if debugf=1 : bil_dpt 13 ;map_dpt 13 ;info_dpt2 13 ;build_syo ; 建設処理 ;map_dpt repeat 25,1 : m=cnt ; 領主配備 if stmf=1 : break if map(m)=0 or mpl(m)!pn : continue if mu(m*10)!0 : continue ; 配備してる if md(m*mdb+4)<pbn { hrs_pic 1 : if un=0 : stmf=1 : break rh_eq un,1 ; 装備 } else { hrs_pic 5 : if un=0 : stmf=1 : break rh_eq un,4 ; 装備 } mu(m*10)=un : ud(un*udb+13)=m*10 ; 配備 loop if debugf=1 : bil_dpt 14 ;map_dpt 14 ;hrs_dpt : pkey government_set 0 ; 政府 ;hrs_dpt : pkey ;info_dpt2 100 ;map_dpt 15 repeat 25 ; 寺院建設 m=mpn(cnt) : if m=0 : break if m=matp2 : continue ; 今占領した国 mdg=m*mdb if md(mdg+7)!0 or md(mdg+9)!0 : continue if pibg(pn)<pibn(pn) : md(mdg+9)=9 : continue ; アイテム登録がいっぱいで無いなら寺院建設 if pibsn(pn)<pibsb : md(mdg+9)=11 loop if debugf=1 : bil_dpt 15 if debugf=1 : map_dpt 16 ;map_dpt 16 /* repeat 25,1 if map(cnt)=0 or mpl(cnt)!pn : continue mgv_put cnt pkey loop */ ; 攻め込む /* repeat 25,1 ; 戦力値計算 if mpl(cnt)=pn : wpck cnt loop */ if mainf!5 : break loop trn+ ; ターン+ return