コード例 #1
0
void weather_change(void)
{
	int diff, change;

	if((time_info.month>=9)&&(time_info.month<=16))
		diff=(weather_info.pressure>985 ? -2 : 2);
	else
		diff=(weather_info.pressure>1015? -2 : 2);

	weather_info.change += (dice(1,4)*diff+dice(2,6)-dice(2,6));

	weather_info.change = MIN(weather_info.change,12);
	weather_info.change = MAX(weather_info.change,-12);

	weather_info.pressure += weather_info.change;

	weather_info.pressure = MIN(weather_info.pressure,1040);
	weather_info.pressure = MAX(weather_info.pressure,960);

	change = 0;

	switch(weather_info.sky){
		case SKY_CLOUDLESS :
		{
			if (weather_info.pressure<990)
				change = 1;
			else if (weather_info.pressure<1010)
				if(dice(1,4)==1)
					change = 1;
			break;
		}
		case SKY_CLOUDY :
		{
			if (weather_info.pressure<970)
				change = 2;
			else if (weather_info.pressure<990)
				if(dice(1,4)==1)
					change = 2;
				else
					change = 0;
			else if (weather_info.pressure>1030)
				if(dice(1,4)==1)
					change = 3;

			break;
		}
		case SKY_RAINING :
		{
			if (weather_info.pressure<970)
				if(dice(1,4)==1)
					change = 4;
				else
					change = 0;
			else if (weather_info.pressure>1030)
					change = 5;
			else if (weather_info.pressure>1010)
				if(dice(1,4)==1)
					change = 5;

			break;
		}
		case SKY_LIGHTNING :
		{
			if (weather_info.pressure>1010)
					change = 6;
			else if (weather_info.pressure>990)
				if(dice(1,4)==1)
					change = 6;

			break;
		}
		default : 
		{
			change = 0;
			weather_info.sky=SKY_CLOUDLESS;
			break;
		}
	}

        ChangeWeather(change);

}
コード例 #2
0
ファイル: weather.c プロジェクト: Lundex/wileymud
void weather_change(void)
{
    int                                     diff = 0;
    int                                     change = 0;

    if (DEBUG > 2)
	log_info("called %s with no arguments", __PRETTY_FUNCTION__);

    if ((time_info.month >= 9) && (time_info.month <= 16))
	diff = (weather_info.pressure > 985 ? -2 : 2);
    else
	diff = (weather_info.pressure > 1015 ? -2 : 2);

    weather_info.change += (dice(1, 4) * diff + dice(2, 6) - dice(2, 6));
    weather_info.change = MIN(weather_info.change, 12);
    weather_info.change = MAX(weather_info.change, -12);
    weather_info.pressure += weather_info.change;
    weather_info.pressure = MIN(weather_info.pressure, 1040);
    weather_info.pressure = MAX(weather_info.pressure, 960);
    change = 0;

    switch (weather_info.sky) {
	case SKY_CLOUDLESS:
	    {
		if (weather_info.pressure < 990)
		    change = 1;
		else if (weather_info.pressure < 1010)
		    if (dice(1, 4) == 1)
			change = 1;
		break;
	    }
	case SKY_CLOUDY:
	    {
		if (weather_info.pressure < 970)
		    change = 2;
		else if (weather_info.pressure < 990)
		    if (dice(1, 4) == 1)
			change = 2;
		    else
			change = 0;
		else if (weather_info.pressure > 1030)
		    if (dice(1, 4) == 1)
			change = 3;
	    }
	    break;
	case SKY_RAINING:
	    {
		if (weather_info.pressure < 970)
		    if (dice(1, 4) == 1)
			change = 4;
		    else
			change = 0;
		else if (weather_info.pressure > 1030)
		    change = 5;
		else if (weather_info.pressure > 1010)
		    if (dice(1, 4) == 1)
			change = 5;
	    }
	    break;
	case SKY_LIGHTNING:
	    {
		if (weather_info.pressure > 1010)
		    change = 6;
		else if (weather_info.pressure > 990)
		    if (dice(1, 4) == 1)
			change = 6;
	    }
	    break;
	default:
	    {
		change = 0;
		weather_info.sky = SKY_CLOUDLESS;
	    }
	    break;
    }
    ChangeWeather(change);
}