Paste #68027: Armor Properties

Date: 2020/04/24 14:11:00 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


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]>