Paste #16028: Stablemaster

Date: 2015/05/30 20:40:51 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:
                - 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 <blue>Yes <white>or <blue>No<white>."
                }
            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."
                        } else {
                            - take money qty:<npc.constant[HorseCost]>
                            - create horse myhorse <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 rename <player.name>'s horse"
                            - ^execute as_server "npc owner <player.name>"
                            - ^execute as_server "npc vulnerable"
                            - ^execute as_server "npc assign --set TheHorse"
                            - ^execute as_server "npc controllable"
                            - give saddle to:<npc.inventory> slot:1
                            - wait 0.5
                            - ^execute as_server "citizens save"
                        }
                        - disengage
                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!"
                            }
                        - disengage

TheHorse:
    type: assignment
    debug: false
    actions:
        on assignment:
            - trait state:true health
        on death:
            - flag <npc.owner> haveHorse:!
            - wait 1t
            - remove <npc>