ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/transports.ext
(Generate patch)

Comparing deliantra/server/ext/transports.ext (file contents):
Revision 1.2 by root, Thu Dec 21 22:41:34 2006 UTC vs.
Revision 1.4 by root, Fri May 18 19:46:22 2007 UTC

36 my ($pl, $dir) = @_; 36 my ($pl, $dir) = @_;
37 37
38 my $ob = $pl->ob; 38 my $ob = $pl->ob;
39 39
40 if (my $tr = find_transport $pl) { 40 if (my $tr = find_transport $pl) {
41 return cf::override 0 unless $ob->speed_left >= 0;
42 $ob->speed_left ($ob->speed_left - 1);
43
41 my @ontop; 44 my @ontop;
42 45
43 for (my $tr = $tr; $tr; $tr = $tr->more) { 46 for (my $tr = $tr; $tr; $tr = $tr->more) {
44 for (my $ob = $tr->above; $ob; $ob = $ob->above) { 47 for (my $ob = $tr->above; $ob; $ob = $ob->above) {
45 push @ontop, $ob; 48 push @ontop, $ob;
47 } 50 }
48 51
49 if ($tr->move ($dir, $ob)) { 52 if ($tr->move ($dir, $ob)) {
50 # do multiple loops in case some player/item blocks another 53 # do multiple loops in case some player/item blocks another
51 # do not endlessly loop as the server is far too broken, e.g. 54 # do not endlessly loop as the server is far too broken, e.g.
52 # you can drop floor son top of non-floors etc. 55 # you can drop floors on top of non-floors etc.
53 for (1..50) { 56 for (1..50) {
54 @ontop or last; 57 @ontop or last;
55 @ontop = map $_->move ($dir, $_) ? () : $_, @ontop; 58 @ontop = map $_->move ($dir, $_) ? () : $_, @ontop;
56 } 59 }
57 } 60 }
58 61
59 cf::override; 62 cf::override 1;
60 } 63 }
61 }, 64 },
62; 65;
63 66

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines