diff --git a/common/patches/rof2.cpp b/common/patches/rof2.cpp index 2e8d8458b..afb994526 100644 --- a/common/patches/rof2.cpp +++ b/common/patches/rof2.cpp @@ -1883,35 +1883,34 @@ namespace RoF2 eq->FogDensity = emu->fog_density; /*fill in some unknowns with observed values, hopefully it will help */ - eq->unknown569 = 0; + eq->ZoneTimeZone = 0; eq->unknown571 = 0; - eq->unknown572 = 4; - eq->unknown576 = 2; - eq->unknown580 = 0; + eq->WaterMidi = 4; + eq->DayMidi = 2; + eq->NightMidi = 0; - eq->unknown800 = -1; - eq->unknown844 = 600; - eq->unknown848 = 2008; // Guild Lobby observed value - eq->unknown880 = 50; - eq->unknown884 = 10; - eq->unknown888 = 1; - eq->unknown889 = 0; - eq->unknown890 = 1; - eq->unknown891 = 0; - eq->unknown892 = 0; - eq->unknown893 = 0; + eq->SkyRelated2 = -1; + eq->NPCAggroMaxDist = 600; + eq->FilterID = 2008; // Guild Lobby observed value + eq->LavaDamage = 50; + eq->MinLavaDamage = 10; + eq->bDisallowManaStone = 1; + eq->bNoBind = 0; + eq->bNoAttack = 0; + eq->bNoCallOfHero = 0; + eq->bNoFlux = 0; + eq->bNoFear = 0; eq->fall_damage = 0; // 0 = Fall Damage on, 1 = Fall Damage off eq->unknown895 = 0; - eq->unknown896 = 180; - eq->unknown900 = 180; - eq->unknown904 = 180; - eq->unknown908 = 2; - eq->unknown912 = 2; - eq->unknown932 = -1; // Set from PoK Example - eq->unknown936 = -1; // Set from PoK Example - eq->unknown944 = 1.0; // Set from PoK Example - eq->unknown948 = 0; // New on Live as of Dec 15 2014 - eq->unknown952 = 100; // New on Live as of Dec 15 2014 + eq->FastRegenHP = 180; + eq->FastRegenMana = 180; + eq->FastRegenEndurance = 180; + eq->CanPlaceCampsite = 2; + eq->CanPlaceGuildBanner = 2; + eq->FishingRelated = -1; // Set from PoK Example + eq->ForageRelated = -1; // Set from PoK Example + eq->bNoLevitate = 0; + eq->Blooming = 1.0; // Set from PoK Example FINISH_ENCODE(); } diff --git a/common/patches/rof2_structs.h b/common/patches/rof2_structs.h index 1b3c41794..0355342da 100644 --- a/common/patches/rof2_structs.h +++ b/common/patches/rof2_structs.h @@ -561,74 +561,100 @@ struct ServerZoneEntry_Struct //Adjusted from SEQ Everquest.h Struct //New Zone Struct - Size: 948 struct NewZone_Struct { /*0000*/ char char_name[64]; // Character Name - /*0064*/ char zone_short_name[32]; // Zone Short Name - /*0096*/ char unknown0096[96]; - /*0192*/ char zone_long_name[278]; // Zone Long Name - /*0470*/ uint8 ztype; // Zone type (usually FF) - /*0471*/ uint8 fog_red[4]; // Zone fog (red) - /*0475*/ uint8 fog_green[4]; // Zone fog (green) - /*0479*/ uint8 fog_blue[4]; // Zone fog (blue) - /*0483*/ uint8 unknown323; - /*0484*/ float fog_minclip[4]; + /*0064*/ char zone_short_name[128]; // Zone Short Name + /*0192*/ char zone_long_name[128]; // Zone Long Name + /*0320*/ char zone_desc[5][30]; // mostly just empty strings + /*0470*/ uint8 ztype; // Zone type (usually FF) FogOnOff + /*0471*/ uint8 fog_red[4]; // Zone fog (red) ARGBCOLOR + /*0475*/ uint8 fog_green[4]; // Zone fog (green) ARGBCOLOR + /*0479*/ uint8 fog_blue[4]; // Zone fog (blue) ARGBCOLO + /*0483*/ uint8 unknown323; // padding? + /*0484*/ float fog_minclip[4]; // MQ2 has this starting at this offset, must be padding above /*0500*/ float fog_maxclip[4]; /*0516*/ float gravity; - /*0520*/ uint8 time_type; + /*0520*/ uint8 time_type; // OutDoor flag 0 = IndoorDungeon, 1 = OUtdoor, 2 = OutdoorCity, 3 = DungeonCity, 4 = IndoorCity, 5 = OutdoorDungeon /*0521*/ uint8 rain_chance[4]; /*0525*/ uint8 rain_duration[4]; /*0529*/ uint8 snow_chance[4]; /*0533*/ uint8 snow_duration[4]; - /*0537*/ uint8 unknown537[32]; // Seen all 0xff - /*0569*/ uint8 unknown569; // Unknown - Seen 0 + /*0537*/ uint8 unknown537[32]; // this is removed on live, specialdates and specialcodes probably macro'd out + /*0569*/ uint8 ZoneTimeZone; // MQ2 "in hours from worldserver, can be negative" /*0570*/ uint8 sky; // Sky Type - /*0571*/ uint8 unknown571; // Unknown - Seen 0 - /*0572*/ uint32 unknown572; // Unknown - Seen 4 in Guild Lobby - /*0576*/ uint32 unknown576; // Unknown - Seen 2 in Guild Lobby - /*0580*/ uint32 unknown580; // Unknown - Seen 0 in Guild Lobby + /*0571*/ uint8 unknown571; // Padding I think + /*0572*/ uint32 WaterMidi; // Unknown - Seen 4 in Guild Lobby + /*0576*/ uint32 DayMidi; // Unknown - Seen 2 in Guild Lobby + /*0580*/ uint32 NightMidi; // Unknown - Seen 0 in Guild Lobby /*0584*/ float zone_exp_multiplier; // Experience Multiplier /*0588*/ float safe_y; // Zone Safe Y /*0592*/ float safe_x; // Zone Safe X /*0596*/ float safe_z; // Zone Safe Z - /*0600*/ float min_z; // Guessed - NEW - Seen 0 - /*0604*/ float max_z; // Guessed - /*0608*/ float underworld; // Underworld, min z (Not Sure?) + /*0600*/ float min_z; // This isn't safe heading like live + /*0604*/ float max_z; // Ceiling + /*0608*/ float underworld; // Underworld, min z (Not Sure?) Floor /*0612*/ float minclip; // Minimum View Distance /*0616*/ float maxclip; // Maximum View DIstance - /*0620*/ uint8 unknown620[84]; // ***Placeholder - /*0704*/ char zone_short_name2[96]; //zone file name? excludes instance number which can be in previous version. - /*0800*/ int32 unknown800; //seen -1 - /*0804*/ char unknown804[40]; // - /*0844*/ int32 unknown844; //seen 600 - /*0848*/ int32 unknown848; //seen 2008 - /*0852*/ uint16 zone_id; + /*0620*/ uint32 ForageLow; // Forage loot table ID? + /*0624*/ uint32 ForageMedium; // Forage loot table ID? + /*0628*/ uint32 ForageHigh; // Forage loot table ID? + /*0632*/ uint32 FishingLow; // Fishing loot table ID? + /*0636*/ uint32 FishingMedium; // Fishing loot table ID? + /*0640*/ uint32 FishingHigh; // Fishing loot table ID? + /*0644*/ uint32 sky_lock; // MQ2 skyrelated + /*0648*/ uint32 graveyard_timer; // minutes until corpse pop to graveyard + /*0652*/ uint32 scriptIDHour; // These are IDs of scripts + /*0656*/ uint32 scriptIDMinute; // These are IDs of scripts + /*0660*/ uint32 scriptIDTick; // These are IDs of scripts + /*0664*/ uint32 scriptIDOnPlayerDeath; // These are IDs of scripts + /*0668*/ uint32 scriptIDOnNPCDeath; // These are IDs of scripts + /*0672*/ uint32 scriptIDPlayerEnteringZone; // These are IDs of scripts + /*0676*/ uint32 scriptIDOnZonePop; // These are IDs of scripts + /*0680*/ uint32 scriptIDNPCLoot; // These are IDs of scripts + /*0684*/ uint32 scriptIDAdventureFailed; // These are IDs of scripts + /*0688*/ uint32 CanExploreTasks; + /*0692*/ uint32 UnknownFlag; // not sure, neither is MQ2! + /*0696*/ uint32 scriptIDOnFishing; // THese are IDs of scripts + /*0700*/ uint32 scriptIDOnForage; // THese are IDs of scripts + /*0704*/ char zone_short_name2[32]; //zone file name? excludes instance number which can be in previous version. + /*0736*/ char WeatherString[32]; + /*0768*/ char SkyString2[32]; + /*0800*/ int32 SkyRelated2; //seen -1 + /*0804*/ char WeatherString2[32]; // + /*0836*/ float WeatherChangeTime; // not sure :P + /*0840*/ uint32 Climate; + /*0844*/ int32 NPCAggroMaxDist; //seen 600 + /*0848*/ int32 FilterID; //seen 2008 -- maybe zone guide related? + /*0852*/ uint16 zone_id; // this might just be instance ID got 1736 for time /*0854*/ uint16 zone_instance; - /*0856*/ char unknown856[20]; - /*0876*/ uint32 SuspendBuffs; - /*0880*/ uint32 unknown880; // Seen 50 - /*0884*/ uint32 unknown884; // Seen 10 - /*0888*/ uint8 unknown888; // Seen 1 - /*0889*/ uint8 unknown889; // Seen 0 (POK) or 1 (rujj) - /*0890*/ uint8 unknown890; // Seen 1 - /*0891*/ uint8 unknown891; // Seen 0 - /*0892*/ uint8 unknown892; // Seen 0 - /*0893*/ uint8 unknown893; // Seen 0 - 00 - /*0894*/ uint8 fall_damage; // 0 = Fall Damage on, 1 = Fall Damage off - /*0895*/ uint8 unknown895; // Seen 0 - 00 - /*0896*/ uint32 unknown896; // Seen 180 - /*0900*/ uint32 unknown900; // Seen 180 - /*0904*/ uint32 unknown904; // Seen 180 - /*0908*/ uint32 unknown908; // Seen 2 - /*0912*/ uint32 unknown912; // Seen 2 - /*0916*/ float FogDensity; // Most zones have this set to 0.33 Blightfire had 0.16 - /*0920*/ uint32 unknown920; // Seen 0 - /*0924*/ uint32 unknown924; // Seen 0 - /*0928*/ uint32 unknown928; // Seen 0 - /*0932*/ int32 unknown932; // Seen -1 - /*0936*/ int32 unknown936; // Seen -1 - /*0940*/ uint32 unknown940; // Seen 0 - /*0944*/ float unknown944; // Seen 1.0 in PoK, and 0.25 in Guild Lobby - /*0948*/ uint32 unknown948; // Seen 0 - New on Live as of Dec 15 2014 - /*0952*/ uint32 unknown952; // Seen 100 - New on Live as of Dec 15 2014 - /*0956*/ + /*0856*/ uint32 scriptNPCReceivedanItem; + /*0860*/ uint32 bCheck; // padded bool + /*0864*/ uint32 scriptIDSomething; + /*0868*/ uint32 scriptIDSomething2; + /*0872*/ uint32 scriptIDSomething3; + /*0876*/ uint32 SuspendBuffs; // padded bool + /*0880*/ uint32 LavaDamage; // LavaDamage value + /*0884*/ uint32 MinLavaDamage; // min cap after resist calcs + /*0888*/ uint8 bDisallowManaStone; // can't use manastone in this zone + /*0889*/ uint8 bNoBind; // can't bind even if outdoor says we can! + /*0890*/ uint8 bNoAttack; // non-attack zone + /*0891*/ uint8 bNoCallOfHero; // coth line disabled + /*0892*/ uint8 bNoFlux; // gflux no worky + /*0893*/ uint8 bNoFear; // fear spells no worky + /*0894*/ uint8 fall_damage; // 0 = Fall Damage on, 1 = Fall Damage off MQ2 calls bNoEncumber + /*0895*/ uint8 unknown895; // padding + /*0896*/ uint32 FastRegenHP; // percentage I think? + /*0900*/ uint32 FastRegenMana; // percentage I think? + /*0904*/ uint32 FastRegenEndurance; // percentage I think? + /*0908*/ uint32 CanPlaceCampsite; // 0 = no, 1 = can place, 2 = place and goto + /*0912*/ uint32 CanPlaceGuildBanner; // ^ + /*0916*/ float FogDensity; // Most zones have this set to 0.33 Blightfire had 0.16 + /*0920*/ uint32 bAdjustGamma; // padded bool + /*0924*/ uint32 TimeStringID; // Seen 0 + /*0928*/ uint32 bNoMercenaries; // padded bool + /*0932*/ int32 FishingRelated; // Seen -1 idk + /*0936*/ int32 ForageRelated; // Seen -1 idk + /*0940*/ uint32 bNoLevitate; // padded bool + /*0944*/ float Blooming; // Seen 1.0 in PoK, and 0.25 in Guild Lobby + /*0948*/ }; /*