I can't believe how much more complicated scripting is in skyrim. In oblivion, what I want to do is literally a gamemode block with one if statement and one command. I've been trying to get this to work in skyrim's bloated scripting language all day, and it is something that takes literally 15 seconds in oblivion.
What I want to do:
1.) Player picks up book, it's in his inventory.
2.) Progress a quest.
3.) That's it.
This might as well be developing a multiplayer plugin for oblivion, that features xbox kinect support and deposits $100 into your bank account upon installation.
I've tried this as a quest script, and as a script on the book itself.
Quest Property aaaQuestproperty AutoBook Property BookProp AutoFunction SomeFunction()RegisterForUpdate(5.0) ; Before we can use OnUpdate() we must register.EndFunctionEvent OnUpdate() ; This event occurs every five secondsif (Game.GetPlayer().GetItemCount(BookProp) == 1)aaaQuestProperty.setstage(6)aaaQuestProperty.setobjectivecompleted(5)aaaQuestProperty.setobjectivedisplayed(6)endIfEndEvent
Which I've assembled from tutorials. It compiles, but it doesn't do anything in game.
I'm also a little confused by the new property requirement. Why even have names for base objects at all if we have to give them another name EVERY time we use them in a script? That must be a lot of extra data for the engine to keep track of? What's the point?
Thanks for the help.
/misses oblivion