幻世录Ⅰ中有两个经常用到,但是在游戏中看不到的模块,就是范围和物品组。这两个模块的用途很广,但是“看不见摸不着”,所以很抽象,不太好理解。 范围就是在攻击或发动某种能力时可以生效的距离,武器、魔法、特殊技都会用到范围。比如长剑的攻击范围就是邻接1格,长枪的攻击范围是邻接2格(十字),魔法和特殊技还会有更广阔的范围,这些都是范围。范围定义在RANGE.TXT文件中;用HSLPATCH或HSLSTAR则保存在HslData1.txt或HslStar1.txt中,在物品模块的下面(8267~8581行);htt则保存在9range.txt中。 之前在介绍道具、技能的时候也捎带提过,它们都有范围类型的属性(武器是attack_range,魔法和特殊技是range和effect_range)。这些属性的数值只是一个编号( code),而编号对应的范围内容就定义在range模块中。 范围的属性:
范围的data属性有些特殊,之前的模块属性是唯一的,每种属性只能有一个,但是data却可同时存在多个,再加上每个 data属性有多个数值,便构成了一个二维数组,见下图。
这是长枪、连续突刺的攻击范围,因为幻世录的范围比较复杂,并不都是规则的图形,所以需要按格来标记。图中有5行5列,中心点就是发动者的格子,数值大于0的格子表示处于有效范围,反之则在范围外(中心点的格子永远是有效的,这似乎是个bug)。我们再来看下这个范围在游戏中的表现。
逆刃的攻击范围和有效范围都是range2Cell,它的有效区域正好是数据中大于0的格子。 游戏中有个装备叫奥义之证,作用是攻击距离+1,它其实就是把武器的attack_range值+1,比如range0Cell加1,就变成了range1Cell。 范围的宏(N为数值):
物品组是一个数据集合,里面保存的是一个道具的code序列(一维数组),用来描述角色携带的物品随机范围,以及商店的商品列表。物品组定义在TOWNDEF.TXT文件中,在前半部分;用HSLPATCH或HSLSTAR则保存在HslData1.txt或HslStar1.txt中,在角色模块的下面(3510~3782行)。用htt则保存在9town.txt中,在前半部分。 物品组有两个作用,角色和商店都有关于它的属性。角色的相关属性是carry_item,数值就是物品组的code值,敌人出场时会从列表中随机出一个物品携带;商店的相关属性是item_code,进入后会将列表中的物品作为商品展示出来。物品组的标签名也为item(和物品相同)。 物品组的属性:
*以前在贴吧看到过一位前辈的贴子,说角色携带的随机物品,越靠近物品组结尾处的物品被随到的概率越低,这个作者无从考证,但是从测试效果上看似乎是这样。 |
|