Daniel Lepage on Sat, 16 Dec 2006 16:29:00 -0700 (MST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [s-d] dice server enhancements |
Language features I would like: 1. Array indices. For example, == {{let x = 3#d5 in x[1]+x[2] - x[3]}} == x[i] is syntactic sugar for "last 1 first i x". 2. Global variables. For example, == {{let x = sum 3#d5 in everything}} Wonko gains {{x}} points and loses {{x/2}} Charisma. == This has two major benefits. 1) It solves the problem of referring to earlier rolls, as in "{{let x = 3#d5 in everything}} Wonko gains {{x[1]}} + {{x[2]}} + {{x[3]}} = {{sum x}} points." 2) It allows you to put in a bunch of constants to start off your script, e.g. == {{let weapons = ("Sword of Truth","Spear of Lies","Axe of Kindness","Prong of Tickles") in everything}} later... Wonko gets a {{first 1 perm weapons }}. == 3. Assignment lists. For example, == {{ let x=1d5, y=2d x in (x+y,x-y) }} == This is syntactic sugar for == {{ let x = 1d5 in let y = 2d x in (x+y,x-y) }} == 4. Some sort of bottled expression syntax, like code blocks in Ruby, or even just like functions in other languages. For example, == {{define choose_weapon = first 1 perm weapons in everything}} Wonko gets a {{choose_weapon}} and a {{choose_weapon}}. /* The two weapons could differ */ == 5. Some sort of textual if-else? For example, suppose I need to roll some dice, and the outcome determines whether I live or die. If I live, then a set of rolls needs to be made to determine by how much; if I die, then a different set of rolls needs to be made to determine how I am reborn. Ideally, whole blocks of text and instructions would be kept or thrown out depending on these rolls. An example: == {{ let wonko_dies = > 4 d6 in if wonko_dies then }} Wonko dies. E is trapped in limbo for {{2d3}} ndays, and will emerge then on square ({{d20}},{{d20}}). {{ else }} Wonko survives the attack. E gains {{4d3+1d2}} experience and finds a {{ first 1 perm("Sword","Axe","Stick")}} of {{ first 1 perm ("Smiting","Power","Suckiness") }}. == I tried a few months ago to write a python-based dice rolling language that had this feature, and being unable to come up with a good way to handle this was really what killed the project (well, that and prelims). The two ideas I had were first to do it as above, where ifs and elses can just contain the end-of-code delimiter and the resulting text becomes part of the conditional, and second to do it with special penup and pendown functions that would disable and re- enable the production of text. But neither is a very clean solution. -- Wonko _______________________________________________ spoon-discuss mailing list spoon-discuss@xxxxxxxxx http://lists.ellipsis.cx/mailman/listinfo/spoon-discuss