Date: 2014/05/26 18:54:51 UTC-07:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# - ^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]>