Changeset 889
- Timestamp:
- 02/17/08 13:59:45 (11 months ago)
- Files:
-
- 1 modified
-
trunk/modules/friendship.tcl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/friendship.tcl
r419 r889 23 23 ############################################################################### 24 24 25 # get a nick's friendship rating, or 50 if we couldn't find them (or if they don't 26 # have a friendship yet 25 27 proc getFriendship { nick } { 26 if {![validuser $nick]} {27 set handle [nick2hand $nick]28 if {($handle == "*") || ($handle == "")} {29 bMotion_putloglev 1 * "bMotion: couldn't find a handle for $nick to get friendship."30 return 5031 }32 } else {33 set handle $nick34 }28 if {![validuser $nick]} { 29 set handle [nick2hand $nick] 30 if {($handle == "*") || ($handle == "")} { 31 bMotion_putloglev 1 * "friendship: couldn't find a handle for $nick to get friendship." 32 return 50 33 } 34 } else { 35 set handle $nick 36 } 35 37 36 set friendship 5038 set friendship 50 37 39 38 if {$handle != "*"} {39 set friendship [getuser $handle XTRA friend]40 if {$friendship == ""} {41 setFriendship $nick 50 42 set friendship 5043 }44 }45 return $friendship40 if {$handle != "*"} { 41 set friendship [getuser $handle XTRA friend] 42 if {$friendship == ""} { 43 setFriendship $nick 50 44 set friendship 50 45 } 46 } 47 return $friendship 46 48 } 47 49 50 # get a handle's friendship, or 50 if unknown 48 51 proc getFriendshipHandle { handle } { 49 set friendship 5052 set friendship 50 50 53 51 set friendship [getuser $handle XTRA friend]52 if {$friendship == ""} {53 setFriendship $handle 50 54 set friendship 5055 }56 return $friendship54 set friendship [getuser $handle XTRA friend] 55 if {$friendship == ""} { 56 setFriendship $handle 50 57 set friendship 50 58 } 59 return $friendship 57 60 } 58 61 62 # set friendship on a handle 59 63 proc setFriendshipHandle { handle friendship } { 60 if {$friendship > 100} {61 bMotion_putloglev 2 * "bMotion: friendship for $nick went over 100, capping back to 90"62 set friendship 9063 }64 if {$friendship > 100} { 65 bMotion_putloglev 2 * "friendship: friendship for $nick went over 100, capping back to 90" 66 set friendship 90 67 } 64 68 65 if {$friendship < 1} {66 bMotion_putloglev 2 * "bMotion: friendship for $nick went under 1, capping back to 10"67 set friendship 1068 }69 if {$friendship < 1} { 70 bMotion_putloglev 2 * "friendship: friendship for $nick went under 1, capping back to 10" 71 set friendship 10 72 } 69 73 70 setuser $handle XTRA friend $friendship74 setuser $handle XTRA friend $friendship 71 75 } 72 76 77 # set friendship on a nick, if we can find a matching handle for them 78 proc setFriendship { nick friendship } { 79 bMotion_putloglev 4 * "friendship: setFriendship: nick = $nick, friendship = $friendship" 73 80 74 proc setFriendship { nick friendship } { 75 bMotion_putloglev 4 * "setFriendship: nick = $nick, friendship = $friendship" 81 set handle [nick2hand $nick] 76 82 77 set handle [nick2hand $nick] 78 79 if {($handle == "*") || ($handle == "")} { 80 #perhaps it was already a handle 81 if {![validuser $nick]} { 82 bMotion_putloglev 1 * "bMotion: couldn't find a handle for $nick to set friendship." 83 return 50 84 } 85 set handle $nick 86 } 83 if {($handle == "*") || ($handle == "")} { 84 #perhaps it was already a handle 85 if {![validuser $nick]} { 86 bMotion_putloglev 1 * "friendship: couldn't find a handle for $nick to set friendship." 87 return 50 88 } 89 set handle $nick 90 } 87 91 88 92 89 if {$friendship > 100} {90 bMotion_putloglev 2 * "bMotion: friendship for $nick went over 100, capping back to 9"91 set friendship 9992 }93 if {$friendship > 100} { 94 bMotion_putloglev 2 * "friendship: friendship for $nick went over 100, capping back to 9" 95 set friendship 99 96 } 93 97 94 if {$friendship < 0} {95 bMotion_putloglev 2 * "bMotion: friendship for $nick went under 0, capping back to 1"96 set friendship 197 }98 if {$friendship < 0} { 99 bMotion_putloglev 2 * "friendship: friendship for $nick went under 0, capping back to 1" 100 set friendship 1 101 } 98 102 99 103 100 catch {101 setuser $handle XTRA friend $friendship102 }104 catch { 105 setuser $handle XTRA friend $friendship 106 } 103 107 } 104 108 109 # drift someone's friendship by a given amount 105 110 proc driftFriendship { nick drift } { 106 bMotion_putloglev 4 * "driftFriendship: nick = $nick, drift = $drift"107 set handle [nick2hand $nick]108 if {($handle == "*") || ($handle == "")} {109 bMotion_putloglev 1 * "bMotion: couldn't find a handle for $nick to drift friendship."110 return 50111 }111 bMotion_putloglev 4 * "friendship: driftFriendship: nick = $nick, drift = $drift" 112 set handle [nick2hand $nick] 113 if {($handle == "*") || ($handle == "")} { 114 bMotion_putloglev 1 * "friendship: couldn't find a handle for $nick to drift friendship." 115 return 50 116 } 112 117 113 set friendship [getFriendship $handle]114 incr friendship $drift115 setFriendship $nick $friendship116 bMotion_putloglev 2 * "bMotion: drifting friendship for $nick by $drift, now $friendship"117 return $friendship118 set friendship [getFriendship $handle] 119 incr friendship $drift 120 setFriendship $nick $friendship 121 bMotion_putloglev 2 * "friendship: drifting friendship for $nick by $drift, now $friendship" 122 return $friendship 118 123 } 119 124 125 # get all users with friendship values 120 126 proc getFriendsList { } { 121 set users [userlist]122 set r ""123 set best(name) ""124 set best(val) 0125 set worst(name) ""126 set worst(val) 100127 foreach user $users {128 set f [getuser $user XTRA friend]129 if {$f != ""} {130 append r "$user:$f "131 }132 if {$f > $best(val)} {133 set best(val) $f134 set best(name) $user135 }136 if {($f < $worst(val)) && ($f > 0)} {137 set worst(val) $f138 set worst(name) $user139 }140 }141 set r "Best friend: $best(name), worst friend: $worst(name). $r"142 return $r127 set users [userlist] 128 set r "" 129 set best(name) "" 130 set best(val) 0 131 set worst(name) "" 132 set worst(val) 100 133 foreach user $users { 134 set f [getuser $user XTRA friend] 135 if {$f != ""} { 136 append r "$user:$f " 137 } 138 if {$f > $best(val)} { 139 set best(val) $f 140 set best(name) $user 141 } 142 if {($f < $worst(val)) && ($f > 0)} { 143 set worst(val) $f 144 set worst(name) $user 145 } 146 } 147 set r "Best friend: $best(name), worst friend: $worst(name). $r" 148 return $r 143 149 } 144 150 151 # check if someone is liked enough to be a friend 145 152 proc bMotionIsFriend { nick } { 146 set friendship [getFriendship $nick]147 bMotion_putloglev 2 * "bMotion: friendship for $nick is $friendship"148 if {$friendship < 35} {149 return 0150 }151 return 1152 } 153 set friendship [getFriendship $nick] 154 bMotion_putloglev 2 * "friendship: friendship for $nick is $friendship" 155 if {$friendship < 35} { 156 return 0 157 } 158 return 1 159 } 153 160 161 # tick everyone's friendship back a bit 154 162 proc bMotion_friendship_tick { min hr a b c } { 155 bMotion_putloglev 3 * "bMotion_friendship_tick"163 bMotion_putloglev 3 * "friendship: bMotion_friendship_tick" 156 164 157 bMotion_putloglev d * "friendship tick"165 bMotion_putloglev d * "friendship tick" 158 166 159 set users [userlist]160 foreach user $users {161 set f [getuser $user XTRA friend]162 if {$f != ""} {163 bMotion_putloglev 4 * "$user is $f"164 if {$f > 60} {165 setuser $user XTRA friend [expr $f - 1]166 }167 set users [userlist] 168 foreach user $users { 169 set f [getuser $user XTRA friend] 170 if {$f != ""} { 171 bMotion_putloglev 4 * "friendship: $user is $f" 172 if {$f > 60} { 173 setuser $user XTRA friend [expr $f - 1] 174 } 167 175 168 if {$f < 40} {169 setuser $user XTRA friend [expr $f + 1]170 }171 }172 }176 if {$f < 40} { 177 setuser $user XTRA friend [expr $f + 1] 178 } 179 } 180 } 173 181 } 174 182 175 183 bind time - "00 * * * *" bMotion_friendship_tick 176 184 177 bMotion_putloglev d * " bMotion: friendship module loaded"185 bMotion_putloglev d * "friendship: friendship module loaded"
