Date: 2017/11/12 18:35:03 UTC-08:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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]>