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 action to be executed in the 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 action to be executed in the Acquire Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "verifyActions": [
            {
              "action": "[string]Type of action to be executed in the Verify Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "consumeActions": [
            {
              "action": "[string]Type of action to be executed in the Consume Action",
              "request": "[string]JSON string of the request used when executing the action"
            }
          ],
          "failedAcquireActions": [
            {
              "action": "[string]Type of action to be executed in the 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"
    }
  ]
}
TypeConditionRequiredDefaultValue LimitsDescription
versionstring
2019-05-14Format version of master data
groupsList<QuestGroupModel>~ 10 itemsQuest 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.

Model

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.

TypeConditionRequiredDefaultValue LimitsDescription
questGroupModelIdstring
*
~ 1024 charsQuest Group GRN
* Set automatically by the server
namestring
~ 128 charsQuest Group Model name
Quest Group Model-specific name. Specified using alphanumeric characters, hyphens (-), underscores (_), and periods (.).
metadatastring~ 1024 charsMetadata
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.
questsList<QuestModel>[]0 ~ 1000 itemsQuests 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.
challengePeriodEventIdstring~ 1024 charsChallenge 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.

TypeConditionRequiredDefaultValue LimitsDescription
questModelIdstring
*
~ 1024 charsQuest Model GRN
* Set automatically by the server
namestring
~ 128 charsQuest Model name
Quest Model-specific name. Specified using alphanumeric characters, hyphens (-), underscores (_), and periods (.).
metadatastring~ 1024 charsMetadata
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.
contentsList<Contents>[]1 ~ 10 itemsQuest 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.
challengePeriodEventIdstring~ 1024 charsChallenge 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.
firstCompleteAcquireActionsList<AcquireAction>[]0 ~ 10 itemsFirst 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.
verifyActionsList<VerifyAction>[]0 ~ 10 itemsVerify 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.
consumeActionsList<ConsumeAction>[]0 ~ 10 itemsConsume Actions
Consume actions executed as the cost of starting this quest. These are consumed when the quest begins, such as stamina or currency costs.
failedAcquireActionsList<AcquireAction>[]0 ~ 100 itemsFailed Acquire Actions
Acquire actions executed when the quest fails. Used to provide consolation rewards or partial refunds of the quest participation cost upon failure.
premiseQuestNamesList<string>[]0 ~ 10 itemsPrerequisite 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.

TypeConditionRequiredDefaultValue LimitsDescription
metadatastring~ 256 charsMetadata
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.
completeAcquireActionsList<AcquireAction>[]0 ~ 10 itemsComplete 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.
weightint11 ~ 2147483646Draw 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

TypeConditionRequiredDefaultValue LimitsDescription
actionString 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 action to be executed in the Acquire Action
requeststring
~ 524288 charsJSON string of the request used when executing the action

ConsumeAction

Consume Action

TypeConditionRequiredDefaultValue LimitsDescription
actionString 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 action to be executed in the Consume Action
requeststring
~ 524288 charsJSON string of the request used when executing the action

VerifyAction

Verify Action

TypeConditionRequiredDefaultValue LimitsDescription
actionString 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 action to be executed in the Verify Action
requeststring
~ 524288 charsJSON string of the request used when executing the action