Paste #70078: smithing stuff

Date: 2020/06/01 15:48:19 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


Smithing_Config:
  type: yaml data
  debug: true
  Craftables:
    leather:
      helmet:
        trade_exp: 175
        craft_exp: 87.5
        skill: 4
      boots:
        trade_exp: 140
        craft_exp: 70
        skill: 2
      leggings:
        trade_exp: 245
        craft_exp: 122.5
        skill: 6
      chestplate:
        trade_exp: 280
        craft_exp: 140
        skill: 8
    stone:
      pickaxe:
        trade_exp: 30
        craft_exp: 15
        skill: 4
      hoe:
        trade_exp: 20
        craft_exp: 10
        skill: 2
      axe:
        trade_exp: 30
        craft_exp: 15
        skill: 3
      shovel:
        trade_exp: 10
        craft_exp: 5
        skill: 1
      sword:
        trade_exp: 20
        craft_exp: 10
        skill: 5
    iron:
      shovel:
        trade_exp: 70
        craft_exp: 35
        skill: 11
      hoe:
        trade_exp: 140
        craft_exp: 70
        skill: 12
      sword:
        trade_exp: 140
        craft_exp: 70
        skill: 15
      pickaxe:
        trade_exp: 210
        craft_exp: 105
        skill: 14
      axe:
        trade_exp: 210
        craft_exp: 105
        skill: 13
      helmet:
        trade_exp: 350
        craft_exp: 175
        skill: 14
      chestplate:
        trade_exp: 560
        craft_exp: 280
        skill: 18
      leggings:
        trade_exp: 490
        craft_exp: 245
        skill: 16
      boots:
        trade_exp: 280
        craft_exp: 140
        skill: 10
    gold:
      shovel:
        trade_exp: 100
        craft_exp: 50
        skill: 21
      hoe:
        trade_exp: 200
        craft_exp: 100
        skill: 22
      sword:
        trade_exp: 200
        craft_exp: 100
        skill: 25
      pickaxe:
        trade_exp: 300
        craft_exp: 150
        skill: 24
      axe:
        trade_exp: 300
        craft_exp: 150
        skill: 23
      helmet:
        trade_exp: 500
        craft_exp: 250
        skill: 24
      chestplate:
        trade_exp: 800
        craft_exp: 400
        skill: 28
      leggings:
        trade_exp: 600
        craft_exp: 300
        skill: 26
      boots:
        trade_exp: 400
        craft_exp: 200
        skill: 22
    diamond:
      shovel:
        trade_exp: 160
        craft_exp: 80
        skill: 31
      hoe:
        trade_exp: 320
        craft_exp: 160
        skill: 32
      sword:
        trade_exp: 320
        craft_exp: 160
        skill: 35
      pickaxe:
        trade_exp: 480
        craft_exp: 240
        skill: 34
      axe:
        trade_exp: 480
        craft_exp: 240
        skill: 33
      helmet:
        trade_exp: 800
        craft_exp: 400
        skill: 34
      chestplate:
        trade_exp: 1280
        craft_exp: 640
        skill: 38
      leggings:
        trade_exp: 1120
        craft_exp: 560
        skill: 36
      boots:
        trade_exp: 640
        craft_exp: 320
        skill: 32

smithing_from_crafting_tables:
  type: World
  events:
    on player crafts leather_*|stone_*|iron_*|gold_*|diamond_*:
      - define material <context.item.material.name.before[_]||null>
      - define item <context.item.material.name.after[_]||null>
      - define skill <script[Smithing_Config].yaml_key[Craftables.<[material]>.<[item]>.skill]>
      - if <script[Smithing_Config].list_deep_keys.contains[Craftables.<[material]>.<[item]>]>:
        - if <player.flag[smithing]> < <[skill]>:
          - determine passively cancelled
          - narrate "<red>You need <white><[skill]> Smithing <red>to make that item!"
        - else:
          - define experience <script[Smithing_Config].yaml_key[Craftables.<[material]>.<[item]>.craft_exp].mul[<context.amount>]>
          - narrate "You earned <aqua><[experience]> <white>experience in Smithing for crafting <green><context.amount> <white>item(s)."
          - execute as_op "mmocore admin exp give <player.name> smithing <[experience]>" silent

cchat:
  type: format
  format: "<&b><npc.name><&f><&co> <&f><text>"

blacksmith:
  type: assignment
  actions:
    on assignment:
    - trigger name:click state: true
  interact scripts:
  - 1 blacksmith_interact

blacksmith_interact:
  type: interact
  steps:
    1:
      click trigger:
        script:
        - define material <player.item_in_hand.material.name.before[_]||null>
        - define item <player.item_in_hand.material.name.after[_]||null>
        - if <player.item_in_hand.material.name> == air:
          - narrate format:cchat "I'll trade you some Smithing Experience for your expertly crafted equipment!"
          - stop
        - else if <script[Smithing_Config].list_deep_keys.contains[Craftables.<[material]>.<[item]>]>:
          - take iteminhand
          - narrate format:cchat "Thanks for the <[material]> <[item]>. Here's some smithing xp!"
          - narrate "You earned <aqua><script[Smithing_Config].yaml_key[Craftables.<[material]>.<[item]>.trade_exp]> <white>experience in Smithing for turning in <green><[material]> <[item]><white>."
          - execute as_op "mmocore admin exp give <player.name> smithing <script[Smithing_Config].yaml_key[Craftables.<[material]>.<[item]>.trade_exp]>"
        - else:
          - narrate format:cchat "I appreciate the offer, but I can't accept that. Try bringing me some crafted equipment!"