Tkabber plugins

Check-in [87bb337e6c]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Removed the trailing whitespaces.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:87bb337e6cdae0b86ae1195db3cb4718262a13bb
User & Date: sgolovan 2015-05-10 14:43:55
Context
2015-05-24
04:52
Reformatted the code. check-in: bf2a5964fa user: sgolovan tags: trunk
2015-05-10
14:43
Removed the trailing whitespaces. check-in: 87bb337e6c user: sgolovan tags: trunk
14:27
Removed trailing spaces. check-in: 965ab01fa5 user: sgolovan tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.






















1
2
3
4
5
6
7
....
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990





















2015-05-09  Sergei Golovan  <sgolovan@nes.ru>

	* whiteboard/whiteboard.tcl: Adapted the Whiteboard plugin to the Ttk
	  based interface.

	* whiteboard/ChangeLog, whiteboard/msgs/de.msg, whiteboard/msgs/es.msg,
	  whiteboard/msgs/nl.msg, whiteboard/msgs/pl.msg,
................................................................................
	* debug/msgs/es.msg, spy/msgs/es.msg, whiteboard/msgs/es.msg: Updated
	  Spanish translation (thanks to Badlop).

	* tclchat/tclchat.tcl, tclchat/tclchat_commands.tcl,
	  tclchat/tclchat_messages.tcl: Added modified tclchat plugin by Pat
	  Thoyts for more comfortable use of Tclers' chat (unfinished yet).

	* tclchat/tclchat.tcl: Moved adding color to more suitable hook. 

	* tclchat/tclchat_messages.tcl: Added IRC users, connected to Tclers'
	  chat, to the conference roster.

2007-02-11  Sergei Golovan <sgolovan@nes.ru>

	* iconsets/icq/icondef.xml, iconsets/icq/tkabber/tkabber-logo.gif:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|







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
....
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2015-05-10  Sergei Golovan  <sgolovan@nes.ru>

	* ChangeLog, aniemoticons/anigif.tcl, attline/README,
	  battleship/battleship.tcl, bc/bc.tcl, checkers/checkers.tcl,
	  checkers/proto, chess/chess.tcl, chess/proto,
	  custom-urls/custom-urls.tcl, filters/filters.tcl,
	  floatinglog/ChangeLog, floatinglog/floatinglog.tcl,
	  georoster/howto.txt, georoster/msgs/es.msg, georoster/msgs/nl.msg,
	  gmail/gmail.tcl, jidlink/plugins/filetransfer.tcl,
	  jidlink/plugins/ibb.tcl, latex/latex.tcl, mute/mute.tcl, osd/osd.tcl,
	  otr/auth.tcl, otr/otr.tcl, poker/poker.tcl, poker/proto,
	  quiz/quiz.tcl, renju/proto, renju/renju.tcl, reversi/proto,
	  reversi/reversi.tcl, singularity/README, socials/socials.en,
	  socials/socials.ru, tclchat/tclchat_messages.tcl,
	  tkabber-khim/khim/ROOT.msg, tkabber-khim/khim/cs.msg,
	  tkabber-khim/khim/da.msg, tkabber-khim/khim/en.msg,
	  tkabber-khim/khim/es.msg, tkabber-khim/khim/khim.tcl,
	  tkabber-khim/khim/pl.msg, tkabber-khim/tklib_licence.terms,
	  traffic/msgs/ru.msg, traffic/msgs/uk.msg, whiteboard/svgrender.tcl,
	  whiteboard/whiteboard.tcl: Removed the trailing whitespaces.

2015-05-09  Sergei Golovan  <sgolovan@nes.ru>

	* whiteboard/whiteboard.tcl: Adapted the Whiteboard plugin to the Ttk
	  based interface.

	* whiteboard/ChangeLog, whiteboard/msgs/de.msg, whiteboard/msgs/es.msg,
	  whiteboard/msgs/nl.msg, whiteboard/msgs/pl.msg,
................................................................................
	* debug/msgs/es.msg, spy/msgs/es.msg, whiteboard/msgs/es.msg: Updated
	  Spanish translation (thanks to Badlop).

	* tclchat/tclchat.tcl, tclchat/tclchat_commands.tcl,
	  tclchat/tclchat_messages.tcl: Added modified tclchat plugin by Pat
	  Thoyts for more comfortable use of Tclers' chat (unfinished yet).

	* tclchat/tclchat.tcl: Moved adding color to more suitable hook.

	* tclchat/tclchat_messages.tcl: Added IRC users, connected to Tclers'
	  chat, to the conference roster.

2007-02-11  Sergei Golovan <sgolovan@nes.ru>

	* iconsets/icq/icondef.xml, iconsets/icq/tkabber/tkabber-logo.gif:

Changes to aniemoticons/anigif.tcl.

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
60
61
62
63
64
#  NOTES:
#    There is currently a -zoom and -subsample hack to keep transparency.
#    Anigif does not handle interlaced gifs properly.  The image will look
#      distorted.
#    A delay of 0 renders as fast as possible, per the GIF specification.
#      This is currently set to 40 ms to approximate the IE default.
#    If you experience a problem with a compressed gif, try uncompressing
#      it. Search the web for gifsicle.    
#
# ############################## HISTORY #################################
#
#  1.3: Fixed error in disposal flag handling.
#       Added handling for non-valid comment/graphic blocks.
#       Searches for actual loop control block.  If it extists, loops.
#       Added more comments.
#  1.2: Now handles single playthrough gifs or gifs with partial images
#       Fixed bug in delay time (unsigned int was being treated as signed)
#  1.1: Reads default timing instead of 100 ms or user-defined.
#       You can no longer set the delay manually.
#  1.0: Moved all anigif variables to the anigif namespace
#  0.9: Initial release
# 

namespace eval ::anigif {
    variable image_number 0
}

proc ::anigif::anigif2 {img list delay {idx 0}} {
    if {$idx >= [llength $list]} {
................................................................................
        set idx 0
        if {$::anigif::img(repeat,$img) == 0} {
            # Non-repeating GIF
            ::anigif::stop $img
            return
        }
    }
    set disposal_idx $idx 
    incr disposal_idx -1
    if {$disposal_idx <= 0} {
        set disposal_idx 0
    }
    if {$idx == 0} {
        set dispflag "010"
    } else {







|













|







 







|







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
60
61
62
63
64
#  NOTES:
#    There is currently a -zoom and -subsample hack to keep transparency.
#    Anigif does not handle interlaced gifs properly.  The image will look
#      distorted.
#    A delay of 0 renders as fast as possible, per the GIF specification.
#      This is currently set to 40 ms to approximate the IE default.
#    If you experience a problem with a compressed gif, try uncompressing
#      it. Search the web for gifsicle.
#
# ############################## HISTORY #################################
#
#  1.3: Fixed error in disposal flag handling.
#       Added handling for non-valid comment/graphic blocks.
#       Searches for actual loop control block.  If it extists, loops.
#       Added more comments.
#  1.2: Now handles single playthrough gifs or gifs with partial images
#       Fixed bug in delay time (unsigned int was being treated as signed)
#  1.1: Reads default timing instead of 100 ms or user-defined.
#       You can no longer set the delay manually.
#  1.0: Moved all anigif variables to the anigif namespace
#  0.9: Initial release
#

namespace eval ::anigif {
    variable image_number 0
}

proc ::anigif::anigif2 {img list delay {idx 0}} {
    if {$idx >= [llength $list]} {
................................................................................
        set idx 0
        if {$::anigif::img(repeat,$img) == 0} {
            # Non-repeating GIF
            ::anigif::stop $img
            return
        }
    }
    set disposal_idx $idx
    incr disposal_idx -1
    if {$disposal_idx <= 0} {
        set disposal_idx 0
    }
    if {$idx == 0} {
        set dispflag "010"
    } else {

Changes to attline/README.

87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
parameters:

* Chat.attentionLineHeight -- controls the thickness (in pixels)
  of the attention line. (Note that some amount of white space
  is added above and below the attention line by the text widget
  which draws the attention line.)
  The default value is 1.
 
* Chat.attentionLineColor -- color of the attention line. Can
  be specified in any form described in [4].
  The default value is "red".

* Chat.attentionLinePadX -- amount of extra white space to pad
  the attention line from left and right.
  The default value is 5.







|







87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
parameters:

* Chat.attentionLineHeight -- controls the thickness (in pixels)
  of the attention line. (Note that some amount of white space
  is added above and below the attention line by the text widget
  which draws the attention line.)
  The default value is 1.

* Chat.attentionLineColor -- color of the attention line. Can
  be specified in any form described in [4].
  The default value is "red".

* Chat.attentionLinePadX -- amount of extra white space to pad
  the attention line from left and right.
  The default value is 5.

Changes to battleship/battleship.tcl.

248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
...
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
...
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
...
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
...
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
....
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
....
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
....
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
....
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
....
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    
    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code \
                        [list invited_res $w $xlib $jid $iqid $id $first 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code \
                        [list invited_res $w $xlib $jid $iqid $id $first 0]]

................................................................................
        set numhashes 0
        set cells {}

        foreach element $xmlElements {
            ::xmpp::xml::split $element tag xmlns attrs cdata subels
            switch -- $tag {
                cell {
                    set c [::xmpp::xml::getAttr $attrs col] 
                    if {![string is integer -strict $c] || \
                            $c < 0 || $c >= $board_size} {
                        attention_message $gid \
                                [::msgcat::mc "\n\n Opponent sent incorrect\
                                               cell column"]
                        return [list error modify bad-request]
                    }
................................................................................
    array set board $boardlist
    foreach c [list -1 $board_size] {
        for {set r -1} {$r <= $board_size} {incr r} {
            set board($c,$r) 0
            set board($r,$c) 0
        }
    }
    
    array set size $sizes

    foreach {name number} $ships {
        for {set i 1} {$i <= $number} {incr i} {
            lassign [find_ship board $size($name)] status c1 r1 c2 r2

            if {!$status} {
................................................................................
                   -height [expr {($square_size + $line_width) *
                                  $board_size + $line_width}]]
    grid $board -row 1 -column 0 -columnspan 2 -sticky nw -padx 10 -pady 10

    set state(board) $board
    set state(show_last_move) $options(show_last_move)

    Frame $w.move 
    grid $w.move -row 2 -column 0 -columnspan 2 -sticky wn
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.label -anchor w \
                        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.label -side left -anchor w

................................................................................
        for {set r 0} {$r < $board_size} {incr r} {
          set state(seed,$c,$r) \
           [rand 1000000000][rand 1000000000][rand 1000000000][rand 1000000000]
        }
    }

    make_random_position $gid
    
    predraw_position $gid
    update_controls $gid
    attention_message $gid \
            [::msgcat::mc "\n Drag and drop ships to desired locations, then\
                           click the 'Freeze ships position' button.\
                           \n Right mouse button switches horizontal\
                           and vertical ship orientation."]
................................................................................
    set board $state(board)

    set x [$board canvasx $x]
    set y [$board canvasy $y]

    $board itemconfigure dst_sq&&square -outline ""
    $board dtag dst_sq
    
    $board addtag dst_sq overlapping [expr {$x-1}] [expr {$y-1}] $x $y
    set tags [$board gettags dst_sq&&obackground]
    lassign [lindex $tags [lsearch $tags cr*]] cr c r
    $board addtag dst_sq withtag [list cr $c $r]&&square
    
    if {[is_my_move $gid] && [info exists state(position,mshot,$c,$r)] && \
            $state(position,mshot,$c,$r) == ""} {
        $board itemconfigure dst_sq&&square -outline red
        $board itemconfigure dst_sq&&reasonable&&square -outline blue
    }
}

................................................................................
    $board dtag dst_sq

    if {[is_my_move $gid]} {
        if {[start_do_move $gid $c $r $state(position,draw)]} {
            $board itemconfigure [list cr $c $r]&&square -outline ""
        }
    }
    
    update_controls $gid
    draw_position $gid

    highlight_last_move $gid
}

proc battleship::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid state

    $state(board) itemconfigure mlast -outline ""
    $state(board) itemconfigure olast -outline ""
    
    if {[catch {lassign $state(position,last_move) c r}]} {
        return
    }

    if {$state(show_last_move)} {
        set color white
    } else {
................................................................................
        $state(board) itemconfigure [list cr $c $r]&&olast -outline $color
    }
}

proc battleship::start_do_move {gid c r draw} {
    variable $gid
    upvar 0 $gid state
    
    if {$c == "" || $r == ""} {
        return 0
    }

    set my_move [is_my_move $gid]

    if {!$my_move} {
................................................................................
}

proc battleship::do_move {gid c r result draw} {
    variable options
    variable ships
    variable $gid
    upvar 0 $gid state
    
    if {$c == "" || $r == ""} {
        return 0
    }

    switch -- $result {
        destroy -
        hit { set hit 1 }
................................................................................

    find_reasonable_moves $gid $state(position,turn)

    set endgame 0
    if {[llength $state(reasonable_moves)] == 0} {
        set endgame 1
    }
        
    if {$endgame} {
        set total 0
        foreach {name size} $ships {
            incr total $size
        }
        if {[llength $state(position,destroyed_ships)] >= $total &&
                [llength $state(position,destroyed_my_ships)] < $total} {







|







 







|







 







|







 







|







 







|







 







|




|







 







|












|







 







|







 







|







 







|







248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
...
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
...
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
...
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
...
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
....
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
....
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
....
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
....
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
....
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m

    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code \
                        [list invited_res $w $xlib $jid $iqid $id $first 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code \
                        [list invited_res $w $xlib $jid $iqid $id $first 0]]

................................................................................
        set numhashes 0
        set cells {}

        foreach element $xmlElements {
            ::xmpp::xml::split $element tag xmlns attrs cdata subels
            switch -- $tag {
                cell {
                    set c [::xmpp::xml::getAttr $attrs col]
                    if {![string is integer -strict $c] || \
                            $c < 0 || $c >= $board_size} {
                        attention_message $gid \
                                [::msgcat::mc "\n\n Opponent sent incorrect\
                                               cell column"]
                        return [list error modify bad-request]
                    }
................................................................................
    array set board $boardlist
    foreach c [list -1 $board_size] {
        for {set r -1} {$r <= $board_size} {incr r} {
            set board($c,$r) 0
            set board($r,$c) 0
        }
    }

    array set size $sizes

    foreach {name number} $ships {
        for {set i 1} {$i <= $number} {incr i} {
            lassign [find_ship board $size($name)] status c1 r1 c2 r2

            if {!$status} {
................................................................................
                   -height [expr {($square_size + $line_width) *
                                  $board_size + $line_width}]]
    grid $board -row 1 -column 0 -columnspan 2 -sticky nw -padx 10 -pady 10

    set state(board) $board
    set state(show_last_move) $options(show_last_move)

    Frame $w.move
    grid $w.move -row 2 -column 0 -columnspan 2 -sticky wn
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.label -anchor w \
                        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.label -side left -anchor w

................................................................................
        for {set r 0} {$r < $board_size} {incr r} {
          set state(seed,$c,$r) \
           [rand 1000000000][rand 1000000000][rand 1000000000][rand 1000000000]
        }
    }

    make_random_position $gid

    predraw_position $gid
    update_controls $gid
    attention_message $gid \
            [::msgcat::mc "\n Drag and drop ships to desired locations, then\
                           click the 'Freeze ships position' button.\
                           \n Right mouse button switches horizontal\
                           and vertical ship orientation."]
................................................................................
    set board $state(board)

    set x [$board canvasx $x]
    set y [$board canvasy $y]

    $board itemconfigure dst_sq&&square -outline ""
    $board dtag dst_sq

    $board addtag dst_sq overlapping [expr {$x-1}] [expr {$y-1}] $x $y
    set tags [$board gettags dst_sq&&obackground]
    lassign [lindex $tags [lsearch $tags cr*]] cr c r
    $board addtag dst_sq withtag [list cr $c $r]&&square

    if {[is_my_move $gid] && [info exists state(position,mshot,$c,$r)] && \
            $state(position,mshot,$c,$r) == ""} {
        $board itemconfigure dst_sq&&square -outline red
        $board itemconfigure dst_sq&&reasonable&&square -outline blue
    }
}

................................................................................
    $board dtag dst_sq

    if {[is_my_move $gid]} {
        if {[start_do_move $gid $c $r $state(position,draw)]} {
            $board itemconfigure [list cr $c $r]&&square -outline ""
        }
    }

    update_controls $gid
    draw_position $gid

    highlight_last_move $gid
}

proc battleship::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid state

    $state(board) itemconfigure mlast -outline ""
    $state(board) itemconfigure olast -outline ""

    if {[catch {lassign $state(position,last_move) c r}]} {
        return
    }

    if {$state(show_last_move)} {
        set color white
    } else {
................................................................................
        $state(board) itemconfigure [list cr $c $r]&&olast -outline $color
    }
}

proc battleship::start_do_move {gid c r draw} {
    variable $gid
    upvar 0 $gid state

    if {$c == "" || $r == ""} {
        return 0
    }

    set my_move [is_my_move $gid]

    if {!$my_move} {
................................................................................
}

proc battleship::do_move {gid c r result draw} {
    variable options
    variable ships
    variable $gid
    upvar 0 $gid state

    if {$c == "" || $r == ""} {
        return 0
    }

    switch -- $result {
        destroy -
        hit { set hit 1 }
................................................................................

    find_reasonable_moves $gid $state(position,turn)

    set endgame 0
    if {[llength $state(reasonable_moves)] == 0} {
        set endgame 1
    }

    if {$endgame} {
        set total 0
        foreach {name size} $ships {
            incr total $size
        }
        if {[llength $state(position,destroyed_ships)] >= $total &&
                [llength $state(position,destroyed_my_ships)] < $total} {

Changes to bc/bc.tcl.

290
291
292
293
294
295
296
297
298
299
300
301
302
303
304

    if {[info exists game($chatid)]} {
        if {[info exists word($chatid,$jid)]} {
            set nick [get_nick $chatid $jid $type]
            message::send_msg $xlib $jid1 -type $type \
                -body "$nick: ${prefix}Предыдущее слово: $word($chatid,$jid)."
        }
        
        catch {unset word($chatid.$jid)}
        after idle [list [namespace current]::ask $chatid $jid]
    } else {
        chat::add_message $chatid $jid1 error "Игра не запущена" {}
    }
}








|







290
291
292
293
294
295
296
297
298
299
300
301
302
303
304

    if {[info exists game($chatid)]} {
        if {[info exists word($chatid,$jid)]} {
            set nick [get_nick $chatid $jid $type]
            message::send_msg $xlib $jid1 -type $type \
                -body "$nick: ${prefix}Предыдущее слово: $word($chatid,$jid)."
        }

        catch {unset word($chatid.$jid)}
        after idle [list [namespace current]::ask $chatid $jid]
    } else {
        chat::add_message $chatid $jid1 error "Игра не запущена" {}
    }
}

Changes to checkers/checkers.tcl.

280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
...
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
...
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
....
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
....
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
....
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    Message $wf.message3 -aspect 50000 -text $message3
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    pack $wf.message3 -pady 1m
    
    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                                      $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                                      $iqid $id $color 0]]

................................................................................
                }
                if {$c >= 2} {
                    lappend jumps(dn,$cr) \
                            [list [expr {$c - 1}] [expr {$r - 1}]] \
                            [list [expr {$c - 2}] [expr {$r - 2}]]
                }
            }
        
            for {set moves(d1,$cr) {}; \
                        set x [expr {$c+1}]; set y [expr {$r+1}]} \
                {($x < 8) && ($y < 8)} {incr x; incr y} {
                lappend moves(d1,$cr) [list $x $y]
            }
            for {set moves(d2,$cr) {}; \
                        set x [expr {$c-1}]; set y [expr {$r+1}]} \
................................................................................

    set flags(flip) 0
    set slm [Button $w.flip -text [::msgcat::mc "Flip view"] \
                -command [list [namespace current]::toggle_flip_view $gid]]
    pack $slm -side top -anchor w -fill x
    set flags(flip_button) $slm

    Frame $w.move 
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................
    $board dtag dst_sq

    lappend flags(current_move) $cr

    if {$options(allow_illegal) || [is_my_move $gid]} {
        do_move $gid $flags(current_move) $flags(position,draw)
    }
    
    update_controls $gid
    draw_position $gid

    unhighlight_legal_moves $gid

    highlight_last_move $gid
}
................................................................................

proc checkers::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure square -outline ""
    $flags(board) itemconfigure square -outline ""
    
    if {![info exists flags(position,last_move)]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
        set color2 yellow
................................................................................
        set suffix "="
    }
    add_move_to_history $gid $move $opt $suffix
    if {$draw && !$my_move} {
        attention_message $gid \
            [::msgcat::mc "\n\n Opponent proposes a draw\n\n"]
    }
        
    if {$my_move} {
        send_move $gid $move
    }

    if {$endgame} {
        if {$my_move} {
            # I win







|







 







|







 







|







 







|







 







|







 







|







280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
...
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
...
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
....
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
....
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
....
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    Message $wf.message3 -aspect 50000 -text $message3
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    pack $wf.message3 -pady 1m

    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                                      $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                                      $iqid $id $color 0]]

................................................................................
                }
                if {$c >= 2} {
                    lappend jumps(dn,$cr) \
                            [list [expr {$c - 1}] [expr {$r - 1}]] \
                            [list [expr {$c - 2}] [expr {$r - 2}]]
                }
            }

            for {set moves(d1,$cr) {}; \
                        set x [expr {$c+1}]; set y [expr {$r+1}]} \
                {($x < 8) && ($y < 8)} {incr x; incr y} {
                lappend moves(d1,$cr) [list $x $y]
            }
            for {set moves(d2,$cr) {}; \
                        set x [expr {$c-1}]; set y [expr {$r+1}]} \
................................................................................

    set flags(flip) 0
    set slm [Button $w.flip -text [::msgcat::mc "Flip view"] \
                -command [list [namespace current]::toggle_flip_view $gid]]
    pack $slm -side top -anchor w -fill x
    set flags(flip_button) $slm

    Frame $w.move
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................
    $board dtag dst_sq

    lappend flags(current_move) $cr

    if {$options(allow_illegal) || [is_my_move $gid]} {
        do_move $gid $flags(current_move) $flags(position,draw)
    }

    update_controls $gid
    draw_position $gid

    unhighlight_legal_moves $gid

    highlight_last_move $gid
}
................................................................................

proc checkers::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure square -outline ""
    $flags(board) itemconfigure square -outline ""

    if {![info exists flags(position,last_move)]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
        set color2 yellow
................................................................................
        set suffix "="
    }
    add_move_to_history $gid $move $opt $suffix
    if {$draw && !$my_move} {
        attention_message $gid \
            [::msgcat::mc "\n\n Opponent proposes a draw\n\n"]
    }

    if {$my_move} {
        send_move $gid $move
    }

    if {$endgame} {
        if {$my_move} {
            # I win

Changes to checkers/proto.

1
2
3
4
5
6
7
8
9
10
11
12
13
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='checkers:russian' board='8x8' color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>  
                                     -- if on black side played Kasparov
        <initboard>
            <set pos='0,0' color='white' type='rook'/>
            <set pos='1,0' color='white' type='knight'/>
        </initboard>
    </create>
</iq>





|







1
2
3
4
5
6
7
8
9
10
11
12
13
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='checkers:russian' board='8x8' color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>
                                     -- if on black side played Kasparov
        <initboard>
            <set pos='0,0' color='white' type='rook'/>
            <set pos='1,0' color='white' type='knight'/>
        </initboard>
    </create>
</iq>

Changes to chess/chess.tcl.

247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
...
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
...
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
...
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
...
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
....
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
....
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
....
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
....
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
....
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    
    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                                      $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                                      $iqid $id $color 0]]

................................................................................
                                }
                            }
                        }
                        set move 1
                        if {$options(sound) != "" && ![::sound::is_mute]} {
                            ::sound::play $options(sound)
                        }
                            
                    }
                }
            }
            resign {
                end_game $gid 1 [::msgcat::mc "You win (Opponent resigned)"]
                update_controls $gid
                draw_position $gid
................................................................................

    set flags(flip) 0
    set slm [Button $w.flip -text [::msgcat::mc "Flip view"] \
                -command [list [namespace current]::toggle_flip_view $gid]]
    pack $slm -side top -anchor w -fill x
    set flags(flip_button) $slm

    Frame $w.move 
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................

    for {set c 0} {$c < 8} {incr c} {
        for {set r 0} {$r < 8} {incr r} {
            $board addtag [list cr $c $r] withtag [list temp $c $r]
            $board dtag [list temp $c $r]
        }
    }
    
    button_update_relief $flags(flip_button) $flags(flip)
    draw_position $gid
    highlight_last_move $gid
}

proc chess::set_tooltips {args} {
    variable options
................................................................................
        cr c r
    $board dtag dst_sq

    if {$options(allow_illegal) || [is_my_move $gid]} {
        do_move $gid $flags(currentc) $flags(currentr) \
                $c $r "" $flags(position,draw)
    }
    
    update_controls $gid
    draw_position $gid

    unhighlight_legal_moves $gid

    highlight_last_move $gid
}
................................................................................

proc chess::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure square -outline ""
    $flags(board) itemconfigure square -outline ""
    
    if {[catch {lassign $flags(position,last_move) cf rf ct rt}]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
    } else {
................................................................................
    if {$flags(position,$ct,$rt) == "wk"} {
        set flags(position,wk,c) $ct
        set flags(position,wk,r) $rt
    } elseif {$flags(position,$ct,$rt) == "bk"} {
        set flags(position,bk,c) $ct
        set flags(position,bk,r) $rt
    }
        
    if {[is_white $flags(position,turn)]} {
        set p "w"
        set opp "b"
        set r 0
    } else {
        set p "b"
        set opp "w"
................................................................................

    set repetitions [add_to_repetitions $gid]

    if {$draw && !$my_move} {
        attention_message $gid \
            [::msgcat::mc "\n\n Opponent proposes a draw\n\n"]
    }
        
    if {$my_move} {
        send_move $gid $cf $rf $ct $rt $prm
    }

    if {$stalemate} {
        # Draw by stalemate
        end_game $gid 0.5 [::msgcat::mc "Draw (Stalemate)"]
................................................................................
proc chess::promotion:motion {c x y} {

    set x [$c canvasx $x]
    set y [$c canvasy $y]

    $c itemconfigure dst_sq&&square -outline ""
    $c dtag dst_sq
    
    $c addtag dst_sq overlapping $x $y $x $y
    set tags [$c gettags dst_sq&&background]
    set tag [lindex $tags [lsearch $tags fg*]]
    if {$tag != ""} {
        $c addtag dst_sq withtag $tag&&square
    }
    
    $c itemconfigure dst_sq&&square -outline blue
}

proc chess::promotion:leave {c x y} {
    $c itemconfigure dst_sq&&square -outline ""
    $c dtag dst_sq
}
................................................................................
        set flags(position,wk,c) $cf
        set flags(position,wk,r) $rf
    } elseif {$flags(position,$cf,$rf) == "bk"} {
        set flags(position,bk,c) $cf
        set flags(position,bk,r) $rf
    }
    if {$enpassantback != ""} {
        set flags(position,$enpassantx,$enpassanty) $enpassantback 
    }

    return $checks
}

proc chess::test_pawns {gid color c r} {
    variable moves







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|






|







 







|







247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
...
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
...
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
...
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
...
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
....
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
....
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
....
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
....
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
....
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m

    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                                      $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                                      $iqid $id $color 0]]

................................................................................
                                }
                            }
                        }
                        set move 1
                        if {$options(sound) != "" && ![::sound::is_mute]} {
                            ::sound::play $options(sound)
                        }

                    }
                }
            }
            resign {
                end_game $gid 1 [::msgcat::mc "You win (Opponent resigned)"]
                update_controls $gid
                draw_position $gid
................................................................................

    set flags(flip) 0
    set slm [Button $w.flip -text [::msgcat::mc "Flip view"] \
                -command [list [namespace current]::toggle_flip_view $gid]]
    pack $slm -side top -anchor w -fill x
    set flags(flip_button) $slm

    Frame $w.move
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................

    for {set c 0} {$c < 8} {incr c} {
        for {set r 0} {$r < 8} {incr r} {
            $board addtag [list cr $c $r] withtag [list temp $c $r]
            $board dtag [list temp $c $r]
        }
    }

    button_update_relief $flags(flip_button) $flags(flip)
    draw_position $gid
    highlight_last_move $gid
}

proc chess::set_tooltips {args} {
    variable options
................................................................................
        cr c r
    $board dtag dst_sq

    if {$options(allow_illegal) || [is_my_move $gid]} {
        do_move $gid $flags(currentc) $flags(currentr) \
                $c $r "" $flags(position,draw)
    }

    update_controls $gid
    draw_position $gid

    unhighlight_legal_moves $gid

    highlight_last_move $gid
}
................................................................................

proc chess::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure square -outline ""
    $flags(board) itemconfigure square -outline ""

    if {[catch {lassign $flags(position,last_move) cf rf ct rt}]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
    } else {
................................................................................
    if {$flags(position,$ct,$rt) == "wk"} {
        set flags(position,wk,c) $ct
        set flags(position,wk,r) $rt
    } elseif {$flags(position,$ct,$rt) == "bk"} {
        set flags(position,bk,c) $ct
        set flags(position,bk,r) $rt
    }

    if {[is_white $flags(position,turn)]} {
        set p "w"
        set opp "b"
        set r 0
    } else {
        set p "b"
        set opp "w"
................................................................................

    set repetitions [add_to_repetitions $gid]

    if {$draw && !$my_move} {
        attention_message $gid \
            [::msgcat::mc "\n\n Opponent proposes a draw\n\n"]
    }

    if {$my_move} {
        send_move $gid $cf $rf $ct $rt $prm
    }

    if {$stalemate} {
        # Draw by stalemate
        end_game $gid 0.5 [::msgcat::mc "Draw (Stalemate)"]
................................................................................
proc chess::promotion:motion {c x y} {

    set x [$c canvasx $x]
    set y [$c canvasy $y]

    $c itemconfigure dst_sq&&square -outline ""
    $c dtag dst_sq

    $c addtag dst_sq overlapping $x $y $x $y
    set tags [$c gettags dst_sq&&background]
    set tag [lindex $tags [lsearch $tags fg*]]
    if {$tag != ""} {
        $c addtag dst_sq withtag $tag&&square
    }

    $c itemconfigure dst_sq&&square -outline blue
}

proc chess::promotion:leave {c x y} {
    $c itemconfigure dst_sq&&square -outline ""
    $c dtag dst_sq
}
................................................................................
        set flags(position,wk,c) $cf
        set flags(position,wk,r) $rf
    } elseif {$flags(position,$cf,$rf) == "bk"} {
        set flags(position,bk,c) $cf
        set flags(position,bk,r) $rf
    }
    if {$enpassantback != ""} {
        set flags(position,$enpassantx,$enpassanty) $enpassantback
    }

    return $checks
}

proc chess::test_pawns {gid color c r} {
    variable moves

Changes to chess/proto.

1
2
3
4
5
6
7
8
9
10
11
12
13
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='chess' board='8x8' color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>  
                                     -- if on black side played Kasparov
        <initboard>
            <set pos='0,0' color='white' type='rook'/>
            <set pos='1,0' color='white' type='knight'/>
        </initboard>
    </create>
</iq>





|







1
2
3
4
5
6
7
8
9
10
11
12
13
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='chess' board='8x8' color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>
                                     -- if on black side played Kasparov
        <initboard>
            <set pos='0,0' color='white' type='rook'/>
            <set pos='1,0' color='white' type='knight'/>
        </initboard>
    </create>
</iq>

Changes to custom-urls/custom-urls.tcl.

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
        if {$type != "text"} {
            # pass through
            lappend out $s $type $tags
            continue
        }

        set ix 0; set xs 0; set xe 0; set num {}
        
        while {[spot_url $s $ix xs xe t num]} {
            if {$xs - $ix > 0} {
                # dump chunk before URL
                lappend out [string range $s $ix [expr {$xs - 1}]] $type $tags
            }

            set text [string range $s $xs $xe]







|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
        if {$type != "text"} {
            # pass through
            lappend out $s $type $tags
            continue
        }

        set ix 0; set xs 0; set xe 0; set num {}

        while {[spot_url $s $ix xs xe t num]} {
            if {$xs - $ix > 0} {
                # dump chunk before URL
                lappend out [string range $s $ix [expr {$xs - 1}]] $type $tags
            }

            set text [string range $s $xs $xe]

Changes to filters/filters.tcl.

351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
proc filters::insert_item {f tag val menu} {
    variable items
    variable fromtag

    if {[llength $items($f)]} {
        set n [lindex $items($f) end]
        incr n
    } else { 
        set n 0
    }

    # TODO: hiding entry for some tags
    eval [list OptionMenu $f.mb$n $f.mb$n.var] $menu
    global $f.mb$n.var
    set $f.mb$n.var $fromtag($tag)







|







351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
proc filters::insert_item {f tag val menu} {
    variable items
    variable fromtag

    if {[llength $items($f)]} {
        set n [lindex $items($f) end]
        incr n
    } else {
        set n 0
    }

    # TODO: hiding entry for some tags
    eval [list OptionMenu $f.mb$n $f.mb$n.var] $menu
    global $f.mb$n.var
    set $f.mb$n.var $fromtag($tag)

Changes to floatinglog/ChangeLog.

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
Version 0.4

2007-08-26  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Double click on FloatingLog opens Tkabber window
	 
	 * You can off incoming message body show (it will show "Incoming message" string). 
	   Option "show_message_body". Default is on.

	 * New default scheme of incoming message view.
	   You can use old (simple) scheme by checking "simple_show_scheme" option.

	 * Some bags fixed

Version 0.3.1

2007-06-28  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * You can off FloatingLog in away, xa, dnd status 
	 
	 * You can choose if FloatingLog will show messages on active Tkabber window


Version 0.3

2007-06-28  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Hide FloatingLog window on rigth button mouse click
	 
	 * Do not show messages on active Tkabber window

	 * Use default colors from Tkabber for FloatingLog window


Version 0.2

2007-06-06  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Do not show history messages from groupchat (on connecting to groupchat).
	 
	 * Do not show idle messages.

	 * Options for on/off messages from chat, groupchat, other messages.


Version 0.1

2007-06-03  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Initial version (0.1). For test only.

	 * Show incoming messages and status messages in popup window





|
|











|
|








|










|












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
Version 0.4

2007-08-26  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Double click on FloatingLog opens Tkabber window

	 * You can off incoming message body show (it will show "Incoming message" string).
	   Option "show_message_body". Default is on.

	 * New default scheme of incoming message view.
	   You can use old (simple) scheme by checking "simple_show_scheme" option.

	 * Some bags fixed

Version 0.3.1

2007-06-28  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * You can off FloatingLog in away, xa, dnd status

	 * You can choose if FloatingLog will show messages on active Tkabber window


Version 0.3

2007-06-28  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Hide FloatingLog window on rigth button mouse click

	 * Do not show messages on active Tkabber window

	 * Use default colors from Tkabber for FloatingLog window


Version 0.2

2007-06-06  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Do not show history messages from groupchat (on connecting to groupchat).

	 * Do not show idle messages.

	 * Options for on/off messages from chat, groupchat, other messages.


Version 0.1

2007-06-03  Rakhmanin Ruslan <rakhmaninr@mail.ru>

	 * Initial version (0.1). For test only.

	 * Show incoming messages and status messages in popup window

Changes to floatinglog/floatinglog.tcl.

91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
...
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
...
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
...
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
...
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
...
434
435
436
437
438
439
440
441
442
443
        [::msgcat::mc "Show in \"Do not disturb\" status."] \
        -type boolean -group {Floating Log Control}

    custom::defvar options(show_message_body) 1 \
        [::msgcat::mc "Show incoming message body."] \
        -type boolean -group {Floating Log Control}

    
    custom::defvar options(simple_show_scheme) 0 \
        [::msgcat::mc "Use simple view scheme."] \
        -type boolean -group {Floating Log Window}

    custom::defvar options(alpha) 80 \
        [::msgcat::mc "Window opacity (in percent)."] \
        -command [list [namespace current]::set_window] \
................................................................................
        destroy $winname
    }

    toplevel $winname -bd 0 -class Balloon
    if {$::tcl_platform(platform) == "macintosh"} {
        catch {unsupported1 style $winname floating sideTitlebar}
    } elseif {$::aquaP} {
        ::tk::unsupported::MacWindowStyle style $winname help none    
    } else {
        wm transient $winname .
        wm overrideredirect $winname 1
    }

    catch {
        if {[lsearch -exact [wm attributes $winname] -topmost] >= 0} {
................................................................................
            after cancel $id
        }
    }
    if {[winfo exists $winname]} {
        destroy $winname
    }
}
 
proc floatinglog::left_double_click {} {
    ::ifacetk::systray::restore
    if {[focus] == ""} {
        focus -force .
    }
}

................................................................................
            bind $message_name <Double-ButtonPress-1> \
                 +[list [namespace current]::left_double_click_message \
                        $xlib [double% $from] [double% $type]]
        }
        after [expr {$options(livetime) * 1000}] \
              [namespace current]::del_text "$message_name"
    }
} 

proc floatinglog::add_text_scheme_01 {text from xlib type is_subject subject} {
    variable options
    variable id
    variable winname
    variable logfileId

................................................................................
        if {$from != ""} {
            pack $message_name_head -before $first_message \
                                    -side bottom -fill x -padx 2 -pady 0
        }
    }

    if {($xlib != "") && ($from != "") && ($type != "")} {
        if {$from != ""} { 
            bind $message_name_head <Double-ButtonPress-1> \
                 +[list [namespace current]::left_double_click_message \
                        $xlib [double% $from] [double% $type]]
        }
        if {$text != "" } { 
            bind $message_name <Double-ButtonPress-1> \
                 +[list [namespace current]::left_double_click_message \
                        $xlib [double% $from] [double% $type]]
        }
    }
    if {$text != ""} {
        after [expr {$options(livetime) * 1000}] \
................................................................................
    variable options

    if {$body != ""} {
        switch -exact -- $type {
            chat {
                if {!$options(show_chat)} return
            }
            groupchat { 
                if {!$options(show_groupchat)} return
                if {[::xmpp::delay::exists $x]} return
                if {![catch {
                    ::plugins::mucignore::is_ignored $xlib $from $type
                } ignore] && $ignore != ""} return
                if {$options(show_only_personal)} {
                    set chatid [chat::chatid $xlib \
................................................................................
            wm attributes $winname -alpha [expr $options(alpha) / 100.0]
        }
    }
    wm minsize $winname $options(width) 10
    wm maxsize $winname $options(width) $options(max_height)
    wm geometry $winname $options(position)
    raise $winname
} 

# vim:ts=8:sw=4:sts=4:et







|







 







|







 







|







 







|







 







|




|







 







|







 







|


91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
...
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
...
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
...
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
...
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
...
434
435
436
437
438
439
440
441
442
443
        [::msgcat::mc "Show in \"Do not disturb\" status."] \
        -type boolean -group {Floating Log Control}

    custom::defvar options(show_message_body) 1 \
        [::msgcat::mc "Show incoming message body."] \
        -type boolean -group {Floating Log Control}


    custom::defvar options(simple_show_scheme) 0 \
        [::msgcat::mc "Use simple view scheme."] \
        -type boolean -group {Floating Log Window}

    custom::defvar options(alpha) 80 \
        [::msgcat::mc "Window opacity (in percent)."] \
        -command [list [namespace current]::set_window] \
................................................................................
        destroy $winname
    }

    toplevel $winname -bd 0 -class Balloon
    if {$::tcl_platform(platform) == "macintosh"} {
        catch {unsupported1 style $winname floating sideTitlebar}
    } elseif {$::aquaP} {
        ::tk::unsupported::MacWindowStyle style $winname help none
    } else {
        wm transient $winname .
        wm overrideredirect $winname 1
    }

    catch {
        if {[lsearch -exact [wm attributes $winname] -topmost] >= 0} {
................................................................................
            after cancel $id
        }
    }
    if {[winfo exists $winname]} {
        destroy $winname
    }
}

proc floatinglog::left_double_click {} {
    ::ifacetk::systray::restore
    if {[focus] == ""} {
        focus -force .
    }
}

................................................................................
            bind $message_name <Double-ButtonPress-1> \
                 +[list [namespace current]::left_double_click_message \
                        $xlib [double% $from] [double% $type]]
        }
        after [expr {$options(livetime) * 1000}] \
              [namespace current]::del_text "$message_name"
    }
}

