diff options
-rw-r--r-- | src/newgrf.cpp | 2 | ||||
-rw-r--r-- | src/town_cmd.cpp | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 84f0bfcc0..40185e3d7 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1256,6 +1256,7 @@ static bool TownHouseChangeInfo(uint hid, int numinfo, int prop, byte **bufp, in housespec[i]->enabled = true; housespec[i]->local_id = hid + i; housespec[i]->substitute_id = subs_id; + housespec[i]->grffile = _cur_grffile; housespec[i]->random_colour[0] = 0x04; // those 4 random colours are the base colour housespec[i]->random_colour[1] = 0x08; // for all new houses housespec[i]->random_colour[2] = 0x0C; // they stand for red, blue, orange and green @@ -2316,7 +2317,6 @@ static void FeatureMapSpriteGroup(byte *buf, int len) } hs->spritegroup = _cur_grffile->spritegroups[groupid]; - hs->grffile = _cur_grffile; } return; } diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 716eb673f..ec689b8f1 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -127,8 +127,15 @@ static void DrawTile_Town(TileInfo *ti) HouseID house_id = GetHouseType(ti->tile); if (house_id >= NEW_HOUSE_OFFSET) { - DrawNewHouseTile(ti, house_id); - return; + /* Houses don't necessarily need new graphics. If they don't have a + * spritegroup associated with them, then the sprite for the substitute + * house id is drawn instead. */ + if (GetHouseSpecs(house_id)->spritegroup != NULL) { + DrawNewHouseTile(ti, house_id); + return; + } else { + house_id = GetHouseSpecs(house_id)->substitute_id; + } } /* Retrieve pointer to the draw town tile struct */ |