steelfeathers Posted June 9, 2014 Author Share Posted June 9, 2014 (edited) Working on a doozy of a spell that I think you all will really enjoy. It's called "Daedric Blessing". It's scroll-only, and it's meant to be cast at various Daedric shrines to get the blessing of the associated daedric lord. The results vary widely, however, based on which lord it is and whether or not you have their favor.... :wink: Think shrines are only good for passive boosts? Think again. A preview of some of the effects... Nocturnal: If wearing a full set of Nightengale armor, you will pass unrecognized for 180 seconds, accumulating no bounty. Can only be used once a day. Molag Bal: Gain the power Blood Harvest. For 60 seconds, each strike of your weapon drains <30> health from the target. Can only be used once a day. There might also be an additional 'blessing' based on the mood he's in and what faction you belong to.... Peryite: Infected with a plague that lowers health and stamina by 10 points, but makes you immune to diseases and gives you the ability to spit acid, which does 25 points of poison damage per second. Hircine: Gain the ability Hunter's Reflexes. Chance to slow time while an opponent is power attacking. You might also receive an additional 'blessing' based on the phase of the moon..... Sheogorath: Boost 2 random skills by 10 points, lower 1 random skill by 5 points. And get lots and lots of cheese. EDIT: Also, if you're one of the 5 people who have downloaded the test version, please let me know what you think! Is everything working the way it should? Do some spells fail completely? With so many spells crammed in here, it's very hard for me to test everything thoroughly. Edited June 9, 2014 by steelfeathers Link to comment Share on other sites More sharing options...
Mattiewagg Posted June 9, 2014 Share Posted June 9, 2014 Does the Molag bal effect happen immediately? Since it might be less useful if it was activated at his shrine, since you're less likely to be near an enemy. Link to comment Share on other sites More sharing options...
Mattiewagg Posted June 9, 2014 Share Posted June 9, 2014 Looks great! You've clearly put a lot of work into it Link to comment Share on other sites More sharing options...
steelfeathers Posted June 9, 2014 Author Share Posted June 9, 2014 (edited) Does the Molag bal effect happen immediately? Since it might be less useful if it was activated at his shrine, since you're less likely to be near an enemy. You gain the power immediately, but when you decide to use the power is up to you. (Same thing for the other 'power' blessings) Edited June 9, 2014 by steelfeathers Link to comment Share on other sites More sharing options...
steelfeathers Posted June 9, 2014 Author Share Posted June 9, 2014 Thoughts on what Malacath's blessing could be? He's the only one I don't have an idea for - I've never played his quest in the game. Link to comment Share on other sites More sharing options...
WLionheart Posted June 10, 2014 Share Posted June 10, 2014 If you need some more spell ideas (you already have got a lot of them and great ones) I would love to help. I have some more "holy" spell ideas, that I posted a long time ago in the Vigilant of Stendarr mod that was in development. Maybe you have some use for em , I surely don't. http://vigilants.proboards.com/thread/16/holy-powers-ideas Link to comment Share on other sites More sharing options...
steelfeathers Posted June 10, 2014 Author Share Posted June 10, 2014 If you need some more spell ideas (you already have got a lot of them and great ones) I would love to help. I have some more "holy" spell ideas, that I posted a long time ago in the Vigilant of Stendarr mod that was in development. Maybe you have some use for em , I surely don't. http://vigilants.proboards.com/thread/16/holy-powers-ideas oh the irony! I've actually made a spell called Consecration (restoration adept), but I can't get it to work right, so I had to cut it out. It's a rune spell that is supposed to do holy damage to undead and apply healing-over-time to all others, but it always makes the non-undead target hostile, even when the 'hostile' flag isn't set. Oh well...Thanks for the suggestions, though. :) Link to comment Share on other sites More sharing options...
steelfeathers Posted June 11, 2014 Author Share Posted June 11, 2014 (edited) I'm looking to put out an updated beta version in a day or two, so stay tuned. In the meantime, here are more Daedric Blessing effects: Malacath: Passive +10 smithing boost, and gain the power Killing Spree. When Killing Spree is triggered, your stamina is boosted by 40 points, and your attack strength grows with every enemy killed. Lasts 120 seconds. Clavicus: If killed Barbas, you get +15 speech skill; buying and selling prices are 10% better. If you spared Barbas, he might have his own reward for you... :wink: (Hint: It's loyal, fierce, and looks something like this.) Herma Mora: Skill books grant 2 skill levels Mehrunes Dagon: Destruction spells are 15% more powerful Namira: Enemies you attack (or that attack you) have a chance to become infected with a Wasting Disease, which deals 5 damage to health and stamina per second for 30 seconds, and lowers one-handed/two-handed damage by 20 points. You might also find yourself inexplicably surrounded by vermin wherever you go... Azura: +50 magicka Vaermina: If you have her favor, you gain the power Dream Weaver. When triggered, Dream Weaver puts everyone around you to sleep for 3 minutes, restoring 10 health and magicka to you for every person affected. Does not cause hostility. (If you don't have her favor, however, you might find yourself plagued by terrible nightmares...) Sanguine: Removes stamina regen penalty from ale/wine/mead. Consuming alcohol restores more health and stamina, and applies the effect "Loose and Limber", which reduces the damage you take for 30 seconds. While affected by Loose and Limber, you speech skill is increased by 20 points with the opposite sex. Interesting little tidbit - here's the main script for Daedric Blessing. And this is just the script to trigger the effects; some of the blessings have their own massive scripts. I just wanted to show how involved and organic this spell is going to be. (Spoilers if you know how to read code) Scriptname zDBDaedricBlessing_cast extends ActiveMagicEffect Quest property DA10 auto Quest property DA01 auto Quest property DA07 auto Quest property DA04 auto Quest property DA13 auto Quest property DA05 auto Quest property DA03 auto Quest property DA06 auto Quest property DA11 auto Quest Property PlayerVampireQuest auto Import zExtendedUtility Location property ShrineAzura auto Location property ShrineMehrunes auto Location property ShrineMeridia auto Cell property AbandonedHouse auto Location property VolkiharCastle auto Cell property PelagiusWing auto Location property Arcaneum auto Location property ShrinePeryite auto Worldspace property BloatedMansGrotto auto Cell property TwilightSepulcer1 auto Cell property TwilightSepulcer2 auto Cell property HaemarsShame02 auto Location property GiantsGrove auto Cell property ReachCliffCave01 auto Actor target Potion property cheese auto Armor property weddingWreath auto bool isAzura = false bool isMehrunes = false bool isMeridia = false bool isMolag = false bool isSheogorath = false bool isMora = false bool isPeryite = false bool isHircine = false bool isNocturnal = false bool isMephala = false bool isClavicus = false bool isMalacath = false bool isNamira = false Formlist property zpDBSpells auto Spell property zDBAzuraSpell auto Spell property zDBMehrunesSpell auto Spell property zDBMeridiaSpell auto Spell property zCureDisease auto Spell property zDBMolagPower auto Spell property zDBMolagSpell auto Spell property zVampireDisease auto Spell property zVampireDiseaseNoCure auto Spell property zDBSheogorathSpell auto Spell property zDBMoraSpell auto Shout property zDBPeryite_spit auto Spell property zDBPeryiteSpell auto Spell property BeastForm auto Spell property zDBHircineSpell auto Spell property zDBWerewolfTracking auto Spell property zDBHircine_wolfTotem auto Spell property zDBHircine_bearTotem auto Spell Property Immunity auto Spell Property WerewolfCureDisease auto Spell property zDBNocturnalSpell auto Spell property zDBNocturnalShroud auto Spell property zDBMephalaSpell auto Spell property zDBClavicusSpell auto Spell property zDBMalacath_power auto Spell property zDBMalacathSpell auto Spell property zDBNamiraSpell auto Spell property zStagger auto WordofPower property Word1 auto WordofPower property Word2 auto WordofPower property Word3 auto Keyword property Vampire auto Faction property VampireFaction auto Faction property VampirePCFaction auto Faction property DLC1PlayerVampireLordFaction auto Faction property DLC1VampireFaction auto Faction property DLC1DawnguardFaction auto Sound property evilLaugh auto Sound property rumble auto Sound property spurned auto ImagespaceModifier property zImod auto Explosion property zExplosion auto Int curMoonPhase Int werewolfChance Int TotemChance Int murders float Old_daysPassed float Cur_daysPassed Globalvariable property zgBarbasBoon auto Globalvariable property zgDBTimer auto Globalvariable property zgSheoFirstTime auto Globalvariable property zgWasBlessed auto Actorbase property aDog auto ;................................................................................................................ Event OnEffectStart(Actor akTarget, Actor akCaster) target = akTarget Old_daysPassed = zgDBTimer.value Cur_daysPassed = GetPassedGameDays() ;;Check to see if its been less than a day since last casting this spell, and if you were blessed the last time if ( (Cur_daysPassed - Old_daysPassed) < 1 ) && (zgWasBlessed.value == 1) debug.notification("You may only receive one blessing per day") dispel() else zgDBTimer.setValue(Cur_daysPassed) zgWasBlessed.setValue(0) ;;You havent been blessed today Main() endif EndEvent ;................................................................................................................ Function Main() ;;Where are you casting this? If !(CheckCell(target.GetParentCell()) ) && !(CheckWorldSpace(target.GetWorldSpace()) ) ;;If the caster is not in one of the cells on the list.... ;;debug.notification("You are not in a cell on the list") CheckLocation(target.GetCurrentLocation()) endif if (isAzura) ;;check if this daedra is mad at you if HasFavor(1) RemoveSpells() target.addspell(zDBAzuraSpell) else debug.notification("Your prayer goes unanswered...") endif elseif (isMehrunes) if HasFavor(2) RemoveSpells() target.addspell(zDBMehrunesSpell) else ;;play neg imod here spurned.play(target) rumble.play(target) zStagger.cast(target) target.damageAV("Health",50) debug.notification("Mehrunes has spurned your prayer.") endif elseif (isMeridia) if HasFavor(3) RemoveSpells() zCureDisease.cast(target,target) target.addSpell(zDBMeridiaSpell) else ;;play imod spurned.play(target) rumble.play(target) zStagger.cast(target,target) target.damageAV("Health",50) debug.notification("Meridia has spurned your prayer") endif elseif (isMolag) if HasFavor(4) RemoveSpells() target.addspell(zDBMolagPower) if IsVampire(target) || target.hasSpell(BeastForm) ;;do nothing else if the caster is a vampire or werewolf else if target.IsInFaction(DLC1DawnguardFaction) || (utility.randomInt(1,5) == 1) ;;zEvilLaugh.play(target) zImod.apply() spurned.play(target) zStagger.cast(target,target) zCureDisease.cast(target,target) ;;cure diseases to get rid of the normal vampire disease, if you have it target.addSpell(zVampireDiseaseNoCure) ;;even if he likes you, give vampire disease if youre DG. Because hes a dick. utility.wait(1) zImod.remove() endif endif ;;add place-holder ability target.addSpell(zDBMolagSpell) else ;; if he doesnt like you, AND youre dawnguard, damage health and give incurable vampire disease if target.IsInFaction(DLC1DawnguardFaction) ;;zEvilLaugh.play(target) debug.notification("A member of the Dawnguard...") utility.wait(1) debug.notification("You must truly desire my blessing...") utility.wait(1) target.damageAV("Health",50) spurned.play(target) rumble.play(target) zStagger.cast(target,target) if !(IsVampire(target)) && !(target.hasSpell(BeastForm)) zImod.apply() zCureDisease.cast(target,target) target.addSpell(zVampireDiseaseNoCure) utility.wait(1) zImod.remove() endif else debug.notification("Molag Bal has spurned your prayer") target.damageAV("Health",50) spurned.play(target) rumble.play(target) zStagger.cast(target,target) endif endif elseif (isSheogorath) RemoveSpells() target.addSpell(zDBSheogorathSpell,false) if (zgSheoFirstTime.value == 0) target.additem(weddingWreath,1,true) target.equipitem(weddingWreath,false,true) Debug.notification("Jolly good choice, mortal! You won't go wrong with my blessing....or will you?") zgSheoFirstTime.setValue(1) ;;no more fancy hat for you else debug.notification("Back again, eh?") utility.wait(0.5) debug.notification("Here, have some more cheese!") utility.wait(0.5) debug.notification("No fancy hat for you this time, though.") endif target.placeatme(cheese,3) utility.wait(0.2) target.placeatme(cheese,3) utility.wait(0.2) target.placeatme(cheese,3) elseif (isMora) if HasFavor(6) RemoveSpells() target.addspell(zDBMoraSpell) else debug.notification("Your prayer goes unanswered...") ;spurned.play(target) endif elseif (isPeryite) if HasFavor(7) RemoveSpells() game.UnlockWord(Word1) game.UnlockWord(Word2) game.UnlockWord(Word3) target.addShout(zDBPeryite_spit) debug.notification("Acid Spray shout added") target.addSpell(zDBPeryiteSpell) else debug.notification("Your prayer goes unanswered...") ;spurned.play(target) endif elseif (isHircine) if HasFavor(8) RemoveSpells() target.addspell(zDBHircineSpell) ;;Chance to make bears or wolves friendly TotemChance = utility.RandomInt() If (TotemChance <= 5) target.Addspell(zDBHircine_bearTotem) elseif (TotemChance <= 15) target.AddSpell(zDBHircine_wolfTotem) endif curMoonPhase = GetCurrentMoonphase() ;;whats the moon phase ;;debug.notification(curMoonPhase) ;;chance to turn player into a werewolf if the moon is full If !(target.hasSpell(BeastForm)) && !(isVampire(target)) && (curMoonPhase == 0) ;;debug.notification("Poof! Player is a werewolf.") zImod.apply() zStagger.cast(target,target) spurned.play(target) rumble.play(target) WerewolfCureDisease.Cast(Game.GetPlayer()) Game.GetPlayer().AddSpell(Immunity, false) target.addSpell(zDBWerewolfTracking,false) target.addSpell(BeastForm) Utility.wait(1) zImod.remove() endif else debug.notification("Hircine has spurned your prayer") spurned.play(target) endif elseif (isNocturnal) if HasFavor(9) RemoveSpells() target.addSpell(zDBNocturnalShroud) target.addSpell(zDBNocturnalSpell) else debug.notification("Your prayer goes unanswered...") ;spurned.play(target) endif elseif (isClavicus) if HasFavor(10) RemoveSpells() target.addspell(zDBClavicusSpell) else if (zgBarbasBoon.value == 0) && (DA03.IsObjectiveCompleted(200)) ;;you spared Barbas, and you havent gotten his gift debug.notification("Clavicus Vile has spurned your prayer") spurned.play(target) utility.wait(5) debug.notification("Don't worry.") utility.wait(1) debug.notification("Your old pal Barbas has you covered!") Actor NewDog = target.placeatme(aDog,1) as Actor NewDog.placeatme(zExplosion) zgBarbasBoon.setValue(1) ;;Barbas gave you a his gift zgWasBlessed.setValue(1) else debug.notification("Clavicus Vile has spurned your prayer") spurned.play(target) endif endif elseif (isMalacath) if HasFavor(11) RemoveSpells() target.addSpell(zDBMalacath_power) target.addSpell(zDBMalacathSpell) else spurned.play(target) rumble.play(target) target.damageAV("Health",50) debug.notification("Malacath has spurned your prayer") endif elseif (isNamira) if HasFavor(12) RemoveSpells() target.addSpell(zDBNamiraSpell) else debug.notification("Your prayer goes unanswered...") endif elseif (isMephala) RemoveSpells() target.addSpell(zDBMephalaSpell) else debug.Notification("Failed to invoke a Daedric Lord...") dispel() endif EndFunction Event OnEffectFinish(Actor akTarget, Actor akCaster) EndEvent ;------------------------------------------------------------------------------------- Bool Function CheckCell(Cell akCell) If (akCell == AbandonedHouse) isMolag = true ;;debug.notification("You are at Molags shrine") return true elseif (akCell == PelagiusWing) isSheogorath = true return true elseif (akCell == TwilightSepulcer1) || (akCell == TwilightSepulcer2) isNocturnal = true return true elseif (akCell == HaemarsShame02) isClavicus = true return true elseif (akCell == ReachcliffCave01) isNamira = true return true else return false endif EndFunction ;------------------------------------------------------------------------------------- Bool Function CheckWorldSpace(Worldspace akWS) if (akWS == BloatedmansGrotto) isHircine = true return true else return false endif EndFunction ;------------------------------------------------------------------------------------- Function CheckLocation(Location akLocation) Location curLocation = akLocation ;;Check if your location matches a shrine location If curLocation == ShrineAzura isAzura = true return endif If curLocation == ShrineMehrunes isMehrunes = true return endif if curLocation == ShrineMeridia isMeridia = true return endif if curLocation == Arcaneum isMora = true return endif if curLocation == ShrinePeryite isPeryite = true return endif if curLocation == GiantsGrove isMalacath = true return endif ; if curLocation == BloatedMansGrotto ; isHircine = true ; return ; endif ; if curLocation == none ; ;;debug.notification("You are nowhere...?") ; isHircine = true ;;;++++++++++++++++++++take this out +++++++++++++++++++++ ; return ; endif if (game.QueryStat("Murders") >= 15) debug.notification("You are the disciple of Mephala") isMephala = true endif EndFunction ;------------------------------------------------------------------------------------- Bool Function HasFavor(Int akDaedra) if akDaedra == 1 ;;Azura if (DA01.IsObjectiveFailed(65)) zgWasBlessed.setValue(1) ;;You were blessed - no more blessings for you today return true ;;Have favor if Nelecar objective was failed > you sided w/ Azura else return false endif elseif akDaedra == 2 ;;Mehrunes if ( (DA07.GetStage()==150) || (DA07.GetStage() == 200) ) return false ;; no favor if quest was failed else zgWasBlessed.setValue(1) return true endif elseif akDaedra == 3 ;;Meridia if IsVampire(target) return false else zgWasBlessed.setValue(1) return true endif elseif akDaedra == 4 ;;Molag Bal if (DA10.IsObjectiveFailed(60) || DA10.IsObjectiveFailed(70) || (DA10.GetStage()==550) ) ;; failed quest ;debug.notification("You failed Molags quest") return false else zgWasBlessed.setValue(1) return true endif elseif akDaedra == 5 ;;sheogorath zgWasBlessed.setValue(1) return true elseif akDaedra == 6 ;;Mora if (DA04.GetStage() == 100) || (DA04.GetStage() == 200) zgWasBlessed.setValue(1) return true ;;Must have completed Transmundane quest to get favor else return false endif elseif akDaedra == 7 ;;Peryite if (DA13.IsObjectiveCompleted(75)) ;;if you completed the quest zgWasBlessed.setValue(1) return true else return false endif elseif akDaedra == 8 ;;Hircine if (DA05.GetStage() == 200) ;;completed quest zgWasBlessed.setValue(1) return true else return false endif elseif akDaedra == 9 ;;Nocturnal zgWasBlessed.setValue(1) return true elseif akDaedra == 10 ;;Clavicus if (DA03.IsObjectiveCompleted(155)) ;;If you killed Barbas zgWasBlessed.setValue(1) return true else return false endif elseif akDaedra == 11 ;;Malacath if (DA06.IsObjectiveCompleted(120)) ;;completed quest zgWasBlessed.setValue(1) return true else return false endif elseif akDaedra == 12 ;;Namira if !(DA11.IsObjectiveFailed(100)) ;;if you didnt turn on Eola zgWasBlessed.setValue(1) return true else return false endif endif EndFunction ;------------------------------------------------------------------------------------- ;;Brute force removal of all other abilities and spells Function RemoveSpells() Int iIndex = zpDBSpells.GetSize() ; Indices are offset by 1 relative to size While iIndex iIndex -= 1 Spell zSpell = zpDBSpells.GetAt(iIndex) As Spell If target.hasSpell(zSpell) target.removeSpell(zSpell) EndIf EndWhile ;;Remove acidspray shout if not Peryite if !(isPeryite) target.removeShout(zDBPeryite_spit) endif EndFunction ;------------------------------------------------------------------------------------- ;;Check to see if the player is a vampire Bool Function IsVampire(Actor akTarget) if ( akTarget.hasKeyword(Vampire) || akTarget.IsInFaction(VampireFaction) || akTarget.IsInFaction(VampirePCFaction) \ || akTarget.IsInFaction(DLC1PlayerVampireLordFaction) || akTarget.IsInFaction(DLC1VampireFaction) ) return true else ;;debug.notification("You are not a vampire") return false endif EndFunction Edited June 11, 2014 by steelfeathers Link to comment Share on other sites More sharing options...
Pittcrew Posted June 12, 2014 Share Posted June 12, 2014 Looks interesting, might have to give it a try! Link to comment Share on other sites More sharing options...
EnaiSiaion Posted June 12, 2014 Share Posted June 12, 2014 Suggestion: shorten that script by using arrays. :) Link to comment Share on other sites More sharing options...
Recommended Posts