Howdy doody! I'm making a kind of 'vanilla magic extended' mod with some cool new stuff and want to make a 'doppelganger' spell. Shivering Isles achieved this for http://www.uesp.net/wiki/Shivering:Symbols_of_Office quest but i'm unsure how it was done. I checked the CS (quest "SE11") but i'm struggling to find how it was done.
Frankly I svck at scripting and baffled by papyrus, so as much of a long shot as this I would like to ask any skilled scripters if they would be prepared to convert this TES4 script to work as a spell in skyrim? I would obviously give credits for your work, this is just something i've been after for some time and would fit in really well with a massive lore-friendly magic overhaul (what i'm going for).
Here is the long and scary script anyway, of course chunks of it aren't needed and don't know if this would even work but would be great to have if it did,
scn SE11bStandingStoneScriptshort StandingStoneActivate ;Controls standing stone stateshort DopplegangerRandom ;Set to 1 to begin random doppleganger creationshort Dice ;Used for random doppleganger creationshort DopplegangerHealth ;Variable for holding the doppleganger's healthshort DopplegangerSpeed ;Variable for holding the doppleganger's speedshort PrefersBlunt ;Set to 1 if blunt skill is higher than bladeshort PrefersBlade ;Set to 1 if blade skill is higher than bluntshort doOnce ;Internal control variableshort Tick ;Internal control variablefloat RandomTimerfloat timer ;Timerref SE11DopplegangerRef ;Reference variable for dopplegangerBEGIN OnLoad SE11DopplegangerRef.AddSpell SE11DopplegangerSpellENDBEGIN GameMode;this block creates and sets the doppleganger if ( doOnce == 0 ) ;creates doppleganger and applies effects set SE11DopplegangerRef to player.CreateFullActorCopy SE11DopplegangerRef.AddSpell SE11DopplegangerSpell ;Doubles the dopplegangers health for balance set DopplegangerHealth to ( Player.GetBaseAv Health * 2 ) SE11DopplegangerRef.SetAv Health DopplegangerHealth ;Halves the dopplegangers speed for balance set DopplegangerSpeed to ( Player.GetBaseAv Speed / 2 ) SE11DopplegangerRef.SetAv Speed DopplegangerSpeed ;Determines the preferred weapon for the doppleganger if Player.GetAv Blade >= Player.GetAv Blunt set PrefersBlade to 1 else set PrefersBlunt to 1 endif ;moves doppleganger to holding pen SE11DopplegangerRef.moveto SE11bDopplegangerHoldingMarker ;Removes quest items, problem spells, and problem items from doppleganger SE11DopplegangerRef.RemoveItem DASkullCorruption 1 SE11DopplegangerRef.RemoveItem DAClavicusUmbraSword 1 SE11DopplegangerRef.RemoveItem DAWabbajack01 1 SE11DopplegangerRef.RemoveItem FGD03BWCBlade 1 SE11DopplegangerRef.RemoveItem MG03Staff 1 SE11DopplegangerRef.RemoveItem MG08Staff 1 SE11DopplegangerRef.RemoveItem Dark01KnifeBlade 1 SE11DopplegangerRef.RemoveItem OldDAVolendrung 1 SE11DopplegangerRef.RemoveItem MS40Dagger 1 SE11DopplegangerRef.RemoveItem FGC06WeapSteelLongsword 1 SE11DopplegangerRef.RemoveItem FGC06WeapSteelWarhammer 1 SE11DopplegangerRef.RemoveItem FGC06WeapSteelBow 1 SE11DopplegangerRef.RemoveItem SE09BreathNet 1 SE11DopplegangerRef.RemoveItem FGD03BlackwoodShield 1 SE11DopplegangerRef.RemoveItem DAGoldbrand 1 SE11DopplegangerRef.RemoveItem DASanguineRose 1 SE11DopplegangerRef.RemoveItem MGStaffofWorms 1 SE11DopplegangerRef.RemoveItem DAEbonyBlade 1 SE11DopplegangerRef.RemoveItem DAMephalaDalviluDagger 1 SE11DopplegangerRef.RemoveItem DAMolagBalCursedMace 1 SE11DopplegangerRef.RemoveItem DAMolagBalMace 1 SE11DopplegangerRef.RemoveItem Dark05Blade 1 SE11DopplegangerRef.RemoveItem TG01RohssansSword 1 SE11DopplegangerRef.RemoveItem TG05HrormirsIcestaff 1 SE11DopplegangerRef.RemoveItem TG11ElvenLongSword 1 SE11DopplegangerRef.RemoveItem TG11ElvenMace 1 SE11DopplegangerRef.RemoveItem SvenjaBow 1 SE11DopplegangerRef.RemoveItem SilvDagshimmerthorn, 1 SE11DopplegangerRef.RemoveItem SQ10Rockshatter01, 1 SE11DopplegangerRef.RemoveItem SQ10Rockshatter05, 1 SE11DopplegangerRef.RemoveItem SQ10Rockshatter10, 1 SE11DopplegangerRef.RemoveItem SQ10Rockshatter15, 1 SE11DopplegangerRef.RemoveItem SQ10Rockshatter20, 1 SE11DopplegangerRef.RemoveItem SQ10Rockshatter25, 1 SE11DopplegangerRef.RemoveItem Torch02, 99 SE11DopplegangerRef.RemoveSpell SE07SaintSpell SE11DopplegangerRef.RemoveSpell SEPwSummonGoldenSaint SE11DopplegangerRef.RemoveSpell SE07SeducerSpell SE11DopplegangerRef.RemoveSpell SEPwSummonDarkSeducer SE11DopplegangerRef.RemoveSpell StandardSummonAtronachFlameJourneyman SE11DopplegangerRef.RemoveSpell StandardSummonAtronachFrostExpert SE11DopplegangerRef.RemoveSpell StandardSummonAtronachStormMaster SE11DopplegangerRef.RemoveSpell StandardSummonClannfearExpert SE11DopplegangerRef.RemoveSpell StandardSummonDaedrothExpert SE11DopplegangerRef.RemoveSpell StandardSummonDremoraJourneyman SE11DopplegangerRef.RemoveSpell StandardSummonDremoraLordMaster SE11DopplegangerRef.RemoveSpell StandardSummonLichMaster SE11DopplegangerRef.RemoveSpell StandardSummonSkeletonApprentice SE11DopplegangerRef.RemoveSpell StandardSummonSkeletonChampionExpert SE11DopplegangerRef.RemoveSpell StandardSummonSkeletonGuardianJourneyman SE11DopplegangerRef.RemoveSpell StandardSummonSkeletonHeroExpert SE11DopplegangerRef.RemoveSpell StandardSummonSpiderDaedraExpert SE11DopplegangerRef.RemoveSpell StandardSummonWraithFadedExpert SE11DopplegangerRef.RemoveSpell StandardSummonWraithGloomMaster SE11DopplegangerRef.RemoveSpell StandardSummonXivilaiMaster SE11DopplegangerRef.RemoveSpell StandardSummonZombieApprentice SE11DopplegangerRef.RemoveSpell StandardSummonZombieHeadlessJourneyman SE11DopplegangerRef.RemoveSpell SEStdSummonAtronachFlesh2Apprentice SE11DopplegangerRef.RemoveSpell SEStdSummonAtronachFlesh3Journeyman SE11DopplegangerRef.RemoveSpell SEStdSummonAtronachFlesh4Expert SE11DopplegangerRef.RemoveSpell SEStdSummonAtronachFlesh5Master SE11DopplegangerRef.RemoveSpell SEStdSummonHunger2Apprentice SE11DopplegangerRef.RemoveSpell SEStdSummonHunger3Journeyman SE11DopplegangerRef.RemoveSpell SEStdSummonHunger4Expert SE11DopplegangerRef.RemoveSpell SEStdSummonHunger5Master SE11DopplegangerRef.RemoveSpell SEStdSummonShambles3Journeyman SE11DopplegangerRef.RemoveSpell SEStdSummonShambles4Expert SE11DopplegangerRef.RemoveSpell SEStdSummonShambles5Master ;Sets doppleganger combat style SE11DopplegangerRef.SetCombatStyle SE11DopplegangerCombatStyle ;Removes doppleganger from all guilds SE11DopplegangerRef.SetFactionRank MagesGuild, -1 SE11DopplegangerRef.SetFactionRank ThievesGuild, -1 SE11DopplegangerRef.SetFactionRank Beggars, -1 SE11DopplegangerRef.SetFactionRank ICWaterFrontResident, -1 SE11DopplegangerRef.SetFactionRank FightersGuild, -1 SE11DopplegangerRef.SetFactionRank DarkBrotherhood, -1 SE11DopplegangerRef.SetFactionRank DarkPlayer, -1 SE11DopplegangerRef.SetFactionRank EvilSolo, 0 ;blocks the script from running twice set doOnce to 1 endif;Sets stage when player enters cell if ( player.GetInCell XPMilchar03 == 1 ) && ( getStageDone SE11 150 == 0 ) SetStage SE11 150 endif if ( SE11DopplegangerRef.getDead == 1 ) && ( getStageDone SE11 160 == 0 ) setstage SE11 160 SE11DopplegangerRef.pme strp SE11DopplegangerRef.setdestroyed 1 endif if ( GetStageDone SE11 155 == 0 ) if ( Player.GetDistance SE11bStandingStoneRef < 500 ) ;sets standing stone to active state set StandingStoneActivate to 1 set timer to 12 ;sets quest stage setstage SE11 155 endif endif;This block is run when the player activates the standing stone if ( StandingStoneActivate == 1 ) if ( timer >= -1 ) set timer to timer - GetSecondsPassed endif if ( timer < 11 ) && ( tick == 0 ) SE11CloneFXREF.PlayGroup forward 1 set Tick to 1 elseif ( timer < 5 ) && ( tick == 1 ) SE11DopplegangerRef.addScriptPackage SE11DopplegangerArrivePackage SE11DopplegangerRef.additem SE11AnimObject 1 SE11DopplegangerRef.evp set Tick to 2 elseif ( timer < 3 ) && ( tick == 2 ) ;Adds and equips the doppleganger's sword if ( PrefersBlade == 1 ) SE11DopplegangerRef.AddItem SE11LLDoppleGangerSword 1 SE11DopplegangerRef.UnequipItem Torch02, 1 if ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade01 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade01 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade05 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade05 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade10 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade10 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade15 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade15 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade20 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade20 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade25 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade25 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowBlade30 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowBlade30 setAlert 1 endif endif if ( PrefersBlunt == 1 ) SE11DopplegangerRef.AddItem SE11LLDoppleGangerAxe 1 SE11DopplegangerRef.UnequipItem Torch02, 1 if ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe01 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe01 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe05 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe05 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe10 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe10 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe15 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe15 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe20 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe20 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe25 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe25 setAlert 1 elseif ( SE11DopplegangerRef.GetItemCount SE11ShadowAxe30 >= 1 ) SE11DopplegangerRef.EquipItem SE11ShadowAxe30 setAlert 1 endif endif ;moves doppleganger to grove area SE11DopplegangerRef.UnequipItem Torch02, 1 SE11DopplegangerRef.moveto SE11bDopplegangerMarker ;SE11DopplegangerRef.evp set Tick to 3 elseif ( timer < 2 ) && ( tick == 3 ) set Tick to 4 elseif ( timer <= 0 ) && ( tick == 4 ) SE11bDopplegangerSpawnEffectRef.disable ;forces doppleganger to attack the player SE11DopplegangerRef.startcombat player SE11DopplegangerRef.moddisposition player -200 ;sets standing stone to inactive state set StandingStoneActivate to 0 setDestroyed 1 set Tick to -1 endif endif ENDBEGIN OnActivate if ( GetStageDone SE11 155 == 0 ) if ( isactionRef Player == 1 ) ;sets standing stone to active state set StandingStoneActivate to 1 set timer to 12 ;sets quest stage setstage SE11 155 endif endifEND