Paste #4829: Edit of P#4826 - Edit of P#4825 - Untitled Paste

Date: 2014/05/26 18:54:51 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


#    - ^flag npc WeightedRandomChoice:35/FightBackWeak|25/CryChat|20/RunAway|10/FightBackStrong|10/Lightning
#    - ^inject s@WeightedRandomChoice instantly
#    - ^flag npc WeightedRandomChoice:!




'WeightedRandomChoice':
# Edited version
  type: task
  script:
    - ^define list <npc.flag[WeightedRandomChoice].as_list>
    - ^define listSize <def[list].size>
    - ^define number <util.random.int[1].to[100]>
    - ^foreach <def[list].as_list> {
      - define entry_%loop_index% <def[list].get[%loop_index%]>
      - define percentChance <def[entry_%loop_index%].split[/].get[1]>
      - define returnValue <def[entry_%loop_index%].split[/].get[2]>
      - define oldValue '<def[oldValue] || 0>'
      - define lowValue '<def[oldValue].add[1]>'
      - define highValue '<def[oldValue].add[%percentChance%]>'
      - define oldValue '<def[highValue]>'

      - if <proc[isbetween].context[%number%|%lowValue%|%highValue%]> {
        - ^flag npc WeightedRandomChoice:<def[returnValue]>
        - ^foreach stop
        }
      }
    - ^define result <npc.flag[WeightedRandomChoice]>




'WeightedRandomChoice':
# Original  version
  type: task
  script:
    - define list <npc.flag[WeightedRandomChoice].as_list>
    - define listSize <def[list].size>
    - define number <util.random.int[1].to[100]>
    - define counter 0
    - foreach <def[list].as_list> {
      - if <def[counter].is[OR_LESS].than[%listSize%]> {
        - define counter <def[counter].add[1]>
        - define entry_<def[counter].as_int> <def[list].get[<def[counter].as_int>]>
        - define percentChance <def[entry_<def[counter].as_int>].split[/].get[1]>
        - define returnValue <def[entry_<def[counter].as_int>].split[/].get[2]>
        - define oldValue '<def[oldValue] || 0>'
        - define lowValue '<def[oldValue].add[1]>'
        - define highValue '<def[oldValue].add[%percentChance%]>'
        - define oldValue '<def[highValue]>'

        - if <proc[isbetween].context[%number%|%lowValue%|%highValue%]> {
          - ^flag npc WeightedRandomChoice:<def[returnValue]>
          - ^foreach stop
          }
        }
      }
    - define result <npc.flag[WeightedRandomChoice]>