From 62ab3678004e4bb49ff2aabe1f4352a295145444 Mon Sep 17 00:00:00 2001 From: belugas Date: Sat, 6 Oct 2007 00:23:30 +0000 Subject: [PATCH] (svn r11216) -Codechange: Protect the callback who would access var 45 against a randomness that could eventually cause desynchs. Instead, use a controlled random value. --- src/newgrf_industries.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp index 327891c2d5..867bd7a44d 100644 --- a/src/newgrf_industries.cpp +++ b/src/newgrf_industries.cpp @@ -213,16 +213,20 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par /* player info */ case 0x45: { - byte colour1, colour2; ///< Not initializing these two will give some kind of random + byte colours; bool is_ai = false; + if (IsValidPlayer(industry->founder)) { const Player *p = GetPlayer(industry->founder); const Livery *l = &p->livery[LS_DEFAULT]; + is_ai = p->is_ai; - colour1 = l->colour1; - colour2 = l->colour2; + colours = l->colour1 + l->colour2 * 16; + } else { + colours = GB(Random(), 0, 8); } - return industry->founder | (is_ai ? 0x10000 : 0) | ((colour1 + colour2 * 16) << 24); + + return industry->founder | (is_ai ? 0x10000 : 0) | (colours << 24); } /* Get industry ID at offset param */