Timestamps are in GMT/BST.
| 00:30:00 | | raptor has joined |
| 00:30:00 | | ChanServ sets mode +o raptor |
| 01:15:00 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 01:25:00 | | koda has joined |
| 02:07:00 | | watusimoto has joined |
| 02:11:00 | sam686 | looking at http://bitfighter.org/forums/viewtopic.php?t=820 i guess either what is suppose to be a bitfighter party now isn't started yet, or there aren't enough players |
| 03:19:00 | | koda Quit (Ping timeout: 252 seconds) |
| 03:21:00 | | Flynnn has joined |
| 03:37:00 | | koda has joined |
| 03:42:00 | | koda Quit (Quit: k thx bai) |
| 03:51:00 | raptor | ok back |
| 03:51:00 | raptor | contest level party over? |
| 03:51:00 | raptor | :( |
| 03:52:00 | karamazovapy | qui came by and played for a little bit, but sky left...we never really got much momentum going |
| 03:52:00 | karamazovapy | also, it "started" nearly two hours ago |
| 03:53:00 | raptor | hmmm - maybe people were out camping... |
| 03:53:00 | karamazovapy | I didn't send out an e-mail or anything |
| 03:53:00 | raptor | do you do that for BBB? |
| 03:53:00 | karamazovapy | yep |
| 04:15:00 | | watusimoto Quit (Ping timeout: 258 seconds) |
| 04:36:00 | raptor | karamazovapy: did you ever test that custom built dedicated server binary? |
| 04:39:00 | raptor | we can vote as much as we want on the community choice?? |
| 05:09:00 | | raptor Quit (Remote host closed the connection) |
| 06:08:00 | | watusimoto has joined |
| 06:43:00 | | Flynnn Quit (Quit: Leaving) |
| 08:13:00 | | watusimoto Quit (Ping timeout: 264 seconds) |
| 08:36:00 | | Pointblank Quit (Ping timeout: 258 seconds) |
| 10:46:00 | | LordDVG has joined |
| 10:46:00 | | LordDVG Quit (Changing host) |
| 10:46:00 | | LordDVG has joined |
| 11:17:00 | | LordDVG Quit (Read error: Connection reset by peer) |
| 11:17:00 | | LordDVG has joined |
| 13:33:00 | | raptor has joined |
| 13:33:00 | | ChanServ sets mode +o raptor |
| 13:33:00 | raptor | good morning! |
| 13:47:00 | | raptor Quit (Remote host closed the connection) |
| 14:03:00 | | LordDVG Quit (Remote host closed the connection) |
| 14:07:00 | | raptor has joined |
| 14:07:00 | | ChanServ sets mode +o raptor |
| 14:22:00 | raptor | Hi sam686, are you still awake? |
| 14:22:00 | sam686 | hi |
| 14:23:00 | raptor | are you working on migrating away from the object mask ? |
| 14:24:00 | raptor | because if not, I can start that |
| 14:24:00 | sam686 | I haven't started it from going away from object mask... |
| 14:24:00 | sam686 | i was thinking of an alternative goal flashing in zone control.. |
| 14:25:00 | raptor | interesting, what would it do? |
| 14:27:00 | sam686 | how does this look for zone control flashing? http://www.youtube.com/watch?v=hOC8GJohxcE |
| 14:28:00 | raptor | looks good - i have to constrast with what it does now.. |
| 14:29:00 | raptor | ah i see now, it's smoother |
| 14:29:00 | raptor | same amount of flashing, just smoother transition between the 'colors' |
| 14:29:00 | sam686 | is my new flashing look better? |
| 14:30:00 | raptor | is it brighter? |
| 14:30:00 | raptor | on the bright part? |
| 14:31:00 | sam686 | yes, it is brighter on the bright part. |
| 14:31:00 | raptor | i like transition, but i think it may be a bit too bright |
| 14:31:00 | raptor | or at least too much contrast |
| 14:32:00 | raptor | (but I am not a very good critic in matters like these..) |
| 14:33:00 | sam686 | maybe the outline should go brighter and not the fill.. |
| 14:33:00 | raptor | yeah, try that |
| 14:34:00 | raptor | for me it is very high contrast with so much bright against the dark space background |
| 14:40:00 | raptor | fun fact: enum cannot be forward declared |
| 14:44:00 | sam686 | does this look better? |
| 14:44:00 | sam686 | http://www.youtube.com/watch?v=cE6I1eiDw_U |
| 14:45:00 | | BFLogBot - Commit 1e5af5a655db | Author: buckyballreaction | Log: Fix compiling - enum cannot be forward declared |
| 14:45:00 | raptor | much better, i think |
| 15:05:00 | | BFLogBot - Commit a9c03a33f61c | Author: sam8641 | Log: Changed Goal flash in zone control with option in INI to go back to old way. |
| 15:21:00 | raptor | sam686: can you do multiple logical operations in a preprocessor definition? like: |
| 15:21:00 | raptor | #define ItemTypeNumber (SoccerBallItemTypeNumber || MineTypeNumber) || (SpyBugTypeNumber) |
| 15:21:00 | sam686 | yes |
| 15:22:00 | raptor | ok |
| 15:22:00 | raptor | hmmm |
| 15:22:00 | raptor | ohhh, i see now, i need to add a backslash to escape newlines... |
| 15:22:00 | sam686 | though it should be like (a || b || c) instead of (a || b) || (c) |
| 15:22:00 | raptor | yes |
| 15:22:00 | raptor | ok |
| 15:22:00 | raptor | thanks |
| 15:24:00 | sam686 | otherwise if #define bit1(a,b,c) (a || b) || (c) with bit1(a,b,c) * 4 will turn into (a || b) || (c)*4 as in multiplying only c and not the whole bit1.. thats an example |
| 15:24:00 | raptor | ah ok |
| 15:28:00 | sam686 | keep in mind (SoccerBallItemTypeNumber || MineTypeNumber) will not work with typeNumbers |
| 15:28:00 | raptor | yes |
| 15:28:00 | raptor | mine was a horrible example, i was just curious about syntax |
| 15:35:00 | | BFLogBot - Commit e1316be61a1c | Author: sam8641 | Log: Fix crash while in game, going to options; get rid of ClientGame::enterMode and move EntryModes enum to UIGame.h |
| 16:01:00 | raptor | ok, so i'd have to do something like this: |
| 16:01:00 | raptor | #define isEngineeredType(x) (x == TurretTypeNumber || x == ForceFieldProjectorTypeNumber) |
| 16:02:00 | sam686 | the main problem is how are we going to search the database for multiple objects at the same time? |
| 16:02:00 | sam686 | pass by Vector in a list of type numbers? |
| 16:03:00 | raptor | yeah... |
| 16:03:00 | raptor | that's the power of using a mask and bitwise operations... |
| 16:04:00 | sam686 | eventually there could be 200 types, bit masks can get too big.. |
| 16:05:00 | raptor | hmmm |
| 16:05:00 | raptor | not sure what to do |
| 16:05:00 | raptor | we need to expand types |
| 16:10:00 | raptor | we could do some crazy thing like multiplying prime numbers |
| 16:12:00 | raptor | the 256th prime number is 1619 |
| 16:13:00 | sam686 | that can be hard to work with.. |
| 16:13:00 | | watusimoto has joined |
| 16:13:00 | raptor | i guess that would generate enourmous results... |
| 16:13:00 | raptor | yeah scrap that idea |
| 16:13:00 | raptor | hi watusimoto |
| 16:14:00 | raptor | sam686 and I are discussing replacing the object mask with type numbers altogether |
| 16:14:00 | raptor | I have started some work on it, but sam686 mentioned the problem with searching the database for multiple objects simultaneously |
| 16:18:00 | sam686 | currently, i have put the search that can allow serching for objects with any bit mask or one type number or both |
| 16:18:00 | sam686 | for gridDB |
| 16:18:00 | raptor | where is that found? |
| 16:18:00 | sam686 | GridDatabase::findObjects |
| 16:19:00 | sam686 | shoyld see typeNumber at the end of arguments list.. |
| 16:19:00 | raptor | but that only does one object instead of any, correct? |
| 16:20:00 | sam686 | void findObjects(... , U8 typeNumber = U8_MAX); so it is optional... |
| 16:20:00 | sam686 | it only finds one typenumber object in addition to bit mask |
| 16:20:00 | raptor | yes, exactly |
| 16:20:00 | raptor | mask does all simultaneously |
| 16:22:00 | raptor | yay for triple-nested loops... |
| 16:25:00 | sam686 | i found a small problem with in-game menus. http://96.2.123.136/bitfighter/render_prev_ui_problem.png |
| 16:26:00 | raptor | whoa |
| 16:26:00 | raptor | how did you mange that? |
| 16:27:00 | sam686 | i was fixing a reash due to stack overflow problem (it was endlessly calling eachother functions), and end up going like that. |
| 16:27:00 | sam686 | crash, not reash.. |
| 16:27:00 | | Flynnn has joined |
| 16:27:00 | raptor | interesting site: http://en.wikibooks.org/wiki/Optimizing_C%2B%2B |
| 16:31:00 | raptor | we may want to consider re-engineering the gridDB |
| 16:32:00 | raptor | is GridDatabase::mChunker ultimately what the DB is? |
| 16:34:00 | sam686 | is uses mChunker only because of there will be thousands of BucketEntry, mChunker can do the allocation of tiny structs better then individual alloc / deallok |
| 16:36:00 | sam686 | mostly GridDatabase::mBuckets is where it stores all the first BucketEntry for each small area.. |
| 16:36:00 | raptor | ok |
| 16:36:00 | raptor | i'm not sure how we can avoid a big hit in performance when not using a mask... |
| 16:37:00 | raptor | i am reading here: http://en.wikipedia.org/wiki/Collision_detection#Optimization |
| 16:53:00 | sam686 | will it be possible to have a compare function when searching for database? like it is done in Vector::sort(compare_function) |
| 16:53:00 | raptor | would we have to do a compare on BucketEntry? |
| 16:54:00 | sam686 | only need to compare where it is normally comparing typeMasks.. |
| 16:55:00 | sam686 | instead of theObject->getObjectTypeMask() & typeMask, it could be if(compareThisObjectInCustomFunction(theObject)) |
| 16:56:00 | raptor | yes exactly |
| 16:56:00 | raptor | but it would require another loop |
| 16:56:00 | raptor | that is 4 nested for-loops in one case |
| 16:56:00 | sam686 | i don't think it require another loop.. |
| 16:57:00 | raptor | i'm thinking of searching for multiple object types |
| 16:57:00 | raptor | actually, maybe it's just an extended logical if-statement |
| 16:58:00 | sam686 | just look at GameType::getSortedPlayerScores, it is using a custom function while sorting.. |
| 16:59:00 | sam686 | that could be done in gridDB for finding multiple objects, instead of typeMasks or typeNumbers.. |
| 16:59:00 | raptor | hmm... |
| 17:41:00 | watusimoto | down near the end of s2rCommandComplete() |
| 17:42:00 | watusimoto | is a line that is something like |
| 17:42:00 | watusimoto | mClientGame->setOutputFilename(""); |
| 17:42:00 | watusimoto | that's the refactored version, but it's still recognizable |
| 17:42:00 | watusimoto | my question is what is the point of setting it to ""? |
| 17:44:00 | watusimoto | this in gameConnection.cpp |
| 17:44:00 | raptor | i have no idea |
| 17:51:00 | | LordDVG has joined |
| 17:51:00 | | LordDVG Quit (Changing host) |
| 17:51:00 | | LordDVG has joined |
| 17:51:00 | raptor | this is a great resource!: http://www-graphics.stanford.edu/~seander/bithacks.html |
| 17:51:00 | watusimoto | too clever by half! |
| 17:55:00 | raptor | i bet most of those twiddles are defined in c++ stl as some math function.. |
| 17:56:00 | raptor | need a good way to combine multiple object types without using a mask |
| 17:56:00 | raptor | just an array, maybe? |
| 17:56:00 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 18:01:00 | | Flynnn has joined |
| 18:04:00 | watusimoto | what do you mean? like EngineerType being a composite of turret and ff types? |
| 18:04:00 | raptor | yes |
| 18:05:00 | watusimoto | bool isEngineer() { return type == turret || type == ff; } |
| 18:05:00 | raptor | did that |
| 18:05:00 | raptor | but |
| 18:05:00 | watusimoto | but? |
| 18:05:00 | raptor | we need to be able to pass in multiple objects into gridDB searching |
| 18:06:00 | watusimoto | ah |
| 18:06:00 | watusimoto | yes |
| 18:06:00 | watusimoto | ok |
| 18:06:00 | watusimoto | pass in a function pointer? |
| 18:07:00 | watusimoto | bool isEngineer(type) { return type == turret || type == ff; } |
| 18:07:00 | raptor | how about two arbitrary objects? |
| 18:07:00 | watusimoto | then use that to evaluate whether object matches |
| 18:08:00 | watusimoto | or three? |
| 18:08:00 | raptor | yep |
| 18:08:00 | raptor | or 15 |
| 18:08:00 | watusimoto | do we need 2 arbitrary types? |
| 18:08:00 | watusimoto | we tend to need them in certain predefined groups |
| 18:09:00 | raptor | yeah, that's what i'm thinking |
| 18:09:00 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 18:09:00 | watusimoto | how often do we do this, anyway? |
| 18:09:00 | raptor | do write now, i have start migrating the masks... I altered gameObject.h like this: http://pastie.org/2330987 |
| 18:10:00 | raptor | do write now = so right now |
| 18:11:00 | raptor | i don't know how often - not too often, i imagine |
| 18:11:00 | watusimoto | ok |
| 18:11:00 | watusimoto | looks good so far |
| 18:12:00 | raptor | are the defines a bad idea? |
| 18:12:00 | watusimoto | maybe |
| 18:12:00 | watusimoto | maybe not |
| 18:12:00 | watusimoto | let's look at how we would use them |
| 18:12:00 | raptor | problem is right now, the findObjects methods use a mask |
| 18:12:00 | | Flynnn has joined |
| 18:13:00 | raptor | in cases were multiple objects are wanted, we'd have to pass in what? an array? |
| 18:13:00 | watusimoto | So, for example |
| 18:13:00 | watusimoto | findObjects(MotionTriggerTypes | MineType, fillVector, queryRect); |
| 18:14:00 | watusimoto | that's our problem case |
| 18:14:00 | raptor | yep |
| 18:14:00 | raptor | instead maybe: findObjects(U8 *types, fillVector, queryRect); |
| 18:15:00 | watusimoto | not sure why MineType is used in this context... |
| 18:15:00 | watusimoto | but that's an aside |
| 18:15:00 | raptor | haha |
| 18:15:00 | raptor | we could have multiple signatures of course |
| 18:15:00 | watusimoto | findObjects(isMotionTriggerType, fillVector, queryRect) |
| 18:15:00 | watusimoto | combined with |
| 18:16:00 | watusimoto | bool isMotionTriggerType(type) { return <<test for type >> } |
| 18:16:00 | watusimoto | that seems clean and readable |
| 18:16:00 | watusimoto | alternatives |
| 18:17:00 | watusimoto | findObjects(MotionTriggerTypes, fillvect, query); |
| 18:17:00 | watusimoto | where MotionTriggerTypes is |
| 18:17:00 | watusimoto | MotionTriggerTypes[] = { type 1, type2, type3} |
| 18:17:00 | raptor | so you mean: findObjects(*testMethod, fillVector, queryRect) |
| 18:17:00 | watusimoto | that is also pretty readable, but lots of looping |
| 18:18:00 | watusimoto | ah, maybe that's what I mean... not sure |
| 18:18:00 | watusimoto | yes |
| 18:18:00 | watusimoto | actually, yes, I think it is |
| 18:18:00 | raptor | :) |
| 18:18:00 | watusimoto | or |
| 18:18:00 | sam686 | findObjects(*testMethod, ... how will findObjects know what size the array is? |
| 18:18:00 | watusimoto | findMotionTriggerObjects(fillVect, queryRect) |
| 18:19:00 | raptor | but then we have to code more... |
| 18:19:00 | watusimoto | @S the function will have the types hardcoded in |
| 18:20:00 | raptor | i like the *testMethod alternative signature |
| 18:23:00 | watusimoto | that's my current pick |
| 18:24:00 | watusimoto | we could have a sig that takes a function, and a sig that takes a single type |
| 18:25:00 | watusimoto | looking at all the calls, about half are for single types, half are for composites |
| 18:26:00 | watusimoto | have to come up with some creative names: (BarrierType | TurretType | ForceFieldProjectorType | ForceFieldType | ShipType | RobotType | TestItemType | ResourceItemType) |
| 18:28:00 | raptor | like what? |
| 18:28:00 | sam686 | might need to come up with a way to do CommandMapVisType, expecially in projectile.cpp line 140 |
| 18:29:00 | raptor | ShipType = TriangularSpaceFaringVesselType? |
| 18:29:00 | sam686 | mObjectTypeMask |= CommandMapVisType; // Bullets visible on commander's map if you have sensor |
| 18:30:00 | raptor | that's a neat idea |
| 18:30:00 | watusimoto | interesting |
| 18:31:00 | watusimoto | maybe two functions? |
| 18:31:00 | watusimoto | findObjects(cmdMapVis,...) |
| 18:31:00 | watusimoto | and findObjects(cmdMapVisWithSensor,...) |
| 18:32:00 | watusimoto | ? |
| 18:34:00 | raptor | so i guess our mask before acted as both object identifiers and flags |
| 18:35:00 | sam686 | bullets and bursts is the only thing that depends on if it is visible on commander's map.. |
| 18:36:00 | sam686 | when having sensor |
| 18:36:00 | raptor | maybe we'll have still have separate flags as booleans, and account for them in the findObjects signature... |
| 18:36:00 | sam686 | i will be back in around 2 hours. |
| 18:36:00 | watusimoto | the alternative is to stick with flags, but I think that's less flexible in the long run |
| 18:36:00 | watusimoto | later! |
| 18:36:00 | raptor | by |
| 18:36:00 | raptor | i guess he needs sleep some time... |
| 18:37:00 | raptor | :) |
| 18:37:00 | sam686 | no, going out somewhere.. |
| 18:37:00 | raptor | ah ok, then you don't need sleep sometime |
| 18:37:00 | sam686 | going out for probably swimming in a lake, will be back in 2 hours.. |
| 18:42:00 | karamazovapy | http://www.1designperday.com/2009/05/13/15-cool-beds-i-want-to-sleep-on/ |
| 18:44:00 | raptor | some of those look precarious |
| 18:46:00 | watusimoto | have fun! |
| 18:48:00 | raptor | so what to do about the flags? |
| 18:49:00 | raptor | CommandMapVisType and DeletedType |
| 18:52:00 | raptor | maybe we could stick with a flag mask? or create some sort of objectState mask |
| 19:12:00 | watusimoto | hmmm |
| 19:12:00 | watusimoto | I think cmdmapvistype will work by creating two methods, one for sensor, one for no sensor |
| 19:13:00 | raptor | is DeletedType a valid object type? |
| 19:13:00 | watusimoto | deletedType is not used with findObjects |
| 19:13:00 | watusimoto | so a simple flag and test should suffice |
| 19:14:00 | raptor | ok |
| 19:14:00 | raptor | it is only used it 4 places anyways... |
| 19:14:00 | watusimoto | if you do a search for everwhere it's used, it's really treated like a flag |
| 19:14:00 | watusimoto | it probably shouldn't even be on the typemask at all |
| 19:16:00 | raptor | exactly my thoughts |
| 19:16:00 | raptor | ok |
| 19:16:00 | | BFLogBot - Commit f1139ac976a9 | Author: watusim...@bitfighter.org | Log: Refactor provide more direct access to things, fewer globals, less jumping around, less indirection |
| 19:16:00 | | BFLogBot - Commit e196d82efc7a | Author: watusim...@bitfighter.org | Log: Merge |
| 19:23:00 | watusimoto | ok, Zemmer is taking over the machine to play age of mythology |
| 19:23:00 | watusimoto | later! |
| 19:23:00 | raptor | bye |
| 19:29:00 | raptor | yay, merged is good |
| 19:30:00 | | LordDVG has left |
| 19:30:00 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 19:37:00 | | Flynnn has joined |
| 20:29:00 | | watusimoto Quit (Ping timeout: 260 seconds) |
| 20:40:00 | | Flynnn Quit (Quit: This computer has gone to sleep) |
| 21:26:00 | | Flynnn has joined |
| 22:21:00 | raptor | what is Item? |
| 22:21:00 | raptor | Item class |
| 22:21:00 | raptor | what is it used for? and why does it only have the objectmask of MoveableType | CommandMapVisType ? |
| 22:21:00 | sam686 | Item class is not used directly, but SoccerBallItem, RepairItem, Asteroid, FlagItem all use Item class |
| 22:23:00 | raptor | welcome back! |
| 22:23:00 | raptor | was swimming fun? |
| 22:23:00 | sam686 | yes.. |
| 22:23:00 | raptor | i miss swimming in lakes - don't really have those as much out here in Utah |
| 22:23:00 | raptor | have to travel a ways to get there.. |
| 22:34:00 | raptor | Have you ever played with the WormType? |
| 22:34:00 | sam686 | haven't played with WormType much.. |
| 22:35:00 | raptor | are these all the moveable types?: ShipTypeNumber RobotTypeNumber SpyBugTypeNumberMineTypeNumber BulletTypeNumber |
| 22:35:00 | raptor | oh wait, soccer repair asteroid flag... |
| 22:35:00 | sam686 | All items are movable type |
| 22:36:00 | sam686 | there is class Item : public MoveObject |
| 22:36:00 | raptor | because MoveableTypeNumber can't be used - it has to be a flag, or a grouping of other game objects |
| 22:39:00 | raptor | argh, ok... i have to sort this out somehow |
| 22:41:00 | sam686 | in Projectile.cpp there is findObjectLOS(MoveableType | BarrierType | EngineeredType | ForceFieldType ...) i think that is everything except projectiles.. |
| 22:41:00 | sam686 | and except loadout zone goal zone |
| 22:43:00 | raptor | yes, i need to figure out how to search for moveable types when it isn't an ObjectType (since we can't use a mask) |
| 22:49:00 | raptor | what is MoveObject::move() used for? |
| 22:49:00 | raptor | is it used in-game at all? or just in editor? |
| 22:50:00 | sam686 | it is used for every moving objects.. |
| 22:50:00 | raptor | why are RepairItems considered Moveable? |
| 22:51:00 | sam686 | not sure, probably design problem.. |
| 22:51:00 | sam686 | but MoveObject::move is called for anything that is currently moving in game.. |
| 22:51:00 | raptor | ok |
| 22:54:00 | sam686 | item::idle and maybe Ship::ProcessMove does calls MoveObject::move |
| 22:56:00 | raptor | i wonder if that Worm works.. |
| 22:57:00 | sam686 | When i tried worm, it is just a tiny moving dot.. |
| 23:07:00 | raptor | what is a better name for ItemType |
| 23:07:00 | raptor | that is too non-descriptive |
| 23:07:00 | raptor | it is only used in two places |
| 23:08:00 | raptor | engineeredObjects.cpp:933 |
| 23:08:00 | raptor | moveObject.cpp:470 |
| 23:10:00 | sam686 | probably shouldn't be itemType in enigneerObject , as when itemType is part of search, causes problem when Repair gets in the way and foecefield never activated, as i sometimes see the problem with my levelgne |
| 23:11:00 | sam686 | levelgen (not levelgne) |
| 23:12:00 | sam686 | the one in moveObject is only used for c2sResendItemStatus which does nothing but try to better sync to clients. |
| 23:14:00 | sam686 | it is safe to take off if(moveObjectThatWasHit->getObjectTypeMask() & ItemType) for moveObject.cpp, but then it will have to do dynamic_cast anyway |
| 23:21:00 | raptor | wait |
| 23:21:00 | raptor | i can remove that last one, do i have to do anything extra? |
| 23:22:00 | sam686 | dinamic_cast returns NULL if it is not part of that class |
| 23:23:00 | raptor | ah ok, i'll put in a null check |
| 23:23:00 | sam686 | it probably already have NULL checking: if(item && gameType) |
| 23:23:00 | raptor | oh good, i can just remove then |
| 23:24:00 | | watusimoto has joined |
| 23:25:00 | raptor | so that leaves one in engineered objects |
| 23:25:00 | raptor | what should that be? collideable? |
| 23:26:00 | sam686 | if it collides, forcefields will get deactivated, if nothing that is listed gets in the way, forcefield can activate.. |
| 23:26:00 | sam686 | some Items (asteroid, flagitem, soccerballitem) sshould probably be collidable, but RepairItem shouldn't. |
| 23:28:00 | sam686 | still a mystery to me why ReapirItem is part of MoveObject when it does not move.. |
| 23:28:00 | raptor | and energyitem |
| 23:29:00 | raptor | well, I'm removing them from isMoveableType() |
| 23:51:00 | | raptor Quit (Ping timeout: 255 seconds) |