summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2008-08-20 16:51:08 +0000
committerglx <glx@openttd.org>2008-08-20 16:51:08 +0000
commitef0458c739fd231442470389e292747cb95b027b (patch)
treef72258e549e70e16172e65a32a295599e68c638e
parent5d5cb04297bbd8ade6f76008caf1abeb6cef36f5 (diff)
downloadopenttd-ef0458c739fd231442470389e292747cb95b027b.tar.xz
(svn r14110) -Fix: desyncs due to bubbles in toyland
-rw-r--r--src/effectvehicle.cpp10
-rw-r--r--src/vehicle.cpp6
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()
};