Revenant is an action role-playing video game by Cinematix Studios, released in 1999 by the publisher Eidos Interactive. Game was not really commercially successful, but I remember it as beautifull game since my chiildhood. This mod is supposed to improve some elements of original game. I'm not planning to change storyline or alter it's telling. Main thing I want to do - delete those stupid labirinths in the end. P.S. I'm not really good in english, so please forgive me my mistakes.

Post tutorial Report RSS Automaps parsing

Simple way to stitch automaps from parts. Result is big BMP image.

Posted by on - Basic UI/HUD

This code originally was posted by user Vinylon on AccusedFarms (http://accursedfarms.com/forums/viewtopic.php?f=63&t=8128)

His link:

Pastebin.com

His code:

import Image
import os.path

fpx = 64
# max +/- Y coordinate
fy = 40
# max +/- X coordinate
fx = 90
# ~max number of maps.
mn = 60
hasmaps = False

for n in range(0, mn):
hasmaps = False
new_im = Image.new('RGB', (fpx*fx*2, fpx*fy*2))
for y in range(-fy, fy):
for x in range(-fx, fx):
# Look for files one directory up.
fname = "../%d_%d_%d.bmp"%(n, x, y)
if os.path.isfile(fname):
hasmaps = True
im = Image.open(fname)
new_im.paste(im, ((x+fx)*fpx, (y+fy)*fpx))
if hasmaps:
new_im.save("map_%d.bmp"%n, 'BMP')

Post comment Comments
Nicord Author
Nicord - - 9 comments

And my fancy version:
# Original code was written by Vinylon
# Accursedfarms.com
# some illustrating tweaks by Nicord
# Moddb.com
from PIL import Image
import os.path

def count_this(given_list, prefix):
number = 0
for point in given_list:
if point[0:3] == (str(prefix) + '_') or point[0:2] == (str(prefix) + '_'):
number += 1

if 0 <= number < 10:
return '00' + str(number)
elif 10 <= number < 100:
return '0' + str(number)
else:
return str(number)

directory = 'automaps6/'

print('----------------------------------------------------------------------------')
print('1. Starting to analyze "%s" directory' % directory)
files = os.listdir(directory)

names = []
for file in files:
pos = file.find('_')
if pos != -1:
names.append(int(file[0:pos]))
result = list(set(names))
result.sort()

counts = []
for current in result:
counts.append(count_this(files, current))

print('Total {} tiles found for {} maps'.format(len(files), len(result)))
print('----------------------------------------------------------------------------')
print('2. Starting to stitch tiles')

fpx = 64
# max +/- Y coordinate
fy = 40
# max +/- X coordinate
fx = 90

hasmaps = False

for n in range(0, len(result)):
hasmaps = False
new_im = Image.new('RGB', (fpx * fx * 2, fpx * fy * 2))

if result[n] < 10:
inp = '0'
else:
inp = ''

print('Processing map [{}{}], it has {} tiles, saved as "revenant_map_{}{}.bmp'.format(inp, result[n], counts[n], inp, result[n]))

for y in range(-fy, fy):
for x in range(-fx, fx):
fname = directory + "%d_%d_%d.bmp" % (result[n], x, y)

if os.path.isfile(fname):
hasmaps = True
im = Image.open(fname)
new_im.paste(im, ((x + fx) * fpx, (y + fy) * fpx))

if hasmaps:
new_im.save("revenant_map_%s%d.bmp" % (inp, result[n]), 'BMP')
result[n] = 0

print('----------------------------------------------------------------------------')
if sum(result) == 0:
print('Stitching successfully completed')
else:
print('Something has gone wrong, re check your settings')

Reply Good karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: