|
|

楼主 |
发表于 2005-8-25 01:23:00
|
显示全部楼层
Re:战略三国的专题(基本包含了战略三国的全部指令)
专题七 训练、修建和战斗
一、训练--需要10回合
1)训练增长效果计算,设主将的统率为headts,设xl为训练,训练最大值xlmax=min(统率+20,100),需保证xl<xlamx。
当headts为[0,59]时,N=headts*20
当headts为[60,79]时,N=1000+(headts-60)*100
当headts为[80,89]时,N=3000+(headts-80)*500
当headts为[90,100]时,N=10000+(headts-90)*1000
效果=min((N/士兵)*(headts/10),20)
xl=min(xlmax,xl+效果)
2)训练被中断
复制原来的部队参数,新建一个尾处理事件,次数为1,周期为0。并且复制剩余回合,10回合后的效果。
训练最大值xlmax=min(统率+20,100)
效果=10回合后的效果*((10-剩余回合)/10)
xl=min(xlmax,xl+效果)
二、修建--每回合修建一次
条件:城防<100和金钱>=城防*20
城防增加=[城池治理值/60,城池治理值/40]
城防=min(城防增加+城防,100)
三、战斗
1)种类(如果既有交战、又有城战,则为城战)
城战:有敌部队位于[x-2,x+2]且[y-2,y+2]区域中,则为城战。
交战:有敌部队位于城池区域。
2)混战部队,导出属性。
遍历所有事件,找出源部队是该部队的事件集合,而后取集合中的目标部队即可。
3)混战部队数量,导出属性。就是混战部队的个数。
4)主攻部队的寻找,主攻部队是半底层的,如果主攻部队为0,则为导出的,如果为非0,则为底层的。
检查主攻部队是否在混战部队的范围内,如果不是则为0,变为导出属性。
在主攻部队为0前提下,当部队数量为0,则为0;当部队数量大于0,如果存在攻击部队且包含于混战部队,则为主攻部队,如果不存在攻击部队,则随机中从混战部队中选择。
5)使用兵力(攻击部队号)
如果混战部队数量为1,使用兵力为部队的兵力;
如果混战部队数量大于1,则当攻击部队号为主攻部队时,使用兵力为70%,当攻击部队号不为主攻部队时,使用兵力为30%(1/(混战部队数量-1))
6)将领统兵(编号)
若将统率(jts)为:
[0,30],主将统兵(jtb)=1800 + jts * 25
[30,60],jtb=2550 + ( jts - 30) * 30
[61,80],jtb=3450 + ( jts - 60) * 35
[81,90],jtb=4150 + ( jts - 80) * 40
[91,100],jtb=4550 + ( jts - 90) * 45
7)战斗力(使用兵力(usebl))
如果兵种为步兵,则满训战斗力(mxzdl)为60;为骑兵,mxzdl=100。
jtb=将领统兵(主将)
如果训练(xl)>士气(sq),则jtb = jtb * (1 + xl - headts) / 200)
Z1 = Sin(jtb / 5000 * 90 * 3.1415 / 180)
Z2 = 如果usebl > jtb, 则为Sin(90 * (usebl - jtb) / 5000 * 3.1415 / 180);反之, 则为0
jyx(将领影响) = (Z1 - Z2) * (usebl / 5000),jyx在[0.01,1]范围内
战斗力(zdl)=(10+(mxzdl-10)*(xl/10))*(sq/100)*jyx,战斗力如果是步兵为min(原战斗力,60),如果是骑兵为min(原战斗力,100)
8)兵力比常数n(源部队兵力,目标部队兵力),n在[0,0.99]范围内
如果 源部队兵力 >= 目标部队兵力 则
n = 源部队兵力 / 目标部队兵力 / 10
否则
n = 目标部队兵力 / 源部队兵力 / 10
9)伤亡率hd(n,源部队zdl(wzdl),目标部队战斗力(dzdl)),在[0,1]范围内
hd = ((|wzdl - dzdl| / 5 + 5) * wzdl / 50 * (1 + n)) / 100
10)伤亡率中的死亡率death(n,wzdl,dzdl),在[0,1]范围内
death = (20 * (1 - |wzdl - dzdl| / 100) *wzdl / 50 * (1 + n)) / 100
11)当源部队的地形为非城,当目标部队的地形为城及其反之,则发生城战:
如果目标部队的城池九格的所有部队势力相同且等于城池的势力,作用城防(usecf)=cf
如果城池九格的不满足所有部队势力相同,usecf=0.8cf
如果源部队的地形为非城,当目标部队的地形为城,则
cf-=目标部队的伤亡率*2*1/9
目标部队的伤亡率=目标部队的伤亡率(1-cf/2/100)
如果源部队的地形为城,当目标部队的地形为非城,则
目标部队的伤亡率=目标部队的伤亡率(1+f/2/100)
12)部队兵力(bl)=bl*(1-目标部队的伤亡率),部队伤兵(hurtb)+=bl*目标部队的伤亡率*(1-目标部队的死亡率),如果bl<=50,则hurtb+=bl,bl=0
四、一些情况的处理
1)城池是否被占据的检验
在执行点结束时,遍历所有城池,如果存在城池的所有部队势力相同且与城池的势力不同,则该城池被城池的部队势力方占领。
2)城池的占据
所有武将的城池为0,城池的所有武将被俘虏,生成武将俘虏的处理事件,城池的势力=城池的所有部队势力,城池在小地图上变色。
如果该城池为原势力的首府,则宣告该势力灭亡,游戏结束
3)部队数为0的处理
所有武将的部队为0
武将俘虏
删除部队
五、武将俘虏的处理
武将俘虏是一个一个武将进行处理,每个武将都有[斩首],[招降],[释放],其中[招降]只能使用一次.君主不可以招降,如果君主斩首,则宣告该势力灭亡。
斩首:
删除武将
招降:
如果rnd[1,100]<=100-武将对自己的势力的忠诚,则该武将投降,那么该武将的势力变为控制方的势力,并随机出现在控制方的一个城池中(简化起见)。
释放:
该武将随机出现在己方势力的一个城池中 |
|