New karma delay model, and the 'say' command.
authorpdbogen <pdbogen@088b83a4-0077-4247-935c-42ec02c2848b>
Mon, 30 Mar 2009 18:16:23 +0000 (18:16 +0000)
committerpdbogen <pdbogen@088b83a4-0077-4247-935c-42ec02c2848b>
Mon, 30 Mar 2009 18:16:23 +0000 (18:16 +0000)
git-svn-id: https://www.cernu.us/~pdbogen/svn/destult2@88 088b83a4-0077-4247-935c-42ec02c2848b

cmdaccess.yaml
commands.yaml

index 38b0a79..bc440ba 100644 (file)
@@ -14,6 +14,7 @@ IGNORE: 2
 JOIN: 1
 KARMACLEAN: 2
 KARMASET: 2
+KARMAUP: 0
 MEMOLIST: 2
 MEMOMOVE: 2
 MEMOWIPE: 2
index a31b1c2..97e3aa0 100644 (file)
@@ -1692,13 +1692,14 @@ KARMADOWN: |-
       }
     }
     $heap->{ "karmalast" } = {} unless exists( $heap->{ "karmalast" } );
-    return if $heap->{ "karmalast" }->{ uc( '-'.$what ) } > time-60;
-    $heap->{ "karmalast" }->{ uc( '-'.$what ) } = time;
-    if( !exists( $heap->{ "karma" }->{ uc( $what ) } ) ) {
-      $heap->{ "karma" }->{ uc( $what ) } = -1;
-    } else {
-      $heap->{ "karma" }->{ uc( $what ) }--;
+    $heap->{ "karma" }->{ uc( $what ) } = 0 unless exists( $heap->{ "karma" }->{ uc( $what ) } );
+    my $delay = 60 * abs( $heap->{ "karma" }->{ uc( $what ) } );
+    if( $heap->{ "karmalast" }->{ uc( '-'.$what ) } > time-$delay ) {
+      print( "KARMA: <$who> $what-- IGNORED\n" );
+      return;
     }
+    $heap->{ "karmalast" }->{ uc( '-'.$what ) } = time;
+    $heap->{ "karma" }->{ uc( $what ) }--;
     DumpFile( "karma.yaml", $heap->{ 'karma' } );
     print( "KARMA: <$who> $what--\n" );
   }
@@ -1714,13 +1715,14 @@ KARMAUP: |-
       }
     }
     $heap->{ "karmalast" } = {} unless exists( $heap->{ "karmalast" } );
-    return if $heap->{ "karmalast" }->{ uc( '+'.$what ) } > time-60;
-    $heap->{ "karmalast" }->{ uc( '+'.$what ) } = time;
-    if( !exists( $heap->{ "karma" }->{ uc( $what ) } ) ) {
-      $heap->{ "karma" }->{ uc( $what ) } = 1;
-    } else {
-      $heap->{ "karma" }->{ uc( $what ) }++;
+    $heap->{ "karma" }->{ uc( $what ) } = 0 unless exists( $heap->{ "karma" }->{ uc( $what ) } );
+    my $delay = 60 * abs( $heap->{ "karma" }->{ uc( $what ) } );
+    if( $heap->{ "karmalast" }->{ uc( '+'.$what ) } > time-$delay ) {
+      print( "KARMA: <$who> $what++ IGNORED\n" );
+      return;
     }
+    $heap->{ "karmalast" }->{ uc( '+'.$what ) } = time;
+    $heap->{ "karma" }->{ uc( $what ) }++;
     DumpFile( "karma.yaml", $heap->{ 'karma' } );
     print( "KARMA: <$who> $what++\n" );
   }
@@ -1826,6 +1828,12 @@ KARMA: |-
     }
   }
 
+SAY: |-
+  sub {
+    my( $kernel, $heap, $who, $what, $src, $dest, $replypath ) = @_;
+    $kernel->post( $src, $replypath, $what, $dest );
+  }
+
 TITLE: |-
   sub {
     use POE::Component::IRC::Common qw( :ALL );