Skip to main content

[WIP] The Mournhold Museum

Submitted by Wodan on

I've always loved this part of Tribunal, seeing all your stuff neatly displayed, bit like a trophy room. And I've been wanting to do something for the project but I don't have the knowledge right now to do anything advanced with a script.

Anyway, I've been thinking about having a stab at this, used to be pretty decent at messing around with the Morrowind modding, hopefully this will bring back some of the scripting logic for me.

Just wondering if anyone else also is, as I remember Bloodmoon was getting priority at the moment.

Also, I'm guessing the converted, non-working script is available in the Morroblivion esm, or do I need to compile one from scratch with just the original Morrowind scipt as a reference?

If I do manage to restore it, is there any special procedure for getting it to work with the rest of the mod? I'm using as little loading files as possible (just Oblivion and Morroblivion v36) so with a bit of luck that should be decent, if anyone has a specific guide on this or any other program I'd need besides the construction set, please.

Karma: 0 (0 votes)
Last edited by Wodan on 3 Aug 2011 - 05:41.

Sorry I can't help you Wodan, but I'm with ya man, I always liked visiting that museum, especially messing with Stendarr's Hammer.

Karma: 0 (0 votes)

So, if I'm not mistaken there is no script or non-working version available except for the one from Morrowind?

Karma: 0 (0 votes)

If anyone with some knowledge about the subject reads this, please correct me.

The quest itself is relatively irrelevant, there is'nt a check for it nor does it complete when you gather all the relics.

I've extracted the original script, here is a sample, I fear all of them have their own associated scripts but as they're all nearly the same, once I figure out one, I know how to make em all:

"Begin MuseumRobeLich

if ("Torasa Aram".robelich < 2) (Robelich is a variable determined by whether or not you sold her the thing)
    Disable
endif

if ("Torasa Aram".robelich == 2)
    Enable
endif

if (OnActivate == 1)
    set "Torasa Aram".robelich to 3
    Activate
    player->removeitem "robe_lich_unique_x" 1
    player->additem "robe_lich_unique" 1
