GS2-Quest Master Data Reference

Reference for the master data format and the models to be imported

Master Data Format

{
  "version": "2019-05-14",
  "groups": [
    {
      "name": "[string]Quest Group Model name",
      "metadata": "[string?]Metadata",
      "quests": [
        {
          "questModelId": "[string]Quest Model GRN",
          "name": "[string]Quest Model name",
          "metadata": "[string?]Metadata",
          "contents": [
            {
              "metadata": "[string?]Metadata",
              "completeAcquireActions": [
                {
                  "action": "[string]Type of Acquire Action",
                  "request": "[string]JSON string of the request used when executing the action"
                }
              ],
              "weight": "[int]Draw Weight"
            }
          ],
          "challengePeriodEventId": "[string?]Challenge Period Event GRN",
          "firstCompleteAcquireActions": [
            {
              "action": "[string]Type of Acquire Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "verifyActions": [
            {
              "action": "[string]Type of Verify Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "consumeActions": [
            {
              "action": "[string]Type of Consume Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "failedAcquireActions": [
            {
              "action": "[string]Type of Acquire Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "premiseQuestNames": [
            "[string]Quest Model name"
          ]
        }
      ],
      "challengePeriodEventId": "[string?]Challenge Period Event GRN"
    }
  ]
}
Type Condition Required Default Value Limits Description
version string
2019-05-14 Format version of master data
groups List<QuestGroupModel> ~ 10 items Quest Group Model
A Quest Group is an entity for grouping multiple quests, and only one quest progression can be executed simultaneously within the group.
This means that if you need to be able to progress quests in parallel, you must separate the groups.

Models

QuestGroupModel

Quest Group Model

A Quest Group is an entity for grouping multiple quests, and only one quest progression can be executed simultaneously within the group. This means that if you need to be able to progress quests in parallel, you must separate the groups.

Type Condition Required Default Value Limits Description
questGroupModelId string
*
~ 1024 chars Quest Group GRN
* Set automatically by the server
name string
~ 128 chars Quest Group Model name
Quest Group Model-specific name. Specified using alphanumeric characters, hyphens (-), underscores (_), and periods (.).
metadata string ~ 1024 chars Metadata
Arbitrary values can be set in the metadata.
Since they do not affect GS2’s behavior, they can be used to store information used in the game.
quests List<QuestModel> [] 0 ~ 1000 items Quests belonging to the group
List of quest models that belong to this quest group. Only one quest within the group can be in progress at a time.
challengePeriodEventId string ~ 1024 chars Challenge Period Event GRN
GS2-Schedule event GRN that sets the time period during which quests in this group can be attempted. When specified, quests in this group can only be started while the event is active.

QuestModel

Quest Model

A Quest Model is an entity that defines the cost required to start a quest and the rewards obtained upon completion.

The reward obtained upon completion of the quest can have multiple variations and can be drawn at the start of the quest. For example, the same content can be used to manage the clear flag of a quest, but two types of content can be prepared based on whether or not a rare monster appears.

Type Condition Required Default Value Limits Description
questModelId string
*
~ 1024 chars Quest Model GRN
* Set automatically by the server
name string
~ 128 chars Quest Model name
Quest Model-specific name. Specified using alphanumeric characters, hyphens (-), underscores (_), and periods (.).
metadata string ~ 1024 chars Metadata
Arbitrary values can be set in the metadata.
Since they do not affect GS2’s behavior, they can be used to store information used in the game.
contents List<Contents> [] 1 ~ 10 items Quest content variations
List of content variations for this quest. When the quest starts, one variation is selected by weighted random draw. Each variation can define different completion rewards, allowing different outcomes (e.g., rare monster appearances) for the same quest.
challengePeriodEventId string ~ 1024 chars Challenge Period Event GRN
GS2-Schedule event GRN that sets the time period during which this quest can be attempted. When specified, the quest can only be started while the event is active. This setting takes precedence over the quest group’s challenge period.
firstCompleteAcquireActions List<AcquireAction> [] 0 ~ 10 items First Completion Acquire Actions
List of acquire actions executed only on the first completion of this quest. These are bonus rewards granted in addition to the normal completion rewards, useful for first-clear bonuses.
verifyActions List<VerifyAction> [] 0 ~ 10 items List of Verify Actions
List of verify actions that serve as preconditions for starting this quest. All verify actions must pass before the quest can begin. Used to enforce requirements such as level checks or item possession.
consumeActions List<ConsumeAction> [] 0 ~ 10 items List of Acquire Actions
Consume actions executed as the cost of starting this quest. These are consumed when the quest begins, such as stamina or currency costs.
failedAcquireActions List<AcquireAction> [] 0 ~ 100 items Failed Acquire Actions
Acquire actions executed when the quest fails. Used to provide consolation rewards or partial refunds of the quest participation cost upon failure.
premiseQuestNames List<string> [] 0 ~ 10 items Prerequisite Quest Names
List of quest names within the same group that must be completed before this quest can be attempted. Used to create sequential quest chains or branching quest paths.

Contents

Contents

Represents one variation of quest content. Each quest can have multiple content variations with different rewards, and one is selected by weighted random draw at quest start. The metadata supports template variable substitution with user ID and config values.

Type Condition Required Default Value Limits Description
metadata string ~ 256 chars Metadata
Arbitrary values can be set in the metadata.
Since they do not affect GS2’s behavior, they can be used to store information used in the game.
completeAcquireActions List<AcquireAction> [] 0 ~ 10 items Complete Acquire Actions
Acquire actions executed as rewards when the quest is completed with this content variation. These define the actual rewards the player receives upon clearing the quest.
weight int 1 1 ~ 2147483646 Draw Weight
The relative weight used in the random selection of this content variation at quest start. Higher values increase the probability of this variation being selected. For example, a variation with weight 9 is 9 times more likely to be selected than one with weight 1.

AcquireAction

Acquire Action

Type Condition Required Default Value Limits Description
action string (enum)
enum {
"Gs2AdReward:AcquirePointByUserId",
"Gs2Dictionary:AddEntriesByUserId",
"Gs2Enchant:ReDrawBalanceParameterStatusByUserId",
"Gs2Enchant:SetBalanceParameterStatusByUserId",
"Gs2Enchant:ReDrawRarityParameterStatusByUserId",
"Gs2Enchant:AddRarityParameterStatusByUserId",
"Gs2Enchant:SetRarityParameterStatusByUserId",
"Gs2Enhance:DirectEnhanceByUserId",
"Gs2Enhance:UnleashByUserId",
"Gs2Enhance:CreateProgressByUserId",
"Gs2Exchange:ExchangeByUserId",
"Gs2Exchange:IncrementalExchangeByUserId",
"Gs2Exchange:CreateAwaitByUserId",
"Gs2Exchange:AcquireForceByUserId",
"Gs2Exchange:SkipByUserId",
"Gs2Experience:AddExperienceByUserId",
"Gs2Experience:SetExperienceByUserId",
"Gs2Experience:AddRankCapByUserId",
"Gs2Experience:SetRankCapByUserId",
"Gs2Experience:MultiplyAcquireActionsByUserId",
"Gs2Formation:AddMoldCapacityByUserId",
"Gs2Formation:SetMoldCapacityByUserId",
"Gs2Formation:AcquireActionsToFormProperties",
"Gs2Formation:SetFormByUserId",
"Gs2Formation:AcquireActionsToPropertyFormProperties",
"Gs2Friend:UpdateProfileByUserId",
"Gs2Grade:AddGradeByUserId",
"Gs2Grade:ApplyRankCapByUserId",
"Gs2Grade:MultiplyAcquireActionsByUserId",
"Gs2Guild:IncreaseMaximumCurrentMaximumMemberCountByGuildName",
"Gs2Guild:SetMaximumCurrentMaximumMemberCountByGuildName",
"Gs2Idle:IncreaseMaximumIdleMinutesByUserId",
"Gs2Idle:SetMaximumIdleMinutesByUserId",
"Gs2Idle:ReceiveByUserId",
"Gs2Inbox:SendMessageByUserId",
"Gs2Inventory:AddCapacityByUserId",
"Gs2Inventory:SetCapacityByUserId",
"Gs2Inventory:AcquireItemSetByUserId",
"Gs2Inventory:AcquireItemSetWithGradeByUserId",
"Gs2Inventory:AddReferenceOfByUserId",
"Gs2Inventory:DeleteReferenceOfByUserId",
"Gs2Inventory:AcquireSimpleItemsByUserId",
"Gs2Inventory:SetSimpleItemsByUserId",
"Gs2Inventory:AcquireBigItemByUserId",
"Gs2Inventory:SetBigItemByUserId",
"Gs2JobQueue:PushByUserId",
"Gs2Limit:CountDownByUserId",
"Gs2Limit:DeleteCounterByUserId",
"Gs2LoginReward:DeleteReceiveStatusByUserId",
"Gs2LoginReward:UnmarkReceivedByUserId",
"Gs2Lottery:DrawByUserId",
"Gs2Lottery:ResetBoxByUserId",
"Gs2Mission:RevertReceiveByUserId",
"Gs2Mission:IncreaseCounterByUserId",
"Gs2Mission:SetCounterByUserId",
"Gs2Money:DepositByUserId",
"Gs2Money:RevertRecordReceipt",
"Gs2Money2:DepositByUserId",
"Gs2Quest:CreateProgressByUserId",
"Gs2Schedule:TriggerByUserId",
"Gs2Schedule:ExtendTriggerByUserId",
"Gs2Script:InvokeScript",
"Gs2SerialKey:RevertUseByUserId",
"Gs2SerialKey:IssueOnce",
"Gs2Showcase:DecrementPurchaseCountByUserId",
"Gs2Showcase:ForceReDrawByUserId",
"Gs2SkillTree:MarkReleaseByUserId",
"Gs2Stamina:RecoverStaminaByUserId",
"Gs2Stamina:RaiseMaxValueByUserId",
"Gs2Stamina:SetMaxValueByUserId",
"Gs2Stamina:SetRecoverIntervalByUserId",
"Gs2Stamina:SetRecoverValueByUserId",
"Gs2StateMachine:StartStateMachineByUserId",
}
Type of Acquire Action
request string
~ 524288 chars JSON string of the request used when executing the action

ConsumeAction

Consume Action

Type Condition Required Default Value Limits Description
action string (enum)
enum {
"Gs2AdReward:ConsumePointByUserId",
"Gs2Dictionary:DeleteEntriesByUserId",
"Gs2Enhance:DeleteProgressByUserId",
"Gs2Exchange:DeleteAwaitByUserId",
"Gs2Experience:SubExperienceByUserId",
"Gs2Experience:SubRankCapByUserId",
"Gs2Formation:SubMoldCapacityByUserId",
"Gs2Grade:SubGradeByUserId",
"Gs2Guild:DecreaseMaximumCurrentMaximumMemberCountByGuildName",
"Gs2Idle:DecreaseMaximumIdleMinutesByUserId",
"Gs2Inbox:OpenMessageByUserId",
"Gs2Inbox:DeleteMessageByUserId",
"Gs2Inventory:ConsumeItemSetByUserId",
"Gs2Inventory:ConsumeSimpleItemsByUserId",
"Gs2Inventory:ConsumeBigItemByUserId",
"Gs2JobQueue:DeleteJobByUserId",
"Gs2Limit:CountUpByUserId",
"Gs2LoginReward:MarkReceivedByUserId",
"Gs2Mission:ReceiveByUserId",
"Gs2Mission:BatchReceiveByUserId",
"Gs2Mission:DecreaseCounterByUserId",
"Gs2Mission:ResetCounterByUserId",
"Gs2Money:WithdrawByUserId",
"Gs2Money:RecordReceipt",
"Gs2Money2:WithdrawByUserId",
"Gs2Money2:VerifyReceiptByUserId",
"Gs2Quest:DeleteProgressByUserId",
"Gs2Ranking2:CreateGlobalRankingReceivedRewardByUserId",
"Gs2Ranking2:CreateClusterRankingReceivedRewardByUserId",
"Gs2Schedule:DeleteTriggerByUserId",
"Gs2SerialKey:UseByUserId",
"Gs2Showcase:IncrementPurchaseCountByUserId",
"Gs2SkillTree:MarkRestrainByUserId",
"Gs2Stamina:DecreaseMaxValueByUserId",
"Gs2Stamina:ConsumeStaminaByUserId",
}
Type of Consume Action
request string
~ 524288 chars JSON string of the request used when executing the action

VerifyAction

Verify Action

Type Condition Required Default Value Limits Description
action string (enum)
enum {
"Gs2Dictionary:VerifyEntryByUserId",
"Gs2Distributor:IfExpressionByUserId",
"Gs2Distributor:AndExpressionByUserId",
"Gs2Distributor:OrExpressionByUserId",
"Gs2Enchant:VerifyRarityParameterStatusByUserId",
"Gs2Experience:VerifyRankByUserId",
"Gs2Experience:VerifyRankCapByUserId",
"Gs2Grade:VerifyGradeByUserId",
"Gs2Grade:VerifyGradeUpMaterialByUserId",
"Gs2Guild:VerifyCurrentMaximumMemberCountByGuildName",
"Gs2Guild:VerifyIncludeMemberByUserId",
"Gs2Inventory:VerifyInventoryCurrentMaxCapacityByUserId",
"Gs2Inventory:VerifyItemSetByUserId",
"Gs2Inventory:VerifyReferenceOfByUserId",
"Gs2Inventory:VerifySimpleItemByUserId",
"Gs2Inventory:VerifyBigItemByUserId",
"Gs2Limit:VerifyCounterByUserId",
"Gs2Matchmaking:VerifyIncludeParticipantByUserId",
"Gs2Mission:VerifyCompleteByUserId",
"Gs2Mission:VerifyCounterValueByUserId",
"Gs2Ranking2:VerifyGlobalRankingScoreByUserId",
"Gs2Ranking2:VerifyClusterRankingScoreByUserId",
"Gs2Ranking2:VerifySubscribeRankingScoreByUserId",
"Gs2Schedule:VerifyTriggerByUserId",
"Gs2Schedule:VerifyEventByUserId",
"Gs2SerialKey:VerifyCodeByUserId",
"Gs2Stamina:VerifyStaminaValueByUserId",
"Gs2Stamina:VerifyStaminaMaxValueByUserId",
"Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId",
"Gs2Stamina:VerifyStaminaRecoverValueByUserId",
"Gs2Stamina:VerifyStaminaOverflowValueByUserId",
}
Type of Verify Action
request string
~ 524288 chars JSON string of the request used when executing the action