proc floatinglog::add_text_scheme_01 {text from xlib type is_subject subject} {
    variable options
    variable id
    variable winname
    variable logfileId

................................................................................
        if {$from != ""} {
            pack $message_name_head -before $first_message \
                                    -side bottom -fill x -padx 2 -pady 0
        }
    }

    if {($xlib != "") && ($from != "") && ($type != "")} {
        if {$from != ""} {
            bind $message_name_head <Double-ButtonPress-1> \
                 +[list [namespace current]::left_double_click_message \
                        $xlib [double% $from] [double% $type]]
        }
        if {$text != "" } {
            bind $message_name <Double-ButtonPress-1> \
                 +[list [namespace current]::left_double_click_message \
                        $xlib [double% $from] [double% $type]]
        }
    }
    if {$text != ""} {
        after [expr {$options(livetime) * 1000}] \
................................................................................
    variable options

    if {$body != ""} {
        switch -exact -- $type {
            chat {
                if {!$options(show_chat)} return
            }
            groupchat {
                if {!$options(show_groupchat)} return
                if {[::xmpp::delay::exists $x]} return
                if {![catch {
                    ::plugins::mucignore::is_ignored $xlib $from $type
                } ignore] && $ignore != ""} return
                if {$options(show_only_personal)} {
                    set chatid [chat::chatid $xlib \
................................................................................
            wm attributes $winname -alpha [expr $options(alpha) / 100.0]
        }
    }
    wm minsize $winname $options(width) 10
    wm maxsize $winname $options(width) $options(max_height)
    wm geometry $winname $options(position)
    raise $winname
}

# vim:ts=8:sw=4:sts=4:et

Changes to georoster/howto.txt.

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[ howto.txt - Wed Apr  9 14:49:00 2003 - the georoster plugin - /mtr ]


0.  configuration options:
    
    # automatically open GeoRoster window
    set georoster::options(automatic) 1
    
    # show cities on map (none, markers, or all)
    set georoster::options(showcities) all
    
    # file defining city names & locations, localized for XX
    set georoster::options(citiesfile) .../earth.XX
    
    # file defining ISO 3166 country codes
    set georoster::options(3166file) iso3166
    
    # default country to use, if unspecified in vCard
    set georoster::options(default_country) us
    
    # file defining region/locality names & locations, for country XX
    set georoster::options(coords,XX) .../XX.coords
    
    # file containing gif to use as background for map
    set georoster::options(mapfile) .../bwmap2.gif
    
    # procedures to map from x/y to lo/la, and back again
    proc georoster::lo {x  y}
    proc georoster::la {x  y}
    proc georoster::x  {lo la}
    proc georoster::y  {lo la}

    # hook to locate a given jid:
    
    proc XX {jid update} {
        if {$success} {
            eval $update [list $la $lo]
            return stop
        }
    }
    
    hook::add georoster:locate_hook [namespace current]::XX
    

1.  how it works (manual mode)
    
    you are free to drag-and-drop entries from your roster to arbitrary
    locations on the GeoRoster window.
    
    click on "Store" to save those values.


2.  how it works (automatic mode)

        set georoster::options(check_vcard) 1
    
    whenever someone on your roster updates their presence, tkabber with
    fetch their vCard.
    
    if the vCard contains lat/long coordinates, those values are used
    directly.
    
    otherwise, tkabber tries to figure out the country associated with
    the user using:
    
        - country information from the vCard, if present
        - country information from the jid (e.g., fred@example.XX),
          if it's a 3166 code
        - country information from the vCard email address, if present
        - otherwise, the georoster::options(default_country) is used
    
    now, there's a switch statement that knows how to find someone,
    based on the addressing information in the vCard (locality, region,
    pcode) for a given country code.
    
    at present, there's only one case in the switch, for "us" -- it does
    an HTTP lookup at www.census.gov.
    
        if you know of a similar service for other countries, please
        contribute code!
    
    if there isn't a lookup routine, or if the routine fails, then a
    coordinates file for the country code is consulted. this file maps
    region/locality information to coordinates.
    
        if you know of coordinate information for a given country code,
        please contribute to the relevant the coordinates file.

    finally, if there isn't a match based on the vCard, then the
    georoster:locate_hook is invoked.

    
3.  coordinates files
    
    a coordinates file contains two parts. the first part does
    normalization of region names, and the second part maps
    region/locality name pairs to coordinates.
    
    the file itself consists of tab-separated fields, containing
    lower-case strings
    
    take a look at .../us.coords for an example.
    
                                  #######




|


|


|


|


|


|


|


|







|






|

|


|


|






|


|


|


|





|



|


|


|



|






|

|



|


|

|

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[ howto.txt - Wed Apr  9 14:49:00 2003 - the georoster plugin - /mtr ]


0.  configuration options:

    # automatically open GeoRoster window
    set georoster::options(automatic) 1

    # show cities on map (none, markers, or all)
    set georoster::options(showcities) all

    # file defining city names & locations, localized for XX
    set georoster::options(citiesfile) .../earth.XX

    # file defining ISO 3166 country codes
    set georoster::options(3166file) iso3166

    # default country to use, if unspecified in vCard
    set georoster::options(default_country) us

    # file defining region/locality names & locations, for country XX
    set georoster::options(coords,XX) .../XX.coords

    # file containing gif to use as background for map
    set georoster::options(mapfile) .../bwmap2.gif

    # procedures to map from x/y to lo/la, and back again
    proc georoster::lo {x  y}
    proc georoster::la {x  y}
    proc georoster::x  {lo la}
    proc georoster::y  {lo la}

    # hook to locate a given jid:

    proc XX {jid update} {
        if {$success} {
            eval $update [list $la $lo]
            return stop
        }
    }

    hook::add georoster:locate_hook [namespace current]::XX


1.  how it works (manual mode)

    you are free to drag-and-drop entries from your roster to arbitrary
    locations on the GeoRoster window.

    click on "Store" to save those values.


2.  how it works (automatic mode)

        set georoster::options(check_vcard) 1

    whenever someone on your roster updates their presence, tkabber with
    fetch their vCard.

    if the vCard contains lat/long coordinates, those values are used
    directly.

    otherwise, tkabber tries to figure out the country associated with
    the user using:

        - country information from the vCard, if present
        - country information from the jid (e.g., fred@example.XX),
          if it's a 3166 code
        - country information from the vCard email address, if present
        - otherwise, the georoster::options(default_country) is used

    now, there's a switch statement that knows how to find someone,
    based on the addressing information in the vCard (locality, region,
    pcode) for a given country code.

    at present, there's only one case in the switch, for "us" -- it does
    an HTTP lookup at www.census.gov.

        if you know of a similar service for other countries, please
        contribute code!

    if there isn't a lookup routine, or if the routine fails, then a
    coordinates file for the country code is consulted. this file maps
    region/locality information to coordinates.

        if you know of coordinate information for a given country code,
        please contribute to the relevant the coordinates file.

    finally, if there isn't a match based on the vCard, then the
    georoster:locate_hook is invoked.


3.  coordinates files

    a coordinates file contains two parts. the first part does
    normalization of region names, and the second part maps
    region/locality name pairs to coordinates.

    the file itself consists of tab-separated fields, containing
    lower-case strings

    take a look at .../us.coords for an example.

                                  #######

Changes to georoster/msgs/es.msg.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        "País por defecto para usar cuando se busca un vCard."
::msgcat::mcset es "Display users who are no longer available." \
        "Mostrar usuarios que no están disponibles."
::msgcat::mcset es "Don't show cities" "No mostrar ciudades"
::msgcat::mcset es "Georoster plugin options." "Opciones del plugin Georoster."
::msgcat::mcset es "Georoster" "Georoster"
::msgcat::mcset es "Latitude: %.2f  Longitude: %.2f" \
        "Latitud: %.2f  Longitud: %.2f" 
::msgcat::mcset es "Plugins options." "Opciones de plugins."
::msgcat::mcset es "Show city markers and names" \
        "Mostrar marcadores y nombres de las ciudades"
::msgcat::mcset es "Show only city markers" \
        "Mostrar solo los marcadores de ciudades"
::msgcat::mcset es "Specify how to show cities at the map." \
        "Especificar como mostrar las ciudades en el mapa."
::msgcat::mcset es "Store" "Almacenar"
::msgcat::mcset es "Whether the Georoster plugin is loaded." \
        "Cargar el plugin Georoster."

# vim:ft=tcl:ts=8:sw=4:sts=4:et







|












13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        "País por defecto para usar cuando se busca un vCard."
::msgcat::mcset es "Display users who are no longer available." \
        "Mostrar usuarios que no están disponibles."
::msgcat::mcset es "Don't show cities" "No mostrar ciudades"
::msgcat::mcset es "Georoster plugin options." "Opciones del plugin Georoster."
::msgcat::mcset es "Georoster" "Georoster"
::msgcat::mcset es "Latitude: %.2f  Longitude: %.2f" \
        "Latitud: %.2f  Longitud: %.2f"
::msgcat::mcset es "Plugins options." "Opciones de plugins."
::msgcat::mcset es "Show city markers and names" \
        "Mostrar marcadores y nombres de las ciudades"
::msgcat::mcset es "Show only city markers" \
        "Mostrar solo los marcadores de ciudades"
::msgcat::mcset es "Specify how to show cities at the map." \
        "Especificar como mostrar las ciudades en el mapa."
::msgcat::mcset es "Store" "Almacenar"
::msgcat::mcset es "Whether the Georoster plugin is loaded." \
        "Cargar el plugin Georoster."

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to georoster/msgs/nl.msg.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#       Dutch messages for the Georoster Tkabber plugin.
#
# Author: Sander Devrieze <s.devrieze@pandora.be>

::msgcat::mcset nl "Georoster" "Georoster"
::msgcat::mcset nl "Store" "Opslaan"
::msgcat::mcset nl "Latitude: %.2f  Longitude: %.2f" \
        "Breedtegraad: %.2f  Lengtegraad: %.2f" 
::msgcat::mcset nl "Automatically open Georoster window." \
        "Venster van Georoster automatisch openen."
::msgcat::mcset nl "Automatically look at vCard to find users coordinates." \
        "Automatisch in vCard kijken om de coördinaten van gebruikers te\
        vinden."
::msgcat::mcset nl "Display users who are no longer available." \
        "Toon gebruikers die niet langer beschikbaar zijn."







|







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#       Dutch messages for the Georoster Tkabber plugin.
#
# Author: Sander Devrieze <s.devrieze@pandora.be>

::msgcat::mcset nl "Georoster" "Georoster"
::msgcat::mcset nl "Store" "Opslaan"
::msgcat::mcset nl "Latitude: %.2f  Longitude: %.2f" \
        "Breedtegraad: %.2f  Lengtegraad: %.2f"
::msgcat::mcset nl "Automatically open Georoster window." \
        "Venster van Georoster automatisch openen."
::msgcat::mcset nl "Automatically look at vCard to find users coordinates." \
        "Automatisch in vCard kijken om de coördinaten van gebruikers te\
        vinden."
::msgcat::mcset nl "Display users who are no longer available." \
        "Toon gebruikers die niet langer beschikbaar zijn."

Changes to gmail/gmail.tcl.

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
...
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
                            -unloadcommand [namespace code unload]
        return
    }

    custom::defgroup Plugins \
        [::msgcat::mc "Plugins options."] \
        -group Tkabber
    
    custom::defgroup {Gmail Notifications} \
        [::msgcat::mc "Google Talk XMPP extensions."] \
        -group Plugins
    
    custom::defvar options(gmail_notifications) 1 \
        [::msgcat::mc "Request Gmail notifications."] \
        -type boolean -group {Gmail Notifications} \
        -command [namespace current]::request_all_notifications

    custom::defvar options(delete_old_notifications) 1 \
        [::msgcat::mc "Delete Gmail notifications, which are\
................................................................................

#############################################################################

proc gmail::fill_tree {jid xmlList} {
    if {[llength $xmlList] == 0} {
        return
    }
    
    open_window

    foreach xml $xmlList {
        ::xmpp::xml::split $xml tag xmlns attrs cdata subels

        switch -- $tag {
            mail-thread-info {
................................................................................
                }
            }
            subject {
                set subject $cdata
            }
        }
    }
    
    set snode [str2node "$tid $jid"]
    if {[$tw exists $snode]} {
        $tw delete [list $snode]
    }

    set timestamp [clock format [string range $date 0 end-3] \
                                -format $options(timestamp_format)]







|



|







 







|







 







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
...
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
                            -unloadcommand [namespace code unload]
        return
    }

    custom::defgroup Plugins \
        [::msgcat::mc "Plugins options."] \
        -group Tkabber

    custom::defgroup {Gmail Notifications} \
        [::msgcat::mc "Google Talk XMPP extensions."] \
        -group Plugins

    custom::defvar options(gmail_notifications) 1 \
        [::msgcat::mc "Request Gmail notifications."] \
        -type boolean -group {Gmail Notifications} \
        -command [namespace current]::request_all_notifications

    custom::defvar options(delete_old_notifications) 1 \
        [::msgcat::mc "Delete Gmail notifications, which are\
................................................................................

#############################################################################

proc gmail::fill_tree {jid xmlList} {
    if {[llength $xmlList] == 0} {
        return
    }

    open_window

    foreach xml $xmlList {
        ::xmpp::xml::split $xml tag xmlns attrs cdata subels

        switch -- $tag {
            mail-thread-info {
................................................................................
                }
            }
            subject {
                set subject $cdata
            }
        }
    }

    set snode [str2node "$tid $jid"]
    if {[$tw exists $snode]} {
        $tw delete [list $snode]
    }

    set timestamp [clock format [string range $date 0 end-3] \
                                -format $options(timestamp_format)]

Changes to jidlink/plugins/filetransfer.tcl.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
...
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
#       This file is a part of Jidlink Tkabber plugin. It implements
#       file transfer via Jidlink.

namespace eval ftjl {
    set winid 0
    set id 0
    set chunk_size 1024
    
    variable options

    custom::defgroup Jidlink \
        [::msgcat::mc "Jidlink options."] \
        -group {File Transfer}
}

................................................................................
    set pbvar [namespace current]::progress$f.pb
    Progressbar $f.pb -variable $pbvar
    $f.pb configure -maximum $size
    set $pbvar 0

    grid $f.lname   -row 0 -column 0 -sticky e
    grid $f.name    -row 0 -column 1 -sticky w
    
    grid $f.lsize   -row 1 -column 0 -sticky e
    grid $f.size    -row 1 -column 1 -sticky w
    
    grid $f.ldesc   -row 2 -column 0 -sticky en
    grid $f.desc    -row 2 -column 1 -sticky ewns -columnspan 2 -pady 1m

    grid $f.lsaveas -row 3 -column 0 -sticky e
    grid $f.saveas  -row 3 -column 1 -sticky ew
    grid $f.browsefile  -row 3 -column 2 -sticky ew

    grid $f.pb      -row 4 -column 0 -sticky ew -columnspan 3 -pady 2m

    grid columnconfigure $f 1 -weight 1 -minsize 8c
    grid rowconfigure $f 2 -weight 1
    
    $w add -text [::msgcat::mc "Receive"] -command \
        [list [namespace current]::recv_file_start \
              $winid $size $pbvar $xlib $from $lang $id]
    $w add -text [::msgcat::mc "Cancel"] -command \
        [list [namespace current]::recv_file_cancel $winid $lang]
    bind .rfd$winid <Destroy> \
            [list [namespace current]::recv_file_failed $winid $lang]
................................................................................
        set fsize [file size $files(filename,$key)]
        unset files(filename,$key)
        set_status [::msgcat::mc "Connection closed"]
    }
    if {[winfo exists .rfd$winid]} {
        bind .rfd$winid <Destroy> {}
        destroy .rfd$winid
        
        if {$fsize != $size} {
            if {$fsize < $size} {
                set msg "Transfer interrupted (File size is too small)"
            } else {
                set msg "File size is too large"
            }
            after idle \







|







 







|


|











|







 







|







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
...
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
#       This file is a part of Jidlink Tkabber plugin. It implements
#       file transfer via Jidlink.

namespace eval ftjl {
    set winid 0
    set id 0
    set chunk_size 1024

    variable options

    custom::defgroup Jidlink \
        [::msgcat::mc "Jidlink options."] \
        -group {File Transfer}
}

................................................................................
    set pbvar [namespace current]::progress$f.pb
    Progressbar $f.pb -variable $pbvar
    $f.pb configure -maximum $size
    set $pbvar 0

    grid $f.lname   -row 0 -column 0 -sticky e
    grid $f.name    -row 0 -column 1 -sticky w

    grid $f.lsize   -row 1 -column 0 -sticky e
    grid $f.size    -row 1 -column 1 -sticky w

    grid $f.ldesc   -row 2 -column 0 -sticky en
    grid $f.desc    -row 2 -column 1 -sticky ewns -columnspan 2 -pady 1m

    grid $f.lsaveas -row 3 -column 0 -sticky e
    grid $f.saveas  -row 3 -column 1 -sticky ew
    grid $f.browsefile  -row 3 -column 2 -sticky ew

    grid $f.pb      -row 4 -column 0 -sticky ew -columnspan 3 -pady 2m

    grid columnconfigure $f 1 -weight 1 -minsize 8c
    grid rowconfigure $f 2 -weight 1

    $w add -text [::msgcat::mc "Receive"] -command \
        [list [namespace current]::recv_file_start \
              $winid $size $pbvar $xlib $from $lang $id]
    $w add -text [::msgcat::mc "Cancel"] -command \
        [list [namespace current]::recv_file_cancel $winid $lang]
    bind .rfd$winid <Destroy> \
            [list [namespace current]::recv_file_failed $winid $lang]
................................................................................
        set fsize [file size $files(filename,$key)]
        unset files(filename,$key)
        set_status [::msgcat::mc "Connection closed"]
    }
    if {[winfo exists .rfd$winid]} {
        bind .rfd$winid <Destroy> {}
        destroy .rfd$winid

        if {$fsize != $size} {
            if {$fsize < $size} {
                set msg "Transfer interrupted (File size is too small)"
            } else {
                set msg "File size is too large"
            }
            after idle \

Changes to jidlink/plugins/ibb.tcl.

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
...
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
                    -xmlns jabber:iq:ibb \
                    -subelement [::xmpp::xml::create comment \
                                    -subelement [::xmpp::xml::create key \
                                                        -cdata $key]]] \
        -to $jid \
        -command [list [namespace current]::recv_connect_response \
                       $xlib $jid $key]
         
    vwait [namespace current]::connection(status,$key)
}

proc ibb::recv_connect_response {xlib jid key status xml} {
    variable connection

    if {$status != "ok"} {
................................................................................
                if {[catch {set decoded [base64::decode $data]}]} {
                    # TODO
                    debugmsg jidlink "IBB: WRONG DATA"
                } else {
                    debugmsg jidlink "IBB: RECV DATA [list $data]"
                    jidlink::recv_data $stream_key($streamid) $decoded
                }
                
            }
            
            if {[info exists close]} {
                jidlink::closed $stream_key($streamid)
            }

            return [list result ""]
        } else {
            # TODO







|







 







|
|
<







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
...
196
197
198
199
200
201
202
203
204

205
206
207
208
209
210
211
                    -xmlns jabber:iq:ibb \
                    -subelement [::xmpp::xml::create comment \
                                    -subelement [::xmpp::xml::create key \
                                                        -cdata $key]]] \
        -to $jid \
        -command [list [namespace current]::recv_connect_response \
                       $xlib $jid $key]

    vwait [namespace current]::connection(status,$key)
}

proc ibb::recv_connect_response {xlib jid key status xml} {
    variable connection

    if {$status != "ok"} {
................................................................................
                if {[catch {set decoded [base64::decode $data]}]} {
                    # TODO
                    debugmsg jidlink "IBB: WRONG DATA"
                } else {
                    debugmsg jidlink "IBB: RECV DATA [list $data]"
                    jidlink::recv_data $stream_key($streamid) $decoded
                }
            }


            if {[info exists close]} {
                jidlink::closed $stream_key($streamid)
            }

            return [list result ""]
        } else {
            # TODO

Changes to latex/latex.tcl.

200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
    set chatw [chat::chat_win $chatid]

    set bgopt [option get $chatw background Chat]
    if {$bgopt == ""} {
        set bgopt white
    }
    set bg [get_rgb_color $chatw $bgopt]
    
    set fgopt [option get $chatw foreground Chat]
    if {$fgopt == ""} {
        set fgopt black
    }
    set fg [get_rgb_color $chatw $fgopt]
}








|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
    set chatw [chat::chat_win $chatid]

    set bgopt [option get $chatw background Chat]
    if {$bgopt == ""} {
        set bgopt white
    }
    set bg [get_rgb_color $chatw $bgopt]

    set fgopt [option get $chatw foreground Chat]
    if {$fgopt == ""} {
        set fgopt black
    }
    set fg [get_rgb_color $chatw $fgopt]
}

Changes to mute/mute.tcl.

123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
...
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
    foreach id $ids {
        $w add -text "$id: $desc($id)" \
            -command [list [namespace current]::subscribe_request \
                           $xlib $jid $id]
    }

    $w add -text Cancel -command [list destroy $w]
    
    $w draw
}

proc mute::editor::subscribe_request {xlib jid id} {
    ::xmpp::sendIQ $xlib set \
        -query [::xmpp::xml::create subscribe \
                        -xmlns $::NS(mute_ancestor) \
................................................................................
   8.1. Banning a User
   8.2. Modifying the Ban List
   8.3. Granting Membership
   8.4. Revoking Membership
   8.5. Modifying the Member List
   8.6. Granting Moderator Privileges
   8.7. Revoking Moderator Privileges
   8.8. Modifying the Moderator List  
...
"

    set txts(text,id2) ""
}

proc mute::ancestor::send_text {xlib jid id} {







|







 







|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
...
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
    foreach id $ids {
        $w add -text "$id: $desc($id)" \
            -command [list [namespace current]::subscribe_request \
                           $xlib $jid $id]
    }

    $w add -text Cancel -command [list destroy $w]

    $w draw
}

proc mute::editor::subscribe_request {xlib jid id} {
    ::xmpp::sendIQ $xlib set \
        -query [::xmpp::xml::create subscribe \
                        -xmlns $::NS(mute_ancestor) \
................................................................................
   8.1. Banning a User
   8.2. Modifying the Ban List
   8.3. Granting Membership
   8.4. Revoking Membership
   8.5. Modifying the Member List
   8.6. Granting Moderator Privileges
   8.7. Revoking Moderator Privileges
   8.8. Modifying the Moderator List
...
"

    set txts(text,id2) ""
}

proc mute::ancestor::send_text {xlib jid id} {

Changes to osd/osd.tcl.

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
...
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
    }
}

proc ::osd::presence_notify {xlib from type x args} {
    variable statuses

    if {[catch  { set nick [get_nick $xlib $from chat] }]} {
        set nick "$from" 
    }
    
    if {"$nick" != "$from"} { 
        set thefrom "$nick ($from)" 
    } else { 
        set thefrom "$from" 
    }
    if {"$type" == ""} {
        set type "available"
    }

    set status ""
    set show ""
................................................................................
        set status " ($status)"
    }
    if {"$show" != ""} {
        set type "$type/$show"
    }

    set newstatus "$thefrom: $type$status"
    
    if {[catch { set oldstatus $statuses($from) } ]} {
        set oldstatus "$newstatus"
    }

    if {"$newstatus" != "$oldstatus"} {
        osd::try_write "$newstatus"
    }
................................................................................
proc ::osd::chat_message_notify {chatid from type body extras} {
    if {[chat::is_our_jid $chatid $from] || $type ne "chat"} {
        return
    }

    foreach xelem $extras {
        ::xmpp::xml::split $xelem tag xmlns attrs cdata subels
        
        # Don't notify if this 'empty' tag is present. It indicates
        # messages history in chat window.
        if {[string equal $tag ""] && [string equal $xmlns tkabber:x:nolog]} {
            return
        }
    }








|

|
|
|
|
|







 







|







 







|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
...
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
    }
}

proc ::osd::presence_notify {xlib from type x args} {
    variable statuses

    if {[catch  { set nick [get_nick $xlib $from chat] }]} {
        set nick "$from"
    }

    if {"$nick" != "$from"} {
        set thefrom "$nick ($from)"
    } else {
        set thefrom "$from"
    }
    if {"$type" == ""} {
        set type "available"
    }

    set status ""
    set show ""
................................................................................
        set status " ($status)"
    }
    if {"$show" != ""} {
        set type "$type/$show"
    }

    set newstatus "$thefrom: $type$status"

    if {[catch { set oldstatus $statuses($from) } ]} {
        set oldstatus "$newstatus"
    }

    if {"$newstatus" != "$oldstatus"} {
        osd::try_write "$newstatus"
    }
