As you complete quests, your reputation for that NPC increases - and not just that! Your reputation for the NPCs "house" will also increase. As you gain reputation, you will unlock more quests and better rewards for quests from that house. NPCs from that house will also let you in their homes and give you access to other secret locations.
NotQuests tag system allows you to save data per-player. That's it. Sounds simple, but it's super powerful. You can save integers (= numbers), floats/doubles (= numbers with decimal places), strings (= text) and booleans (= true or false) for each player.
With actions, we can modify the tags and with conditions, we can check the tags (& even do math with them or compare them to other variables and tags).
We have three NPCs: Jon Snow (ID=0), Arya Stark (ID=1) and Cersei Lannister (ID=2). Jon Snow and Arya Stark belong to House Stark. Cerse Lannister belongs to House Lannister.
First let's create a tag called JonSnowReputation. This tag will store the reputation the player has with Jon Snow. It will be an Integer Tag, as we only need full numbers:
/qa/qaAdmin commands for NotQueststagstagsManages player tags.createcreateCreates a new player tag with the selected value type.Integer<type>Value type for the new tag: BOOLEAN, INTEGER, FLOAT, DOUBLE, or STRING.Acceptstag typeExampleIntegerJonSnowReputation<name>Unique name for the tag to create.Acceptstag nameExampleJonSnowReputation
Let's do the same for the other NPCs and houses
/qa/qaAdmin commands for NotQueststagstagsManages player tags.createcreateCreates a new player tag with the selected value type.Integer<type>Value type for the new tag: BOOLEAN, INTEGER, FLOAT, DOUBLE, or STRING.Acceptstag typeExampleIntegerAryaStarkReputation<name>Unique name for the tag to create.Acceptstag nameExampleAryaStarkReputation
/qa/qaAdmin commands for NotQueststagstagsManages player tags.createcreateCreates a new player tag with the selected value type.Integer<type>Value type for the new tag: BOOLEAN, INTEGER, FLOAT, DOUBLE, or STRING.Acceptstag typeExampleIntegerCerseiLannisterReputation<name>Unique name for the tag to create.Acceptstag nameExampleCerseiLannisterReputation
/qa/qaAdmin commands for NotQueststagstagsManages player tags.createcreateCreates a new player tag with the selected value type.Integer<type>Value type for the new tag: BOOLEAN, INTEGER, FLOAT, DOUBLE, or STRING.Acceptstag typeExampleIntegerHouseStarkReputation<name>Unique name for the tag to create.Acceptstag nameExampleHouseStarkReputation
/qa/qaAdmin commands for NotQueststagstagsManages player tags.createcreateCreates a new player tag with the selected value type.Integer<type>Value type for the new tag: BOOLEAN, INTEGER, FLOAT, DOUBLE, or STRING.Acceptstag typeExampleIntegerHouseLannisterReputation<name>Unique name for the tag to create.Acceptstag nameExampleHouseLannisterReputation
Now, let's create some actions which increased the houses reputation by 10 and some which will deduct the reputation by 1 (more info on that later):
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.HouseStarkReputationAdd10<actionName>Name used to save this action.Acceptsaction nameExampleHouseStarkReputationAdd10TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.housestarkreputation<TagName>Integer tag identifier.AcceptstextExamplehousestarkreputationadd<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExampleadd10<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample10
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.HouseStarkReputationDeduct1<actionName>Name used to save this action.Acceptsaction nameExampleHouseStarkReputationDeduct1TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.housestarkreputation<TagName>Integer tag identifier.AcceptstextExamplehousestarkreputationdeduct<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExamplededuct1<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample1
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.HouseLannisterReputationAdd10<actionName>Name used to save this action.Acceptsaction nameExampleHouseLannisterReputationAdd10TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.houselannisterreputation<TagName>Integer tag identifier.AcceptstextExamplehouselannisterreputationadd<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExampleadd10<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample10
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.HouseLannisterReputationDeduct1<actionName>Name used to save this action.Acceptsaction nameExampleHouseLannisterReputationDeduct1TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.houselannisterreputation<TagName>Integer tag identifier.AcceptstextExamplehouselannisterreputationdeduct<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExamplededuct1<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample1
Now let's create the actual actions which will be run when a player completes a quest for a house. For completing a quest for House Stark, the player should get +10 reputation for house stark and -1 reputation for House Lannister (as they don't like seeing you support their rivals):
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.HouseStarkQuestCompleted<actionName>Name used to save this action.Acceptsaction nameExampleHouseStarkQuestCompletedActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.HouseStarkReputationAdd10,HouseLannisterReputationDeduct1<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleHouseStarkReputationAdd10,HouseLannisterReputationDeduct11<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
With this 'Action' action, we can create one action which executes two other actions at the same time. Let's do the same for House Lannister:
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.HouseLannisterQuestCompleted<actionName>Name used to save this action.Acceptsaction nameExampleHouseLannisterQuestCompletedActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.HouseLannisterReputationAdd10,HouseStarkReputationDeduct1<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleHouseLannisterReputationAdd10,HouseStarkReputationDeduct11<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
Actual actions which will be added to the NPCs: More action nesting
But we also want the NPCs individual reputation to increase if you complete a quest for them, don't we? Let's create the final actions for that. First the actions for the reputation:
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.JonSnowReputationAdd5<actionName>Name used to save this action.Acceptsaction nameExampleJonSnowReputationAdd5TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.jonsnowreputation<TagName>Integer tag identifier.AcceptstextExamplejonsnowreputationadd<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExampleadd5<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample5
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.AryaStarkReputationAdd5<actionName>Name used to save this action.Acceptsaction nameExampleAryaStarkReputationAdd5TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.aryastarkreputation<TagName>Integer tag identifier.AcceptstextExamplearyastarkreputationadd<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExampleadd5<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample5
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.CerseiLannisterReputationAdd5<actionName>Name used to save this action.Acceptsaction nameExampleCerseiLannisterReputationAdd5TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.cerseilannisterreputation<TagName>Integer tag identifier.AcceptstextExamplecerseilannisterreputationadd<operator>How to change the number variable: set, add, deduct, multiply, or divide.Acceptsaction operatorExampleadd5<expression>Number expression used as the input value for this variable action.AcceptsnumberExpressionExample5
And now the actual final actions:
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.JonSnowQuestCompleted<actionName>Name used to save this action.Acceptsaction nameExampleJonSnowQuestCompletedActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.HouseStarkQuestCompleted,JonSnowReputationAdd5<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleHouseStarkQuestCompleted,JonSnowReputationAdd51<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.AryaStarkQuestCompleted<actionName>Name used to save this action.Acceptsaction nameExampleAryaStarkQuestCompletedActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.HouseStarkQuestCompleted,AryaStarkReputationAdd5<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleHouseStarkQuestCompleted,AryaStarkReputationAdd51<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
/qa/qaAdmin commands for NotQuestsactionsactionsManages saved actions, inline actions, and action execution.addaddCreates a new saved action.CerseiLannisterQuestCompleted<actionName>Name used to save this action.Acceptsaction nameExampleCerseiLannisterQuestCompletedActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.HouseLannisterQuestCompleted,CerseiLannisterReputationAdd5<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleHouseLannisterQuestCompleted,CerseiLannisterReputationAdd51<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
Awesome! Now we just need to add these last two actions as a reward to the respective quests. We have already created the quests HelpJonSnow, HelpAryaStark and HelpCerseiLannister for that (you should know how to create quests at this point. If not, please read the beginner tutorial first.).
/qa/qaAdmin commands for NotQuestsediteditOpens subcommands for editing a specific quest.HelpJonSnow<quest>Identifier of the quest to edit; use /qa list to see available quests.Acceptsquest nameExampleHelpJonSnowrewardsrewardsManages rewards granted by the selected quest.addaddAdds a reward granted by the selected quest.ActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.JonSnowQuestCompleted<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleJonSnowQuestCompleted1<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
/qa/qaAdmin commands for NotQuestsediteditOpens subcommands for editing a specific quest.HelpAryaStark<quest>Identifier of the quest to edit; use /qa list to see available quests.Acceptsquest nameExampleHelpAryaStarkrewardsrewardsManages rewards granted by the selected quest.addaddAdds a reward granted by the selected quest.ActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.AryaStarkQuestCompleted<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleAryaStarkQuestCompleted1<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
/qa/qaAdmin commands for NotQuestsediteditOpens subcommands for editing a specific quest.HelpCerseiLannister<quest>Identifier of the quest to edit; use /qa list to see available quests.Acceptsquest nameExampleHelpCerseiLannisterrewardsrewardsManages rewards granted by the selected quest.addaddAdds a reward granted by the selected quest.ActionActionExecutes one or more saved actions, optionally multiple times or as a random subset.CerseiLannisterQuestCompleted<actions>Saved action name or comma-separated saved action names to execute.AcceptsstringListExampleCerseiLannisterQuestCompleted1<amount>Number of times to execute the selected saved actions.AcceptsintegerExample1
Voilà, we're done! Try completing those quests and check how your reputation changes:
Here is an example of house you can check your reputation for house stark:
/qa/qaAdmin commands for NotQuestsvariablesvariablesEvaluates NotQuests variables for a player or the command sender.checkcheckDisplays a NotQuests variable's value for a player or the command sender.TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.housestarkreputation<TagName>Integer tag identifier.AcceptstextExamplehousestarkreputation
Let's add some privileges & rewards for our reputation system: Conditions
Example condition which checks if you have at least 50 reputation in house stark - can be used anywhere, for example in Quest requirements, objectives or conditions:
/qa/qaAdmin commands for NotQuestsconditionsconditionsManages saved conditions that can be reused by quests, objectives, and actions.addaddCreates a saved condition.HouseStarkReputation50<conditionName>Name used to save this condition.Acceptscondition nameExampleHouseStarkReputation50TagIntegerTagIntegerReads or changes an integer NotQuests tag on the target player.housestarkreputation<TagName>Integer tag identifier.AcceptstextExamplehousestarkreputationmoreOrEqualThan<operator>How to compare the selected number variable against the expression.Acceptscomparison operatorExamplemoreOrEqualThan50<expression>Number expression to compare with the selected variable value.AcceptsnumberExpressionExample50
To be continued... I'll write this part up when I have time. Feel free to contribute to this tutorial (or any other tutorials) here: Contribute to the docs.