Paste #16009: Stablemaster

Date: 2015/05/30 09:04:43 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


npcchat:
    type: format
    format: "<red><npc.name>: <white><text>"

StableWS:
    type: world
    events:
        on player join:
            - if <player.has_flag[haveHorse]> {
                - inject locally HorseRes
            }
        on player quits:
            - if <player.has_flag[haveHorse]> {
                - ^execute as_server "npc sel <player.flag[horse].replace[n@]>"
                - ^execute as_server "npc despawn"
            }
        HorseRez:
            - if <player.has_flag[haveHorse]> {
                - ^execute as_server "npc spawn <player.flag[haveHorse].replace[n@]>"
                - ^execute as_server "npc sel <player.flag[haveHorse].replace[n@]>"
                - ^execute as_server "npc move location:<player.location>"
            }

StableShop:
    type: assignment
    debug: false
    default constants:
        HorseCost: 500
    actions:
        on assignment:
        - trigger name:click state:true
        - trigger name:chat state:true
    interact scripts:
    - 10 Stableman

Stableman:
    type: interact
    steps:
        1:
            click trigger:
                script:
                - flag player haveHorse:!
                - if <player.has_flag[haveHorse]> {
                    - narrate format:npcchat "You already have a horse, Come buy another if it dies."
                } else {
                    - narrate format:npcchat "Hello <player.name>."
                    - wait 0.5
                    - narrate format:npcchat "Would you like to buy a horse for $500?"
                    - wait 0.2
                    - narrate "Say Yes or No."
                }
            chat trigger:
                1:
                    trigger: /Yes/, I'll take a horse.
                    script:
                        - if <player.money> < <npc.constant[HorseCost]> {
                            - narrate format:npcchat "You don't have enough money to buy a horse."
                            - wait 0.2
                            - narrate format:npcchat "Come back when you have enough."
                            - disengage
                            - zap step:2
                        } else {
                            - take money qty:<npc.constant[HorseCost]>
                            - create horse <player.name>'s Horse <player.location> save:myhorse
                            - flag player haveHorse:<entry[myhorse].created_npc>
                            - ^execute as_server "npc select <player.flag[haveHorse].replace[n@]>"
                            - ^execute as_server "npc owner <player.name>"
                            - ^execute as_server "npc vulnerable"
                        }
                2:
                    trigger: /No/, I don't need a horse right now.
                    script:
                        - random {
                            - narrate format:npcchat "Ok, come again soon!"
                            - narrate format:npcchat "No problem, you're welcome back any time!"
                            - narrate format:npcchat "That's fine, now beat it!"
                            }
                        - zap step:2

TheHorse:
    type: assignment
    debug: false
    Actions:
        on death:
            - flag player haveHorse:!
            - ^execute as_server "npc remove <player.flag[haveHorse].replace[n@]>"

ActionTest:
  type: assignment
  actions:
    on assignment:
    - trait state:true health
    on death:
    - announce "Test!"