#bitfighter IRC Log

Index Search ←Prev date Next date→

IRC Log for 2012-01-22

Timestamps are in GMT/BST.

00:47:12CrazyLinuxNerd Quit (Quit: Leaving)
01:07:54raptorsam686: i think the editor is worse now
01:19:45CrazyLinuxNerd has joined
01:34:22CrazyLinuxNerd Quit (Quit: Leaving)
02:21:12raptorsam686: that last check-in of yours is what is creating a load of editor problems
02:21:39raptori just narrowed it down to that one: f35c54050536
02:21:46raptorusing hg bisect
02:38:41koda Quit (Quit: koda)
02:44:16raptorfound the problem: item.cpp:90
02:44:28raptoryour commenting out that line causes all the editor problems...
02:44:40raptorwell, just the ones introduced recently..
02:44:44raptori wonder why?
02:55:52sam686` has joined
02:56:25sam686`i am kind of cold, that i feel like staying on my bed with a blanket, with my laptop
02:56:37raptorhi
02:56:50raptorbrrrr - we finally got hail/snow here
03:03:36raptorare you currently attending college, sam686`?
03:03:55sam686`no..
03:04:16raptorok, just curious
03:04:40sam686`i guess only Item::setActualPos(pos) does setVert(point, 0), not MoveObject::setActualPos(pos)
03:05:20raptori don't understand why it's needed
03:05:24raptorit boggle smy mind
03:08:55raptoris it because there are two copies of the item somehow?
03:08:55sam686`i think i may have found a way to get rid of PointGeometry.mPos, change it to getExtent().getCenter()
03:09:21sam686`its because there is multiple places MoveObject position get stored.
03:09:39raptorah
03:27:39raptorwant me to commit that minor change that fixes the editor?
03:28:15raptoractually - your copy constructor messes up stuff, too
03:29:20raptorwhen copying point items, they're team is reset and their position...
03:30:25raptori will revert some changes and commit, unless you already did so
03:36:00BFLogBot - Commit 5e6cd8bc56d4 | Author: buckyballreaction | Log: Revert commented-out code - why on earth do we need this? This fixes starting position of some items in editor
03:36:02BFLogBot - Commit 0553825576b2 | Author: buckyballreaction | Log: Revert addition of Item copy constructor - fixes objects losing location and team when copied
03:41:03raptorback to the drawing board with that evil bug, i guess...
03:58:10sam686`there, i commited and pushed a change that removes PointGeometry::mPos, so one less place to store position for items.
03:58:31raptorok
03:58:34raptori'm trying to track down the evil bug again...
03:58:56sam686`it seems to fix not being able to select items in editor though..
03:59:03raptorreally??
03:59:05raptormust test...
04:01:06BFLogBot - Commit 80aa48b2a7d9 | Author: sam8641 | Log: Remove PointGeometry::mPos, PointGeometry getVert now does getActualPos
04:01:19raptorevil bug is still there..
04:02:10sam686`for which items? polygons?
04:02:33raptordo you have my level i made for the simple test on the wiki?
04:02:46raptor#39 here: http://bitfighter.org/wiki/index.php?title=Buglist_016
04:03:15raptorjust follow exactly what I do to duplicate the evil bug
04:05:31sam686`i seem to get a crash on undo (ctrl + Z), let me try rebuild the whole thing first and see if the crash is still there..
04:10:28sam686`well, while it may happen on polygons, it doesn't happen to point items anymore...
04:10:43raptoris a spawn point a polygon?
04:10:49sam686`no
04:11:20raptorbecause it still happens with spawn points
04:11:47raptormove that spawn point on my test level outside the lineitem after an undo, and deselect it - you cannot reselect it
04:20:50sam686`i can see it is a problem... for both spawn and zone
04:21:26raptoryeah, i have no idea what the problem could be yet...
04:21:51sam686`but, the problem only starts happens on Undo it seems
04:21:58raptorcorrect
04:22:19raptorit could be something isn't saved properly in saveUndoState
04:22:35raptorwhen making a copy of the editorObjectDatabase...
04:26:37raptorwe;ve got to reconcile the Geometry classes and BfObject some day...
04:27:04raptorPointGoemetry -> BfObject -> Geometry doesn't seem right
04:29:07sam686`I may have found that, objects are in grid database, but DatabaseObject have mDatabase = 0x00000, so it doesn't know how to update the grid database when extents have changes
04:30:57raptorit happens with both undo systems, so it can be with creating a new EditorObjectDatabase..
04:31:03raptor*can't
04:31:06raptorcan't be
04:32:31sam686`there is EditorObjectDatabase by itself, and there is DatabaseObject for all GameObjects / BfObjects
04:32:47sam686`the problem is DatabaseObject have a GridDatabase *mDatabase
04:33:12sam686`so if you call setExtent, the object itself need to know which database is in mDatabase..
04:33:30raptoris that because it is a pointer? and that isn't copied when cloning?
04:33:52sam686`GridDatabase *mDatabase is simply a pointer..
04:36:02raptori see you are right, it's not in a database after undo
04:46:03raptorin EditorObjectDatabase::addToDatabase
04:46:07raptoradding eObj->addToDatabase(this);
04:46:10raptordoesn't work
04:49:29sam686`i think i may have got it working now..
04:50:02raptordo you have a link to your hg repo i can see?
04:53:20sam686`http://208.107.12.78:8000/
04:53:43raptori'm going to pull from there..
04:54:55sam686`note, you might end up pulling several un-merged branches...
04:55:04raptorah, yes i did...
04:55:07raptorthat's ok
04:55:11raptori got the right one
04:56:03raptoryou fixed the evil bug!!
04:56:21raptorso the real question - why isn't mDatabase set already when doing a copy?
04:56:47sam686`it might be pointing to wrong database? not sure..
04:58:05sam686`maybe a better place to set mDatabase is in EditorObjectDatabase::copy
04:58:18raptorthat's what i'm thinking, too...
04:59:23sam686`only problem, i don't see any object's clone...
05:00:55sam686`well, not sure which will be a better place to put in the set database object..
05:01:23raptorlet me test something...
05:06:37sam686`i think i have found a better and simpler place to put it.. --rev d675338d7b87
05:08:04raptorthat's it!
05:08:08sam686`i will push the changes on d675338d7b87 to google code
05:08:15raptorgreat!!!
05:08:56raptorwow, good find
05:09:44raptorwant to do some more play testing?
05:10:07sam686`ok
05:10:07raptoror do you think the game itself is solid enough now?
05:10:56sam686`it seems like there is no more errors, are there?
05:11:15BFLogBot - Commit d675338d7b87 | Author: sam8641 | Log: Fix a problem with EditorObjectDatabase::copy, set new copy to new database
05:11:17raptorjust the wall building with levelgen in editor?
05:12:26raptorhere is watusimoto's short list of bugs: http://pastie.org/3221815
05:15:03sam686`what happened to the in game turrets? http://sam686.maxhushahn.com/upload/turrets_problem.png
05:15:11raptori'm in you level
05:15:13raptori see it
05:15:18raptorrendering is wrong
05:15:28raptorbecause of using a different mPos?
05:15:34raptorerr... i mean center
05:16:28sam686`must be something to do with pach / unpack problem...
05:16:43raptori don't know - i think it's just the rendering
05:16:58sam686`because the server side appears fine, but the client side isn't, probably pack / unpack at wrong position
05:18:50raptori will mark off the bug on the wiki
05:40:09sam686`ok, i have just fixed turret going out to space problem, in this case, by adding mPos to EngineeredItem
05:40:43raptor Quit (Remote host closed the connection)
05:41:12sam686 Quit ()
05:41:18BFLogBot - Commit 32f86f1566de | Author: sam8641 | Log: turret going out to space, added mPos for EngineeredItem
05:41:54raptor has joined
05:41:54ChanServ sets mode +o raptor
05:42:03sam686` is now known as sam686
05:42:09raptorback
05:42:14ChanServ sets mode +v sam686
05:42:53raptori'm going ot make a quick test level with all the items in it...
05:43:01sam686double "016 test server on master"?
05:43:35raptoroops, killed one, let me update it...
05:44:12sam686"016 test server on master" have a turret floating out to space problem...
05:44:20raptoryes, recompiliing...
05:45:47raptorok, back up
05:46:43sam686ok, looks good..
05:46:57raptoryes?
05:46:59raptorok
05:47:02raptorwhat should we test?
05:47:44sam686not sure, maybe test if all my levels and bots still work?
05:47:59raptorok
05:51:30raptorcrash?
05:51:44sam686"If this ever gets triggered, please remove the comment above, and add a note about how we get here..."
05:51:51sam686its a TNLAssert
05:52:08sam686Ship.cpp line 1622
05:53:37sam686by the way my engineer bot is http://sam686.maxhushahn.com/bitfighter/robots/engineer.bot
05:54:17sam686looks like the problem is trying to set loadout..
05:56:35sam686i might as well try delete a "// Safe to delete this block? "
05:56:53raptorsure
05:56:56raptorclean-up time
05:58:52sam686***ROBOT ERROR*** in robots/engineer.bot ::: Robot error handling event Tick: robots/engineer.bot:15: Variable 'ResourceItemType' cannot be used if it is not first declared.. Shutting bot down.
05:59:53sam686oh, my error, i see setEnumName(ResourceItemTypeNumber, "ResourceItem"); should be "ResourceItemType"
06:03:52sam686ok, pushed a change, that makes engineer bot work again.
06:04:37raptorok
06:04:58sam686haha, something tells me the bots needs some fixing - look at my server test host..
06:05:43raptorcan't connect
06:05:45raptorhigh ping
06:06:17sam686http://sam686.maxhushahn.com/upload/text1201/120122_00-01-14.txt it seems to have just crash
06:06:22BFLogBot - Commit 267def76ae2e | Author: sam8641 | Log: Fix a few robot problems, to make Engineer bot work again
06:07:09raptorok restarted on master
06:08:02raptorfound a crash when loading soccerball into bitmatch...
06:08:05raptori think...
06:09:00raptorjust an assert...
06:14:16sam686i think i found a problem in game.cpp line 383: if(gServerGame->getClientInfo(i)->getName() != mName)
06:14:18sam686isn
06:14:30sam686is that going to set all players authenticated?
06:15:29sam686because all clients except its own will be set authenticated on that loop, it appears
06:15:41raptornot sure
06:16:24BFLogBot - Commit 664d8fc9661a | Author: buckyballreaction | Log: Remove pointless assert
06:16:27sam686there is one way to test...
06:18:07sam686i think i see now, the loop suppose to tell all clients except its own, that this player is authenticated..
06:20:42raptorfound another bug...
06:20:46raptorgo to your test server
06:21:26BFLogBot - Commit 186b79d063f8 | Author: sam8641 | Log: Fix an error, Robots have NULL getConnection
06:23:44sam686oops, now it wants to wuit, hit the wrong button on assert..
06:23:53raptorhaha
06:24:21sam686this time, i think i got your removal of assert gone..
06:24:26sam686from updating
06:24:26raptorok
06:29:01sam686VoteStart crash...
06:29:11raptorhmmm...
06:29:19raptorso is that soccerball bug a bug?
06:29:41sam686the usual problem, getClientInfo(i)->getConnection()->mVote = 0; trying to access Null gameconnection from robots
06:30:20raptorremoving gameconnection from robots has given us tons of bugs
06:33:20sam686more Null connection problem: getClientInfo(i)->getConnection()
06:33:24sam686getClientInfo(i)->getConnection()
06:33:40sam686wrong line, i couldn't copy yet..
06:33:50sam686edit and continue, see if that works'
06:34:08raptorhotswap code?
06:34:21raptorwell, so far the editor has been stable...
06:34:47raptorah flagspawns with soccerball...
06:34:52raptorforgot about that.
06:35:14sam686looks like edit and continue fail.
06:38:08sam686more null connection problem..
06:42:05raptormaybe we should just look for getConnection()-> anywhere in the code
06:47:24raptori saw all names duplicated onscoreboard
06:47:42raptori crashed
06:47:59sam686i got some tnl asserts...
06:48:25raptorah yes, that's what i got
06:48:44raptor"We need a clientInfo for this ship!"
06:51:29BFLogBot - Commit 85749e143d06 | Author: buckyballreaction | Log: Quiet some noisiness
06:56:31BFLogBot - Commit e2101557908b | Author: buckyballreaction | Log: Don't use loadout indicator logic server-side
06:57:10raptorok sam686, i think i'm off to bed...
06:57:35sam686ok, night
06:58:01raptorgood work tonight
06:58:05raptornight
06:58:21raptor Quit (Remote host closed the connection)
07:01:33BFLogBot - Commit a5746ae4d587 | Author: sam8641 | Log: Fix some Null game connection pointer from robots
09:37:53Watusimoto has joined
10:41:49koda has joined
10:49:33LordDVG has joined
10:57:29LordDVG Quit (Remote host closed the connection)
12:15:51koda Quit (Quit: koda)
14:03:29CrazyLinuxNerd has joined
15:04:10raptor has joined
15:04:10ChanServ sets mode +o raptor
15:04:15raptorgood morning!
15:08:41CrazyLinuxNerdgood day!
15:35:10karamazovapyare we really down to TWO bugs?
15:35:23raptorlooks like just minor things left...
15:35:44karamazovapywhoa whoa whoa whoa...so 016 is gonna exis?
15:35:49karamazovapy+t
15:35:55raptorhaha, i sure hope so
15:36:08karamazovapyneat
15:36:26raptorWatusimoto: have you done any more work on bug #21.1 - the wall rendering in levelgen preview?
15:38:12WatusimotoI've confirmed it's still broken :-)
15:38:30WatusimotoI think there is only one small step to fix it
15:38:39Watusimotowell, one step
15:38:41Watusimotomaybe two
15:38:53karamazovapyI'm gonna have to make some Core levels for the next BBB
15:38:57raptorthat was why you did the WSM refactor, correct?
15:39:31Watusimotothe editor needs to 1) insert the new walls into a serparate db, which I think it does already
15:39:43raptoryes
15:39:48Watusimotothen 2) it needs to rebuild all the wall edges and segments, using that database, which I think it does not yet do
15:40:12Watusimotothe rebuild methods need a minor refactor to get the various parts they need (edge database, etc.) from the main database they are handed
15:40:21Watusimotoright now they aer passed those parts separately
15:40:54Watusimotoand 3) when we draw, we need to draw from the main database and from the separate db
15:41:03Watusimotowhich may or may not already happen
15:41:22raptorso what exactly was your refactor doing to make this easier?
15:41:28raptori don't remember
15:41:30Watusimotothese aer all easy and straightforward, and i keep trying to work on them but am being distracted by real life
15:41:49Watusimotothe refactor put the wsm onto the database, so now we can do step 2
15:41:55raptorok
15:42:02raptorlet me see what I can do...
15:42:40raptoroh, on your paper list... the selectWeapon one - did you mean for all the logic to be client-side? including the server->client message about switching weapons?
15:43:08Watusimotoyes -- the issue is clients can turn off weapon indicators
15:43:23raptorthat doesn't seem like it's an issue...
15:43:27Watusimotoif indicators are off, they should get messages
15:43:32Watusimotoif indicators are on, they shoudl not
15:43:38raptorahhh....
15:43:43raptornow i get it
15:43:43Watusimotothe case is that the decision about messages is being made on the server
15:43:53Watusimotowhihc has no idea about whether indicators are on or off
15:44:01Watusimotoso messages are sent based on the server setting
15:44:07Watusimotobut
15:44:07raptori didn't know that messages should not be sent if indicators are on..
15:44:19Watusimoto"you've changed weapon to..."
15:44:29raptorBurst selected
15:44:40Watusimotothe real question, however, is if we want to allow disabling of indicators at all
15:44:50Watusimotoif we get rid of that, this whole case becomes moot
15:45:14Watusimotok is, as far as I know, the only person who wants this option, and, as far as I know, he has disabled it because it doesn't work properly
15:45:19raptorI think i can fix this without the removal o fthe option
15:45:42raptorspeaking of server options - should we allow an 'engineerAbuse' INI option?
15:45:53Watusimotoof course you can, but the question is do we want the option? it's something that (almost) no one uses, and will continue to be a support issue
15:45:59Watusimotowell, fix it if you like
15:46:06Watusimotothat;s the issue
15:46:22raptorah
15:46:27Watusimotothere may be other problems with disabling indicators; I don;t know, as I don't ever do it
15:46:46raptorsome of the more popular levels (Castles on the 'Gibbed' server) require the old engineer logic...
15:47:07Watusimotoold engineer logic being allowing ffs anywhere?
15:47:16raptoralmost anywhere yes
15:47:26Watusimotowhy do they require it?
15:48:11raptorthe level is built to allow engineer anywhere and to allow both teams to use it that way
15:48:28Watusimotoand it somehow becomes "broken" wiht out new changes?
15:48:33Watusimotowith our
15:48:56raptoryeah - barriers are in lots of spots purposefully close to good places to do forcefields
15:49:17raptorhave you not seen the level?
15:49:22Watusimotobut it lets you creat impossible levels, no?
15:49:30raptorno, not really
15:49:45raptorit was built well to always allow a way to still get the flag
15:49:56Watusimotook, so what do you propose?
15:50:03Watusimotoa "allowImpossibleLevels" special?
15:50:09raptorno
15:50:11Watusimotothat allows ffs to go anywhere?
15:50:26raptorjust a server option to allowForcefieldAbuse
15:50:31raptoror something
15:50:46WatusimotoallowImpossibleLevels == allowForcefieldAbuse
15:50:52raptoroh yes
15:50:53raptorsorry
15:50:57raptoryes, that
15:50:57Watusimotonp :-)
15:52:17raptorthat would require the abuse logic to move server-side; right now a hacked client could put forcefields anywhere they please
15:52:55Watusimotothe logic should run both client side and server side
15:53:06Watusimotoclient side shoudl work as is
15:53:16Watusimotosame code could be run on the server, and could just fail silently
15:53:50Watusimotothe only way the serverside check would fail is if we have a hacked client, and they I don;t care about showing the player a nice message
15:55:29Watusimotoif we haev a allowForcefieldAbuse flag, we'll need to send that flag to the client (probably alongside the enableEngineer flag), and disable your nice client side checks
15:56:18raptorOK, but i'm still wondering if we should have a flag like that
15:56:27raptoror maybe it should be a level special?
15:56:58Watusimotoit would be a level special, sure, how else would we do it?
15:57:10raptorserver option
15:57:22raptorjust a particular server would allow it
15:57:40Watusimotodefinitley a level parameter, not a server parameter
15:58:30WatusimotoI think I prefer allowFFAbuse to my proposal
15:58:46raptoras wording, you mean?
15:58:48raptor:)
15:58:59Watusimotoyes
15:59:08Watusimotoit sounds like you think we need this capability
15:59:19Watusimotofor certain levels
15:59:29Watusimotoit;s clear we need your abuse protection for most levels
15:59:35Watusimotoso a special is the only solution
15:59:43Watusimotoand not a difficult one
15:59:47raptorevery week day i go on a play, it seems lots of school kids are playing that 'Castles' level on 'Gibbed' server
16:00:08Watusimotonor, I think, does it violate the idea of consistent rules, at least not too much
16:00:14raptorok
16:00:25Watusimotopeople like engineer, sadly
16:00:44WatusimotoI've conluded it was probably a mistake to add, but that;s a done deal
16:00:57WatusimotoI don;t think we can take it away :-)
16:01:20Watusimotoso let's implemetn your flag idea
16:01:25raptorok
16:01:41raptorso in editor, we have 'Allow engineer' and 'Allow Forcefield Abuse' now?
16:02:22raptoror maybe we hide it and let people have to figure out how to add the abuse flag to enable :)
16:04:29Watusimotoyes
16:04:55raptorto which?
16:04:58Watusimotoif allowEgineer is not speicified , allowFFAbuse or allowEngrAbuse would do nothing
16:05:31Watusimotoyou were asking if we should expose it in the editor?
16:05:35raptoryes
16:06:04Watusimotoprobably; maybe the editor can have a 3-way toggle
16:06:31WatusimotoEngineer: Disabled / Allowed / Allowed with Abuse (Not recommended)
16:06:43raptorha! I like it
16:07:03Watusimotoor maybe disbaled/allowed/unlimited (n.r.)
16:12:44Watusimotoon a different topic
16:12:47Watusimotomy son has the following core suggestions: he thinks there should be an alarm or something when an enemy player comes within a certain radius of the core
16:13:14WatusimotoI could see that being cool, or annoying...
16:13:19raptorinteresting
16:13:34Watusimotomaybe some sort of visual indicator when a core is under attack
16:13:45Watusimotolike the core symbol in the scoreboard flashing?
16:13:54raptorthe game 'gate88' does this - if a building in your base is being attacked, the health bar starts going goofy
16:14:07Watusimotosince you like flashing
16:14:17raptori think it's a good idea
16:14:21Watusimotobut I think some indicator might be useful
16:14:38raptoryes
16:14:50Watusimotook, well think about how to best represent it, and I say we try doing it if it isn;t too hard
16:15:02raptorok, i'll add to wiki
16:15:12WatusimotoI'm being summoned to put togeteher more furnuture... I'll be back on later
16:15:17raptorlater
16:15:19raptorand thanks
16:15:24Watusimoto:-)
16:15:28Watusimotobye!
16:15:35raptorbye
16:23:00raptorcan anyone tell me the general difference in usage between readControlState and unpackUpdate methods?
16:45:15raptorkaramazovapy: now that the editor is pretty stable, want a copy of 016 to build with?
16:51:20raptor Quit (Read error: Operation timed out)
16:58:21raptor has joined
16:58:21ChanServ sets mode +o raptor
17:17:24BFLogBot - Commit 4ee6d8fb68c1 | Author: buckyballreaction | Log: Finish moving loadout indicator messages client-side
17:25:09karamazovapysure
17:27:06raptorhere you go: http://sam686.maxhushahn.com/upload/bitfighter-016-preRC.7z
17:27:51raptorthis is a 'release' build, so you shouldn't get those annoying pop-up debug messages... but you may experience more crashes...
17:27:56raptor(but hopefully not)
17:28:08karamazovapysave early, save often
17:28:15raptorhehe, yep
17:35:51raptorshould i make the level Special 'AbusiveEngineer' or 'EngineerWithAbuse' or just 'EngineerAbuse'
17:36:01raptorbecause whatever I choose sticks with us...
17:36:23karamazovapyis that actually going to be grandfathered in?
17:36:33raptoryeah - it is simple enough
17:37:01karamazovapyhow about something like ProximityEffect
17:37:05raptorsigh - them grandfathers...
17:37:32raptorwell, we may expand or change the logic...
17:37:33karamazovapyalthough I guess that isn't very descriptive of engineer itself
17:37:47raptorso i'm looking for a more generic name
17:38:04karamazovapyLimitedEngineer/FullEngineer
17:38:06karamazovapy?
17:38:28raptorand in the editor, it will be three options: Off, Engineer, <abusiveEngineer?>
17:39:09raptorthe third option to allow abuse will have a "(not recommended)" text next to it
17:39:11karamazovapyare we trying to make it so that all current engineer levels will use the limited rules?
17:39:21raptoroh yes - and they will
17:39:40karamazovapyso we really are looking for an alternate title for old engineer
17:39:40raptorlevel owners will have to explicitly specify this option to allow the previos abuse behavior
17:40:05karamazovapybecause limited engineer will just be "engineer"
17:40:29raptorcorrect - but i like to think of it as 'normal engineer'
17:40:30karamazovapywhy don't we leave the old one out of the editor entirely and make people adjust the code?
17:40:41raptorthat was my suggestion too :)
17:40:50karamazovapythat might have my vote
17:41:36karamazovapyNoRulesEngineer?
17:41:49karamazovapyOpenEngineer
17:42:01karamazovapySandboxEngineer
17:42:10raptorooo... that is a good one
17:42:40raptori only bring this up because we'd have to stick with it
17:42:41karamazovapyDugeonEngineer, PuzzleEngineer
17:42:49karamazovapy*DungeonEngineer
17:43:02raptoryou think?
17:43:04karamazovapyif we're going to introduce a dungeon gametype at somepoint
17:43:33raptorDungeon is synonymous to Sandbox for us, right?
17:43:41karamazovapysome of the dungeonesque puzzles might require forcefield placement near walls
17:44:31karamazovapyI don't think it makes a huge difference, but the option for consistency with the open gametype is available
17:44:57raptoryes, i think consistency is important
17:45:25karamazovapyWatusimoto - do you have a strong opinion on what the future dungeon gametype would be called?
17:46:56raptorI think 'Dungeon' was essentially already decided
17:50:53raptorEngineerExploit
17:52:48raptorI'll just make it 'DungeonEngineer' for now
17:59:54Watusimoto Quit (Ping timeout: 252 seconds)
18:14:24raptorsam686: if you're around, do you have a diff of what you tried to do to make the engineering test logic server-side?
18:16:21sam686to disable engineerisng checking client side, engineerHelper.cpp line 189, try using if(true) instead of if(deployer.canCreateObjectAtLocation...
18:17:08raptorah, there it is... i forgot it was called from the helper...
18:17:13raptorthanks!
18:18:16raptorok, looks like it is already both client and server sided - did you do this?
18:21:02sam686maybe, because you stopped using wall segment database for engineer checking which fixed the server side detection problem
18:24:47raptorok
18:24:57raptoryes, that is good now
18:25:45raptorok
18:26:14raptori created another flag server-side in gameType: mEngineerAbuseEnabled
18:26:33raptorhow would i send that client-side?
18:29:44sam686i will be adding an easier way to show that engineering is not allowed at that location
18:30:22raptorok
18:30:53sam686maybe, you can send mEngineerAbuseAnabled with the mEngineerAllowed or similar...
18:31:06raptoryes
18:31:32CrazyLinuxNerd Quit (Quit: Leaving)
18:32:31BFLogBot - Commit d7e5ebe6056d | Author: sam8641 | Log: Check deployment, so square will be green if allowed, red if not allowed, helps engineering
18:32:52sam686there, easier to engineer, i hope...
18:34:09raptortaking a look..
18:34:51sam686as for sending mEngineerAbuseEnabled, you can add that into s2cSetLevelInfo
18:40:01raptorisn't that an expensive check?
18:40:02raptorcanCreateObjectAtLocation
18:40:12raptorto be put into a render method?
18:40:19Watusimoto has joined
18:41:32sam686it doesn't seem expensive at all, my fps goes from 180 no checking to 120 fps with checking...
18:42:08sam686besides, it only ckecks when you are trying to engineer..
18:42:14raptorok
18:42:27raptori do like it
18:42:32Watusimotohi
18:42:35raptori was just worried about performance
18:42:43Watusimotoreading back in the history...
18:43:11WatusimotoI think when we get down to it, dungeon will have to be a Special, not a proper gametype in iteself
18:43:18raptorawww
18:43:22Watusimotobecause there are dungeons built around many existing gametypes
18:43:50WatusimotoI don;t see how to create a single dungeon gametype that will let people do what they want
18:43:54raptori already considered that
18:44:01Watusimotoand...
18:44:09raptorthe scoring methods in gametypes
18:44:25sam686its easy to tell the clients (for "Select Levels") to show any GameTyoe names,,
18:44:27raptori was going to add every possible scoring event and allow for a point for each one
18:44:29Watusimoto(that was a prompt for you to continue, not that I was going to continue)
18:44:48raptor(i was typety typing... slowly...)
18:45:09Watusimotoso a sort of multi-gametype
18:45:11Watusimotopolygame
18:45:28raptorcorrect - i found this out when creating CoreGameType - it was easy to make anything a scoring event
18:45:46Watusimotowell... that's an interesting thought
18:46:06Watusimotobut flag handling is different in different gametypes, no?
18:46:17raptornot for scoring
18:46:22Watusimotoin ctf vs. zc, for example
18:46:44raptorah, see that's a different scoring event
18:47:06Watusimotoright -- but in non-ctf games, different things happen if flags touch
18:47:16Watusimotousually nothing -- in ctf, something
18:47:33raptortake a look at enum ScoringEvent in gameType.h
18:47:40Watusimotoalso, flag handling is completely different in Nexus
18:47:44raptorthose events are triggered by each game type
18:48:03Watusimotobut I'll bet that there are very few dungeons that depend on ctf flag handling or nexus scoring
18:48:05raptorand then scoring is done based on the event
18:48:17raptori have seen none that do it
18:48:20Watusimotoright; but if I die, does my ship emit a flag in dungeon?
18:48:37raptorha! i'm on a completely different topic
18:49:06Watusimotoif I have a flag and I fly into an open nexus, what happens?
18:49:07sam686i haven't hardly seen any nexus dungeon game type...
18:49:08raptorthat is gameType specific and has nothing to do with the scoring event
18:49:17Watusimotoright
18:49:31Watusimotobut you are saying that dungeon will not be based on an existing gametype
18:49:35raptoryes, well we can ignore nexus events
18:49:39Watusimotobut will enable all scoring events
18:49:39raptorcorrect
18:49:50raptorall events minus some specific ones, if we wish
18:50:35karamazovapydungeons are made primarily around retrieve and ctf gametypes
18:50:40karamazovapymostly retrieve
18:50:43Watusimotosam -- what gametypes have you seen for dungeons?
18:51:08karamazovapynexus, ZC, soccer, HTF never happen
18:51:15Watusimotook, well, retrieve and ctf behave differently if a player with a blue flag runs over a red flag
18:51:15karamazovapyobviously not bitmatch
18:51:20sam686retrieve, and ctf, mostly..
18:51:36karamazovapyctf dungeons would be easy to adjust into retrieve dungeons
18:51:50WatusimotoI guess existing games can continue to exist wihtout being labeld "dungeons"
18:52:01karamazovapyalso true
18:52:17Watusimotoand future dungeons will just base themselves around whatever ruleset we decide on if they want the extra features we'll unlock in dungeon mode
18:52:30sam686i have seen a few zone control dungeons..
18:52:38karamazovapyreally? which ones are ZC?
18:52:58raptoryes, i think i've seen ZC, too
18:53:00WatusimotoI think zc is a natural for dungeons
18:53:21karamazovapyflag carrying and death make ZC inconvenient
18:53:23Watusimoto5 zones, each requiring solution to a different puzzle
18:53:53karamazovapyunless you allow multiple flags, you can only work one puzzle at a time
18:54:11karamazovapybut if you allow multiple flags, what's the point of using zone control over retrieve?
18:54:30Watusimotowell, even if we enable all scoring events in dungeon mode, I think it makes sense to allow the game to be based on the different rulesets allowed by different gametypes
18:54:42Watusimotowhich would argue for a dungeon flag, rather than a dungeon gametype
18:54:55karamazovapyI dislike dungeons in the first place, so my opinion doesn't matter so much on this one
18:55:03Watusimotowell, sure it does
18:55:34Watusimotobecause part of this is figuring out how to identify dungeons so the rest of us don;t have to play them :-)
18:55:40raptorhaha
18:56:26Watusimotowe could even add an indicator in the join server section that showed which servers were certified dungeon free
18:56:29raptori guess i see how ZC and and retrieve would conflict
18:56:33sam686i have these dungeon maps: 4 ctf, 1 htf, 1 nexus, 15 retrieve, 4 zone control..
18:56:51Watusimotook, well it doesn;t have to be resolved tonight -- that's a 016a feature
18:56:56karamazovapyNot sure how I feel about this marketing:
18:56:57karamazovapy
18:56:57karamazovapyDear Amazon.com Customer,
18:56:57karamazovapyCustomers who have purchased or shown interest in textbooks might like to know that when they spend $50 or more on new textbooks they get $5 in free MP3s.
18:57:02raptorby using an entirely new GameType - BUT, what if we just code another option 'flavor' for the dungeonGameType
18:57:31Watusimotowhat do you mean?
18:57:44karamazovapywhat if we left the gametype alone and used a specials flag?
18:57:57Watusimotothat's what I'm thinking at the moment
18:58:08sam686a simple flag that simply changes the game type name..
18:58:13Watusimotoyes
18:58:28WatusimotoGametype: Dungeon (based on Zone Control)
18:58:37Watusimotoor Dungeon (Zone Control rules)
18:58:40Watusimotoor something
18:58:52raptorah, see you are all thinking much simpler than I am
18:58:53Watusimotoexcept I really hate the name dungeon
18:59:08raptorspaceMazeCraze
18:59:10WatusimotoPuzzle (brought to you by Soccer)
18:59:21karamazovapySandbox (brought to you by Mattel)
18:59:35raptorGauntlet
19:00:13Watusimotohave you decided on the name of the flag for allowing ClassicEngineer?
19:03:11raptorI might just go with 'AbusiveEngineer'
19:03:50karamazovapyI still kind of like OpenEngineer, but I dislike engineer in general
19:05:05raptoreasy enough to change... i still haven't checked in yet...
19:10:37WatusimotoClassicEngineer / OldEngineer / UnlimitedEngineer / BrokenEngineer
19:10:51WatusimotoCrappyEngineer
19:13:33raptorsam686: i added the flag to s2cSetLevelInfo, but it is always falst on the client end... i am missing something somewhere
19:13:38raptor*false
19:15:28sam686are you sure, in GAMETYPE_RPC_S2C(GameType, s2cSetLevelInfo,..., you added a mEngineerBlahBlahEnabled = engineerBlahBlahEnabled; ?
19:15:41raptoryeah, let me get you my patch
19:16:13sam686is it always false server side?
19:16:54raptorhere is patch: http://sam686.maxhushahn.com/upload/abusive_engineer.diff
19:17:08raptori'm pretty sure i set it to true when processing the Specials param
19:18:37Watusimotohaven't tested it yte, but:
19:18:41Watusimotosquare will be green if allowed, red if not allowed
19:18:45Watusimotolooks like a great idea
19:19:13raptorbe back in about 15 min..
19:30:53sam686raptor , the patch you give me, there is nothing wrong with mEngineerAbuseEnabled and a level having "Specials AbusiveEngineer"
19:31:01sam686more like, the editor is getting rid of
19:31:11sam686"AbusiveEngineer" in editor
19:32:46sam686must be something missing in "string GameType::getSpecialsLine()"
19:34:27raptorahh...
19:34:36raptorthat editor...
19:36:50Watusimotomaybe UnrestrictedEngineer ?
19:36:52raptoryou're right! that was it
19:36:57raptorok
19:36:59Watusimotoor EngineerUnrestricted
19:37:14raptorI'm about to commit the logic for it
19:37:23raptor'EngineerUnrestricted' ok?
19:37:31Watusimotomaybe AllowEngineer and AllowEngineerUnrestrcted (rather than two separate keywords)?
19:37:56raptorso just 'Engineer' is used now
19:38:00raptorin level files
19:38:04raptordo we want to break it?
19:38:09Watusimotook so Engineer and EngineerUnrestricted?
19:38:19raptorsounds good to me
19:38:20Watusimotono need to break what we've got
19:38:21CrazyLinuxNerd has joined
19:38:53raptorok i'll hcange it to that
19:38:57Watusimotook
19:48:11raptorok, pushed
19:48:19raptorstill have to add the editor option (if we really want to)
19:48:53raptori'm almost inclined to have it be something you have to manually add to the file
19:49:54raptorgotta go - i'll be back in a few hours
19:50:08raptor Quit (Remote host closed the connection)
19:52:40BFLogBot - Commit f980d7bc485e | Author: buckyballreaction | Log: Grandfather in the unrestricted engineer behavior. Use 'EngineerUnrestricted' in a level file in place of 'Engineer'
20:54:14koda has joined
22:03:06CrazyLinuxNerd Quit (Quit: Leaving)
22:10:53raptor has joined
22:10:53ChanServ sets mode +o raptor
22:11:43raptordid i miss anything?
22:16:27raptorWatusimoto, sam686, are either of you working on the levelgen-wall bug? (If not, I can start it...)
22:22:08WatusimotoI AM
22:22:13Watusimotooops, caps lock
22:22:29Watusimotogot distracted by news about the primariy in SC
22:22:30raptori'm temporarily deafened
22:22:41Watusimotosomewhat stunned by the news
22:22:47raptorwhich news?
22:22:54raptorthe win or the lose?
22:22:56Watusimotonewt gingrich winning the primary
22:22:58Watusimotoboth
22:23:27WatusimotoI thought he would do ok, but I was pretty sure Romney would win
22:24:04Watusimotothink all I have to do to finish the case is the rendering
22:24:25raptori still don't know what to think...
22:24:35raptorabout any of the prospective candidates
22:25:05raptordo Belgians (or other Europeans) worry about the US presidential elections much?
22:26:23Watusimotoonly the ones who want to show off their worldliness :-)
22:26:39Watusimotothey probably will closer to november
22:28:51raptori guess i'll look into why robots get stuck on FFs
22:30:24Watusimotook, good
22:30:28Watusimotogetting close!
22:31:34raptoroh, so your paper list: http://pastie.org/3221815
22:31:44raptor#1 is done
22:31:57raptor#3, i haven't been able to duplicate since sam's spawnshield fixes
22:32:15raptor#5 is ambiguous :)
22:33:07raptor#6: I found that those errors are given because there is no method for passing LUA errors back as /command errors
22:33:21raptorand i'm not sure how to do it..
22:34:46Watusimotoyou wrote it up@
22:34:47Watusimoto!
22:35:03raptorwas that bad?
22:35:30Watusimotono, great
22:36:01Watusimotoso for #6, do we need a mechanism?
22:36:21raptorwell, i got into LUA territory again, and sort of got lost...
22:36:30raptorit already write to the oglconsole
22:36:33WatusimotoI see
22:36:40raptorand says "file not found"
22:36:42raptorthere
22:36:54Watusimotothough it doesn't actually involve lua specifically, only the calling framework
22:37:15Watusimotoso there are two ways I can see to deal with it
22:37:30Watusimoto1) bubble the error back up to the original caller
22:37:44Watusimotoor 2) print a message to the user at the point of the error
22:37:54Watusimoto(or 3) leave things alone, I suppose)
22:38:28Watusimotowe handle the logprintf bit via #2, right?
22:38:54raptori think so, yes
22:39:02Watusimotoand we don't have enough context about how the script was run to do #2 with printing the message to the chat area
22:39:14Watusimotounless...
22:39:39raptorrobot.cpp:1834
22:39:44Watusimotowhat if we created another log consumer that dumped messages to the game message area
22:40:01raptoris how it is printed...
22:40:24Watusimotothat way whatever was logprintf'ed would get sent to the player's screen
22:40:54raptori think that may be a good idea...
22:41:18raptorbut should we do it for 016 (I'm not exactly sure what's involved - i've never messed with the logging stuff)
22:41:24Watusimotoat 1824, we have the game
22:41:32Watusimotothe game gives us access to a lot of stuff
22:41:39Watusimotosorrt, at 1834
22:42:12Watusimoto1834 should be changed to a single logprintf
22:42:31Watusimotowith a correct LogConsumer::xxx thingy
22:42:48Watusimotoand the message will end up in both the logfile and the oglconsole
22:43:32raptori found setupLogging in main.cpp
22:43:36raptor978
22:44:36Watusimotoconsole gets these msg types:
22:44:37WatusimotoAllErrorTypes |LogConsumer::LuaLevelGenerator | LogConsumer::LuaBotMessage | LogConsumer::ConsoleMsg
22:45:26Watusimotowe seem to use LuaBotMessage for bot errors:
22:45:28Watusimoto if(thisShip.isNull()) // This will only happen when thisShip is dead, and therefore developer has made a mistake. So let's throw up a scolding error message!
22:45:28Watusimoto {
22:45:28Watusimoto logprintf(LogConsumer::LuaBotMessage, "Bad programmer!");
22:45:28Watusimoto return NULL; // Not right
22:45:30raptorahhh... you set up a LogConsumer class
22:46:10WatusimotoI'm changing 1834 to send message using LogConsumer::LuaBotMessage category
22:46:28raptorok
22:46:59Watusimotoso we could also create a log consumer that listens for LogConsumer::LuaBotMessage messages and prints those to the console under certain circumstances
22:47:06raptorand then that LogConsumer class has a writeString() method to output wherever you want...
22:47:18Watusimotoyes
22:47:27raptorprints to console? you mean print to UI?
22:47:33Watusimotoyes
22:47:40Watusimotosorry
22:48:10raptorso a new class, something like UIGameLogConsumer
22:48:21Watusimotoor we could have a separate logprintf category that prints only to the UI, with prettier messages
22:48:34Watusimotobecause sometimes console messages get long and ugly
22:48:41raptoryes, yes they do
22:49:10Watusimotologprintf(LogConsumer::GameUIMessage, "Bot file not found; see console for details");
22:49:33Watusimotonot sure if that's a good solution... alternatively:
22:49:58Watusimotogame->printMessageToUI("Bot file not found; see console for details");
22:50:22Watusimotothough the game we have there is almost certainlhy a serverGame
22:50:55Watusimotonot sure which is better
22:51:14Watusimotobut I think either would solve the problem without trying to cascade the error message up the stack
22:51:48Watusimotowhich would be akward without a real exception chain
22:52:28raptoryeah - it's server game...
22:52:50Watusimotoit would have to be
22:52:52raptorit would still have to use the s2cDisplayMessage
22:53:03raptorto tell the client
22:53:19Watusimotoactually, which might be good anyway, for remote users trying to run commands
22:53:51Watusimotogame->s2cDisplayMessage("Robot file not found");
22:54:11Watusimotoconsole details would only be available to local player for the moment
22:54:25Watusimotothough at some point we should make console contents available remotely
22:55:07Watusimotomaybe via a network aware logprintf listener
23:07:30raptorsounds more complicated than I wished for...
23:08:51Watusimotono, not at all
23:09:17Watusimotois the game->s2cDisplayMessage("Filenot found"); easy enough?
23:09:27raptorsounds easy to me
23:09:33Watusimotothe other stuff is a future enhancement
23:10:09WatusimotoI think the s2cDM solution would fix the issue I was concerned with
23:10:50Watusimotoif it works, it might be a pattern for doing the same with other bot errors in the future
23:10:50raptorexcept that method is part of gameConnection
23:11:26raptornot game
23:11:28raptorhmm..
23:11:43Watusimotoah, and we don't kwnow which client wants to see the message
23:12:04Watusimotobecause we would only send it to the person running the command
23:12:33raptoryep, i could pass in the pointer in to the Robot::processArguments method...
23:12:41raptorbut that seems sloppy
23:12:45Watusimotobut only for this?
23:12:46Watusimotoyues
23:12:47Watusimotoyes
23:12:49Watusimotoi agree
23:14:07Watusimotocould have processArguments() return a string, "" == success, anything else is an error message
23:14:14Watusimotokind of yucky
23:14:32raptori guess that's true..
23:14:39raptornot elegant either...
23:14:45raptorbut more versatile
23:14:50Watusimotocould pass a string &errorMessage which we fill with an error message in the event that the method returns false
23:15:05raptori kind of like that the best so far..
23:15:17Watusimotothose are the two ways I know of to propigate the message up the stack, which is what we seem to be left with
23:15:30raptori'll do the argument..
23:15:39Watusimotoor we could wrap the whole thing in a try/catch and throw an exception
23:15:42Watusimotojava style
23:15:47raptornooooooooooooooooooooo
23:15:54Watusimotono? you like java!
23:16:01raptori do enough of that at work...
23:16:05Watusimotoha
23:16:12raptori like java because it gets stuff done fast
23:16:37Watusimotodo you happen to know how many levels up we need to go to make this work? is it only one?
23:16:51WatusimotoI'll look if you don;t know
23:16:56raptorjust the one, i think - there are two instances of 'see error log' messages
23:17:05raptorand both are because of calling methods in Robot::
23:17:29karamazovapyanybody want to buy a hot tub?
23:17:47karamazovapyhttp://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=130634966072&ssPageName=ADME:L:LCA:US:1123
23:17:49Watusimotoyour club needs a hot tub! VIP baby
23:17:55raptora hot tub would be fun, but the energy payments no so much...
23:18:30karamazovapydid I mention I've raised $50,000 in private investment capital?
23:18:35raptorWOW
23:18:53Watusimotogreat
23:18:59Watusimotoyour mom loves you
23:19:12Watusimotoand had 50 large lying around, right?
23:19:13Watusimoto:-)
23:20:08Watusimotoso if it's only one level, pick the least evil way to pass the message up and let's just do it that wya
23:20:25Watusimoto@k awesome job on the money
23:26:11raptorok, i did the argument thingamajig
23:26:22Watusimotonot too horrible, I hope?
23:26:26raptorso your #6 is done
23:26:38raptornot too bad...
23:26:56Watusimotogreat
23:27:51Watusimotowhy not try the idea of alerting when a player is threatening the core?
23:27:57raptoroh, i made a level with all the objects in it to test: http://sam686.maxhushahn.com/upload/test_object_suite.level
23:28:01BFLogBot - Commit 876236d193ac | Author: buckyballreaction | Log: Bot error message about missing file is sent to the client
23:28:04Watusimotoor ist aht a new feature
23:28:11Watusimotogreat
23:28:18raptoreverything about Core is *a new feature*
23:28:22raptor:)
23:28:47Watusimotoha
23:28:52Watusimoto Quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
23:29:47Watusimoto has joined
23:29:50Watusimotowtf???
23:30:00raptorlast comment: 'ha'
23:30:02WatusimotoI was saying...
23:30:09raptorthen 'Watusimoto has left this server'
23:30:29Watusimotomy son's other idea was to color the walls as you approach a core, so you know you're getting warmer
23:30:38Watusimotoand to give it a bit of an alien feel
23:30:39raptoroh man
23:30:48Watusimotomight not work as well for a blue core, though
23:31:11WatusimotoI'm not so hot on that idea, but wanted to mention it in case anyone else likes it
23:31:30raptori don't even know how I could even program that in with our current systems
23:31:43Watusimotobut it might be cool in the immediate vicinity, to kind of make the walls reflect the color of an item
23:31:58Watusimotowell... there;s that, i suppose :-)
23:32:00raptoryou mean hue slightly?
23:32:04Watusimotoyes
23:32:14WatusimotoI'm not sure how it would work either
23:32:17raptorevery moving object would have 'warmth'
23:32:25Watusimotonot every object
23:32:29Watusimotomaybe only cores
23:32:43Watusimotohis original idea was to do that when approaching enemy bases
23:32:51raptorthis means everyobject will need to constantly do database searches for its neighbors
23:33:05Watusimotobut when I tried to pin him down on what a base was, the idea sort of evaporated
23:33:13Watusimotomaybe only walls
23:33:15raptorhaha
23:33:27Watusimotoit came back when he saw the cores
23:33:39Watusimotowhich, so far, have 100% positive feedback
23:33:46raptorhaha
23:33:47Watusimotomy kids and my wife, that is
23:33:51raptoroh...
23:34:09raptortwo things about core: 1. do we want the heartbeat louder? 2. do we want to repair them?
23:34:31Watusimoto1 not sure, haven;t spent enough time with them to know, probably not
23:34:42Watusimoto2 I think yes
23:34:58Watusimotothey're so easy to kill and repair will be difficutl due to the energy involved
23:35:18Watusimotoso it might be a temptation toward self-destructive bahavior
23:35:30raptorha
23:35:50Watusimotothink how long it would take to repair a damaged core
23:35:56raptorso so long
23:36:02Watusimotoone that could be damaged in like 5 seconds
23:36:06raptorand anyone doing it is an open target
23:36:12Watusimotoi say let them try
23:36:16raptorhaha, oik
23:36:17raptorok
23:36:27Watusimotoit's consistent with other items that can suffer damage
23:36:39Watusimotoexcept asteroids
23:37:10WatusimotoLet me tell you my idea for that graphical improvement to cores I alluded to a while back
23:37:17raptorok
23:37:30WatusimotoI was thinking of rendering a very faint gray hexagon pattern on them, sort of like chicken wire
23:37:49Watusimotomaybe that slowly glided off to one side (or maybe not)
23:37:58Watusimototo give them a sort of carbon-fibery look
23:38:10raptoryou mean bounce along the interior?
23:38:19raptoror more stationary?
23:38:25Watusimotonot just one hexagon, but a whole skin of them
23:38:26raptorah, chicken wire...
23:38:28Watusimotomore stationary
23:38:39Watusimotomaybe moving slightly, not sur
23:38:40Watusimotoe
23:38:45WatusimotoI have no idea if it would look good
23:38:51Watusimotoor how hard it would be
23:39:00raptorhmmm, a constrained mesh that rotates...
23:39:19raptorprobably not too hard once I find code that someone else has written for it... :)
23:39:53Watusimotoprobably just need to set up some sort of clip buffer
23:40:28sam686http://sam686.maxhushahn.com/upload/Bitfighter.mod
23:41:28Watusimotobut... likely to look good?
23:41:33sam686it was probably my fist time making my own "MOD"
23:41:35Watusimotoor just busy?
23:41:40raptorsam686: did you make that??
23:41:52sam686i made it, using bitfighter sounds..
23:41:58raptorhaha, it made me smile
23:42:51Watusimotothat's pretty funny
23:43:04Watusimotoour sounds ain't pretty!
23:43:46raptorok, let me try to get repair working... then i'll work on core alert...
23:43:50sam686i will be back in about 40 minutes, food.
23:45:02Watusimotogood
23:45:13WatusimotoI'll finish this editor work!
23:45:19raptorgo go go!
23:45:24Watusimotospending all my time chatting
23:53:58raptorhealing works! but only if you can get close enough to the core center...
23:57:49raptorok, tell me what you think if this idea....
23:58:08raptorship.cpp:763
23:58:17raptori comment out that test and i can heal Core
23:58:24raptorwhat would the side-effects be?
23:58:43raptori can already see that you could repair turret and forcefield a little farther away...

Index Search ←Prev date Next date→

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