@@ -524,6 +524,120 @@ public static void HandleUpdateRaidTarget(Packet packet)
524524 packet . ReadByte ( "PartyIndex" ) ;
525525 }
526526
527+ [ Parser ( Opcode . SMSG_PARTY_MEMBER_PARTIAL_STATE , ClientVersionBuild . V3_4_4_59817 ) ]
528+ public static void HandlePartyMemberPartialState ( Packet packet )
529+ {
530+ packet . ReadBit ( "ForEnemyChanged" ) ;
531+ packet . ReadBit ( "SetPvPInactive" ) ; // adds GroupMemberStatusFlag 0x0020 if true, removes 0x0020 if false
532+ packet . ReadBit ( "Unk901_1" ) ;
533+
534+ var partyTypeChanged = packet . ReadBit ( "PartyTypeChanged" ) ;
535+ var flagsChanged = packet . ReadBit ( "FlagsChanged" ) ;
536+ var powerTypeChanged = packet . ReadBit ( "PowerTypeChanged" ) ;
537+ var overrideDisplayPowerChanged = packet . ReadBit ( "OverrideDisplayPowerChanged" ) ;
538+ var currentHealthChanged = packet . ReadBit ( "CurrentHealthChanged" ) ;
539+ var maxHealthChanged = packet . ReadBit ( "MaxHealthChanged" ) ;
540+ var powerChanged = packet . ReadBit ( "PowerChanged" ) ;
541+ var maxPowerChanged = packet . ReadBit ( "MaxPowerChanged" ) ;
542+ var levelChanged = packet . ReadBit ( "LevelChanged" ) ;
543+ var specChanged = packet . ReadBit ( "SpecChanged" ) ;
544+ var areaIdChanged = packet . ReadBit ( "AreaIdChanged" ) ;
545+ var wmoGroupIdChanged = packet . ReadBit ( "WmoGroupIdChanged" ) ;
546+ var wmoDoodadPlacementIdChanged = packet . ReadBit ( "WmoDoodadPlacementIdChanged" ) ;
547+ var positionChanged = packet . ReadBit ( "PositionChanged" ) ;
548+ var vehicleSeatRecIdChanged = packet . ReadBit ( "VehicleSeatRecIdChanged" ) ;
549+ var aurasChanged = packet . ReadBit ( "AurasChanged" ) ;
550+ var petChanged = packet . ReadBit ( "PetChanged" ) ;
551+ var phaseChanged = packet . ReadBit ( "PhaseChanged" ) ;
552+ var ctrOptionsChanged = packet . ReadBit ( "CTROptionsChanged" ) ;
553+
554+ if ( petChanged )
555+ {
556+ packet . ResetBitReader ( ) ;
557+ var petGuidChanged = packet . ReadBit ( "GuidChanged" , "Pet" ) ;
558+ var petNameChanged = packet . ReadBit ( "NameChanged" , "Pet" ) ;
559+ var petDisplayIdChanged = packet . ReadBit ( "DisplayIdChanged" , "Pet" ) ;
560+ var petMaxHealthChanged = packet . ReadBit ( "MaxHealthChanged" , "Pet" ) ;
561+ var petHealthChanged = packet . ReadBit ( "HealthChanged" , "Pet" ) ;
562+ var petAurasChanged = packet . ReadBit ( "AurasChanged" , "Pet" ) ;
563+ if ( petNameChanged )
564+ {
565+ packet . ResetBitReader ( ) ;
566+ var len = packet . ReadBits ( 8 ) ;
567+ packet . ReadWoWString ( "NewPetName" , len , "Pet" ) ;
568+ }
569+ if ( petGuidChanged )
570+ packet . ReadPackedGuid128 ( "NewPetGuid" , "Pet" ) ;
571+ if ( petDisplayIdChanged )
572+ packet . ReadUInt32 ( "PetDisplayID" , "Pet" ) ;
573+ if ( petMaxHealthChanged )
574+ packet . ReadUInt32 ( "PetMaxHealth" , "Pet" ) ;
575+ if ( petHealthChanged )
576+ packet . ReadUInt32 ( "PetHealth" , "Pet" ) ;
577+ if ( petAurasChanged )
578+ {
579+ var cnt = packet . ReadInt32 ( "AuraCount" , "Pet" , "Aura" ) ;
580+ for ( int i = 0 ; i < cnt ; i ++ )
581+ ReadAuraInfos ( packet , "Pet" , "Aura" , i ) ;
582+ }
583+ }
584+
585+ packet . ReadPackedGuid128 ( "AffectedGUID" ) ;
586+ if ( partyTypeChanged )
587+ {
588+ for ( int i = 0 ; i < 2 ; i ++ )
589+ packet . ReadByte ( "PartyType" , i ) ;
590+ }
591+
592+ if ( flagsChanged )
593+ packet . ReadUInt16E < GroupMemberStatusFlag > ( "Flags" ) ;
594+ if ( powerTypeChanged )
595+ packet . ReadByte ( "PowerType" ) ;
596+ if ( overrideDisplayPowerChanged )
597+ packet . ReadUInt16 ( "OverrideDisplayPower" ) ;
598+ if ( currentHealthChanged )
599+ packet . ReadUInt32 ( "CurrentHealth" ) ;
600+ if ( maxHealthChanged )
601+ packet . ReadUInt32 ( "MaxHealth" ) ;
602+ if ( powerChanged )
603+ packet . ReadUInt16 ( "Power" ) ;
604+ if ( maxPowerChanged )
605+ packet . ReadUInt16 ( "MaxPower" ) ;
606+ if ( levelChanged )
607+ packet . ReadUInt16 ( "Level" ) ;
608+ if ( specChanged )
609+ packet . ReadUInt16 ( "Spec" ) ;
610+ if ( areaIdChanged )
611+ packet . ReadUInt16 ( "AreaID" ) ;
612+ if ( wmoGroupIdChanged )
613+ packet . ReadUInt16 ( "WmoGroupID" ) ;
614+ if ( wmoDoodadPlacementIdChanged )
615+ packet . ReadUInt32 ( "WmoDoodadPlacementID" ) ;
616+ if ( positionChanged )
617+ {
618+ packet . ReadUInt16 ( "PositionX" ) ;
619+ packet . ReadUInt16 ( "PositionY" ) ;
620+ packet . ReadUInt16 ( "PositionZ" ) ;
621+ }
622+ if ( vehicleSeatRecIdChanged )
623+ packet . ReadUInt32 ( "VehicleSeatRecID" ) ;
624+ if ( aurasChanged )
625+ {
626+ var cnt = packet . ReadInt32 ( "AuraCount" , "Aura" ) ;
627+ for ( int i = 0 ; i < cnt ; i ++ )
628+ ReadAuraInfos ( packet , "Aura" , i ) ;
629+ }
630+ if ( phaseChanged )
631+ ReadPhaseInfos ( packet , "Phase" ) ;
632+
633+ if ( ctrOptionsChanged )
634+ {
635+ packet . ReadUInt32 ( "ConditionalFlags" , "CTROptions" ) ;
636+ packet . ReadByte ( "FactionGroup " , "CTROptions" ) ;
637+ packet . ReadUInt32 ( "ChromieTimeExpansionMask" , "CTROptions" ) ;
638+ }
639+ }
640+
527641 [ Parser ( Opcode . CMSG_REQUEST_RAID_INFO , ClientVersionBuild . V3_4_4_59817 ) ]
528642 [ Parser ( Opcode . SMSG_GROUP_DESTROYED , ClientVersionBuild . V3_4_4_59817 ) ]
529643 [ Parser ( Opcode . SMSG_GROUP_UNINVITE , ClientVersionBuild . V3_4_4_59817 ) ]
0 commit comments