Paste #15887: Quest System

Date: 2015/05/20 13:27:30 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


'QuestSystem':
  type: world
  events:  
    on quest command:
    - ^narrate "<white>/quests <dark_gray>(<gray>Shows all current quests<dark_gray>)"
    - ^narrate "<white>/questitems <dark_gray>(<gray>Shows quest-related inventory<dark_gray>)"
    - ^narrate "<white>/questpoints <dark_gray>(<gray>Shows your questpoints balance<dark_gray>)"
    - ^determine fulfilled

    on quests command:
    - if <player.flag[ActiveQuests]> == null {
        - narrate "<red>You don't have any active quests!"
        } else {
        - narrate "<dark_gray>--=<gold>Active quests<dark_gray>=--"
        - ^foreach <player.flag[ActiveQuests].as_list> {
            - if %value% contains Tutorial {
                if %value% contains Tutorial1 narrate "<blue>Raid on Tutorial Island<&co><white> Speak to Guinea outside the ship"
                else if %value% contains Tutorial2 narrate "<blue>Raid on Tutorial Island<&co><white> Kill 10 islanders"
                else if %value% contains Tutorial3 narrate "<blue>Raid on Tutorial Island<&co><white> Speak to Captain Dread"
                else if %value% contains Tutorial4 narrate "<blue>Raid on Tutorial Island<&co><white> Search the ancient stone circle for a skeleton key"
                else if %value% contains Tutorial5 narrate "<blue>Raid on Tutorial Island<&co><white> Return to Captain Dread"
                else if %value% contains Tutorial6 narrate "<blue>Raid on Tutorial Island<&co><white> Collect the skeleton key from the unsearched house"
                else if %value% contains Tutorial7 narrate "<blue>Raid on Tutorial Island<&co><white> Give the skeleton key to Captain Dread"
                else if %value% contains Tutorial8 narrate "<blue>Raid on Tutorial Island<&co><white> Escape from the vault cave"
                else if %value% contains Tutorial9 narrate "<blue>Raid on Tutorial Island<&co><white> Find a way off the island"
                else narrate "<blue>Unknown quest"
                }
            else if %value% contains Rumhole {
                if %value% contains Rumhole01 narrate "<blue>Destination Byzantine<&co><white> Speak to the shipwright"
                else if %value% contains Rumhole02 narrate "<blue>Destination Byzantine<&co><white> Craft a boat"
                else if %value% contains Rumhole03 narrate "<blue>Destination Byzantine<&co><white> Help 5 pirates (<player.flag[PiratesHelped].asint> out of 5 helped)"
                else if %value% contains Rumhole04 narrate "<blue>Destination Byzantine<&co><white> Buy the teleportation scroll from the shipwright"
                else if %value% contains Rumhole05 narrate "<blue>Destination Byzantine<&co><white> Use the teleportation scroll"
                else if %value% contains Rumhole06 narrate "<blue>Fish for Dinner<&co><white> Catch 5 fish for the pirate cook"
                else if %value% contains Rumhole07 narrate "<blue>Ocelot Catcher<&co><white> Collect 5 ocelot pelts for the pirate by the campfire"
                else if %value% contains Rumhole08 narrate "<blue>Up for a Swim<&co><white> Swim to the raft for the pirate's entertainment"
                else if %value% contains Rumhole09 narrate "<blue>Baby's first plunder<&co><white> Search for loot at the villager's house"
                else if %value% contains Rumhole10 narrate "<blue>Baby's first plunder<&co><white> Return to the pirate"
                else if %value% contains Rumhole11 narrate "<blue>Preemptive Strike<&co><white> Kill the alchemist on the western island"
                else if %value% contains Rumhole12 narrate "<blue>Preemptive Strike<&co><white> Return to the pirate"
                else narrate "<blue>Unknown quest"
                }
            else if %value% contains Byzantine {
                if %value% contains Revolution01 narrate "<blue>adslfk<&co><white> SDasdflkjjd"
                else if %value% contains Revolution02 narrate "<blue>adsflkjh<&co><white> Dfa;dlfkj;lj"
                else if %value% contains Byzantine001 narrate "<blue>Lucky Dice<&co><white> Defeat the Gambler 20 times (<player.flag[GamblerWon].asint> out of 20 won)"
                else if %value% contains Byzantine002 narrate "<blue>Lucky Dice<&co><white> Find the Gambler's lucky blue dice"
                else if %value% contains Byzantine003 narrate "<blue>Lucky Dice<&co><white> Win the Gambler's grand price"
                else narrate "<blue>Unknown quest"
                }
            else if %value% contains Shazki {
                if %value% contains Shazki01 narrate "<blue>ShazkiNiggers<&co><white> Speak to Nigger"
                else if %value% contains Shazki02 narrate "<blue>ShzkiNiggersf&co><white> Your mother is a whore"
                else narrate "<blue>Unknown quest"
                }
            else if %value% contains Academy {
                if %value% contains Academy01 narrate "<blue>adsfadsf<&co><white> afdasf
                else if %value% contains Academy02 narrate "<blue>afadsf<&co><white> adsfasf"
                else narrate "<blue>Unknown quest"
                }
            }
        }
    - ^determine fulfilled

    on keys command:
    - narrate "<dark_gray>--=<gold>Keychain<dark_gray>=--"
    - if <player.flag[LesserMysteryKeys]> == null {
        - narrate "<blue> Lesser Mystery Keys <&co> <white>0"
        } else {
        - narrate "<blue>Lesser Mystery Keys <&co> <white><player.flag[LesserMysteryKeys].asint>"
    - if <player.flag[GreaterMysteryKeys]> == null {
        - narrate "<blue>Greater Mystery Keys <&co> <white>0"
        } else {
        - narrate "<blue>Greater Mystery Keys <&co> <white><player.flag[GreaterMysteryKeys].asint>"
    - if <player.flag[SkeletonKeys]> == null {
        - narrate "<blue>.          Skeleton Keys <&co> <white>0"
        } else {
        - narrate "<blue>Skeleton Keys <&co> <white><player.flag[SkeletonKeys].asint>"
    - ^determine fulfilled

    on questitems command:
    - if <player.flag[QuestItems]> == null {
        narrate "<red>You don't have any quest items!"
        } else {
        - narrate "<dark_gray>--=<gold>Quest items<dark_gray>=--"
        - ^foreach <player.flag[QuestItems].as_list> {
            - ^narrate "<blue>%value%"}
        }
    - ^determine fulfilled

    on questpoints command:
    - if <player.flag[QuestPoints]> == null {
        - narrate "<blue>You have <white>0<blue> questpoints!"
        } else {
        - narrate "<blue>You have <white><player.flag[QuestPoints].asint><blue> questpoints!"
    - ^determine fulfilled

    on fart command:
    - if !<player.flag[Farted]> {
        - ^flag player Farted duration:60
        - playeffect location:<player.location> effect:cloud qty:100
        - ^playsound location:<player.location> sound:Ghast_scream2
#        - ^random 4
#        - ^narrate "<blue>Woah, <white><player.name><blue> ate too many beans." targets:<player.location.find.players.within[10]>
#        - ^narrate "<white><player.name><blue> just let one rip!" targets:<player.location.find.players.within[10]>
#        - ^narrate "<blue>Oh shit...<white><player.name><blue> just ripped one out." targets:<player.location.find.players.within[10]>
#        - ^narrate "<blue>Woah, that's a smeller." targets:<player.location.find.players.within[10]>
        } else {
        - narrate "<red>You have to recharge your fart first!"
        }
    - ^determine fulfilled

# To add a quest use: ( - flag ActiveQuests:->:Questname + Description )
# To delete a quest use: ( - flag ActiveQuests:<-:Questname + Description )
# You can add debug: false to any script to make that script not send output to console.
# Denizen debug config option is on by default, /denizen debug

    on player right clicks player:
        - ^if <player.item_in_hand> != i@air queue clear
        - ^if <player.flag[pokeybutton_cooldown]> queue clear
        - ^flag player pokeybutton_cooldown duration:30s
        - narrate player:<context.entity> "<^player.name.display><&b><&o> pokes you."
        - playeffect <context.entity.location> effect:witch_magic qty:50 offset:2
        - playsound <context.entity.location> sound:hurt
        - playsound <context.entity.location> sound:successful_hit