source: irpg/trunk/bot/ChangeLog.txt@ 1444

Last change on this file since 1444 was 1444, checked in by Daimonos Tereutes, 19 years ago

import initial

  • Property svn:eol-style set to LF
File size: 37.3 KB
Line 
1This is the changelog for the Idle RPG bot by jotun, jotun@idlerpg.net,
2http://idlerpg.net. Entries are written backwards. That is, items at the bottom
3of the file were added first, and each subsequent addition is placed on a line
4before it. Don't ask me why I do it that way: I do not know.
5
6Thanks for your interest in the Idle RPG! Feel free to contact me with ideas and
7comments, or post them in the forum on the website for public view.
8
9--------------------------------------------------------------------------------
10 v3.1.2+johm+chschu: released -/-/04
11--------------------------------------------------------------------------------
12 - setup !idle@IRCnet [johm]
13 - added ipv6 support [johm]
14 - added auto-login (after netsplit, ping timeout ...) if you haven't
15 changed your nick!user@host [johm]
16 * made auto-login optional [johm]
17 - fixed lvl60+ penalty bug [johm]
18 - fixed possible $rpreport timer bug [johm+chschu]
19 - team battles are now fought out around random points on the map [chschu]
20 - added wars of northern half against southern half of the map [chschu]
21 * made wars quadrant-based [chschu]
22 - dropped items stay on the map, lose 1 level every 30 minutes and are
23 found if somebody enters the same spot [chschu]
24 * changed downgrading time to 1 day, limited downgrading of uniques [chschu]
25 * only drop items of level > 0, downgrade uniques to non-uniques
26 below their minimum level [chschu]
27 * downgrading now depends on item level (higher => slower) [chschu]
28 - added reload of quest on startup [chschu]
29 - fixed bug with int() applied on non-numeric strings (item levels) [chschu]
30 - fixed config bug on empty value [chschu]
31 - fixed warning on undefined username in ha() [chschu]
32 - fixed bug breaking userhost on nick change [chschu]
33 - fixed voice on login bug (less nicks than flags) [chschu]
34
35
36--------------------------------------------------------------------------------
37 v3.1.2: released 6/6/04
38--------------------------------------------------------------------------------
39 - applied a user-submitted patch to fix a sprintf() bug (anonymous @ forum)
40 - quest() now calls writequestfile() when it completes
41 - loaddb() now calls backup() before it starts
42
43
44--------------------------------------------------------------------------------
45 v3.1.1: released 6/3/04
46--------------------------------------------------------------------------------
47 - fixed 2 typos having to deal with die() messages when reading the config
48 file (meij, et al)
49 - quest() now calls writequestfile() when it completes so that it is
50 immediately available
51 - loaddb() now calls backup() before it starts so you always have an
52 up-to-date backup if your bot mangles your db
53 - readconfig() now strips out \r and \n (meij, kylemson, et al)
54
55
56--------------------------------------------------------------------------------
57 v3.1.0: released 6/2/04
58--------------------------------------------------------------------------------
59 - added a config file so you don't have to re-setup configuration options
60 everytime you upgrade. added a function readconfig() to read this file or
61 die() if it cannot be found
62 - SIGHUP will now call readconfig()
63 - added a DELADMIN command to remove admin status from a username. format:
64 /msg bot DELADMIN <account>
65 owner account cannot be DELADMINed. DELADMIN may be limited to owner account
66 depending on configuration (TGS)
67 - added an 'owner' account option. owner cannot be DELADMINed, among other
68 things
69 - added an 'owneraddonly' option. if set, only owner account can MKADMIN
70 - added an 'ownerdelonly' option. if set, only owner account can DELADMIN
71 - renamed disablepeval to ownerpevalonly. if set, only owner account can PEVAL
72 - added missing command line options for %opts options
73 - fq() will limit itself to either 1 message or <= 768 bytes output per call,
74 regardless of $freemessages
75 - added an option to turn off the sending of the list of users automatically
76 logged back in on a bot restart, even if the list < 1 k
77 - added an option to limit the penalty a single event can incur, 'limitpen'.
78 set to 0 to disable the feature, otherwise is taken to be an integral number
79 of seconds
80 - Win32 no longer tries to turn terminal echo on/off via "stty"
81 - tarball now unpacks files to their own directory instead of .
82 - removed unused $v, $debug variables
83 - auto-login would not voice users that it logged in even if voiceonlogin was
84 set, fixed (wogi, et al)
85 - fixed a comment having to do with auto login
86 - $rpreport should not have been adjusted by $curtime, but by
87 $opts{self_clock} to keep it reliable. this may have caused some loss of
88 data as the bot neglected to properly backup its database. so sorry! should
89 now be fixed (many)
90 - item godsend was removing 10% of item's value instead of adding it. another
91 copy/paste error. sorry! (Jim Dew)
92 - fixed a bug that resulted in users that caused quests to fail not being
93 penalized, as they were set as 'offline' before the bot had a chance to
94 penalize them (Jim Dew)
95 - added options to define the size of your IRPG grid, 'mapx' and 'mapy' (Rick)
96 - team battle now shows roll/sum like other battles (anonymous @ forum)
97 - added REHASH command to call readconfig()
98 - added an option to define the number of modes per line to use when voicing
99 users after an auto login. this variable may be overriden by the server's
100 directive (Rick)
101
102
103--------------------------------------------------------------------------------
104 v3.0.2: released 5/30/04
105--------------------------------------------------------------------------------
106 - calls evilness() and goodness() should have been checking against the number
107 of online evil users and good users respectively, not the total number of
108 online users (SickMind)
109 - changed max length of auto-login text to 1k before bot will refuse to send
110 - fixed a problem with the bot penalizing the kicker instead of the kickee
111 when someone was kicked (Preston, anonymous, Soc @ idlerpg.net forum)
112
113
114--------------------------------------------------------------------------------
115 v3.0.1: released 5/29/04
116--------------------------------------------------------------------------------
117 - forgot to add some sort of mechanism for setting up admins for new bots.
118 whoops. bot will now prompt for an owner's account details if it cannot find
119 $opts{dbfile} (Secret, anonymous @ idlerpg.net forum)
120 - fixed a typo in the ChangeLog ;)
121 - Vayanla noted that there was STILL a time discrepancy for very large games
122 (or very slow computers). many thanks to him for his help! this is now
123 fixed
124
125--------------------------------------------------------------------------------
126 v3.0: released 5/29/04
127--------------------------------------------------------------------------------
128 - fixed a bug causing RESTART not to work unless the bot's filename happened
129 to be the same as its nickname
130 - item modifiers as well as time modifiers are now stored in the modifiers
131 file. changed name of tlog sub to clog (time -> character)
132 - changed database write to every minute instead of every $opts{self_clock}.
133 to lower the chance of lost stats, the bot calls writedb() if you request a
134 DIE, JUMP, or RESTART. this should cut down on much of the cpu usage
135 - added a function writedb() which writes out the bot's db from memory so it
136 can be done outside of rpcheck()
137 - the team battle code would choose 6 random users to participate in a team
138 battle, but would not then randomize these users as far as teams go. that
139 is, if a username generally appeared at the end of a keys(%rps) list, and
140 made it into the list of 6 random users, that user would always defend
141 instead of attacking, as he would be at the end of the list. the list of 6
142 users is now shuffled using a Fisher-Yates shuffle, code from The Perl
143 Cookbook (by O'Reilly. a really great read!) (Peter Beentje)
144 - added a "user alignment" feature. users may align with good, neutral, or
145 evil. 'good' users have a 10% boost to their item sum for battles, and a
146 1/12 chance each day that they, along with a 'good' friend, will have the
147 light of their god shine upon them, accelerating them 5-12% toward their
148 next level. 'evil' users have a 10% detriment to their item sum for battles
149 (ever forsaken in their time of most need...), but have a 1/8 chance each
150 day that they will either a) attempt to steal an item from a 'good' user
151 (whom they cannot help but hate) or b) be forsaken (for 1-5% of their TTL)
152 by their evil god. after all, we all know that crime doesn't pay. also,
153 'good' users have only a 1/50 chance of landing a critical strike when
154 battling, while 'evil' users (who always fight dirty) have a 1/20 chance.
155 neutral users haven't had anything changed, and all users start off as
156 neutral. to change your alignment:
157 /msg bot ALIGN <good|neutral|evil>
158 I haven't run the numbers to see which alignment it is better to follow, so
159 the stats for this feature may change in the future (FishyTowel @
160 idlerpg.net forum)
161 - added new item, Juliet's Glorious Ring of Sparkliness, item level 50-74,
162 required user level 25+, chance 1/40, tag 'h'
163 - rather than error when PEVAL produces > 15 lines of output, PEVAL will now
164 queue its text if lines of output created >= 4 or size of text > 1k
165 - LOGIN command now responds via notice rather than privmsg
166 - added "named items," meaning that unique items have a letter appended to
167 them, saying which unique item they are. Mattt's Omniscience Grand Crown is
168 "a," Res0's Protectorate Plate Mail is "b," Dwyn's Storm Magic Amulet is
169 "c," Jotun's Fury Colossal Sword is "d," Drdink's Cane of Blind Rage is "e,"
170 Mrquick's Magical Boots of Swiftness is "f," and Jeff's Cluehammer of Doom
171 is "g"
172 - changed split() on incoming data to split on /\s/ instead of / /; users
173 could otherwise register usernames or classes containing tabs, which would
174 cause the bot to die when reading the (tab-delimited) database (chris young)
175 - changed the SIGHUP handler from '0' to 'sub { };'. should eliminate the
176 "Signal handler '0' not defined" warning (too many to list)
177 - added an item calamity and an item godsend. if you are calamitized, you have
178 a 10% chance of one of your amulet, charm, weapon, tunic, set of leggings,
179 or shield losing 10% of its item value. if you are godsent, you have a 10%
180 chance that one of the above items will gain 10% of its item value (carl
181 wyles @ idlerpg.net forum)
182 - %botnick% in $opts{botopcmd} will be evaluated to the bot's current nickname
183 to avoid opping another, more evil user when the bot's nickname is in use
184 - added an option to give non-admin users limited access to the INFO command.
185 when enabled, non-admin users can use the INFO command to learn to which
186 server the bot is connected and the nicknames of online admins (mike @
187 idlerpg.net forum)
188 - added an option to disallow the registration of usernames and classes
189 containing "non-printable" characters. it's a good idea to leave this option
190 on, as I have had problems in the past with using binary hash keys (TGS)
191 - whenever a non-admin players walks over an admin player on the map, he/she
192 has a 1% chance to bow ;) (mike stewart)
193 - changed sending of WHO and $opts{botopcmd} from numeric 001 to receipt of
194 bot's JOIN
195 - added an option to disable the PEVAL command for users that want to have
196 less than trustworthy admins ;^) (TGS)
197 - Run noted that (undernet?) servers allow you a certain number of "free"
198 messages before output should be limited to 1 message / 2 seconds. fq() now
199 sends as many of these "free" messages as it can, rather than sending only
200 one message per call (Run)
201 - removed some odd sts("MODE $opts{botchan}"); -- not sure why i put that in
202 - added rudimentary netsplit detection, which a) gives no penalty and b) logs
203 users in upon return. will pick up quit messages that match
204 /^\S+\.\S+ \S+\.\S+$/. if your network (or server) does not prefix quit
205 messages with "Quit: " (or some other string), or otherwise disallows faked
206 netsplit quit messages, then users can cheat this at their whim. added
207 option to turn netsplit detection on or off. added option of how long to
208 wait before automatically logging split users out and forgetting they ever
209 existed. added sub checksplits() which will iterate over the list of split
210 nick!user@hosts, remove those which have expired ($opts{splitwait}), and log
211 the user out. would love input on this feature, as i expect bugs
212 - HELP command for non-admins is now less helpful. generates one line of text
213 containing URL for help
214 - attempting to PUSH a user more than their TTL now sets their TTL to 0 as
215 well as generating a notice to the admin. successful PUSH now only
216 chanmsg()s instead of chanmsg()ing and privmsg()ing the admin
217 - $arg[3] changed to lowercased, leading-:-stripped $arg[3] in privmsg block
218 - cleaned up more code. changed (most) elses elsifs where appropriate. cleaned
219 up some logic. dropped all uses of next(). attempted to add () to function
220 calls wherever it was missing
221 - private messages and notices to the bot no longer penalize you (mrChewie)
222 - changed ha() to find access by username instead of nickname
223 - added a finduser() sub to return a logged-in username matching a given
224 nickname.
225 - changed case of $arg[1] after PONG rather than lc()ing it for every
226 comparison (mrChewie)
227 - at least 15% of all online players must be level 45+ for the hourly battle
228 of a level 45+ player to occur (anonymous @ idlerpg.net forum)
229 - fixed a serious bug with the bot not tracking changes to its nick (ie, by
230 NickServ or PEVAL) -- this caused all messages sent to the bot to be
231 penalized (TGS)
232 - added $opts{casematters}, which, when set, will not allow the registration
233 of usernames that already exist in a different case (MeBeHere)
234 - changed db backup, top players report to every 10 hours
235 - added $opts{modsfile}, which is where Time Modifier texts are appended.
236 also, tlog() now debug()s and chanmsg()s an error message if it cannot open
237 the file (MeBeHere)
238 - HOG was only 5-74%, corrected to 5-75% of TTL
239 - added an option $opts{self_clock} which is rather like the old $alrmint var,
240 except this probably works without exploding if you change it. calamities,
241 godsends, etc. should take this number into account when calculating odds
242 - added a server list rather than static server. bot should try each server in
243 the server list twice before giving up (meij)
244 - added a PID filename option, to which the bot will write its PID (meij)
245 - added a few more cattle-themed calamities (anonymous @ idlerpg.net forum)
246 - added a trailing '!' to godsend() text instead of the drab old '.'
247 - added some new quests/calamities/godsends contributed by users. edited some
248 old calamities/quests/godsends. please feel free to post your ideas for more
249 to http://idlerpg.net/forum.php! (anonymous, Afbc0m, anjira, jv, mrChewie,
250 W8TVI, et al)
251 - attempted to scale occurences of HOGs, godsends, calamities, and team
252 battles. HOGs should occur about 1/user/20 days, calamities 1/user/8 days,
253 godsends 1/user/4 days, team battles 1/user/4 days. does this by calculating
254 the odds of a HOG as rand(20*86400/clock) < NUMBER_ONLINE_PLAYERS, odds of
255 calamities as rand(8*86400/clock) < NUMBER_ONLINE_PLAYERS, etc. this appears
256 to work great with at least 10 clients (tested up to 300), but doesn't seem
257 to work as well below that. would appreciate input
258 - debug information is now written to a file instead of STDOUT. bot now
259 daemonizes even though it is in debug mode. added sub debug() which takes an
260 argument of text to write to the debug file (yeoj)
261 - added new item, Jeff's Cluehammer of Doom, item level 300-350, required user
262 level 52+, chance 1/40
263 - bot will try to regain primary nickname if he sees it come open through a
264 /nick or /quit
265 - DELOLD command will removed non-logged-in accounts that have not been logged
266 into in more than N days. format is:
267 /msg bot DELOLD <N days>
268 DELOLD is a p0, admin command (DinTn)
269 - added option to enable a STATUS command. this p0 command gives information
270 on a user, such as level, class, time to level, item sum, etc. useful for
271 those IRPGs that lack a website. format is:
272 /msg bot STATUS [username]
273 if username argument is not passed, returns information on the user issuing
274 command. must be logged in to use STATUS (TGS)
275 - possibly added option to choose which local address/hostname and local port
276 to bind to. let me know if this does/doesn't work (DARKutz, Brad)
277 - added security note to head of file
278 - will not send auto-login user list if text > 2048 bytes
279 - added $opts{botmodes} which will set the bot's usermode to given string on
280 connect
281 - removed reset of last login time on auto-login; last login should be when
282 user last logged in, not when the bot logged them back in
283 - levels after level 60 have a next time to level of (time to level @ 60) +
284 (1 day) * (level - 60). levels below 60 have not changed. the exponential
285 code was getting a little too heavy by itself (TGS)
286 - RELOADDB would log all players out; fixed
287 - sts() & fq() check state of socket before attempting write. if cannot write,
288 outgoing queue is cleared
289 - added new item, Mrquick's Magical Boots of Swiftness, item level 250-300,
290 required user level 48+, chance 1/40
291 - debug messages are now timestamped. added a few extra debug messages, mostly
292 for fun
293 - top player report no longer occurs immediately after startup, but every 6
294 hours from then on
295 - added option to disallow registration of usernames/character classes
296 containing ctrl codes (Skill0)
297 - changed auto-login code from list to hash. would take several minutes to
298 synch to a channel with hundreds of users. now takes < 1s (Vayanla et al)
299 - removed the hard-coded "#G7" from the top players list.. whoops :^) that's
300 been there for some time now, can't believe no one ever noticed (HaRRo)
301 - added option to voice users on login/register. if you +m your channel, this
302 will cut down on spam, but won't allow non-logged-in or devoiced/deopped
303 clients to talk (pingh, wishes, aphade, et al)
304 - added a penalize() sub to make penalties a little cleaner
305 - added %quest hash to keep up with active quest info
306 - added option to write active quest info to file; this makes it readable by
307 outside programs
308 - can now specify multiple words for the advertisement ban, or turn feature
309 off entirely
310 - removed all alarm() code, should now run on any system supporting select(2)
311 (including, but not limited to, Win32). should also fix a nasty, terrible
312 time drift bug; with the amount of processing done in rpcheck(), the next
313 alarm() would come later than expected, awarding the user with idling less
314 than he had actually idled. it's a small amount, but adds up to about 205
315 seconds difference in the clocks after ~9.25 hours (in my tests; will differ
316 from machine to machine). MANY thanks to this bug's reporter, Ville
317 Luolajan-Mikkola
318 - added CLEARQ command, will clear all items in outgoing message queue
319 - INFO shows outgoing queue status, registrations this period, and total users
320 - cleaned up options section a little bit, made a few other code clean-ups
321 - created this file, ChangeLog.txt. the bot's code was getting too long
322 - registrations are now limited to 1 / sec. this should keep floodbots from
323 registering hundreds of accounts
324 - removed ALERT command
325 - removed $opts{admin} array, there is now a field in the db to mark this.
326 there is also a MKADMIN command to set an account as having admin access.
327 syntax is:
328 /msg bot MKADMIN <username>
329 there is no way to remove an account's administrator privileges, save from
330 editing the database by hand (well, there is PEVAL). so, don't assign this
331 lightly. admins have full access to the account under which you run the bot
332 - die() call if could not write irpg.db is now a chanmsg() instead
333 - added an outgoing message queue. all messages are now output at 1 message /
334 second, unless a non-zero $skipq flag is passed to sts(). privmsg(),
335 notice(), and chanmsg() calls pass their $force flag as a $skipq flag.
336 PONGs pass a $skipq of 1 (LexCyber)
337 - fixed a rather huge bug that someone on slashnet noticed. registering
338 \001PING\001 (or any other ctcp) would send that CTCP to the channel, then
339 penalize any who responded. usernames may no longer include a \001
340 - godsends, calamities, and quests were all moved to one file,
341 $opts{eventsfile}. quests are prefixed with a Q1 or Q2, depending on their
342 type; calamities with a C; and godsends with a G. quests are also prefixed
343 by their required coordinates if the quest type is 2
344 - fixed a typo in the Dwyn's Storm text
345 - changed code indentation to four spaces. reworked a lot of code to fit <= 80
346 columns
347 - changed QUEST command and quest() output to be a little more grammar-
348 friendly
349 - item stealing! if you are level >= 20, and you win a battle against a
350 player, you have a slightly less than 2% chance of stealing an item from
351 them. the 2% comes from a) you have a 1/25 chance to attempt to steal an
352 item and b) you have a 50% chance that your item (type is random) is lower
353 than theirs. the reason it's 'slightly less than' 2% is because you cannot
354 both Critical Strike a user and steal an item, so it's (2 - (1/35))%. you
355 cannot steal an item of lower level than your current item (Afbc0m)
356 - fixed duration() to show 1 day without trailing 's'
357 - re-added report of TTL after battle and after critical strike
358 - quest() function now chanmsg()s an error if it cannot open the
359 $opts{eventsfile} file
360 - INFO command now uses privmsg() force flag
361 - added grid! thanks to Joakim @ orkut for this great idea. within the irpg
362 world are all of the players on a 500x500 "grid" or map. every second, your
363 character has an equal chance to step left, right, or neither, and an equal
364 chance to step up, down, or neither. if your character encounters another
365 player, you have a 1/(# of online players) chance to battle. also, some
366 quests require all characters to reach some point on the map. quest
367 penalties and awards have not changed
368 - added REMOVEME command for users. if you are logged in,
369 /msg bot REMOVEME
370 will delete your account. this is a p0 command :^)
371 - added NEWPASS command for users. if you are logged in,
372 /msg bot NEWPASS <new password>
373 will set a new password. this is a p0 command
374
375
376--------------------------------------------------------------------------------
377 v2.4.1: unreleased
378--------------------------------------------------------------------------------
379
380 - PEVAL will now error and refuse to send output > 15 lines. this is to avoid
381 my own errors
382
383
384--------------------------------------------------------------------------------
385 v2.4+fixes: released 2/20/04
386--------------------------------------------------------------------------------
387
388 - items are set to 0 on account creation; they were previous undefined
389 - bug with QUEST command fixed; would say no active quest even when a quest
390 was active
391
392
393--------------------------------------------------------------------------------
394 v2.4: released 10/13/03
395--------------------------------------------------------------------------------
396
397 - updated privmsg() function to avoid annoying substr()/uninitialized value
398 warnings
399 - few small bugs in battling bot fixed. a win against bot awards you with 20%
400 of your TTL removed. a loss to bot adds 10% of your TTL to your clock
401 - bot's item sum is now the highest item sum of all users + 1 (mumkin)
402 - fixed RESTART command to clear alarm() before trying to exec()
403 - WHOAMI displays class, TTL (Minhiriath)
404 - CALC command removed
405 - added notice() function which mirrors the operation of privmsg()
406 - SILENT command allows admin to switch bot between 4 modes of silence. in
407 mode 0, bot sends all privmsgs. in mode 1, only chanmsg() is disabled. in
408 mode 2, only privmsg()/notice() to non-channels is disabled. in mode 3,
409 privmsgs/notices to users and channels are disabled. silent mode is also
410 configurable as $opts{'silentmode'}, so you can setup a bot in any channel
411 without it interrupting the channel with its privmsgs (???)
412 - third parameter added to privmsg()/notice(); force flag ignores $silentmode
413 - hard-coded check for OKish URLs to bot's 'http:'-style banning now
414 configurable (sean)
415 - JUMP command no longer penalizes if required argument is left blank
416 - BACKUP admin command tells bot to copy $opts{'dbfile'} to
417 .dbbackup/$opts{'dbfile'}TIMESTAMP; added backup() function to handle this
418 - RELOADDB command allows admin to force bot to reload player database file,
419 rewriting all memory. RELOADDB can only be used while in pause mode
420 - PAUSE command allows admin to place bot into pause mode. in pause mode, bot
421 will update player stats, but will not write database. combined with
422 RELOADDB, very effective for updating all players stats through external
423 script without taking bot offline. new accounts cannot be registered
424 while in pause mode
425 - QUEST command (p0) tells the active quest, its participants, and its time
426 left to completion
427 - ban message for 'http:'-type bans now makes unban-time more clear
428 - things have been sped up a bit. random battles for users level 45+ now occur
429 every hour. random chance for HOG, Godsends, Calamities, and Team Battles
430 were increased by a factor of 5
431 - time between quests upped to 12 hours. level requirement for quests upped to
432 40+. in addition, must have been online for at least 10 hours to be selected
433 for quests. number of persons on quest lowered to 4. quest penalty is now a
434 p15 instead of 2% of your TTL. this makes more sense, as users who were very
435 close to leveling were penalized almost nothing (inkblot et al)
436 - fixed spelling of 'caffeinated' (sean)
437 - botchan variable now shows how to join channel with key (Dan)
438
439
440--------------------------------------------------------------------------------
441 v2.3.1: released 9/20/03
442--------------------------------------------------------------------------------
443
444 - fixed bug with item finding; bad logic sometimes resulted in user not
445 finding any item (thanks mumkin!)
446
447
448--------------------------------------------------------------------------------
449 v2.3: released 8/29/03
450--------------------------------------------------------------------------------
451
452 - Jotun's Fury max level dropped back to 174
453 - added the Drdink's Cane of Blind Rage with item level 175-200
454 - all time modifiers (battles, HoG, etc) are now written to modifiers.txt
455 - function tlog() logs a string to modifiers.txt and returns the string
456 - changed WHOAMI to not use $_
457 - fixed another bug where changing your nick would prevent you from being a
458 candidate for auto-login
459 - LOGOUT command added as a p20
460 - you may now only be logged in under one character at a time. this will help
461 protect the bot from being flooded when a single user signs on under 10
462 accounts, then is penalized and warned 10 times. attempts to login under two
463 names are not penalized
464 - fixed a bug where all of your accounts were automatically logged on so long
465 as they shared the same host as you, regardless of whether they were online
466 before (on bot restart)
467 - there is a 1/20,000 chance of a calamity occuring every 5 seconds. the
468 calamity() function chooses a random user, then smites them with bad luck.
469 the penalty for a calamity is a random 5-12% of next TTL. users are only
470 chosen from the pool of online players
471 - there is a 1/10,000 chance of a godsend occuring every 5 seconds. the
472 godsend() function chooses a random user, then betters their luck. the
473 award for a godsend is a random 5-12% of next TTL. users are only chosen
474 from the pool of online players
475 - there are now 'quests' -- six level 30+ users are chosen to go on a quest
476 at a time. if all six users make it to the quest's end, all questers are
477 awarded by removing 25% of their TTL (ie, their TTL at quest's end). to
478 complete a quest, no user can be penalized until the quest's end. quests
479 last a random time between 12 and 24 hours. if the quest is not completed,
480 ALL online users are penalized 2% of their time as punishment. users are
481 only chosen from the pool of online players (original idea from Nerje; quest
482 ideas from Tristan, brt)
483 - quests are read from file 'quests.txt' every time quest() is called. this
484 allows you to add or remove quests while the bot is still running. quests
485 are not picked in order, but chosen at random from the file
486 - fixed bug in PUSH, allowing to push into negative TTL
487 - db times changed to ctime format in lieu of scalar localtime() (now
488 sortable)
489 - added db fields for total time idled; total times penalized for privmsg,
490 nick change, part, kick, LOGOUT, quest, and quit; and time account created
491 - REGISTER no longer penalizes if you are already logged in and the command
492 fails
493 - fixed 'http:' checking to only look at message text, not entire string
494 - messages passed through privmsg() are split into 450-byte chunks and then
495 passed to their target
496 - bans put into place by the 'http:' method are now removed after 1 hour to
497 prevent filling the banlist. bans are stored in @bans, which will hold at
498 most 12 bans to prevent the bot from flooding on unban. after 12, bans are
499 still set, but not stored
500 - 'license' in header slightly changed
501 - battle results now include item sums and the random number rolled for each
502 player. format is [roll/sum]
503 - bot will try to regain his nickname every 30 mins if it is in use at
504 sign-on. added vars $primnick and $opts{'botghostcmd'}. $primnick is set
505 to $opts{'botnick'} (which may change) on load, and $opts{'botghostcmd'}
506 is a nickserv ghost command string
507 - the bot's nick ($opts{'botnick'} and $primnick) cannot be registered as
508 character names
509 - bot is now a fightable player. his item sum is random 250-650. (someone;
510 mail me if this was your idea). chances of fighting him are equal to
511 fighting any other player
512 - bot now daemonizes when starting (jwbozzy)
513 - fixed duration code to use the correct secs/day (drdink/inkblot)
514 - added a penalty to Team Battle. players will now receive or lose 20% of the
515 lowest team member's TTL (drdink)
516 - changed battling to award tie to challenger, not challengee. random number
517 is also, now, an integer, not a float
518 - every 3.5 hours, a level 45+, online player will battle; this will make it
519 easier for high-level users to level
520 - added function itemsum() to return item sum for supplied username
521 - battle results written to battles.txt are now timestamped (Juliet)
522
523
524--------------------------------------------------------------------------------
525 v2.2.2 (schmolli): released 7/18/03
526--------------------------------------------------------------------------------
527
528 * The changes in this version are based almost completely on a patch sent to
529 me by Ed Schmollinger, schmolli@IRC. Many thanks to him for his help! Here
530 are his changes:
531 - SECURITY: added subroutine mksalt to generate random salt for passwds
532 - CLEANUP: added subroutines chanmsg and privmsg to send messages to
533 bot's channel and to a specified user, respectively
534 - FEATURE: added command line argument processing and removed TEST_MODE
535 (TEST_MODE is no longer necessary.) Part of this includes moving most
536 of the variables into %opts.
537 - FIX: added check for number of existing players when printing top 3
538 - CLEANUP: changed "in:" and "out:" debug message to "<-" and "->"
539 - CLEANUP: indented concatenated lines
540
541
542--------------------------------------------------------------------------------
543 v2.2.1: released 7/16/03
544--------------------------------------------------------------------------------
545
546 - fixed a bug in item finding; if unique item was better than helm, not
547 better than its class, you would get the item (emad)
548
549
550--------------------------------------------------------------------------------
551 v2.2
552--------------------------------------------------------------------------------
553
554 - added 1/20000 chance of 'team battle' every 5 seconds. team battle is 3
555 players versus 3 other players. if the first three players win, their time
556 is lowered by 20% of the lowest of the three's TTL. if they lose, no time is
557 removed from any players. there is no chance for critical strike in a team
558 battle (Asterax)
559 - max level of Jotun's Fury Colossal Sword changed to 175
560 - fixed 'kick' bug; users that were kicked were not logged out
561 - kick added as a p250
562 - bot now only bans those non-logged in users that say 'http:' that've been in
563 the channel < 90 seconds
564 - bot won't ban for #G7-type URLs
565 - bot now shows nick of user when new account is registered
566 - forgot to close filehandle in loaddb(); fixed
567 - added a db backup every 6 hours
568
569
570--------------------------------------------------------------------------------
571 v2.1.3
572--------------------------------------------------------------------------------
573
574 - fixed bug where users changing their nick would not be candidates for
575 auto-login on a bot restart
576 - changed some messages to make them more friendly to female players (LapCat)
577
578
579--------------------------------------------------------------------------------
580 v2.1.2
581--------------------------------------------------------------------------------
582
583 - HoG can now carry or displace a player 5 - 75% toward the next level
584 - fixed CTCP version bug
585 - battling was changed from all users within 7 levels of you to all online
586 users
587 - added "unique" items, or a chance starting at level 25 to roll
588 higher-than-normal items
589
590
591--------------------------------------------------------------------------------
592 v2.1.1
593--------------------------------------------------------------------------------
594
595 - DIE, JUMP, RESTART, INFO, and PEVAL now send warnings to users that don't
596 have access to tell them so. they are still penalized
597 - bot will now penalize users without the proper access that try to use an
598 admin command
599 - add commands CHCLASS, CHUSER, and PUSH to adjust class names, usernames,
600 and next time to level, respectively
601 - HoG could occur for offline users; this is no longer the case
602 - bot now responds to CTCP version requests (drdink)
603
604
605--------------------------------------------------------------------------------
606 v2.1
607--------------------------------------------------------------------------------
608
609 - bot bans non-logged-in users that say 'http:'
610 - INFO did not check ha(); fixed
611 - bot will automagically log you back in if you were logged in before a bot
612 restart, and if you haven't changed your nick!user@host since then
613 - removed logging
614 - dropped functions relating to old database in favor of the new one
615 - changed level up report from seconds to duration()
616 - changed item/userinfo db's to one file; battles still in battles.txt
617 - changed challenge report from seconds to duration()
618 - changed penalty text to display duration() instead of seconds
619 - added critical strike, 1/35 chance upon winning battle to cause opponent to
620 lose time (dwyn)
621 - changed summon text for HoG (res0)
622 - changed access to base off of irpg username in lieu of host
623 - changed top player report to every 6 hours
624 - changed positive HoG text (res0)
625 - changed random HoG chance to 1/20000 every 5 seconds
626
627
628--------------------------------------------------------------------------------
629 v2.0.3
630--------------------------------------------------------------------------------
631
632 - dropped top players back to 3
633 - removed STATUS; TTL available through website.
634 - battle history added to website; added logging of battles to battles.txt
635 - peval did not next(); fixed.
636 - added HOG command, randomly chooses someone, then randomly raises/lowers
637 their TTL (20% raise, 80% lower). HOG is, of course, an abbreviation for
638 Hand of God
639 - added a 1/7500 random HoG into rpcheck()
640
641
642--------------------------------------------------------------------------------
643 v2.0.2
644--------------------------------------------------------------------------------
645
646 - STATUS would log you out; fixed.
647 - could STATUS if not online; fixed.
648 - added DEL command to remove accounts
649 - added ALERT command to make channel alerts
650 - changed admin HELP command text to display website
651
652
653--------------------------------------------------------------------------------
654 v2.0.1
655--------------------------------------------------------------------------------
656
657 - fixed self-battle bug
658 - changed chance to battle from 20% to 25% if level < 25, 100% if >= 25
659 - setup companion website
660 - updated HELP command to reflect website
661 - changed battle gain to (max(7,opplevel/4)/100)*your_next_ttl
662 - added battle loss of (max(7,opplevel/7)/100)*your_next_ttl
663
664
665--------------------------------------------------------------------------------
666 v2.0
667--------------------------------------------------------------------------------
668
669 - added item finding and battling
670 - added penalties for QUIT, PART, instead of resetting time to the beginning
671 of that level
672
673
674--------------------------------------------------------------------------------
675 v1.0
676--------------------------------------------------------------------------------
677
678 - initial version
Note: See TracBrowser for help on using the repository browser.