[00:01:56] <-- Kirben has left IRC ("System Meltdown")
[01:16:58] --> Kirben has joined #nuvie
[02:59:58] <-- SB-X has left IRC ("*casts gate travel*")
[06:11:57] --> SB-X has joined #nuvie
[06:14:42] <servus> Lighting system lighting system actor lighting management system!
[06:35:55] <SB-X> NO
[06:48:57] <servus> :(
[06:49:07] <servus> Well tell me when you give up so I can do it *grin*
[07:17:03] <SB-X> i've already done all i planned
[07:17:08] <SB-X> it doesn't need anything else
[07:17:38] <SB-X> Any other bugs with torches are going to be coming from usecode, not Actor. Actors are doing what their supposed to be doing now.
[07:17:42] <SB-X> they're*
[07:17:51] <SB-X> unless you can find where the double-free is
[07:20:08] <servus> Have you valgrinded?
[07:29:44] <servus> Sherry just killed Chuckles. I feel satisfied.
[07:44:51] <wjp> do you mean the double-free on exit?
[07:48:26] <SB-X> servus: nope i dont have valgrind
[07:48:34] <SB-X> im not sure where the double-free is
[07:48:58] <SB-X> was hoping someone else would find it
[07:49:10] <SB-X> the only reason i know about it was a random glibc message
[07:49:32] <SB-X> which occurred on exit after playing with the torches
[07:50:09] <wjp> There was something suspicious going on with the EggManager and ObjManager destruction procedure, depending on if show_eggs is set
[07:50:33] <wjp> I was trying to track it down this weekend, but got interrupted
[07:53:53] --> luteijn has joined #nuvie
[07:57:54] <SB-X> hi luteijn
[07:58:49] <luteijn> hi.
[08:11:31] <SB-X> luteijn: how's u6o been going lately? i played it briefly the other day just to see the new tileset
[08:11:34] <servus> Can you tell me how to reproduce it, sbx?
[08:11:40] <SB-X> no, sorry
[08:12:15] <SB-X> probably need to use valgrind unless someone else has a clue
[08:14:02] <luteijn> SB-X: there's a new updat planned for the 19th, usually these introduce lots of new issues, which makes it interesting to play again.
[08:14:47] <luteijn> SB-X: playing around with a Wiki for U6O.
[08:14:49] <SB-X> hehe
[08:14:59] <SB-X> still looks like too many new houses for my taste
[08:15:04] <SB-X> apartments under paws?
[08:15:18] <SB-X> why not above the existing buildings?
[08:16:04] <luteijn> because of the way they've implemented the 'second' level eats a lot of map-real-estate. so underground is 'cheaper' in that respect.
[08:16:43] <luteijn> nuvie's new sleep potion causes some interesting effects. quaffed one, then went to solo mode and back to party mode.
[08:16:50] <SB-X> i know :\
[08:17:04] <SB-X> you can move around too
[08:17:20] <SB-X> and the frame changes
[08:17:34] <luteijn> that's what I noticed yes ;)
[08:17:53] <SB-X> it's a start
[08:18:23] <SB-X> the same thing happens when you step on a sleep field, in my local copy
[08:18:28] <luteijn> but e.g. the balloon still appears next to Dupre (party leader) when you use it..
[08:19:31] <servus> SB-X: When we are cleaning the egg manager, and we are showing eggs, should we delete egg objects?
[08:20:07] <SB-X> I don't know. That's something Eric wrote.
[08:20:11] <SB-X> i havn't looked into it
[08:20:41] <servus> Seems backwards to me. Where is he lately, anyway?
[08:20:57] <SB-X> dunno, work?
[08:21:54] <SB-X> the only time you delete eggs is when reloading/exiting, and rarely in usecode
[08:23:05] <SB-X> luteijn: Why doesn't U6O use a new map for the second level? (or add a real z coord or height to the map)
[08:23:52] <luteijn> well they basically only have one map, all the dungeons are just in a corner of it.
[08:24:43] <SB-X> can you fly around the world in a balloon?
[08:24:58] <luteijn> and the second level is just treated like a dungeon, it has little pockets with a local copy of the 1st level, and 'redirection' objects..
[08:25:14] <luteijn> In U6O the world is not wrap around.
[08:26:20] <SB-X> adding new apartments should be incentive to change that, not to add them underground
[08:27:53] <luteijn> in u6o you can't even fly on the aether with the balloon. it just flies right up to the edge of the sea (stopping the scrolling and moving the balloon/ship off center)
[08:28:27] <SB-X> can they make the map bigger?
[08:28:41] <SB-X> so they'd have more map-real-estate available
[08:29:09] <luteijn> There's a lot of things 'wrong' with u6o that seem trivial to fix, but don't get fixed because of the implementor's limitations (time,knowledge,incentive, etc.)
[08:29:33] <luteijn> Making the map bigger probably would screw with magic numbers all over the place, knowing something about the coding style..
[08:30:33] <luteijn> also, the map is not really in a separate datafile, but it is (at least overlayed with parts that are) generated by hardcoded 'patches' in C++ code. This code is generated by their mapeditor.
[08:31:36] <SB-X> oh i see
[08:31:49] <SB-X> yeah i remember the house code example :)
[08:32:10] <luteijn> A lot of the things are made without future changes in mind. It has a plus-side though: U6O is a playable game, and nuvie just crashes alot ;)
[08:32:27] <SB-X> not alot
[08:32:46] <SB-X> U6O crashes occasionally too
[08:35:22] <SB-X> don't you still think they should let a few more people work on the code?
[08:36:30] <luteijn> Yes, especially, since galleon is working on a new project too. But you'd probably get issues like me trying to add something simple and end op breaking things. E.g. I'm trying to get nuvie to wrap around properly, but keep ending up breaking it.. At one point it was possible to fly around the world with the balloon, but the mapwindow display didn't wrap, so you'd see 'corners' of the world. There's quite a few places assuming the map is infinite...
[08:37:36] <SB-X> i had it flying to the edge with map wrapping, then I broke it again
[08:37:56] <SB-X> but you couldnt fly over the edge
[08:38:06] <SB-X> arent you supposed to see corners?
[08:38:41] <luteijn> I could fly over the edge, but the map didn't wrap. I tested the original, there's no corners, aether links up. You DO have ocean corners.
[08:39:00] <luteijn> maybe I should just make the baloon wrap, and then let you make the map wrap :)
[08:39:08] <SB-X> well, ocean corners
[08:39:17] <SB-X> the map wrapping is done... all we need is actormanager and objmanager wrapping
[08:40:18] <SB-X> besides places where there are loops over coords
[08:40:40] <SB-X> what's different about balloon wrapping?
[08:40:43] <luteijn> the current cvs still shows a 'corner' when you alt-214 to 1 1 0; but in your copy you get a screen full of aether?
[08:42:01] <SB-X> no, sorry... i didn't know the aether was supposed to continue past the visible map
[08:42:21] <SB-X> i don't have those changes anymore anyway
[08:43:03] <SB-X> oic, by balloon wrapping you meant going around the world in a balloon
[08:43:06] <SB-X> ok
[08:43:07] <luteijn> it doesn't really continue, just wraps to the other side. no blackness.
[08:43:34] <luteijn> yes. I'll see if I can add that without breaking anything else again.
[08:44:35] <SB-X> it might black be because of the flood filling
[08:44:38] <SB-X> be black*
[08:45:09] <luteijn> Yes, I thought that was the problem, but broke things when I tried to disable it to test it out.
[08:45:28] <SB-X> use a white potion
[08:46:07] <luteijn> the floodfiller assumes x-1 will always be <x. white potion didn't seem to help (well I just set the x_ray effect to 1)
[08:46:51] <SB-X> guess you need to check that x>1
[08:47:01] <luteijn> e.g. 0-1 wraps to 1023, and then (1023,1023,0) is not within 1 space of (0,0,0)
[08:47:04] <SB-X> x>0*
[08:47:19] <SB-X> ah k
[08:47:41] <luteijn> so it
[08:48:14] <luteijn> so it should 'wrap' there, but temporary use signed math for a bit to figure out the distance..
[08:48:22] <SB-X> the only thing you'd need to fix to make the balloon wrap is actor and actormanager
[08:48:31] <SB-X> since there are no objects involved
[08:48:38] <luteijn> there are.
[08:48:51] <luteijn> I think because the baloon is big.
[08:49:08] <SB-X> maybe tilemanager too?
[08:49:11] <luteijn> anyway I had to add things to getObjBasedAt (or is that with underscores)
[08:49:17] <SB-X> oh
[08:49:44] <SB-X> i'd prefer to have as few places with wrapping as possible
[08:50:31] <luteijn> I really only want to wrap just before reading things from whatever array is storing them.
[08:52:04] <SB-X> yeah, same here
[08:52:35] <luteijn> but I'll settle for something working first, then see if some of the higher level ones can be removed later.
[08:59:26] <SB-X> it will be a lot harder getting MD wrapping working because the party can walk across the map there
[08:59:43] <SB-X> or so I've heard
[08:59:58] <luteijn> btw, actor 0 runs out of moves, and then nuvie spews warnings...
[09:00:44] <luteijn> Well only in the x direction anyway. But it shouldn't be any different in U6.. Isn't there a dungeon that needs to wrap to work?
[09:02:19] <luteijn> hmm teleport not working abord ship is not very handy when debugging wrapping.. at least teleport to npc doesn't check if you're in a vehicle.
[09:09:17] <luteijn> hmm now I can safely fly to the left, right and top edges of the map, (although not actually cross the boundary yet), but on the lower end, it seems the boundaryFill function freaks out.
[09:10:34] <luteijn> bleh, either wrap the coordinates in X places at high-level, or only at a few places at low level, but then that lower level function get called >X times, slowing down things anyway.
[09:14:40] <luteijn> if foo->x == x+1 ... (have to replace all those x+1's with a wrapped version... would be nice if there was a 10 bit wide data type.
[09:31:23] --> Yuv422 has joined #nuvie
[09:37:46] <Yuv422> hello
[09:38:00] <SB-X> hey yuv
[09:38:14] <Yuv422> how's it going?
[09:38:45] <SB-X> just got back to the computer, had to scare away a stray kitten that was whining outside my door
[09:39:06] * SB-X puts away the shotgun.
[09:39:09] <SB-X> how about you? :)
[09:40:51] <Yuv422> I'm good
[09:40:56] <Yuv422> my irc isn't though
[09:41:03] <Yuv422> tries another server
[09:41:10] <SB-X> luteijn: no dungeons need map wrapping (except to avoid crashing when the other side of the map is in the visible buffer)
[09:41:19] <SB-X> ok
[09:41:23] <-- Yuv422 has left #nuvie ()
[09:41:38] --> Yuv422 has joined #nuvie
[09:42:32] <Yuv422> map wrapping is going to be a big issue with usecode
[09:42:53] <SB-X> usecode is only one place that has loops over coords :S
[09:43:10] <SB-X> or coord arithmetic
[09:44:46] <Yuv422> We've got too OBJ_U6_TANGLE_VINE_POD defines in cvs
[09:44:50] <Yuv422> too/two
[09:45:15] <luteijn> I can now fly to the edge of the map without crashing, have to adjust check_move and move to properly move over the map.. hopefully I can get that without breaking things. but yes, everything that does any calculations with coordinates should be wrapping them.. :(
[09:45:17] <SB-X> oops
[09:45:37] <SB-X> Yuv422: hopefully they have the same result
[09:45:51] <Yuv422> SB-X: I'll fix it now
[09:45:56] <SB-X> if they are in MapCoords we can still override the == operator
[09:46:04] <Yuv422> cool
[09:46:32] <Yuv422> I use a bit of old school obj->x obj->y athrimatic though
[09:46:40] <SB-X> or any operators of MapCoords or it's objects
[09:46:54] <SB-X> we'd have to typedef a new datatype for the x,y,z values too
[09:47:19] <SB-X> typedef uint16 coord;
[09:47:47] <SB-X> and change any coordinates to use that
[09:47:54] <SB-X> we already discussed that change
[09:48:19] <Yuv422> what would be the advantage with the new typedef
[09:48:32] <SB-X> you wouldnt be overloading the operator of uint16
[09:48:39] <Yuv422> ah
[09:48:55] <SB-X> that's the only reason for adding it
[09:49:05] <Yuv422> makes sense
[09:50:06] <SB-X> and it sounds like luteijn is having to change all these high-level comparisons of coordinates anyway
[09:51:43] <luteijn> yes, it would be nice to never use individual coordinates, but always as a (x,y,z) with == autmatically wrapping.
[10:04:06] <Yuv422> using a balloon from someone else's inventory crashes nuvie
[10:06:23] <luteijn> ye, I found that already whenn messing with the sleeping potion.
[10:07:31] <luteijn> grr almost got the wrap around working for moving with the baloon, but now there's a weird glitch where the first step I take after loading the game takes me 7 leagues away..
[10:07:57] <luteijn> = Status message =
[10:07:57] <luteijn> Ideas:: make status messages scrollable too (and >1 line for quick review)
[10:07:57] <luteijn> Status:: Implemented, in a way.
[10:08:09] <luteijn> hmm paste error, sorry
[10:08:16] <luteijn> #2 0x0804c42d in Actor::moveRelative (this=0x83b7f00, rel_x=0, rel_y=370)
[10:08:16] <luteijn> at actors/Actor.cpp:310
[10:08:16] <luteijn> #3 0x080da64a in Player::moveRelative (this=0x81772b8, rel_x=1, rel_y=0)
[10:08:16] <luteijn> at Player.cpp:264
[10:08:16] <luteijn> #4 0x080bd83b in Event::move (this=0x824e8d8, rel_x=1, rel_y=0)
[10:08:16] <luteijn> at Event.cpp:647
[10:16:19] <luteijn> ah, using 'level' somewhere where I should be using 'z' . in this scope level is the player's level!
[10:18:18] <Yuv422> items.actor_ref is the player
[10:18:25] <Yuv422> which doesn't own the object
[10:22:32] <Yuv422> I think we need another overloaded Party::who_has_obj(Obj *obj)
[10:23:02] <Yuv422> I'll add it now
[10:24:39] <luteijn> I can fly around the world again, this time it sees nothing much else got broken by it. Blacking out is still 'wrong' (stopping at edges). probably that messes with the peer effect around the edge of the map too.
[10:26:05] <Yuv422> I was thinking we should have a map patching system
[10:26:13] <Yuv422> then we could patch some land onto the map
[10:26:13] <luteijn> regarding underground balloon use.. I'm not sure if the original allowed it or that it was just pretty useless since no wind.
[10:26:34] <Yuv422> at the map border
[10:26:37] <luteijn> just use existing u6 editors?
[10:26:51] <Yuv422> I'd like a map patching system though
[10:27:01] <Yuv422> then we can overlay more detail onto the u6 map
[10:27:09] <SB-X> Yuv422: actor_manager->get_actor_holding_obj(obj)
[10:27:13] <Yuv422> detail that doesn't have to be constrained by chunks
[10:27:23] <Yuv422> SB-X: thanks
[10:27:30] <luteijn> that would be interesting for newly devloped 'worlds of ultima'-type games
[10:27:52] <SB-X> Yuv422: it uses x just fine, since actor id_n's are unique
[10:27:58] <luteijn> let me use that to fix the balloon from other inventory crash..
[10:28:59] <SB-X> ok
[10:29:06] <Yuv422> SB-X: I think get_actor_holding_obj is dangerous
[10:29:13] <SB-X> it's worked fine so far
[10:29:14] <Yuv422> because of obj->x duplication
[10:29:19] <Yuv422> due to chunks
[10:29:38] <SB-X> nah, we always make sure to set it to id_n when moving to inventory
[10:30:15] <Yuv422> is id_n unique?
[10:30:25] <SB-X> at least for permanent actors
[10:30:39] <Yuv422> that limits us to 16k possible inventory objects
[10:30:45] <Yuv422> sorry 65k
[10:30:49] <SB-X> ?
[10:31:02] <Yuv422> uint16
[10:31:21] <SB-X> x points to id_n
[10:31:25] <SB-X> of an actor
[10:31:47] <Yuv422> oh
[10:31:47] <SB-X> actor's don't have any similiar pointer to inventory (besides their linked list)
[10:31:58] <SB-X> actors*
[10:32:02] <Yuv422> righto
[10:32:37] <SB-X> that function has been around for a while now ;)
[10:33:27] <luteijn> hmm it looks like now nuvie crashes (even?) if you use the balloon from your own inventory.
[10:33:42] <luteijn> and it doesm
[10:33:56] <luteijn> it doesn't really remove it from the inventory..
[10:34:32] <SB-X> why's that?
[10:34:47] <luteijn> going to figure that out now :)
[10:35:01] <SB-X> be sure you call Actor::inventory_remove_obj()
[10:35:08] <SB-X> just adding it to the map doesn't remove it from inventory
[10:36:02] <Yuv422> get_actor_holding_obj() won't work
[10:36:05] <Yuv422> in this cast
[10:36:07] <Yuv422> case
[10:36:18] <SB-X> why? is it in a container?
[10:36:59] <luteijn> it's not in a container, but it could be of course..
[10:37:10] <Yuv422> because x isn't set to the actor_n
[10:37:16] <Yuv422> it is now the map coord
[10:37:22] <Yuv422> bbl
[10:37:35] <SB-X> call get_actor_holding_obj() before adding it to the map
[10:37:46] <luteijn> yes, just noticed that, so I'll have to do it before... well what sbx says
[10:38:02] <SB-X> yeah :)
[10:38:08] <SB-X> or more logically before removing it from inventory
[10:39:36] <luteijn> bleh all caused becuase I have to do my own dropping, instead of there being a lowlevel obj->just_drop_it_at(x,y,z);
[10:40:02] <SB-X> yes, I too thought we need a single function to move objects around in the world
[10:40:17] <SB-X> wasn't sure where to put that function
[10:41:10] <SB-X> or set of functions (move_to_map(x,y,z), move_to_inventory(id_n), move_to_container(obj))
[10:48:19] <SB-X> another set of check functions would simplify code in several other places (can_move_to_map(), can_move_to_inventory(), can_move_to_container())
[10:48:50] <luteijn> original has 'C' for wind direction underground...
[10:49:07] <SB-X> you cant use balloons in dungeons
[10:49:31] <SB-X> in snes u6 you can't even use balloons in buildings... maybe they used the dungeon map for buildings
[10:52:28] <luteijn> ok, have to make the balloon say 'Not Usable' when underground.
[10:55:57] <SB-X> is that what it says?
[10:59:59] <luteijn> no it actually says "Not usable" (lower case u).
[11:05:20] <luteijn> I'll commit this so someone can see if they can get the mapdisplay working properly (blackout code?)
[11:05:48] <-- Yuv422 has left IRC (Read error: 110 (Connection timed out))
[11:08:00] --> Yuv422 has joined #nuvie
[11:17:20] <SB-X> ok
[11:21:46] <luteijn> lack of container support is irking me now.. I think I'll look at that next.
[11:34:03] <SB-X> all we need is a parent_obj or objblk_pt pointer in Obj
[11:34:32] <SB-X> and refer to that in ObjManager::get_obj_container
[11:35:04] <SB-X> set it when loading and in ObjManager::add_obj_to_container
[11:35:29] <SB-X> that would probably be redundant actually; just needed in one of those places
[11:36:15] <SB-X> but dont forget when saving the game to set obj->x to the index of the associated parent object in the objblk
[11:37:34] <Yuv422> my Weather class needs to be notified of a level change
[11:37:39] <Yuv422> by the player actor
[11:37:52] <Yuv422> then I can set the wind direction to NONE
[11:38:40] <Yuv422> what do you think about adding a notification system into the CallBack class
[11:39:04] <Yuv422> so objects can request notification callbacks from other objects
[11:39:54] <SB-X> i don't know if it should be in CallBack, but it's a good idea
[11:40:01] <SB-X> we do something like that in MsgScroll
[11:40:07] <SB-X> MsgScroll::request_input
[11:40:12] <SB-X> MsgScroll::set_input_mode
[11:40:18] <Yuv422> yeah it might be a little misleading in callback
[11:40:55] <SB-X> why do you have to make CommandBar a CallBack when it already has a set_wind() method
[11:40:55] <wjp> r
[11:41:00] <wjp> um, oops :-)
[11:41:04] <SB-X> hehe
[11:41:06] <wjp> hi :-)
[11:41:22] <Yuv422> hey wjp
[11:41:36] <Yuv422> SB-X: because I didn't want to update it from Weather
[11:41:45] <SB-X> but you still are
[11:41:53] <Yuv422> I thought it would be neater to do it with a notification style callback
[11:42:11] <Yuv422> then Weather doesn't need to know about Commandbar
[11:42:29] <Yuv422> any object could ask it for the weather
[11:42:32] <SB-X> Yuv422: i could see if you were having CommandBar check the status periodically then you wouldn't use set_wind
[11:42:34] <SB-X> hmm
[11:42:45] <SB-X> yeah your right it doesn't know the object is a commandbar, just a callback
[11:42:48] <SB-X> you're*
[11:43:42] <Yuv422> it takes a bit more work to setup but I think it is more elegant . :)
[11:44:42] <SB-X> are you making sure not to delete the timer in Weather after stopping it?
[11:44:55] <Yuv422> yes
[11:44:58] <SB-X> unless you tell TimeQueue not to it will delete the timer
[11:45:02] <SB-X> ok
[11:45:07] <Yuv422> Weather doesn't delete any timers
[11:45:26] <SB-X> are you making sure not to reuse it?
[11:45:36] <SB-X> after stopping it you need to get a new one :)
[11:45:40] <Yuv422> yes
[11:45:43] <Yuv422> :)
[11:45:44] <SB-X> ah k
[11:45:48] <SB-X> just checking
[11:45:52] <Yuv422> hehe
[11:46:14] <SB-X> because that might not be completely obvious
[11:46:51] <SB-X> maybe the callback should be in Game and call time_changed?
[11:47:06] <SB-X> its not really time but that will update the CommandBar too
[11:47:22] <-- Kirben has left IRC (Read error: 110 (Connection timed out))
[11:48:17] <SB-X> or it could just update commandbar
[11:49:35] <SB-X> btw wind seems to change a little too often
[11:49:56] <Yuv422> the minimum length is 1
[11:50:11] <Yuv422> the range should probably be pushed up a bit
[11:50:48] <Yuv422> flying around in a balloon doesn't update game ticks
[11:50:59] <Yuv422> my timers aren't firing. :-(
[11:51:26] <Yuv422> and I get "warning: actor 0 is out of moves"
[11:51:27] <luteijn> baloon runs out of moves becasue of that too.
[11:51:42] <luteijn> balloon can't move over swamp..
[11:53:13] <SB-X> well I know how to fix the 2nd problem at least
[11:53:54] <luteijn> another funny thing is that cyclops on board of balloon still causes earthquakes ;)
[11:53:54] <Yuv422> hehe the mighty balloon stopped by...swamp. ;-)
[11:54:06] <SB-X> heh
[11:55:19] <SB-X> ...or 3rd problem I mean, in Player::moveRelative it should pass ACTOR_MOVE_IGNORE_DANGER(?) to actor->move
[11:56:23] <SB-X> it only works for the avatar because it ignores dangerous tiles for actors in the party right now
[11:56:30] <SB-X> the balloon actor isn't in the party
[11:56:51] <SB-X> (that has caused a few glitches that had to be worked around here and there)
[11:56:59] <SB-X> in various places*
[11:57:11] <SB-X> i think he was in the party in u6
[11:57:49] <luteijn> seem to remember that actor 0 was in the party too. 'swift the vehicle' it is referred to as in some docs.
[11:58:31] <SB-X> in jp morris' docs he calls it swift
[11:59:04] <SB-X> when walking around with it on land, it transforms to a pile of gold coins, among other random objects :)
[11:59:22] <SB-X> and it has the avatar's stats
[12:18:45] <-- servus has left IRC (":wq")
[13:03:18] * Yuv422 floats off the edge of the world
[13:03:24] <Yuv422> and appears on the otherside
[13:03:29] <Yuv422> :)
[13:12:57] <Yuv422> should we turn this into a macro
[13:13:01] <Yuv422> (new_x&(z?255:1023))
[13:13:45] <Yuv422> WRAP_COORDS(xy,level) (xy&(level?255:1023))
[13:42:13] <Yuv422> http://www.youtube.com/watch?v=9xuUzuklkoU
[13:42:16] <Yuv422> OMG
[13:42:37] <Yuv422> This makes me want to practice more
[14:12:49] <Yuv422> time for bed
[14:12:51] <Yuv422> cya
[14:13:09] <-- Yuv422 has left IRC ()
[15:03:37] <SB-X> cya
[15:03:39] --- SB-X is now known as sbx|afk
[19:12:20] --> servus has joined #nuvie
[22:15:14] --> Kirben has joined #nuvie
[22:38:00] --> Yuv422 has joined #nuvie
[23:54:32] <luteijn> fixed a little warning (no newline at end of file of Weather.cpp) and put in macro's to wrap coordinates. I hope I didn't break too much :)
[23:58:51] <Yuv422> hey luteijn
[23:58:56] <Yuv422> sounds good
[23:59:47] <luteijn> also noticed 3 or so different indentation styles.. probably everyone is using a different autoidenting editor, I guess it's not worth cleaning up?