Paste #53878: Untitled Paste

Date: 2019/04/17 15:01:23 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


##Section 1: Saves bed locations in a list called beds
#Use the function View_Bed_List to get a list of locations for the beds. Also shows
#the list size.
##Section 2: Manages the NPC bed time behavior.
#To change an NPC's bed time, select the NPC.
#/npc select name
#Then set the bedtime and wake time variables.
#Time works between 0-24000
#Time: https://www.digminecraft.com/game_commands/time_set_day.php
#/ex flag <player.selected_npc> wakeTime:0
#/ex flag <player.selected_npc> bedTime:12000
#default values are 0 for wakeTime and 12000 for bedtime.

###########################
## Section 1 : Bed List
###########################

#Tag the bed's location when placed.
#Remove the bed's location when destroyed.

Red_Bed_Tag:
  type: world
  events:
    on player places red_bed:
      - narrate "Red Bed placed!"
      - flag server beds:->:<context.location>
    on player breaks red_bed:
      - narrate "Red Bed destroyed!"
      - flag server beds:<-:<context.location>


#Manage the List of Beds

View_Bed_List:
  type: task
  script:
    - foreach <server.flag[beds]>:
      - narrate "<def[loop_index]> -- <def[value]>"


############################
## Section 2: NPC Manager
############################

#Check for Bed Time and call Go_to_Bed if it's bed time.
Call_Task:
  type: world
  events:
    on system time secondly every:5:
      - foreach <server.list_npcs>:
        - flag <def[value]> asleep:false
        - if !<def[value].has_flag[bedTime]>:
          - flag <def[value]> bedTime:12000
        - if !<def[value].has_flag[wakeTime]>:
          - flag <def[value]> wakeTime:0
        - define bedTime <def[value].flag[bedTime]>
        - define wakeTime <def[value].flag[wakeTime]>
        - inject Check_Task

Check_Task:
  type: task
  script:
    - if <def[bedTime]> > <def[wakeTime]>:
      - chat "<def[value].flag[bedTime]> | <def[value].flag[wakeTime]>" "targets:<server.match_player[Clossius]>" "talkers:<def[value]>"
      - chat "bedTime is greater than wake time" "targets:<server.match_player[Clossius]>" "talkers:<def[value]>"
      - if <w@world.time> < <def[wakeTime]> || <w@world.time> > <def[bedTime]>:
        - flag <def[value]> asleep:true
        - inject Go_to_Bed
      - else:
        - flag <def[value]> asleep:false
    - else if <def[bedTime]> < <def[wakeTime]>:
      - chat "<def[value].flag[bedTime]> | <def[value].flag[wakeTime]>" "targets:<server.match_player[Clossius]>" "talkers:<def[value]>"
      - chat "bedTime is less than wake time." "targets:<server.match_player[Clossius]>" "talkers:<def[value]>"
      - if <w@world.time> < <def[wakeTime]> && <w@world.time> > <def[bedTime]>:
        - flag <def[value]> asleep:true
        - inject Go_to_Bed
      - else:
        - flag <def[value]> asleep:false

Go_to_Bed:
  type: task
  script:
    - chat "<w@world.time> | <def[value].flag[asleep]>" "targets:<server.match_player[Clossius]>" "talkers:<def[value]>"