Paste #67771: Slayer Master

Date: 2020/04/20 06:49:47 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


hans:
    type: assignment
    actions:
        on assignment:
        - trigger name:click state:true
        on click:
        - if <player.world.time.period> == day:
            - narrate "<red>Hans<white>: Good day, how can I help you?"
            - stop
        - if <player.world.time.period> == night || dusk:
            - narrate "<red>Hans<white>: Good evening, how can I help you?"
            - stop
        - if <player.world.time.period> == dawn:
            - narrate "<red>Hans<white>: Good morning, how can I help you?"
            - stop
    interact scripts:
    - hans_interact
hans_interact:
    type: interact
    steps:
        1:
            chat trigger:
                1:
                    trigger: "Hi, I've lost my Slayer /Gem/ may I have another?"
                    script:
                    - wait 2s
                    - if <player.has_flag[gemcooldown]>:
                        - narrate "<red>Hans<white>: I just gave out the last one, come back to me later when I have more."
                        - stop
                    - narrate "<red>Hans<white>: Sure, here you go."
                    - give i@slayer_gem
                    - flag player gemcooldown
                    - run gemcooldown
                    - stop
                2:
                    trigger: "Could I have a /new/ assignment?"
                    script:
                    - wait 2s
                    - if <player.has_flag[hasAssignment]>:
                        - narrate "<red>Hans<white>: It appears you already have a task."
                        - stop
                    - narrate "<red>Hans<white>: Yes you may."
                    - flag player hasAssignment
                    - run assigntask
                    - stop
slayerlistener:
    type: world
    events:
        on player kills entity:
        #zombie
        - if <context.entity.name> == zombie && <player.has_flag[hasAssignment]> && <player.has_flag[zombie]>:
        - if <player.has_flag[zombie]> && <player.flag[zombie]> >= 1:
            - flag player zombie:--
            - narrate "<yellow>[<player.flag[zombie]>]"
            - if <player.has_flag[zombie]> && <player.flag[zombie]> == 0:
                - narrate "<green>You have completed your slayer task. Return to a slayer master for a new task."
                - flag player slayerpoints:+:10
                - run clearassignment
                - stop
            - stop
        #skeleton
        - if <context.entity.name> == skeleton && <player.has_flag[hasAssignment]> && <player.has_flag[skeleton]>:
        - if <player.has_flag[skeleton]> && <player.flag[skeleton]> >= 1:
            - flag player skeleton:--
            - narrate "<yellow>[<player.flag[skeleton]>]"
            - if <player.has_flag[skeleton]> && <player.flag[skeleton]> == 0:
                - narrate "<green>You have completed your slayer task. Return to a slayer master for a new task."
                - flag player slayerpoints:+:10
                - run clearassignment
                - stop
            - stop
        #creeper
        - if <context.entity.name> == creeper && <player.has_flag[hasAssignment]> && <player.has_flag[creeper]>:
        - if <player.has_flag[creeper]> && <player.flag[creeper]> >= 1:
            - flag player creeper:--
            - narrate "<yellow>[<player.flag[creeper]>]"
            - if <player.has_flag[creeper]> && <player.flag[creeper]> == 0:
                - narrate "<green>You have completed your slayer task. Return to a slayer master for a new task."
                - flag player slayerpoints:+:10
                - run clearassignment
                - stop
            - stop
gemlistener:
    type: world
    events:
        on player right clicks material:
        - if !<context.item.has_display> || !<context.item.has_lore>:
            - stop
        - if <context.item.display> == "slayer gem" && <context.item.lore.contains_text[slayer]>:
            - run usegem
            - stop
        - stop
usegem:
    type: task
    script:
    - if <player.has_flag[zombie]>:
        - actionbar "<&5>You have <&f><player.flag[zombie]> <&5>zombies left."
        - stop
    - if <player.has_flag[skeleton]>:
        - actionbar "<&5>You have <&f><player.flag[skeleton]> <&5>skeletons left."
        - stop
    - if <player.has_flag[creeper]>:
        - actionbar "<&5>You have <&f><player.flag[creeper]> <&5>creepers left."
        - stop
    - actionbar "<&5>You do not have a current Slayer task!"
    - stop
gemcooldown:
    type: task
    script:
    - wait 5m
    - flag player gemcooldown:!
assigntask:
    type: task
    script:
    - define num <util.random.int[1].to[3]>
    - define count <util.random.int[1].to[5]>
    - if <[num]> == 1:
        - flag player zombie:<[count]>
        - narrate "<red>You have been assigned <white><player.flag[zombie]> <red>Zombies."
        - stop
    - if <[num]> == 2:
        - flag player skeleton:<[count]>
        - narrate "<red>You have been assigned <white><player.flag[skeleton]> <red>Skeletons."
        - stop
    - if <[num]> == 3:
        - flag player creeper:<[count]>
        - narrate "<red>You have been assigned <white><player.flag[creeper]> <red>Creepers."
        - stop
clearassignment:
    type: task
    script:
    - flag player zombie:!
    - flag player creeper:!
    - flag player skeleton:!
    - flag player hasassignment:!
    - wait 2s
    - narrate "<&5>You have <white><player.flag[slayerpoints]> <&5>Slayer points."