HMS 呐喊号

HMS 呐喊号

通过生命值/魔法值/耐力值减少喊叫时间

HMS 呐喊

通常,呐喊技能只有一个冷却计时器。你可以免费使用它们,然后稍等片刻直到它们再次可用。

通过这个模组,我添加了三个次级能力(可随时使用,游戏开始时即掌握),使用时每消耗1点生命值/魔法值/体力值(每个能力对应一种属性)就会减少计时器一秒。这样玩家如果愿意,可以更频繁地使用龙吼,代价是伤害自己。正常的计时器和龙吼冷却缩减仍如之前一样运作,是否以及何时使用这些能力由玩家自行决定。

在视频中,我加载了我的"原版"角色,你可以看到初始化脚本启动并向玩家教授能力。

出于演示目的,我解锁了风暴召唤龙吼(冷却时间最长的一个),并装备了魔法能量(蓝色)和耐力能量(绿色)。

如你所见,我的魔力值所剩无几,因此魔力条被完全耗尽,但计时器仅部分重置。
有消息会告诉你计时器还剩多少秒,以及该属性受到了多少损伤。

在另一边,我的耐力相当充沛,所以计时器被重置为0,但如果我继续大喊并重置,最终连耐力也会降至0,我必须等待更长时间才能再次使用它。

最后我尝试了生命值,从技术上讲,当计时器等于生命值时你可能会死亡,但由于生命值会恢复,很难在特定时间触发这一机制。不过如果敌人正在攻击你,稍不注意就很容易死亡。

该模组包含一个初始化脚本(应仅运行一次)和另外三个功能。代码如下:

脚本名称 HMSScriptQuest 继承自 Quest  
法术属性 HMSShoutSpellHealth 自动
法术属性 HMSShoutSpellMagicka 自动
法术属性 HMSShoutSpellStamina 自动

事件 初始化()
actor sPlayer = game.getplayer()
sPlayer.Addspell(HMSShoutSpellHealth)
sPlayer.AddSpell(HMSShoutSpellMagicka)
sPlayer.AddSpell(HMSShoutSpellStamina)
重置()
endEVENT

Scriptname HMSScriptHealth 扩展了 activemagiceffect  
{hms 健康}

事件 效果开始时 (角色 akTarget, 角色 akCaster)
string sAttribute = "生命值"
float fDamage = 0.0
float fTimer = akCaster.GetVoiceRecoveryTime()
float fAttribute = akCaster.GetAV(sAttribute)

; 如果计时器严格小于属性值,则用计时器减少属性值并重置计时器;这应该是最常见的情况,所以我把它放在第一位 
如果 fTimer < fAttribute
akCaster.SetVoiceRecoveryTime(0.0)
akCaster.DamageActorValue(sAttribute, fTimer)
Debug.Notification(sAttribute + " 被 " + fTimer as int + " 损坏")
Debug.Notification("吼叫计时器设置为0")
否则
; 如果计时器大于或等于属性值,则从计时器中减去该属性值并造成属性伤害
fDamage = fTimer - fAttribute
akCaster.SetVoiceRecoveryTime(fDamage)
akCaster.DamageActorValue(sAttribute, fAttribute)
Debug.Notification(sAttribute + " 受到 " + fAttribute as int + " 点伤害")
Debug.Notification("龙吼计时器设置为 " + fDamage as Int)
结束如果
endevent  

魔法值与耐力值的脚本相同,只是 sAttribute 属性不同。