summaryrefslogtreecommitdiff
path: root/src/elements/O2.c
blob: a8be78b95ed229f098885bef4ea08e9fd4e7cf47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <element.h>

int update_O2(UPDATE_FUNC_ARGS)
{
	int r,rx,ry;
	for (rx=-2; rx<3; rx++)
		for (ry=-2; ry<3; ry++)
			if (x+rx>=0 && y+ry>=0 && x+rx<XRES && y+ry<YRES && (rx || ry))
			{
				r = pmap[y+ry][x+rx];
				if ((r>>8)>=NPART || !r)
					continue;

				if ((r&0xFF)==PT_FIRE)
				{
					parts[r>>8].life+=(rand()/(RAND_MAX/100))*2;
					parts[r>>8].temp+=(rand()/(RAND_MAX/100));
					parts[i].tmp++;
				}

			}

	if (pv[y/CELL][x/CELL] > 8.0f)
	{
		for (rx=-2; rx<3; rx++)
			for (ry=-2; ry<3; ry++)
				if (x+rx>=0 && y+ry>=0 && x+rx<XRES && y+ry<YRES && (rx || ry))
				{
					r = pmap[y+ry][x+rx];
					if ((r>>8)>=NPART || !r)
						continue;
					if ((r&0xFF)==PT_H2)
						if (50<(rand()/(RAND_MAX/100))) {
							part_change_type(i,x,y,PT_WATR);
							part_change_type(r>>8,x+rx,y+ry,PT_WATR);
						}
				}
	}


	if (parts[i].tmp>=50)
	{
		create_part(i,x,y,PT_FIRE);
		parts[i].life+=(rand()/(RAND_MAX/100))+50;
		parts[i].temp+=(rand()/(RAND_MAX/100));
	}
	return 0;
}