TES IV: Shivering Isles, можно ли добавить заклинание.
В TES IV: Shivering Isles есть энчант под названием SE12StaffEnchantment (Voice of Sheogorath) можно ли сделать аналогичную «Малую силу» или просто Spell, никто не пробовал?
Теперь другой вопрос, можно ли сделать его применение доступным не только на территории Shivering Isles, а равно и Power “Manipulate Weather”, но и на всех просторах империи?
SE12StaffEnchantment:Код:
scn SE14VoiceofSheogorathSpell
;spell attached to staff of sheogorath, freezes NPCs in combat in place without damage, doesn't allow them to be hit
ref self
short invalidTarget ; set to 1 in ScriptEffectStart to signal ScriptEffectFinish block not to do anything
; do "invalidTarget" because local script effect variables are lost when changing process levels...
Begin ScriptEffectStart
;finds out who target is, makes sure they aren't a target that we don't want frozen, freezes target with setactorsai, paralyzes them briefly
;also sets ghost and unconscious to disallow them being hit
;plays a voice file when spell is cast
set self to GetSelf
if self.GetInFaction SEJyggalagFaction == 1
; strip Jyggalag of his regen power
removeSpell SE13AbJyggalag1
removeSpell SE13AbJyggalag2
removeSpell SE13AbJyggalag3
removeSpell SE13AbJyggalag4
removeSpell SE13AbJyggalag5
pms SE13JyggalagStaffEffect
; player.pushActorAway self 30
elseif ( self != player && self.GetDead != 1 && self.GetInFaction NoWabbaFaction == 0 && ( self.getshouldattack player > 0 || self.IsInCombat == 1 ))
if ( GetDead == 0 )
self.setactorsai 0
self.setghost 1
self.setunconscious 1
DAClavicusDogStatueREF.say SE14SpellVoice 1 SE14VoiceofSheogorath 1
endif
else
set invalidTarget to 1
endif
End
Begin ScriptEffectFinish
;removes the various effects to bring them back to normal, plays a voice file to show spell ending
if self.GetInFaction SEJyggalagFaction == 1
; give Jyggalag back his regen power
if self.GetIsID SECreatureJyggalag1 == 1 || self.GetIsID SECreatureJyggalag2 == 1
addSpell SE13AbJyggalag1
elseif self.GetIsID SECreatureJyggalag3 == 1 || self.GetIsID SECreatureJyggalag4 == 1
addSpell SE13AbJyggalag2
elseif self.GetIsID SECreatureJyggalag5 == 1 || self.GetIsID SECreatureJyggalag6 == 1
addSpell SE13AbJyggalag3
elseif self.GetIsID SECreatureJyggalag7 == 1
addSpell SE13AbJyggalag4
elseif self.GetIsID SECreatureJyggalag8 == 1
addSpell SE13AbJyggalag5
endif
sms SE13JyggalagStaffEffect
elseif invalidTarget == 0
setactorsai 1
setghost 0
setunconscious 0
DAClavicusDogStatueREF.say SE14SpellVoice2 1 SE14VoiceofSheogorath 1
endif
End
Manipulate Weather: Код:
scn SE14WeatherSpellScript
;spell handles the player ability to change the weather post-se13
short doOnce
short randweather
short raindogs
short isoutside
Begin ScriptEffectStart
;disallows player casting the spell indoors
if ( player.isininterior == 1 ) && ( GetPlayerInSEWorld == 1 )
Message "This spell can only be cast outside."
endif
if ( GetPlayerInSEWorld == 0 )
Message "This spell may only be used in the Shivering Isles."
endif
;chooses a random number to choose a random weather type, isoutside ensures the player is outside
if ( player.isininterior == 0 ) && ( GetPlayerInSEWorld == 1 )
set randweather to GetRandomPercent
set isoutside to 1
endif
End
Begin ScriptEffectUpdate
;checks the random number and forces one of the weather types, also adds a buff based on which weather type is chosen
if ( isoutside == 1 )
if ( doOnce == 0 ) && ( player.isininterior == 0 )
if ( randweather <= 25 )
if ( GetIsCurrentWeather SEFog == 0 )
fw SEFog
set doOnce to 1
player.addspell SE14WeatherBuff1
else
set randweather to GetRandomPercent
endif
elseif ( randweather > 25 ) && ( randweather <= 50 )
if ( GetIsCurrentWeather SERain == 0 )
fw SERain
set doOnce to 1
player.addspell SE14WeatherBuff2
else
set randweather to GetRandomPercent
endif
elseif ( randweather > 50 ) && ( randweather <= 75 )
if ( GetIsCurrentWeather SEThunderstorm == 0 )
fw SEThunderstorm
set doOnce to 1
player.addspell SE14WeatherBuff3
else
set randweather to GetRandomPercent
endif
elseif ( randweather > 75 ) && ( randweather <= 95 )
if ( GetIsCurrentWeather Snow == 0 )
fw Snow
set doOnce to 1
player.addspell SE14WeatherBuff4
else
set randweather to GetRandomPercent
endif
else
fw SERain
set doOnce to 1
set raindogs to 1
player.addspell SE14WeatherBuff5
endif
endif
endif
End
Begin ScriptEffectUpdate
if ( GetPlayerinSEWorld == 0 )
set isoutside to 0
player.removespell SE14WeatherBuff1
player.removespell SE14WeatherBuff2
player.removespell SE14WeatherBuff3
player.removespell SE14WeatherBuff4
player.removespell SE14WeatherBuff5
ReleaseWeatherOverride
dispel SE14WeatherSpell
endif
End
Begin ScriptEffectFinish
;removes the buffs and releases the weather override at the end of the spell's duration
set isoutside to 0
player.removespell SE14WeatherBuff1
player.removespell SE14WeatherBuff2
player.removespell SE14WeatherBuff3
player.removespell SE14WeatherBuff4
player.removespell SE14WeatherBuff5
ReleaseWeatherOverride
End
Сообщение отредактировал Fear - 05.04.07 - 10:09