From f513850371e04a81341db31be0e7680693be8588 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Wed, 10 May 2006 21:41:16 +0000 Subject: [PATCH] (svn r4817) - NewGRF: allow partial support for parameter retrieval in action D. --- newgrf.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/newgrf.c b/newgrf.c index 25090db75c..7be6f79aea 100644 --- a/newgrf.c +++ b/newgrf.c @@ -2292,10 +2292,12 @@ static void ParamSet(byte *buf, int len) * - it OR A PARAMETER WITH HIGHER NUMBER has been set to any value by * an earlier action D */ if (oper & 0x80) { - if (_cur_grffile->param_end < target) - oper &= 0x7F; - else + if (target < 0x80 && target < _cur_grffile->param_end) { + DEBUG(grf, 7) ("Param %u already defined, skipping.", target); return; + } + + oper &= 0x7F; } /* The source1 and source2 operands refer to the grf parameter number @@ -2306,13 +2308,15 @@ static void ParamSet(byte *buf, int len) if (src1 == 0xFF) { src1 = data; } else { - src1 = _cur_grffile->param_end >= src1 ? _cur_grffile->param[src1] : 0; + uint32 temp; + src1 = GetParamVal(src1, &temp); } if (src2 == 0xFF) { src2 = data; } else { - src2 = _cur_grffile->param_end >= src2 ? _cur_grffile->param[src2] : 0; + uint32 temp; + src2 = GetParamVal(src2, &temp); } /* TODO: You can access the parameters of another GRF file by using