................................................................................
proc ::osd::chat_message_notify {chatid from type body extras} {
    if {[chat::is_our_jid $chatid $from] || $type ne "chat"} {
        return
    }

    foreach xelem $extras {
        ::xmpp::xml::split $xelem tag xmlns attrs cdata subels

        # Don't notify if this 'empty' tag is present. It indicates
        # messages history in chat window.
        if {[string equal $tag ""] && [string equal $xmlns tkabber:x:nolog]} {
            return
        }
    }

Changes to otr/auth.tcl.

359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
    $w itemconfigure 1 -text [::msgcat::mc "Close"]

    set data [$l get 0 end]

    set items [dict create]
    foreach item $data {
        lassign $item i jid fingerprint auth del
        
        if {$del eq [::msgcat::mc Yes]} continue

        if {$auth eq [::msgcat::mc Yes]} {
            set auth1 1
        } else {
            set auth1 0
        }







|







359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
    $w itemconfigure 1 -text [::msgcat::mc "Close"]

    set data [$l get 0 end]

    set items [dict create]
    foreach item $data {
        lassign $item i jid fingerprint auth del

        if {$del eq [::msgcat::mc Yes]} continue

        if {$auth eq [::msgcat::mc Yes]} {
            set auth1 1
        } else {
            set auth1 0
        }

Changes to otr/otr.tcl.

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
...
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
....
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060

    # Correspondence between GUI options and OTR policy flags

    array set PolicyFlags {allow-encryption {ALLOW_V2 ALLOW_V3}
                           require-encryption {REQUIRE_ENCRYPTION}
                           send-whitespace-tag {SEND_WHITESPACE_TAG}
                           whitespace-or-error-start-ake
                                    {WHITESPACE_START_AKE ERROR_START_AKE}} 
}

#############################################################################

proc otr::load_stored_theme {args} {
    variable options
    variable themes
................................................................................
    grid $m -row 1 -column 0 -sticky nswe
    tk_optionMenu $f.choice [namespace current]::ctx(authmethod,$xlib,$jid) \
                         [::msgcat::mc "Question and answer"] \
                         [::msgcat::mc "Shared secret"] \
                         [::msgcat::mc "Manual fingerprint verification"]
    trace add variable [namespace current]::ctx(authmethod,$xlib,$jid) \
          write [namespace code [list smp_dialog_switch_page $w $xlib $jid]]
          
    grid $f.choice -row 2 -column 0 -sticky nswe

    set pm [PagesManager $f.method]
    grid $pm -row 3 -column 0 -sticky nswe

    $pm add qa
    set pf1 [$pm getframe qa]
    set m1 [Message $pf1.instr 
                    -text [::msgcat::mc "To authenticate using a question,\
                                         pick a question whose answer is known\
                                         only to you and your peer. Enter this\
                                         question and this answer, then wait\
                                         for your peer to enter the answer\
                                         too. If the answers don't match then\
                                         you may be talking to an imposter."] \
................................................................................

    # We can't distinguish between bodyless message and message with empty
    # body, so be it
    if {$body eq ""} return

    if {![once_only $xlib $from]} return

    set result [::otr::incomingMessage $ctx($xlib,$from) $body] 

    debugmsg otr "INCOMING MESSAGE: $xlib; $from; $result;"

    array set res $result

    if {[info exists res(message)]} {
        set body $res(message)







|







 







|







|







 







|







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
...
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
....
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060

    # Correspondence between GUI options and OTR policy flags

    array set PolicyFlags {allow-encryption {ALLOW_V2 ALLOW_V3}
                           require-encryption {REQUIRE_ENCRYPTION}
                           send-whitespace-tag {SEND_WHITESPACE_TAG}
                           whitespace-or-error-start-ake
                                    {WHITESPACE_START_AKE ERROR_START_AKE}}
}

#############################################################################

proc otr::load_stored_theme {args} {
    variable options
    variable themes
................................................................................
    grid $m -row 1 -column 0 -sticky nswe
    tk_optionMenu $f.choice [namespace current]::ctx(authmethod,$xlib,$jid) \
                         [::msgcat::mc "Question and answer"] \
                         [::msgcat::mc "Shared secret"] \
                         [::msgcat::mc "Manual fingerprint verification"]
    trace add variable [namespace current]::ctx(authmethod,$xlib,$jid) \
          write [namespace code [list smp_dialog_switch_page $w $xlib $jid]]

    grid $f.choice -row 2 -column 0 -sticky nswe

    set pm [PagesManager $f.method]
    grid $pm -row 3 -column 0 -sticky nswe

    $pm add qa
    set pf1 [$pm getframe qa]
    set m1 [Message $pf1.instr
                    -text [::msgcat::mc "To authenticate using a question,\
                                         pick a question whose answer is known\
                                         only to you and your peer. Enter this\
                                         question and this answer, then wait\
                                         for your peer to enter the answer\
                                         too. If the answers don't match then\
                                         you may be talking to an imposter."] \
................................................................................

    # We can't distinguish between bodyless message and message with empty
    # body, so be it
    if {$body eq ""} return

    if {![once_only $xlib $from]} return

    set result [::otr::incomingMessage $ctx($xlib,$from) $body]

    debugmsg otr "INCOMING MESSAGE: $xlib; $from; $result;"

    array set res $result

    if {[info exists res(message)]} {
        set body $res(message)

Changes to poker/poker.tcl.

255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
....
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    
    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $xlib $jid $iqid \
                                                      $id $deal $modp 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $xlib $jid $iqid \
                                                      $id $deal $modp 0]]

................................................................................
    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    if {[::xmpp::xml::getAttr $attrs type] eq "poker:th:1"} {
        set modps {}
        foreach subel $subels {
            ::xmpp::xml::split $subel stag sxmlns sattrs scdata ssubels

        
            if {$sxmlns eq "http://jabber.org/protocol/feature-neg"} {
                lassign [::xmpp::data::findForm $ssubels] type form
                set fields [::xmpp::data::parseForm $form]

                foreach {tag field} $fields {
                    switch -- $tag {
                        field {







|







 







<







255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
....
2649
2650
2651
2652
2653
2654
2655

2656
2657
2658
2659
2660
2661
2662
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m

    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $xlib $jid $iqid \
                                                      $id $deal $modp 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $xlib $jid $iqid \
                                                      $id $deal $modp 0]]

................................................................................
    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    if {[::xmpp::xml::getAttr $attrs type] eq "poker:th:1"} {
        set modps {}
        foreach subel $subels {
            ::xmpp::xml::split $subel stag sxmlns sattrs scdata ssubels


            if {$sxmlns eq "http://jabber.org/protocol/feature-neg"} {
                lassign [::xmpp::data::findForm $ssubels] type form
                set fields [::xmpp::data::parseForm $form]

                foreach {tag field} $fields {
                    switch -- $tag {
                        field {

Changes to poker/proto.

175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
The dealer decrypts them using keys KAi and keeps 6 lowest bits as card
numbers. This way all parties have their cards and no party knows the other
player's cards. The cipher commutativity was used to achieve the goal.

If it's necessary to deal community cards then they are dealt with
community='true', and the dealer decrypts the messages before sending a
message. The other player decrypts and returns them, so, both parties know
the cards: 

<iq type='set' to='x@y.z' id='id5'>
    <deal xmlns='games:cards' type='poker:th:1' id='123'>
        <card seq='5' community='true'
              msg='7f1afdcdad4c980952580f85e35c21b6d7ba13ca'/>
        <card seq='6' community='true'
              msg='4e14237c1458cfb3e755e30ff99bfab9dd883752'/>







|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
The dealer decrypts them using keys KAi and keeps 6 lowest bits as card
numbers. This way all parties have their cards and no party knows the other
player's cards. The cipher commutativity was used to achieve the goal.

If it's necessary to deal community cards then they are dealt with
community='true', and the dealer decrypts the messages before sending a
message. The other player decrypts and returns them, so, both parties know
the cards:

<iq type='set' to='x@y.z' id='id5'>
    <deal xmlns='games:cards' type='poker:th:1' id='123'>
        <card seq='5' community='true'
              msg='7f1afdcdad4c980952580f85e35c21b6d7ba13ca'/>
        <card seq='6' community='true'
              msg='4e14237c1458cfb3e755e30ff99bfab9dd883752'/>

Changes to quiz/quiz.tcl.

76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
...
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
...
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
    variable question
    variable answer
    variable points
    variable asktime
    variable hint
    variable top
    variable stats
    
    hook::remove generate_completions_hook \
              [namespace current]::commands_comps
    hook::remove draw_message_hook [namespace current]::handle_messages 79
    hook::remove chat_send_message_hook \
              [namespace current]::handle_commands 50

    foreach chatid [chat::opened] {
................................................................................
            catch { unset last(nick,$chatid) }
            catch { unset last(num,$chatid) }

            message::send_msg $xlib $group -type groupchat \
                -body "${prefix}Никто не ответил на вопрос, следующий через\
                       5 секунд. Правильный ответ \"$answer($chatid)\"."
        }
        
        catch { unset question($chatid) }
        catch { unset answer($chatid) }
        catch { unset hint($chatid) }
        after 5000 [list [namespace current]::ask $chatid]
    } else {
        chat::add_message $chatid $group error "Викторина не запущена" {}
    }
................................................................................
        next $chatid
        return
    }

    message::send_msg $xlib $group -type groupchat \
        -body "${prefix}Подсказка: [string range $answer($chatid) \
               0 [expr 3 - $points($chatid)]]...?"
    
    after 20000 [list [namespace current]::hint $chatid 1]
}


proc quiz::filter {text} {
    regsub -all {[;:()\[\]!?.,/\\{}]} [string tolower $text] "" text
    return [string trim $text]







|







 







|







 







|







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
...
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
...
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
    variable question
    variable answer
    variable points
    variable asktime
    variable hint
    variable top
    variable stats

    hook::remove generate_completions_hook \
              [namespace current]::commands_comps
    hook::remove draw_message_hook [namespace current]::handle_messages 79
    hook::remove chat_send_message_hook \
              [namespace current]::handle_commands 50

    foreach chatid [chat::opened] {
................................................................................
            catch { unset last(nick,$chatid) }
            catch { unset last(num,$chatid) }

            message::send_msg $xlib $group -type groupchat \
                -body "${prefix}Никто не ответил на вопрос, следующий через\
                       5 секунд. Правильный ответ \"$answer($chatid)\"."
        }

        catch { unset question($chatid) }
        catch { unset answer($chatid) }
        catch { unset hint($chatid) }
        after 5000 [list [namespace current]::ask $chatid]
    } else {
        chat::add_message $chatid $group error "Викторина не запущена" {}
    }
................................................................................
        next $chatid
        return
    }

    message::send_msg $xlib $group -type groupchat \
        -body "${prefix}Подсказка: [string range $answer($chatid) \
               0 [expr 3 - $points($chatid)]]...?"

    after 20000 [list [namespace current]::hint $chatid 1]
}


proc quiz::filter {text} {
    regsub -all {[;:()\[\]!?.,/\\{}]} [string tolower $text] "" text
    return [string trim $text]

Changes to renju/proto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='renju' board='8x8'
            color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>  
                                     -- if on black side played Kasparov
        <initboard>
            <set pos='0,0' color='white'/>
            <set pos='1,0' color='white'/>
        </initboard>
    </create>
</iq>






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='renju' board='8x8'
            color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>
                                     -- if on black side played Kasparov
        <initboard>
            <set pos='0,0' color='white'/>
            <set pos='1,0' color='white'/>
        </initboard>
    </create>
</iq>

Changes to renju/renju.tcl.

265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
...
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
...
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
...
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
...
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
...
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
...
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    Message $wf.message3 -aspect 50000 -text $message3
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    pack $wf.message3 -pady 1m
    
    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                          $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                          $iqid $id $color 0]]

................................................................................
    set slm [Button $w.show_last_move -text [::msgcat::mc "Show last move"] \
                -command [list [namespace current]::toggle_show_last_move \
                               $gid]]
    button_update_relief $slm $flags(show_last_move)
    pack $slm -side top -anchor w -fill x
    set flags(show_last_move_button) $slm

    Frame $w.move 
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................
        [list [namespace current]::leave $gid %x %y]
    bind $board <ButtonRelease-1> \
        [list [namespace current]::release $gid %x %y]

    bind $w <Destroy> [list [namespace current]::close $gid]

    make_default_position $gid
    
    draw_position $gid
    update_controls $gid
    find_legal_moves $gid $flags(position,turn)
}

proc renju::set_tooltips {args} {
    variable options
................................................................................
    set board $flags(board)

    set x [$board canvasx $x]
    set y [$board canvasy $y]

    $board itemconfigure dst_sq&&square -outline ""
    $board dtag dst_sq
    
    $board addtag dst_sq overlapping $x $y $x $y
    set tags [$board gettags dst_sq&&background]
    lassign [lindex $tags [lsearch $tags cr*]] cr c r
    $board addtag dst_sq withtag [list cr $c $r]&&square
    
    if {[info exists flags(position,$c,$r)] && $flags(position,$c,$r) == ""} {
        $board itemconfigure dst_sq&&square -outline red
        $board itemconfigure dst_sq&&legal&&square -outline blue
    }
}

proc renju::leave {gid x y} {
................................................................................
    $board dtag dst_sq

    if {$options(allow_illegal) || [is_my_move $gid]} {
        if {[do_move $gid $c $r $flags(position,draw)]} {
            $board itemconfigure [list cr $c $r]&&square -outline ""
        }
    }
    
    update_controls $gid
    draw_position $gid

    highlight_last_move $gid
}

proc renju::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure last -outline ""
    
    if {[catch {lassign $flags(position,last_move) ct rt}]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
    } else {
................................................................................
}

proc renju::do_move {gid ct rt draw} {
    variable options
    variable moves
    variable $gid
    upvar 0 $gid flags
    
    if {$ct == "" || $rt == ""} {
        return 0
    }

    set my_move [is_my_move $gid]

    if {![is_move_legal $gid $ct $rt]} {
................................................................................
    set endgame 0
    if {$skip && [llength $flags(legal_moves)] == 0} {
        # Can't find any move for both sides
        set endgame 1
    } elseif {$skip} {
        add_move_to_history $gid
    }
        
    if {$checkmate} {
        if {$my_move} {
            # I win
            end_game $gid 1 [::msgcat::mc "You win"]
        } else {
            # Opponent wins
            end_game $gid 0 [::msgcat::mc "Opponent wins"]







|







 







|







 







|







 







|




|







 







|











|







 







|







 







|







265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
...
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
...
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
...
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
...
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
...
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
...
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    Message $wf.message3 -aspect 50000 -text $message3
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    pack $wf.message3 -pady 1m

    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                          $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $game $xlib $jid \
                                          $iqid $id $color 0]]

................................................................................
    set slm [Button $w.show_last_move -text [::msgcat::mc "Show last move"] \
                -command [list [namespace current]::toggle_show_last_move \
                               $gid]]
    button_update_relief $slm $flags(show_last_move)
    pack $slm -side top -anchor w -fill x
    set flags(show_last_move_button) $slm

    Frame $w.move
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................
        [list [namespace current]::leave $gid %x %y]
    bind $board <ButtonRelease-1> \
        [list [namespace current]::release $gid %x %y]

    bind $w <Destroy> [list [namespace current]::close $gid]

    make_default_position $gid

    draw_position $gid
    update_controls $gid
    find_legal_moves $gid $flags(position,turn)
}

proc renju::set_tooltips {args} {
    variable options
................................................................................
    set board $flags(board)

    set x [$board canvasx $x]
    set y [$board canvasy $y]

    $board itemconfigure dst_sq&&square -outline ""
    $board dtag dst_sq

    $board addtag dst_sq overlapping $x $y $x $y
    set tags [$board gettags dst_sq&&background]
    lassign [lindex $tags [lsearch $tags cr*]] cr c r
    $board addtag dst_sq withtag [list cr $c $r]&&square

    if {[info exists flags(position,$c,$r)] && $flags(position,$c,$r) == ""} {
        $board itemconfigure dst_sq&&square -outline red
        $board itemconfigure dst_sq&&legal&&square -outline blue
    }
}

proc renju::leave {gid x y} {
................................................................................
    $board dtag dst_sq

    if {$options(allow_illegal) || [is_my_move $gid]} {
        if {[do_move $gid $c $r $flags(position,draw)]} {
            $board itemconfigure [list cr $c $r]&&square -outline ""
        }
    }

    update_controls $gid
    draw_position $gid

    highlight_last_move $gid
}

proc renju::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure last -outline ""

    if {[catch {lassign $flags(position,last_move) ct rt}]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
    } else {
................................................................................
}

proc renju::do_move {gid ct rt draw} {
    variable options
    variable moves
    variable $gid
    upvar 0 $gid flags

    if {$ct == "" || $rt == ""} {
        return 0
    }

    set my_move [is_my_move $gid]

    if {![is_move_legal $gid $ct $rt]} {
................................................................................
    set endgame 0
    if {$skip && [llength $flags(legal_moves)] == 0} {
        # Can't find any move for both sides
        set endgame 1
    } elseif {$skip} {
        add_move_to_history $gid
    }

    if {$checkmate} {
        if {$my_move} {
            # I win
            end_game $gid 1 [::msgcat::mc "You win"]
        } else {
            # Opponent wins
            end_game $gid 0 [::msgcat::mc "Opponent wins"]

Changes to reversi/proto.

1
2
3
4
5
6
7
8
9
10
11
12
13
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='reversi' color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>  
                                     -- if on black side playes Kasparov
        <initboard>
            <set pos='0,0' color='white'/>
            <set pos='1,0' color='white'/>
        </initboard>
    </create>
</iq>





|







1
2
3
4
5
6
7
8
9
10
11
12
13
Request:

<iq type='set' to='a@b.c' id='id1'>
    <create xmlns='games:board' id='123' type='reversi' color='white'>
        <timelimit>600</timelimit>   -- for all players
        <timelimit color='black'>10</timelimit>
                                     -- if on black side playes Kasparov
        <initboard>
            <set pos='0,0' color='white'/>
            <set pos='1,0' color='white'/>
        </initboard>
    </create>
</iq>

Changes to reversi/reversi.tcl.

231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
...
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
...
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
...
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
...
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
...
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
...
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
...
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m
    
    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                          $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                          $iqid $id $color 0]]

................................................................................

    set flags(flip) 0
    set slm [Button $w.flip -text [::msgcat::mc "Flip view"] \
                -command [list [namespace current]::toggle_flip_view $gid]]
    pack $slm -side top -anchor w -fill x
    set flags(flip_button) $slm

    Frame $w.move 
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................
        [list [namespace current]::leave $gid %x %y]
    bind $board <ButtonRelease-1> \
        [list [namespace current]::release $gid %x %y]

    bind $w <Destroy> [list [namespace current]::close $gid]

    make_default_position $gid
    
    if {[is_white $flags(our_color)] && $options(flip_white_view)} {
        toggle_flip_view $gid
    }

    draw_position $gid
    update_controls $gid
    find_legal_moves $gid $flags(position,turn)
................................................................................

    for {set c 0} {$c < 8} {incr c} {
        for {set r 0} {$r < 8} {incr r} {
            $board addtag [list cr $c $r] withtag [list temp $c $r]
            $board dtag [list temp $c $r]
        }
    }
    
    button_update_relief $flags(flip_button) $flags(flip)
    draw_position $gid
    highlight_legal_moves $gid
    highlight_last_move $gid
}

proc reversi::set_tooltips {args} {
................................................................................
    set board $flags(board)

    set x [$board canvasx $x]
    set y [$board canvasy $y]

    $board itemconfigure dst_sq&&square -outline ""
    $board dtag dst_sq
    
    $board addtag dst_sq overlapping $x $y $x $y
    set tags [$board gettags dst_sq&&background]
    lassign [lindex $tags [lsearch $tags cr*]] cr c r
    $board addtag dst_sq withtag [list cr $c $r]&&square
    
    if {[info exists flags(position,$c,$r)] && $flags(position,$c,$r) == ""} {
        $board itemconfigure dst_sq&&square -outline red
        $board itemconfigure dst_sq&&legal&&square -outline blue
    }
}

proc reversi::leave {gid x y} {
................................................................................
    $board dtag dst_sq

    if {$options(allow_illegal) || [is_my_move $gid]} {
        if {[do_move $gid $c $r $flags(position,draw)]} {
            $board itemconfigure [list cr $c $r]&&square -outline ""
        }
    }
    
    update_controls $gid
    draw_position $gid

    highlight_last_move $gid
}

proc reversi::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure last -outline ""
    
    if {[catch {lassign $flags(position,last_move) ct rt}]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
    } else {
................................................................................
}

proc reversi::do_move {gid ct rt draw} {
    variable options
    variable moves
    variable $gid
    upvar 0 $gid flags
    
    if {$ct == "" || $rt == ""} {
        return 0
    }

    set my_move [is_my_move $gid]

    if {![is_move_legal $gid $ct $rt]} {
................................................................................
    set endgame 0
    if {$skip && [llength $flags(legal_moves)] == 0} {
        set endgame 1
        lassign [count_pieces $gid] bp wp
    } elseif {$skip} {
        add_move_to_history $gid
    }
        
    if {$endgame} {
        if {$bp == $wp} {
            # Draw
            end_game $gid 0.5 [::msgcat::mc "Draw"]
        } elseif {(($bp > $wp) && [is_black $flags(our_color)]) || \
                  (($bp < $wp) && [is_white $flags(our_color)])} {
            # I win







|







 







|







 







|







 







|







 







|




|







 







|











|







 







|







 







|







231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
...
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
...
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
...
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
...
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
...
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
...
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
...
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
            return [list error modify bad-request]
        }
    }
    Message $wf.message1 -aspect 50000 -text $message1
    Message $wf.message2 -aspect 50000 -text $message2
    pack $wf.message1 -pady 1m
    pack $wf.message2 -pady 1m

    $w add -text [::msgcat::mc "Agree to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                          $iqid $id $color 1]]
    $w add -text [::msgcat::mc "Refuse to play"] \
           -command [namespace code [list invited_res $w $xlib $jid \
                                          $iqid $id $color 0]]

................................................................................

    set flags(flip) 0
    set slm [Button $w.flip -text [::msgcat::mc "Flip view"] \
                -command [list [namespace current]::toggle_flip_view $gid]]
    pack $slm -side top -anchor w -fill x
    set flags(flip_button) $slm

    Frame $w.move
    pack $w.move -side top -anchor w
    Label $w.move.title -text [::msgcat::mc "Move: "]
    pack $w.move.title -side left
    Label $w.move.on_move -anchor w \
        -textvariable [namespace current]::${gid}(move_label)
    pack $w.move.on_move -side left -anchor w

................................................................................
        [list [namespace current]::leave $gid %x %y]
    bind $board <ButtonRelease-1> \
        [list [namespace current]::release $gid %x %y]

    bind $w <Destroy> [list [namespace current]::close $gid]

    make_default_position $gid

    if {[is_white $flags(our_color)] && $options(flip_white_view)} {
        toggle_flip_view $gid
    }

    draw_position $gid
    update_controls $gid
    find_legal_moves $gid $flags(position,turn)
................................................................................

    for {set c 0} {$c < 8} {incr c} {
        for {set r 0} {$r < 8} {incr r} {
            $board addtag [list cr $c $r] withtag [list temp $c $r]
            $board dtag [list temp $c $r]
        }
    }

    button_update_relief $flags(flip_button) $flags(flip)
    draw_position $gid
    highlight_legal_moves $gid
    highlight_last_move $gid
}

proc reversi::set_tooltips {args} {
................................................................................
    set board $flags(board)

    set x [$board canvasx $x]
    set y [$board canvasy $y]

    $board itemconfigure dst_sq&&square -outline ""
    $board dtag dst_sq

    $board addtag dst_sq overlapping $x $y $x $y
    set tags [$board gettags dst_sq&&background]
    lassign [lindex $tags [lsearch $tags cr*]] cr c r
    $board addtag dst_sq withtag [list cr $c $r]&&square

    if {[info exists flags(position,$c,$r)] && $flags(position,$c,$r) == ""} {
        $board itemconfigure dst_sq&&square -outline red
        $board itemconfigure dst_sq&&legal&&square -outline blue
    }
}

proc reversi::leave {gid x y} {
................................................................................
    $board dtag dst_sq

    if {$options(allow_illegal) || [is_my_move $gid]} {
        if {[do_move $gid $c $r $flags(position,draw)]} {
            $board itemconfigure [list cr $c $r]&&square -outline ""
        }
    }

    update_controls $gid
    draw_position $gid

    highlight_last_move $gid
}

proc reversi::highlight_last_move {gid} {
    variable $gid
    upvar 0 $gid flags

    $flags(board) itemconfigure last -outline ""

    if {[catch {lassign $flags(position,last_move) ct rt}]} {
        return
    }

    if {$flags(show_last_move)} {
        set color white
    } else {
................................................................................
}

proc reversi::do_move {gid ct rt draw} {
    variable options
    variable moves
    variable $gid
    upvar 0 $gid flags

    if {$ct == "" || $rt == ""} {
        return 0
    }

    set my_move [is_my_move $gid]

    if {![is_move_legal $gid $ct $rt]} {
................................................................................
    set endgame 0
    if {$skip && [llength $flags(legal_moves)] == 0} {
        set endgame 1
        lassign [count_pieces $gid] bp wp
    } elseif {$skip} {
        add_move_to_history $gid
    }

    if {$endgame} {
        if {$bp == $wp} {
            # Draw
            end_game $gid 0.5 [::msgcat::mc "Draw"]
        } elseif {(($bp > $wp) && [is_black $flags(our_color)]) || \
                  (($bp < $wp) && [is_white $flags(our_color)])} {
            # I win

Changes to singularity/README.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

This plugin implements the described functionality: when the new
window for a one-on-one chat is about to be opened the plugin
checks whether there are any active chat sessions with the same
bare JID (that is, without the "/resource" part) as that of the
new chat. If there are, they are closed with their conversation
log and input history preserved, the new chat window is opened
and then the saved data is inserted into the new window. 
So effectively this plugin makes Tkabber keep just one chat
window per bare JID open.

The plugin does not touch MUC private chats because in them
resource part of the room JID is used to designate participants'
nicknames.








|







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

This plugin implements the described functionality: when the new
window for a one-on-one chat is about to be opened the plugin
checks whether there are any active chat sessions with the same
bare JID (that is, without the "/resource" part) as that of the
new chat. If there are, they are closed with their conversation
log and input history preserved, the new chat window is opened
and then the saved data is inserted into the new window.
So effectively this plugin makes Tkabber keep just one chat
window per bare JID open.

The plugin does not touch MUC private chats because in them
resource part of the room JID is used to designate participants'
nicknames.

Changes to socials/socials.en.

381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
...
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
...
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
....
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
....
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
....
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
....
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
....
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
....
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
....
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
....
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
....
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
....
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
$n gropes $mself - YUCK.

hiccup 0 0
*HIC*
$n hiccups.
#

lick 0 0 
You lick your mouth and smile. 
$n licks $s mouth and smiles. 
You lick $N's jawline delicately. 
$n licks $N's jawline delicately. 
$n licks your jawline delicately. 
Lick away, nobody's here with that name. 
You lick your own eyebrows. 
$n licks $s own eyebrows.

love 0 0
You love the whole world.
$n loves everybody in the world.
You tell your true feelings to $N.
$n whispers softly to $N.
................................................................................
You smirk at $S saying.
$n smirks at $N's saying.
$n smirks at your saying.
You want to smirk to whom?
You smirk at yourself.  Okay.....
$n smirks at $s own 'wisdom'.

snap 0 0 
Eureka!  You snap your fingers. 
$n snaps $s fingers. 
You snap back at $M. 
$n snaps back at $N. 
$n snaps back at you! 
You must be very agitated. 
You snap yourself to attention. 
$n snaps $mself to attention. 

sneeze 0 0
Gesundheit !
$n sneezes.
#

snicker 0 0
................................................................................
$n begins to yodel:  HEY!! CLERICS!! I COULD USE A HEAL!!!
$N covers $S ears as you begin to yodel.
$n yodels to $N.
$n yodels to you...you cringe and turn away.
That person just escaped!
Well, it's up to you if you want to damage your hearing.
$n yodels to $mself.  What a sado-masochist.
 
faint 1 0
You faint.
$n faints.
You faint into $S arms.
$n faints into $N's open arms.
$n just fainted into YOUR arms.
You fall on the floor and look stupid--really suave.
#
 
pinch 1 0 
You say, 'A pinch of this, and a dab of that.' 
$n says, 'A pinch of this and a dab of that.' 
You squeeze $S bottom and grin. 
$n pinches $N's bottom and grins. 
$n pinches your bottom and grins. 
You'd like to, wouldn't you? 
You pinch yourself to see if you are dreaming! 
$n pinches $mself to see if $e is dreaming! 

 
stroke 1 0 
You stroke the air vaguely. 
$n makes vague stroking motions. 
You gently stroke $S inner thigh.  $N inhales sharply. 
$N exhales sharply and suddenly. 
$n gently strokes your inner thigh.  You inhale sharply. 
Maybe you should practice on yourself first. 
You are about to do something you'd rather not be caught doing. 
# 

 
apologize 1 0
You apologize until you are blue in the face.
$n apologizes profusely.
You might as well apologize because $E sure as hell won't.
$n apologizes to $N with a very sincere look on $s face.
$n apologizes to you and begs for forgiveness.
Who's that?
#
 
caress 1 0
Who do you wish to caress?
$n looks for someone to caress.
You tenderly caress $M.
$n tenderly caresses $N.
$n tenderly caresses your body.
You're S.O.L., buddy.
#
 
stagger 1 8
You stagger blindly around the room.
$n staggers blindly around the room.
You stagger toward $N as the room begins to spin.
$n staggers into $N.
$n staggers blindly into you.
Stagger into whom!?!?
#
 
snort 1 0 
You snort derisively. 
$n snorts derisively. 
You snort derisively at $N. 
$n snorts derisively at $N. 
$n snorts at you. 
Snort at whom? 
You snort derisively at yourself. 
$n snorts derisively at $sself.
 
slobber 1 0
You slobber down your front.
$n slobbers all over $mself.
You slobber on $N.
$n slobbers on $N  **Yuck**
$n slobbers disgustingly on you.
Slobber on WHOM?
#
 
blink 1 0
You bat your eyelashes.
$n blinks innocently.
You blink innocently at $N.
$n blinks innocently at $N.
$n blinks innocently at you.
Feign innocence for whom?
You try to convince yourself of your innocence.
#
 
tease 1 0
What a tease.   SHEESH.
$n looks around for someone to tease.
You tease $N in a playful way.
$n sticks $s tongue out at $N.
$n sticks $s tongue out at you, what a DORK!!
Tease whom?
You tease yourself. NYAH NYAH NYAH.
$n teases $mself.
 
knee 1 8
You raise one knee, preparing to do justice...
$n cocks one knee threateningly.
You knee $M hard in the groin.
$N doubles over in pain as $n knees $M in the groin!
$n suddenly knees you in the groin!  You fall to your knees in agony.
Whom do you wish to render impotent?
What ARE you thinking !?!??!?!?!?!
#
 
flirt 1 0
You flirt outrageously.
$n is an outrageous flirt.
You flirt with $N trying to get $S attention.
$n flirts with $N, hmmm wonder what $e wants? *wink*
$n flirts with you.
Sorry no one here to flirt with. :(
You flirt with yourself -- what ARE you trying to gain!?!?!?
$n flirts with $mself, wonder what $e is trying to accomplish?
 
tip 1 0
You tip your hat gallantly.
$n gallantly tips $s hat.
You tip your hat to $N.
$n gallantly tips $s hat to $N.
$n gallantly tips $s hat to you.
But there is no one here to impress?!?!
#
 
lust 1 0
Your hormones begin to rage.
$n has that look of lust in $s eyes --- Get away QUICK!
You have lust after $N.
$n looks lustily at $N.
$n lusts after your delectable body.
Whom are you trying to lust after?
Oh, please! You aren't THAT great...
$n lusts after $mself, lonely eh?
 
flutter 1 0
You flutter your eyelashes seductively.
$n flutters $s eyelashes seductively.
You flutter your eyelashes at $N, trying to be seductive.
$n flirts with $N, flutters $s eyelashes at $M.
$n flutters $s eyelashes at you coyly.
EH? Can't see them here.
#
 
bark 1 0
You bark loudly.
$n barks like a dog. GO DAWGS SIC 'EM!!! WOOF! WOOF! WOOF! WOOF!
You bark at $N scaring $M silly -- SHAME ON YOU!!
$n barks at $N scaring $M senseless.
$n barks loudly at you, you back away, because $e might bite too!!
Bark at whom?
You bark at yourself and jump back in fear.
$n barks at $mself and cowers in fear.
 
howl 1 0
You howl at the moon.
$n howls at the moon.
You howl soulfully at $N.
$n howls at $N.
$n howls soulfully at you.
Who? What? Where?
#
 
babble 1 0
You babble endlessly.
$n babbles endlessly, won't $e EVER shut up?
You babble to $N for hours on end.
$n babbles to $N for what seems an eternity, how can $N stand it?
$n babbles at you. You nod mechanically, hoping $e will shut up soon.
Whom do you wish to annoy with your babble?
You babble on and on to yourself, FINALLY! someone who LISTENS!!
$n babbles quietly to $mself.
 
ramble 1 0
You ramble on and on.
$n rambles on about a boring exploit.
You ramble on to $N about your past adventures.
$n blithers on and on to $N about something.
$n tells you a rather boring tale, you feign interest.
??EH??
#
 
hush 1 0
SHHHHHHHHHHHHHHHHHHHHHH
$n requests everyone quiet down.  Shhhhhhhhhhh...
You nicely ask $N to be more quiet.
$n nicely asks $N to be more quiet.
$n kindly requests that you please quiet down.
Who needs to be silenced?
You realize you are loud and obnoxious and try to silence yourself.
$n covers $s mouth in an attempt to silence $mself.
 
threaten 1 8
You threaten everyone with your overwhelming presence.
You feel threatened in the presence of the great $n.
You stand tall as you threaten $N.
$n threatens $N forcefully.
$n threatens you...oooooooh scary *laugh*
Whom do you wish to intimidate?
#
 
roll 1 0
You roll your eyes in disgust.
$n rolls $s eyes, disgusted.
You look at $N and roll your eyes in disgust.
$n rolls $s eyes in disgust at $N.
$n rolls $s eyes at you.
You should be disgusted with yourself because you look so foolish.
At whom do you wish to roll your eyes?
#
 
swoon 1 0
You swoon.
$n swoons in absolute ecstasy.
You look at $N and swoon in ecstasy.
$n looks at $N and swoons in ecstasy.
$n looks at you and swoons in ecstasy.
Who?
#
 
bird 1 0
You flick a bird...How obscene!
$n flicks a bird at no one in particular.
You shoot a bird at $N.
$n gives $N the bird.
$n gives you the bird...What an ass!
Don't you hate to waste a good obscene gesture like that?
#
 
eyebrow 1 0
You raise an eyebrow at the notion.
$n raises an eyebrow.
You raise your eyebrow at $N.
$n raises an eyebrow at $N's weird actions.
$n raises an eyebrow at you.
Forget it.  They aren't here.
#
 
serenade 1 0
You raise your voice in a loud serenade to your invisible love.
$n raises $s voice to serenade the world.
You raise your voice in a loving serenade to $N.
$n raises $s voice in a loving serenade to $N.
$n serenades you, you are swept away by $s voice.
The one that you wish to serenade has left you to sing to yourself.
You sing a loud serenade to yourself.  What type of person are you?!
$n serenades $mself.  What an ego!
 
grimace 1 0
You grimace painfully at the thought.
$n grimaces painfully at the thought.
You grimace at $N.
$n grimaces at $n.
$n grimaces at you.  What could be wrong?
You grimace at no one in particular.
You grimace painfully at your thoughts.
$n grimaces painfully to $mself.
 
boggle 1 0
You boggle at the concept.
$n boggles at the concept.
You boggle at $N.
$n boggles at $N.
$n boggles at you.
Boggle away.  They've left.
You boggle at yourself.  Hmmm...intriguing.
$n boggles quietly to $mself.
 
beckon 1 0
You beckon for everyone to follow.
$n beckons for everyone to follow.
You beckon for $N to follow -- sure hope they do!
$n beckons $N to follow...hmmm what's going on?
$n beckons for you to follow.
So sorry, that person has already left.
You beckon to your shadow to follow.
$n beckons to $s shadow to follow.
 
wonder 1 0
You wonder about how things could have been.
$n gets a blank stare on $s face.  What could $e be wondering about?
You look at $N and wonder what will happen.
$n looks at $N and wonders....
$n looks at you quizzically.
You wonder what would have happened had they been here.
You wonder about yourself and your purpose here.
A blank stare crosses $n's face.  What could $e be wondering about?
 
worry 1 0
You worry about what's going to happen.
A troubled look suddenly crosses $n's face.  Wonder what's wrong?
You look at $N worriedly.
$n looks at $N with a troubled gaze.
$n looks at you worriedly.
Well they obviously aren't worried -- they left!
You worry about what's going to happen.
A troubled look suddenly crosses $n's face.  Wonder what's wrong?
 
drool 1 0
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!
You drool messily on $N.
$n drools upon $N.
$n looks at you lustily and drools.
Oh fine, make a pool of slobber -- they aren't even here!
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!
 
nod 1 0
You nod.
$n nods.
You nod at $N.
$n nods at $N.
$n nods at you in agreement.
Nod your head off -- they aren't here.
You attempt to nod at yourself and get dizzy instead.
$n nods quietly to $mself.  What a wacko.
 
purr 1 0
MMMMMMEEEEEEEEEOOOOOOOOOOOOOWWWWWWWWWWW!!!!!!!!!!!
$n purrs contentedly.
You rub up against $N and purr contentedly.
$n rubs against $N and purrs contentedly.
$n rubs up against you and purrs contentedly.
You silly cat!  They aren't here.
You purr quietly to yourself.
$n purrs contentedly to $mself.
 
point 1 0
You point in every direction.
$n points excitedly!
You point at $N.
$n points excitedly at $N!
$n points at you.  How rude!
You point at no one in particular.
You point at yourself, obviously very confused.
$n points at $mself, obviously very confused.
 
rub 1 0
You rub your hands together in greedy anticipation.
$n rubs $s hands together in greedy anticipation.
You give $N a nice, long, kinky rubdown.
$n gives $N a nice long rubdown.
$n gives you a rubdown, running $s hands over your tense shoulders...Mmmm...
Shame to waste those talented hands, but they've already left.
You rub yourself...lingering a little too long in some places.
$n rubs $mself...what a creep!
 
bleed 1 0
You bleed profusely -- making a horrible mess!
$n weakly bleeds all over the floor.
You bleed on $N -- ewww!
$n bleeds on $N.  Watch out, YOU might be next!
$n bleeds on you -- ewww!  Get away!!
Bleed on whom?
You bleed all over yourself.
$n bleeds profusely all over $mself.
 
highfive 1 0
You jump in the air and give a BIG high five to...umm...absolutely nothing.
$n wildly high fives the air, looking very foolish -- very foolish indeed.
You jump in the air and give a BIG high five to $N!
$n enthusiastically high-five's $N!
$n gives you a BIG high five!  Way to go!!
Sorry, they have already left.
You try to give yourself a high five.  What ARE you thinking?
$n tries to high five $mself, but ends up looking foolish instead.
 
propose 1 0
You propose to everyone in the room.
$n proposes to everyone in the room.  Very odd.
You kneel and romantically propose to $N.
$n gets on one knee and proposes to $N.
$n gets down on one knee and romantically proposes to you.
You must be lonely.  They aren't here.
You are SO full of yourself!
$n proposes to $mself -- how narcissistic!
 
peer 1 0
You peer around yourself intently.
$n peers around $mself intently.
You peer intently at $N.
$n peers intently at $N.
$n peers at you intently.
They aren't here.
You get a little cross-eyed with your attempts to stare yourself down.
$n peers at $mself, crossing $s eyes in the process.
 
worship 1 0
You prostrate yourself and worship the gods!
$n prostrates $mself and worships the gods!
You fall on your knees and worship $N.
$n falls on $s knees and worships $N.
$n falls to the ground and worships you.
You can't worship someone who isn't here.
................................................................................
$n looks at you and innocently bats $s eyelashes.
Don't even TRY -- they've already left.
#


collapse 1 0
You collapse on the floor from exhaustion.
$n dramatically collapses to the floor from exhaustion.   
You collapse right into $N's arms.
$n collapses right into $N's arms.
Suddenly, $n collapses into your arms from exhaustion.  
They've already left, just collapse on the floor.
#


stretch 1 0
You lean back and streeeeeettch your arms and legs.
$n stretches luxuriously.  Kinda makes you want to doesn't it?
................................................................................
Your ego takes a blow.  They've already left.
You boast to yourself of all your great feats!  Your own biggest fan.
$n boasts to $mself -- what an ego!

squirm 1 0
You squirm uncontrollably in your consternation.
$n squirms uncontrollably, suddenly looking very uncomfortable.
You look at $N and squirm with delight.              
$n looks at $N and squirms with delight.
$n looks at you and squirms with delight.
#

moo
You chew your cud and moo plaintively.  Muh-OOOOO!
$n turns cowlike eyes on you, chews $s cud, and moos plaintively.
................................................................................
#


mutter 1 0
You mutter quietly to yourself.
$n mutters something quietly to $mself.
You mutter something to $N.
$n looks at $N and mutters something nasty under $s breath.                 
$n looks at you and mutters something nasty under $s breath.
There's nothing left for you to say, they've left!
You mutter quietly to yourself.
$n mutters something quietly to $mself.

rofl 1 0
You roll on the floor, laughing hysterically.
................................................................................
You show off to $N, flexing your muscles proudly.
$n flexes $s muscles, in a vain attempt to impress $N.
$n flexes $s muscles in a vain attempt to show off to you.
#


embrace 1 0
Who would you like to embrace?  
$
You wrap your arms around $N in a warm and loving embrace.
$n wraps $s arms around $N in a warm and loving embrace.
$n takes you in $s arms in a warm and loving embrace.
Your heart breaks as you realize you are alone.
You try to console yourself with a loving embrace.
$n tries to console $mself by wrapping $s arms around $mself.
................................................................................
You bonk $N on the head for being such a moron.
$n bonks $N on the head for being such an UTTER moron.
$n bonks you on the head for being so foolish.
***BONK*** they left...
You bonk yourself, fool that you are.
$n bonks $mself and grimaces in pain.

squeal 1 0 
You squeal with delight!
$n lets out a sudden squeal of delight!
You look at $N and squeal with delight!
$n squeals with delight at $N.
$n looks at you and squeals with delight!
#

................................................................................
$n moshes insanely around the room!
You mosh sadistically against $N ... you WILL be punished.
$n bounces off of $N in a vain attempt to mosh... what a LOSER.
$n slams into you, moshing painfully against you.  That REALLY hurts!
Hmmm...  your victim found a new dance partner.
Masochist!
$n throws $mself on the floor, grinding $mself into a bloody pulp
 
flinch 0 0
EEEK... You flinch in obvious pain.
$n flinches in obvious pain... you wonder what $e did THIS time.
Don't you wish you could just crawl under a rock and die?
$n sneaks a glance at $N and flinches.
$n flinches in response to your cold rebuke.
Relax, $E is gone.
You can't belive what you've done...
$n twitches violently, shocked at $s own behavior.
 
air 0 0
You grab your air guitar and play for all you're worth.
$n air-guitars like a mad man ... EXCELLENT!!!
You hope $E appreciates your (total lack of) talent.
$n is surrounded by air groupies. 
$n plays a most excellent tune for you on $s most excellent air guitar.
Awww... you have no audience!
You play softly to yourself.
#
 
tweak 0 0
Tweak who?
$
You gently tweak $S cheek.  Isn't $E so CUTE?
$n tweaked $N's cheek... don't they look so adorable together?
$n lovingly tweaks your cheek.  It reminds you of Grandma... sniff...
*Sniff*  That cheek seems to be missing.
You can't DO that.
#
 
peck 5 0
Wouldn't you like to do that to a person, or do you prefer air?
$
Risking a slap to the face, you give $N a peck on the cheek.
$n smiles and gives $N a chaste peck on the cheek.
$n pecks you on the cheek, how sweet!
I guess you scared them away...
You must REALLY like yourself.
$n tries in vain to wrap $s lips around $s cheeks.
 
explode 0 0 
You feel the blood boiling in your veins!
$n turns a deep red, fighting to contain $s temper...
You feel your rage explode deep in the pit of your stomach...
$n burns holes through $N with his explosive anger!
$n is ANGRY with you... I'd run if I were you!!!
Temper Temper... they left.
Your soul burns brightly then fades to nothing.
$n implodes!!!  Only a grease spot remains where $e once stood.
 
raspberry 4 0
You stick your tongue out at ... well, no one.
$n sticks $s tongue out, catching a few flies in the process.
You give $N the raspberry... and spit all over yourself.
$n gives $N the raspberry... PHBT!  What a mess... Spit EVERYWHERE!
You are splattered with saliva as $n gives you the raspberry... HOW RUDE!
Hang your tongue out if you like, $e isn't here.
You try to stick your tongue out at yourself... somehow, it isn't the same.
#
 
flash 0 0
You grin and strut as you open your coat and show what you've got!
$n rips $s clothes off and parades naked around the room!
Swiftly you jerk open your jacket, trying to get $M to notice you.
Cover your eyes, $n is exposing $mself to $n!  EWWWW!
You gasp!  $n has just revealed $s "equipment" to you!
Exhibitionist, that person isn't here!
That's sick.
PERVERT PRESENT!  $n is trying to flash $mself
 
strip 0 0
You do a slow strip tease for the people...
$n begins a slow, erotic strip-tease act...
You start to undress $N ... one piece of clothing at a time...
$n runs $s hands over $Ns body, slowly stripping away the clothing...
$n has started to strip you... woah BABY!
Your toy doesn't seem to be here...
You can't DO that in public!
#
 
undress 0 0
You start to undress in the shadows, waiting for someone to notice.
$n begins to undress... $e is VERY sexy... *Pant* 
You undress $M with your eyes... Kinky.
You feel the temperature of the room rise as $n lusts on $N...
Feeling exposed, you sense $n undressing you with $s eyes...
They are not here...
A mirror would work better...
#

................................................................................
$
Mmmm... you give $N a good working over with your tongue...
$n slides $s tongue over $N's body...
$n wraps $s tongue around you, moving it across your young, nubile flesh...
Never around when required...
You slowly tongue yourself.
$n slowly tongues $mself... ICK.
 
view 0 0
You sit back and watch the world go by.
$n kicks back and enjoys the view.
#
 
grumble 0 0
You grumble distractedly to yourself
$n grumbles and growls. You wonder what's wrong...
You grumble at $N, disgusted with their presence.
$n seems to be a grumpy bear... $e is grumbling at poor $N.
$n is grumbling at you... what'd you do?
That person is presently AWOL.
Why bother?
#
 
cheer 0 0
You cheer and dance as the joy within you bursts forth!
$n cheers and sings... $e is just BURSTING with joy!
You cheer $N on and wish $M good luck!
*Yay!*  Go $N!!!  $n cheers $M on.
You are cheered on by $n... you feel so loved!
Who? Huh? Where?  They're not here, that's for sure
You cheer silently for yourself since nobody else will
$n resorts to cheering for $mself... how sad.
 
plead 0 0
You beg and plead to anyone who will listen.
$n pleads $s case to anyone who will listen... You ALMOST feel sorry for $s.
#
 
charge 0 0      
You charge into the fray!
$n charges into the fray!  All guts, no brains.
With surprising dexterity, you head-butt $N!
$n ducks down low, charges forward, and head-butts $N!
OOF!  $n rammed $s head into your stomach!  That HURT.
Nobody 'round with that name, Mister!
You run your head into a brick wall.  OUCH!
#
 
criticize 0 0
Yes, but who?
$
You criticize $M with all the warmth of a snake.
With a nasty grin, $n rips apart $Ns efforts.
$n informs you that your attempts need some MAJOR adjustments.
Where oh where has my victim gone, oh where oh where...
You criticize yourself profusely.
$n tears $mself apart, cursing $s own stupidity.
 
run 0 0
You run away in terror and horror!
$n runs away in utter terror!
You run away from $N in complete terror!
$n runs away from $N in utter terror and horror!
$n runs from you, fearing for $s life!
No reason to be afraid, they aren't here.
Are you THAT ugly?
$n looks in the mirror, sees $s face, and runs away terrified!
 
judge 0 0
Yes, but who?
$
You judge $m on a scale of 1 to 10.
On a scale from 1 to 10, $n thinks $N is a complete ZERO!!!
$n judges your actions on a scale of 1 to 10 and comes up with ZERO!!!
They aren't here right now.
You don't REALLY want to do that.
#
 
insane 0 0
You feel your sanity slipping away...
Before your eyes, $n's sanity is slipping away...
#
 
cover 0 0
You cover your ears to protect them from the noise.
$n covers $s ears to protect them from all the noise.
You glare at $N and cover your ears.
$n glares at $N and covers $s ears.
$n covers $s ears because of you... you are TOO LOUD!
They aren't here right now.
No... I don't think so.
#
 
flare 0 0
You flare your nostrils disdainfully.
$n flares $s nostrils disdainfully.
You flare your nostrils disdainfully at $N... HOW RUDE!
$n flares $s nostrils disdainfully at $N and turns up $s snobbish nose.
$n flares $s nostrils disdainfully at you... what'd you DO???
Flare if you wish, but that person isn't here to see it.
*Sniff*  But you should LOVE yourself!
#
 
head 0 0
You toss your head haughtily.
$n tosses $s head haughtily.
You toss your head haughtily at $N.
$n tosses her head haughtily at $N... what an ATTITUDE!
$n tossed $s head haughtily at you... :(
That person is AWOL.
Why would you do that?
#
 
pie 0 0
You pick up a pie and toss it around for a bit.
$n picks up a pie and tosses it around for a bit.
You toss a pie at $N and hit $M right in the FACE!
$n tosses a pie at $N and hits $m right in the FACE!
$n tossed a pie in your face... and now you are all covered in GOO!
That person isn't here...
You bury your face in the pie... yummmmm!!! :)
$n buries $s face in the pie, licking the pan clean.
 
cower 0 0
You cower in a corner.
$n cowers in a corner and whimpers softly.
You cower away from $N and $S harsh words.
$n cowers in a corner, terrified that $N will come after $m.
You scared poor $n!  Now $S is cowering in a corner, afraid for $s life.
That person is AWOL at the moment.
You are afraid of your own shadow!
$n cowers in the corner afraid of $s own shadow
 
noogie 5 0
You can't noogie the AIR!  It has no head.
$
You grab $N, get $M in a head lock and NOOGIE $M!
$n grabs $N in a head lock and NOOGIES $M... ARGH!!!
Oh NO, $n grabs you, throws you in a head lock and NOOGIES you!
That person has gone off to other lands...
You rub your head and create a static charge...
$n rubs $s OWN head and creates a static charge... *ZAP*
 
yeehaw 5 0
You mount your pony(?) and shout YEEEEEEEHAAAAAAAW!
$n bounces up and down screaming *YEEEEEEHAAAAAAW!*
#
 
pissed 5 0
You are PISSED!
$n is PISSED so watch out!
You turn a stoney gaze toward $N... you are SOOO pissed at $N!
$n glares at $n.... $n is SOOO PISSED at $m!
$n is pissed at you now... What do you think $e'll DO?
That person is not here...
You are PISSED at yourself!
$n is so pissed at $mself.  How could $e be so stupid???
 
passout 5 0
You belch and pass out.
$n is OBVIOUSLY intoxicated... $e burps loudly and passes out!
#
 
adjust 5 0
You look around, make sure nobody is watching, and you adjust your "Tool."
$n looks around slyly, smiles, then reaches down and "adjusts" $mself...
#
 
scratch 5 0
You scratch yourself contentedly.
$n reaches down and scratches $mself...  Now $e looks VERY happy.
#
 
meditate 0 0
You assume a very comfortable position and begin to meditate.
$n rests and begins to meditate... $e chants softly to $mself.
#
 
bkiss 0 0
You blow kisses to the air.
$n blows kisses at no one in particular.
You blow a kiss at $N and wonder if $E will catch it.
$n blows a kiss at $N ... isn't $e so CUTE?
$n blows a kiss at you and hopes you'll blow one back at $m.
You kiss falls to the ground with no one to go to.
You blow a kiss to yourself... isn't the world beautiful?
$n blows a kiss to $mself, obviously very in love.
 
beer 0 0
You pull out a six-pack.
$n starts to juggle a six-pack of beer.
You toss a bottle of beer at $N.
$n tosses a bottle of beer at $N ... let's just hope $e'll catch it!
$n tossed you a bottle of beer... I think $e wants something...
The bottle crashes to the floor and shatters.
You pop off the top and down a beer.
$n pops the top off a bottle of beer and downs it in one gulp.
 
bcatch 0 0
You reach out and rescue the bottle from its flight.
$n reaches out and grabs the bottle of beer tossed to $m.
#
 
claw 0 0
You tighten your hands into a fist.
$n clenches $s fists until blood drips from them...
You claw $S eyes out... GROSS!
$n buries $s nails in $N's eyes ... OH GOD, THE BLOOD!
$n buries $s nails in your eyes and you are blinded by your own blood!
They aren't here to claw.
................................................................................
$
With the greatest of stealth, you tie $S shoelaces together.
$n sneaks up to $N and ties $S shoelaces together.
You try to take a step, and you hit the world facedown!  Someone must have tied your shoelaces together!
Whose laces?
You tie your own shoelaces together, try to walk, and promptly fall.
$n cleverly ties $s own shoelaces together, tries to walk, and sprawls flat on the floor.
 
tag
Tag whom?
$n casts about for someone to tag.
>From nowhere, you pounce on $N and TAG $M remorselessly!  BWAHAHA!!!
$n dives from the shadows and TAGS $N.  $N IS IT!
$n pounces on you and >>> TAGS <<< you!  You're IT!
Who were you going to tag, then?
Unable to catch anyone else, you do the intelligent thing and tag yourself. You're still IT!
Unable to catch anyone else, $n tags $mself.  Are you impressed?
 
tank
You boldly offer to tank for your everyone else.  Are you sure you know what you're getting into?
$n offers to tank!
You offer to tank for $N.
$n offers to tank for $N.
$n offers to tank for you!
Tank for whom?
No one will tank for you, eh?!? WELL, YOU'LL SHOW THEM!  (right?)
In dazzling chivalry, $n offers to tank-- for $mself!
 
starve
You show your prominent ribs and hope that someone will take pity.
$n is withering before your eyes!  Starvation!
You throw yourself upon $S mercy, begging for food.
$n begs $N for food.  One would think that magic would have cured hunger by now...
$n is starving before your eyes!  Could you spare some food, please?
Sorry, but that person isn't around-- looks like you'll starve.
#
 
aargh
AAAAAARRRRRRGGGGGGHHHHHH!!!!!!
$n throws back $s head and howls in profound frustration!
You scream your frustration and grab for $S throat with both hands!
$n howls in frustration, and leaps for $N, trying to throttle $M!
$n grabs for your throat with two hands, howling in frustration!
You get even MORE frustrated when you can't find anyone to throttle!
You scream in frustration at your own stupidity!
$n screams in frustration at $s own stupidity!
 
homework
Your suddenly remember that you have to defend your thesis today...
$n looks stricken.  Could $e have blown off some important homework?
#
 
puff
You mimic Puff at her most annoying.
$n says, "Did you know that I'm written in C?"
#
 

yae
You sigh, burdened with Yet Another Eeediot.
$n sighs, burdened with Yet Another Eeediot.
There's Yet Another Eeediot in the room, and you're looking right at $M.
$n clearly believes that $N is an Eeediot! 
$n glares at you, obviously not impressed with your intelligence.
There are plenty of Eeediots, but that one doesn't seem to be present.
You bonk yourself for the Eeediot you are!
$n bonks $mself, HARD, and curses $mself for the Eeediot $e is!

lightbulb
*Ding!*  Inspiration!
A light bulb appears above $n's head!
#
 
voodoo
Bad juju like this has to be directed at a person.
$n looks hostile for a moment.
You stare daggers at $N, jabbing pins into $S effigy.
$n glares balefully at $N while stabbing a pin into a voodoo doll.
Your heart lurches in your chest, and fiery pain stabs through your skull!
Your hatred finds no such target.
................................................................................
Nervous? They aren't even here.
#

leer 0 0
You peer around the room, leering like the pervert you are!
$n peers about, leering like a filthy pervert!
You leer at $N like the pervert you are.
$n eyes $N up and down, leering like a filthy pervert! 
$n eyes you up and down, leering like a filthy pervert!
You'll have to settle for memories -- that person isn't here.
Desperation has reached new heights, hasn't it?
$n leers at $mself shamelessly.

polite 0 0 
You give a polite little chuckle. 
$n gives a polite little chuckle. 
You indicate your underappreciation of $S joke. 
$n gives a polite little chuckle to $N's joke. 
$n gives a politle but unappreciative chuckle to your joke. 
You can't find a friend to chuckle with. 
You chuckle at your own joke, since no one else would. 
$n chuckles at $s own joke, since none of you would. 

mischievous 0 0 
You give a mischievous smile at the trouble you have in mind. 
$n grins mischievously at a nasty idea. 
You grin mischievously at $M, thinking an evil thought. 
$n grins mischievously at $N.  $m must be thinking something evil.
$n grins mischievously at you.  You inch toward the door. 
You must be delirious. 
You grin mischievously to yourself. 
$n grins mischievously to $mself.

accept 0 0
You accept the proferred apology graciously. 
$n graciously accepts the proferred apology. 
#
 
anticipate 0 0
You murmur 'Sssssoonnn, my presssssciousssss...' 
$n murmurs 'Ssssssooonnnn, my pressssscioussss...' 
#
 
shudder 0 0
You shudder at the horror and repress tears. 
$n shudders at the horror and represses tears. 
#
 
powertrip 0 0
You scream 'The PPppppPOOOOoooWWWwwwErrRRR!' and writhe. 
$n writhes, screaming 'The PPppppPOOOOoooWWWwwwErrRRR!' 
#
 
mull 0 0
You mull over the idea at hand, asking for patience. 
$n mulls over the idea at hand.  Please be patient. 
#
 
wait 0 0 
You wait patiently. 
$n waits patiently. 
#
 
bat 0 0 
You bat your long, dark lashes and smile innocently. 
$n bats $s long, dark lashes and smiles innocently. 
#
 
sage 0 0 
You nod sagely. 
$n nods sagely. 
#
 
contemplate 0 0 
You bite your lip contemplatively. 
$n bites $s lip contemplatively. 
#
 
agree 0 0 
You agree absolutely.
$n agrees absolutely.
You nod in enthusiastic agreement with $N.
$n nods in enthusiastic agreement with $N.
$n nods in enthusiastic agreement with you.
Sorry, your target is absent.
You find yourself most agreeable.
$n finds $mself the most agreeable being alive.
 
toast 0 0 
You raise a glass of champagne in a toast. 
$n raises $s glass of champagne in a toast. 
You raise your glass of champagne to $S. 
$n silently toasts $N. 
$n silently toasts you. 
Your object of praise is absent. 
You grin evilly and toast yourself. 
$n grins evilly and toasts $mself. 
 
conspire 0 0 
You wink conspiratorily, waiting for the countersign. 
$n winks conspiratorily, waiting for the countersign. 
You induct $S into your private conspiracy with a wink. 
$n winks conspiratorily at $N.  You wonder what this can mean. 
$n inducts you into $m private conspiracy with a wink. 
Even you conspire against yourself. 
$n is paranoid enough to distrust even $mself. 
# 
 
support 0 0 
You fully support the plan. 
$n fully supports the plan. 
You hug $M supportively and smile. 
$n hugs $N supportively and smiles. 
$n hugs you supportively and smiles. 
Sorry, friend, I can't see that person here. 
You hug yourself sadly. 
$n hugs $mself sadly.  Perhaps you could help? 
 
pound 0 0 
You make vague pounding motions with your fist at the thought. 
$n makes vague pounding motions with $m fist at the thought. 
You pound $M into a bloody mass. 
$n pounds $N into a bloody mass. 
$n pounds you into a bloody mass. 
Sorry, friend, I can't see that person here. 
#
 
wrist 0 0 
You hold out out a wrist for a slap. 
$n holds out a wrist for a slap. 
You slaps $M wrist sharply. 
$n slaps $N's wrist sharply. 
$n slaps your wrist sharply. 
Sorry, friend, I can't see that person here. 
You slap your own wrist. 
$n slaps $m own wrist. 
 
romeo 0 0
You light up a Romeo y Julietta cigar and puff contentedly.
$n lights up a Romeo y Julietta cigar and puffs contentedly.
#

camel 0 0
You pretend you are a camel.
................................................................................
You light a Camel cigarette for $M.
$n lights a Camel cigarette for $N.
$n lights a Camel cigarette for you.
You don't see that personhere.
You light a Camel cigarette and inhale sharply.
$n lights a Camel cigarette and inhales sharply.

whip 0 0 
You crack your bullwhip menacingly. 
$n cracks a bullwhip menacingly. 
You flick your whip across $M bare back. 
$n flicks $s whip across $N's bare back. 
$n flicks a whip across your back... the pain.. the pleasure.. 
Sorry, friend, I can't see that person here. 
You whip yourself into a frenzy. 
$n whips $mself into a frenzy.

cramp 0 0 
You gasp and clutch your abdomen, wheezing with the pain. 
$n gasps and clutches $m abdomen in agony. 
You hammerlock $M, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!" 
$n hammerlocks $N, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!". 
$n hammerlocks you, screaming "AAAAARRRRRGH!! I HAVE A CRAMP!!!"
Suffering as you are, you didn't see that person slip out. 
#
 
make 0 0 
You breathe heavily and wetly. 
$n breathes heavily and wetly. 
You steam up the windows with $M. 
$n and $N start steaming up the windows. 
$n starts steaming up the windows with you. 
Sorry, friend, I can't see that person here. 
#
 
sweep 0 0 
You look at your empty arms and sigh. 
$n looks at $s empty arms and sighs. 
You sweep $M into your arms and kiss $M long and deeply. 
$n sweeps $N into $s arms and kisses $M long and deeply. 
$n sweeps you into $s arms and kisses you long and deeply. 
The object of your kiss is absent. 
#
 
buff 0 0 
You buff your nails on your cloak. 
$n buffs $s nails on $s cloak. 
#
 
liver 0 0 
You look angrily for someone to disembowel. 
$n angrily for someone to disembowel. 
You rip out $S liver and eat it. 
$n rips out $N's liver and eats it. 
$n rips out your liver and eats it. 
The object of your wrath is absent. 
#
 
wrestle 0 0 
$
$
You wrestle $M to the floor and pin $M there. 
$n wrestles $N to the floor, pinning $M there. 
$n wrestles you to the floor and pins you. 
Sorry, friend, I can't see that person here. 
You wrestle with your conscience. 
$n wrestles with $m conscience. 
 
tie 0 0
You toy with a pair of handcuffs suggestively. 
$n toys suggestively with a pair of handcuffs. 
You grab $N and tie $M to the bedposts. 
$n grabs $N and ties $S to a four poster bed. 
$n grabs you and ties you securely to a four poster bed. 
Sorry, friend, I can't see that person here. 
#
 
tight 0 0 
$
$
You hold $M tightly in your arms. 
$n holds $N tightly in $m arms. 
$n holds you in $m arms. 
Sorry, friend, I can't see that person here. 
#
 
fatality 0 0 
$
$
You intone, '$N wins.  Fatality.' 
$n intones, '$N wins.  Fatality.' 
$n intones, '$N wins.  Fatality.' 
#
 
yowl 0 0
You yowl in frustration. 
$n yowls in frustration! 
#
 
silly 0 0
You do the silly walk all around the room. 
$n does the silly walk all around the room.  $e *is* silly. 
#

#0
#$







|
|
|
|
|
|
|
|







 







|
|
|
|
|
|
|
|
|







 







|








|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|

|








|








|








|
|
|
|
|
|
|
|
|

|








|









|









|









|









|








|









|








|









|








|









|








|









|








|









|








|








|








|









|









|









|









|









|









|









|









|









|









|









|









|









|









|









|







 







|


|







 







|







 







|







 







|







 







|







 







|









|




|




|









|









|
|








|









|









|









|


|







 







|




|









|









|




|
|








|









|









|









|




|









|









|









|









|









|









|




|









|




|




|




|




|









|









|




|







 







|









|









|








|









|




|




|





|









|







 







|





|
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|



|
|

|

|
|

|

|
|

|

|
|

|

|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|








|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|







 







|
|
|
|
|
|
|
|


|
|
|
|
|

|

|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|
|
|

|
|


|
|
|
|
|
|
|

|
|
|
|
|
|

|
|


|
|
|
|

|
|


|
|
|

|

|
|

|

|
|




381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
...
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
...
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
....
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
....
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
....
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
....
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
....
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
....
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
....
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
....
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
....
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
....
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
$n gropes $mself - YUCK.

hiccup 0 0
*HIC*
$n hiccups.
#

lick 0 0
You lick your mouth and smile.
$n licks $s mouth and smiles.
You lick $N's jawline delicately.
$n licks $N's jawline delicately.
$n licks your jawline delicately.
Lick away, nobody's here with that name.
You lick your own eyebrows.
$n licks $s own eyebrows.

love 0 0
You love the whole world.
$n loves everybody in the world.
You tell your true feelings to $N.
$n whispers softly to $N.
................................................................................
You smirk at $S saying.
$n smirks at $N's saying.
$n smirks at your saying.
You want to smirk to whom?
You smirk at yourself.  Okay.....
$n smirks at $s own 'wisdom'.

snap 0 0
Eureka!  You snap your fingers.
$n snaps $s fingers.
You snap back at $M.
$n snaps back at $N.
$n snaps back at you!
You must be very agitated.
You snap yourself to attention.
$n snaps $mself to attention.

sneeze 0 0
Gesundheit !
$n sneezes.
#

snicker 0 0
................................................................................
$n begins to yodel:  HEY!! CLERICS!! I COULD USE A HEAL!!!
$N covers $S ears as you begin to yodel.
$n yodels to $N.
$n yodels to you...you cringe and turn away.
That person just escaped!
Well, it's up to you if you want to damage your hearing.
$n yodels to $mself.  What a sado-masochist.

faint 1 0
You faint.
$n faints.
You faint into $S arms.
$n faints into $N's open arms.
$n just fainted into YOUR arms.
You fall on the floor and look stupid--really suave.
#

pinch 1 0
You say, 'A pinch of this, and a dab of that.'
$n says, 'A pinch of this and a dab of that.'
You squeeze $S bottom and grin.
$n pinches $N's bottom and grins.
$n pinches your bottom and grins.
You'd like to, wouldn't you?
You pinch yourself to see if you are dreaming!
$n pinches $mself to see if $e is dreaming!


stroke 1 0
You stroke the air vaguely.
$n makes vague stroking motions.
You gently stroke $S inner thigh.  $N inhales sharply.
$N exhales sharply and suddenly.
$n gently strokes your inner thigh.  You inhale sharply.
Maybe you should practice on yourself first.
You are about to do something you'd rather not be caught doing.
#


apologize 1 0
You apologize until you are blue in the face.
$n apologizes profusely.
You might as well apologize because $E sure as hell won't.
$n apologizes to $N with a very sincere look on $s face.
$n apologizes to you and begs for forgiveness.
Who's that?
#

caress 1 0
Who do you wish to caress?
$n looks for someone to caress.
You tenderly caress $M.
$n tenderly caresses $N.
$n tenderly caresses your body.
You're S.O.L., buddy.
#

stagger 1 8
You stagger blindly around the room.
$n staggers blindly around the room.
You stagger toward $N as the room begins to spin.
$n staggers into $N.
$n staggers blindly into you.
Stagger into whom!?!?
#

snort 1 0
You snort derisively.
$n snorts derisively.
You snort derisively at $N.
$n snorts derisively at $N.
$n snorts at you.
Snort at whom?
You snort derisively at yourself.
$n snorts derisively at $sself.

slobber 1 0
You slobber down your front.
$n slobbers all over $mself.
You slobber on $N.
$n slobbers on $N  **Yuck**
$n slobbers disgustingly on you.
Slobber on WHOM?
#

blink 1 0
You bat your eyelashes.
$n blinks innocently.
You blink innocently at $N.
$n blinks innocently at $N.
$n blinks innocently at you.
Feign innocence for whom?
You try to convince yourself of your innocence.
#

tease 1 0
What a tease.   SHEESH.
$n looks around for someone to tease.
You tease $N in a playful way.
$n sticks $s tongue out at $N.
$n sticks $s tongue out at you, what a DORK!!
Tease whom?
You tease yourself. NYAH NYAH NYAH.
$n teases $mself.

knee 1 8
You raise one knee, preparing to do justice...
$n cocks one knee threateningly.
You knee $M hard in the groin.
$N doubles over in pain as $n knees $M in the groin!
$n suddenly knees you in the groin!  You fall to your knees in agony.
Whom do you wish to render impotent?
What ARE you thinking !?!??!?!?!?!
#

flirt 1 0
You flirt outrageously.
$n is an outrageous flirt.
You flirt with $N trying to get $S attention.
$n flirts with $N, hmmm wonder what $e wants? *wink*
$n flirts with you.
Sorry no one here to flirt with. :(
You flirt with yourself -- what ARE you trying to gain!?!?!?
$n flirts with $mself, wonder what $e is trying to accomplish?

tip 1 0
You tip your hat gallantly.
$n gallantly tips $s hat.
You tip your hat to $N.
$n gallantly tips $s hat to $N.
$n gallantly tips $s hat to you.
But there is no one here to impress?!?!
#

lust 1 0
Your hormones begin to rage.
$n has that look of lust in $s eyes --- Get away QUICK!
You have lust after $N.
$n looks lustily at $N.
$n lusts after your delectable body.
Whom are you trying to lust after?
Oh, please! You aren't THAT great...
$n lusts after $mself, lonely eh?

flutter 1 0
You flutter your eyelashes seductively.
$n flutters $s eyelashes seductively.
You flutter your eyelashes at $N, trying to be seductive.
$n flirts with $N, flutters $s eyelashes at $M.
$n flutters $s eyelashes at you coyly.
EH? Can't see them here.
#

bark 1 0
You bark loudly.
$n barks like a dog. GO DAWGS SIC 'EM!!! WOOF! WOOF! WOOF! WOOF!
You bark at $N scaring $M silly -- SHAME ON YOU!!
$n barks at $N scaring $M senseless.
$n barks loudly at you, you back away, because $e might bite too!!
Bark at whom?
You bark at yourself and jump back in fear.
$n barks at $mself and cowers in fear.

howl 1 0
You howl at the moon.
$n howls at the moon.
You howl soulfully at $N.
$n howls at $N.
$n howls soulfully at you.
Who? What? Where?
#

babble 1 0
You babble endlessly.
$n babbles endlessly, won't $e EVER shut up?
You babble to $N for hours on end.
$n babbles to $N for what seems an eternity, how can $N stand it?
$n babbles at you. You nod mechanically, hoping $e will shut up soon.
Whom do you wish to annoy with your babble?
You babble on and on to yourself, FINALLY! someone who LISTENS!!
$n babbles quietly to $mself.

ramble 1 0
You ramble on and on.
$n rambles on about a boring exploit.
You ramble on to $N about your past adventures.
$n blithers on and on to $N about something.
$n tells you a rather boring tale, you feign interest.
??EH??
#

hush 1 0
SHHHHHHHHHHHHHHHHHHHHHH
$n requests everyone quiet down.  Shhhhhhhhhhh...
You nicely ask $N to be more quiet.
$n nicely asks $N to be more quiet.
$n kindly requests that you please quiet down.
Who needs to be silenced?
You realize you are loud and obnoxious and try to silence yourself.
$n covers $s mouth in an attempt to silence $mself.

threaten 1 8
You threaten everyone with your overwhelming presence.
You feel threatened in the presence of the great $n.
You stand tall as you threaten $N.
$n threatens $N forcefully.
$n threatens you...oooooooh scary *laugh*
Whom do you wish to intimidate?
#

roll 1 0
You roll your eyes in disgust.
$n rolls $s eyes, disgusted.
You look at $N and roll your eyes in disgust.
$n rolls $s eyes in disgust at $N.
$n rolls $s eyes at you.
You should be disgusted with yourself because you look so foolish.
At whom do you wish to roll your eyes?
#

swoon 1 0
You swoon.
$n swoons in absolute ecstasy.
You look at $N and swoon in ecstasy.
$n looks at $N and swoons in ecstasy.
$n looks at you and swoons in ecstasy.
Who?
#

bird 1 0
You flick a bird...How obscene!
$n flicks a bird at no one in particular.
You shoot a bird at $N.
$n gives $N the bird.
$n gives you the bird...What an ass!
Don't you hate to waste a good obscene gesture like that?
#

eyebrow 1 0
You raise an eyebrow at the notion.
$n raises an eyebrow.
You raise your eyebrow at $N.
$n raises an eyebrow at $N's weird actions.
$n raises an eyebrow at you.
Forget it.  They aren't here.
#

serenade 1 0
You raise your voice in a loud serenade to your invisible love.
$n raises $s voice to serenade the world.
You raise your voice in a loving serenade to $N.
$n raises $s voice in a loving serenade to $N.
$n serenades you, you are swept away by $s voice.
The one that you wish to serenade has left you to sing to yourself.
You sing a loud serenade to yourself.  What type of person are you?!
$n serenades $mself.  What an ego!

grimace 1 0
You grimace painfully at the thought.
$n grimaces painfully at the thought.
You grimace at $N.
$n grimaces at $n.
$n grimaces at you.  What could be wrong?
You grimace at no one in particular.
You grimace painfully at your thoughts.
$n grimaces painfully to $mself.

boggle 1 0
You boggle at the concept.
$n boggles at the concept.
You boggle at $N.
$n boggles at $N.
$n boggles at you.
Boggle away.  They've left.
You boggle at yourself.  Hmmm...intriguing.
$n boggles quietly to $mself.

beckon 1 0
You beckon for everyone to follow.
$n beckons for everyone to follow.
You beckon for $N to follow -- sure hope they do!
$n beckons $N to follow...hmmm what's going on?
$n beckons for you to follow.
So sorry, that person has already left.
You beckon to your shadow to follow.
$n beckons to $s shadow to follow.

wonder 1 0
You wonder about how things could have been.
$n gets a blank stare on $s face.  What could $e be wondering about?
You look at $N and wonder what will happen.
$n looks at $N and wonders....
$n looks at you quizzically.
You wonder what would have happened had they been here.
You wonder about yourself and your purpose here.
A blank stare crosses $n's face.  What could $e be wondering about?

worry 1 0
You worry about what's going to happen.
A troubled look suddenly crosses $n's face.  Wonder what's wrong?
You look at $N worriedly.
$n looks at $N with a troubled gaze.
$n looks at you worriedly.
Well they obviously aren't worried -- they left!
You worry about what's going to happen.
A troubled look suddenly crosses $n's face.  Wonder what's wrong?

drool 1 0
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!
You drool messily on $N.
$n drools upon $N.
$n looks at you lustily and drools.
Oh fine, make a pool of slobber -- they aren't even here!
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!

nod 1 0
You nod.
$n nods.
You nod at $N.
$n nods at $N.
$n nods at you in agreement.
Nod your head off -- they aren't here.
You attempt to nod at yourself and get dizzy instead.
$n nods quietly to $mself.  What a wacko.

purr 1 0
MMMMMMEEEEEEEEEOOOOOOOOOOOOOWWWWWWWWWWW!!!!!!!!!!!
$n purrs contentedly.
You rub up against $N and purr contentedly.
$n rubs against $N and purrs contentedly.
$n rubs up against you and purrs contentedly.
You silly cat!  They aren't here.
You purr quietly to yourself.
$n purrs contentedly to $mself.

point 1 0
You point in every direction.
$n points excitedly!
You point at $N.
$n points excitedly at $N!
$n points at you.  How rude!
You point at no one in particular.
You point at yourself, obviously very confused.
$n points at $mself, obviously very confused.

rub 1 0
You rub your hands together in greedy anticipation.
$n rubs $s hands together in greedy anticipation.
You give $N a nice, long, kinky rubdown.
$n gives $N a nice long rubdown.
$n gives you a rubdown, running $s hands over your tense shoulders...Mmmm...
Shame to waste those talented hands, but they've already left.
You rub yourself...lingering a little too long in some places.
$n rubs $mself...what a creep!

bleed 1 0
You bleed profusely -- making a horrible mess!
$n weakly bleeds all over the floor.
You bleed on $N -- ewww!
$n bleeds on $N.  Watch out, YOU might be next!
$n bleeds on you -- ewww!  Get away!!
Bleed on whom?
You bleed all over yourself.
$n bleeds profusely all over $mself.

highfive 1 0
You jump in the air and give a BIG high five to...umm...absolutely nothing.
$n wildly high fives the air, looking very foolish -- very foolish indeed.
You jump in the air and give a BIG high five to $N!
$n enthusiastically high-five's $N!
$n gives you a BIG high five!  Way to go!!
Sorry, they have already left.
You try to give yourself a high five.  What ARE you thinking?
$n tries to high five $mself, but ends up looking foolish instead.

propose 1 0
You propose to everyone in the room.
$n proposes to everyone in the room.  Very odd.
You kneel and romantically propose to $N.
$n gets on one knee and proposes to $N.
$n gets down on one knee and romantically proposes to you.
You must be lonely.  They aren't here.
You are SO full of yourself!
$n proposes to $mself -- how narcissistic!

peer 1 0
You peer around yourself intently.
$n peers around $mself intently.
You peer intently at $N.
$n peers intently at $N.
$n peers at you intently.
They aren't here.
You get a little cross-eyed with your attempts to stare yourself down.
$n peers at $mself, crossing $s eyes in the process.

worship 1 0
You prostrate yourself and worship the gods!
$n prostrates $mself and worships the gods!
You fall on your knees and worship $N.
$n falls on $s knees and worships $N.
$n falls to the ground and worships you.
You can't worship someone who isn't here.
................................................................................
$n looks at you and innocently bats $s eyelashes.
Don't even TRY -- they've already left.
#


collapse 1 0
You collapse on the floor from exhaustion.
$n dramatically collapses to the floor from exhaustion.
You collapse right into $N's arms.
$n collapses right into $N's arms.
Suddenly, $n collapses into your arms from exhaustion.
They've already left, just collapse on the floor.
#


stretch 1 0
You lean back and streeeeeettch your arms and legs.
$n stretches luxuriously.  Kinda makes you want to doesn't it?
................................................................................
Your ego takes a blow.  They've already left.
You boast to yourself of all your great feats!  Your own biggest fan.
$n boasts to $mself -- what an ego!

squirm 1 0
You squirm uncontrollably in your consternation.
$n squirms uncontrollably, suddenly looking very uncomfortable.
You look at $N and squirm with delight.
$n looks at $N and squirms with delight.
$n looks at you and squirms with delight.
#

moo
You chew your cud and moo plaintively.  Muh-OOOOO!
$n turns cowlike eyes on you, chews $s cud, and moos plaintively.
................................................................................
#


mutter 1 0
You mutter quietly to yourself.
$n mutters something quietly to $mself.
You mutter something to $N.
$n looks at $N and mutters something nasty under $s breath.
$n looks at you and mutters something nasty under $s breath.
There's nothing left for you to say, they've left!
You mutter quietly to yourself.
$n mutters something quietly to $mself.

rofl 1 0
You roll on the floor, laughing hysterically.
................................................................................
You show off to $N, flexing your muscles proudly.
$n flexes $s muscles, in a vain attempt to impress $N.
$n flexes $s muscles in a vain attempt to show off to you.
#


embrace 1 0
Who would you like to embrace?
$
You wrap your arms around $N in a warm and loving embrace.
$n wraps $s arms around $N in a warm and loving embrace.
$n takes you in $s arms in a warm and loving embrace.
Your heart breaks as you realize you are alone.
You try to console yourself with a loving embrace.
$n tries to console $mself by wrapping $s arms around $mself.
................................................................................
You bonk $N on the head for being such a moron.
$n bonks $N on the head for being such an UTTER moron.
$n bonks you on the head for being so foolish.
***BONK*** they left...
You bonk yourself, fool that you are.
$n bonks $mself and grimaces in pain.

squeal 1 0
You squeal with delight!
$n lets out a sudden squeal of delight!
You look at $N and squeal with delight!
$n squeals with delight at $N.
$n looks at you and squeals with delight!
#

................................................................................
$n moshes insanely around the room!
You mosh sadistically against $N ... you WILL be punished.
$n bounces off of $N in a vain attempt to mosh... what a LOSER.
$n slams into you, moshing painfully against you.  That REALLY hurts!
Hmmm...  your victim found a new dance partner.
Masochist!
$n throws $mself on the floor, grinding $mself into a bloody pulp

flinch 0 0
EEEK... You flinch in obvious pain.
$n flinches in obvious pain... you wonder what $e did THIS time.
Don't you wish you could just crawl under a rock and die?
$n sneaks a glance at $N and flinches.
$n flinches in response to your cold rebuke.
Relax, $E is gone.
You can't belive what you've done...
$n twitches violently, shocked at $s own behavior.

air 0 0
You grab your air guitar and play for all you're worth.
$n air-guitars like a mad man ... EXCELLENT!!!
You hope $E appreciates your (total lack of) talent.
$n is surrounded by air groupies.
$n plays a most excellent tune for you on $s most excellent air guitar.
Awww... you have no audience!
You play softly to yourself.
#

tweak 0 0
Tweak who?
$
You gently tweak $S cheek.  Isn't $E so CUTE?
$n tweaked $N's cheek... don't they look so adorable together?
$n lovingly tweaks your cheek.  It reminds you of Grandma... sniff...
*Sniff*  That cheek seems to be missing.
You can't DO that.
#

peck 5 0
Wouldn't you like to do that to a person, or do you prefer air?
$
Risking a slap to the face, you give $N a peck on the cheek.
$n smiles and gives $N a chaste peck on the cheek.
$n pecks you on the cheek, how sweet!
I guess you scared them away...
You must REALLY like yourself.
$n tries in vain to wrap $s lips around $s cheeks.

explode 0 0
You feel the blood boiling in your veins!
$n turns a deep red, fighting to contain $s temper...
You feel your rage explode deep in the pit of your stomach...
$n burns holes through $N with his explosive anger!
$n is ANGRY with you... I'd run if I were you!!!
Temper Temper... they left.
Your soul burns brightly then fades to nothing.
$n implodes!!!  Only a grease spot remains where $e once stood.

raspberry 4 0
You stick your tongue out at ... well, no one.
$n sticks $s tongue out, catching a few flies in the process.
You give $N the raspberry... and spit all over yourself.
$n gives $N the raspberry... PHBT!  What a mess... Spit EVERYWHERE!
You are splattered with saliva as $n gives you the raspberry... HOW RUDE!
Hang your tongue out if you like, $e isn't here.
You try to stick your tongue out at yourself... somehow, it isn't the same.
#

flash 0 0
You grin and strut as you open your coat and show what you've got!
$n rips $s clothes off and parades naked around the room!
Swiftly you jerk open your jacket, trying to get $M to notice you.
Cover your eyes, $n is exposing $mself to $n!  EWWWW!
You gasp!  $n has just revealed $s "equipment" to you!
Exhibitionist, that person isn't here!
That's sick.
PERVERT PRESENT!  $n is trying to flash $mself

strip 0 0
You do a slow strip tease for the people...
$n begins a slow, erotic strip-tease act...
You start to undress $N ... one piece of clothing at a time...
$n runs $s hands over $Ns body, slowly stripping away the clothing...
$n has started to strip you... woah BABY!
Your toy doesn't seem to be here...
You can't DO that in public!
#

undress 0 0
You start to undress in the shadows, waiting for someone to notice.
$n begins to undress... $e is VERY sexy... *Pant*
You undress $M with your eyes... Kinky.
You feel the temperature of the room rise as $n lusts on $N...
Feeling exposed, you sense $n undressing you with $s eyes...
They are not here...
A mirror would work better...
#

................................................................................
$
Mmmm... you give $N a good working over with your tongue...
$n slides $s tongue over $N's body...
$n wraps $s tongue around you, moving it across your young, nubile flesh...
Never around when required...
You slowly tongue yourself.
$n slowly tongues $mself... ICK.

view 0 0
You sit back and watch the world go by.
$n kicks back and enjoys the view.
#

grumble 0 0
You grumble distractedly to yourself
$n grumbles and growls. You wonder what's wrong...
You grumble at $N, disgusted with their presence.
$n seems to be a grumpy bear... $e is grumbling at poor $N.
$n is grumbling at you... what'd you do?
That person is presently AWOL.
Why bother?
#

cheer 0 0
You cheer and dance as the joy within you bursts forth!
$n cheers and sings... $e is just BURSTING with joy!
You cheer $N on and wish $M good luck!
*Yay!*  Go $N!!!  $n cheers $M on.
You are cheered on by $n... you feel so loved!
Who? Huh? Where?  They're not here, that's for sure
You cheer silently for yourself since nobody else will
$n resorts to cheering for $mself... how sad.

plead 0 0
You beg and plead to anyone who will listen.
$n pleads $s case to anyone who will listen... You ALMOST feel sorry for $s.
#

charge 0 0
You charge into the fray!
$n charges into the fray!  All guts, no brains.
With surprising dexterity, you head-butt $N!
$n ducks down low, charges forward, and head-butts $N!
OOF!  $n rammed $s head into your stomach!  That HURT.
Nobody 'round with that name, Mister!
You run your head into a brick wall.  OUCH!
#

criticize 0 0
Yes, but who?
$
You criticize $M with all the warmth of a snake.
With a nasty grin, $n rips apart $Ns efforts.
$n informs you that your attempts need some MAJOR adjustments.
Where oh where has my victim gone, oh where oh where...
You criticize yourself profusely.
$n tears $mself apart, cursing $s own stupidity.

run 0 0
You run away in terror and horror!
$n runs away in utter terror!
You run away from $N in complete terror!
$n runs away from $N in utter terror and horror!
$n runs from you, fearing for $s life!
No reason to be afraid, they aren't here.
Are you THAT ugly?
$n looks in the mirror, sees $s face, and runs away terrified!

judge 0 0
Yes, but who?
$
You judge $m on a scale of 1 to 10.
On a scale from 1 to 10, $n thinks $N is a complete ZERO!!!
$n judges your actions on a scale of 1 to 10 and comes up with ZERO!!!
They aren't here right now.
You don't REALLY want to do that.
#

insane 0 0
You feel your sanity slipping away...
Before your eyes, $n's sanity is slipping away...
#

cover 0 0
You cover your ears to protect them from the noise.
$n covers $s ears to protect them from all the noise.
You glare at $N and cover your ears.
$n glares at $N and covers $s ears.
$n covers $s ears because of you... you are TOO LOUD!
They aren't here right now.
No... I don't think so.
#

flare 0 0
You flare your nostrils disdainfully.
$n flares $s nostrils disdainfully.
You flare your nostrils disdainfully at $N... HOW RUDE!
$n flares $s nostrils disdainfully at $N and turns up $s snobbish nose.
$n flares $s nostrils disdainfully at you... what'd you DO???
Flare if you wish, but that person isn't here to see it.
*Sniff*  But you should LOVE yourself!
#

head 0 0
You toss your head haughtily.
$n tosses $s head haughtily.
You toss your head haughtily at $N.
$n tosses her head haughtily at $N... what an ATTITUDE!
$n tossed $s head haughtily at you... :(
That person is AWOL.
Why would you do that?
#

pie 0 0
You pick up a pie and toss it around for a bit.
$n picks up a pie and tosses it around for a bit.
You toss a pie at $N and hit $M right in the FACE!
$n tosses a pie at $N and hits $m right in the FACE!
$n tossed a pie in your face... and now you are all covered in GOO!
That person isn't here...
You bury your face in the pie... yummmmm!!! :)
$n buries $s face in the pie, licking the pan clean.

cower 0 0
You cower in a corner.
$n cowers in a corner and whimpers softly.
You cower away from $N and $S harsh words.
$n cowers in a corner, terrified that $N will come after $m.
You scared poor $n!  Now $S is cowering in a corner, afraid for $s life.
That person is AWOL at the moment.
You are afraid of your own shadow!
$n cowers in the corner afraid of $s own shadow

noogie 5 0
You can't noogie the AIR!  It has no head.
$
You grab $N, get $M in a head lock and NOOGIE $M!
$n grabs $N in a head lock and NOOGIES $M... ARGH!!!
Oh NO, $n grabs you, throws you in a head lock and NOOGIES you!
That person has gone off to other lands...
You rub your head and create a static charge...
$n rubs $s OWN head and creates a static charge... *ZAP*

yeehaw 5 0
You mount your pony(?) and shout YEEEEEEEHAAAAAAAW!
$n bounces up and down screaming *YEEEEEEHAAAAAAW!*
#

pissed 5 0
You are PISSED!
$n is PISSED so watch out!
You turn a stoney gaze toward $N... you are SOOO pissed at $N!
$n glares at $n.... $n is SOOO PISSED at $m!
$n is pissed at you now... What do you think $e'll DO?
That person is not here...
You are PISSED at yourself!
$n is so pissed at $mself.  How could $e be so stupid???

passout 5 0
You belch and pass out.
$n is OBVIOUSLY intoxicated... $e burps loudly and passes out!
#

adjust 5 0
You look around, make sure nobody is watching, and you adjust your "Tool."
$n looks around slyly, smiles, then reaches down and "adjusts" $mself...
#

scratch 5 0
You scratch yourself contentedly.
$n reaches down and scratches $mself...  Now $e looks VERY happy.
#

meditate 0 0
You assume a very comfortable position and begin to meditate.
$n rests and begins to meditate... $e chants softly to $mself.
#

bkiss 0 0
You blow kisses to the air.
$n blows kisses at no one in particular.
You blow a kiss at $N and wonder if $E will catch it.
$n blows a kiss at $N ... isn't $e so CUTE?
$n blows a kiss at you and hopes you'll blow one back at $m.
You kiss falls to the ground with no one to go to.
You blow a kiss to yourself... isn't the world beautiful?
$n blows a kiss to $mself, obviously very in love.

beer 0 0
You pull out a six-pack.
$n starts to juggle a six-pack of beer.
You toss a bottle of beer at $N.
$n tosses a bottle of beer at $N ... let's just hope $e'll catch it!
$n tossed you a bottle of beer... I think $e wants something...
The bottle crashes to the floor and shatters.
You pop off the top and down a beer.
$n pops the top off a bottle of beer and downs it in one gulp.

bcatch 0 0
You reach out and rescue the bottle from its flight.
$n reaches out and grabs the bottle of beer tossed to $m.
#

claw 0 0
You tighten your hands into a fist.
$n clenches $s fists until blood drips from them...
You claw $S eyes out... GROSS!
$n buries $s nails in $N's eyes ... OH GOD, THE BLOOD!
$n buries $s nails in your eyes and you are blinded by your own blood!
They aren't here to claw.
................................................................................
$
With the greatest of stealth, you tie $S shoelaces together.
$n sneaks up to $N and ties $S shoelaces together.
You try to take a step, and you hit the world facedown!  Someone must have tied your shoelaces together!
Whose laces?
You tie your own shoelaces together, try to walk, and promptly fall.
$n cleverly ties $s own shoelaces together, tries to walk, and sprawls flat on the floor.

tag
Tag whom?
$n casts about for someone to tag.
>From nowhere, you pounce on $N and TAG $M remorselessly!  BWAHAHA!!!
$n dives from the shadows and TAGS $N.  $N IS IT!
$n pounces on you and >>> TAGS <<< you!  You're IT!
Who were you going to tag, then?
Unable to catch anyone else, you do the intelligent thing and tag yourself. You're still IT!
Unable to catch anyone else, $n tags $mself.  Are you impressed?

tank
You boldly offer to tank for your everyone else.  Are you sure you know what you're getting into?
$n offers to tank!
You offer to tank for $N.
$n offers to tank for $N.
$n offers to tank for you!
Tank for whom?
No one will tank for you, eh?!? WELL, YOU'LL SHOW THEM!  (right?)
In dazzling chivalry, $n offers to tank-- for $mself!

starve
You show your prominent ribs and hope that someone will take pity.
$n is withering before your eyes!  Starvation!
You throw yourself upon $S mercy, begging for food.
$n begs $N for food.  One would think that magic would have cured hunger by now...
$n is starving before your eyes!  Could you spare some food, please?
Sorry, but that person isn't around-- looks like you'll starve.
#

aargh
AAAAAARRRRRRGGGGGGHHHHHH!!!!!!
$n throws back $s head and howls in profound frustration!
You scream your frustration and grab for $S throat with both hands!
$n howls in frustration, and leaps for $N, trying to throttle $M!
$n grabs for your throat with two hands, howling in frustration!
You get even MORE frustrated when you can't find anyone to throttle!
You scream in frustration at your own stupidity!
$n screams in frustration at $s own stupidity!

homework
Your suddenly remember that you have to defend your thesis today...
$n looks stricken.  Could $e have blown off some important homework?
#

puff
You mimic Puff at her most annoying.
$n says, "Did you know that I'm written in C?"
#


yae
You sigh, burdened with Yet Another Eeediot.
$n sighs, burdened with Yet Another Eeediot.
There's Yet Another Eeediot in the room, and you're looking right at $M.
$n clearly believes that $N is an Eeediot!
$n glares at you, obviously not impressed with your intelligence.
There are plenty of Eeediots, but that one doesn't seem to be present.
You bonk yourself for the Eeediot you are!
$n bonks $mself, HARD, and curses $mself for the Eeediot $e is!

lightbulb
*Ding!*  Inspiration!
A light bulb appears above $n's head!
#

voodoo
Bad juju like this has to be directed at a person.
$n looks hostile for a moment.
You stare daggers at $N, jabbing pins into $S effigy.
$n glares balefully at $N while stabbing a pin into a voodoo doll.
Your heart lurches in your chest, and fiery pain stabs through your skull!
Your hatred finds no such target.
................................................................................
Nervous? They aren't even here.
#

leer 0 0
You peer around the room, leering like the pervert you are!
$n peers about, leering like a filthy pervert!
You leer at $N like the pervert you are.
$n eyes $N up and down, leering like a filthy pervert!
$n eyes you up and down, leering like a filthy pervert!
You'll have to settle for memories -- that person isn't here.
Desperation has reached new heights, hasn't it?
$n leers at $mself shamelessly.

polite 0 0
You give a polite little chuckle.
$n gives a polite little chuckle.
You indicate your underappreciation of $S joke.
$n gives a polite little chuckle to $N's joke.
$n gives a politle but unappreciative chuckle to your joke.
You can't find a friend to chuckle with.
You chuckle at your own joke, since no one else would.
$n chuckles at $s own joke, since none of you would.

mischievous 0 0
You give a mischievous smile at the trouble you have in mind.
$n grins mischievously at a nasty idea.
You grin mischievously at $M, thinking an evil thought.
$n grins mischievously at $N.  $m must be thinking something evil.
$n grins mischievously at you.  You inch toward the door.
You must be delirious.
You grin mischievously to yourself.
$n grins mischievously to $mself.

accept 0 0
You accept the proferred apology graciously.
$n graciously accepts the proferred apology.
#

anticipate 0 0
You murmur 'Sssssoonnn, my presssssciousssss...'
$n murmurs 'Ssssssooonnnn, my pressssscioussss...'
#

shudder 0 0
You shudder at the horror and repress tears.
$n shudders at the horror and represses tears.
#

powertrip 0 0
You scream 'The PPppppPOOOOoooWWWwwwErrRRR!' and writhe.
$n writhes, screaming 'The PPppppPOOOOoooWWWwwwErrRRR!'
#

mull 0 0
You mull over the idea at hand, asking for patience.
$n mulls over the idea at hand.  Please be patient.
#

wait 0 0
You wait patiently.
$n waits patiently.
#

bat 0 0
You bat your long, dark lashes and smile innocently.
$n bats $s long, dark lashes and smiles innocently.
#

sage 0 0
You nod sagely.
$n nods sagely.
#

contemplate 0 0
You bite your lip contemplatively.
$n bites $s lip contemplatively.
#

agree 0 0
You agree absolutely.
$n agrees absolutely.
You nod in enthusiastic agreement with $N.
$n nods in enthusiastic agreement with $N.
$n nods in enthusiastic agreement with you.
Sorry, your target is absent.
You find yourself most agreeable.
$n finds $mself the most agreeable being alive.

toast 0 0
You raise a glass of champagne in a toast.
$n raises $s glass of champagne in a toast.
You raise your glass of champagne to $S.
$n silently toasts $N.
$n silently toasts you.
Your object of praise is absent.
You grin evilly and toast yourself.
$n grins evilly and toasts $mself.

conspire 0 0
You wink conspiratorily, waiting for the countersign.
$n winks conspiratorily, waiting for the countersign.
You induct $S into your private conspiracy with a wink.
$n winks conspiratorily at $N.  You wonder what this can mean.
$n inducts you into $m private conspiracy with a wink.
Even you conspire against yourself.
$n is paranoid enough to distrust even $mself.
#

support 0 0
You fully support the plan.
$n fully supports the plan.
You hug $M supportively and smile.
$n hugs $N supportively and smiles.
$n hugs you supportively and smiles.
Sorry, friend, I can't see that person here.
You hug yourself sadly.
$n hugs $mself sadly.  Perhaps you could help?

pound 0 0
You make vague pounding motions with your fist at the thought.
$n makes vague pounding motions with $m fist at the thought.
You pound $M into a bloody mass.
$n pounds $N into a bloody mass.
$n pounds you into a bloody mass.
Sorry, friend, I can't see that person here.
#

wrist 0 0
You hold out out a wrist for a slap.
$n holds out a wrist for a slap.
You slaps $M wrist sharply.
$n slaps $N's wrist sharply.
$n slaps your wrist sharply.
Sorry, friend, I can't see that person here.
You slap your own wrist.
$n slaps $m own wrist.

romeo 0 0
You light up a Romeo y Julietta cigar and puff contentedly.
$n lights up a Romeo y Julietta cigar and puffs contentedly.
#

camel 0 0
You pretend you are a camel.
................................................................................
You light a Camel cigarette for $M.
$n lights a Camel cigarette for $N.
$n lights a Camel cigarette for you.
You don't see that personhere.
You light a Camel cigarette and inhale sharply.
$n lights a Camel cigarette and inhales sharply.

whip 0 0
You crack your bullwhip menacingly.
$n cracks a bullwhip menacingly.
You flick your whip across $M bare back.
$n flicks $s whip across $N's bare back.
$n flicks a whip across your back... the pain.. the pleasure..
Sorry, friend, I can't see that person here.
You whip yourself into a frenzy.
$n whips $mself into a frenzy.

cramp 0 0
You gasp and clutch your abdomen, wheezing with the pain.
$n gasps and clutches $m abdomen in agony.
You hammerlock $M, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!"
$n hammerlocks $N, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!".
$n hammerlocks you, screaming "AAAAARRRRRGH!! I HAVE A CRAMP!!!"
Suffering as you are, you didn't see that person slip out.
#

make 0 0
You breathe heavily and wetly.
$n breathes heavily and wetly.
You steam up the windows with $M.
$n and $N start steaming up the windows.
$n starts steaming up the windows with you.
Sorry, friend, I can't see that person here.
#

sweep 0 0
You look at your empty arms and sigh.
$n looks at $s empty arms and sighs.
You sweep $M into your arms and kiss $M long and deeply.
$n sweeps $N into $s arms and kisses $M long and deeply.
$n sweeps you into $s arms and kisses you long and deeply.
The object of your kiss is absent.
#

buff 0 0
You buff your nails on your cloak.
$n buffs $s nails on $s cloak.
#

liver 0 0
You look angrily for someone to disembowel.
$n angrily for someone to disembowel.
You rip out $S liver and eat it.
$n rips out $N's liver and eats it.
$n rips out your liver and eats it.
The object of your wrath is absent.
#

wrestle 0 0
$
$
You wrestle $M to the floor and pin $M there.
$n wrestles $N to the floor, pinning $M there.
$n wrestles you to the floor and pins you.
Sorry, friend, I can't see that person here.
You wrestle with your conscience.
$n wrestles with $m conscience.

tie 0 0
You toy with a pair of handcuffs suggestively.
$n toys suggestively with a pair of handcuffs.
You grab $N and tie $M to the bedposts.
$n grabs $N and ties $S to a four poster bed.
$n grabs you and ties you securely to a four poster bed.
Sorry, friend, I can't see that person here.
#

tight 0 0
$
$
You hold $M tightly in your arms.
$n holds $N tightly in $m arms.
$n holds you in $m arms.
Sorry, friend, I can't see that person here.
#

fatality 0 0
$
$
You intone, '$N wins.  Fatality.'
$n intones, '$N wins.  Fatality.'
$n intones, '$N wins.  Fatality.'
#

yowl 0 0
You yowl in frustration.
$n yowls in frustration!
#

silly 0 0
You do the silly walk all around the room.
$n does the silly walk all around the room.  $e *is* silly.
#

#0
#$

Changes to socials/socials.ru.

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
...
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
...
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
...
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
....
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
....
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
....
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
....
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
....
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
....
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
....
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
....
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
....
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
....
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
....
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
....
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218

cackle гоготать 0 0
Ты гогочешь с ликованием.
$n запрокидывает голову и гогочет во все горло!
Ты гогочешь над $E5.
$n гогочет над $N5.
$n гогочет над тобой. Лучше держись подальше от $E2.
Ты не можешь найти, с кем погоготать. 
Ты гогочешь сам себе. У тебя что-то с головой.
$n немного того сегодня. $e гогочет себе.

laugh смеяться смех 0 0
Ты падаешь на землю от смеха.
$n падает на землю от смеха.
Ты немилосердно хохочешь над $N5.
................................................................................
$n ощупывает себя - ОЙ.

hiccup икать 0 0
*ИК*
$n икает.
#

lick облизнуться 0 0 
Ты облизываешься и улыбаешься.
$n облизывается и улыбается.
Ты нежно облизываешь $S щечку. 
$n нежно облизывает щечку $N. 
$n нежно облизывает твою щечку.
Никого такого нет тут.
Ты облизываешь свою бровь.
$n облизывает свою бровь.

love любить любовь 0 0
Ты любишь весь мир.
................................................................................
Ты ухмыляешься на $E2 разговоры.
$n ухыляется на речи $N2.
$n ухмыляется на твои разговоры.
Кому тебе ухмыляться?
Ты ухмыляешься себе. Ну-ну.....
$n ухмыляется своей 'мудрости'.

snap щелкать щелчок 0 0 
Эврика!  Ты щелкаешь пальцами. 
$n щелкает пальцами. 
Ты щелкаешь пальцами, пытаясь привлечь $E2 внимание. 
$n щелкает пальцами перед $N5. 
$n щелкает пальцами перед тобой! 
Ты должно быть очень хороший агитатор.
Ты щелкаешь пальцами перед собой. 
$n щелкает пальцами перед собой. 

sneeze чихать 0 0
Ааапчхи !
$n чихает.
#

snicker ржать ржание 0 0
................................................................................
$n начинает петь йодль.
$N затыкает свои уши, когда ты начинаешь петь йодль.
$n поет йодль для $N2.
$n поет йодль тебе... ты съеживаешься и отворачиваешься.
Это человек только что убежал!
Ну, если тебе не жалко свои уши - вперед!
$n поет йодль сам$z себе. Садо-мазохист.
 
faint обморок 1 0
Ты падаешь в обморок.
$n падает в обморок.
Ты падаешь в обморок прямо в $E2 руки.
$n падает в обморок в раскрытые руки $N2.
$n падает в обморок в твои руки.
Ты падаешь на пол и выглядишь идиотом -- это еще мягко сказано.
#
 
pinch щипать ущипнуть 1 0 
Ты произносишь, 'Ущипни за это и тронь за то.' 
$n произносит, 'Ущипни за это и тронь за то.' 
Ты щипаешь $E4 за попку и усмехаешься. 
$n щипает $N4 за попку и усмехается. 
$n щипает тебя за попку и усмехается. 
You'd like to, wouldn't you? 
Ты щипаешь себя, чтобы убедиться, что ты не спишь.
$n щипает себя, чтобы убедиться, что $e не спит! 

stroke гладить 1 0 
Ты неопределенно гладишь воздух.
$n делает неопределенные гладящие движения.
Ты нежно гладишь $E2 бедро с внутренней стороны. $N резко вздыхает.
$N резко вздыхает.
$n нежно гладит твое бедро с внутренней стороны. Ты резко вздыхаешь.
Попрактикуйся сначала на себе.
You are about to do something you'd rather not be caught doing. 
# 

 
apologize извиняться 1 0
Ты извиняешься.
$n обильно извиняется.
Ты извиняешься перед $E5 и просишь прощения.
$n извиняется перед $N5 с виноватым видом.
$n извиняется перед тобой и просит прощения.
Это как ?
#
 
caress погладить 1 0
Кого ты хочешь погладить?
$
Ты нежно гладишь $E4.
$n нежно гладит $N4.
$n нежно гладит тебя.
Да ты сексуально озабочен$z !
#
 
stagger шататься 1 8
Ты слепо шатаешься.
$n слепо шатается.
Ты шатаешься по напpавлению к $N6, а комната начинает вpащаться.
$n шатается к $N6.
$n слепо шатается по напpавлению к тебе.
Это как?
#
 
snort фыркать фыркнуть 1 0 
Ты насмешливо фыркаешь. 
$n насмешливо фыркает. 
Ты насмешливо фыркаешь на $N4. 
$n насмешливо фыркает на $N4. 
$n насмешливо фыркает на тебя. 
На кого фыркнуть? 
Ты фыркаешь сам$z на себя. 
$n фыркает сам$z на себя.

slobber слюнить обслюнявить 1 0
Ты пускаешь слюни изо рта.
$n обслюнявливает сам$z себя.
Ты пускаешь слюни на $E4.
$n пускает слюни на $N4. *Фу*
$n обслюнявливает тебя.
Кого обслюнявить?
#
 
blink моргать 1 0
Ты невинно хлопаешь глазами.
$n невинно моргает.
Ты невинно моргаешь, глядя на $N4.
$n невинно моргает, глядя на $N4.
$n невинно моргает, глядя на тебя.
Как?
#
 
tease дразниться 1 0
Что ты за дpазнилка !
$n осматpивается вокpуг - кого бы подpазнить.
Ты дpазнишь $N4 с игpивой усмешкой.
$n показывает $N3 язык.
$n показывает тебе язык!
Tease whom?
Ты дpазнишь себя. HЯ-HЯ-HЯ.
$n дpазнит себя.
 
knee коленом 1 8
Ты поднимаешь колено, готовясь к правосудию...
$n угрожающе поднимает колено.
Ты бьешь $E4 коленом в пах.
$N сгибается от боли, когда $n бьет $E4 коленом в пах!
$n неожиданно бьет тебя коленом в пах! Ты падаешь на колени от боли.
Кого ты хочешь сделать импотентом?
О чем ты думаешь!?!??!?!?!?!
#
 
flirt флиртовать 1 0
Ты бессовестсно флиртуешь.
$n бессовестсно флиртует.
Ты флиртуешь с $N5, пытаясь завоевать $E2 внимание.
$n флиртует с $N5. Хммм, что $e хочет?
$n флиртует с тобой.
Извини, тут не с кем пофлиртовать. :(
Ты флиртуешь сам$z с собой -- чего ты хочешь добиться!?!?!?
$n флиртует сам$z с собой - чего $e пытается добиться?
 
tip шляпа приподнять 1 0
Ты вежливо приподымаешь шляпу.
$n вежливо приподымает свою шляпу.
Ты приподымаешь свою шляпу перед н$E5.
$n вежливо приподымает свою шляпу перед $N5.
$n вежливо приподымает свою шляпу перед тобой.
На кого ты хочешь произвести впечатление?
#
 
lust 1 0
Твои гормоны начинают бушевать.
Глаза $n начинают гореть желанием --- Быстро сматывайся!
Ты страстно смотришь на н$M.
$n страстно смотрит на $N.
$n страстно желает твое тело.
Кого ты хочешь?
О, пожалуйста! Перестань...
$n страстно желает себя - как $e одинок$a...
 
flutter 1 0
Ты соблазняюще хлопаешь ресницами.
$n соблазняюще хлопает ресницами.
Ты смотришь на $N и хлопаешь ресницами, пытаясь соблазнить.
$n флиртует с $N, соблазняюще хлопая ресницами.
$n смотрит на тебя и соблазняюще хлопает ресницами.
Эх, ты не видишь их тут.
#
 
bark гавкать лаять 1 0
Гав-гав !!! Воу-воу !
$n лает словно собака. Гав-гав !!! Воу-воу! воу!
Ты гавкаешь на $N, глупо пугая $E4 -- КАК НЕ СТЫДНО!!
$n гавкает на $N, глупо пугая $E4.
$n громко лает на тебя, ты невольно отступаешь!!
Лаять на кого?
Ты лаешь на себя и прыгаешь назад в испуге.
$n лает на себя и отпрыгивает в испуге.
 
howl выть 1 0
Ты воешь на луну.
$n воет на луну.
Ты душераздирающе воешь на $E4.
$n воет на $N4.
$n душераздирающе воет на тебя.
Who? What? Where?
#
 
babble 1 0
Ты болтаешь без перерыва.
$n болтает без перерыва, $e когда-нибудь замолчит?
Ты болтаешь с $N уже несколько часов.
$n болтает с $N уже целую вечность - как $N может выносить это?
$n болтает с тобой. Ты механически киваешь, надеясь, что $e скоро замолчит.
Кому ты собираешься надоедать своей болтовней?
Ты болтаешь сам$a с собой. Наконец! Хоть кто-то, кто тебя слушает!!
$n тихо болтает сам$a с собой.
 
ramble 1 0
Ты бессвязно болтаешь.
$n бессвязно рассказывает что-то скучное.
Ты рассказываешь $N о своих прошлых приключениях.
$n рассказывает $N что-то скучное.
$n рассказывает тебе ужасно скучную историю.
Что?
#
 
hush 1 0
Шшшшшшшш...
$n просит всех вести себя потише. Шшшшш...
Ты мило просишь $N вести себя потише.
$n мило просит $N вести себя потише.
$n мило просит тебя вести себя потише.
Кому стоит вести себя потише?
Ты понимашь, что ведешь себя слишком шумно и пытаешься успокоиться.
$n закрывает рот рукой, пытаясь вести себя потише.
 
threaten 1 8
Ты пугаешь всех своим присутствием.
Ты чувствуешь себя испуганно в присутствии $n.
Ты выпрямляешься во весь рост, пытаясь испугать $N.
$n пытается испугать $N.
$n пытается испугать тебя... ой, как страшно *laugh*
Кого надо испугать?
#
 
 
roll закатывать 1 0
Ты с отвращением закатываешь глаза.
$n с отвращением закатывает глаза.
Ты смотришь на $N4 и с отвращением закатываешь глаза.
$n смотрит на $N4 и закатывает глаза.
$n закатывает глаза, глядя на тебя.
На кого ты хочешь закатить глаза?
................................................................................
Ты падаешь в обморок.
$n в экстазе падает в обморок.
Ты смотришь на $N4 и в экстазе падаешь в обморок.
$n смотрит на $N4 и в эктазе падает в обморок.
$n смотрит на тебя и в эктазе падает в обморок.
Кто?
#
 
bird 1 0
You flick a bird...How obscene!
$n flicks a bird at no one in particular.
You shoot a bird at $N.
$n gives $N the bird.
$n gives you the bird...What an ass!
Don't you hate to waste a good obscene gesture like that?
................................................................................
Ты поднимаешь брови.
$n поднимает брови.
Ты поднимаешь брови над действием $N2.
$n поднимает брови над странным действием $N2.
$n поднимает брови над твоим действием.
Забудь. Таких тут нет.
#
 
serenade серенада 1 0
Ты поешь серенаду для своей невидимой любви.
$n поет всему миру серенаду.
Ты поешь прекрасную серенаду для $N2.
$n поет прекрасную серенаду для $N2.
$n поет серенаду для тебя, ты балдеешь от $e2 голоса.
Человек, которому ты хотел$z спеть, ушел, оставив тебя петь для себя.
Ты поешь серенаду себе. Что ты за человек?!
$n поет себе серенаду. Эгоист!
 
grimace гримаса гримасничать 1 0
Ты гримасничаешь.
$n гримасничает.
Ты строишь гримасу $N3.
$n строит гримасу $N3.
$n строит тебе гримасу. В чем дело?
Тут некому состроить гримасу.
................................................................................
$n boggles at the concept.
You boggle at $N.
$n boggles at $N.
$n boggles at you.
Boggle away.  They've left.
You boggle at yourself.  Hmmm...intriguing.
$n boggles quietly to $mself.
 
beckon 1 0
Ты приглашаешь всех следовать за собой.
$n приглашает всех следовать за собой.
Ты приглашаешь $N следовать за собой.
$n приглашает $N следовать за собой... хммм, что происходит?
$n приглашает тебя следовать за собой.
Извини, но этот человек уже ушел.
Ты зовешь свою тень с собой.
$n зовет свою тень с собой.
 
wonder удивляться 1 0
Ты удивляешься, как могло такое случиться.
$n удивляется, как могло такое случиться.
Ты смотришь на $N4 и ждешь, что произойдет.
$n смотрит на $N4 и удивляется...
$n вопросительно смотрит на тебя.
Ты думаешь, что могло бы случиться, если бы этот человек тут был.
Ты удивляешься себе и тому, что ты делаешь.
Вопросительное выражение появляется на лице $n. Чему $e удивляется?
 
worry беспокоиться 1 0
Ты беспокоишься, что может случится.
Беспокойство появляется на лице $n2. В чем дело?
Ты смотришь на $N4 с беспокойством.
$n смотрит на $N4 с беспокойством.
$n смотрит на тебя с беспокойством.
Они не беспокоятся - они ушли!
Ты беспокоишься, что может случится.
Беспокойство появляется на лице $n. В чем дело?

 
drool 1 0
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!
You drool messily on $N.
$n drools upon $N.
$n looks at you lustily and drools.
Oh fine, make a pool of slobber -- they aren't even here!
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!
 
nod кивать кивок 1 0
Ты киваешь.
$n кивает.
Ты киваешь $N3.
$n кивает $N3.
$n кивает тебе в знак согласия.
Не кивай - их нет.
Ты пытаешься кивнуть себе, но у тебя кружится голова.
$n успокаивающе кивает себе.
 
purr мурлыкать мурчать 1 0
ММММММЯЯЯЯЯЯУУУУУУ!!!
$n довольно мурлыкает.
Ты прижимаешься к $N3 и довольно мурлыкаешь.
$n прижимается к $N3 и довольно мурлыкает.
$n прижимается к тебе и довольно мурлыкает.
Глупое животное! Тут нет таких.
Ты тихо мурлыкаешь себе.
$n тихо мурлыкает себе.
 
point указывать 1 0
Ты указываешь во всех направлениях.
$n возбужденно показывает куда-то!
Ты показываешь на $N4.
$n показывает на $N4!
$n показывает на тебя. Как грубо!
Таких тут нет.
Ты смущенно показываешь на себя.
$n смущенно показывает на себя.
 
rub потирать 1 0
Ты потираешь руки в жадном ожидании.
$n потирает свои руки в жадном ожидании.
Ты долго и мягко массажируешь $N4.
$n долго и мягко массажирует $N4.
$n массажирует тебя, пробегая своими руками по твоим плечам. Хм.
Стыдно видеть эти одаренные руки в бездействии...
Ты массажируешь себя... задерживаясь в некоторых местах чуть дольше..
$n массажирует себя... что за экцентричная личность!
 
bleed 1 0
You bleed profusely -- making a horrible mess!
$n weakly bleeds all over the floor.
You bleed on $N -- ewww!
$n bleeds on $N.  Watch out, YOU might be next!
$n bleeds on you -- ewww!  Get away!!
Bleed on whom?
You bleed all over yourself.
$n bleeds profusely all over $mself.
 
highfive 1 0
You jump in the air and give a BIG high five to...umm...absolutely nothing.
$n wildly high fives the air, looking very foolish -- very foolish indeed.
You jump in the air and give a BIG high five to $N!
$n enthusiastically high-five's $N!
$n gives you a BIG high five!  Way to go!!
Sorry, they have already left.
You try to give yourself a high five.  What ARE you thinking?
$n tries to high five $mself, but ends up looking foolish instead.
 
propose 1 0
You propose to everyone in the room.
$n proposes to everyone in the room.  Very odd.
You kneel and romantically propose to $N.
$n gets on one knee and proposes to $N.
$n gets down on one knee and romantically proposes to you.
You must be lonely.  They aren't here.
You are SO full of yourself!
$n proposes to $mself -- how narcissistic!
 
peer разглядывать 1 0
Ты внимательно оглядываешься вокруг.
$n внимательно оглядывается вокруг.
Ты пристально разглядываешь $N4.
$n пристально разглядывает $N4.
$n пристально разглядывает тебя.
Тут нет таких.
Ты рассматриваешь себя, скосив глаза.
$n рассматривает себя.
 
worship 1 0
Ты молишься богам!
$n молится богам!
Ты падаешь на колени и боготворишь $E4.
$n падает на колени и боготворит $N4.
$n падает на колени и боготворит тебя.
Ты не можешь поклоняться тому, кого тут нет.
................................................................................
$n смотрит на тебя и невинно хлопает ресницами.
Даже и не пытайся - они уже ушли.
#


collapse падать 1 0
Ты в изнеможении падаешь на пол.
$n драматично падает на пол в изнеможении.  
Ты в изнеможении падаешь на руки $N2.
$n в изнеможении падает на руки $N2.
Неожиданно $n в изнеможении падает прямо тебе в руки. 
Они уже ушли, просто падай на пол.
#


stretch потянуться 1 0
Ты откидываешься и потягиваешься.
$n грациозно потягивается. Ты хочешь $e4, не так ли?
................................................................................
Успокой свой эгоизм. Они уже ушли.
Ты хвастаешься себе своими подвигами.
$n хвастается сам$a себе - эгоист!

squirm 1 0
You squirm uncontrollably in your consternation.
$n squirms uncontrollably, suddenly looking very uncomfortable.
You look at $N and squirm with delight.              
$n looks at $N and squirms with delight.
$n looks at you and squirms with delight.
#

moo
You chew your cud and moo plaintively.  Muh-OOOOO!
$n turns cowlike eyes on you, chews $s cud, and moos plaintively.
................................................................................
You show off to $N, flexing your muscles proudly.
$n flexes $s muscles, in a vain attempt to impress $N.
$n flexes $s muscles in a vain attempt to show off to you.
#


embrace 1 0
Кого ты хочешь заключить в объятия? 
$
Ты с любовью заключаешь $N4 в свои объятия.
$n с любовью заключает $N4 в свои объятия.
$n с любовью заключает тебя в свои объятия.
Твое сердце разбито - тут нет таких.
Ты обнимаешь себя, пытаясь утешиться.
$n обнимает себя, пытаясь утешиться.
................................................................................
You bonk $N on the head for being such a moron.
$n bonks $N on the head for being such an UTTER moron.
$n bonks you on the head for being so foolish.
***BONK*** they left...
You bonk yourself, fool that you are.
$n bonks $mself and grimaces in pain.

squeal визжать 1 0 
Ты визжишь от восторга!
$n визжит от восторга!
Ты смотришь на $N4 и взвизгиваешь от восторга!
$n визжит от восторга, глядя на $N4.
$n смотрит на тебя и взвизгивает от восторга!
#

................................................................................
$n moshes insanely around the room!
You mosh sadistically against $N ... you WILL be punished.
$n bounces off of $N in a vain attempt to mosh... what a LOSER.
$n slams into you, moshing painfully against you.  That REALLY hurts!
Hmmm...  your victim found a new dance partner.
Masochist!
$n throws $mself on the floor, grinding $mself into a bloody pulp
 
flinch 0 0
А-а-а... Ты вздрагиваешь от боли.
$n вздрагивает от боли... Что $e сделал$a на этот раз?
Тебе не кажется, что ты можешь просто лечь и умереть?
$n глядит на $N и вздрагивает.
$n вздрагивает в ответ на твой холодный упрек.
Успокойся, они ушли.
Ты не можешь поверить, что ты сделал$a...
$n вздрагивает, осознав свое поведение.
 
air 0 0
Ты берешь воздушную гитару и играешь для всех, кого ценишь.
$n безумно играет на воздушной гитаре... Великолепно!!!
Ты надеешься, что $E оценит твой талант.
$n играет прекрасную мелодию для $N. 
$n играет самую прекрасную мелодию для тебя на $s воздушной гитаре.
Аууу... у тебя нет аудитории!
Ты тихо играешь для себя.
#
 
tweak ущипнуть 0 0
Кого ущипнуть?
$
Ты мягко щипаешь $e2 щеку... $E прелесть, не так ли?
$n щипает $N4 за щеку... Они выглядят восхитительно вместе, правда?
$n щипает тебя за щеку. Это напоминает про бабушку... фи...
Этого человека похоже тут нет.
Ты не можешь этого сделать.
#
 
peck 5 0
Не хочешь ли ты сделать это человеку или ты предпочитаешь воздух?
$
Рискуя получить пощечину, ты целуешь $N в щеку.
$n улыбается и целует $N в щеку.
$n целует тебя в щеку, как сладко!
Я думаю, они ушли...
Ты похоже очень любишь себя.
#
 
explode взрываться 0 0 
Ты чувствуешь, как кровь кипит в твоих венах!
$n становится багровым.
Ты чувствуешь, как твоя ярость разрастается...
$n прожигает дырки на $N6 своей яростью!
$n злится на тебя... Я бы на твоем месте бежал!!!
Успокойся... они ушли.
Твоя душа ярко разгораетя, но потом затухает.
$n пропал$a!!! Только жирное пятно осталось на том месте, где $e раньше стоял$a.
 
raspberry 4 0
You stick your tongue out at ... well, no one.
$n sticks $s tongue out, catching a few flies in the process.
You give $N the raspberry... and spit all over yourself.
$n gives $N the raspberry... PHBT!  What a mess... Spit EVERYWHERE!
You are splattered with saliva as $n gives you the raspberry... HOW RUDE!
Hang your tongue out if you like, $e isn't here.
You try to stick your tongue out at yourself... somehow, it isn't the same.
#
 
flash 0 0
You grin and strut as you open your coat and show what you've got!
$n rips $s clothes off and parades naked around the room!
Swiftly you jerk open your jacket, trying to get $M to notice you.
Cover your eyes, $n is exposing $mself to $n!  EWWWW!
You gasp!  $n has just revealed $s "equipment" to you!
Exhibitionist, that person isn't here!
That's sick.
PERVERT PRESENT!  $n is trying to flash $mself
 
strip снимать 0 0
Ты начинаешь показывать медленный стриптиз для окружающих...
$n начинает показывать стриптиз...
Ты начинаешь раздевать $N4... вещь за вещью...
$n начинает медленно снимать с $N2 одежду...
$n начинает медленно раздевать тебя...
Твоей игрушки похоже тут нет...
Не при людях!
#
 
undress раздеваться 0 0
Ты начинаешь раздеваться в тени, выжидая, пока тебя заметят.
$n начинает раздеваться... очень сексуально... *Pant* 
Ты раздеваешь глазами $N4... Прикольно.
Температура растет - $n страстно смотрит на $N4...
Ты чувствуешь, как $n раздевает тебя глазами...
Тут нет таких...
Лучше перед зеркалом...
#

................................................................................
$
Mmmm... you give $N a good working over with your tongue...
$n slides $s tongue over $N's body...
$n wraps $s tongue around you, moving it across your young, nubile flesh...
Never around when required...
You slowly tongue yourself.
$n slowly tongues $mself... ICK.
 
view 0 0
Ты удобно устраиваешься и смотришь, что происходит в мире.
$n удобно устраивается и наслаждается видом.
#
 
grumble ворчать 0 0
Ты тихо ворчишь про себя.
$n ворчит и рычит. В чем дело...
Ты ворчишь на $N4, тебя раздражает $e2 присутствие.
$n выглядит как медведь-ворчун... $e уже замучал$a $N4 своим ворчанием.
$n ворчит на тебя... что ты сделал$A?
Этого человека похоже тут нет.
О чем ты беспокоишься?
#
 
cheer удачи 0 0
Ты шутливо прыгаешь и пританцовываешь!
$n радуется и припевает!
Ты желаешь $N3 удачи!
*Вау!* Вперед, $N!!! $n поддержит $e4.
$n желает тебе удачи! Не подведи $e4.
Кто? Что? Где? Их тут нет, это точно.
Ты тихо желаешь себе удачи, так как больше никто этого не сделал.
$n желает удачи сам$a себе... как печально.
 
plead 0 0
Ты умоляешь послушать тебя.
$n умоляет послушать $s... Тебе $s почти жалко.
#
 
charge 0 0   
Ты затеваешь драку!
$n затевает драку! Ни капли мозгов.
С неожиданной быстротой ты бьешь $N головой!
$n разбегается и бьет $N головой прямо в живот!
Уф! $n бьет тебя головой прямо в живот! Это было больно.
Никого вокруг с таким именем нет.
Ты разбегаешься и бьешься головой в стенку. Ой!
#
 
criticize критиковать критика 0 0
Да, но кого?
$
Ты критикуешь $N4 со всей горячностью.
Злобно ухмыляясь, $n уничтожает все старания $N2.
$n говорит, что тебе нужно сделать много важных улучшений.
Эх, куда же делать твоя жертва...
Ты критикуешь сам$a себя.
$n рвет и мечет, проклиная собственную глупость.
 
run 0 0
Ты убегаешь в страхе и ужасе!
$n убегает в стахе и ужасе!
Ты в ужасе убегаешь от $N!
$n убегает от $N в страхе и ужасе!
$n бежит от тебя, опасаясь за свою жизнь!
Тебе нечего бояться - тут таких нет.
Неужели ты настолько некрасив$a?
$n смотрит в зеркало, видит свое лицо и в страхе убегает!
 
judge судить 0 0
Да, но кого?
$
Ты оцениваешь $e4 по шкале от 1 до 10.
По шкале от 1 до 10, $n оценивает $N4 как полный ноль!!!
$n оценивает твои действия по шкале от 1 до 10 и решает, что это... Ноль!!!
Сейчас таких тут нет.
Ты ведь не хочешь этого делать.
#
 
insane 0 0
Ты чувствуешь, как твое здравомыслие исчезает...
Прямо на твоих глазах, здравомыслие $n исчезает...
#
 
cover затыкать заткнуть 0 0
Ты затыкаешь уши от шума.
$n затыкает уши от шума.
Ты смотришь на $N4 и затыкаешь уши.
$n смотрит на $N4 и закрывает уши.
$n затыкает свои уши из-за тебя... ты слишком громко кричишь!
Их сейчас тут нет.
Нет... Я так не думаю.
#
 
flare 0 0
Ты пренебрежительно раздуваешь ноздри.
$n пренебрежительно раздувает ноздри.
Ты пренебрежительно раздуваешь ноздри, глядя на $N... Как грубо!
$n пренебрежительно раздувает ноздри, глядя на $N, и отворачивается.
$n пренебрежительно раздувает ноздри, глядя на тебя... Что ты сделал$A???
Злись, если хочешь, но этого человека тут нет.
*Sniff* Но тебе бы следовало любить себя!
#
 
head 0 0
Ты надменно закидываешь голову.
$n надменно закидывает голову.
Ты надменно закидываешь голову, глядя на $N.
$n надменно закидывает голову, глядя на $N...
$n надменно закидывает голову, глядя на тебя... :(
Этот человек уже ушел.
Зачем тебе это?
#
 
pie 0 0
Ты берешь пирог и кидаешь его в стенку.
$n берет пирог и кидает его в стенку.
Ты берешь пирог и кидаешь его прямо в лицо $N!
$n берет пирог и кидает его прямо в лицо $N!
$n кидает пирог прямо тебе в лицо... и сейчас у тебя все лицо в креме!
Этого человека тут нет...
Ты падаешь лицом прямо в торт... уимммм!!! :)
$n падает лицом прямо в торт, облизывая тарелку.
 
cower 0 0
Ты присаживаешься в уголке.
$n присаживается в уголке и тихо всхлипывает.
Ты присаживаешься в уголке, подальше от $N и $S грязных слов.
$n присаживается в уголке, подальше от $N.
Ты испугал$a $n! Сейчас $e сидит в уголке, опасаясь за свою жизнь.
Этого человека сейчас тут нет.
Ты боишься собственной тени!
$n садится в уголке, пугаясь собственной тени.
 
noogie 5 0
You can't noogie the AIR!  It has no head.
$
You grab $N, get $M in a head lock and NOOGIE $M!
$n grabs $N in a head lock and NOOGIES $M... ARGH!!!
Oh NO, $n grabs you, throws you in a head lock and NOOGIES you!
That person has gone off to other lands...
You rub your head and create a static charge...
$n rubs $s OWN head and creates a static charge... *ZAP*
 
yeehaw 5 0
You mount your pony(?) and shout YEEEEEEEHAAAAAAAW!
$n bounces up and down screaming *YEEEEEEHAAAAAAW!*
#
 
pissed 5 0
You are PISSED!
$n is PISSED so watch out!
You turn a stoney gaze toward $N... you are SOOO pissed at $N!
$n glares at $n.... $n is SOOO PISSED at $m!
$n is pissed at you now... What do you think $e'll DO?
That person is not here...
You are PISSED at yourself!
$n is so pissed at $mself.  How could $e be so stupid???
 
passout 5 0
You belch and pass out.
$n is OBVIOUSLY intoxicated... $e burps loudly and passes out!
#
 
 
adjust 5 0
Ты смотришь вокруг, убеждаешься, что никто не смотрит и поправляешь свой "инструмент".
$n хитро оглядыается, улыбается, потом тянется вниз и "поправляет" себя...
#
 
scratch 5 0
Ты довольно почесываешь себя.
$n тянется вниз и почесывает себя там... Сейчас $e выглядит очень счастливо.
#
 
meditate 0 0
Ты садишься поудобнее и начинаешь медитировать.
$n садится и начинает медитировать... $e что-то тихо напевает про себя.
#
 
bkiss 0 0
Ты посылаешь свой поцелуй в воздух.
$n посылает свой поцелуй в воздух.
Ты посылаешь $N воздушный поцелуй и надеешься, что $E поймает его.
$n посылает $N воздушный поцелуй... Как мило!
$n посылает тебе воздушный поцелуй и надеется, что ты пошлешь его обратно.
Твой поцелуй падает на землю, не находя, к кому лететь.
Ты посылаешь себе поцелуй... Мир прекрасен, не нак ли?
$n посылает себе поцелуй, выглядя при этом влюбленно.
 
beer пиво 0 0
Ты достаешь 6 банок пива.
$n начинает распаковывать 6 банок пива.
Ты бросаешь бутылку пива $N3.
$n бросает бутылку пива $N3 ... надеясь, что $E поймает ее!
$n бросает тебе бутылку пива... Похоже, $e чего-то хочет...
Бутылка падает на пол и разбивается.
Ты открываешь бутылку и пьешь пиво.
$n открывает бутылку и начинает жадно глотать пиво.
 
bcatch 0 0
Ты прыгаешь и ловишь бутылку, которую тебе кинули.
$n подпрыгивает и в воздухе ловит бутылку, которую $e3 кинули.
#
 
claw царапать 0 0
Ты сжимаешь руки в кулаки.
$n сжимает свои кулаки, пока из них не начинает капать кровь...
Ты впиваешься ногтями в $E2 глаза... Как грубо!
$n впивается ногтями в глаза $N2... О, Боже, кровь!
$n впивается ногтями в твои глаза и ты ослеплен$A свой собственной кровью!
Тебе некого поцарапать.
................................................................................
$
Незаметно для всех, ты связываешь $E2 шнурки вместе.
$n подкрадывается к $N3 и связывает $E2 шнурки вместе.
Ты пытаешься сделать шаг и падаешь лицом на пол! $n похоже связал$a твои шнурки!
Чьи шнурки?
Ты связываешь свои шнурки, пытаешься сделать шаг и падаешь.
$n связывает свои шнурки вместе, пытается сделать шаг и падает лицом на пол.
 
tag
Tag whom?
$n casts about for someone to tag.
>From nowhere, you pounce on $N and TAG $M remorselessly!  BWAHAHA!!!
$n dives from the shadows and TAGS $N.  $N IS IT!
$n pounces on you and >>> TAGS <<< you!  You're IT!
Who were you going to tag, then?
Unable to catch anyone else, you do the intelligent thing and tag yourself. You're still IT!
Unable to catch anyone else, $n tags $mself.  Are you impressed?
 
tank танковать
You boldly offer to tank for your everyone else.  Are you sure you know what you're getting into?
$n offers to tank!
Ты предлагаешь пойти вперед грудью (танком) перед $N5.
$n предлагает пойти вперед грудью (танком) перед $N5.
$n предлагает пойти вперед грудью (танком) перед тобой!
Танковать для кого ?
No one will tank for you, eh?!? WELL, YOU'LL SHOW THEM!  (right?)
In dazzling chivalry, $n offers to tank-- for $mself!
 
starve голодать
Ты показываешь свои выступающие ребра и надеешься, что тебя пожалеют.
$n сохнет прямо на глазах - $e умирает от голода!
Ты бросаешься под ноги $N3, умоляя дать немного еды.
$n просит у $N2 еды. $e думает, что магия может утолить голод...
$n умирает от голода прямо на твоих глазах! Поделишься едой?
Извини, но этого человека тут нет -- похоже ты так и умрешь от голода.
#
 
aargh
А-А-А-А-а-а-а-а-а!!!
$n закидывает голову и расстроенно кричит!
Ты расстроенно кричишь и хватаешь себя за горло двумя руками!
$n расстроенно кричит и прыгает вокруг $N2, пытаясь задушить $E!
$n хватает тебя за горло, расстроенно крича!
Ты еще более расстраиваешься, когда понимаешь, что некого придушить!
Ты расстроенно кричишь на себя за свою глупость!
$n расстроенно кричит на себя за свою глупость!
 
homework
Ты неожиданно вспоминаешь, что тебе еще надо доделать кое-что сегодня...
$n выглядит взволнованно. Может $e забыл$a сделать какое-то важное задание?
#
 
puff
Ты подражаешь самым глупым выходкам Пуфф.
$n говорит, "Знаете ли вы, что я написан$a на C?"
#
 

yae
Ты вздыхаешь в присутствии Еще Одного Идиота.
$n вздыхает в присутствии Еще Одного Идиота.
Тут есть Еще Один Идиот в комнате, и ты смотришь прямо на н$s.
$n честно веришь, что $N - идиот! 
$n смотрит на тебя, твой интеллект явно не впечатляет $s.
Тут полно идиотов, но того, который тебе нужен, тут сейчас нету.
Ты бьещь себя по лбу за свое идиотское поведение!
$n ругает себя за свое идиотское поведеине!

lightbulb
*Динь!* Вдохновение!
Лампочка зажигается над головой $n!
#
 
voodoo
Bad juju like this has to be directed at a person.
$n looks hostile for a moment.
You stare daggers at $N, jabbing pins into $S effigy.
$n glares balefully at $N while stabbing a pin into a voodoo doll.
Your heart lurches in your chest, and fiery pain stabs through your skull!
Your hatred finds no such target.
................................................................................



leer 0 0
You peer around the room, leering like the pervert you are!
$n peers about, leering like a filthy pervert!
You leer at $N like the pervert you are.
$n eyes $N up and down, leering like a filthy pervert! 
$n eyes you up and down, leering like a filthy pervert!
You'll have to settle for memories -- that person isn't here.
Desperation has reached new heights, hasn't it?
$n leers at $mself shamelessly.

polite 0 0 
Ты слегка посмеиваешься. 
$n слегка посмеивается. 
Ты незаметно посмеиваешься над $S шуткой. 
$n слегка посмеивается над шуткой $N. 
$n незаметно посмеивается над твоей шуткой. 
Тебе не с кем посмеяться. 
Ты посмеиваешься над своей шуткой, так как больше никто не хочет. 
$n посмеивается над своей шуткой, так как больше никто не хочет. 

mischievous ехидно 0 0 
Ты ехидно улыбаешься своим мыслям. 
$n ехидно усмехается над гадкой идеей. 
Ты ехидно усмехаешься над $N, задумав что-то гадкое. 
$n ехидно усмехается над $N. $e похоже задумал$a что-то гадкое.
$n ехидно усмехается над тобой. Ты поглядываешь в сторону двери. 
Ты бредишь. 
Ты ехидно усмехаешься над собой. 
$n ехидно усмехается над собой.

accept 0 0
You accept the proferred apology graciously. 
$n graciously accepts the proferred apology. 
#
 
anticipate 0 0
You murmur 'Sssssoonnn, my presssssciousssss...' 
$n murmurs 'Ssssssooonnnn, my pressssscioussss...' 
#
 
powertrip 0 0
You scream 'The PPppppPOOOOoooWWWwwwErrRRR!' and writhe. 
$n writhes, screaming 'The PPppppPOOOOoooWWWwwwErrRRR!' 
#
 
shudder 0 0
Ты дрожишь в ужасе, подавляя слезы. 
$n дрожит в ужасе, подавляя слезы. 
#
 
sage 0 0 
Ты киваешь с умным видом. 
$n кивает с умным видом. 
#
 
contemplate 0 0 
Ты задумчиво прикусываешь губу. 
$n задумчиво прикусывает губу. 
#
 
agree соглашаться 0 0 
Ты соглашаешься.
$n соглашается.
Ты восторженно соглашаешься с $N5.
$n восторженно соглашается с $N5.
$n восторженно соглашается с тобой.
Извини, этот человек отсутствует.
Ты соглашаешься сам$a с собой.
$n соглашается сам$a с собой.
 
toast тост 0 0 
Ты поднимаешь бокал шампанского, собираясь произнести тост. 
$n поднимает бокал шампанского, собираясь произнести тост. 
Ты поднимаешь бокал шампанского за н$e. 
$n молча пьет за $N4. 
$n молча пьет за тебя. 
Этот человек отсутствует. 
Ты ухмыляешься и пьешь за себя. 
$n ухмыляется и пьет за себя. 
 
conspire 0 0 
Ты заговорщически подмигиваешь, ожидая сигнала. 
$n заговорщически подмигивает, ожидая сигнала. 
Ты заговорщически подмигиваешь $N. 
$n заговорщически подмигивает $N. Хм, что бы это значило? 
$n заговорщически подмигивает тебе. 
Ты устраиваешь заговор сам$a с собой. 
$n подозрительно смотрит вокруг. 
# 
 
support поддерживать 0 0 
Ты полностью поддерживаешь план. 
$n полностью поддерживает план. 
Ты поддерживающе обнимаешь $S и улыбаешься. 
$n поддерживающе обнимает $N и улыбается. 
$n поддерживающе обнимает тебя и улыбается. 
Извини, друг, но этого человека тут нет. 
Ты с грустью обнимаешь себя. 
$n с грустью обнимает себя. Может ты можешь помочь? 
 
pound 0 0 
Ты делаешь неопределенные движения кулаками. 
$n делает неопределенные движения кулаками. 
Ты бьешь $N, превращая $S в кровавую массу. 
$n бьет $N, превращая $S в кровавую массу. 
$n бьет тебя, превращая в кровавую массу. 
Извини, друг, но я не вижу этого человека тут. 
#
 
wrist 0 0 
Ты поднимаешь руку, чтобы ударить. 
$n поднимает руку, чтобы ударить. 
Ты резко бьешь $S по руке. 
$n резко бьет $N по руке. 
$n резко бьет тебя по руке. 
Извини, друг, но я не вижу этого человека тут. 
Ты бьешь себя по руке. 
$n бьет себя по руке. 
 
romeo 0 0
Ты зажигаешь сигару 'Romeo & Julietta' и затягиваешься с удовольствием.
$n зажигает сигару 'Romeo & Julietta' и затягивается с удовольствием.
#


camel 0 0
................................................................................
You light a Camel cigarette for $M.
$n lights a Camel cigarette for $N.
$n lights a Camel cigarette for you.
You don't see that personhere.
You light a Camel cigarette and inhale sharply.
$n lights a Camel cigarette and inhales sharply.

whip 0 0 
You crack your bullwhip menacingly. 
$n cracks a bullwhip menacingly. 
You flick your whip across $M bare back. 
$n flicks $s whip across $N's bare back. 
$n flicks a whip across your back... the pain.. the pleasure.. 
Sorry, friend, I can't see that person here. 
You whip yourself into a frenzy. 
$n whips $mself into a frenzy.

cramp 0 0 
You gasp and clutch your abdomen, wheezing with the pain. 
$n gasps and clutches $m abdomen in agony. 
You hammerlock $M, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!" 
$n hammerlocks $N, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!". 
$n hammerlocks you, screaming "AAAAARRRRRGH!! I HAVE A CRAMP!!!"
Suffering as you are, you didn't see that person slip out. 
#
 
make 0 0 
You breathe heavily and wetly. 
$n breathes heavily and wetly. 
You steam up the windows with $M. 
$n and $N start steaming up the windows. 
$n starts steaming up the windows with you. 
Sorry, friend, I can't see that person here. 
#
 
sweep 0 0 
Ты смотришь на свои пустые руки и вздыхаешь. 
$n смотрит на свои пустые руки и вздыхает. 
Ты берешь $N на руки и целуешь $S долго и страстно. 
$n берет $N на руки и целует $S долго и страстно. 
$n берет тебя на руки и целует долго и страстно. 
Человека, которого ты хотел$a поцеловать, тут нет. 
#
 
buff ногти 0 0 
Ты полируешь ногти. 
$n полирует ногти. 
#
 
liver печень 0 0 
Ты злобно оглядываешься, выбирая цель. 
$n злобно оглядывается, выбирая цель. 
Ты вырываешь $S печень и ешь ее. 
$n вырывает печень $N и ест ее. 
$n вырывает твою печень и ест ее. 
Объект твоей злости отсутствует. 
#
 
wrestle бороться 0 0 
$
$
Ты борешься с $N на полу. 
$n борется с $N на полу. 
$n борется с тобой на полу. 
Извини, друг, но я не вижу этого человека тут. 
Ты борешься со своей совестью. 
$n борется со своей совестью. 
 
tie 0 0
Ты вертишь в руках пару наручников. 
$n вертит в руках пару наручников. 
Ты хватаешь $N и привязываешь $S к кровати. 
$n хватает $N и привязывает $S к кровати. 
$n хватает тебя и привязывает к кровати. 
Извини, друг, я не вижу этого человека тут. 
#
 
tight 0 0 
$
$
Ты крепко держишь $E в своих руках. 
$n крепко держит $N в своих руках. 
$n крепко держит тебя в своих руках. 
Извини, друг, я не вижу этого человека тут. 
#
 
fatality 0 0 
$
$
Ты замечаешь, '$N победил$A. Это конец.' 
$n замечает, '$N победил$A. Это конец.' 
$n замечает, '$N победил$A. Это конец.' 
#
 
yowl выть 0 0
Ты разачарованно воешь. 
$n разачарованно воет! 
#
 
silly глупо 0 0
Ты глупо прогуливаешься по комнате. 
$n бесцельно прогуливается по комнате. $e выглядит действительно глупо. 
#

dig копать ковырять 0 0
Ты ковыряешь носком ноги землю.
$n ковыряет носком землю. 
#

finger пальцы 0 0 
Ты расстопыриваешь пальцы веером. 
$n расстопыривает пальцы веером. 
#

#0
#$







|







 







|


|
|







 







|
|
|
|
|
|

|
|







 







|








|
|
|
|
|
|
|
|

|

|






|
|

|








|








|








|
|
|
|
|
|
|
|
|










|








|









|









|









|








|









|








|









|








|









|








|









|








|
|







 







|







 







|









|







 







|









|









|










|









|









|









|









|









|









|









|









|









|







 







|


|







 







|







 







|







 







|







 







|









|




|




|









|









|
|








|









|









|









|


|







 







|




|









|









|




|
|








|









|









|









|




|









|









|









|









|









|









|




|









|




|
|




|




|




|









|









|




|







 







|









|









|








|









|




|




|





|









|







 







|





|
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|



|
|

|

|
|

|

|
|

|

|
|

|
|
|
|

|
|
|
|

|
|








|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|







 







|
|
|
|
|
|
|
|


|
|
|
|
|

|

|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|
|
|

|
|


|
|
|
|
|
|
|

|
|
|
|
|
|

|
|


|
|
|
|

|
|


|
|
|

|

|
|

|

|
|




|


|
|
|




52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
...
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
...
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
...
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
....
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
....
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
....
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
....
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
....
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
....
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
....
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
....
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
....
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
....
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
....
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
....
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218

cackle гоготать 0 0
Ты гогочешь с ликованием.
$n запрокидывает голову и гогочет во все горло!
Ты гогочешь над $E5.
$n гогочет над $N5.
$n гогочет над тобой. Лучше держись подальше от $E2.
Ты не можешь найти, с кем погоготать.
Ты гогочешь сам себе. У тебя что-то с головой.
$n немного того сегодня. $e гогочет себе.

laugh смеяться смех 0 0
Ты падаешь на землю от смеха.
$n падает на землю от смеха.
Ты немилосердно хохочешь над $N5.
................................................................................
$n ощупывает себя - ОЙ.

hiccup икать 0 0
*ИК*
$n икает.
#

lick облизнуться 0 0
Ты облизываешься и улыбаешься.
$n облизывается и улыбается.
Ты нежно облизываешь $S щечку.
$n нежно облизывает щечку $N.
$n нежно облизывает твою щечку.
Никого такого нет тут.
Ты облизываешь свою бровь.
$n облизывает свою бровь.

love любить любовь 0 0
Ты любишь весь мир.
................................................................................
Ты ухмыляешься на $E2 разговоры.
$n ухыляется на речи $N2.
$n ухмыляется на твои разговоры.
Кому тебе ухмыляться?
Ты ухмыляешься себе. Ну-ну.....
$n ухмыляется своей 'мудрости'.

snap щелкать щелчок 0 0
Эврика!  Ты щелкаешь пальцами.
$n щелкает пальцами.
Ты щелкаешь пальцами, пытаясь привлечь $E2 внимание.
$n щелкает пальцами перед $N5.
$n щелкает пальцами перед тобой!
Ты должно быть очень хороший агитатор.
Ты щелкаешь пальцами перед собой.
$n щелкает пальцами перед собой.

sneeze чихать 0 0
Ааапчхи !
$n чихает.
#

snicker ржать ржание 0 0
................................................................................
$n начинает петь йодль.
$N затыкает свои уши, когда ты начинаешь петь йодль.
$n поет йодль для $N2.
$n поет йодль тебе... ты съеживаешься и отворачиваешься.
Это человек только что убежал!
Ну, если тебе не жалко свои уши - вперед!
$n поет йодль сам$z себе. Садо-мазохист.

faint обморок 1 0
Ты падаешь в обморок.
$n падает в обморок.
Ты падаешь в обморок прямо в $E2 руки.
$n падает в обморок в раскрытые руки $N2.
$n падает в обморок в твои руки.
Ты падаешь на пол и выглядишь идиотом -- это еще мягко сказано.
#

pinch щипать ущипнуть 1 0
Ты произносишь, 'Ущипни за это и тронь за то.'
$n произносит, 'Ущипни за это и тронь за то.'
Ты щипаешь $E4 за попку и усмехаешься.
$n щипает $N4 за попку и усмехается.
$n щипает тебя за попку и усмехается.
You'd like to, wouldn't you?
Ты щипаешь себя, чтобы убедиться, что ты не спишь.
$n щипает себя, чтобы убедиться, что $e не спит!

stroke гладить 1 0
Ты неопределенно гладишь воздух.
$n делает неопределенные гладящие движения.
Ты нежно гладишь $E2 бедро с внутренней стороны. $N резко вздыхает.
$N резко вздыхает.
$n нежно гладит твое бедро с внутренней стороны. Ты резко вздыхаешь.
Попрактикуйся сначала на себе.
You are about to do something you'd rather not be caught doing.
#


apologize извиняться 1 0
Ты извиняешься.
$n обильно извиняется.
Ты извиняешься перед $E5 и просишь прощения.
$n извиняется перед $N5 с виноватым видом.
$n извиняется перед тобой и просит прощения.
Это как ?
#

caress погладить 1 0
Кого ты хочешь погладить?
$
Ты нежно гладишь $E4.
$n нежно гладит $N4.
$n нежно гладит тебя.
Да ты сексуально озабочен$z !
#

stagger шататься 1 8
Ты слепо шатаешься.
$n слепо шатается.
Ты шатаешься по напpавлению к $N6, а комната начинает вpащаться.
$n шатается к $N6.
$n слепо шатается по напpавлению к тебе.
Это как?
#

snort фыркать фыркнуть 1 0
Ты насмешливо фыркаешь.
$n насмешливо фыркает.
Ты насмешливо фыркаешь на $N4.
$n насмешливо фыркает на $N4.
$n насмешливо фыркает на тебя.
На кого фыркнуть?
Ты фыркаешь сам$z на себя.
$n фыркает сам$z на себя.

slobber слюнить обслюнявить 1 0
Ты пускаешь слюни изо рта.
$n обслюнявливает сам$z себя.
Ты пускаешь слюни на $E4.
$n пускает слюни на $N4. *Фу*
$n обслюнявливает тебя.
Кого обслюнявить?
#

blink моргать 1 0
Ты невинно хлопаешь глазами.
$n невинно моргает.
Ты невинно моргаешь, глядя на $N4.
$n невинно моргает, глядя на $N4.
$n невинно моргает, глядя на тебя.
Как?
#

tease дразниться 1 0
Что ты за дpазнилка !
$n осматpивается вокpуг - кого бы подpазнить.
Ты дpазнишь $N4 с игpивой усмешкой.
$n показывает $N3 язык.
$n показывает тебе язык!
Tease whom?
Ты дpазнишь себя. HЯ-HЯ-HЯ.
$n дpазнит себя.

knee коленом 1 8
Ты поднимаешь колено, готовясь к правосудию...
$n угрожающе поднимает колено.
Ты бьешь $E4 коленом в пах.
$N сгибается от боли, когда $n бьет $E4 коленом в пах!
$n неожиданно бьет тебя коленом в пах! Ты падаешь на колени от боли.
Кого ты хочешь сделать импотентом?
О чем ты думаешь!?!??!?!?!?!
#

flirt флиртовать 1 0
Ты бессовестсно флиртуешь.
$n бессовестсно флиртует.
Ты флиртуешь с $N5, пытаясь завоевать $E2 внимание.
$n флиртует с $N5. Хммм, что $e хочет?
$n флиртует с тобой.
Извини, тут не с кем пофлиртовать. :(
Ты флиртуешь сам$z с собой -- чего ты хочешь добиться!?!?!?
$n флиртует сам$z с собой - чего $e пытается добиться?

tip шляпа приподнять 1 0
Ты вежливо приподымаешь шляпу.
$n вежливо приподымает свою шляпу.
Ты приподымаешь свою шляпу перед н$E5.
$n вежливо приподымает свою шляпу перед $N5.
$n вежливо приподымает свою шляпу перед тобой.
На кого ты хочешь произвести впечатление?
#

lust 1 0
Твои гормоны начинают бушевать.
Глаза $n начинают гореть желанием --- Быстро сматывайся!
Ты страстно смотришь на н$M.
$n страстно смотрит на $N.
$n страстно желает твое тело.
Кого ты хочешь?
О, пожалуйста! Перестань...
$n страстно желает себя - как $e одинок$a...

flutter 1 0
Ты соблазняюще хлопаешь ресницами.
$n соблазняюще хлопает ресницами.
Ты смотришь на $N и хлопаешь ресницами, пытаясь соблазнить.
$n флиртует с $N, соблазняюще хлопая ресницами.
$n смотрит на тебя и соблазняюще хлопает ресницами.
Эх, ты не видишь их тут.
#

bark гавкать лаять 1 0
Гав-гав !!! Воу-воу !
$n лает словно собака. Гав-гав !!! Воу-воу! воу!
Ты гавкаешь на $N, глупо пугая $E4 -- КАК НЕ СТЫДНО!!
$n гавкает на $N, глупо пугая $E4.
$n громко лает на тебя, ты невольно отступаешь!!
Лаять на кого?
Ты лаешь на себя и прыгаешь назад в испуге.
$n лает на себя и отпрыгивает в испуге.

howl выть 1 0
Ты воешь на луну.
$n воет на луну.
Ты душераздирающе воешь на $E4.
$n воет на $N4.
$n душераздирающе воет на тебя.
Who? What? Where?
#

babble 1 0
Ты болтаешь без перерыва.
$n болтает без перерыва, $e когда-нибудь замолчит?
Ты болтаешь с $N уже несколько часов.
$n болтает с $N уже целую вечность - как $N может выносить это?
$n болтает с тобой. Ты механически киваешь, надеясь, что $e скоро замолчит.
Кому ты собираешься надоедать своей болтовней?
Ты болтаешь сам$a с собой. Наконец! Хоть кто-то, кто тебя слушает!!
$n тихо болтает сам$a с собой.

ramble 1 0
Ты бессвязно болтаешь.
$n бессвязно рассказывает что-то скучное.
Ты рассказываешь $N о своих прошлых приключениях.
$n рассказывает $N что-то скучное.
$n рассказывает тебе ужасно скучную историю.
Что?
#

hush 1 0
Шшшшшшшш...
$n просит всех вести себя потише. Шшшшш...
Ты мило просишь $N вести себя потише.
$n мило просит $N вести себя потише.
$n мило просит тебя вести себя потише.
Кому стоит вести себя потише?
Ты понимашь, что ведешь себя слишком шумно и пытаешься успокоиться.
$n закрывает рот рукой, пытаясь вести себя потише.

threaten 1 8
Ты пугаешь всех своим присутствием.
Ты чувствуешь себя испуганно в присутствии $n.
Ты выпрямляешься во весь рост, пытаясь испугать $N.
$n пытается испугать $N.
$n пытается испугать тебя... ой, как страшно *laugh*
Кого надо испугать?
#


roll закатывать 1 0
Ты с отвращением закатываешь глаза.
$n с отвращением закатывает глаза.
Ты смотришь на $N4 и с отвращением закатываешь глаза.
$n смотрит на $N4 и закатывает глаза.
$n закатывает глаза, глядя на тебя.
На кого ты хочешь закатить глаза?
................................................................................
Ты падаешь в обморок.
$n в экстазе падает в обморок.
Ты смотришь на $N4 и в экстазе падаешь в обморок.
$n смотрит на $N4 и в эктазе падает в обморок.
$n смотрит на тебя и в эктазе падает в обморок.
Кто?
#

bird 1 0
You flick a bird...How obscene!
$n flicks a bird at no one in particular.
You shoot a bird at $N.
$n gives $N the bird.
$n gives you the bird...What an ass!
Don't you hate to waste a good obscene gesture like that?
................................................................................
Ты поднимаешь брови.
$n поднимает брови.
Ты поднимаешь брови над действием $N2.
$n поднимает брови над странным действием $N2.
$n поднимает брови над твоим действием.
Забудь. Таких тут нет.
#

serenade серенада 1 0
Ты поешь серенаду для своей невидимой любви.
$n поет всему миру серенаду.
Ты поешь прекрасную серенаду для $N2.
$n поет прекрасную серенаду для $N2.
$n поет серенаду для тебя, ты балдеешь от $e2 голоса.
Человек, которому ты хотел$z спеть, ушел, оставив тебя петь для себя.
Ты поешь серенаду себе. Что ты за человек?!
$n поет себе серенаду. Эгоист!

grimace гримаса гримасничать 1 0
Ты гримасничаешь.
$n гримасничает.
Ты строишь гримасу $N3.
$n строит гримасу $N3.
$n строит тебе гримасу. В чем дело?
Тут некому состроить гримасу.
................................................................................
$n boggles at the concept.
You boggle at $N.
$n boggles at $N.
$n boggles at you.
Boggle away.  They've left.
You boggle at yourself.  Hmmm...intriguing.
$n boggles quietly to $mself.

beckon 1 0
Ты приглашаешь всех следовать за собой.
$n приглашает всех следовать за собой.
Ты приглашаешь $N следовать за собой.
$n приглашает $N следовать за собой... хммм, что происходит?
$n приглашает тебя следовать за собой.
Извини, но этот человек уже ушел.
Ты зовешь свою тень с собой.
$n зовет свою тень с собой.

wonder удивляться 1 0
Ты удивляешься, как могло такое случиться.
$n удивляется, как могло такое случиться.
Ты смотришь на $N4 и ждешь, что произойдет.
$n смотрит на $N4 и удивляется...
$n вопросительно смотрит на тебя.
Ты думаешь, что могло бы случиться, если бы этот человек тут был.
Ты удивляешься себе и тому, что ты делаешь.
Вопросительное выражение появляется на лице $n. Чему $e удивляется?

worry беспокоиться 1 0
Ты беспокоишься, что может случится.
Беспокойство появляется на лице $n2. В чем дело?
Ты смотришь на $N4 с беспокойством.
$n смотрит на $N4 с беспокойством.
$n смотрит на тебя с беспокойством.
Они не беспокоятся - они ушли!
Ты беспокоишься, что может случится.
Беспокойство появляется на лице $n. В чем дело?


drool 1 0
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!
You drool messily on $N.
$n drools upon $N.
$n looks at you lustily and drools.
Oh fine, make a pool of slobber -- they aren't even here!
You drool down the front of your shirt.
$n drools all over $mself -- making a TERRIBLE mess!

nod кивать кивок 1 0
Ты киваешь.
$n кивает.
Ты киваешь $N3.
$n кивает $N3.
$n кивает тебе в знак согласия.
Не кивай - их нет.
Ты пытаешься кивнуть себе, но у тебя кружится голова.
$n успокаивающе кивает себе.

purr мурлыкать мурчать 1 0
ММММММЯЯЯЯЯЯУУУУУУ!!!
$n довольно мурлыкает.
Ты прижимаешься к $N3 и довольно мурлыкаешь.
$n прижимается к $N3 и довольно мурлыкает.
$n прижимается к тебе и довольно мурлыкает.
Глупое животное! Тут нет таких.
Ты тихо мурлыкаешь себе.
$n тихо мурлыкает себе.

point указывать 1 0
Ты указываешь во всех направлениях.
$n возбужденно показывает куда-то!
Ты показываешь на $N4.
$n показывает на $N4!
$n показывает на тебя. Как грубо!
Таких тут нет.
Ты смущенно показываешь на себя.
$n смущенно показывает на себя.

rub потирать 1 0
Ты потираешь руки в жадном ожидании.
$n потирает свои руки в жадном ожидании.
Ты долго и мягко массажируешь $N4.
$n долго и мягко массажирует $N4.
$n массажирует тебя, пробегая своими руками по твоим плечам. Хм.
Стыдно видеть эти одаренные руки в бездействии...
Ты массажируешь себя... задерживаясь в некоторых местах чуть дольше..
$n массажирует себя... что за экцентричная личность!

bleed 1 0
You bleed profusely -- making a horrible mess!
$n weakly bleeds all over the floor.
You bleed on $N -- ewww!
$n bleeds on $N.  Watch out, YOU might be next!
$n bleeds on you -- ewww!  Get away!!
Bleed on whom?
You bleed all over yourself.
$n bleeds profusely all over $mself.

highfive 1 0
You jump in the air and give a BIG high five to...umm...absolutely nothing.
$n wildly high fives the air, looking very foolish -- very foolish indeed.
You jump in the air and give a BIG high five to $N!
$n enthusiastically high-five's $N!
$n gives you a BIG high five!  Way to go!!
Sorry, they have already left.
You try to give yourself a high five.  What ARE you thinking?
$n tries to high five $mself, but ends up looking foolish instead.

propose 1 0
You propose to everyone in the room.
$n proposes to everyone in the room.  Very odd.
You kneel and romantically propose to $N.
$n gets on one knee and proposes to $N.
$n gets down on one knee and romantically proposes to you.
You must be lonely.  They aren't here.
You are SO full of yourself!
$n proposes to $mself -- how narcissistic!

peer разглядывать 1 0
Ты внимательно оглядываешься вокруг.
$n внимательно оглядывается вокруг.
Ты пристально разглядываешь $N4.
$n пристально разглядывает $N4.
$n пристально разглядывает тебя.
Тут нет таких.
Ты рассматриваешь себя, скосив глаза.
$n рассматривает себя.

worship 1 0
Ты молишься богам!
$n молится богам!
Ты падаешь на колени и боготворишь $E4.
$n падает на колени и боготворит $N4.
$n падает на колени и боготворит тебя.
Ты не можешь поклоняться тому, кого тут нет.
................................................................................
$n смотрит на тебя и невинно хлопает ресницами.
Даже и не пытайся - они уже ушли.
#


collapse падать 1 0
Ты в изнеможении падаешь на пол.
$n драматично падает на пол в изнеможении.
Ты в изнеможении падаешь на руки $N2.
$n в изнеможении падает на руки $N2.
Неожиданно $n в изнеможении падает прямо тебе в руки.
Они уже ушли, просто падай на пол.
#


stretch потянуться 1 0
Ты откидываешься и потягиваешься.
$n грациозно потягивается. Ты хочешь $e4, не так ли?
................................................................................
Успокой свой эгоизм. Они уже ушли.
Ты хвастаешься себе своими подвигами.
$n хвастается сам$a себе - эгоист!

squirm 1 0
You squirm uncontrollably in your consternation.
$n squirms uncontrollably, suddenly looking very uncomfortable.
You look at $N and squirm with delight.
$n looks at $N and squirms with delight.
$n looks at you and squirms with delight.
#

moo
You chew your cud and moo plaintively.  Muh-OOOOO!
$n turns cowlike eyes on you, chews $s cud, and moos plaintively.
................................................................................
You show off to $N, flexing your muscles proudly.
$n flexes $s muscles, in a vain attempt to impress $N.
$n flexes $s muscles in a vain attempt to show off to you.
#


embrace 1 0
Кого ты хочешь заключить в объятия?
$
Ты с любовью заключаешь $N4 в свои объятия.
$n с любовью заключает $N4 в свои объятия.
$n с любовью заключает тебя в свои объятия.
Твое сердце разбито - тут нет таких.
Ты обнимаешь себя, пытаясь утешиться.
$n обнимает себя, пытаясь утешиться.
................................................................................
You bonk $N on the head for being such a moron.
$n bonks $N on the head for being such an UTTER moron.
$n bonks you on the head for being so foolish.
***BONK*** they left...
You bonk yourself, fool that you are.
$n bonks $mself and grimaces in pain.

squeal визжать 1 0
Ты визжишь от восторга!
$n визжит от восторга!
Ты смотришь на $N4 и взвизгиваешь от восторга!
$n визжит от восторга, глядя на $N4.
$n смотрит на тебя и взвизгивает от восторга!
#

................................................................................
$n moshes insanely around the room!
You mosh sadistically against $N ... you WILL be punished.
$n bounces off of $N in a vain attempt to mosh... what a LOSER.
$n slams into you, moshing painfully against you.  That REALLY hurts!
Hmmm...  your victim found a new dance partner.
Masochist!
$n throws $mself on the floor, grinding $mself into a bloody pulp

flinch 0 0
А-а-а... Ты вздрагиваешь от боли.
$n вздрагивает от боли... Что $e сделал$a на этот раз?
Тебе не кажется, что ты можешь просто лечь и умереть?
$n глядит на $N и вздрагивает.
$n вздрагивает в ответ на твой холодный упрек.
Успокойся, они ушли.
Ты не можешь поверить, что ты сделал$a...
$n вздрагивает, осознав свое поведение.

air 0 0
Ты берешь воздушную гитару и играешь для всех, кого ценишь.
$n безумно играет на воздушной гитаре... Великолепно!!!
Ты надеешься, что $E оценит твой талант.
$n играет прекрасную мелодию для $N.
$n играет самую прекрасную мелодию для тебя на $s воздушной гитаре.
Аууу... у тебя нет аудитории!
Ты тихо играешь для себя.
#

tweak ущипнуть 0 0
Кого ущипнуть?
$
Ты мягко щипаешь $e2 щеку... $E прелесть, не так ли?
$n щипает $N4 за щеку... Они выглядят восхитительно вместе, правда?
$n щипает тебя за щеку. Это напоминает про бабушку... фи...
Этого человека похоже тут нет.
Ты не можешь этого сделать.
#

peck 5 0
Не хочешь ли ты сделать это человеку или ты предпочитаешь воздух?
$
Рискуя получить пощечину, ты целуешь $N в щеку.
$n улыбается и целует $N в щеку.
$n целует тебя в щеку, как сладко!
Я думаю, они ушли...
Ты похоже очень любишь себя.
#

explode взрываться 0 0
Ты чувствуешь, как кровь кипит в твоих венах!
$n становится багровым.
Ты чувствуешь, как твоя ярость разрастается...
$n прожигает дырки на $N6 своей яростью!
$n злится на тебя... Я бы на твоем месте бежал!!!
Успокойся... они ушли.
Твоя душа ярко разгораетя, но потом затухает.
$n пропал$a!!! Только жирное пятно осталось на том месте, где $e раньше стоял$a.

raspberry 4 0
You stick your tongue out at ... well, no one.
$n sticks $s tongue out, catching a few flies in the process.
You give $N the raspberry... and spit all over yourself.
$n gives $N the raspberry... PHBT!  What a mess... Spit EVERYWHERE!
You are splattered with saliva as $n gives you the raspberry... HOW RUDE!
Hang your tongue out if you like, $e isn't here.
You try to stick your tongue out at yourself... somehow, it isn't the same.
#

flash 0 0
You grin and strut as you open your coat and show what you've got!
$n rips $s clothes off and parades naked around the room!
Swiftly you jerk open your jacket, trying to get $M to notice you.
Cover your eyes, $n is exposing $mself to $n!  EWWWW!
You gasp!  $n has just revealed $s "equipment" to you!
Exhibitionist, that person isn't here!
That's sick.
PERVERT PRESENT!  $n is trying to flash $mself

strip снимать 0 0
Ты начинаешь показывать медленный стриптиз для окружающих...
$n начинает показывать стриптиз...
Ты начинаешь раздевать $N4... вещь за вещью...
$n начинает медленно снимать с $N2 одежду...
$n начинает медленно раздевать тебя...
Твоей игрушки похоже тут нет...
Не при людях!
#

undress раздеваться 0 0
Ты начинаешь раздеваться в тени, выжидая, пока тебя заметят.
$n начинает раздеваться... очень сексуально... *Pant*
Ты раздеваешь глазами $N4... Прикольно.
Температура растет - $n страстно смотрит на $N4...
Ты чувствуешь, как $n раздевает тебя глазами...
Тут нет таких...
Лучше перед зеркалом...
#

................................................................................
$
Mmmm... you give $N a good working over with your tongue...
$n slides $s tongue over $N's body...
$n wraps $s tongue around you, moving it across your young, nubile flesh...
Never around when required...
You slowly tongue yourself.
$n slowly tongues $mself... ICK.

view 0 0
Ты удобно устраиваешься и смотришь, что происходит в мире.
$n удобно устраивается и наслаждается видом.
#

grumble ворчать 0 0
Ты тихо ворчишь про себя.
$n ворчит и рычит. В чем дело...
Ты ворчишь на $N4, тебя раздражает $e2 присутствие.
$n выглядит как медведь-ворчун... $e уже замучал$a $N4 своим ворчанием.
$n ворчит на тебя... что ты сделал$A?
Этого человека похоже тут нет.
О чем ты беспокоишься?
#

cheer удачи 0 0
Ты шутливо прыгаешь и пританцовываешь!
$n радуется и припевает!
Ты желаешь $N3 удачи!
*Вау!* Вперед, $N!!! $n поддержит $e4.
$n желает тебе удачи! Не подведи $e4.
Кто? Что? Где? Их тут нет, это точно.
Ты тихо желаешь себе удачи, так как больше никто этого не сделал.
$n желает удачи сам$a себе... как печально.

plead 0 0
Ты умоляешь послушать тебя.
$n умоляет послушать $s... Тебе $s почти жалко.
#

charge 0 0
Ты затеваешь драку!
$n затевает драку! Ни капли мозгов.
С неожиданной быстротой ты бьешь $N головой!
$n разбегается и бьет $N головой прямо в живот!
Уф! $n бьет тебя головой прямо в живот! Это было больно.
Никого вокруг с таким именем нет.
Ты разбегаешься и бьешься головой в стенку. Ой!
#

criticize критиковать критика 0 0
Да, но кого?
$
Ты критикуешь $N4 со всей горячностью.
Злобно ухмыляясь, $n уничтожает все старания $N2.
$n говорит, что тебе нужно сделать много важных улучшений.
Эх, куда же делать твоя жертва...
Ты критикуешь сам$a себя.
$n рвет и мечет, проклиная собственную глупость.

run 0 0
Ты убегаешь в страхе и ужасе!
$n убегает в стахе и ужасе!
Ты в ужасе убегаешь от $N!
$n убегает от $N в страхе и ужасе!
$n бежит от тебя, опасаясь за свою жизнь!
Тебе нечего бояться - тут таких нет.
Неужели ты настолько некрасив$a?
$n смотрит в зеркало, видит свое лицо и в страхе убегает!

judge судить 0 0
Да, но кого?
$
Ты оцениваешь $e4 по шкале от 1 до 10.
По шкале от 1 до 10, $n оценивает $N4 как полный ноль!!!
$n оценивает твои действия по шкале от 1 до 10 и решает, что это... Ноль!!!
Сейчас таких тут нет.
Ты ведь не хочешь этого делать.
#

insane 0 0
Ты чувствуешь, как твое здравомыслие исчезает...
Прямо на твоих глазах, здравомыслие $n исчезает...
#

cover затыкать заткнуть 0 0
Ты затыкаешь уши от шума.
$n затыкает уши от шума.
Ты смотришь на $N4 и затыкаешь уши.
$n смотрит на $N4 и закрывает уши.
$n затыкает свои уши из-за тебя... ты слишком громко кричишь!
Их сейчас тут нет.
Нет... Я так не думаю.
#

flare 0 0
Ты пренебрежительно раздуваешь ноздри.
$n пренебрежительно раздувает ноздри.
Ты пренебрежительно раздуваешь ноздри, глядя на $N... Как грубо!
$n пренебрежительно раздувает ноздри, глядя на $N, и отворачивается.
$n пренебрежительно раздувает ноздри, глядя на тебя... Что ты сделал$A???
Злись, если хочешь, но этого человека тут нет.
*Sniff* Но тебе бы следовало любить себя!
#

head 0 0
Ты надменно закидываешь голову.
$n надменно закидывает голову.
Ты надменно закидываешь голову, глядя на $N.
$n надменно закидывает голову, глядя на $N...
$n надменно закидывает голову, глядя на тебя... :(
Этот человек уже ушел.
Зачем тебе это?
#

pie 0 0
Ты берешь пирог и кидаешь его в стенку.
$n берет пирог и кидает его в стенку.
Ты берешь пирог и кидаешь его прямо в лицо $N!
$n берет пирог и кидает его прямо в лицо $N!
$n кидает пирог прямо тебе в лицо... и сейчас у тебя все лицо в креме!
Этого человека тут нет...
Ты падаешь лицом прямо в торт... уимммм!!! :)
$n падает лицом прямо в торт, облизывая тарелку.

cower 0 0
Ты присаживаешься в уголке.
$n присаживается в уголке и тихо всхлипывает.
Ты присаживаешься в уголке, подальше от $N и $S грязных слов.
$n присаживается в уголке, подальше от $N.
Ты испугал$a $n! Сейчас $e сидит в уголке, опасаясь за свою жизнь.
Этого человека сейчас тут нет.
Ты боишься собственной тени!
$n садится в уголке, пугаясь собственной тени.

noogie 5 0
You can't noogie the AIR!  It has no head.
$
You grab $N, get $M in a head lock and NOOGIE $M!
$n grabs $N in a head lock and NOOGIES $M... ARGH!!!
Oh NO, $n grabs you, throws you in a head lock and NOOGIES you!
That person has gone off to other lands...
You rub your head and create a static charge...
$n rubs $s OWN head and creates a static charge... *ZAP*

yeehaw 5 0
You mount your pony(?) and shout YEEEEEEEHAAAAAAAW!
$n bounces up and down screaming *YEEEEEEHAAAAAAW!*
#

pissed 5 0
You are PISSED!
$n is PISSED so watch out!
You turn a stoney gaze toward $N... you are SOOO pissed at $N!
$n glares at $n.... $n is SOOO PISSED at $m!
$n is pissed at you now... What do you think $e'll DO?
That person is not here...
You are PISSED at yourself!
$n is so pissed at $mself.  How could $e be so stupid???

passout 5 0
You belch and pass out.
$n is OBVIOUSLY intoxicated... $e burps loudly and passes out!
#


adjust 5 0
Ты смотришь вокруг, убеждаешься, что никто не смотрит и поправляешь свой "инструмент".
$n хитро оглядыается, улыбается, потом тянется вниз и "поправляет" себя...
#

scratch 5 0
Ты довольно почесываешь себя.
$n тянется вниз и почесывает себя там... Сейчас $e выглядит очень счастливо.
#

meditate 0 0
Ты садишься поудобнее и начинаешь медитировать.
$n садится и начинает медитировать... $e что-то тихо напевает про себя.
#

bkiss 0 0
Ты посылаешь свой поцелуй в воздух.
$n посылает свой поцелуй в воздух.
Ты посылаешь $N воздушный поцелуй и надеешься, что $E поймает его.
$n посылает $N воздушный поцелуй... Как мило!
$n посылает тебе воздушный поцелуй и надеется, что ты пошлешь его обратно.
Твой поцелуй падает на землю, не находя, к кому лететь.
Ты посылаешь себе поцелуй... Мир прекрасен, не нак ли?
$n посылает себе поцелуй, выглядя при этом влюбленно.

beer пиво 0 0
Ты достаешь 6 банок пива.
$n начинает распаковывать 6 банок пива.
Ты бросаешь бутылку пива $N3.
$n бросает бутылку пива $N3 ... надеясь, что $E поймает ее!
$n бросает тебе бутылку пива... Похоже, $e чего-то хочет...
Бутылка падает на пол и разбивается.
Ты открываешь бутылку и пьешь пиво.
$n открывает бутылку и начинает жадно глотать пиво.

bcatch 0 0
Ты прыгаешь и ловишь бутылку, которую тебе кинули.
$n подпрыгивает и в воздухе ловит бутылку, которую $e3 кинули.
#

claw царапать 0 0
Ты сжимаешь руки в кулаки.
$n сжимает свои кулаки, пока из них не начинает капать кровь...
Ты впиваешься ногтями в $E2 глаза... Как грубо!
$n впивается ногтями в глаза $N2... О, Боже, кровь!
$n впивается ногтями в твои глаза и ты ослеплен$A свой собственной кровью!
Тебе некого поцарапать.
................................................................................
$
Незаметно для всех, ты связываешь $E2 шнурки вместе.
$n подкрадывается к $N3 и связывает $E2 шнурки вместе.
Ты пытаешься сделать шаг и падаешь лицом на пол! $n похоже связал$a твои шнурки!
Чьи шнурки?
Ты связываешь свои шнурки, пытаешься сделать шаг и падаешь.
$n связывает свои шнурки вместе, пытается сделать шаг и падает лицом на пол.

tag
Tag whom?
$n casts about for someone to tag.
>From nowhere, you pounce on $N and TAG $M remorselessly!  BWAHAHA!!!
$n dives from the shadows and TAGS $N.  $N IS IT!
$n pounces on you and >>> TAGS <<< you!  You're IT!
Who were you going to tag, then?
Unable to catch anyone else, you do the intelligent thing and tag yourself. You're still IT!
Unable to catch anyone else, $n tags $mself.  Are you impressed?

tank танковать
You boldly offer to tank for your everyone else.  Are you sure you know what you're getting into?
$n offers to tank!
Ты предлагаешь пойти вперед грудью (танком) перед $N5.
$n предлагает пойти вперед грудью (танком) перед $N5.
$n предлагает пойти вперед грудью (танком) перед тобой!
Танковать для кого ?
No one will tank for you, eh?!? WELL, YOU'LL SHOW THEM!  (right?)
In dazzling chivalry, $n offers to tank-- for $mself!

starve голодать
Ты показываешь свои выступающие ребра и надеешься, что тебя пожалеют.
$n сохнет прямо на глазах - $e умирает от голода!
Ты бросаешься под ноги $N3, умоляя дать немного еды.
$n просит у $N2 еды. $e думает, что магия может утолить голод...
$n умирает от голода прямо на твоих глазах! Поделишься едой?
Извини, но этого человека тут нет -- похоже ты так и умрешь от голода.
#

aargh
А-А-А-А-а-а-а-а-а!!!
$n закидывает голову и расстроенно кричит!
Ты расстроенно кричишь и хватаешь себя за горло двумя руками!
$n расстроенно кричит и прыгает вокруг $N2, пытаясь задушить $E!
$n хватает тебя за горло, расстроенно крича!
Ты еще более расстраиваешься, когда понимаешь, что некого придушить!
Ты расстроенно кричишь на себя за свою глупость!
$n расстроенно кричит на себя за свою глупость!

homework
Ты неожиданно вспоминаешь, что тебе еще надо доделать кое-что сегодня...
$n выглядит взволнованно. Может $e забыл$a сделать какое-то важное задание?
#

puff
Ты подражаешь самым глупым выходкам Пуфф.
$n говорит, "Знаете ли вы, что я написан$a на C?"
#


yae
Ты вздыхаешь в присутствии Еще Одного Идиота.
$n вздыхает в присутствии Еще Одного Идиота.
Тут есть Еще Один Идиот в комнате, и ты смотришь прямо на н$s.
$n честно веришь, что $N - идиот!
$n смотрит на тебя, твой интеллект явно не впечатляет $s.
Тут полно идиотов, но того, который тебе нужен, тут сейчас нету.
Ты бьещь себя по лбу за свое идиотское поведение!
$n ругает себя за свое идиотское поведеине!

lightbulb
*Динь!* Вдохновение!
Лампочка зажигается над головой $n!
#

voodoo
Bad juju like this has to be directed at a person.
$n looks hostile for a moment.
You stare daggers at $N, jabbing pins into $S effigy.
$n glares balefully at $N while stabbing a pin into a voodoo doll.
Your heart lurches in your chest, and fiery pain stabs through your skull!
Your hatred finds no such target.
................................................................................



leer 0 0
You peer around the room, leering like the pervert you are!
$n peers about, leering like a filthy pervert!
You leer at $N like the pervert you are.
$n eyes $N up and down, leering like a filthy pervert!
$n eyes you up and down, leering like a filthy pervert!
You'll have to settle for memories -- that person isn't here.
Desperation has reached new heights, hasn't it?
$n leers at $mself shamelessly.

polite 0 0
Ты слегка посмеиваешься.
$n слегка посмеивается.
Ты незаметно посмеиваешься над $S шуткой.
$n слегка посмеивается над шуткой $N.
$n незаметно посмеивается над твоей шуткой.
Тебе не с кем посмеяться.
Ты посмеиваешься над своей шуткой, так как больше никто не хочет.
$n посмеивается над своей шуткой, так как больше никто не хочет.

mischievous ехидно 0 0
Ты ехидно улыбаешься своим мыслям.
$n ехидно усмехается над гадкой идеей.
Ты ехидно усмехаешься над $N, задумав что-то гадкое.
$n ехидно усмехается над $N. $e похоже задумал$a что-то гадкое.
$n ехидно усмехается над тобой. Ты поглядываешь в сторону двери.
Ты бредишь.
Ты ехидно усмехаешься над собой.
$n ехидно усмехается над собой.

accept 0 0
You accept the proferred apology graciously.
$n graciously accepts the proferred apology.
#

anticipate 0 0
You murmur 'Sssssoonnn, my presssssciousssss...'
$n murmurs 'Ssssssooonnnn, my pressssscioussss...'
#

powertrip 0 0
You scream 'The PPppppPOOOOoooWWWwwwErrRRR!' and writhe.
$n writhes, screaming 'The PPppppPOOOOoooWWWwwwErrRRR!'
#

shudder 0 0
Ты дрожишь в ужасе, подавляя слезы.
$n дрожит в ужасе, подавляя слезы.
#

sage 0 0
Ты киваешь с умным видом.
$n кивает с умным видом.
#

contemplate 0 0
Ты задумчиво прикусываешь губу.
$n задумчиво прикусывает губу.
#

agree соглашаться 0 0
Ты соглашаешься.
$n соглашается.
Ты восторженно соглашаешься с $N5.
$n восторженно соглашается с $N5.
$n восторженно соглашается с тобой.
Извини, этот человек отсутствует.
Ты соглашаешься сам$a с собой.
$n соглашается сам$a с собой.

toast тост 0 0
Ты поднимаешь бокал шампанского, собираясь произнести тост.
$n поднимает бокал шампанского, собираясь произнести тост.
Ты поднимаешь бокал шампанского за н$e.
$n молча пьет за $N4.
$n молча пьет за тебя.
Этот человек отсутствует.
Ты ухмыляешься и пьешь за себя.
$n ухмыляется и пьет за себя.

conspire 0 0
Ты заговорщически подмигиваешь, ожидая сигнала.
$n заговорщически подмигивает, ожидая сигнала.
Ты заговорщически подмигиваешь $N.
$n заговорщически подмигивает $N. Хм, что бы это значило?
$n заговорщически подмигивает тебе.
Ты устраиваешь заговор сам$a с собой.
$n подозрительно смотрит вокруг.
#

support поддерживать 0 0
Ты полностью поддерживаешь план.
$n полностью поддерживает план.
Ты поддерживающе обнимаешь $S и улыбаешься.
$n поддерживающе обнимает $N и улыбается.
$n поддерживающе обнимает тебя и улыбается.
Извини, друг, но этого человека тут нет.
Ты с грустью обнимаешь себя.
$n с грустью обнимает себя. Может ты можешь помочь?

pound 0 0
Ты делаешь неопределенные движения кулаками.
$n делает неопределенные движения кулаками.
Ты бьешь $N, превращая $S в кровавую массу.
$n бьет $N, превращая $S в кровавую массу.
$n бьет тебя, превращая в кровавую массу.
Извини, друг, но я не вижу этого человека тут.
#

wrist 0 0
Ты поднимаешь руку, чтобы ударить.
$n поднимает руку, чтобы ударить.
Ты резко бьешь $S по руке.
$n резко бьет $N по руке.
$n резко бьет тебя по руке.
Извини, друг, но я не вижу этого человека тут.
Ты бьешь себя по руке.
$n бьет себя по руке.

romeo 0 0
Ты зажигаешь сигару 'Romeo & Julietta' и затягиваешься с удовольствием.
$n зажигает сигару 'Romeo & Julietta' и затягивается с удовольствием.
#


camel 0 0
................................................................................
You light a Camel cigarette for $M.
$n lights a Camel cigarette for $N.
$n lights a Camel cigarette for you.
You don't see that personhere.
You light a Camel cigarette and inhale sharply.
$n lights a Camel cigarette and inhales sharply.

whip 0 0
You crack your bullwhip menacingly.
$n cracks a bullwhip menacingly.
You flick your whip across $M bare back.
$n flicks $s whip across $N's bare back.
$n flicks a whip across your back... the pain.. the pleasure..
Sorry, friend, I can't see that person here.
You whip yourself into a frenzy.
$n whips $mself into a frenzy.

cramp 0 0
You gasp and clutch your abdomen, wheezing with the pain.
$n gasps and clutches $m abdomen in agony.
You hammerlock $M, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!"
$n hammerlocks $N, screaming, "AAAAARRRRRGH!! I HAVE A CRAMP!!!".
$n hammerlocks you, screaming "AAAAARRRRRGH!! I HAVE A CRAMP!!!"
Suffering as you are, you didn't see that person slip out.
#

make 0 0
You breathe heavily and wetly.
$n breathes heavily and wetly.
You steam up the windows with $M.
$n and $N start steaming up the windows.
$n starts steaming up the windows with you.
Sorry, friend, I can't see that person here.
#

sweep 0 0
Ты смотришь на свои пустые руки и вздыхаешь.
$n смотрит на свои пустые руки и вздыхает.
Ты берешь $N на руки и целуешь $S долго и страстно.
$n берет $N на руки и целует $S долго и страстно.
$n берет тебя на руки и целует долго и страстно.
Человека, которого ты хотел$a поцеловать, тут нет.
#

buff ногти 0 0
Ты полируешь ногти.
$n полирует ногти.
#

liver печень 0 0
Ты злобно оглядываешься, выбирая цель.
$n злобно оглядывается, выбирая цель.
Ты вырываешь $S печень и ешь ее.
$n вырывает печень $N и ест ее.
$n вырывает твою печень и ест ее.
Объект твоей злости отсутствует.
#

wrestle бороться 0 0
$
$
Ты борешься с $N на полу.
$n борется с $N на полу.
$n борется с тобой на полу.
Извини, друг, но я не вижу этого человека тут.
Ты борешься со своей совестью.
$n борется со своей совестью.

tie 0 0
Ты вертишь в руках пару наручников.
$n вертит в руках пару наручников.
Ты хватаешь $N и привязываешь $S к кровати.
$n хватает $N и привязывает $S к кровати.
$n хватает тебя и привязывает к кровати.
Извини, друг, я не вижу этого человека тут.
#

tight 0 0
$
$
Ты крепко держишь $E в своих руках.
$n крепко держит $N в своих руках.
$n крепко держит тебя в своих руках.
Извини, друг, я не вижу этого человека тут.
#

fatality 0 0
$
$
Ты замечаешь, '$N победил$A. Это конец.'
$n замечает, '$N победил$A. Это конец.'
$n замечает, '$N победил$A. Это конец.'
#

yowl выть 0 0
Ты разочарованно воешь.
$n разочарованно воет!
#

silly глупо 0 0
Ты глупо прогуливаешься по комнате.
$n бесцельно прогуливается по комнате. $e выглядит действительно глупо.
#

dig копать ковырять 0 0
Ты ковыряешь носком ноги землю.
$n ковыряет носком землю.
#

finger пальцы 0 0
Ты растопыриваешь пальцы веером.
$n растопыривает пальцы веером.
#

#0
#$

Changes to tclchat/tclchat_messages.tcl.

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
...
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# Modified by Pat Thoyts
# Rewritten by Sergei Golovan

namespace eval tclchat {
    custom::defvar options(tclers_chat_jid) "tcl@tach.tclers.tk" \
        [::msgcat::mc "JID of Tclers' chat."] \
        -group Tclchat -type string
    
    custom::defvar options(bridge_jid) "ijchain@all.tclers.tk/ijbridge" \
        [::msgcat::mc "Real JID of Tclers' chat bridge to IRC channel.\
                       If set to nonempty string, the list of IRC users\
                       will be requested before entering the conference\
                       room."] \
        -group Tclchat -type string
    
    custom::defvar options(bridge_nickname) "ijchain" \
        [::msgcat::mc "Nickname of Tclers' chat bridge to IRC channel.\
                       Groupchat messages from this participant\
                       are treated specially, replacing his nickname by\
                       corresponding IRC user nickname."] \
        -group Tclchat -type string
}
................................................................................

    if {[llength $lbody] == 7 && [lindex $lbody 0] eq "***"} {

        set from_nick [lindex $lbody 1]
        set to_nick [lindex $lbody 6]

        if {[join [lrange $lbody 2 5] " "] eq "is now known as"} {
            
            set ux [::xmpp::xml::create x \
                        -xmlns $::NS(muc#user) \
                        -subelement [::xmpp::xml::create item \
                                            -attrs [list affiliation none \
                                                         nick $to_nick]] \
                        -subelement [::xmpp::xml::create status \
                                            -attrs [list code 303]]]







|






|







 







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
...
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# Modified by Pat Thoyts
# Rewritten by Sergei Golovan

namespace eval tclchat {
    custom::defvar options(tclers_chat_jid) "tcl@tach.tclers.tk" \
        [::msgcat::mc "JID of Tclers' chat."] \
        -group Tclchat -type string

    custom::defvar options(bridge_jid) "ijchain@all.tclers.tk/ijbridge" \
        [::msgcat::mc "Real JID of Tclers' chat bridge to IRC channel.\
                       If set to nonempty string, the list of IRC users\
                       will be requested before entering the conference\
                       room."] \
        -group Tclchat -type string

    custom::defvar options(bridge_nickname) "ijchain" \
        [::msgcat::mc "Nickname of Tclers' chat bridge to IRC channel.\
                       Groupchat messages from this participant\
                       are treated specially, replacing his nickname by\
                       corresponding IRC user nickname."] \
        -group Tclchat -type string
}
................................................................................

    if {[llength $lbody] == 7 && [lindex $lbody 0] eq "***"} {

        set from_nick [lindex $lbody 1]
        set to_nick [lindex $lbody 6]

        if {[join [lrange $lbody 2 5] " "] eq "is now known as"} {

            set ux [::xmpp::xml::create x \
                        -xmlns $::NS(muc#user) \
                        -subelement [::xmpp::xml::create item \
                                            -attrs [list affiliation none \
                                                         nick $to_nick]] \
                        -subelement [::xmpp::xml::create status \
                                            -attrs [list code 303]]]

Changes to tkabber-khim/khim/ROOT.msg.

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	the character from a map of all available Unicode code
	points.) To remove a sequence, select it in the listbox and
	press "Delete".

    }

    ::msgcat::mcset {} {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Please press the 
	key that you want 
	to use as the 
	"Compose" key.
    }]

}








|
|
|





60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	the character from a map of all available Unicode code
	points.) To remove a sequence, select it in the listbox and
	press "Delete".

    }

    ::msgcat::mcset {} {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Please press the
	key that you want
	to use as the
	"Compose" key.
    }]

}

Changes to tkabber-khim/khim/cs.msg.

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
	dostupné posloupnosti. Pokud stisknete "mrtvou" klávesu
	dvakrát, zobrazí se vám dialog, ve kterém můžete vybrat
	žádaný symbol z unokódové mapy. V mapě se můžete pohybovat
	kursorovými klávesami, dvojklikem myší, mezerníkem či klávesou
	enter vybraný znak vložíte do textu.

	Chcete-li další znaky vkládat pomocí mrtvé klávesy, otevřete
	"Ovládací panel KHIM" vložte dva znaky do pole "Posloupnost 
	kláves" a požadovaný znak, který chcete vložit do pole 
	"Vkládaný znak" a stisknětě talčítko "Změnit" (vkládaný
	znak můžete nakopírovat z jiné aplikace nebo poučít talčítko
	"Unikód..." (nebo stisknout dvakrát "mrtvou" klávesu) a vybrat
	znak z unikódové mapy). K odstranění klávesové posloupnosti
	slouží tlačítko "Smazat".

    }

    ::msgcat::mcset cs {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Stiskněte klávesu 
	kterou chcete používat 
	jako "mrtvou" klávesu.
    }]

    ::msgcat::mcset cs {Apply} "Použít"

    ::msgcat::mcset cs {Cancel} "Zrušit"








|
|









|
|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
	dostupné posloupnosti. Pokud stisknete "mrtvou" klávesu
	dvakrát, zobrazí se vám dialog, ve kterém můžete vybrat
	žádaný symbol z unokódové mapy. V mapě se můžete pohybovat
	kursorovými klávesami, dvojklikem myší, mezerníkem či klávesou
	enter vybraný znak vložíte do textu.

	Chcete-li další znaky vkládat pomocí mrtvé klávesy, otevřete
	"Ovládací panel KHIM" vložte dva znaky do pole "Posloupnost
	kláves" a požadovaný znak, který chcete vložit do pole
	"Vkládaný znak" a stisknětě talčítko "Změnit" (vkládaný
	znak můžete nakopírovat z jiné aplikace nebo poučít talčítko
	"Unikód..." (nebo stisknout dvakrát "mrtvou" klávesu) a vybrat
	znak z unikódové mapy). K odstranění klávesové posloupnosti
	slouží tlačítko "Smazat".

    }

    ::msgcat::mcset cs {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Stiskněte klávesu
	kterou chcete používat
	jako "mrtvou" klávesu.
    }]

    ::msgcat::mcset cs {Apply} "Použít"

    ::msgcat::mcset cs {Cancel} "Zrušit"

Changes to tkabber-khim/khim/da.msg.

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
	Kevin's Hacky Input Method (KHIM)

	KHIM gør det muligt at indtaste internationale tegn med et tastatur
	som ikke understøtter disse. Dette fungerer uafhængigt af en
	bestående indtast metode som styresystemet måtte understøtte.
	Det er tænkt til at hjælpe, hvis du ikke har kontrol over tilordningen
	på dit tastatur og dog har brug for at indtaste tekst i andre sprog.
	
	For at benytte KHIM, vis kontrolpanelet (hvordan det gøres, afhænger af
	dit program) og aktiver KHIM ved at afkrydse "Benyt KHIM". Du skal vælge
	en taste	der kun sjældent benyttes på dit tastatur og fastlægge denne som
	"Compose" taste for at sætte tegn sammen med. Tryk dertil på knappen
	markeret med "Compose taste:" og tryk derefter på den taste du ønsker at
	fastlægge. Generellt skulle det ikke være den taste som normalt benyttes
	til at konstruere tegn med; denne taste vil fortsat opråbe din lokale
................................................................................

    ::msgcat::mcset da {OK} {O.k.}

    ::msgcat::mcset da {Select code page:} {Vælg kode side:}

    ::msgcat::mcset da {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Tryk på den taske
	du ønsker at bruge  
	som "Compose" taste.
    }]

    ::msgcat::mcset da {Unicode...} {Unicode...}

    ::msgcat::mcset da {Use KHIM} {Benyt KHIM}

}

# Local Variables:
# mode: tcl
# End:







|







 







|












39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
	Kevin's Hacky Input Method (KHIM)

	KHIM gør det muligt at indtaste internationale tegn med et tastatur
	som ikke understøtter disse. Dette fungerer uafhængigt af en
	bestående indtast metode som styresystemet måtte understøtte.
	Det er tænkt til at hjælpe, hvis du ikke har kontrol over tilordningen
	på dit tastatur og dog har brug for at indtaste tekst i andre sprog.

	For at benytte KHIM, vis kontrolpanelet (hvordan det gøres, afhænger af
	dit program) og aktiver KHIM ved at afkrydse "Benyt KHIM". Du skal vælge
	en taste	der kun sjældent benyttes på dit tastatur og fastlægge denne som
	"Compose" taste for at sætte tegn sammen med. Tryk dertil på knappen
	markeret med "Compose taste:" og tryk derefter på den taste du ønsker at
	fastlægge. Generellt skulle det ikke være den taste som normalt benyttes
	til at konstruere tegn med; denne taste vil fortsat opråbe din lokale
................................................................................

    ::msgcat::mcset da {OK} {O.k.}

    ::msgcat::mcset da {Select code page:} {Vælg kode side:}

    ::msgcat::mcset da {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Tryk på den taske
	du ønsker at bruge
	som "Compose" taste.
    }]

    ::msgcat::mcset da {Unicode...} {Unicode...}

    ::msgcat::mcset da {Use KHIM} {Benyt KHIM}

}

# Local Variables:
# mode: tcl
# End:

Changes to tkabber-khim/khim/en.msg.

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	the character from a map of all available Unicode code
	points.) To remove a sequence, select it in the listbox and
	press "Delete".

    }

    ::msgcat::mcset en {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Please press the 
	key that you want 
	to use as the 
	"Compose" key.
    }]

    ::msgcat::mcset en {Apply} {Apply}

    ::msgcat::mcset en {Cancel} {Cancel}








|
|
|







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
	the character from a map of all available Unicode code
	points.) To remove a sequence, select it in the listbox and
	press "Delete".

    }

    ::msgcat::mcset en {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Please press the
	key that you want
	to use as the
	"Compose" key.
    }]

    ::msgcat::mcset en {Apply} {Apply}

    ::msgcat::mcset en {Cancel} {Cancel}

Changes to tkabber-khim/khim/es.msg.

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
	dos veces) para seleccionar el carácter desde el mapa de los
	caracteres Unicode disponibles). Para borrar una secuencia,
	selecciónela de la lista y presione "Borrar".

    }

    ::msgcat::mcset es {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Por favor presione 
	la tecla que desee
	usar como tecla
	"Componer".
    }]

    ::msgcat::mcset es {Apply} {Aplicar}








|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
	dos veces) para seleccionar el carácter desde el mapa de los
	caracteres Unicode disponibles). Para borrar una secuencia,
	selecciónela de la lista y presione "Borrar".

    }

    ::msgcat::mcset es {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Por favor presione
	la tecla que desee
	usar como tecla
	"Componer".
    }]

    ::msgcat::mcset es {Apply} {Aplicar}

