□ 动作(action)

    这里所谓的「动作”(action)，是指生物战斗时的行为的最小单位，可以是挥出
一拳、踢出一脚、用剑一刺、射出一支飞镖、丢出一个火球、甚至是嚐试一次逃跑等
等，只要是逻辑上属于「同一时间”所作的行为，都可以归类于一个动作。

    我们假设所有的动作都是在战斗状态下的行为，因为非战斗状态下的动作直接做
出来就可以了，不需要花心思用以下将提到的格式描述它。反过来说，把战斗状态下
的行为统一用「动作”来描述的理由很简单，我们不希望一个人可以藉由任何巫师意
料之外的技巧在敌人挥出一剑的同时，丢出十个火球、捡起地上的三十瓶药剂、等等
情形发生，另一方面，也提供巫师们在设计怪物、武器、物品等物件时，可以用比较
轻松的方式定义出一些变化较大的表现方式。

    在程式中，我们用一个 mapping 来表示一个动作，值得一提的是，由于mapping
这种结构在 LPC 中是以位址传递(call by address)，因此为了安全起见，我们规定
所有处理动作的程式「绝不”修改其他物件所提供的动作 mapping 的内容 ，这个原
则是预防一些未来可能发生的错误出现。

    在定义一个动作的 mapping 中，可能有以下的栏位，其中前面有 * 号的表示这
个栏位是可有可无的：

action

    执行这个动作所出现的讯息，格式是和 message_vision 这个 simul efun 要求
    的相同，例如 "$N对准$n的%s挥出一拳" ，其中的 %s 会用这个动作所攻击的部
    位名称代替。

*post_action

    这是一个 function type 的栏位，如果这个栏位被定义，combatd 会在 action
    讯息印出之后呼叫这个 function，有不少战斗中的特殊效果都是利用这个方式
    完成，如投射武器的消耗、某些战斗用的魔法等。

*damage

    执行这个动作的伤害力修正，单位是百分比，范围是大于 -100。
    default: 0

*damage_type

    攻击命中时所造成的伤害种类，如"割伤"、"瘀伤"、"灼伤"等等，详细的伤害种
    类请参考其他文件。
    default: "伤害"

*dodge

    这个动作对敌人躲避此一攻击的修正百分率。
    default: 0

*parry

    这个动作对敌人招架此一攻击的修正百分率。
    default: 0

Annihilator@ES2 (01/17/95)
