Paste #39839: Untitled Paste

Date: 2017/02/11 00:52:02 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


# for Denizen 0.9
"Wanderer":
    type: assignment

    default constants:
        Searchwidth: 4
        Searchlength: 10
        Searchlengthmin: 5
        Retries: 4
        Pathmaterial: 'WOOL'

    actions:
        on spawn:
            - trigger name:click toggle:false
            - trigger name:chat toggle:false
            - trigger name:proximity toggle:false
            - ^flag npc "wander_spawned:true"
            - ^flag npc "wander_attention:false"
            - ^flag npc "wander_defaultx:<npc.location.x>"
            - ^flag npc "wander_defaultz:<npc.location.z>"
            - ^flag npc "wander_defaulty:<npc.location.y>"
            - ^flag npc "wander_currentdir:north"
            - ^flag npc "wander_triescounter:0"
            - ^inject "s@wander_choosedirection"
        on despawn:
            - ^flag npc "wander_spawned:false"

        on complete navigation:
            - ^if "<flag.n:wander_currentdir>" == "north" inject "s@wander_scannorth"
              else if "<flag.n:wander_currentdir>" == "east" inject "s@wander_scaneast"
              else if "<flag.n:wander_currentdir>" == "west" inject "s@wander_scanwest"
              else if "<flag.n:wander_currentdir>" == "south" inject "s@wander_scansouth"

        on begin navigation:

"wander_choosedirection":
    type: task

    script:
    - ^flag npc "wander_triescounter:0"
    - ^flag npc "wander_defaultx:<npc.location.x>"
    - ^flag npc "wander_defaultz:<npc.location.z>"
    - ^flag npc "wander_defaulty:<npc.location.y>"
    - ^if "<flag.n:wander_spawned>" == "false" inject "s@wander_despawn"
      else inject "s@wander_randomdir"

"wander_randomdir":
    type: task

    script:
    - ^flag npc "wander_triescounter:0"
    - ^if <flag.n:wander_currentdir> == 'north' inject "s@wander_wasnorthsouth"
      else if <flag.n:wander_currentdir> == 'east' inject "s@wander_waseastwest"
      else if <flag.n:wander_currentdir> == 'west' inject "s@wander_waseastwest"
      else if <flag.n:wander_currentdir> == 'south' inject "s@wander_wasnorthsouth"

"wander_wasnorthsouth":
    type: task

    script:
    - ^random 2
    - ^inject "s@wander_scaneast"
    - ^inject "s@wander_scanwest"

"wander_waseastwest":
    type: task

    script:
    - ^random 2
    - ^inject "s@wander_scannorth"
    - ^inject "s@wander_scansouth"


#North is -z
"wander_scannorth":
    type: task

    script:
    - ^flag npc "wander_currentdir:north"
    - ^flag npc "wander_defaultx:<npc.location.x>"
    - ^flag npc "wander_defaultz:<npc.location.z>"
    - ^flag npc "wander_defaulty:<npc.location.y>"
    - ^flag npc "wander_randomxA:<util.random.int[0].to[<cons:Searchwidth>]>"
    - ^flag npc "wander_randomzA:<util.random.int[<cons:Searchlengthmin>].to[<cons:Searchlength>]>"
    - ^flag npc "wander_randomposxA:<flag.n:wander_defaultx>"
    - ^random 2
    - ^flag npc "wander_randomposxA:-:<flag.n:wander_randomxA>"
    - ^flag npc "wander_randomposxA:+:<flag.n:wander_randomxA>"
    - ^flag npc "wander_randomposxA:<npc.flag[wander_randomposxA].asint>"
    - ^flag npc "wander_randomposzA:<flag.n:wander_defaultz>"
    - ^flag npc "wander_randomposzA:-:<flag.n:wander_randomzA>"
    - ^flag npc "wander_randomposzA:<npc.flag[wander_randomposzA].asint>"
    - ^flag npc "wander_blockchecky:<flag.n:wander_defaulty>"
    - ^flag npc "wander_blockchecky:-:1"
    - ^flag npc "wander_blockchecky:<npc.flag[wander_blockchecky].asint>"
    - ^if "<location[<flag.n:wander_randomposxA>,<flag.n:wander_blockchecky>,<flag.n:wander_randomposzA>,<npc.location.world.name>].block.material.bukkit_enum>" == '<cons:Pathmaterial>'
      inject "s@wander_walknorth"
      else if "<flag.n:wander_triescounter>" >= <cons:Retries> inject "s@wander_choosedirection"
      else inject "s@wander_tryagainnorth"

