@@ -60,7 +60,7 @@ ADE_VIRTVAR(Stats, l_Player, "scoring_stats stats", "The scoring stats of this p
6060 if (!plr->isValid ())
6161 return ade_set_error (L, " o" , l_ScoringStats.Set (scoring_stats_h ()));
6262
63- return ade_set_args (L, " o" , l_ScoringStats.Set (scoring_stats_h (plr->get ()->stats )));
63+ return ade_set_args (L, " o" , l_ScoringStats.Set (scoring_stats_h (plr->get ()->stats , plr-> get () )));
6464}
6565
6666ADE_VIRTVAR (ImageFilename, l_Player, " string name" , " The image filename of this pilot" , " string" ,
@@ -365,13 +365,15 @@ ADE_FUNC(loadCampaign, l_Player, "string campaign", "Loads the specified campaig
365365}
366366
367367scoring_stats_h::scoring_stats_h () = default ;
368- scoring_stats_h::scoring_stats_h (const scoring_struct& stats)
368+ scoring_stats_h::scoring_stats_h (const scoring_struct& stats, player *player )
369369{
370370 _score.assign (stats);
371371 _valid = true ;
372+ _plr = player;
372373}
373374bool scoring_stats_h::isValid () const { return _valid; }
374375scoring_struct* scoring_stats_h::get () { return &_score; }
376+ player* scoring_stats_h::getPlayer () { return _plr; }
375377
376378ADE_OBJ (l_ScoringStats, scoring_stats_h, " scoring_stats" , " Player related scoring stats." );
377379
@@ -552,14 +554,17 @@ ADE_VIRTVAR(MissionPrimaryShotsFired,
552554 return ade_set_error (L, " i" , -1 );
553555 }
554556
557+ int r_val = ssh->get ()->mp_shots_fired ;
558+
555559 if (ADE_SETTING_VAR) {
556560 if (setv < 0 ) {
557561 setv = 0 ;
558562 }
559- ssh->get ()->mp_shots_fired = setv;
563+ ssh->getPlayer ()->stats .mp_shots_fired = setv;
564+ r_val = ssh->getPlayer ()->stats .mp_shots_fired ;
560565 }
561566
562- return ade_set_args (L, " i" , ssh-> get ()-> mp_shots_fired );
567+ return ade_set_args (L, " i" , r_val );
563568}
564569
565570ADE_VIRTVAR (MissionPrimaryShotsHit,
@@ -579,14 +584,17 @@ ADE_VIRTVAR(MissionPrimaryShotsHit,
579584 return ade_set_error (L, " i" , -1 );
580585 }
581586
587+ int r_val = ssh->get ()->mp_shots_hit ;
588+
582589 if (ADE_SETTING_VAR) {
583590 if (setv < 0 ) {
584591 setv = 0 ;
585592 }
586- ssh->get ()->mp_shots_hit = setv;
593+ ssh->getPlayer ()->stats .mp_shots_hit = setv;
594+ r_val = ssh->getPlayer ()->stats .mp_shots_hit ;
587595 }
588596
589- return ade_set_args (L, " i" , ssh-> get ()-> mp_shots_hit );
597+ return ade_set_args (L, " i" , r_val );
590598}
591599
592600ADE_VIRTVAR (MissionPrimaryFriendlyHit,
@@ -606,14 +614,17 @@ ADE_VIRTVAR(MissionPrimaryFriendlyHit,
606614 return ade_set_error (L, " i" , -1 );
607615 }
608616
617+ int r_val = ssh->get ()->mp_bonehead_hits ;
618+
609619 if (ADE_SETTING_VAR) {
610620 if (setv < 0 ) {
611621 setv = 0 ;
612622 }
613- ssh->get ()->mp_bonehead_hits = setv;
623+ ssh->getPlayer ()->stats .mp_bonehead_hits = setv;
624+ r_val = ssh->getPlayer ()->stats .mp_bonehead_hits ;
614625 }
615626
616- return ade_set_args (L, " i" , ssh-> get ()-> mp_bonehead_hits );
627+ return ade_set_args (L, " i" , r_val );
617628}
618629
619630ADE_VIRTVAR (MissionSecondaryShotsFired,
@@ -633,14 +644,17 @@ ADE_VIRTVAR(MissionSecondaryShotsFired,
633644 return ade_set_error (L, " i" , -1 );
634645 }
635646
647+ int r_val = ssh->get ()->ms_shots_fired ;
648+
636649 if (ADE_SETTING_VAR) {
637650 if (setv < 0 ) {
638651 setv = 0 ;
639652 }
640- ssh->get ()->ms_shots_fired = setv;
653+ ssh->getPlayer ()->stats .ms_shots_fired = setv;
654+ r_val = ssh->getPlayer ()->stats .ms_shots_fired ;
641655 }
642656
643- return ade_set_args (L, " i" , ssh-> get ()-> ms_shots_fired );
657+ return ade_set_args (L, " i" , r_val );
644658}
645659
646660ADE_VIRTVAR (MissionSecondaryShotsHit,
@@ -660,14 +674,17 @@ ADE_VIRTVAR(MissionSecondaryShotsHit,
660674 return ade_set_error (L, " i" , -1 );
661675 }
662676
677+ int r_val = ssh->get ()->ms_shots_hit ;
678+
663679 if (ADE_SETTING_VAR) {
664680 if (setv < 0 ) {
665681 setv = 0 ;
666682 }
667- ssh->get ()->ms_shots_hit = setv;
683+ ssh->getPlayer ()->stats .ms_shots_hit = setv;
684+ r_val = ssh->getPlayer ()->stats .ms_shots_hit ;
668685 }
669686
670- return ade_set_args (L, " i" , ssh-> get ()-> ms_shots_hit );
687+ return ade_set_args (L, " i" , r_val );
671688}
672689
673690ADE_VIRTVAR (MissionSecondaryFriendlyHit,
@@ -687,14 +704,17 @@ ADE_VIRTVAR(MissionSecondaryFriendlyHit,
687704 return ade_set_error (L, " i" , -1 );
688705 }
689706
707+ int r_val = ssh->get ()->ms_bonehead_hits ;
708+
690709 if (ADE_SETTING_VAR) {
691710 if (setv < 0 ) {
692711 setv = 0 ;
693712 }
694- ssh->get ()->ms_bonehead_hits = setv;
713+ ssh->getPlayer ()->stats .ms_bonehead_hits = setv;
714+ r_val = ssh->getPlayer ()->stats .ms_bonehead_hits ;
695715 }
696716
697- return ade_set_args (L, " i" , ssh-> get ()-> ms_bonehead_hits );
717+ return ade_set_args (L, " i" , r_val );
698718}
699719
700720ADE_VIRTVAR (MissionTotalKills, l_ScoringStats, " number" , " The total number of kills in the current mission." , " number" , " The score value" )
@@ -709,14 +729,17 @@ ADE_VIRTVAR(MissionTotalKills, l_ScoringStats, "number", "The total number of ki
709729 return ade_set_error (L, " i" , -1 );
710730 }
711731
732+ int r_val = ssh->get ()->m_kill_count_ok ;
733+
712734 if (ADE_SETTING_VAR) {
713735 if (setv < 0 ) {
714736 setv = 0 ;
715737 }
716- ssh->get ()->m_kill_count_ok = setv;
738+ ssh->getPlayer ()->stats .m_kill_count_ok = setv;
739+ r_val = ssh->getPlayer ()->stats .m_kill_count_ok ;
717740 }
718741
719- return ade_set_args (L, " i" , ssh-> get ()-> m_kill_count_ok );
742+ return ade_set_args (L, " i" , r_val );
720743}
721744
722745ADE_VIRTVAR (MissionAssists, l_ScoringStats, " number" , " The total number of assists in the current mission." , " number" , " The score value" )
@@ -731,14 +754,17 @@ ADE_VIRTVAR(MissionAssists, l_ScoringStats, "number", "The total number of assis
731754 return ade_set_error (L, " i" , -1 );
732755 }
733756
757+ int r_val = ssh->get ()->m_assists ;
758+
734759 if (ADE_SETTING_VAR) {
735760 if (setv < 0 ) {
736761 setv = 0 ;
737762 }
738- ssh->get ()->m_assists = setv;
763+ ssh->getPlayer ()->stats .m_assists = setv;
764+ r_val = ssh->getPlayer ()->stats .m_assists ;
739765 }
740766
741- return ade_set_args (L, " i" , ssh-> get ()-> m_assists );
767+ return ade_set_args (L, " i" , r_val );
742768}
743769
744770ADE_FUNC (getMissionShipclassKills,
@@ -795,7 +821,7 @@ ADE_FUNC(setMissionShipclassKills,
795821 if (setv < 0 ) {
796822 setv = 0 ;
797823 }
798- ssh->get ()->m_kills [ship_idx] = setv;
824+ ssh->getPlayer ()->stats . m_kills [ship_idx] = setv;
799825
800826 return ADE_RETURN_TRUE;
801827}
0 commit comments