mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-26 02:41:28 +00:00
Live-Like weather. Big thanks to Robregen for figuring out the system!
Included in the required SQL is weather data pulled from NewZone live packets for up to PoP. An update to EQExtractor will be made to grab the rest of the data from existing collects. Please note: Until weather data is grabbed for zones later than PoP, weather will not work in those zones.
This commit is contained in:
parent
3970bb5955
commit
70f994cda5
@ -380,7 +380,11 @@ struct NewZone_Struct {
|
||||
/*0404*/ float fog_maxclip[4];
|
||||
/*0420*/ float gravity;
|
||||
/*0424*/ uint8 time_type;
|
||||
/*0425*/ uint8 unknown360[49];
|
||||
/*0425*/ uint8 rain_chance[4];
|
||||
/*0429*/ uint8 rain_duration[4];
|
||||
/*0433*/ uint8 snow_chance[4];
|
||||
/*0437*/ uint8 snow_duration[4];
|
||||
/*0441*/ uint8 unknown360[33];
|
||||
/*0474*/ uint8 sky; // Sky Type
|
||||
/*0475*/ uint8 unknown331[13]; // ***Placeholder
|
||||
/*0488*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -312,7 +312,11 @@ struct NewZone_Struct {
|
||||
/*0404*/ float fog_maxclip[4];
|
||||
/*0420*/ float gravity;
|
||||
/*0424*/ uint8 time_type;
|
||||
/*0425*/ uint8 unknown360[49];
|
||||
/*0425*/ uint8 rain_chance[4];
|
||||
/*0429*/ uint8 rain_duration[4];
|
||||
/*0433*/ uint8 snow_chance[4];
|
||||
/*0437*/ uint8 snow_duration[4];
|
||||
/*0441*/ uint8 unknown360[33];
|
||||
/*0474*/ uint8 sky; // Sky Type
|
||||
/*0475*/ uint8 unknown331[13]; // ***Placeholder
|
||||
/*0488*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -1587,8 +1587,20 @@ ENCODE(OP_NewZone) {
|
||||
}
|
||||
OUT(gravity);
|
||||
OUT(time_type);
|
||||
for(r = 16; r < 48; r++) {
|
||||
eq->unknown521[r] = 0xFF; //observed
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 32; r++) {
|
||||
eq->unknown537[r] = 0xFF; //observed
|
||||
}
|
||||
OUT(sky);
|
||||
OUT(zone_exp_multiplier);
|
||||
|
||||
@ -529,7 +529,11 @@ struct NewZone_Struct {
|
||||
/*0500*/ float fog_maxclip[4];
|
||||
/*0516*/ float gravity;
|
||||
/*0520*/ uint8 time_type;
|
||||
/*0521*/ uint8 unknown521[49];
|
||||
/*0521*/ uint8 rain_chance[4];
|
||||
/*0525*/ uint8 rain_duration[4];
|
||||
/*0529*/ uint8 snow_chance[4];
|
||||
/*0533*/ uint8 snow_duration[4];
|
||||
/*0537*/ uint8 unknown537[33];
|
||||
/*0570*/ uint8 sky; // Sky Type
|
||||
/*0571*/ uint8 unknown571[13]; // ***Placeholder
|
||||
/*0584*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -709,8 +709,20 @@ ENCODE(OP_NewZone) {
|
||||
}
|
||||
OUT(gravity);
|
||||
OUT(time_type);
|
||||
for(r = 16; r < 48; r++) {
|
||||
eq->unknown521[r] = 0xFF; //observed
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 32; r++) {
|
||||
eq->unknown537[r] = 0xFF; //observed
|
||||
}
|
||||
OUT(sky);
|
||||
OUT(zone_exp_multiplier);
|
||||
|
||||
@ -399,7 +399,11 @@ struct NewZone_Struct {
|
||||
/*0500*/ float fog_maxclip[4];
|
||||
/*0516*/ float gravity;
|
||||
/*0520*/ uint8 time_type;
|
||||
/*0521*/ uint8 unknown521[49];
|
||||
/*0521*/ uint8 rain_chance[4];
|
||||
/*0525*/ uint8 rain_duration[4];
|
||||
/*0529*/ uint8 snow_chance[4];
|
||||
/*0533*/ uint8 snow_duration[4];
|
||||
/*0537*/ uint8 unknown537[33];
|
||||
/*0570*/ uint8 sky; // Sky Type
|
||||
/*0571*/ uint8 unknown571[13]; // ***Placeholder
|
||||
/*0584*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -708,8 +708,20 @@ ENCODE(OP_NewZone) {
|
||||
}
|
||||
OUT(gravity);
|
||||
OUT(time_type);
|
||||
for(r = 16; r < 48; r++) {
|
||||
eq->unknown521[r] = 0xFF; //observed
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 32; r++) {
|
||||
eq->unknown537[r] = 0xFF; //observed
|
||||
}
|
||||
OUT(sky);
|
||||
OUT(zone_exp_multiplier);
|
||||
|
||||
@ -382,7 +382,11 @@ struct NewZone_Struct {
|
||||
/*0500*/ float fog_maxclip[4];
|
||||
/*0516*/ float gravity;
|
||||
/*0520*/ uint8 time_type;
|
||||
/*0521*/ uint8 unknown521[49];
|
||||
/*0521*/ uint8 rain_chance[4];
|
||||
/*0525*/ uint8 rain_duration[4];
|
||||
/*0529*/ uint8 snow_chance[4];
|
||||
/*0533*/ uint8 snow_duration[4];
|
||||
/*0537*/ uint8 unknown537[33];
|
||||
/*0570*/ uint8 sky; // Sky Type
|
||||
/*0571*/ uint8 unknown571[13]; // ***Placeholder
|
||||
/*0584*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -324,7 +324,11 @@ struct NewZone_Struct {
|
||||
/*0404*/ float fog_maxclip[4];
|
||||
/*0420*/ float gravity;
|
||||
/*0424*/ uint8 time_type;
|
||||
/*0425*/ uint8 unknown360[49];
|
||||
/*0425*/ uint8 rain_chance[4];
|
||||
/*0429*/ uint8 rain_duration[4];
|
||||
/*0433*/ uint8 snow_chance[4];
|
||||
/*0437*/ uint8 snow_duration[4];
|
||||
/*0441*/ uint8 unknown360[33];
|
||||
/*0474*/ uint8 sky; // Sky Type
|
||||
/*0475*/ uint8 unknown331[13]; // ***Placeholder
|
||||
/*0488*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -733,8 +733,20 @@ ENCODE(OP_NewZone) {
|
||||
}
|
||||
OUT(gravity);
|
||||
OUT(time_type);
|
||||
for(r = 16; r < 48; r++) {
|
||||
eq->unknown521[r] = 0xFF; //observed
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(rain_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_chance[r]);
|
||||
}
|
||||
for(r = 0; r < 4; r++) {
|
||||
OUT(snow_duration[r]);
|
||||
}
|
||||
for(r = 0; r < 32; r++) {
|
||||
eq->unknown537[r] = 0xFF; //observed
|
||||
}
|
||||
OUT(sky);
|
||||
OUT(zone_exp_multiplier);
|
||||
|
||||
@ -399,7 +399,11 @@ struct NewZone_Struct {
|
||||
/*0500*/ float fog_maxclip[4];
|
||||
/*0516*/ float gravity;
|
||||
/*0520*/ uint8 time_type;
|
||||
/*0521*/ uint8 unknown521[49];
|
||||
/*0521*/ uint8 rain_chance[4];
|
||||
/*0525*/ uint8 rain_duration[4];
|
||||
/*0529*/ uint8 snow_chance[4];
|
||||
/*0533*/ uint8 snow_duration[4];
|
||||
/*0537*/ uint8 unknown537[33];
|
||||
/*0570*/ uint8 sky; // Sky Type
|
||||
/*0571*/ uint8 unknown571[13]; // ***Placeholder
|
||||
/*0584*/ float zone_exp_multiplier; // Experience Multiplier
|
||||
|
||||
@ -196,6 +196,7 @@ RULE_INT ( Zone, ReservedInstances, 30 ) //Will reserve this many instance ids f
|
||||
RULE_INT ( Zone, EbonCrystalItemID, 40902)
|
||||
RULE_INT ( Zone, RadiantCrystalItemID, 40903)
|
||||
RULE_BOOL ( Zone, LevelBasedEXPMods, false) // Allows you to use the level_exp_mods table in consideration to your players EXP hits
|
||||
RULE_INT ( Zone, WeatherTimer, 600) // Weather timer when no duration is available
|
||||
RULE_CATEGORY_END()
|
||||
|
||||
RULE_CATEGORY( Map )
|
||||
|
||||
140
utils/sql/git/required/2014_01_20_Weather.sql
Normal file
140
utils/sql/git/required/2014_01_20_Weather.sql
Normal file
@ -0,0 +1,140 @@
|
||||
alter table zone drop column `weather`;
|
||||
alter table zone add column `rain_chance1` int(4) not null default 0;
|
||||
alter table zone add column `rain_chance2` int(4) not null default 0;
|
||||
alter table zone add column `rain_chance3` int(4) not null default 0;
|
||||
alter table zone add column `rain_chance4` int(4) not null default 0;
|
||||
alter table zone add column `rain_duration1` int(4) not null default 0;
|
||||
alter table zone add column `rain_duration2` int(4) not null default 0;
|
||||
alter table zone add column `rain_duration3` int(4) not null default 0;
|
||||
alter table zone add column `rain_duration4` int(4) not null default 0;
|
||||
alter table zone add column `snow_chance1` int(4) not null default 0;
|
||||
alter table zone add column `snow_chance2` int(4) not null default 0;
|
||||
alter table zone add column `snow_chance3` int(4) not null default 0;
|
||||
alter table zone add column `snow_chance4` int(4) not null default 0;
|
||||
alter table zone add column `snow_duration1` int(4) not null default 0;
|
||||
alter table zone add column `snow_duration2` int(4) not null default 0;
|
||||
alter table zone add column `snow_duration3` int(4) not null default 0;
|
||||
alter table zone add column `snow_duration4` int(4) not null default 0;
|
||||
|
||||
UPDATE `zone` SET `snow_chance1`=25, `snow_chance2`=20, `snow_chance3`=10, `snow_chance4`=20, `snow_duration1`=10, `snow_duration2`=8, `snow_duration3`=5, `snow_duration4`=10 WHERE `id`=160;
|
||||
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=5 WHERE `id`=202;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=306;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=304;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=23;
|
||||
UPDATE `zone` SET `snow_chance1`=50, `snow_chance2`=25, `snow_chance3`=10, `snow_chance4`=25, `snow_duration1`=24, `snow_duration2`=24, `snow_duration3`=24, `snow_duration4`=24 WHERE `id`=112;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=303;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=302;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=10, `rain_duration2`=10 WHERE `id`=133;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=10, `rain_duration2`=10 WHERE `id`=132;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=10, `rain_duration2`=10 WHERE `id`=131;
|
||||
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=2 WHERE `id`=257;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=104;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=5, `rain_chance4`=5, `rain_duration1`=2, `rain_duration2`=3, `rain_duration3`=1, `rain_duration4`=2 WHERE `id`=439;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=365;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=4;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=204;
|
||||
UPDATE `zone` SET `rain_chance1`=100, `rain_chance2`=100, `rain_chance3`=100, `rain_chance4`=100, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=224;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=138;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=56;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=31;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=34;
|
||||
UPDATE `zone` SET `rain_chance1`=100, `rain_chance2`=100, `rain_chance3`=100, `rain_chance4`=100, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=419;
|
||||
UPDATE `zone` SET `rain_chance1`=15, `rain_chance2`=15, `rain_chance3`=5, `rain_chance4`=5 WHERE `id`=116;
|
||||
UPDATE `zone` SET `rain_chance1`=15, `rain_chance2`=15, `rain_chance3`=5, `rain_chance4`=5 WHERE `id`=115;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=188;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=189;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=410;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=75, `rain_chance3`=75, `rain_chance4`=25, `rain_duration1`=16, `rain_duration2`=12, `rain_duration3`=12, `rain_duration4`=16 WHERE `id`=276;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=430;
|
||||
UPDATE `zone` SET `rain_chance2`=19, `rain_chance3`=14, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=20, `snow_chance4`=20, `snow_duration1`=2, `snow_duration4`=1 WHERE `id`=370;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=194;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=108;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=110;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=51;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=196;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=5, `rain_chance4`=10 WHERE `id`=316;
|
||||
UPDATE `zone` SET `rain_chance1`=20, `rain_chance3`=10, `rain_chance4`=20, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=166;
|
||||
UPDATE `zone` SET `rain_chance1`=20, `rain_chance3`=10, `rain_chance4`=20, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=165;
|
||||
UPDATE `zone` SET `rain_chance1`=20, `rain_chance2`=20, `rain_chance3`=5, `rain_chance4`=10 WHERE `id`=225;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=329;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=21;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=99;
|
||||
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=30, `rain_chance3`=20, `rain_chance4`=30, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=255;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=301;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=359;
|
||||
UPDATE `zone` SET `rain_chance1`=20, `rain_chance2`=20, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=201;
|
||||
UPDATE `zone` SET `rain_chance1`=35, `rain_chance2`=45, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=312;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=75, `rain_chance3`=50, `rain_chance4`=5, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=114;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=263;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=36;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=182;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=142;
|
||||
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=3 WHERE `id`=361;
|
||||
UPDATE `zone` SET `rain_chance1`=8, `rain_chance2`=5 WHERE `id`=259;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=357;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=156;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=149;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=10, `snow_duration1`=10 WHERE `id`=406;
|
||||
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=40, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=119;
|
||||
UPDATE `zone` SET `rain_chance1`=3, `rain_chance2`=3, `rain_chance3`=3, `rain_chance4`=3, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=32;
|
||||
UPDATE `zone` SET `rain_chance1`=3, `rain_chance2`=3, `rain_chance3`=3, `rain_chance4`=3, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=33;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=374;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=412;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=331;
|
||||
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=5 WHERE `id`=345;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=30;
|
||||
UPDATE `zone` SET `rain_chance1`=35, `rain_chance2`=45, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=107;
|
||||
UPDATE `zone` SET `rain_chance1`=70, `rain_chance2`=70, `rain_chance3`=70, `rain_chance4`=70, `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=46;
|
||||
UPDATE `zone` SET `rain_duration1`=15, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=25, `snow_chance2`=15, `snow_chance3`=5, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=12, `snow_duration3`=6, `snow_duration4`=12 WHERE `id`=95;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=190;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=10, `rain_chance4`=25, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=275;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=43;
|
||||
UPDATE `zone` SET `rain_chance1`=35, `rain_chance2`=45, `rain_chance3`=15, `rain_chance4`=20, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=134;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=97;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=258;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=199;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=431;
|
||||
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=40, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=200;
|
||||
UPDATE `zone` SET `rain_chance4`=25 WHERE `id`=113;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=15, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=48;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=50, `snow_chance2`=40, `snow_chance3`=35, `snow_chance4`=40, `snow_duration1`=15, `snow_duration2`=10, `snow_duration3`=4, `snow_duration4`=12 WHERE `id`=436;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=243;
|
||||
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=30, `rain_chance3`=30, `rain_chance4`=30, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=428;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=50, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=102;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=15, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=174;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=136;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=50, `snow_chance2`=15, `snow_chance3`=15, `snow_chance4`=15, `snow_duration1`=24, `snow_duration2`=6, `snow_duration3`=2, `snow_duration4`=10 WHERE `id`=139;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=404;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=405;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=143;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=394;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=416;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=253;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=252;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_duration1`=12 WHERE `id`=362;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=140;
|
||||
UPDATE `zone` SET `rain_chance1`=30, `rain_chance2`=30, `rain_chance3`=30, `rain_chance4`=30, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_chance1`=5, `snow_chance2`=5, `snow_chance3`=5, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1 WHERE `id`=418;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=333;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=140;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=277;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1, `snow_duration2`=1, `snow_duration3`=1, `snow_duration4`=1 WHERE `id`=103;
|
||||
UPDATE `zone` SET `rain_chance1`=2, `rain_chance2`=2, `rain_chance3`=2, `rain_chance4`=2, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=332;
|
||||
UPDATE `zone` SET `rain_chance1`=5, `rain_chance2`=5, `rain_chance3`=5, `rain_chance4`=5, `rain_duration1`=10, `rain_duration2`=10, `rain_duration3`=10, `rain_duration4`=10 WHERE `id`=336;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=173;
|
||||
UPDATE `zone` SET `rain_chance1`=2, `rain_chance2`=8, `rain_chance3`=10, `rain_chance4`=3, `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=141;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10, `snow_chance1`=25, `snow_duration1`=24 WHERE `id`=389;
|
||||
UPDATE `zone` SET `rain_duration1`=24, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24 WHERE `id`=191;
|
||||
UPDATE `zone` SET `rain_chance1`=25, `rain_chance2`=25, `rain_chance3`=50, `rain_chance4`=25, `rain_duration1`=1, `rain_duration2`=1, `rain_duration3`=1, `rain_duration4`=1 WHERE `id`=223;
|
||||
UPDATE `zone` SET `rain_duration1`=1, `rain_duration2`=2, `rain_duration3`=1, `rain_duration4`=1, `snow_duration1`=1 WHERE `id`=49;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=281;
|
||||
UPDATE `zone` SET `rain_chance1`=6, `rain_chance2`=6, `rain_chance3`=6, `rain_chance4`=6, `rain_duration1`=12, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=288;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=290;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=170;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=27;
|
||||
UPDATE `zone` SET `rain_chance2`=100, `rain_chance3`=100, `rain_chance4`=50, `rain_duration2`=24, `rain_duration3`=24, `rain_duration4`=24, `snow_chance1`=100, `snow_chance4`=50, `snow_duration1`=24, `snow_duration4`=24 WHERE `id`=289;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=285;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=171;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=282;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=283;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=24, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=280;
|
||||
UPDATE `zone` SET `rain_chance1`=10, `rain_chance2`=10, `rain_chance3`=10, `rain_chance4`=10, `rain_duration1`=12, `rain_duration2`=6, `rain_duration3`=2, `rain_duration4`=10 WHERE `id`=254;
|
||||
@ -2123,6 +2123,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
|
||||
snprintf(effect_desc, _EDLEN, "Stop Rain");
|
||||
#endif
|
||||
zone->zone_weather = 0;
|
||||
zone->weather_intensity = 0;
|
||||
zone->weatherSend();
|
||||
break;
|
||||
}
|
||||
|
||||
191
zone/zone.cpp
191
zone/zone.cpp
@ -134,20 +134,6 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) {
|
||||
}
|
||||
}
|
||||
|
||||
zone->weather_type = database.GetZoneWeather(iZoneID, zone->GetInstanceVersion());
|
||||
|
||||
LogFile->write(EQEMuLog::Debug, "Zone: %s has weather of type %i.", zonename, zone->weather_type);
|
||||
|
||||
if(zone->weather_type > 3 || zone->weather_type == 0) {
|
||||
zone->zone_weather = 0;
|
||||
zone->Weather_Timer->Disable();
|
||||
LogFile->write(EQEMuLog::Debug, "Zone: %s(%i) has no weather type. The weather timer has been disabled.", zonename, iZoneID);
|
||||
}
|
||||
else {
|
||||
zone->zone_weather = 0;
|
||||
LogFile->write(EQEMuLog::Debug, "Zone: %s(%i) has weather type = %i. The weather timer has been enabled.", zonename, iZoneID, zone->weather_type);
|
||||
}
|
||||
|
||||
ZoneLoaded = true;
|
||||
|
||||
worldserver.SetZone(iZoneID, iInstanceID);
|
||||
@ -900,11 +886,11 @@ Zone::Zone(uint32 in_zoneid, uint32 in_instanceid, const char* in_short_name)
|
||||
long_name = strcpy(new char[18], "Long zone missing");
|
||||
}
|
||||
autoshutdown_timer.Start(AUTHENTICATION_TIMEOUT * 1000, false);
|
||||
Weather_Timer = new Timer((MakeRandomInt(1800, 7200) + 30) * 2000);
|
||||
Weather_Timer = new Timer(60000);
|
||||
Weather_Timer->Start();
|
||||
LogFile->write(EQEMuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", short_name, Weather_Timer->GetRemainingTime()/1000);
|
||||
weather_type = 0;
|
||||
zone_weather = 0;
|
||||
weather_intensity = 0;
|
||||
blocked_spells = nullptr;
|
||||
totalBS = 0;
|
||||
aas = nullptr;
|
||||
@ -1365,38 +1351,7 @@ bool Zone::Process() {
|
||||
|
||||
if(Weather_Timer->Check()){
|
||||
Weather_Timer->Disable();
|
||||
uint16 tmpweather = MakeRandomInt(0, 100);
|
||||
|
||||
if(zone->weather_type != 0)
|
||||
{
|
||||
if(tmpweather >= 80)
|
||||
{
|
||||
// A change in the weather....
|
||||
uint8 tmpOldWeather = zone_weather;
|
||||
|
||||
if(zone->zone_weather == 0)
|
||||
zone->zone_weather = zone->weather_type;
|
||||
else
|
||||
zone->zone_weather = 0;
|
||||
|
||||
LogFile->write(EQEMuLog::Debug, "The weather for zone: %s has changed. Old weather was = %i. New weather is = %i", zone->GetShortName(), tmpOldWeather, zone_weather);
|
||||
|
||||
this->weatherSend();
|
||||
}
|
||||
else
|
||||
LogFile->write(EQEMuLog::Debug, "The weather for zone: %s is not going to change. Chance was = %i percent.", zone->GetShortName(), tmpweather);
|
||||
|
||||
uint32 weatherTime = 0;
|
||||
|
||||
if(zone->zone_weather != zone->weather_type)
|
||||
weatherTime = (MakeRandomInt(1800, 7200) + 30) * 2000;
|
||||
else
|
||||
weatherTime = (MakeRandomInt(900, 2700) + 30) * 1000;
|
||||
|
||||
Weather_Timer->Start(weatherTime);
|
||||
|
||||
LogFile->write(EQEMuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", zone->GetShortName(), Weather_Timer->GetRemainingTime()/1000);
|
||||
}
|
||||
this->ChangeWeather();
|
||||
}
|
||||
|
||||
if(qGlobals)
|
||||
@ -1426,6 +1381,129 @@ bool Zone::Process() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void Zone::ChangeWeather()
|
||||
{
|
||||
if(!HasWeather())
|
||||
{
|
||||
Weather_Timer->Disable();
|
||||
return;
|
||||
}
|
||||
|
||||
int chance = MakeRandomInt(0, 3);
|
||||
uint8 rainchance = zone->newzone_data.rain_chance[chance];
|
||||
uint8 rainduration = zone->newzone_data.rain_duration[chance];
|
||||
uint8 snowchance = zone->newzone_data.snow_chance[chance];
|
||||
uint8 snowduration = zone->newzone_data.snow_duration[chance];
|
||||
uint32 weathertimer = 0;
|
||||
uint16 tmpweather = MakeRandomInt(0, 100);
|
||||
uint8 duration = 0;
|
||||
uint8 tmpOldWeather = zone->zone_weather;
|
||||
bool changed = false;
|
||||
|
||||
if(tmpOldWeather == 0)
|
||||
{
|
||||
if(rainchance > 0 || snowchance > 0)
|
||||
{
|
||||
uint8 intensity = MakeRandomInt(1, 10);
|
||||
if((rainchance > snowchance) || (rainchance == snowchance))
|
||||
{
|
||||
//It's gunna rain!
|
||||
if(rainchance >= tmpweather)
|
||||
{
|
||||
if(rainduration == 0)
|
||||
duration = 1;
|
||||
else
|
||||
duration = rainduration*3; //Duration is 1 EQ hour which is 3 earth minutes.
|
||||
|
||||
weathertimer = (duration*60)*1000;
|
||||
Weather_Timer->Start(weathertimer);
|
||||
zone->zone_weather = 1;
|
||||
zone->weather_intensity = intensity;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//It's gunna snow!
|
||||
if(snowchance >= tmpweather)
|
||||
{
|
||||
if(snowduration == 0)
|
||||
duration = 1;
|
||||
else
|
||||
duration = snowduration*3;
|
||||
weathertimer = (duration*60)*1000;
|
||||
Weather_Timer->Start(weathertimer);
|
||||
zone->zone_weather = 2;
|
||||
zone->weather_intensity = intensity;
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
changed = true;
|
||||
//We've had weather, now taking a break
|
||||
if(tmpOldWeather == 1)
|
||||
{
|
||||
if(rainduration == 0)
|
||||
duration = 1;
|
||||
else
|
||||
duration = rainduration*3; //Duration is 1 EQ hour which is 3 earth minutes.
|
||||
|
||||
weathertimer = (duration*60)*1000;
|
||||
Weather_Timer->Start(weathertimer);
|
||||
zone->zone_weather = 0;
|
||||
zone->weather_intensity = 0;
|
||||
}
|
||||
else if(tmpOldWeather == 2)
|
||||
{
|
||||
if(snowduration == 0)
|
||||
duration = 1;
|
||||
else
|
||||
duration = snowduration*3; //Duration is 1 EQ hour which is 3 earth minutes.
|
||||
|
||||
weathertimer = (duration*60)*1000;
|
||||
Weather_Timer->Start(weathertimer);
|
||||
zone->zone_weather = 0;
|
||||
zone->weather_intensity = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(changed == false)
|
||||
{
|
||||
if(weathertimer == 0)
|
||||
{
|
||||
uint32 weatherTimerRule = RuleI(Zone, WeatherTimer);
|
||||
weathertimer = weatherTimerRule*1000;
|
||||
Weather_Timer->Start(weathertimer);
|
||||
}
|
||||
LogFile->write(EQEMuLog::Debug, "The next weather check for zone: %s will be in %i seconds.", zone->GetShortName(), Weather_Timer->GetRemainingTime()/1000);
|
||||
}
|
||||
else
|
||||
{
|
||||
LogFile->write(EQEMuLog::Debug, "The weather for zone: %s has changed. Old weather was = %i. New weather is = %i The next check will be in %i seconds. Rain chance: %i, Rain duration: %i, Snow chance %i, Snow duration: %i", zone->GetShortName(), tmpOldWeather, zone_weather,Weather_Timer->GetRemainingTime()/1000,rainchance,rainduration,snowchance,snowduration);
|
||||
this->weatherSend();
|
||||
}
|
||||
}
|
||||
|
||||
bool Zone::HasWeather()
|
||||
{
|
||||
uint8 rain1 = zone->newzone_data.rain_chance[0];
|
||||
uint8 rain2 = zone->newzone_data.rain_chance[1];
|
||||
uint8 rain3 = zone->newzone_data.rain_chance[2];
|
||||
uint8 rain4 = zone->newzone_data.rain_chance[3];
|
||||
uint8 snow1 = zone->newzone_data.snow_chance[0];
|
||||
uint8 snow2 = zone->newzone_data.snow_chance[1];
|
||||
uint8 snow3 = zone->newzone_data.snow_chance[2];
|
||||
uint8 snow4 = zone->newzone_data.snow_chance[3];
|
||||
|
||||
if(rain1 == 0 && rain2 == 0 && rain3 == 0 && rain4 == 0 && snow1 == 0 && snow2 == 0 && snow3 == 0 && snow4 == 0)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
void Zone::StartShutdownTimer(uint32 set_time) {
|
||||
if (set_time > autoshutdown_timer.GetRemainingTime()) {
|
||||
if (set_time == (RuleI(Zone, AutoShutdownDelay)))
|
||||
@ -1807,26 +1885,11 @@ bool ZoneDatabase::GetDecayTimes(npcDecayTimes_Struct* npcCorpseDecayTimes) {
|
||||
|
||||
void Zone::weatherSend()
|
||||
{
|
||||
/*switch(zone_weather)
|
||||
{
|
||||
case 0:
|
||||
entity_list.Message(0, 0, "The sky clears.");
|
||||
break;
|
||||
case 1:
|
||||
entity_list.Message(0, 0, "Raindrops begin to fall from the sky.");
|
||||
break;
|
||||
case 2:
|
||||
entity_list.Message(0, 0, "Snowflakes begin to fall from the sky.");
|
||||
break;
|
||||
default:
|
||||
entity_list.Message(0, 0, "Strange weather patterns form in the sky. (%i)", zone_weather);
|
||||
break;
|
||||
}*/
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket(OP_Weather, 8);
|
||||
if(zone_weather>0)
|
||||
outapp->pBuffer[0] = zone_weather-1;
|
||||
if(zone_weather>0)
|
||||
outapp->pBuffer[4] = 0x10+MakeRandomInt(0, 9); // This number changes in the packets, intensity?
|
||||
outapp->pBuffer[4] = zone->weather_intensity;
|
||||
entity_list.QueueClients(0, outapp);
|
||||
safe_delete(outapp);
|
||||
}
|
||||
|
||||
@ -149,6 +149,8 @@ public:
|
||||
void ShowDisabledSpawnStatus(Mob* client);
|
||||
void ShowSpawnStatusByID(Mob* client, uint32 spawnid);
|
||||
void StartShutdownTimer(uint32 set_time = (RuleI(Zone, AutoShutdownDelay)));
|
||||
void ChangeWeather();
|
||||
bool HasWeather();
|
||||
void AddAuth(ServerZoneIncommingClient_Struct* szic);
|
||||
void RemoveAuth(const char* iCharName);
|
||||
void ResetAuth();
|
||||
@ -212,7 +214,6 @@ public:
|
||||
WaterMap* watermap;
|
||||
PathManager *pathing;
|
||||
NewZone_Struct newzone_data;
|
||||
uint8 zone_weather;
|
||||
|
||||
SpawnConditionManager spawn_conditions;
|
||||
|
||||
@ -232,7 +233,8 @@ public:
|
||||
inline bool BuffTimersSuspended() const { return newzone_data.SuspendBuffs != 0; };
|
||||
|
||||
time_t weather_timer;
|
||||
uint8 weather_type;
|
||||
uint8 weather_intensity;
|
||||
uint8 zone_weather;
|
||||
|
||||
uint8 loglevelvar;
|
||||
uint8 merchantvar;
|
||||
|
||||
@ -94,7 +94,11 @@ bool ZoneDatabase::GetZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct
|
||||
"fog_red4,fog_green4,fog_blue4,fog_minclip4,fog_maxclip4,fog_density,"
|
||||
"sky,zone_exp_multiplier,safe_x,safe_y,safe_z,underworld,"
|
||||
"minclip,maxclip,time_type,canbind,cancombat,canlevitate,"
|
||||
"castoutdoor,hotzone,ruleset,suspendbuffs,map_file_name,short_name"
|
||||
"castoutdoor,hotzone,ruleset,suspendbuffs,map_file_name,short_name,"
|
||||
"rain_chance1,rain_chance2,rain_chance3,rain_chance4,"
|
||||
"rain_duration1,rain_duration2,rain_duration3,rain_duration4,"
|
||||
"snow_chance1,snow_chance2,snow_chance3,snow_chance4,"
|
||||
"snow_duration1,snow_duration2,snow_duration3,snow_duration4"
|
||||
" from zone where zoneidnumber=%i and version=%i",zoneid, instance_id), errbuf, &result)) {
|
||||
safe_delete_array(query);
|
||||
row = mysql_fetch_row(result);
|
||||
@ -146,6 +150,18 @@ bool ZoneDatabase::GetZoneCFG(uint32 zoneid, uint16 instance_id, NewZone_Struct
|
||||
{
|
||||
strcpy(*map_filename, row[r++]);
|
||||
}
|
||||
for(i=0;i<4;i++){
|
||||
zone_data->rain_chance[i]=atoi(row[r++]);
|
||||
}
|
||||
for(i=0;i<4;i++){
|
||||
zone_data->rain_duration[i]=atoi(row[r++]);
|
||||
}
|
||||
for(i=0;i<4;i++){
|
||||
zone_data->snow_chance[i]=atoi(row[r++]);
|
||||
}
|
||||
for(i=0;i<4;i++){
|
||||
zone_data->snow_duration[i]=atof(row[r++]);
|
||||
}
|
||||
good = true;
|
||||
}
|
||||
mysql_free_result(result);
|
||||
@ -2197,55 +2213,6 @@ bool ZoneDatabase::SetZoneTZ(uint32 zoneid, uint32 version, uint32 tz) {
|
||||
}
|
||||
//End new timezone functions.
|
||||
|
||||
|
||||
//Functions for weather
|
||||
uint8 ZoneDatabase::GetZoneWeather(uint32 zoneid, uint32 version) {
|
||||
char errbuf[MYSQL_ERRMSG_SIZE];
|
||||
char *query = 0;
|
||||
MYSQL_RES *result;
|
||||
MYSQL_ROW row;
|
||||
|
||||
if (RunQuery(query, MakeAnyLenString(&query, "SELECT weather FROM zone WHERE zoneidnumber=%i AND (version=%i OR version=0) ORDER BY version DESC", zoneid, version), errbuf, &result))
|
||||
{
|
||||
safe_delete_array(query);
|
||||
if (mysql_num_rows(result) > 0) {
|
||||
row = mysql_fetch_row(result);
|
||||
uint8 tmp = atoi(row[0]);
|
||||
mysql_free_result(result);
|
||||
return tmp;
|
||||
}
|
||||
mysql_free_result(result);
|
||||
}
|
||||
|
||||
else {
|
||||
std::cerr << "Error in GetZoneWeather query '" << query << "' " << errbuf << std::endl;
|
||||
safe_delete_array(query);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool ZoneDatabase::SetZoneWeather(uint32 zoneid, uint32 version, uint8 w) {
|
||||
char errbuf[MYSQL_ERRMSG_SIZE];
|
||||
char *query = 0;
|
||||
uint32 affected_rows = 0;
|
||||
|
||||
if (RunQuery(query, MakeAnyLenString(&query, "UPDATE zone SET weather=%i WHERE zoneidnumber=%i AND version=%i", w, zoneid, version), errbuf, 0, &affected_rows)) {
|
||||
safe_delete_array(query);
|
||||
if (affected_rows == 1)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
std::cerr << "Error in SetZoneWeather query '" << query << "' " << errbuf << std::endl;
|
||||
safe_delete_array(query);
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
//End weather functions.
|
||||
|
||||
/*
|
||||
solar: this is never actually called, client_process starts an async query
|
||||
instead and uses GetAccountInfoForLogin_result to process it..
|
||||
|
||||
@ -428,11 +428,6 @@ public:
|
||||
uint32 GetZoneTZ(uint32 zoneid, uint32 version);
|
||||
bool SetZoneTZ(uint32 zoneid, uint32 version, uint32 tz);
|
||||
|
||||
/*
|
||||
* Weather
|
||||
*/
|
||||
uint8 GetZoneWeather(uint32 zoneid, uint32 version);
|
||||
bool SetZoneWeather(uint32 zoneid, uint32 version, uint8 w);
|
||||
/*
|
||||
* Group
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user