(svn r14110) -Fix: desyncs due to bubbles in toyland

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
glx 16 years ago
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…
Cancel
Save