diff options
author | glx <glx@openttd.org> | 2008-08-20 16:51:08 +0000 |
---|---|---|
committer | glx <glx@openttd.org> | 2008-08-20 16:51:08 +0000 |
commit | ef0458c739fd231442470389e292747cb95b027b (patch) | |
tree | f72258e549e70e16172e65a32a295599e68c638e | |
parent | 5d5cb04297bbd8ade6f76008caf1abeb6cef36f5 (diff) | |
download | openttd-ef0458c739fd231442470389e292747cb95b027b.tar.xz |
(svn r14110) -Fix: desyncs due to bubbles in toyland
-rw-r--r-- | src/effectvehicle.cpp | 10 | ||||
-rw-r--r-- | src/vehicle.cpp | 6 |
2 files changed, 6 insertions, 10 deletions
diff --git a/src/effectvehicle.cpp b/src/effectvehicle.cpp index 9ea2e6ca3..32482adf8 100644 --- a/src/effectvehicle.cpp +++ b/src/effectvehicle.cpp @@ -515,12 +515,6 @@ static const BubbleMovement * const _bubble_movement[] = { static void BubbleTick(Vehicle *v) { - /* - * Warning: those effects can NOT use Random(), and have to use - * InteractiveRandom(), because somehow someone forgot to save - * spritenum to the savegame, and so it will cause desyncs in - * multiplayer!! (that is: in ToyLand) - */ uint et; v->progress++; @@ -536,7 +530,7 @@ static void BubbleTick(Vehicle *v) return; } if (v->u.effect.animation_substate != 0) { - v->spritenum = GB(InteractiveRandom(), 0, 2) + 1; + v->spritenum = GB(Random(), 0, 2) + 1; } else { v->spritenum = 6; } @@ -554,7 +548,7 @@ static void BubbleTick(Vehicle *v) } if (b->y == 4 && b->x == 1) { - if (v->z_pos > 180 || Chance16I(1, 96, InteractiveRandom())) { + if (v->z_pos > 180 || Chance16I(1, 96, Random())) { v->spritenum = 5; SndPlayVehicleFx(SND_2F_POP, v); } diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 80ddeb032..4d4b774e7 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -2270,8 +2270,10 @@ static const SaveLoad _special_desc[] = { SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleEffect, animation_state), SLE_UINT16), SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleEffect, animation_substate), SLE_UINT8), - /* reserve extra space in savegame here. (currently 16 bytes) */ - SLE_CONDNULL(16, 2, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, spritenum, SLE_UINT8, 2, SL_MAX_VERSION), + + /* reserve extra space in savegame here. (currently 15 bytes) */ + SLE_CONDNULL(15, 2, SL_MAX_VERSION), SLE_END() }; |