Changes to tkabber-khim/khim/khim.tcl.

76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
...
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
...
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
....
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
....
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
....
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
....
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
....
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
....
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
....
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
					# to hold the value of the spinbox
					# that selects the code page.

    variable CMapSelectedCharacter;	# Array whose keys are the path names
					# of KHIM character map dialogs and
					# whose values are the characters
					# currently selected in the dialogs
					
    variable CMapXL;			# Array whose keys are the path names
					# of KHIM character map dialogs and
					# whose values are the
					# X co-ordinates of the columns in
					# the character map

    variable CMapYL;			# Array whose keys are the path names
................................................................................
    button $w.lf1.f3.b2 -text [mc Delete] \
	-command [list ::khim::DeleteSequence $w]
    grid $w.lf1.f1 -row 0 -column 2 -sticky e -padx {20 0}
    grid $w.lf1.f2 -row 1 -column 2 -sticky e -padx {20 0}
    grid $w.lf1.f3.b1 $w.lf1.f3.b2 -padx 5 -sticky ew
    grid columnconfigure $w.lf1.f3 {0 1} -weight 1 -uniform A
    grid $w.lf1.f3 -row 3 -column 2 -sticky e -padx 20
    
    grid rowconfigure $w.lf1 2 -weight 1
    grid columnconfigure $w.lf1 3 -weight 1
    #::autoscroll::autoscroll $w.lf1.y
    frame $w.bf
    button $w.bf.ok -text [mc OK] -command [list ::khim::OK $w]
    button $w.bf.apply -text [mc Apply] -command [list ::khim::Apply $w]
    button $w.bf.cancel -text [mc Cancel] -command [list destroy $w]
