disaster_cmd.c
changeset 1093 4fdc46eaf423
parent 1048 8611c5c02dcb
child 1209 2e00193652b2
equal deleted inserted replaced
1092:e3b4a131db7c 1093:4fdc46eaf423
   692 void OnNewDay_DisasterVehicle(Vehicle *v)
   692 void OnNewDay_DisasterVehicle(Vehicle *v)
   693 {
   693 {
   694 	// not used
   694 	// not used
   695 }
   695 }
   696 
   696 
   697 typedef void DisasterInitProc();
   697 typedef void DisasterInitProc(void);
   698 
   698 
   699 // Zeppeliner which crashes on a small airport
   699 // Zeppeliner which crashes on a small airport
   700 static void Disaster0_Init()
   700 static void Disaster0_Init(void)
   701 {
   701 {
   702 	Vehicle *v = ForceAllocateSpecialVehicle(), *u;
   702 	Vehicle *v = ForceAllocateSpecialVehicle(), *u;
   703 	Station *st;
   703 	Station *st;
   704 	int x;
   704 	int x;
   705 
   705 
   728 		InitializeDisasterVehicle(u, x, 0, 0, 3, 1);
   728 		InitializeDisasterVehicle(u, x, 0, 0, 3, 1);
   729 		u->vehstatus |= VS_DISASTER;
   729 		u->vehstatus |= VS_DISASTER;
   730 	}
   730 	}
   731 }
   731 }
   732 
   732 
   733 static void Disaster1_Init()
   733 static void Disaster1_Init(void)
   734 {
   734 {
   735 	Vehicle *v = ForceAllocateSpecialVehicle(), *u;
   735 	Vehicle *v = ForceAllocateSpecialVehicle(), *u;
   736 	int x;
   736 	int x;
   737 
   737 
   738 	if (v == NULL)
   738 	if (v == NULL)
   751 		InitializeDisasterVehicle(u,x,0,0,3,3);
   751 		InitializeDisasterVehicle(u,x,0,0,3,3);
   752 		u->vehstatus |= VS_DISASTER;
   752 		u->vehstatus |= VS_DISASTER;
   753 	}
   753 	}
   754 }
   754 }
   755 
   755 
   756 static void Disaster2_Init()
   756 static void Disaster2_Init(void)
   757 {
   757 {
   758 	Industry *i, *found;
   758 	Industry *i, *found;
   759 	Vehicle *v,*u;
   759 	Vehicle *v,*u;
   760 	int x,y;
   760 	int x,y;
   761 
   761 
   787 		InitializeDisasterVehicle(u,x,y,0,3,5);
   787 		InitializeDisasterVehicle(u,x,y,0,3,5);
   788 		u->vehstatus |= VS_DISASTER;
   788 		u->vehstatus |= VS_DISASTER;
   789 	}
   789 	}
   790 }
   790 }
   791 
   791 
   792 static void Disaster3_Init()
   792 static void Disaster3_Init(void)
   793 {
   793 {
   794 	Industry *i, *found;
   794 	Industry *i, *found;
   795 	Vehicle *v,*u,*w;
   795 	Vehicle *v,*u,*w;
   796 	int x,y;
   796 	int x,y;
   797 
   797 
   829 			InitializeDisasterVehicle(w,x,y,140,5,8);
   829 			InitializeDisasterVehicle(w,x,y,140,5,8);
   830 		}
   830 		}
   831 	}
   831 	}
   832 }
   832 }
   833 
   833 
   834 static void Disaster4_Init()
   834 static void Disaster4_Init(void)
   835 {
   835 {
   836 	Vehicle *v = ForceAllocateSpecialVehicle(), *u;
   836 	Vehicle *v = ForceAllocateSpecialVehicle(), *u;
   837 	int x,y;
   837 	int x,y;
   838 
   838 
   839 	if (v == NULL)
   839 	if (v == NULL)
   854 		u->vehstatus |= VS_DISASTER;
   854 		u->vehstatus |= VS_DISASTER;
   855 	}
   855 	}
   856 }
   856 }
   857 
   857 
   858 // Submarine type 1
   858 // Submarine type 1
   859 static void Disaster5_Init()
   859 static void Disaster5_Init(void)
   860 {
   860 {
   861 	Vehicle *v = ForceAllocateSpecialVehicle();
   861 	Vehicle *v = ForceAllocateSpecialVehicle();
   862 	int x,y;
   862 	int x,y;
   863 	byte dir;
   863 	byte dir;
   864 	uint32 r;
   864 	uint32 r;
   875 	InitializeDisasterVehicle(v, x, y, 0, dir,13);
   875 	InitializeDisasterVehicle(v, x, y, 0, dir,13);
   876 	v->age = 0;
   876 	v->age = 0;
   877 }
   877 }
   878 
   878 
   879 // Submarine type 2
   879 // Submarine type 2
   880 static void Disaster6_Init()
   880 static void Disaster6_Init(void)
   881 {
   881 {
   882 	Vehicle *v = ForceAllocateSpecialVehicle();
   882 	Vehicle *v = ForceAllocateSpecialVehicle();
   883 	int x,y;
   883 	int x,y;
   884 	byte dir;
   884 	byte dir;
   885 	uint32 r;
   885 	uint32 r;
   895 	if (r & 0x80000000) { y = MapMaxX() * 16 - 8 - 1; dir = 7; }
   895 	if (r & 0x80000000) { y = MapMaxX() * 16 - 8 - 1; dir = 7; }
   896 	InitializeDisasterVehicle(v, x, y, 0, dir,14);
   896 	InitializeDisasterVehicle(v, x, y, 0, dir,14);
   897 	v->age = 0;
   897 	v->age = 0;
   898 }
   898 }
   899 
   899 
   900 static void Disaster7_Init()
   900 static void Disaster7_Init(void)
   901 {
   901 {
   902 	Industry *i;
   902 	Industry *i;
   903 	int maxloop = 15;
   903 	int maxloop = 15;
   904 	int index = Random() & 0xF;
   904 	int index = Random() & 0xF;
   905 
   905 
   952 	MK(75,110),
   952 	MK(75,110),
   953 	MK(50,85),
   953 	MK(50,85),
   954 };
   954 };
   955 
   955 
   956 
   956 
   957 static void DoDisaster()
   957 static void DoDisaster(void)
   958 {
   958 {
   959 	byte buf[8];
   959 	byte buf[8];
   960 	byte year = _cur_year;
   960 	byte year = _cur_year;
   961 	int i,j;
   961 	int i,j;
   962 
   962 
   971 
   971 
   972 	_disaster_initprocs[buf[(uint16)Random() * j >> 16]]();
   972 	_disaster_initprocs[buf[(uint16)Random() * j >> 16]]();
   973 }
   973 }
   974 
   974 
   975 
   975 
   976 static void ResetDisasterDelay()
   976 static void ResetDisasterDelay(void)
   977 {
   977 {
   978 	_disaster_delay = (int)(Random() & 0x1FF) + 730;
   978 	_disaster_delay = (int)(Random() & 0x1FF) + 730;
   979 }
   979 }
   980 
   980 
   981 void DisasterDailyLoop()
   981 void DisasterDailyLoop(void)
   982 {
   982 {
   983 	if (--_disaster_delay != 0)
   983 	if (--_disaster_delay != 0)
   984 		return;
   984 		return;
   985 
   985 
   986 	ResetDisasterDelay();
   986 	ResetDisasterDelay();
   987 
   987 
   988 	if (_opt.diff.disasters != 0)
   988 	if (_opt.diff.disasters != 0)
   989 		DoDisaster();
   989 		DoDisaster();
   990 }
   990 }
   991 
   991 
   992 void StartupDisasters() {
   992 void StartupDisasters(void)
       
   993 {
   993 	ResetDisasterDelay();
   994 	ResetDisasterDelay();
   994 }
   995 }
   995 
   996