Extending item filters with external application

The item filter scripting language is pretty basic and I think a lot of people would probably appreciate a little more expressive power. So, I've been playing around with writing a program to give people that power. Below is a small example of what it can do so far. The program accepts an extended version of an item filter and outputs a regular item filter that is essentially the same.

#start variables
var 2

mapping 1

mapping_text_color_red 200
mapping_text_color_green 0
mapping_text_color_blue 0

leveling_text_color_red 0
leveling_text_color_green 0
leveling_text_color_blue 200
#end variables

#start show blocks
Show

#you can specify conditions on variables
mapping > 0

#you can specify conditions just like in normal item filters
ItemLevel >= 10
ItemLevel <= 20

#but more generally you can specify linear equations or inequations involving numeric values
#from regular item filters as well as variables
2*ItemLevel <= DropLevel + LinkedSockets + var
2*ItemLevel >= DropLevel + LinkedSockets - var

#you can use variables when setting attributes
SetTextColor mapping_text_color_red mapping_text_color_green mapping_text_color_blue

Show #this block will not show up because mapping is not 0

mapping = 0

ItemLevel >= 10
ItemLevel <= 20

2*ItemLevel <= DropLevel + LinkedSockets + var
2*ItemLevel >= DropLevel + LinkedSockets - var

SetTextColor leveling_text_color_red leveling_text_color_green leveling_text_color_blue
#end show blocks


This is the output (It is quite long be warned lol):
Spoiler

