Jump to content

Basic quest construction


Lord Valarian

Recommended Posts

I read have many articles from CS WIKI, including tutorials from other websites. However, I have tried the conditions on the quests tab. They do nothing. I can a write the script that replaces that, but do they do anything? They work in other scripts. I have no clue what i'm doing wrong. Here's the general layout. This will give some away as what i'm up to in my quest.

 

 

 

The functionality of 'Archmage quest - Sanctuary: chapter 1 - Revelation' is more or less done. It's very practical and some GFX, something I built for myself(as most do). It's a full story. Don't hold your breath. I'm learning as go. So, very slow going. More and more secrets, hidden history, gods, ascension, and some practical weapons along the way. Some lore is new made up by me. You may not agree, but enjoy anyway. The starting step I have decided yet. but this is where I'm going. Also, I'm read a lot in the game books but not all.

 

How should I set this up? I can do this with script, but the ifs on the quests tab will be helpful. Not just how, how and why.

 

Completed archmage quest - get stage

In cell 'archmage quarters - getincell?

journal entry(quest begins)

Quest maker at location in cell.

move to quest marker

journal entry, item and note

Use item

teleport to cell

journal entry

using another item in room - quest completed

 

Start chapter 2: Portal Mystery

 

 

 

The functionality of 'Archmage quest - Sanctuary: chapter 1 - Revelation' is more or less done. It's very practical some GFX, something I built for myself(as most do). It's a full story. Don't hold your breath. I'm learning as go. So, very slow going. More and more secrets, hidden history, gods, ascension, and some practical weapons along the way. Some lore is new made up by me. You may not agree, but enjoy anyway. The starting step I have decided yet. but this is where I'm going. Also, I'm read a lot in the game books but not all.

 

How should I set this up? I can do this with script, but the ifs on the quests tab will be helpful. Not just how, how and why.

 

Completed archmage quest - get stage

In cell 'archmage quarters - getincell?

journal entry(quest begins)

Quest maker at location in cell.

move to quest marker

journal entry, item and note

Use item

teleport to cell

journal entry

using another item in room - quest completed

 

Start chapter 2: Portal Mystery

 

 

Edited by Lord Valarian
Link to comment
Share on other sites

To make spoiler's easy, you can make something that looks like this:

 

 

 

by typing [ spoiler ] and [ /spoiler ], without the spaces between the square brackets.

 

 

 

What is it you are trying to get the conditions to do? And what part of the quest tab are you adding them?

Quest Conditions are completely passive, a means of evaluating which version of something to use. For example, Quest conditions on dialogue help the game to pick out what an actor must say, from a group of possible responses.

 

 

 

I don't know your exact specifications, so I will write you some script fragments and you can assemble them how you like. Most of these can be chucked into a quest script.

 

I'm assuming that the first 3 things on your list are all linked, as in you get a journal update while in the room after completing a quest.

If GetStage <EditorID of Quest> == <Stage where the quest is completed>
    If Player.GetInCell <EditorID of Cell> == 1
         SetStage <EditorID of quest> <Stage>
    endif
endif

 

The next two I'm guessing are also linked. For that, your quest marker must be a persistent reference, which I will refer to as "MarkerREF". You can change it to whatever you like.

Player.MoveTo MarkerREF

 

Do the item and note just appear in the player's inventory with the journal update? If so, then this is what you want...


SetStage <Quest ID> <stage>
Player.AddItem <EditorID of item> 1
Player.AddItem <EditorID of note> 1

 

If you mean the journal updates when the player has obtained both, then you can do this:

If Player.GetItemCount <item> == 1
    If Player.GetItemCount <note> == 1
         SetStage <Quest> <stage>
    endif
endif

To make this a little neater, you can use the method described here. It may not have a massive effect, but it is worth learning how to use cross-script variables for this kind of thing, for a time when it really does make a difference.

 

How to code what happens when using the item is ambiguous, as I'm not sure how your "using" the item. Are you equipping it?

If you are, then attach this script to the item, in an OnEquip block. Again, you will need a persistent reference to teleport to, which I will refer to as "Marker2REF"

