mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +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:
@@ -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
|
||||
|
||||
+14
-2
@@ -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
|
||||
|
||||
+14
-2
@@ -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
|
||||
|
||||
+14
-2
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user