Properties里的WeaponDamage项目不能正确引用的问题已经找到了,在楼上的帖子中用红色字添加的部分就是问题所在。这样一来,攻击骰、判定CH和计算伤害就可以真正的全自动完成了,需要做的只是在Properties中把武器伤害填好而已。其实如果不怕宏写的太长,连种族加值啊、重伤时的额外AB啊什么的,也都可以利用判定自动计算。
带自动判定CH的通用攻击宏,投出20会自动显示
Critical Hit!字样。
/me 攻击:<!--[DiceRoll = 1d20]--> [DiceRoll+AtkMod] {if(DiceRoll == 20,"<b>Critical Hit!</b>","")}
普通伤害宏,输入DmgRoll时要用
{伤害骰}这样的格式,如果有多种不同大小的可以用
{伤害骰1+伤害骰2}这样。
/me 伤害:[DmgRoll+DmgMod]
手动CH宏,CritCheck输1就计算CH伤害。不想自动运算的话把前后表达式分别换成CH和非CH时的伤害骰算式就可以了。
/me <!--[CritCheck = CritCheck]--> {if(CritCheck == 1,"CH","")}伤害: <span style=font-size:0> [DmgMod=DmgMod]</span> {if(CritCheck == 1,Weapon1MaxDamage+Weapon1Crit+Weapon1DamBonus+DmgMod,Weapon1Damage+Weapon1DamBonus+DmgMod)}
DM用带自动判定命中和CH的通用攻击宏,会按照投骰结果和目标防御显示
Miss!、
Hit!或
Critical Hit!。运行时AtkMod输入怪物攻击加值,TargetDef输入被攻击PC的对应防御值。
/me 攻击:<!--[DiceRoll = 1d20]--> <span style=font-size:0> [AtkMod=AtkMod]</span> [DiceRoll+AtkMod] <span style=font-size:0> [Check=DiceRoll+AtkMod-TargetDef]</span> <b>{if(DiceRoll == 20,"Critical","")} {if(Check >= 0,"Hit!","Miss!")}</b>
其实在我看来,如果不用自动调用自动运算的宏,那么还不如打好字然后复制粘贴来得快。