................................................................................

proc khim::ShowSequences {w {inputSequence {}}} {
    variable inputMap

    # Remember the scroll position

    foreach {top bottom} [$w.lf1.lb yview] break
    
    # Clear the listbox

    $w.lf1.lb delete 0 end

    # Put all the items back in the listbox, in order.
    # Remember the index of any item that matches the current sequence.

................................................................................
# Side effects:
#	If the CMapInputCodePage variable contains an invalid code
#	page number, the background of the spinbox changes to red.
#	Otherwise, the background of the spinbox changes to white.
#       The values list of the spinbox is updated to be a list of
#	the decimal or hexadecimal code page numbers according to
#	whether the variable's string representation contains
#	'0x'. 
#
#----------------------------------------------------------------------

proc khim::CMapUpdateSpinbox {w args} {
    variable CMapInputCodePage
    variable CMapCodePage
    variable CMapSavedColors
................................................................................
    set ymax $y

    # Now that the characters on the grid are properly positioned, draw
    # the separator lines and configure the canvas size

    # We interpolate between foreground and background to draw the lines,
    # so that they appear "finer" visually than a 0-pixel line
    
    set linecolor \#
    foreach \
	c1 [winfo rgb $c $CMapForeground($w)] \
	c2 [winfo rgb $c $CMapBackground($w)] {
	    set c3 [expr {(3 * $c2 + $c1) / 4}]
	    append linecolor [format %04x $c3]
	}
................................................................................
proc khim::CMapSelectedCharacter {w x y} {
    variable CMapCodePage
    variable CMapXL
    variable CMapYL
    set row [BSearch $CMapYL($w) $y]
    set col [BSearch $CMapXL($w) $x]
    if { $row >= 0 && $row <= 15 && $col >= 0 && $col <= 15 } {
	return [format %c [expr { 0x100 * $CMapCodePage($w) 
				  + 0x10 * $row 
				  + $col }]]
    } else {
	return {}
    }
}

#----------------------------------------------------------------------
................................................................................
#	delta - Amount by which the canvas is to move.
#
# Return value:
#	None.
#
# Side effects:
#	Adjusts the selection by an appropriately scaled version of 'delta'
#	
#----------------------------------------------------------------------

proc khim::CMapWheel { c delta shifted } {
    # the delta will vary for OS X and X11/Win32, but we only check
    # + or - and move accordingly
    if {$delta > 0} {
	khim::CMapMove $c [expr {$shifted ? -1 : -16}]
................................................................................
    # eeew, tkwait... make this interaction modal
    tkwait window $map
    catch {
	destroy $map
    }
    focus $w
    return
}    

#----------------------------------------------------------------------
#
# khim::CMapCopypastedismiss --
#
#	Handles double-click in the KHIM character map.
#
................................................................................
    catch {unset CMapSavedColors($w)}
    catch {unset CMapForeground($w)}
    catch {unset CMapSelectForeground($w)}
    catch {unset CMapBackground($w)}
    catch {unset CMapSelectBackground($w)}
    return
}
    
# Bindings for the "khim::cmap" bindtag that is used in the character map
# dialog

bind khim::cmap <1> {khim::CMapSelect %W %x %y}
bind khim::cmap <Double-1> {khim::CMapCopypastedismiss %W %x %y}
bind khim::cmap <B1-Motion> {khim::CMapSelect %W %x %y}
bind khim::cmap <ButtonRelease-1> {khim::CMapActivate %W %x %y}
................................................................................
    bindtags .e {.e KHIM Entry . all}
    grid [button .test -text "Test" -command "khim::getOptions .khim"] \
	[button .bload -text "Load config" -command "testLoadConfig"] \
	[button .bsave -text "Save config" -command "testSaveConfig"] \
	[button .bhelp -text "Help" -command "khim::showHelp .help"] \
	[button .bquit -text "Quit" -command "exit"] \
	-padx 5 -pady 5
    
    proc testLoadConfig {} {
	source ~/.khimrc
    }
    proc testSaveConfig {} {
	set f [open ~/.khimrc w]
	puts $f [khim::getConfig]
	close $f
    }

}







|







 







|







 







|







 







|







 







|







 







|
|







 







|







 







|







 







|







 







|










76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
...
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
...
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
....
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
....
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
....
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
....
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
....
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
....
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
....
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
					# to hold the value of the spinbox
					# that selects the code page.

    variable CMapSelectedCharacter;	# Array whose keys are the path names
					# of KHIM character map dialogs and
					# whose values are the characters
					# currently selected in the dialogs

    variable CMapXL;			# Array whose keys are the path names
					# of KHIM character map dialogs and
					# whose values are the
					# X co-ordinates of the columns in
					# the character map

    variable CMapYL;			# Array whose keys are the path names
................................................................................
    button $w.lf1.f3.b2 -text [mc Delete] \
	-command [list ::khim::DeleteSequence $w]
    grid $w.lf1.f1 -row 0 -column 2 -sticky e -padx {20 0}
    grid $w.lf1.f2 -row 1 -column 2 -sticky e -padx {20 0}
    grid $w.lf1.f3.b1 $w.lf1.f3.b2 -padx 5 -sticky ew
    grid columnconfigure $w.lf1.f3 {0 1} -weight 1 -uniform A
    grid $w.lf1.f3 -row 3 -column 2 -sticky e -padx 20

    grid rowconfigure $w.lf1 2 -weight 1
    grid columnconfigure $w.lf1 3 -weight 1
    #::autoscroll::autoscroll $w.lf1.y
    frame $w.bf
    button $w.bf.ok -text [mc OK] -command [list ::khim::OK $w]
    button $w.bf.apply -text [mc Apply] -command [list ::khim::Apply $w]
    button $w.bf.cancel -text [mc Cancel] -command [list destroy $w]
................................................................................

proc khim::ShowSequences {w {inputSequence {}}} {
    variable inputMap

    # Remember the scroll position

    foreach {top bottom} [$w.lf1.lb yview] break

    # Clear the listbox

    $w.lf1.lb delete 0 end

    # Put all the items back in the listbox, in order.
    # Remember the index of any item that matches the current sequence.

................................................................................
# Side effects:
#	If the CMapInputCodePage variable contains an invalid code
#	page number, the background of the spinbox changes to red.
#	Otherwise, the background of the spinbox changes to white.
#       The values list of the spinbox is updated to be a list of
#	the decimal or hexadecimal code page numbers according to
#	whether the variable's string representation contains
#	'0x'.
#
#----------------------------------------------------------------------

proc khim::CMapUpdateSpinbox {w args} {
    variable CMapInputCodePage
    variable CMapCodePage
    variable CMapSavedColors
................................................................................
    set ymax $y

    # Now that the characters on the grid are properly positioned, draw
    # the separator lines and configure the canvas size

    # We interpolate between foreground and background to draw the lines,
    # so that they appear "finer" visually than a 0-pixel line

    set linecolor \#
    foreach \
	c1 [winfo rgb $c $CMapForeground($w)] \
	c2 [winfo rgb $c $CMapBackground($w)] {
	    set c3 [expr {(3 * $c2 + $c1) / 4}]
	    append linecolor [format %04x $c3]
	}
................................................................................
proc khim::CMapSelectedCharacter {w x y} {
    variable CMapCodePage
    variable CMapXL
    variable CMapYL
    set row [BSearch $CMapYL($w) $y]
    set col [BSearch $CMapXL($w) $x]
    if { $row >= 0 && $row <= 15 && $col >= 0 && $col <= 15 } {
	return [format %c [expr { 0x100 * $CMapCodePage($w)
				  + 0x10 * $row
				  + $col }]]
    } else {
	return {}
    }
}

#----------------------------------------------------------------------
................................................................................
#	delta - Amount by which the canvas is to move.
#
# Return value:
#	None.
#
# Side effects:
#	Adjusts the selection by an appropriately scaled version of 'delta'
#
#----------------------------------------------------------------------

proc khim::CMapWheel { c delta shifted } {
    # the delta will vary for OS X and X11/Win32, but we only check
    # + or - and move accordingly
    if {$delta > 0} {
	khim::CMapMove $c [expr {$shifted ? -1 : -16}]
................................................................................
    # eeew, tkwait... make this interaction modal
    tkwait window $map
    catch {
	destroy $map
    }
    focus $w
    return
}

#----------------------------------------------------------------------
#
# khim::CMapCopypastedismiss --
#
#	Handles double-click in the KHIM character map.
#
................................................................................
    catch {unset CMapSavedColors($w)}
    catch {unset CMapForeground($w)}
    catch {unset CMapSelectForeground($w)}
    catch {unset CMapBackground($w)}
    catch {unset CMapSelectBackground($w)}
    return
}

# Bindings for the "khim::cmap" bindtag that is used in the character map
# dialog

bind khim::cmap <1> {khim::CMapSelect %W %x %y}
bind khim::cmap <Double-1> {khim::CMapCopypastedismiss %W %x %y}
bind khim::cmap <B1-Motion> {khim::CMapSelect %W %x %y}
bind khim::cmap <ButtonRelease-1> {khim::CMapActivate %W %x %y}
................................................................................
    bindtags .e {.e KHIM Entry . all}
    grid [button .test -text "Test" -command "khim::getOptions .khim"] \
	[button .bload -text "Load config" -command "testLoadConfig"] \
	[button .bsave -text "Save config" -command "testSaveConfig"] \
	[button .bhelp -text "Help" -command "khim::showHelp .help"] \
	[button .bquit -text "Quit" -command "exit"] \
	-padx 5 -pady 5

    proc testLoadConfig {} {
	source ~/.khimrc
    }
    proc testSaveConfig {} {
	set f [open ~/.khimrc w]
	puts $f [khim::getConfig]
	close $f
    }

}

Changes to tkabber-khim/khim/pl.msg.

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
	pozwalające na bezpośrednie wstawienie wybranego znaku z tablicy
	symboli Unicode. W oknie tablicy można nawigować pomiędzy
	znakami używając klawiszy kursorów lub za pomocą myszy a wybór
	znaku następuje przez dwukrotne kliknięcie, naciśnięcie spacji
	lub naciśnięcie klawisza Enter (Return).

	Aby zdefiniować nową sekwencję do użycia z klawiszem sterującym
	należy uruchomić ustawienia KHIM, wprowadzić dwa znaki w polu 
	"Sekwencja znaków" i znak jaki chcemy uzyskać w polu "Wynik"
	oraz nacisnąć przycisk "Zmień". (Można także skopiować i
	wkleić znak z innej aplikacji lub użyć przycisku "Tablica
	Unicode..." (także przez dwukrotne naciśnięcie klawisza
	sterującego) do wyboru znaku z tablicy wszystkich dostępnych
	kodów Unicode.) Aby usunąć sekwencję znaków, należy wybrać ją z
	listy i nacisnąć "Usuń".

    }

    ::msgcat::mcset pl {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Proszę nacisnąć klawisz 
	który ma być używany 
	jako sterujący.
    }]

    ::msgcat::mcset pl {Apply} {Zastosuj}

    ::msgcat::mcset pl {Cancel} {Anuluj}








