local story = { variables = { clickCount = { startValue = 0, temporary = true -- resets on Gossip Hello }, clickCountWithoutReset = { startValue = 0 -- Will stay as long as the story is loaded }, randomChoice = { startValue = 0, temporary = true }, setFromScript = { startValue = 0 -- Temporary would not make sense here } }, [1] = { text = [[Player name: $N Player Level: $L Player Race: $R Player Class: $C Player Gender based: $G(Male:Female) Player Target Name: $T Player Guild name: $H Player Guild rank: $I Player Zone: $Z Player Area: $A Creature name: $CN SetFromScript: $setFromScript]], options = { { text = [[Option 1]], next = 2 }, { text = [[Option 2]], next = 3 }, { text = [[This will not progress the story]], next = 4, onSelect = function(story, player, creature) return false; -- Will stop story progress end }, { text = [[Go to Clickcounter]], next = 5 }, { text = [[Give NPC Item]], next = 4, onSelect = function(story, player, creature) if player:HasItem(12345, 1) then -- Always recheck, player can e.g. trade the item while Gossip is open player:RemoveItem(12345, 1); else return false; end end, condition = function(story, player, creature) return player:HasItem(12345, 1); end }, { text = [[Get a random choice]], next = 6, onSelect = function(story, player, creature) story.variables.randomChoice.value = math.random(0, 1); end }, { text = [[Unregister Story]], onSelect = function(story, player, creature) UnregisterStory(creature:GetEntry()); end }, }, }, [2] = { text = [[You picked option 1.]], options = { { text = [[Jump to option 2 anyway]], next = 3 } } }, [3] = { text = [[You picked option 2.]], options = { { text = [[Go to id 4]], next = 4 } } }, [4] = { text = [[You reached the end]], options = { { text = [[Go back to start]], next = 1 } } }, [5] = { text = [[Clickcount: $clickCount Clickcount without reset: $clickCountWithoutReset]], options = { { text = [[Increase Clickcount]], next = 5, onSelect = function(story, player, creature) story.variables.clickCount.value = story.variables.clickCount.value + 1; story.variables.clickCountWithoutReset.value = story.variables.clickCountWithoutReset.value + 1; end }, { text = [[Clickcounter reached 5!]], next = 5, onSelect = function(story, player, creature) player:SendUnitSay("Clickcounter reached 5!", 0); end, condition = function(story, player, creature) return story.variables.clickCount.value >= 5; end }, { text = [[Reset All Temporary Story Variables]], next = 5, onSelect = function(story, player, creature) story:ResetTemporary(); end, condition = function(story, player, creature) return story.variables.clickCount.value >= 5; end }, { text = [[Reset All Story Variables]], next = 5, onSelect = function(story, player, creature) story:Reset(); end, condition = function(story, player, creature) return story.variables.clickCount.value >= 5; end }, { text = [[Go Back]], next = 1 } } }, [6] = { text = [[Here's your random choice!]], options = { { text = [[Random Choice 1]], next = 1, condition = function(story, player, creature) return story.variables.randomChoice.value == 0; end }, { text = [[Random Choice 2]], next = 1, condition = function(story, player, creature) return story.variables.randomChoice.value == 1; end } } } }; RegisterStory(3431, story); -- Don't forget to give that creature the gossip npcflag (1) in the database SetStoryVariableValue(3431, "setFromScript", 1234); -- We set a variable value from outside