@@ -330,6 +330,12 @@ private void SelectPawns(Character character, DbConnection? connectionIn = null)
330330 // Old DB is in use and new table not populated with required data for character
331331 Logger . Error ( $ "Character: AccountId={ character . AccountId } , CharacterId={ character . ContentCharacterId } , CommonId={ character . CommonId } , PawnCommonId={ pawn . CommonId } is missing table entry in 'ddon_orb_gain_extend_param'.") ;
332332 }
333+ if ( pawn . PawnType != PawnType . Main )
334+ {
335+ Logger . Error ( $ "Character: AccountId={ character . AccountId } , CharacterId={ character . ContentCharacterId } , CommonId={ character . CommonId } , PawnCommonId={ pawn . CommonId } has invalid pawn type; locally setting pawn type back to Main.") ;
336+ pawn . PawnType = PawnType . Main ;
337+ }
338+
333339 UpdateCharacterExtendedParams ( pawn , ownerCharacter : character ) ;
334340 }
335341 }
@@ -359,10 +365,10 @@ public uint GetMaxAugmentAllocation(CharacterCommon character)
359365
360366 public void UpdateCharacterExtendedParams ( CharacterCommon characterCommon , bool newCharacter = false , Character ownerCharacter = null )
361367 {
362- var ExtendedParams = characterCommon . ExtendedParams ;
368+ var extendedParams = characterCommon . ExtendedParams ;
363369
364370 // There is always an implicit + 1 ring slot plus the extended params value
365- characterCommon . JewelrySlotNum = ( byte ) ( CharacterManager . DEFAULT_RING_COUNT + ExtendedParams . JewelrySlot ) ;
371+ characterCommon . JewelrySlotNum = ( byte ) ( CharacterManager . DEFAULT_RING_COUNT + extendedParams . JewelrySlot ) ;
366372
367373 /**
368374 * There are two physical attack traits and two magic attack traits in
@@ -371,20 +377,27 @@ public void UpdateCharacterExtendedParams(CharacterCommon characterCommon, bool
371377 * Similar distinction made with magic. The Gain* stats are extra stats
372378 * on top of the iniate stats. These come from armors and BO/HO trees.
373379 */
374- characterCommon . StatusInfo . GainAttack = ExtendedParams . Attack ;
375- characterCommon . StatusInfo . GainDefense = ExtendedParams . Defence ;
376- characterCommon . StatusInfo . GainMagicAttack = ExtendedParams . MagicAttack ;
377- characterCommon . StatusInfo . GainMagicDefense = ExtendedParams . MagicDefence ;
378- characterCommon . StatusInfo . GainStamina = ExtendedParams . StaminaMax ;
379- characterCommon . StatusInfo . GainHP = ExtendedParams . HpMax ;
380+ characterCommon . StatusInfo . GainAttack = extendedParams . Attack ;
381+ characterCommon . StatusInfo . GainDefense = extendedParams . Defence ;
382+ characterCommon . StatusInfo . GainMagicAttack = extendedParams . MagicAttack ;
383+ characterCommon . StatusInfo . GainMagicDefense = extendedParams . MagicDefence ;
384+ characterCommon . StatusInfo . GainStamina = extendedParams . StaminaMax ;
385+ characterCommon . StatusInfo . GainHP = extendedParams . HpMax ;
380386
381387 /**
382388 * Additional stats can be earned from the S2 and S3 BO/HO orb trees.
383389 * The stat boosts rewarded for this mechanism rewards both stats for all jobs and stats for
384390 * a specific job only. We abuse JobId.None to store the stats for all jobs.
385391 */
386392 var extendedJobParams = characterCommon . ExtendedJobParams ;
387- JobId jobId = characterCommon . ActiveCharacterJobData . Job ;
393+ JobId jobId = characterCommon . ActiveCharacterJobData ? . Job ?? JobId . None ;
394+
395+ if ( jobId == JobId . None )
396+ {
397+ Logger . Error ( $ "Character CommonId { characterCommon . CommonId } has no active job data.") ;
398+ return ;
399+ }
400+
388401 if ( characterCommon is Pawn )
389402 {
390403 extendedJobParams = ownerCharacter . ExtendedJobParams ;
@@ -505,12 +518,12 @@ private PacketQueue NotifyClientOfCharacterStatus(GameClient client, CharacterCo
505518 PawnPartyMember pawnPartyMember = ( PawnPartyMember ) partyMember ;
506519 if ( client . Party != null )
507520 {
508- client . Party . EnqueueToAll ( pawnPartyMember . GetS2CContextGetParty_ContextNtc ( ) , queue ) ;
521+ client . Party . EnqueueToAll ( pawnPartyMember . GetPartyContext ( ) , queue ) ;
509522 }
510523 else
511524 {
512525 // This should never be true but if it is, why?
513- client . Enqueue ( pawnPartyMember . GetS2CContextGetParty_ContextNtc ( ) , queue ) ;
526+ client . Enqueue ( pawnPartyMember . GetPartyContext ( ) , queue ) ;
514527 }
515528 }
516529
0 commit comments