|











|
|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
	pozwalające na bezpośrednie wstawienie wybranego znaku z tablicy
	symboli Unicode. W oknie tablicy można nawigować pomiędzy
	znakami używając klawiszy kursorów lub za pomocą myszy a wybór
	znaku następuje przez dwukrotne kliknięcie, naciśnięcie spacji
	lub naciśnięcie klawisza Enter (Return).

	Aby zdefiniować nową sekwencję do użycia z klawiszem sterującym
	należy uruchomić ustawienia KHIM, wprowadzić dwa znaki w polu
	"Sekwencja znaków" i znak jaki chcemy uzyskać w polu "Wynik"
	oraz nacisnąć przycisk "Zmień". (Można także skopiować i
	wkleić znak z innej aplikacji lub użyć przycisku "Tablica
	Unicode..." (także przez dwukrotne naciśnięcie klawisza
	sterującego) do wyboru znaku z tablicy wszystkich dostępnych
	kodów Unicode.) Aby usunąć sekwencję znaków, należy wybrać ją z
	listy i nacisnąć "Usuń".

    }

    ::msgcat::mcset pl {SELECT COMPOSE KEY} [string map [list \n\t \n] {
	Proszę nacisnąć klawisz
	który ma być używany
	jako sterujący.
    }]

    ::msgcat::mcset pl {Apply} {Zastosuj}

    ::msgcat::mcset pl {Cancel} {Anuluj}

