#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2013-04-12

Timestamps are in GMT/BST.

00:00:26BFLogBot Commit: cf5197eedaad | Author: sam8641 | Message: Update projects
00:00:27BFLogBot Commit: 84182a948a28 | Author: sam8641 | Message: Remove some spawnDelayed variables and made spawnDelayed work better. Don't lag/kick host from duplicate name.
00:00:31BFLogBot Commit: fd00b7b4956c | Author: sam8641 | Message: Completely disable joystick when using Keyboard input mode. Fixed not using current joystick index for multiple joysticks after changing in option menu.
00:00:32BFLogBot Commit: 855e11a25dde | Author: sam8641 | Message: Merge
00:00:46raptorsam686 you committed!
00:00:56raptorit's been what 2 months? :)
00:00:56sam686yes
00:02:22raptorWOW 4 developers at once!
00:03:55raptorsam686, you made a TNL change... what does it do exactly?
00:04:51sam686the TNL changes only makes it handle a disconnect from local non-networked connection better, it won't lag out forever and tells the other client connection its been ended..
00:05:33raptorah ok
00:06:04sam686otherwise that TNL changes stays compatible to master server (and possibly game server ig it wasn't the other changes)
00:06:19sam686if (not ig)
00:06:47kaensam686, thanks for fixing the duplicate name kicking
00:06:55kaenI just ran into that bug the other day...
00:07:37sam686the TNL fix alone fixes lagging out forever with the duplicate name problem, but instead causes the client to still host in a title menu.
00:07:46sam686(when hosting)
00:15:09bobdaduck has joined
00:15:18bobdaduckSam686: I have some levels to show you...
00:17:20sam686ok
00:34:26raptoroh yay segfault
02:28:53Platskies has joined
02:52:54sam686I kindof crashed too..
02:53:13sam686maybe its the announce part being crashy?
02:55:53bobdaduckno
02:55:59bobdaduckIts a known crash fixed in 019
02:56:10bobdaduckbecause the slipzone has a negative slip coeficcient
03:01:00sam686(10 * flags * (flags + 1)) / 2 ... parhaps this will be more efficent: 5 * flags * (flags + 1)
03:05:09Platskies Quit (Ping timeout: 252 seconds)
03:12:03Platskies has joined
03:15:08fordcars has joined
03:16:38sam686I don't think such negative ship maxVel will totally fix it, not if a level have this: Spawn 0 3.402823466e+38 3.402823466e+38
03:17:03Platskies Quit (Ping timeout: 264 seconds)
03:19:39sam686note, the editos will not save a spawn at:: Spawn 0 3.402823466e+38 3.402823466e+38
03:19:53sam686but does load and crash trying to host..
03:24:13bobdaduckWhat? xD
03:42:31bobdaduckSuper duper map of doom 1/4th complete minus levelgen
03:52:06fordcars Quit (Ping timeout: 245 seconds)
04:04:59bobdaduckraptor lineitems show for every team next update right?
04:05:25kaen Quit (Read error: Operation timed out)
04:22:05Platskies has joined
04:26:33Platskies Quit (Ping timeout: 251 seconds)
04:34:54Platskies has joined
05:07:45Platskies Quit (Remote host closed the connection)
05:30:40bobdaduckraptor are you still awake?
05:49:55bobdaduck Quit (Remote host closed the connection)
05:56:46Platskies has joined
07:03:57Watusimoto has joined
07:10:24Watusimotogood evening, raptor!
07:13:38BFLogBot Commit: 9240a2b2c34c | Author: watusimoto | Message: Rip out more old loadout stuff and replace it with the newer loadout stuff. Reduces code.
07:13:40BFLogBot Commit: 1c0b4c613eba | Author: watusimoto | Message: Merge
07:13:53Watusimotomy checkin addresses your comments about memory leaks with the loadout stuff. In short, I don't think it leaks.
07:17:07Watusimotosam686: thanks for the checkins!!!!
07:18:01BFLogBot Commit: 083ee5981b96 | Author: watusimoto | Message: Resolve TODO by simply deleting relevant code.
07:18:22Watusimototime for work.... laterz!
07:23:16Watusimoto Quit (Ping timeout: 246 seconds)
07:35:06sam686 Quit (Ping timeout: 245 seconds)
07:41:09watusimoto has joined
07:41:10ChanServ sets mode +o watusimoto
08:37:16Platskies Quit (Remote host closed the connection)
13:42:41raptorgood morning watusimoto
13:42:47watusimotohi
13:42:49raptorwow, i slept for like 10 hours!
13:42:54watusimotofeels nice, no?
13:42:58raptoroh man yes
13:43:01watusimotoI went to bed early last night oo
13:43:02watusimototoo
13:43:10watusimotothat, and extra coffee, and I feel great today!
13:43:29raptorwoke up with the sun... everything is suddenly OK in life
13:43:32watusimotowe're moving offices today, so everything is chaos
13:43:44watusimotono longer will I be able to walk to work :-(
13:43:50raptorsadness!
13:44:00watusimotobut I'll get to bike, so it's not all bad
13:44:01raptorhaving work close is one of my requirements for work
13:44:06raptorok good
13:44:07watusimotoabsolutely
13:44:43raptoroh, so the loadout stuff
13:45:09raptoruhh... before i fell asleep, i noticed that loadouts didn't change at all when going over a zone
13:45:14raptorthen i fell asleep
13:45:41watusimotocheck again; I did a big checkin this morning and I'm pretty sure it's working
13:45:42raptorso let me compile the new stuff and see if that fixed it..
13:45:54watusimotothough I'm not sure I ever saw that it was broken
13:46:23raptoryeah the loadout stuff was crazy...
13:46:42raptori never knew in what format it was being handled in any given part of the code
13:47:03watusimotowe can probably combine luaLoadout and loadoutTracker to further simplify
13:47:10watusimotobut loadouts are kind of nuts
13:47:21watusimotothey are tracked on ship, on clientInfo, and by the user interface
13:47:36watusimotoprobably we can remove them from the ship
13:47:47watusimotowhich would make things a little more sane
13:48:00watusimotobut we had tons of code for looping through various arrays and building other arrays to pass on
13:48:13watusimotoit's a little more sane now, but still a little crazy
13:48:31raptorat least it's a bit more consolidated
13:48:50raptorspeaking of consolidation - I started putting in the 'owner' permission level
13:49:00raptorand.. it's crazy
13:49:14raptorthere's like 4 RPC for each permission level
13:49:48raptorI was thinking that instead of passing bools for everything I'd do an enum
13:50:00raptorso 1 enum vs 3 bools
13:50:11watusimotomakes sense
13:50:33raptorbecause we do things like pass all the bools into the ClientInfo constructor
13:51:00raptori've made members for it on like 4-5 different classes now
13:51:05raptorjust the 'owner'
13:51:47raptorbut i'm wondering if not using bools for each permission level will cause some issues..
13:51:59raptorcan't think of any that I can overcome somehow, but maybe you might?
13:52:32watusimotoI'm not sure I undserstand the (potential) problem
13:52:57raptorwe have a bool for each permission level right now: isLevelChanger, isAdmin, isOwner
13:53:58raptorand those are passed to RemoteClientInfos and used by the GameSettings, etc... and there's a few RPC calls for each one
13:54:16raptorI'm just wondering if I consolidated everything into a single enum if there would be issues somewhere..
13:54:49watusimotoHard to be sure, but I don't see why it would... so what, just a single enum for what permission levels a dude has?
13:55:23watusimotoassuming if you have one, you have everything lower as well?
13:56:01raptorlower?
13:56:10raptor(also loadouts are working again)
13:56:17watusimotoi.e if you have admin, you automatically have levelchange
13:56:22raptoryes
13:56:24watusimotono way to have admin and not levelchange
13:56:29raptoryep
13:56:41watusimotoif your question is whether that would cause any problems, I would say no
13:56:44raptorthat's how it is now - we just take extra care to set the lower bools, too
13:57:02watusimotoso instead of all those bools, just a mPlayerPermissions = xxxxenum
13:57:09raptoryeah
13:57:16watusimotototally -- go for it!
13:57:19raptorok
13:57:22watusimotoI think that makes a lot of sense
13:57:30raptori'm probably just thinking into it too much...
13:59:06watusimotoespecially as we increase permissions levels, bools will become unweildly
14:00:20raptoryes!
14:01:13raptorlooks like we should remove gridsize
14:01:16raptoryay
14:01:17raptorbut
14:01:29raptormaybe we leave it as a UI-only option in the editor?
14:01:53raptoroh and leave it for legacy parsing of level files..
14:01:55watusimotowhat do you mean ui-only option?
14:02:07raptoras in, if I want to change the editor gridsize, I can
14:02:15watusimotowe'll need to keep it for legacy files, but I'd remove it from the ui altogether
14:02:26watusimotomake it a text-editor only attribute
14:02:37raptorand snapping will work to the new grid... but it won't be saved to level files
14:02:55watusimotosnapping engineerred items?
14:03:03raptorwall snapping to the grid
14:03:21watusimotoagain I fail to understand
14:03:36watusimotoof course walls will snap to the grid... but what about the level files?
14:03:45raptorthe level files will save the raw point values
14:03:58raptorso instead of 1.0 .. we'd save 255
14:04:02watusimotoright
14:04:16watusimotomaybe we should default the new gridsize to 100
14:04:30watusimotoso that the lines in the editor are 100 apart
14:04:36watusimotorather than 255
14:04:37raptori'm just saying that we make the new gridsize be a client-side only editor UI feature
14:05:02watusimotothe server will have to read gridsize as well to parse older levels
14:05:10raptorbaby steps... i'd say leave it at 255 for one release as the level file change may be radical enough
14:05:23raptorthe server will *only* have to read gridsize for legacy levels
14:05:28watusimotoyes
14:05:35watusimotofor all others it will just assume 255
14:05:45watusimotoas it does today when gridsize param is missing
14:05:47raptoruh wait
14:06:05watusimotosorry I think I miswrote
14:06:12raptorwe add a permanent level file meta-tag: LevelFileVersion 2
14:06:23raptorand if it see it, it doesn't need to apply gridsize
14:06:38raptorbecause it knows the points are normal points
14:06:39watusimotofor LFV1, gridsize defaults to 255; for LFV2 gridsize defaults to 1
14:06:52raptorsure...
14:07:36watusimotoall coords will need to be within bounds of S16
14:07:42raptorbut don't you want to eventually get rid of the gridsize in most calculations anyways?
14:07:52watusimotoyes, but we can't as long as we have legacy levels
14:08:00raptorcorrect, ok
14:08:12watusimotoso I think we are stuck with it
14:08:20raptorcoords within S16? how come? i thought that limit was just for bot zones
14:08:29watusimotoyes, for that exact reason
14:08:48watusimotoif our levels are bigger, we can't generate bot zones
14:09:04watusimotoI guess we could just disable bots on those larger levels
14:09:21raptorwhich we do
14:09:52watusimotook, well we can deal with how to handle larger levels later
14:09:57raptorit's already coded in, to even warn the player on level load
14:10:28watusimotoyes, but I always thought we could impose that limit and allow bots on all levels
14:10:53watusimotowhat do you think about making all coords ints?
14:10:59watusimotoinstead of F32s
14:11:34watusimotoactually, that may cause lots of unforseen problems
14:11:39watusimotolet's leave that for another day
14:11:54bobdaduck has joined
14:12:28watusimotoso yes, I agree -- let's add engineering of testItems
14:12:35bobdaduckroflwhat
14:12:43raptorhahaha
14:13:26raptorkaen suggested saving all coords as ints, but i think the precision might not be good enough for putting turrets on diagonal walls and such
14:14:27raptorhe also suggested saving all coords as ints with 8bit precision - so 1 point would have internall 8 bits of precision to handle smaller case
14:16:43raptorand maybe even extend that to all points everywhere: 24bits for the integer part and 8 bits for decimal part, then all calculations could just be done using bitwise ops
14:16:45raptor:)
14:16:49raptorbut that's probably overkill
14:17:16watusimotoremember that placing turrets on walls isn't exact anyway, as the game will do snapping when the item is loaded
14:18:06raptoryeah... we need to make sure it is more exact however
14:18:28raptorbecause loading a level up in-game makes the snapping work consistenly
14:18:45raptorbut when loaded into the editor, then saved, coords can shift slightly
14:19:22raptorwhen saved again, some FFs can be elsewhere
14:20:38raptorexample, you put an FF at coords 5 0
14:20:55raptoryou load it it in the editor, it does snapping, you make some level changes, save
14:21:08raptorcoords are now at 5.003 0.003
14:21:23raptorand that little bit can make a big difference
14:21:29watusimotothat is not a problem if the new coords snap to the same location as the old coords
14:21:51watusimotoif they don't the problem is with the snapping code, not the level format
14:22:09bobdaduckThey don't
14:22:11raptoryes, that's i think what we found yesterday
14:22:34watusimotowell if x,y snaps to a,b, then a,b should also snap to a,b
14:23:05bobdaduckBut instead a,b snaps to a.000234, b.051
14:23:18watusimotoeven if the level is saved as a',b' (slightly different than a,b), a',b' should also snap to a,b, as a',b' is close to a,b than x,y was
14:24:19watusimotoif that's not true, there is a bug with the snapping code
14:24:42watusimotowhich basically works by shooting rays out in various directions and seeing what it hits
14:25:03watusimotomaybe those rays are too coarsely spaced
14:25:39watusimotoor maybe we need a different strategy -- see what edges are in the area, and do a parallel distance to each
14:27:27raptori think the bug may be in the level-saving code
14:27:41raptorlike when dividing by 255, it does 256 or something...
14:27:48raptorsome rounding error somewhere
14:28:20bobdaduckWould there really be rounding errors for something placed at 5.0?
14:29:16watusimotowell, with levelcode 2.0, it won't be a factor
14:29:22watusimotoso don't worry about fixing it yet!
14:29:34watusimoto(if your theory about save error is correct)
14:30:24watusimotoand older levels are what they are
14:30:50watusimotoas we edit older levels, we'll upgrade them to 2.0, right?
14:31:19bobdaduckWhat's this about levelcode 2.0?
14:39:12raptorlevelcode 2 means points saved directly without gridsize
14:40:04raptorso a point represented by 1.0 (because of gridsize) will be represented as 255.0
14:41:20watusimotoa point currently at 1.0 will be 255.0 in levelcode 2
14:41:42watusimoto(same thing, just a little clearer :-)
14:41:53raptor(thanks)
14:42:16raptorI sometimes wish I could put my thoughts into words as well as my wife..
14:42:31raptorone day I will stop confusing people... one day
14:42:40watusimotoyou usually do quite well, actually
14:43:04raptorthis channel gives me lots of practice :)
14:44:53raptorok, so my next project is the owner permissions
14:45:21bobdaduckYou worked on that a bit already, didn't you?
14:46:15raptoryeah, but now i need to rewrite the permissions system entirely
14:47:10bobdaduckHah, why?
15:07:23raptorbecause it's unweildy with 4 permission levels
15:08:45bobdaduckI don't believe you.
15:09:09raptorspeaking from a developers perspective...
15:09:27bobdaduckxD
15:09:44bobdaduckThat developer perspective. Always catching me off guard.
15:13:24bobdaduckThe problem with dressing like a greaser is that you have to use your crappier headphones in order to not mess up your hair.
15:26:28raptorwhat? that statement doesn't even make sense to me
15:26:40Darrel has joined
15:28:07Watusimoto_ has joined
15:32:29bobdaduckSo I'm a greaser today
15:32:54raptora mechanic?
15:32:57bobdaduckAnd I can't wear my high quality headphones because they will mess up my hair.
15:33:15bobdaduckhttps://www.google.com/search?q=greaser&aq=f&um=1&ie=UTF-8&hl=en&tbm=isch&source=og&sa=N&tab=wi&ei=SCloUb3bJ8mxyQGK64HICg&biw=1122&bih=724&sei=TSloUbPeCKqgyAH0p4CIAQ
15:34:01raptorha! ok
15:34:06raptorone of *those* people..
15:34:44raptori always quietly walked out of the room when someone like that would start talking 'hair gel' with his buddies
15:35:22bobdaduckhah yes well. I'm dressed up that way for fun today.
15:35:50bobdaduckWith the white shirt under the leather being a company tee shirt.
15:35:57bobdaduckI'm the company greaser!
15:36:22bobdaduckEvery company should have a greaser... Its very important.
15:38:59raptor... if you.. say so..
15:39:31bobdaduckI'll post a picture for everybody after I get off work.
15:39:38bobdaduckI dunno dressing up is fun xD
15:40:57raptorok, i'm off to school! back later
15:41:00bobdaduckSeeya
15:41:20raptorand uh... don't slip on the puddles of grease lying around
15:41:46raptor Quit ()
15:43:58kaen has joined
15:45:40bobdaduckSup kaen. Welcome to da hood.
15:46:01kaenWORD UP B-DIZZLE
15:46:14kaenetc.
15:46:20bobdaduckxD
15:46:24bobdaduckI'm a greaser today.
15:50:51kaenthe rumblefish kind?
15:50:55kaenor the west side story kind?
15:51:11bobdaduckWest side story kind.
15:51:37kaenso you rhythmically snap and perform choreography during combat
15:51:39kaeninteresting.
15:51:50bobdaduckDid you not know this about me?
15:52:05kaenno, but I find myself unsurprised.
15:52:09bobdaduckIts why I'm so good at bitfighter
15:52:55bobdaduckThe problem is I can't wear my good headphones because it will mess up my hair
17:01:17bobdaduckWhat DnD class uses a scimitar, and what would their loadout be in bitfighter?
17:24:00watusimoto Quit (Ping timeout: 260 seconds)
17:48:05bobdaduckbug
17:48:25bobdaduckShould be a fairly simple one:
17:48:56bobdaduckIf you have engineer and cloak at the same time, turrets will shoot at you if you cloak with a resource Item (even though I'm pretty sure the resource cloaks with you)
18:01:23Wuzzy has joined
18:09:43kaenindeed
18:25:14raptor has joined
18:25:14ChanServ sets mode +o raptor
18:25:47raptordo resources cloak with you?
18:26:47kaenyes
18:26:56raptorinteresting...
18:27:04kaenhttps://code.google.com/p/bitfighter/issues/detail?id=198&sort=-id
18:27:16kaen:)
18:27:34raptora bug in the proper place!
18:27:57kaenI mean if there's going to be four committers
18:28:11raptorheh
18:28:28raptorthanks goodness we're not using svn...
18:28:43kaen shudders
18:29:50raptoror CVS!
18:29:59raptorhere in the corporate world... you'd be appalled...
18:32:38bobdaduckRaptor druids use scimitars right?
18:32:53raptoruhh
18:33:02raptormaybe? I think desert nomads use scimitars
18:33:19bobdaduckRight and what loadout would that be.
18:36:56bobdaduckSo levelgens need to be able to send PMs
18:37:01bobdaduckand make announcements
18:38:08raptoradd here: http://code.google.com/p/bitfighter/issues/detail?id=196
18:39:37bobdaduckk
18:48:01Watusimoto_ Quit (Ping timeout: 245 seconds)
18:50:37raptordid you guys get sky_lark's PM?
18:52:48bobdaduckyeah
18:55:23bobdaduckIs there any way I can hurt a ship that does not involve bursts?
18:55:38raptoruse a turret projectile?
18:55:44raptorteleport them into an asteroid?
18:56:01bobdaduckI want to damage them but only a little bit.
18:57:12kaenspybugs?
18:58:38raptorspybugs as a defense!
18:58:46raptorthey do only knock back damage
18:58:52raptorerr, force
18:59:31bobdaducklol
19:00:05kaenoh
19:00:53kaenspawn bursts at a distance?
19:01:33bobdaduckThat's possible but kind of unweildy
19:01:43bobdaduckConsidering you're whacking someone with a sword.
19:03:06kaenyour sword is attached to the front of a space ship
19:03:11kaenthat's pretty unwieldy
19:03:17bobdaduckxD
19:03:27raptorthink of the bandwidth usage!
19:03:36raptormoving zones always in scope...
19:03:37bobdaducklol
19:03:51kaennot even simple quad zones
19:03:58kaenzones with non-trivial geometry
19:04:01bobdaduckxD
19:04:20bobdaduckWait until you see the bard weapon xD
19:04:47kaenheaven forbid we ever raise the zone vertex limit
19:05:02bobdaduckpls do
19:05:23bobdaduckI need 83 vertexii
19:05:31kaenvertices?
19:05:45kaenvertexii made me smile though
19:08:44bobdaduckShould I offer to make custom swords?
19:08:52bobdaduckfor specific people?
19:09:21bobdaduckOr perhaps to let people make custom swords
19:09:32bobdaduck...Thus invalidating the desire for ship shapes.
19:10:17kaenmake a sword crafting area
19:10:59kaendevise some way to let players enter a "point" they are standing on, and append each point to construct the zone's geometry
19:11:22kaenno, actually don't do that
19:11:28kaenthat's a terrible, terrible idea
19:11:59bobdaduckxDD
19:12:15bobdaduckI was just thinking of pastying the sword geom code and letting people figure it out
19:13:15kaenI'm thinking if you make a little room, levelgen a mine at an easy to access spot, check each frame to see if the mine's been destroyed, if it has then the point the player is on is added to the geometry
19:13:24kaenrespawn the min as soon as it's destroy
19:13:25kaened
19:13:47kaenboom -- sword editor
19:13:49bobdaduckxD
19:13:54bobdaduckYeah uh
19:14:00bobdaduckI don't want to let people do it THAT much.
19:14:25bobdaduckIt'd be trivial just to open the sword geometry to people on the forums to edit
19:14:34kaenppfffffffffffffffffffft
19:17:03bobdaduckYes yes
19:17:07bobdaduckyour idea is good
19:17:12bobdaduckprogram it for me and I'll put it in
19:17:16bobdaduckbut otherwise...
19:17:22bobdaduckOH NO
19:17:25bobdaduckLOOK WHAT YOU'VE DONE.
19:17:49bobdaduckYOU'VE TURNED ME INTO WATUSIMOTO.
19:21:37bobdaduckHey raptor how do I make it so that you can throw your sword?
19:21:52raptoruhh
19:22:17raptoryou have to have some sort of trigger that would start altering the zone geom
19:23:35bobdaduckhm
19:23:47bobdaduckActually I'm just trying to make it so rangers can shoot arrows
19:24:22bobdaduckI decided against letting rogues throw daggers because they're already OP
19:26:28raptorwhat are rogues?
19:26:44bobdaduckThief
19:26:51bobdaduckDagger dexterity class
19:26:54raptoryes yes
19:27:04raptorbut what module/weapon combo is considered that?
19:27:18bobdaduckcloak engineer
19:27:48bobdaduckTurbo cloak is already ranger.
19:31:40LordDVG has joined
19:39:59kaenthree days after filing, my "intent to package" is finally on the list
19:40:13kaenreplete with formatting errors, which should make a good first impression.
19:43:50bobdaduckSo I'm going to try my hand at this making rangers shoot
19:44:37bobdaduckbut I will probably fail and it will all explode and I will need help
20:02:23bobdaduckFoot says forums down
20:06:17raptorhuh... that's odd
20:06:34raptordatabase restart does nothing..
20:06:37raptorah ha!
20:06:41raptorhttpd restart fixed
20:08:27bobdaduckyay
20:08:41bobdaduckokay yup
20:08:46bobdaduckI died at the math part.
20:20:58kodane has joined
20:20:59kaen Quit (Remote host closed the connection)
20:33:28kodane Quit (Remote host closed the connection)
20:33:45kodane has joined
20:34:10kodane Quit (Remote host closed the connection)
20:34:25kodane has joined
20:38:15raptorkodane? is that a new fuel of some sorts?
20:42:09kodane Quit (Quit: Colloquy for iPhone - http://colloquy.mobi)
20:49:49bobdaduckThe lurkers get touchy when you ping them
20:55:00Darrel Quit (Read error: Connection reset by peer)
20:59:32bobdaduck Quit (Read error: Connection reset by peer)
21:09:03LordDVG Quit (Remote host closed the connection)
21:46:19kaen has joined
21:47:08kaenwow debian is sooooooooooooooooo much better than ubuntu
22:04:03Wuzzy Quit (Quit: Wuzzy)
22:18:37Watusimoto has joined
22:18:41raptor!
22:18:43raptoryes
22:21:33sam686 has joined
22:21:33ChanServ sets mode +v sam686
22:22:45kaenif we get one more dev we can all wear captain planet rings.
22:25:11raptorwith our powers combined!
23:05:15sam686openAL bug? doing this: alSource3f(soundsource1, AL_POSITION, 0, sqrt(-3.f), 0); on a currently playing sound will freeze the program with high CPU usage.
23:14:04raptorsqrt of a negative number?
23:14:38raptori must go home... but i'll be back later
23:14:40raptor Quit ()
23:35:25fordcars has joined
23:54:15raptor has joined
23:54:15ChanServ sets mode +o raptor

Index Search ←Prev date Next date→

These logs were automatically created by BFLogBot on irc.freenode.net.