Paste #48544: Untitled Paste

Date: 2018/07/10 15:23:30 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


DUL_WRCG:
  type: procedure
  debug: false
  DUL:
    author:
    - Anthony
    name:
    - Weighted Random Choice Generator
    description:
    - Supply a list of weight/return values and have one of the values returned to you randomly based on weight.
    usage:
    - <proc[DUL_WRCG].context[weight/return|...]>
    example:
    - give <proc[DUL_WRCG].context[10/i@apple|1/i@gold_ingot|20/i@stone]>
  script:
    - define input <def[raw_context]>
    - define weight
    - foreach '<def[l].parse[before[/]]>':
      - define w '<def[w].add[%value%]>'
    - define number '<util.random.int[1].to[%w%]>'
    - define hv '0'
    - foreach '%l%':
      - define ov '%hv%'
      - define lv '<def[ov].add[1]>'
      - define hv '<def[ov].add[<def[value].before[/]>]>'
      - if %number% >= %lv% && %number% <= %hv% {
        - determine '<def[value].after[/]>'
        }