Paste #22831: Diff note for paste #22830

Date: 2015/11/19 20:27:56 UTC-08:00
Type: Diff Report

View Raw Paste Download This Paste
Copy Link


 ShopListener:
   type: world
   debug: false
   name:
   - if <def[name].is[==].to[<c.entity.framed_item.material.name>]> {
     - adjust <c.entity.framed_item> 'display_name:' save:new
     } else {
     - adjust <c.entity.framed_item> 'display_name:<def[name].before_last[ <blue>]>' save:new }
   events:
     on player damages ITEM_FRAME:
     - define name <c.entity.framed_item.display_name||<c.entity.framed_item.material.name>>
     # \/ Handles admin /shop command
     - if <player.has_flag[shop]> {
       
       - determine passively CANCELLED
       - define shop <player.flag[shop].before[/]>
       
       - if <def[shop].is[==].to[buy]> {
         - if '<def[name].contains[<blue>Buy: ]>' { - define name '<def[name].before[ <blue>Buy:]>' }
         - if '<def[name].contains[<blue>Sell: ]>' { - define name '<def[name].before[ <blue>Sell:]>' }
         - adjust <c.entity.framed_item> 'display_name:<def[name]> <blue>Buy: $<player.flag[shop].after[/]>' save:new
         - adjust <c.entity> framed:<entry[new].result> }
       
       - if <def[shop].is[==].to[sell]> {
         - if '<def[name].contains[<blue>Buy: ]>' { - define name '<def[name].before[ <blue>Buy:]>' }
         - if '<def[name].contains[<blue>Sell: ]>' { - define name '<def[name].before[ <blue>Sell:]>' }
         - adjust <c.entity.framed_item> 'display_name:<def[name]> <blue>Sell: $<player.flag[shop].after[/]>' save:new
         - adjust <c.entity> framed:<entry[new].result> }
       
       - if <def[shop].is[==].to[remove]> {
         - if '<def[name].contains[<blue>Buy: ]>' { - define name '<def[name].before[ <blue>Buy:]>' }
         - if '<def[name].contains[<blue>Sell: ]>' { - define name '<def[name].before[ <blue>Sell:]>' }
         - inject locally name
         - if '<entry[new].result.lore.get[1].contains[<red>- ]||false>' {
           - adjust <entry[new].result> 'lore:<c.entity.framed_item.lore.get[2].to[9999]||>' save:lore
           - adjust <c.entity> framed:<entry[lore].result> } else { - adjust <c.entity> framed:<entry[new].result> }
         }
       
       - if <def[shop].is[==].to[task]> {
         - if '<def[name].contains[ <blue>Buy: ].not>' {
         - narrate "<red>Item must be purchasable to set task."
         - queue clear }
         - adjust <c.entity.framed_item> 'lore:<red>- run <player.flag[shop].after[/]>|<c.entity.framed_item.lore>' save:new
         - if '<c.entity.framed_item.lore.get[1].contains[<red>- ]>' { - adjust <c.entity.framed_item> 'lore:<red>- run <player.flag[shop].after[/]>|<c.entity.framed_item.lore.get[2].to[9999].after[li@]>' save:new }
         - adjust <c.entity> framed:<entry[new].result> }
         
       - determine CANCELLED }
     
     # ===== Buy ===== #
     - if '<def[name].contains[ <blue>Buy: ]>' {
       - determine passively CANCELLED 
       - define price '<def[name].after_last[$]>'
       - if <player.money.is[OR_LESS].to[<def[price]>]> {
         - narrate "<red>Not enough money."
         - queue clear }
       - take money qty:<def[price]>
       
       - if '<c.entity.framed_item.lore.get[1].contains[<red>- run ]||false>' {
         - run '<c.entity.framed_item.lore.get[1].after[run ]>'
         - queue clear }
       
       - define name <def[name].before_last[<blue>]>
       - inject locally name
       - give <entry[new].result>
       }
     
     # ===== Sell ===== #
     - if '<def[name].contains[ <blue>Sell: ]>' {
       - determine passively CANCELLED
       - define price '<def[name].after_last[$]>'
       - define name <def[name].before_last[<blue>]>
       - inject locally name
       - if <player.inventory.contains[<entry[new].result>].not> queue clear
       - take <entry[new].result>
       - give money qty:<def[price]>
       }
     - narrate <player.money>
     
     on shop command:
     - determine passively FULFILLED
     - flag player shop:!
     - wait 1s
     - choose <c.args.get[1]>:
       - case clear:
         - flag player shop:!
       - case remove:
         - flag player shop:remove/ d:5m
       - case buy:
         - flag player shop:buy/<c.args.get[2]||1> d:5m
       - case sell:
         - flag player shop:sell/<c.args.get[2]||1> d:5m
       - case task:
         - flag player 'shop:task/<c.raw_args.after[task ]>' d:5m
       - case help:
         - narrate 'Help goes here.'
       - default:
         - narrate '/shop [remove/buy/sell/task/help/clear] [price/taskname]'
     - if <player.has_flag[shop].not> queue clear
     - wait 2t
     - while <player.has_flag[shop]> {
       - adjust <player> 'action_bar:<aqua>shopmode: <dark_aqua><player.flag[shop].before[/]>'
       - wait 1s
       }
 
 testtask:
   type: task
   script:
   - narrate hi