Begin OnEquip
    
    SetStage <Quest> <stage>
    Player.MoveTo Marker2REF

End

 

Again, when you say "using" an item I will assume you are equipping it. Use the exact same script as last time, only without using "Player.MoveTo". Whatever stage you set it to, you can tick a box in the quest tab that automatically completes the quest when that stage is reached.

 

Hope this helps ;)

Edited by WarRatsG
Link to comment
Share on other sites

This what I did. The scripting I can do, but the conditions don't work and no clue why not.

 

New quest->ALVQSancturary- Fill in name

 

Main page . getplayablerace == 1

getinseworld == 1

 

stages tab

new -> 10

 

conditions

getincell == [select archmage's quarters]

 

fill in journal entry. I run the game, nothing happens when I enter the room. I can write the script to do this, but why aren't the conditions working??

 

I'v very good at it now. I'v had some 'dam that's look cool/[pick your slang]' moments and 'wow, that's really handy'. It still needs more GFX, like a complex movement sequence. My lightning is quick and cheap. etc, I'll get around to it.

 

Also, trying to get a magic effect between objects. OBSE has it(i think), but no examples. Effect Z between xyz1 to xyz2 I can't find the static effect(enable/disable). Mana beams in FCR would work, if I could figure out how.

Link to comment
Share on other sites

Here is the wiki page on conditions

 

And here is the version a little more specific to you...

 

 

Conditions in quests are passive: they are used to select one item from a group of possible items, the "item" usually being either dialogue or a journal update. So for example, when you speak to someone and select the topic "Chorrol", the game looks up the topic you have selected, then picks one of the responses contained within that topic based on the conditions for each response. The same goes for quest stages - the stages do not activate when the conditions are met, but when the stage is set by a SetStage function then one of the stage's possible Journal Updates will display, the exact one depending on each of their conditions.

 

To make the Stage activate, you must use "SetStage <stage>" in a script.

 

 

The conditions you set in the data tab, which is the first tab in the quest menu, are ANDed on to each piece of dialogue. It's worth noting that (GetInSEWorld == 1) means that the player is in the Shivering isles (or Hawkhaven :unsure: ), so none of your dialogue will work unless the player is in the Shivering Isles.

 

 

Also, make sure that your quest script is actually running. In the Quest Data tab, make sure that the script is set to your quest script and make sure that "Start Game Enabled" is ticked, or another script is using "StartQuest <quest>".

Link to comment
Share on other sites

It works to a point. First, I can't get the quest icon to change. The quest starts, but getincell won't work. Once I removed it, the quest started.

 

 

 

New quest->ALVQSancturarymain5 - Archmage Quest - Sanctuary script name: ALVQSancturaryMain5Script

 

New script:

Scriptname ALVQSancturaryMain5Script

 

Short DoOnce

 

Begin GameMode

if DoOnce == 0

Set DoOnce to 1

Setstage ALVQSancturarymain5 10

endif

End

 

 

click stages tab

new -> 10

 

conditions

getplayablerace == 1 and

getincell == [select archmage's quarters]

 

fill in journal entry.

 

 

 

 

I'll include screenshots next time. This should work.

Edited by Lord Valarian
Link to comment
Share on other sites

Remove the conditions, then add in the following lines to your script.

 

If GetStage ALVQSANCTUARYMAIN5 < 10
    If Player.GetInCell <cell> == 1
         SetStage 10
    endif
Endif

 

If you insist on having the conditions, make sure that the parameters are correct.

Edited by WarRatsG
Link to comment
Share on other sites

Remove the conditions, then add in the following lines to your script.

 

If GetStage ALVQSANCTUARYMAIN5 < 10

If Player.GetInCell <cell> == 1

SetStage 10

endif

Endif

[\code]

 

If you insist on having the conditions, make sure that the parameters are correct.

 

I removed all the conditions and wrote a script based on what you said. IT WORKS, the way I want! :)

 

EDIT: It's resolved, thanks for the assist.

Edited by Lord Valarian
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...