Changes to tkabber-khim/tklib_licence.terms.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal 
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license. 







|







|
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.

Changes to traffic/msgs/ru.msg.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
::msgcat::mcset ru "Traffic statistics" "Статистика по трафику"
::msgcat::mcset ru "Traffic" "Трафик"
::msgcat::mcset ru "Refresh" "Обновить"
::msgcat::mcset ru "Show XML" "XML"
::msgcat::mcset ru "Save" "Сохранить"
::msgcat::mcset ru "Reset" "Сбросить"
::msgcat::mcset ru "Timer:" "Таймер:"
::msgcat::mcset ru "JID" 
::msgcat::mcset ru "Total" "Всего"
::msgcat::mcset ru "Are you sure you want to reset counters?" \
        "Вы уверены, что хотите сбросить счетчики?"
::msgcat::mcset ru "Traffic Counter plugin options." \
        "Настройки расширения слежения за трафиком."
::msgcat::mcset ru "Whether the Traffic Counter plugin is loaded." \
        "Загружено ли расширение слежения за трафиком."

# vim:ft=tcl:ts=8:sw=4:sts=4:et







|









21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
::msgcat::mcset ru "Traffic statistics" "Статистика по трафику"
::msgcat::mcset ru "Traffic" "Трафик"
::msgcat::mcset ru "Refresh" "Обновить"
::msgcat::mcset ru "Show XML" "XML"
::msgcat::mcset ru "Save" "Сохранить"
::msgcat::mcset ru "Reset" "Сбросить"
::msgcat::mcset ru "Timer:" "Таймер:"
::msgcat::mcset ru "JID"
::msgcat::mcset ru "Total" "Всего"
::msgcat::mcset ru "Are you sure you want to reset counters?" \
        "Вы уверены, что хотите сбросить счетчики?"