"wander_walknorth":
    type: task

    script:
    - ^walkto "location:<flag.n:wander_randomposxA>,<flag.n:wander_defaulty>,<flag.n:wander_randomposzA>,<npc.location.world.name>"

"wander_tryagainnorth":
    type: task

    script:
    - ^flag npc "wander_triescounter:+:1"
    - ^flag npc "wander_triescounter:<npc.flag[wander_triescounter].asint>"
    - ^inject "s@wander_scannorth"

#East
"wander_scaneast":
    type: task

    script:
    - ^flag npc "wander_currentdir:east"
    - ^flag npc "wander_defaultx:<npc.location.x>"
    - ^flag npc "wander_defaultz:<npc.location.z>"
    - ^flag npc "wander_defaulty:<npc.location.y>"
    - ^flag npc "wander_randomzA:<util.random.int[0].to[<cons:Searchwidth>]>"
    - ^flag npc "wander_randomxA:<util.random.int[<cons:Searchlengthmin>].to[<cons:Searchlength>]>"
    - ^flag npc "wander_randomposxA:<flag.n:wander_defaultx>"
    - ^flag npc "wander_randomposxA:+:<flag.n:wander_randomxA>"
    - ^flag npc "wander_randomposxA:<npc.flag[wander_randomposxA].asint>"
    - ^flag npc "wander_randomposzA:<flag.n:wander_defaultz>"
    - ^random 2
    - ^flag npc "wander_randomposzA:+:<flag.n:wander_randomzA>"
    - ^flag npc "wander_randomposzA:-:<flag.n:wander_randomzA>"
    - ^flag npc "wander_randomposzA:<npc.flag[wander_randomposzA].asint>"
    - ^flag npc "wander_blockchecky:<flag.n:wander_defaulty>"
    - ^flag npc "wander_blockchecky:-:1"
    - ^flag npc "wander_blockchecky:<npc.flag[wander_blockchecky].asint>"
    - ^if "<location[<flag.n:wander_randomposxA>,<flag.n:wander_blockchecky>,<flag.n:wander_randomposzA>,<npc.location.world.name>].block.material.bukkit_enum>" == '<cons:Pathmaterial>'
      inject "s@wander_walkeast"
      else if "<flag.n:wander_triescounter>" >= <cons:Retries> inject "s@wander_choosedirection"
      else inject "s@wander_tryagaineast"

"wander_walkeast":
    type: task

    script:
    - ^walkto "location:<flag.n:wander_randomposxA>,<flag.n:wander_defaulty>,<flag.n:wander_randomposzA>,<npc.location.world.name>"

"wander_tryagaineast":
    type: task

    script:
    - ^flag npc "wander_triescounter:+:1"
    - ^flag npc "wander_triescounter:<npc.flag[wander_triescounter].asint>"
    - ^inject "s@wander_scaneast"

