- UID
- 833907
- 主题
- 3
- 阅读权限
- 30
- 帖子
- 203
- 精华
- 0
- 积分
- 222
- 金钱
- 983
- 荣誉
- 12
- 人气
- 1
- 在线时间
- 85 小时
- 评议
- 0
- 帖子
- 203
- 精华
- 0
- 积分
- 222
- 金钱
- 983
- 荣誉
- 12
- 人气
- 1
- 评议
- 0
|
本帖最后由 vonleibniz 于 2011-7-24 00:25 编辑
(四)城市及据点攻防关系
只要做过剧本的同学大概都知道,san9各城市之间的敌对关系是固定的,没有敌对关系就不会进攻。比如襄平会远航来打北海,却不会打距离差不多的平原。这种固定了的攻防关系给剧本制作造成了很大的困难,随便移动城市位置很大可能会导致新城市不会进攻也不会遭遇进攻。这里我提出一个概念,san9里2个建筑(城市或据点)之间只要满足条件就会相互进攻。
接下来我会分析到底满足什么条件2个建筑才会进攻,这些分析都是基于san9源程序的攻击判断。A,B表示城市, A1,A2,B1,B2表示属于各自城市的据点。An表示A,A1,A2,...中的任何一个建筑,Bn表示B,B1,B2,...中的任何一个建筑。
条件1:敌对条件。只有A与B敌对,An 与 Bn 之间的战斗才有可能打响。
条件2:联通条件,是指在进军路线上的地域必须属于敌对城市。(如果路上有敌对的第三方C的地皮,也算是联通的)
条件3:相邻条件,两个地域之间有相邻的、且相互可通行的地皮(即分属两个地域的两个512可通行的点相邻,上下左右方向,斜线方向不行)。
这三个条件的组合就构成san9里所有的攻击关系。这里我用两个图例来说明。
case1:攻击方为城市。城市发起攻击的条件是:敌对+联通。
图7中A与B敌对,城市A会攻击所有建筑A1,A2,A3,A4,B,B1,B2,B3. 反之B也会攻击所有建筑。
图8中,由于中立地区C的阻隔,联通条件不成立。故A不会攻击Bn,仍然会攻击A1,A2,A3,A4。 而B仍然会攻击所有建筑,因为对B而言C也是敌对区域,联通条件成立。
case2: 攻击方为据点。据点发起攻击的条件是:敌对+相邻。
图7中A1 会攻击A,A4,B1, 但不会攻击其他不相邻的建筑,如A3。
图8中由于C的阻隔,A1 不再攻击B1。
case3: 攻击方为蛮族。攻击发起只需要敌对条件。
(五)修改square增加攻防关系
继续上面的三个case。
case1:图8,在C地域中开辟一个横向通道(修改各点square属于A或B)再次联通A和B,那么A就会如图7中一样攻击B了。
case2: 因为不相邻,A1不会攻击A3。修改A1下面某个可通行的地皮属于A3,且旁边的地皮也为512可通行,那么程序会判断A1与A3相邻,攻击条件达成。
case3:故意把蛮族与其敌对城市之间放上非敌对城市,路过时也会打。
(六)修改实例之一
南皮改到巨鹿位置,新坐标为(112,26),根据公式 square=x+200*y=5312.
把5312及其上下左右共五个点(5311,5312,5313,5112,5512图中亮黄色点)修改为属于“南皮”,第一属性为512可通行.
同时把周围的蓝色点改为属于周边的建筑,以达成“相邻”条件,让新南皮遭受更多的攻击,如图所示。
注意为了和壶关达成攻击关系,需要把壶关改属邺。因为南皮和上党是中立的,而南皮和邺是敌对关系。壶关改为邺属地之后对邺和上党的攻击关系没变,却增加了对新南皮的攻击关系!这就是对前面所讲的三种攻击条件的具体应用。
更多的例子见 我改的剧本http://game.ali213.net/forum-vie ... -extra--page-1.html
|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|