Monday, November 8, 2010

Quest structure overhaul

Over the past few days I've been doing a lot of work on stuff that's not really all that visible, which is kind of sad.


But now my quest structure is 500x more robust, allowing me to do things like have multiple outcomes PER CHOICE, PER QUEST, as well as a slew of interesting parameters I can add to a quest now to lock, unlock, etc.


The idea here is that you can mix and match elements to create a huge variety of quests. I'll explain the structure below:


Each quest is structured as follows in an XML document:


<Quest id="" qName="" Picture="undefined" Type="1" Loc="1" Locked="0">;
    <ChainLock cName="name" levelMinReq="" levelMaxReq=""/>
    <Description></Description>
    <Choice cName="" picture="" > <!==traitReq="">
        <Description></Description>
        <RequiredDude type="" levelMin="" levelMax="" quality=""/>
        <RequiredItem type="" quantity=""/>
        <MoneyCost></MoneyCost>
        <Outcome chance="1.0"> <!--ONE OUTCOME MUST ALWAYS HAVE CHANCE = 1.0
            <Text></Text>
            <Mutation></Mutation> 
            <Unlock></Unlock>
            <Permalock></Permalock>
            <UnlockLoc></UnlockLoc>
            <Trait aName="" chance=""/>
            <MoneyReward></MoneyReward>
            <Reward type="" quantity="" chance=""/>
            <RequiredItem type="" quantity=""/>
            <MoneyCost></MoneyCost>
            <ChainReward cName ="" levelMin="0" levelMax="0" increase="0" chanceToIncrease="1.0"/>
            <CombatDude type="" levelMin="" levelMax="" quality="" chance=""/>
            <RequiredDude type="" levelMin="" levelMax="" quality=""/>
            <RewardDude type="" levelMin="" levelMax="" quality="" chance=""/>
            <Heal></Heal>
        </Outcome>
    </Choice>
  </Quest>


Let's go through it line by line. Not because I think anyone will read this, but because I did a ton of work on this and want people to be impressed by it >(




<Quest id="" qName="" Picture="undefined" Type="1" Loc="1" Locked="0">;
  • ID = the numerical placement of the quest in the XML document.
  • qName = the name of the quest
  • Picture = the name of the image that goes along with the quest
  • Type = the style of quest - permanent, one-shot, or instant-fire.
  • Loc = the location in which the quest appears
  • Locked = the "lock points" of the quest. When these reach 0, the quest is now unlocked.

 
<ChainLock cName="name" levelMinReq="" levelMaxReq=""/>
 <Description></Description>
  • ChainLock: This attribute tells me this quest MAY be locked based on story chain progress.
    • cName = The name of the chain in question.
    • levelMinReq = The minimum progress the player must have to see the quest.
    • levelMaxReq = The maximum progress the player must have to see the quest.
    • This element may be repeated as many times as needed.
  • Description: The narrative description of the quest.
 
 <Choice cName="" picture="" traitReq="">
        <Description></Description>
        <RequiredDude type="" levelMin=""/>
        <RequiredItem type="" quantity=""/>
        <MoneyCost></MoneyCost>
  • Choice: Each quest may have up to 3 of these. 
    • cName = the name of the choice
    • traitReq = optional. The name of a requisite character trait in order to unlock this option.
    •  Description = the Narrative description of the Choice
    • RequiredDude: the player must have a dude that meets these specifications in their party to unlock this option.
      • type = the type of Dude.
      • levelMin = the minimum level of the dude.
      • This element may be repeated as many times as needed.
    • RequiredItem: the player must have the required items to unlock this option.
      • type = the type of Item 
      • quantity = the quantity of Item necessary
      • This element may be repeated as many times as needed.
    • MoneyCost: Holds an integer, the amount of money required to unlock this choice. 


 <Outcome chance="1.0">
            <Text></Text>
            <Mutation></Mutation> 

            <Unlock></Unlock>
            <Permalock></Permalock>
            <UnlockLoc></UnlockLoc>
            <Trait aName="" chance=""/>
            <MoneyReward></MoneyReward>
            <Reward type="" quantity="" chance=""/>
            <RequiredItem type="" quantity=""/>
            <MoneyCost></MoneyCost>
            <ChainReward cName ="" levelMin="0" levelMax="0" increase="0" chanceToIncrease="1.0"/>
            <CombatDude type="" levelMin="" levelMax="" quality="" chance=""/>
            <RequiredDude type="" levelMin="" />
            <RewardDude type="" levelMin="" levelMax="" quality="" chance=""/>
            <Heal></Heal>
 </Outcome>

  • Each Choice may have as many Outcomes as needed. 
  • Each Outcome has a "chance" - this is the probability that it will be selected. Probabilities are rolled for on an individual cascading basis, which means at least one outcome must always have a chance of 1.0 (the last outcome, usually). 
  • Text = the narrative text associated with this particular outcome.
  • Mutation = IF the CHOICE has a RequiredDude, this Mutation will be applied to the Dude.
  • Unlock = a series of quest IDs separated by comma. Each quest in the list will be subtracted 1 unlock point.
  • Permalock = a series of quest IDs separated by comma. Each quest in the list will be permanently locked.
  • UnlockLoc = a series of location IDs, separated by comma. Each location in the list will be unlocked.
  • Trait = The trait that will be awarded.
    • aName = the name of the trait.
    • chance = the chance that the trait will be awarded.
  • MoneyReward = the amount of money the player will get for this outcome.
  • Reward = an item reward.
    • type = the type of item being rewarded
    • quantity = the quantity of item being rewarded
    • chance = the chance that that item will be rewarded
    • This element may be repeated as many times as needed.
  • RequiredItem: these items are REMOVED from the player's inventory
    • type = the type of Item 
    • quantity = the quantity of Item necessary
    • This element may be repeated as many times as needed.
  •  MoneyCost: this money is REMOVED from the player's inventory./
  • ChainReward: Progress in a story chain.
    • cName = the name of the story chain
    • levelMin = the lowest this chain can go due to this particular outcome.
    • levelMax = the highest this chain can go due to this particular outcome.
    • increase = the amount of progress the player gains towards this chain. Negative progress is allowed.
    • chanceToIncrease = the chance that the chain progress will increase.
    • This element may be repeated as many times as needed.
  • CombatDude: A Dude you may FIGHT in combat upon SELECTION of the Outcome's CHOICE.
    • type = the type of Dude you are fighting. -1 means RANDOM type of dude.
    • levelMin = the minimum level of the Dude.
    • levelMax = the maximum level of the Dude.
    • quality = the quality of the dude. -1 is random quality.
    • chance = the chance that you will fight the dude.
    • This element may be repeated up to 3 times.
  • RequiredDude: this dude is REMOVED from the player's party.
    • type = the type of Dude.
    • levelMin = the minimum level of the dude.
    • This element may be repeated up to 3 times.
  • RewardDude: this dude is GIVEN to the player.
    • type = the type of Dude.
    • levelMin = the minimum level of the Dude.
    • levelMax = the maximum level of the Dude.
    • quality = the quality of the Dude.
    • chance = the chance that the Dude will be given.
    • This element may be repeated as many times as needed. 
  • Heal: The amount that the player's Dudes will be healed.

No comments:

Post a Comment