mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r14110) -Fix: desyncs due to bubbles in toyland
This commit is contained in:
parent
5d5cb04297
commit
ef0458c739
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue