2021年 2月 24日
未実装だった経験値による能力の上昇を実装している。

↓

経験値を稼ぐ場所は沢山あるので、これまた実装には時間がかかっている、まだ途中だ。
経験値取得のプログラムはこんな感じ
#deffunc ep int _ep_f,int _ep_un1,int _epf1,int _ep_un2,int _epf2,int _epfk
if walaf=1 : return ; 城攻撃モード
ep_f=_ep_f ; 比較種類(0=無し、1=敵、2=都市)
ep_un1=_ep_un1 ; 対象ユニット
epf1=_epf1 ; 上昇する能力
epfk=_epfk ; 上昇係数
ep_un2=_ep_un2 ; 比較ユニット,国
epf2=_epf2 ; 比較する能力
; 自ユニット
ep_ug1=ep_un1*udb ; 上昇する能力
ep_jf=double(ud(ep_ug1+epf1))*double(epfk) ; の値
if ep_jf=0.0 : return
if epf1=1 : exp_n1=ud(ep_ug1+51) ; STR、保持しているexp値
if epf1=2 : exp_n1=ud(ep_ug1+52) ; MAG、保持しているexp値
if epf1=3 : exp_n1=ud(ep_ug1+53) ; INT、保持しているexp値
if epf1=4 : exp_n1=ud(ep_ug1+54) ; CHR、保持しているexp値
exp_n2=double(exp_n1)/1000000.0 ; 実数に変換
; 比較能力
switch ep_f ; 比較種類
case 0
ep_ef=0.0
swbreak
case 1 ; 敵能力
ep_ug2=ep_un2*udb ; 比較する能力
ep_ef=double(ud(ep_ug2+epf2)) ; の値
swbreak
case 2 ; 都市 100000
if epf2=1 : ep_ef=double(md(ep_un2*mdb+1))/double(10000); 人口
if epf2=2 : ep_ef=double(md(ep_un2*mdb+2))/double(1000) ; 魔術
if epf2=3 : ep_ef=double(md(ep_un2*mdb+3))/double(1000) ; マナ
if epf2=4 : ep_ef=double(100000-md(ep_un2*mdb+4))/double(1000) ; 治安
if epf2=5 : ep_ef=double(wal(ep_un2))/double(100) ; 城壁値
if epf2=6 : ep_ef=double(wp(ep_un2));/double(100) ; wp戦力値
swbreak
case 3 ; 数
ep_ef=double(ep_un2)/double(epf2)
swbreak
swend
if ep_ef<=0.0 : return
; exp処理
exp_f=ep_ef/ep_jf ; 取得経験値
if exp_f>0.5 : exp_f=0.5 ; 上限
exp_g=exp_n2+exp_f ; 現総exp
exp_n=int(exp_g) ; 整数値
if exp_n>0 {
if epf1=1 : ep_defn1=int(round(double(ud(ep_ug1+1))/3.0)) ; 防御
if epf1=2 : ep_mdfn1=int(round(double(ud(ep_ug1+2))/3.0)) ; 魔防
ud(ep_ug1+epf1)+=exp_n
if ud(ep_ug1+epf1)>99 : ud(ep_ug1+epf1)=99
ud(ep_ug1+20+epf1)+=exp_n
exp_g-=double(exp_n)
if epf1=1 { ; 攻撃、防御
ud(ep_ug1+11)+=exp_n
ep_defn2=int(round(double(ud(ep_ug1+1))/3.0))
ep_defn3=ep_defn2-ep_defn1
if ep_defn3>0 : ud(ep_ug1+12)+=ep_defn3
}
if epf1=2 { ; 魔攻、魔防
ud(ep_ug1+14)+=exp_n
ep_mdfn2=int(round(double(ud(ep_ug1+2))/3.0))
ep_mdfn3=ep_mdfn2-ep_mdfn1
if ep_mdfn3>0 : ud(ep_ug1+15)+=ep_mdfn3
}
}
exp_n3=int(exp_g*1000000) ; 収納するexp値
if epf1=1 : ud(ep_ug1+51)=exp_n3 ; STR、保持するexp値
if epf1=2 : ud(ep_ug1+52)=exp_n3 ; MAG、保持するexp値
if epf1=3 : ud(ep_ug1+53)=exp_n3 ; INT、保持するexp値
if epf1=4 : ud(ep_ug1+54)=exp_n3 ; CHR、保持するexp値
return
基本的な式は次の通りで
exp_f=ep_ef/ep_jf ; 取得経験値
対象の値を自ユニットの能力値で割る、という単純なもの。
少数点で計算するために、経験値のデータは整数で保存しておいて、一度 /1000000で少数にしてから計算し、1.0を超えたらその分を能力値に加算し、残った少数をまた *1000000して整数にしてデータ保存しておく、という手法になってる。
最後の epfkは取得量の係数で、単純に 10 → 30だと取得量 3分の1になる。
敵能力値の比較の場合は主に戦闘で
#deffunc atk int _atkf,int _atkn,int _atkrg
; 攻撃(フラグ(0=素手、1=武器、2=魅惑)、攻撃値、射程) -------
atkf=_atkf
atkn=_atkn
atkrg=_atkrg
atkn2=atkn : atkf2=atkf ; 攻撃処理用フラグ
switch atkf
case 0 ; 素手
if us=129 or us=94 : swbreak ; 物理アタックしない
rang fs,atkrg : if en=0 : swbreak ; 射程外
ep 1,un,1,en,1,10 ; exp
if us=152 { ; ピクシーの弓
btsn=13 : btsf2=0 : efs 3,16 ,1,1,8,0 : mmplays 35 ; 表示
atk_syo : bw 20
swbreak
}
bts 1 : atk_syo : bw 20 ; 表示、攻撃処理
swbreak
case 1 ; 武器
; 大砲
if id(ig)=90 {
f=0
repeat 3,1 ; 3体いるか
etf cnt : if en=0 : f=1 : break
loop
if atkrg<(ut-1)+2 : f=1 ; 真ん中に射程が届くか
if f=0 { ; 3体の場合
et=2 : bts 3 : bw 7 ; 弾道エフェクト
gsr=100 ; 中央
et=2 : etf et : if en>0 : ep 1,un,1,en,1,30 : atk_syo : bts 113
gsr=75 ; 左右
et=1 : etf et : if en>0 : ep 1,un,1,en,1,30 : atk_syo : bts 113
et=3 : etf et : if en>0 : ep 1,un,1,en,1,30 : atk_syo : bts 113
bw 13 ; 爆発ウエイト
swbreak
}
rang fs,atkrg : if en=0 : swbreak ; 射程内に敵がいなかった
ep 1,un,1,en,1,30 ; exp
bts 3 : bw 7 ; 弾道エフェクト
atk_syo : bts 113 ; 1体目
et+ : if et<=3 {
etf et : if en=0 : bw 13 : swbreak ; 2体目にいない
ep 1,un,1,en,1,30 ; exp
gsr=75 : atk_syo : bts 113 ; 2体目
}
bw 13 ; 爆発ウエイト
swbreak
}
; 弓、銃
if id(ig+19)=7 or id(ig+19)=8 or id(ig+19)=9 {;or id(ig+19)=10 { ; 弓、ボウガン、銃、手裏剣
atkrg2=atkrg ; 射程
if ud(ug+8)=28 : atkrg2+ ; 長射
if ud(ug+8)=26 or id(ig+8)=2 { ; 貫通
atkf2=0
repeat 3,1 : et=cnt
if atkrg2<(ut-1)+et : break ; 射程外
etf et : if en=0 : continue ; 隊列にいない
ep 1,un,1,en,1,30 ; exp
atk_syo : gsr-=25 : atkf2+ ; 攻撃処理
loop
if atkf2>0 : bts 3 : bw 20
swbreak
}
bown=1 ; 弓攻撃回数
if id(ig+19)=7 { ; 弓の場合
if ud(ug+8)=27 : bown+ ; 連射
repeat sbkn
if ud(ug+40+cnt)<=0 : continue
if id(ud(ug+40+cnt)*idb+8)=50 : bown+ ; 回数+
loop
}
repeat bown ; 弓攻撃
if ud(ug+8)!24 : rang fs,atkrg2 ; 通常
if ud(ug+8)=24 : brang atkrg2 ; スナイピング
if en=0 : break ; 射程外
ep 1,un,1,en,1,bown*10 ; exp
bts 3 : atk_syo : bw 6 ; 遠距離武器、表示、攻撃処理
gsr-=15
if ud(en*udb+26)<=0 : break ; ターゲットが死んだ場合連射終わり
if fn_syof=1 : break ; 全滅
loop
bw 14
swbreak
}
if fn_syof=1 : swbreak ; 全滅
; 近接武器
rang fs,atkrg : if en=0 : swbreak
ep 1,un,1,en,1,10 ; exp
if ut=1 and et=1 : bts 2 : else : if id(ig+8)=1 : bts 3 : else : bts 2 ; 表示
atk_syo : bw 20 ; 近接武器、攻撃処理
swbreak
case 2 ; 魅惑
bts 1 : atk_syo ; 攻撃処理
temp_atkf=1 : bw 20 : temp_atkf=0
swbreak
swend
if dm>=0 and ud(eg+26)>0 and ud(ug)=156 {
temp 0,ud(ug+9),97 ; キューピッドのチャーム
ep 1,un,4,en,4,10 ; exp
}
return
ep 1,un,1,en,1,10 ; exp
のようになっていて、1=STR、2=MAG、3=INT、4=CHR
国データ比較の場合は主に国力の増減や災害時に上がる。
*country ;---------- 国力の増減 ------------------------------------------------
repeat 25,1
m=cnt ; 国
if map(m)=0 : continue ; 地形無い
pn=mpl(m) ; プレイヤーno.
mgvg=pn*mgvb ; 政府データ先頭
mc=mpc(pn) ; 首都
mdg=m*mdb ; 国のデータ先頭
un1=mu(mdg) : ug1=un1*udb ; 領主
;un2=0 : if pn>0 : un2=mu(mc*mdb) : ug2=un2*udb ; 首領
; 人口増加 -------------------------------
n=50;20 ; 基礎増加値、10
if map(m)=3 : n+=30;20 ; 草原なら人口増加、20
;if map(m)=5 : n+=10 ; 森、10
n+=md(mdg+2)/1000 ; 魔術Lvによる増加、100000で100
; n+=md(mdg+4)/1000-50 ; 治安、100%で50
; 建築物、その他、城30、砦20、市場70、公園10
if md(mdg+7)=1 : n+=30 ; 城
if md(mdg+7)=4 { ; 市場
n+=50
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+24) ; 補整、魅力
if ud(ug+8)=3 : n+=20 ; 行政、20
if ud(ug+8)=5 : n+=10 ; 祭司、10
if ud(ug+8)=8 : n+=10 ; 治安、10
ep 2,un,4,m,1,10
}
}
if md(mdg+7)=5 { ; 人材府
n+=10
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+24)*1/5 ; 補整、魅力
if ud(ug+8)=3 : n+=20*1/5 ; 行政、8
if ud(ug+8)=5 : n+=10*1/5 ; 祭司、4
if ud(ug+8)=8 : n+=10*1/5 ; 治安、4
ep 2,un,4,m,1,50
}
}
if md(mdg+7)=7 { ; 砦
n+=10
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+24)*1/5 ; 補整、魅力
if ud(ug+8)=3 : n+=20*1/5 ; 行政、8
if ud(ug+8)=5 : n+=10*1/5 ; 祭司、4
if ud(ug+8)=8 : n+=10*1/5 ; 治安、4
ep 2,un,4,m,1,50
}
}
if md(mdg+7)=9 { ; 寺院
n+=20
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+24)*2/5 ; 補整、魅力
if ud(ug+8)=3 : n+=20*2/5 ; 行政、8
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、4
if ud(ug+8)=8 : n+=10*2/5 ; 治安、4
ep 2,un,4,m,1,40
}
}
; 領主
if un1>0 {
n+=ud(ug1+24) ; 領主補整、魅力
if ud(ug1+8)=3 : n+=20 ; 行政、20
if ud(ug1+8)=5 : n+=10 ; 祭司、10
if ud(ug1+8)=8 : n+=10 ; 治安、10
ep 2,un1,4,m,1,10
}
; 政府
un=mgv(mgvg+1) : ug=un*udb ; 首領
if un>0 {
n+=ud(ug+24)*1/5 ; 首領補整、魅力
if ud(ug+8)=3 : n+=20*1/5 ; 行政、4
if ud(ug+8)=5 : n+=10*1/5 ; 祭司、2
if ud(ug+8)=8 : n+=10*1/5 ; 治安、2
ep 2,un,4,m,1,50
}
un=mgv(mgvg+2) : ug=un*udb ; 政務
if un>0 {
n+=ud(ug+24)*2/5 ; 補整、魅力
if ud(ug+8)=3 : n+=20*2/5 ; 行政、8
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、4
if ud(ug+8)=8 : n+=10*2/5 ; 治安、4
ep 2,un,4,m,1,40
}
mdg4n=mdg+4
n=int(round(double(n)*(100.0+(double(md(mdg4n))/1000.0-50.0))/100.0)) ; 治安、100%で+50%、0%で-50%
;if pn=1 : n11b=n
;md(mdg+1)+=md(mdg+1)*n/4000 ; 人口の増加
mdg1n=mdg+1
f1=double(md(mdg1n))*double(n)/4000.0 ; 人口の増加数
f2=1100000.0-double(md(mdg1n)) ; 上限補整率
md(mdg+1)+=int(round(f1/1100000.0*f2)) ; 人口の増加
; 魔術増加 -------------------------------
n=50;20 ; 基礎増加値、20
if map(m)=2 : n+=40;20 ; 水辺なら魔術増加、20
if map(m)=5 : n+=10 ; 森、10
if map(m)=6 : n+=20 ; 沼
n+=md(mdg+3)/1000 ; マナによる増加、100000で100
; 建築物、その他、城30、魔学院70、公園10、鍛冶30
if md(mdg+7)=1 : n+=30 ; 城
if md(mdg+7)=2 { ; 塔
n+=50
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+23) ; 補整、知力
if ud(ug+8)=4 : n+=20 ; 魔術、20
if ud(ug+8)=6 : n+=10 ; 製作、10
if ud(ug+8)=5 : n+=10 ; 祭司、10
ep 2,un,3,m,2,10
}
}
if md(mdg+7)=6 { ; 鍛冶
n+=20
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+23)*2/5 ; 補整、知力
if ud(ug+8)=4 : n+=20*2/5 ; 魔術、8
if ud(ug+8)=6 : n+=10*2/5 ; 製作、4
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、4
ep 2,un,3,m,2,40
}
}
if md(mdg+7)=9 { ; 寺院
n+=20
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+23)*2/5 ; 補整、知力
if ud(ug+8)=4 : n+=20*2/5 ; 魔術、8
if ud(ug+8)=6 : n+=10*2/5 ; 製作、4
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、4
ep 2,un,3,m,2,40
}
}
; 領主
if un1>0 {
n+=ud(ug1+23) ; 領主補整、知力
if ud(ug1+8)=4 : n+=20 ; 魔術、20
if ud(ug1+8)=6 : n+=10 ; 製作、10
if ud(ug1+8)=5 : n+=10 ; 祭司、10
ep 2,un1,3,m,2,10
}
; 政府
un=mgv(mgvg+1) : ug=un*udb ; 首領
if un>0 {
n+=ud(ug+23)*1/5 ; 首領補整、知力
if ud(ug+8)=4 : n+=20*1/5 ; 魔術、4
if ud(ug+8)=6 : n+=10*1/5 ; 製作、2
if ud(ug+8)=5 : n+=10*1/5 ; 祭司、2
ep 2,un,3,m,2,50
}
un=mgv(mgvg+3) : ug=un*udb ; 魔術
if un>0 {
n+=ud(ug+23)*2/5 ; 補整、知力
if ud(ug+8)=4 : n+=20*2/5 ; 魔術、8
if ud(ug+8)=6 : n+=10*2/5 ; 製作、4
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、4
ep 2,un,3,m,2,40
}
mdg4n=mdg+4
n=int(round(double(n*2)*(100.0+(double(md(mdg4n))/1000.0-50.0))/100.0)) ; 治安、100%で+50%、0%で-50%
f1=double(n)
mdg2n=mdg+2
f2=110000.0-double(md(mdg2n))
md(mdg+2)+=int(round(f1/110000.0*f2)) ; 魔術の増加
; マナ増加 --------------------------------------
n=50;20 ; 基礎増加値%、20
if map(m)=4 : n+=20;40;20 ; 山ならマナ増加、20
if map(m)=5 : n+=10;20;10 ; 森、10
n+=md(mdg+1)/10000 ; 人口による増加、100000(1000人)で10
; 建築物、その他、城30、ストーンサークル70、公園10
if md(mdg+7)=1 : n+=30
if md(mdg+7)=3 { ; ストーンサークル
n+=50
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+22) ; 補整、魔力
if ud(ug+8)=5 : n+=20 ; 祭司、20
if ud(ug+8)=4 : n+=10 ; 魔術、10
if ud(ug+8)=8 : n+=10 ; 治安、10
ep 2,un,2,m,3,10
}
}
if md(mdg+7)=4 { ; 市場
n+=10
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+22)*1/5 ; 補整、魔力
if ud(ug+8)=5 : n+=20*1/5 ; 祭司、20
if ud(ug+8)=4 : n+=10*1/5 ; 魔術、10
if ud(ug+8)=8 : n+=10*1/5 ; 治安、10
ep 2,un,2,m,3,50
}
}
if md(mdg+7)=9 { ; 寺院
n+=20
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+22)*2/5 ; 補整、魔力
if ud(ug+8)=5 : n+=20*2/5 ; 祭司、20
if ud(ug+8)=4 : n+=10*2/5 ; 魔術、10
if ud(ug+8)=8 : n+=10*2/5 ; 治安、10
ep 2,un,2,m,3,40
}
}
; 領主
if un1>0 {
n+=ud(ug1+22) ; 領主補整、魔力
if ud(ug1+8)=5 : n+=20 ; 祭司、20
if ud(ug1+8)=4 : n+=10 ; 魔術、10
if ud(ug1+8)=8 : n+=10 ; 治安、10
ep 2,un1,2,m,3,10
}
; 政府
un=mgv(mgvg+1) : ug=un*udb ; 首領
if un>0 {
n+=ud(ug+22)*1/5 ; 首領補整、魔力
if ud(ug+8)=5 : n+=20*1/5 ; 祭司、4
if ud(ug+8)=4 : n+=10*1/5 ; 魔術、2
if ud(ug+8)=8 : n+=10*1/5 ; 治安、2
ep 2,un,2,m,3,50
}
un=mgv(mgvg+4) : ug=un*udb ; 宗教
if un>0 {
n+=ud(ug+22)*2/5 ; 補整、魔力
if ud(ug+8)=5 : n+=20*2/5 ; 祭司、8
if ud(ug+8)=4 : n+=10*2/5 ; 魔術、4
if ud(ug+8)=8 : n+=10*2/5 ; 治安、4
ep 2,un,2,m,3,40
}
mdg4n=mdg+4
n=int(round(double(n*2)*(100.0+(double(md(mdg4n))/1000.0-50.0))/100.0)) ; 治安、100%で+50%、0%で-50%
f1=double(n)
mdg3n=mdg+3
f2=110000.0-double(md(mdg3n))
md(mdg+3)+=int(round(f1/110000.0*f2)) ; マナの増加
; 治安 ----------------------------------
n=50;20 ; 基礎増加値%
if map(m)=5 : n+=10;20 ; 森なら治安増加、20
if map(m)=6 : n+=-10;20;10 ; 沼、10
; 建築物、その他、城30、警察署70、砦+40、市場-20
if md(mdg+7)=1 : n+=30 ; 城
if md(mdg+7)=7 { ; 砦
n+=20
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+21)*2/5 ; 補整、筋力
if ud(ug+8)=8 : n+=20*2/5 ; 治安、20
if ud(ug+8)=3 : n+=10*2/5 ; 行政、10
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、10
ep 2,un,1,m,4,40
}
}
if md(mdg+7)=8 { ; 警察署
n+=50
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+21) ; 補整、筋力
if ud(ug+8)=8 : n+=20 ; 治安、20
if ud(ug+8)=3 : n+=10 ; 行政、10
if ud(ug+8)=5 : n+=10 ; 祭司、10
ep 2,un,1,m,4,10
}
}
if md(mdg+7)=9 { ; 寺院
n+=20
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+21)*2/5 ; 補整、筋力
if ud(ug+8)=8 : n+=20*2/5 ; 治安、20
if ud(ug+8)=3 : n+=10*2/5 ; 行政、10
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、10
ep 2,un,1,m,4,40
}
}
; 領主
if un1>0 {
n+=ud(ug1+21) ; 領主補整、筋力
if ud(ug1+8)=8 : n+=20 ; 治安、20
if ud(ug1+8)=3 : n+=10 ; 行政、10
if ud(ug1+8)=5 : n+=10 ; 祭司、10
ep 2,un1,1,m,4,10
}
; 政府
un=mgv(mgvg+1) : ug=un*udb ; 首領
if un>0 {
n+=ud(ug+21)*1/5 ; 首領補整、筋力
if ud(ug+8)=8 : n+=20*1/5 ; 治安、4
if ud(ug+8)=3 : n+=10*1/5 ; 行政、2
if ud(ug+8)=5 : n+=10*1/5 ; 祭司、2
ep 2,un,1,m,4,50
}
un=mgv(mgvg+5) : ug=un*udb ; 警察
if un>0 {
n+=ud(ug+21)*2/5 ; 補整、筋力
if ud(ug+8)=8 : n+=20*2/5 ; 治安、8
if ud(ug+8)=3 : n+=20*2/5 ; 行政、4
if ud(ug+8)=5 : n+=10*2/5 ; 祭司、4
ep 2,un,1,m,4,40
}
md(mdg+4)+=50000*n/4000 ; 治安の増加
if md(mdg+4)>100000 : md(mdg+4)=100000 ; 上限
; 城壁値の増加 ----------
n=0
; 建築物
if md(mdg+7)=1 { ; 城
if un1>0 { ; 城主
n+=ud(ug1+21)*2/5 ; 補整、筋力
if ud(ug1+8)=6 : n+=20*2/5 ; 製作、8
if ud(ug1+8)=3 : n+=10*2/5 ; 行政、4
if ud(ug1+8)=8 : n+=10*2/5 ; 治安、4
ep 2,un1,1,m,5,40
}
}
if md(mdg+7)=7 { ; 砦
un=mas(m) : ug=un*udb ; 支配人
if un>0 {
n+=ud(ug+21)*2/5 ; 補整、筋力
if ud(ug+8)=6 : n+=20*2/5 ; 製作、8
if ud(ug+8)=3 : n+=10*2/5 ; 行政、4
if ud(ug+8)=8 : n+=10*2/5 ; 治安、4
ep 2,un,1,m,5,40
}
}
; 司令官
un=com(m) : ug=un*udb ; 司令官
if un>0 {
n+=(ud(ug+21)+ud(ug+22)+ud(ug+23)+ud(ug+24))*2/10 ; 補整、総力
if ud(ug+8)=6 : n+=20*2/5 ; 製作、8
if ud(ug+8)=3 : n+=10*2/5 ; 行政、4
if ud(ug+8)=8 : n+=10*2/5 ; 治安、4
ep 2,un,1,m,5,50
ep 2,un,2,m,5,50
ep 2,un,3,m,5,50
ep 2,un,4,m,5,50
}
; 政府
un=mgv(mgvg+6) : ug=un*udb ; 軍務
if un>0 {
n+=(ud(ug+21)+ud(ug+22)+ud(ug+23)+ud(ug+24))*1/10 ; 首領補整、総力
if ud(ug+8)=6 : n+=20*1/5 ; 製作、4
if ud(ug+8)=3 : n+=10*1/5 ; 行政、2
if ud(ug+8)=8 : n+=10*1/5 ; 治安、2
ep 2,un,1,m,5,100
ep 2,un,2,m,5,100
ep 2,un,3,m,5,100
ep 2,un,4,m,5,100
}
wal(m)+=n*10/15
n=1000 ; 最大値
if md(mdg+7)=1 : n=2000 ; 城
if md(mdg+7)=7 : n=1500 ; 砦
if wal(m)>n : wal(m)=n
loop
;10000 ; で100人、100000で1000人200000で2000人
;5000、魔術、50
;5000、マナ、50
;50000、治安、50%
return
ep 2,un,4,m,1,10
m=国No.、1=人口、2=魔術、3=マナ、4=治安
un,4なので能力値は CHR、m,1なので m国の人口を対象、となってる。

数値はそのターンで増えた値となってる。
そのためユニットデータを 50個から 60個に増やして、51~54を経験値格納、55~58をターンの始めに元の能力値を控えておくデータにして、ターン中に増えた分との比較が表示されるようになってる。
経験値を取得する場所が多いので、まだ少し時間がかかる、今は魔法関連をやってる。