Date: 2020/04/24 14:11:00 UTC-07: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
ArmorUpdate_Inject:
type: task
debug: false
script:
##Requires defs item|slot
- define imbueschool <[item].lore.get[2].after[<&sq>].before[<&sq>].as_element>
- define imbuepoints <[item].lore.get[3].after[<&sq>].before[<&sq>].as_element>
- define forger <[item].lore.get[4].after[<&sq>].before[<&sq>].as_element>
- define enchants <[item].enchantments.with_levels>
- flag player <[slot]>_imbueschool:<[imbueschool]> duration:1s
- flag player <[slot]>_imbuepoints:<[imbuepoints]> duration:1s
- flag player <[slot]>_forger:<[forger]> duration:1s
- equip <player> <[slot]>:<[itemscript]>
- inventory adjust slot:<[slot]> "enchantments:<[enchants]>"
- narrate "Your helmlet was out of date, and is now replaced!"
ArmorDurability_Inject:
type: task
debug: false
script:
##Requires defs item|slot
ArmorDurabilityAndUpdate:
type: world
debug: true
events:
on player CustomArmor_*chest takes damage:
- define item <context.item>
- define itemscript <item[<context.item.scriptname>]>
- flag player damagedarmor duration:10s
- define slot <context.slot>
- if <[item].nbt[Version].is[!=].to[<[itemscript].nbt[Version]>]>:
- inject ArmorUpdate_Inject instantly
- define buffermax <[item].lore.get[6].after[/]>
- define buffervalue <[item].lore.get[6].before[/].after[<&co>].after[<&sp>]>
- if <[buffervalue].is[more].to[0]>:
- determine cancelled passively
- define newbuffervalue <[item].lore.get[6].before[/].after[<&co>].after[<&sp>].sub[1]>
- define lore <[item].lore>
- define newbufferlore <&e>Durability<&sp>Buffer<&7><&co><&sp><[newbuffervalue]>/<[buffermax]>
- define lore <[lore].set[<[newbufferlore]>].at[6]>
- inventory adjust slot:<[slot]> "lore:<[lore]>" d:<player.inventory>
- stop
- if <[bonusvalue].is[more].to[0]>:
- determine cancelled passively
- define newbonusvalue <[item].lore.get[5].before[/].after[<&co>].after[<&sp>].sub[1]>
- define lore <[item].lore>
- define newbonuslore <&e>Durability<&sp>Bonus<&7><&co><&sp><[newbonusvalue]>/<[bonusmax]>
- define lore <[lore].set[<[newbonuslore]>].at[5]>
- inventory adjust slot:<[slot]> "lore:<[lore]>" d:<player.inventory>
ArmorBufferRestore:
type: world
debug: false
events:
on delta time secondly every:3:
- foreach <server.list_online_players.filter[has_flag[damagedarmor].not]> as:customarmorwearers:
- foreach <[customarmorwearers].equipment.filter[nbt[Custom].is[==].to[Armor]]> as:equipment:
- if <[equipment].material.name.contains[helm]>:
- define slot 40
- if <[equipment].material.name.contains[chest]>:
- define slot 39
- if <[equipment].material.name.contains[leg]>:
- define slot 38
- if <[equipment].material.name.contains[boot]>:
- define slot 37
- define buffervalue <[equipment].lore.get[6].before[/].after[<&co>].after[<&sp>]>
- define buffermax <[equipment].lore.get[6].after[/]>
- if <[buffermax].sub[<[buffervalue]>].is[less].to[5]>:
- define newbuffervalue <[equipment].lore.get[6].before[/].after[<&co>].after[<&sp>].add[<[buffermax].sub[<[buffervalue]>]>]>
- define lore <[equipment].lore>
- define newbufferlore <&e>Durability<&sp>Buffer<&7><&co><&sp><[newbuffervalue]>/<[buffermax]>
- define lore <[lore].set[<[newbufferlore]>].at[6]>
- inventory adjust slot:<[slot]> "lore:<[lore]>" d:<[customarmorwearers]>
- foreach next
- if <[buffermax].sub[<[buffervalue]>].is[or_more].to[5]>:
- define newbuffervalue <[equipment].lore.get[6].before[/].after[<&co>].after[<&sp>].add[5]>
- define lore <[equipment].lore>
- define newbufferlore <&e>Durability<&sp>Buffer<&7><&co><&sp><[newbuffervalue]>/<[buffermax]>
- define lore <[lore].set[<[newbufferlore]>].at[6]>
- inventory adjust slot:<[slot]> "lore:<[lore]>" d:<[customarmorwearers]>