endif                (This blue bit is a script so that when you steal it and talk to her about it she screams at you for stealing it, which is a bit silly as she does'nt have x-ray vision, if it's much bother I will most likely leave this bit out as it's fairly non essential, you can't sell the stolen one to her anyway as the display ones use different ID's)


End MuseumRobeLich"

 And here is one of the associated script to do with the setting of the robelich variable (there are a couple of more for other options but this is the one where you sell her the thing)

"set robelich to 2
player->removeitem "robe_lich_unique" 1
set MuseumDonations to MuseumDonations + 1
"robe_lich_unique_x"->Enable
moddisposition 5"

I'm hoping shoving a custom variable will work to trigger  but apart from globals I've had a bit of issue with this.

After switching back and forth between editors and having a good hard look at the Queens (or whoever made it) script for the Azura's ring I think I can piece this together by using her stuff as an outline, worst case scenario I can probably use quest stages as a variable but I'd prefer not to as it would be cluttering (unless you can set silent quests of course).

I guess I'll turn this into a WIP, if anyone got some good scripting guides that are not in the FAQ section, that would be of great use.

 

Karma: 0 (0 votes)

Ok, got confused with the Ring and mistook the Ring of Azura for the moon and star... Which does not suddenly apear as far as I remember (and I can't seem to find the script that 'enables' it from being initially deactivated).

So I'm having a look at the Museum of Oddities from the Shivering Isles, as it seems a pretty decent starting point to get it work on this engine.

The SI museum uses a quest though, honestly I would not mind an associated 'quest' (it giving you a journal update that you sold the item, maybe a single line of lore), but it is obviously not what was there originally, mostly wondering if people will mind and if it's actually usable for the larger mod.

Karma: 0 (0 votes)

If you want to add variables to a script just add the line:

short SomeName

to the beginning of your script (under scn YourScript'sName)

The variable will initially be 0, and can be assigned any whole numeric value (if you want decimals use float instead of short).


SI's Museum of Oddoties will indeed be a good place to start ... you can avoid the Journal Entries if you want to (quests can run without ever showing up in your Journal).

CS wiki has the best scripting guides

 

 

Karma: 0 (0 votes)

Actually, the main reason I was thinking about quests was because I feared the hidden custom variable was'nt usable, since it is I think I should be able to get it working the original way.

There is only one problem I think I have to figure out before I can start actually making some scripts:

The enabling of the items, can you, like in Morrowind simply tell the item that is 'initially disabled' to 'enable' when a certain variable is met?

Like say

if robelich (the variable) = 0 
    Disable
endif

if robelich = 1
    Enable
endif

(the setting of the variable is handled by the dialogue, this is where I figure I have to insert the 'short varname')

The museum of oddities proved to be interesting, but different, it uses a script that handles the reference similar to what it does in morrowind, with the 1, 2 and 3 being the states of missing, bought and stolen. Where it goes awry is the execution, the conversation triggers the variable and her having the item, both of these are required for a part of her AI to kick in where she places the item, which in turn triggers the items to enable via a script located on her character.

Here is a short excerpt from her script:

begin OnPackageDone SE38PlaceItem1 (her AI routine for placing the item)
    SE38MuseumItem1REF.enable (the deactivated version of the item, with the enable command)
    removeitem SE38Item1 1 (the version she bought from the PC)
    set SE38.item1 to 3 (variable for it's state)
end

As Tribunal did'nt have a script for placing it I'll leave that be and mostly likely make this triggered on the conversation for the specific item when you sell it to her (which only includes the removal from the PC inventory, the setting of the variable and enabling of the REF item).

Also, I've been awake for 22+ hours at this point so I'm really hoping everything still makes sense after some sleep

Karma: 0 (0 votes)

... The enabling of the items, can you, like in Morrowind simply tell the item that is 'initially disabled' to 'enable' when a certain variable is met?

Yes you can :

If he script is running on the object itself then a simple:

 enable 

should do.


Otherwise if it is a Quest or Magic script, you would need to make a Persistent Reference of the Object and then:

 NAMEofPersistentReference.Enable 

 

Karma: 0 (0 votes)

Wonderful, I think at this point I can just copy bits from the Oddities script and shove it together for the selling and 'placing' of the item, responses to theft and already having sold the thing should be easy enough to set in the dialogue (will probably keep track of it by giving them their own hidden values). I believe no quest that's not there in Tribunal should be needed.

And as far as scripting, I'll prolly make the dialog set the hidden value and let the initially disbled item enable when the hidden value is set to 2 or so with it's own script.

I think I'm all set for running some test scripts friday or so.

 

Edit: Just need this as reference while I'm at work.

Diag sell:

setstage SE38 22
set SE38.enableQuestTarget to 0
set SE38.item3 to 2
player.removeitem SE38Item3 1
SEUnaArminaRef.additem SE38Item3 1

(gold on quest)

 Edit: And this.

scn SE38MuseumItemSCRIPT

begin OnActivate
    if IsActionRef player == 1
        ; player can't pick me up, just add item to player and then disable myself
        if getIsID SE38MuseumItem1 == 1
            player.additem SE38Item1 1
            set SE38.item1 to 1
            disable
...

elseif getIsID SE38MuseumItemC == 1
            player.additem SE44WaterRing 1
            set SE38.itemC to 1
            disable
        endif
    endif
end

Karma: 0 (0 votes)

After going through numerous failed scripts I've finally gotten one to work via a quest script (I was hoping for dialog script + object script but alas) now it's just a matter of tying all the references together, dialog ergo most of the actual work.

Thank god, despite them not being available when you play right now, all her topics and dialog are actually already in the morroblivion.esm so that part should take me alot less time then I initially thought.

Anyway, I'm going to let the quest script trigger the enabling of the object via a if == object.enable bit, the queststage be updated via the sell dialog and probably do the same if the item gets stolen with a object script onactivate to set the quest stage to the stolen one (I'll give her the it's stolen dialog when you ask about it and may or may not let it trigger a huge increase in bounty (this is the original... Always seemed kinda strange to me as talking about it is not the same as telling her you stole the thing but alas.).

The scripting might be completely different from the Morrowind version but for the player I think the experience should be exactly the same.

Once I get a couple of items properly working and tested them I'll prolly up a beta, this is the first time I've put together an Oblivion mod that was'nt aimed at working around some minor bug so there might be some issues I hav'nt found or just impractical script writing.

Anyway, on to the dialoguing.

Karma: 0 (0 votes)