Show
ItemLevel 10
LinkedSockets 6
DropLevel 12
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 5
DropLevel 13
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 6
DropLevel 13
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 4
DropLevel 14
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 5
DropLevel 14
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 6
DropLevel 14
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 3
DropLevel 15
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 4
DropLevel 15
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 5
DropLevel 15
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 6
DropLevel 15
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 2
DropLevel 16
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 3
DropLevel 16
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 4
DropLevel 16
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 5
DropLevel 16
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 12
LinkedSockets 6
DropLevel 16
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 1
DropLevel 17
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 2
DropLevel 17
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 3
DropLevel 17
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 4
DropLevel 17
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 12
LinkedSockets 5
DropLevel 17
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 12
LinkedSockets 6
DropLevel 17
SetTextColor 200 0 0
Show
ItemLevel 10
LinkedSockets 1
DropLevel 18
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 2
DropLevel 18
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 3
DropLevel 18
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 12
LinkedSockets 4
DropLevel 18
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 12
LinkedSockets 5
DropLevel 18
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 13
LinkedSockets 6
DropLevel 18
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 1
DropLevel 19
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 2
DropLevel 19
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 12
LinkedSockets 3
DropLevel 19
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 12
LinkedSockets 4
DropLevel 19
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 13
LinkedSockets 5
DropLevel 19
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 13
LinkedSockets 6
DropLevel 19
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 11
LinkedSockets 1
DropLevel 20
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 12
LinkedSockets 2
DropLevel 20
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 12
LinkedSockets 3
DropLevel 20
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 13
LinkedSockets 4
DropLevel 20
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 13
LinkedSockets 5
DropLevel 20
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 14
LinkedSockets 6
DropLevel 20
SetTextColor 200 0 0
Show
ItemLevel >= 10
ItemLevel <= 12
LinkedSockets 1
DropLevel 21
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 12
LinkedSockets 2
DropLevel 21
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 13
LinkedSockets 3
DropLevel 21
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 13
LinkedSockets 4
DropLevel 21
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 14
LinkedSockets 5
DropLevel 21
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 14
LinkedSockets 6
DropLevel 21
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 12
LinkedSockets 1
DropLevel 22
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 13
LinkedSockets 2
DropLevel 22
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 13
LinkedSockets 3
DropLevel 22
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 14
LinkedSockets 4
DropLevel 22
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 14
LinkedSockets 5
DropLevel 22
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 15
LinkedSockets 6
DropLevel 22
SetTextColor 200 0 0
Show
ItemLevel >= 11
ItemLevel <= 13
LinkedSockets 1
DropLevel 23
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 13
LinkedSockets 2
DropLevel 23
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 14
LinkedSockets 3
DropLevel 23
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 14
LinkedSockets 4
DropLevel 23
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 15
LinkedSockets 5
DropLevel 23
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 15
LinkedSockets 6
DropLevel 23
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 13
LinkedSockets 1
DropLevel 24
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 14
LinkedSockets 2
DropLevel 24
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 14
LinkedSockets 3
DropLevel 24
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 15
LinkedSockets 4
DropLevel 24
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 15
LinkedSockets 5
DropLevel 24
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 16
LinkedSockets 6
DropLevel 24
SetTextColor 200 0 0
Show
ItemLevel >= 12
ItemLevel <= 14
LinkedSockets 1
DropLevel 25
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 14
LinkedSockets 2
DropLevel 25
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 15
LinkedSockets 3
DropLevel 25
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 15
LinkedSockets 4
DropLevel 25
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 16
LinkedSockets 5
DropLevel 25
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 16
LinkedSockets 6
DropLevel 25
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 14
LinkedSockets 1
DropLevel 26
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 15
LinkedSockets 2
DropLevel 26
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 15
LinkedSockets 3
DropLevel 26
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 16
LinkedSockets 4
DropLevel 26
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 16
LinkedSockets 5
DropLevel 26
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 17
LinkedSockets 6
DropLevel 26
SetTextColor 200 0 0
Show
ItemLevel >= 13
ItemLevel <= 15
LinkedSockets 1
DropLevel 27
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 15
LinkedSockets 2
DropLevel 27
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 16
LinkedSockets 3
DropLevel 27
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 16
LinkedSockets 4
DropLevel 27
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 17
LinkedSockets 5
DropLevel 27
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 17
LinkedSockets 6
DropLevel 27
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 15
LinkedSockets 1
DropLevel 28
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 16
LinkedSockets 2
DropLevel 28
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 16
LinkedSockets 3
DropLevel 28
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 17
LinkedSockets 4
DropLevel 28
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 17
LinkedSockets 5
DropLevel 28
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 18
LinkedSockets 6
DropLevel 28
SetTextColor 200 0 0
Show
ItemLevel >= 14
ItemLevel <= 16
LinkedSockets 1
DropLevel 29
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 16
LinkedSockets 2
DropLevel 29
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 17
LinkedSockets 3
DropLevel 29
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 17
LinkedSockets 4
DropLevel 29
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 18
LinkedSockets 5
DropLevel 29
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 18
LinkedSockets 6
DropLevel 29
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 16
LinkedSockets 1
DropLevel 30
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 17
LinkedSockets 2
DropLevel 30
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 17
LinkedSockets 3
DropLevel 30
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 18
LinkedSockets 4
DropLevel 30
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 18
LinkedSockets 5
DropLevel 30
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 19
LinkedSockets 6
DropLevel 30
SetTextColor 200 0 0
Show
ItemLevel >= 15
ItemLevel <= 17
LinkedSockets 1
DropLevel 31
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 17
LinkedSockets 2
DropLevel 31
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 18
LinkedSockets 3
DropLevel 31
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 18
LinkedSockets 4
DropLevel 31
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 19
LinkedSockets 5
DropLevel 31
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 19
LinkedSockets 6
DropLevel 31
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 17
LinkedSockets 1
DropLevel 32
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 18
LinkedSockets 2
DropLevel 32
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 18
LinkedSockets 3
DropLevel 32
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 19
LinkedSockets 4
DropLevel 32
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 19
LinkedSockets 5
DropLevel 32
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 20
LinkedSockets 6
DropLevel 32
SetTextColor 200 0 0
Show
ItemLevel >= 16
ItemLevel <= 18
LinkedSockets 1
DropLevel 33
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 18
LinkedSockets 2
DropLevel 33
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 19
LinkedSockets 3
DropLevel 33
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 19
LinkedSockets 4
DropLevel 33
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 20
LinkedSockets 5
DropLevel 33
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 6
DropLevel 33
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 18
LinkedSockets 1
DropLevel 34
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 19
LinkedSockets 2
DropLevel 34
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 19
LinkedSockets 3
DropLevel 34
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 20
LinkedSockets 4
DropLevel 34
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 5
DropLevel 34
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 6
DropLevel 34
SetTextColor 200 0 0
Show
ItemLevel >= 17
ItemLevel <= 19
LinkedSockets 1
DropLevel 35
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 19
LinkedSockets 2
DropLevel 35
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 20
LinkedSockets 3
DropLevel 35
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 4
DropLevel 35
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 5
DropLevel 35
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 6
DropLevel 35
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 19
LinkedSockets 1
DropLevel 36
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 20
LinkedSockets 2
DropLevel 36
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 3
DropLevel 36
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 4
DropLevel 36
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 5
DropLevel 36
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 6
DropLevel 36
SetTextColor 200 0 0
Show
ItemLevel >= 18
ItemLevel <= 20
LinkedSockets 1
DropLevel 37
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 2
DropLevel 37
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 3
DropLevel 37
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 4
DropLevel 37
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 5
DropLevel 37
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 1
DropLevel 38
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 2
DropLevel 38
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 3
DropLevel 38
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 4
DropLevel 38
SetTextColor 200 0 0
Show
ItemLevel >= 19
ItemLevel <= 20
LinkedSockets 1
DropLevel 39
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 2
DropLevel 39
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 3
DropLevel 39
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 1
DropLevel 40
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 2
DropLevel 40
SetTextColor 200 0 0
Show
ItemLevel 20
LinkedSockets 1
DropLevel 41
SetTextColor 200 0 0


The program still needs a lot of work.

-It doesn't report location of parsing errors.
-It fails when variables are used that have not been declared.
-integers and strings need to have their values checked to make sure they are valid.

I also still want to add a few things.

-Ability to include other files like the #include directive in c/c++.
-More complicated non integer variables to store colors and maybe even a whole group of attributes.
-Possibly some more complicated simplification by combing some of the output blocks. You can see that this could be done with the output of the above example.

Is this useful for you guys? What else would you like to see?

Thanks.
Last edited by Granger_Guildmage on May 17, 2015, 5:45:58 AM

Report Forum Post

Report Account:

Report Type

Additional Info