Paste #12503: Pose Reset

Date: 2015/01/01 23:45:30 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


Sitting:
  Type: Assignment
  Actions:
    On Assignment:
      - Trigger Name:Chat State:true
  Interact Scripts:
  - 100 Sitting Listener

Sitting Listener:
  Type: Interact
  Steps:
    1:
      Chat Trigger:
        1:
          Trigger: /sit/
          Script:
            - flag player sitter:<npc>
            - flag player chatter
            - chat "Ok. Where do you want me to sit?"

#1. Fixed spaceing to only be 2 
#2. Moved the other world event here. no need for another entier script for a single event in this case. 
#3. Changed - flag npc sitloc: to - flag <player.flag[sitter]> sitloc:, It it didn't know what npc to flag. 

ChooseBlockListener:
  Type: World
  Events:
    on server start:
    - run timedLoop

    On player Clicks Block:
    - if <player.has_flag[chatter]> {
      # added an if check to make sure it is stairs being clicked on. 
      - if <c.location.material.contains[stairs]> {
        - flag <player.flag[sitter]> sitloc:<context.location.sub[-.5,.5,-.5]>
        - sit <context.location.sub[-.5,.5,-.5]> npc:<player.flag[sitter]>
        - flag <player.flag[sitter]> sitter
        - flag chatter:!
        } else narrate "<red>This is not a seat."
      }

    On npc command:
    - define arg_size <context.args.size>
    - if %arg_size% == 3 {
      - if <context.args.get[2]> == "--assume" {
        - flag <player.selected_npc> posed:<c.args.get[3]> 
        - narrate "You just set an NPC's pose!"
        }
      } 



#removed debug text 
timedLoop:
  type: task
  script:
    - foreach <server.get_npcs_flagged[sitter]> {
      - sit <def[value].flag[sitloc]> npc:<def[value]>
      }
    - foreach <server.get_npcs_flagged[posed]> {
      - pose assume id:<def[value].flag[posed]> npc:<def[value]>
      }
    - wait 50s
    - inject s@timedLoop