::msgcat::mcset ru "Traffic Counter plugin options." \
        "Настройки расширения слежения за трафиком."
::msgcat::mcset ru "Whether the Traffic Counter plugin is loaded." \
        "Загружено ли расширение слежения за трафиком."

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to traffic/msgs/uk.msg.

23
24
25
26
27
28
29
30
31
32
33
34
35
::msgcat::mcset uk "Traffic statistics" "Статистика по трафіку"
::msgcat::mcset uk "Traffic" "Трафік"
::msgcat::mcset uk "Refresh" "Оновити"
::msgcat::mcset uk "Show XML" "XML"
::msgcat::mcset uk "Save" "Зберегти"
::msgcat::mcset uk "Reset" "Скинути"
::msgcat::mcset uk "Timer:" "Таймер:"
::msgcat::mcset uk "JID" 
::msgcat::mcset uk "Total" "Всього"
::msgcat::mcset uk "Are you sure you want to reset counters?" \
        "Ви впевнені, що хочете скинути лічильники?"

# vim:ft=tcl:ts=8:sw=4:sts=4:et







|





23
24
25
26
27
28
29
30
31
32
33
34
35
::msgcat::mcset uk "Traffic statistics" "Статистика по трафіку"
::msgcat::mcset uk "Traffic" "Трафік"
::msgcat::mcset uk "Refresh" "Оновити"
::msgcat::mcset uk "Show XML" "XML"
::msgcat::mcset uk "Save" "Зберегти"
::msgcat::mcset uk "Reset" "Скинути"
::msgcat::mcset uk "Timer:" "Таймер:"
::msgcat::mcset uk "JID"
::msgcat::mcset uk "Total" "Всього"
::msgcat::mcset uk "Are you sure you want to reset counters?" \
        "Ви впевнені, що хочете скинути лічильники?"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to whiteboard/svgrender.tcl.

673
674
675
676
677
678
679
680
681
682
683
684
685
686
687

    return [Tapply $matrix $x $y]
}

proc svg::Tcompose {matrix1 matrix2} {
    Debug 2 [list $matrix1] [list $matrix2]

    
    foreach {a1 b1 c1 d1 e1 f1} $matrix1 break
    foreach {a2 b2 c2 d2 e2 f2} $matrix2 break

    set a [expr {$a1*$a2 + $c1*$b2}]
    set b [expr {$b1*$a2 + $d1*$b2}]
    set c [expr {$a1*$c2 + $c1*$d2}]
    set d [expr {$b1*$c2 + $d1*$d2}]







<







673
674
675
676
677
678
679

680
681
682
683
684
685
686

    return [Tapply $matrix $x $y]
}

proc svg::Tcompose {matrix1 matrix2} {
    Debug 2 [list $matrix1] [list $matrix2]


    foreach {a1 b1 c1 d1 e1 f1} $matrix1 break
    foreach {a2 b2 c2 d2 e2 f2} $matrix2 break

    set a [expr {$a1*$a2 + $c1*$b2}]
    set b [expr {$b1*$a2 + $d1*$b2}]
    set c [expr {$a1*$c2 + $c1*$d2}]
    set d [expr {$b1*$c2 + $d1*$d2}]

Changes to whiteboard/whiteboard.tcl.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
....
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
                                      $c $chatid]]

    set tbpolyline [Radiobutton $w.tb.line -text [::msgcat::mc "PolyLine"] \
                        -variable [namespace current]::tool($chatid) \
                        -value polyline \
                        -command [list [namespace current]::line_bind \
                                       $c $chatid]]
    
    set tbrectangle \
        [Radiobutton $w.tb.rectangle -text [::msgcat::mc "Rectangle"] \
                        -variable [namespace current]::tool($chatid) \
                        -value rectangle \
                        -command [list [namespace current]::rectangle_bind \
                                      $c $chatid]]

................................................................................
        4749 { set type "image/gif" }
        8950 { set type "image/png" }
        default { set type "image" }
    }

    set cid [::xmpp::bob::cid $binval]
    set data [::xmpp::bob::data $type $binval -maxage 0]
    
    set id [create_id]
    set attrs [list id $id x $image_info(x) y $image_info(y) \
                    type $type http://www.w3.org/1999/xlink:href cid:$cid]

    set tag [::xmpp::xml::create image -attrs $attrs]

    if {![chat::is_groupchat $chatid]} {







|







 







|







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
....
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
                                      $c $chatid]]

    set tbpolyline [Radiobutton $w.tb.line -text [::msgcat::mc "PolyLine"] \
                        -variable [namespace current]::tool($chatid) \
                        -value polyline \
                        -command [list [namespace current]::line_bind \
                                       $c $chatid]]

    set tbrectangle \
        [Radiobutton $w.tb.rectangle -text [::msgcat::mc "Rectangle"] \
                        -variable [namespace current]::tool($chatid) \
                        -value rectangle \
                        -command [list [namespace current]::rectangle_bind \
                                      $c $chatid]]

................................................................................
        4749 { set type "image/gif" }
        8950 { set type "image/png" }
        default { set type "image" }
    }

    set cid [::xmpp::bob::cid $binval]
    set data [::xmpp::bob::data $type $binval -maxage 0]

    set id [create_id]
    set attrs [list id $id x $image_info(x) y $image_info(y) \
                    type $type http://www.w3.org/1999/xlink:href cid:$cid]

    set tag [::xmpp::xml::create image -attrs $attrs]

    if {![chat::is_groupchat $chatid]} {