Paste #45499: Untitled Paste

Date: 2017/11/12 18:35:03 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


Pickpocket_Event:
  type: world
  debug: false
  events:
    on player clicks in NPCInventory:
    - narrate "Pickpocket attempt!"
    - determine cancelled
    on updatedefaultinventories command:
    - if !<player.is_op> queue clear
    - foreach <server.list_npcs> {
      - if !<npc.has_flag[Inventory]> {
        - flag <def[value]> Inventory:<proc[NPCItemChooser]>        
        }
      - if <def[value].name> contains "Guard" {
        - flag <def[value]> Inventory:li@i@InventoryCoins[quantity=<util.random.int[1].to[64]>]|i@InventoryCoins[quantity=<util.random.int[1].to[64]>]|i@Steel_Chestplate|i@Steel_Leggings|i@Steel_Boots|i@Steel_Sword
        }
      }

    - narrate "Updating available NPC inventories."
    - determine fulfilled
NPCInventory: 

  type: inventory 

  # Must be a valid inventory type. 
  # Valid inventory types: BREWING, CHEST, DISPENSER, ENCHANTING, ENDER_CHEST, HOPPER, PLAYER, WORKBENCH 
  inventory: CHEST

  # The title can be anything you wish. Use color tags to make colored titles. 
  # Note that titles only work for some inventory types, including CHEST, DISPENSER, FURNACE, ENCHANTING, and HOPPER. 
  title: <player.flag[PickpocketNPC].asnpc.name><&sq>s Inventory

  # The size must be a multiple of 9. It is recommended not to go above 54, as it will not show 
  # correctly when a player looks into it. Tags are allowed for advanced usage. 
  size: 9
  # Procedural items can be used to specify a list of dItems for the empty slots to be filled with. 
  # Each item in the list represents the next available empty slot. 
  # When the inventory has no more empty slots, it will discard any remaining items in the list. 
  # A slot is considered empty when it has no value specified in the slots section. 
  # If the slot is filled with air, it will no longer count as being empty. 
  procedural items: 
    - define list li@
    #- define list <def[list].include[<player.flag[PickpocketNPC].asnpc.iteminhand>[lore=<player.flag[PickpocketNPC].asnpc.iteminhand.lore.include[<red>test]]]>
    #<player.flag[PickpocketNPC].asnpc.flag[Inventory]||li@i@dirt> 
    - foreach <player.flag[PickpocketNPC].asnpc.flag[Inventory]> {
      - define lore <def[value].asitem.lore||li@>
      - adjust <def[value]> 'lore:<def[lore].include[Pickpocket Chance<&co> <proc[PickpocketChance].round_down> / 100]>' save:new_item
      - define list <def[list].include[<entry[new_item].result>]>
      - announce <def[value]>
      }
    - announce <def[list]>
    - determine <def[list]>

PickpocketChance:
  type: procedure
  definitions: npc|player
  debug: true
  script:
    - define result 0.0
    - determine 0.0

NPCItemChooser: 
  type: procedure 
  debug: false
  script: 
    - choose <util.random.int[1].to[11]>:
      - case 1:
        - define randPoorItem <li@i@bread|i@Vodka|i@Whiskey|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[10]>]|i@Tattered_Rags|i@Tattered_Pants|i@Tattered_Shoes|<def[randPoorItem]>
      - case 2:
        - define randPoorItem <li@i@bread|i@Vodka|i@Whiskey|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[14]>]|i@Tattered_Rags|i@Tattered_Pants|i@Tattered_Shoes|<def[randPoorItem]>
      - case 3:
        - define randPoorItem <li@i@bread|i@Vodka|i@Whiskey|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[12]>]|i@Tattered_Rags|i@Tattered_Pants|i@Tattered_Shoes|<def[randPoorItem]>
      - case 4:
        - define randPoorItem <li@i@bread|i@Vodka|i@Whiskey|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[14]>]|i@Tattered_Rags|i@Tattered_Pants|i@Tattered_Shoes|<def[randPoorItem]>
      - case 5:
        - define randPoorItem <li@i@bread|i@Vodka|i@Whiskey|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[15]>]|i@Tattered_Rags|i@Tattered_Pants|i@Tattered_Shoes|<def[randPoorItem]>
      - case 6:
        - define randAverageItem <li@i@bread|i@Vodka|i@Whiskey|i@Tequila|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit|i@Beer|i@Watch|i@air|i@air.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[25]>]|i@Worn_Clothes|i@Worn_Pants|i@Worn_Shoes|<def[randAverageItem]>
      - case 7:
        - define randAverageItem <li@i@bread|i@Vodka|i@Whiskey|i@Tequila|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit|i@Beer|i@Watch|i@air|i@air.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[25]>]|i@Worn_Clothes|i@Worn_Pants|i@Worn_Shoes|<def[randAverageItem]>
      - case 8:
        - define randAverageItem <li@i@bread|i@Vodka|i@Whiskey|i@Tequila|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit|i@Beer|i@Watch|i@air|i@air.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[25]>]|i@Worn_Clothes|i@Worn_Pants|i@Worn_Shoes|<def[randAverageItem]>
      - case 9:
        - define randAverageItem <li@i@bread|i@Vodka|i@Whiskey|i@Tequila|i@mushroom_soup|i@apple|i@beetroot_soup|i@cooked_rabbit|i@Beer|i@Watch|i@air|i@air.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[1].to[25]>]|i@Worn_Clothes|i@Worn_Pants|i@Worn_Shoes|<def[randAverageItem]>
      - case 10:
        - define randRichItem <li@i@bread|i@Whiskey|i@Vodka|i@Tequila|i@apple|i@beetroot_soup|i@Beer|i@Watch|i@garnet|i@garnet|i@gold_ingot.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[25].to[64]>]|i@Fine_Clothes|i@Fine_Pants|i@Fine_Shoes|<def[randRichItem]>
      - case 11:
        - define randRichItem <li@i@bread|i@Whiskey|i@Vodka|i@Tequila|i@apple|i@beetroot_soup|i@Beer|i@Watch|i@garnet|i@garnet|i@gold_ingot.random>
        - determine li@i@InventoryCoins[quantity=<util.random.int[25].to[64]>]|i@Fine_Clothes|i@Fine_Pants|i@Fine_Shoes|<def[randRichItem]>