#West
"wander_scanwest":
    type: task

    script:
    - ^flag npc "wander_currentdir:west"
    - ^flag npc "wander_defaultx:<npc.location.x>"
    - ^flag npc "wander_defaultz:<npc.location.z>"
    - ^flag npc "wander_defaulty:<npc.location.y>"
    - ^flag npc "wander_randomzA:<util.random.int[0].to[<cons:Searchwidth>]>"
    - ^flag npc "wander_randomxA:<util.random.int[<cons:Searchlengthmin>].to[<cons:Searchlength>]>"
    - ^flag npc "wander_randomposxA:<flag.n:wander_defaultx>"
    - ^flag npc "wander_randomposxA:-:<flag.n:wander_randomxA>"
    - ^flag npc "wander_randomposxA:<npc.flag[wander_randomposxA].asint>"
    - ^flag npc "wander_randomposzA:<flag.n:wander_defaultz>"
    - ^random 2
    - ^flag npc "wander_randomposzA:-:<flag.n:wander_randomzA>"
    - ^flag npc "wander_randomposzA:+:<flag.n:wander_randomzA>"
    - ^flag npc "wander_randomposzA:<npc.flag[wander_randomposzA].asint>"
    - ^flag npc "wander_blockchecky:<flag.n:wander_defaulty>"
    - ^flag npc "wander_blockchecky:-:1"
    - ^flag npc "wander_blockchecky:<npc.flag[wander_blockchecky].asint>"
    - ^if "<location[<flag.n:wander_randomposxA>,<flag.n:wander_blockchecky>,<flag.n:wander_randomposzA>,<npc.location.world.name>].block.material.bukkit_enum>" == '<cons:Pathmaterial>'
      inject "s@wander_walkwest"
      else if "<flag.n:wander_triescounter>" >= <cons:Retries> inject "s@wander_choosedirection"
      else inject "s@wander_tryagainwest"

"wander_walkwest":
    type: task

    script:
    - ^walkto "location:<flag.n:wander_randomposxA>,<flag.n:wander_defaulty>,<flag.n:wander_randomposzA>,<npc.location.world.name>"

"wander_tryagainwest":
    type: task

    script:
    - ^flag npc "wander_triescounter:+:1"
    - ^flag npc "wander_triescounter:<npc.flag[wander_triescounter].asint>"
    - ^inject "s@wander_scanwest"

#South
"wander_scansouth":
    type: task

    script:
    - ^flag npc "wander_currentdir:south"
    - ^flag npc "wander_defaultx:<npc.location.x>"
    - ^flag npc "wander_defaultz:<npc.location.z>"
    - ^flag npc "wander_defaulty:<npc.location.y>"
    - ^flag npc "wander_randomxA:<util.random.int[0].to[<cons:Searchwidth>]>"
    - ^flag npc "wander_randomzA:<util.random.int[<cons:Searchlengthmin>].to[<cons:Searchlength>]>"
    - ^flag npc "wander_randomposxA:<flag.n:wander_defaultx>"
    - ^random 2
    - ^flag npc "wander_randomposxA:-:<flag.n:wander_randomxA>"
    - ^flag npc "wander_randomposxA:+:<flag.n:wander_randomxA>"
    - ^flag npc "wander_randomposxA:<npc.flag[wander_randomposxA].asint>"
    - ^flag npc "wander_randomposzA:<flag.n:wander_defaultz>"
    - ^flag npc "wander_randomposzA:+:<flag.n:wander_randomzA>"
    - ^flag npc "wander_randomposzA:<npc.flag[wander_randomposzA].asint>"
    - ^flag npc "wander_blockchecky:<flag.n:wander_defaulty>"
    - ^flag npc "wander_blockchecky:-:1"
    - ^flag npc "wander_blockchecky:<npc.flag[wander_blockchecky].asint>"
    - ^if "<location[<flag.n:wander_randomposxA>,<flag.n:wander_blockchecky>,<flag.n:wander_randomposzA>,<npc.location.world.name>].block.material.bukkit_enum>" == '<cons:Pathmaterial>'
      inject "s@wander_walksouth"
      else if "<flag.n:wander_triescounter>" >= <cons:Retries> inject "s@wander_choosedirection"
      else inject "s@wander_tryagainsouth"

"wander_walksouth":
    type: task

    script:
    - ^walkto "location:<flag.n:wander_randomposxA>,<flag.n:wander_defaulty>,<flag.n:wander_randomposzA>,<npc.location.world.name>"

"wander_tryagainsouth":
    type: task

    script:
    - ^flag npc "wander_triescounter:+:1"
    - ^flag npc "wander_triescounter:<npc.flag[wander_triescounter].asint>"
    - ^inject "s@wander_scansouth"
#East is +x

"wander_despawn":
    type: task

    script:
    - chat 'bye'