Difference between revisions of "User:Maunder/Suggestions"

From The Shartak Wiki
Jump to navigationJump to search
Line 7: Line 7:
  
 
=== Part I : Whistle ===
 
=== Part I : Whistle ===
Whistles have '''base range''' 3.
+
For 1 AP, any human player over level 4 may Whistle.  Whistles have '''base range''' 3.
  
for 1 AP, any human player over level 4 may Whistle. Results:
+
{| border="1"
# Any player in the same location will get the identified message: ''(Maunder) whistled.''
+
|+ possible whistle messages
# Any player within '''base range''' (distance 3) will get a message: ''Someone whistled to the (northeast).''  See below for implementation of direction.
+
! label !! message text
# If the whistler is outside, then: all inhabitants of huts within distance 1 ('''base range''' -2) of the whistler will also get the second message.
+
|-
# If the whistler is inside a hut, then: all players outside within distance 1 ('''base range''' -2) of the hut will also get the second message.
+
! W0
 +
| You whistle.
 +
|-
 +
! W1
 +
| (Maunder) whistles.
 +
|-
 +
! W2
 +
| Someone whistles to the (northeast).
 +
|}
 +
 
 +
Results:
 +
# The whistler gets the message '''W0'''.
 +
# Any player in the same location will get the identified message '''W1'''.
 +
# Any player within '''base range''' (distance <= 3) will get the distant message '''W2'''  See below for implementation.
 +
# If the whistler is outside, then:  
 +
#* all inhabitants of huts within distance 1 ('''base range''' -2) of the whistler will also get '''W2'''.
 +
# If the whistler is inside a hut, then:  
 +
#* all players outside within distance 1 ('''base range''' -2) of the hut will also get '''W2'''.
 
# Enraged animals within distance 6 (double '''base range''') will move preferentially towards the whistler for a while(?).
 
# Enraged animals within distance 6 (double '''base range''') will move preferentially towards the whistler for a while(?).
 
Further options:
 
Further options:

Revision as of 05:00, 10 January 2010

This is a page for me to write at length about my suggestions for improvement to the game.

Whistles and Shouts

Note: all distances in this suggestion are calculated the cartesian way [ d = sqrt (dx^2 + dy^2) ] see the attached picture for graphical representation of ranges. Shoutrange.PNG

Part I : Whistle

For 1 AP, any human player over level 4 may Whistle. Whistles have base range 3.

possible whistle messages
label message text
W0 You whistle.
W1 (Maunder) whistles.
W2 Someone whistles to the (northeast).

Results:

  1. The whistler gets the message W0.
  2. Any player in the same location will get the identified message W1.
  3. Any player within base range (distance <= 3) will get the distant message W2 See below for implementation.
  4. If the whistler is outside, then:
    • all inhabitants of huts within distance 1 (base range -2) of the whistler will also get W2.
  5. If the whistler is inside a hut, then:
    • all players outside within distance 1 (base range -2) of the hut will also get W2.
  6. Enraged animals within distance 6 (double base range) will move preferentially towards the whistler for a while(?).

Further options:

  • option: whistles cannot be heard by spirits
  • option: base range is 6 for whistlers underground (inside tunnels).

Part II - Shout

Shouts have base range 5.

For 2 AP, any human player over level 4 may Shout a short message (a few syllables). (A suggested implementation of message filtering is below.) Results:

  1. Any player in the same location will get one of the following two identified messages, depending on whether they understand the language:
    • If the listener is on the same side (Native/Outsider), or has the Expert Language skill, the listener gets: (Maunder) shouts, "(Leave me alone!)"
    • Otherwise, the listener gets: (Maunder) shouts something.
  2. Any player within distance 3 (base range -2) of the shouter will get an audible message, again, depending on whether they understand the language:
    • If the listener is on the same side, or has the Expert Language skill, the listener gets: Someone shouts to the (northeast), "(Leave me alone!)"
    • Otherwise, the listener gets: To the (northeast), someone shouts something.
  3. Any player not within distance 3, but within base range distance 5 of the shouter will get the distant message: You hear someone shout to the (northeast).
  4. If the shouter is outside, then:
    1. all inhabitants of huts within distance 1 (base range -4) of the shouter will get the audible message listed above, depending on language.
    2. all inhabitants of huts greater than distance 1 but within distance 3 (base range -2) of the shouter will get the distant message.
  5. If the shouter is inside a hut, then:
    1. all players outside within distance 1 (base range -4) of the hut will also get the audible message, depending on language.
    2. all players outside within distance 3 (base range -2) of the hut will also get the distant message.
  6. Enraged animals within distance 10 (double base range) will move preferentially towards the shouter for a while(?).

Further options:

  • option: shouts cannot be understood by spirits

Implementation Notes

Below are some pseudocode algorithms for tricky parts of implementing the above suggestions.

implementation of direction:

# assuming not at same location (dx!=0 or dy!=0)
# given listener coord xl,yl, and whistler coord xw,yw
# result is direction string.
dx = xw-xl
dy = yw-yl
ns = ew = 
if dx==0 or abs(dy/dx)>sqrt(2)-1 { ns = (dy>0)? 'north':'south' }
if dy==0 or abs(dy/dx)<sqrt(2)+1 { ew = (dx>0)? 'east':'west' }
result = ns.ew

rough-counting syllables in a message:

# given distance d = sqrt (dx^2 + dy^2), and copy of message msg
# result is rough count of number of syllables
msg =~ s/e\s+/ /g;  # remove trailing e's (silent)
while (msg =~ s/[b-df-hj-np-tv-z]//) { syll++ }
while (msg =~ s/([aeiou]{1,2}|y)//i) { syll++ }
...wip...