@@ -205,9 +205,6 @@ void CStalkerActionRetreatFromEnemy::execute()
205205{
206206 inherited::execute ();
207207
208- if (!object ().memory ().enemy ().selected ())
209- return ;
210-
211208 if (!object ().memory ().enemy ().selected ())
212209 return ;
213210
@@ -437,27 +434,26 @@ void CStalkerActionKillEnemy::execute()
437434#endif // TEST_MENTAL_STATE
438435
439436 inherited::execute ();
437+ // Alundaio
438+ if (object ().memory ().enemy ().selected () && object ().memory ().enemy ().selected ()->g_Alive ())
439+ {
440+ object ().sight ().setup (CSightAction (object ().memory ().enemy ().selected (), true , true ));
440441
441- object ().sight ().setup (CSightAction (object ().memory ().enemy ().selected (), true , true ));
442-
443- // u32 min_queue_size, max_queue_size, min_queue_interval, max_queue_interval;
444- // float distance =
445- // object().memory().enemy().selected()->Position().distance_to(object().Position());
446- // select_queue_params (distance,min_queue_size, max_queue_size, min_queue_interval,
447- // max_queue_interval);
448- // object().CObjectHandler::set_goal (eObjectActionFire1,object().best_weapon(),min_queue_size, max_queue_size,
449- // min_queue_interval, max_queue_interval);
450- fire ();
442+ // u32 min_queue_size, max_queue_size, min_queue_interval, max_queue_interval;
443+ // float distance = object().memory().enemy().selected()->Position().distance_to(object().Position());
444+ // select_queue_params(distance,min_queue_size, max_queue_size, min_queue_interval, max_queue_interval);
445+ // object().CObjectHandler::set_goal (eObjectActionFire1,object().best_weapon(),min_queue_size, max_queue_size, min_queue_interval, max_queue_interval);
446+ fire ();
451447
452- if (object ().memory ().enemy ().selected ())
453- {
454448 CMemoryInfo mem_object = object ().memory ().memory (object ().memory ().enemy ().selected ());
455449
456450 if (mem_object.m_object )
457- {
458451 object ().best_cover (mem_object.m_object_params .m_position );
459- }
460452 }
453+ else
454+ object ().sight ().setup (CSightAction (SightManager::eSightTypePathDirection, true , true ));
455+
456+ // Alundaio: END
461457}
462458
463459// ////////////////////////////////////////////////////////////////////////
@@ -488,7 +484,7 @@ void CStalkerActionTakeCover::initialize()
488484 m_storage->set_property (eWorldPropertyEnemyDetoured, false );
489485
490486#ifndef SILENT_COMBAT
491- if (object ().memory ().enemy ().selected ()->human_being ())
487+ if (object ().memory ().enemy ().selected () && object (). memory (). enemy (). selected () ->human_being ())
492488 {
493489 if (object ().agent_manager ().member ().can_cry_noninfo_phrase ())
494490 if (object ().Position ().distance_to_sqr (object ().memory ().enemy ().selected ()->Position ()) < _sqr (10 .f ))
@@ -508,6 +504,9 @@ void CStalkerActionTakeCover::execute()
508504
509505 inherited::execute ();
510506
507+ if (!object ().memory ().enemy ().selected ())
508+ return ;
509+
511510 CMemoryInfo mem_object = object ().memory ().memory (object ().memory ().enemy ().selected ());
512511
513512 if (!mem_object.m_object )
@@ -625,6 +624,9 @@ void CStalkerActionLookOut::execute()
625624
626625 inherited::execute ();
627626
627+ if (!object ().memory ().enemy ().selected ())
628+ return ;
629+
628630 CMemoryInfo mem_object = object ().memory ().memory (object ().memory ().enemy ().selected ());
629631
630632 if (!mem_object.m_object )
@@ -710,6 +712,9 @@ void CStalkerActionHoldPosition::execute()
710712
711713 inherited::execute ();
712714
715+ if (!object ().memory ().enemy ().selected ())
716+ return ;
717+
713718 CMemoryInfo mem_object = object ().memory ().memory (object ().memory ().enemy ().selected ());
714719
715720 if (!mem_object.m_object )
@@ -1016,7 +1021,7 @@ void CStalkerActionSuddenAttack::execute()
10161021
10171022 inherited::execute ();
10181023
1019- // Alundaio: Removed check to allow stalkers to sneak up on enemy even if they are in a squad; most likely removed because of friendly fire but not an issue with rx_ff scheme
1024+ // Alundaio: Removed check to allow stalkers to sneak up on enemy even if they are in a group.
10201025 // if (object().agent_manager().member().combat_members().size() > 1)
10211026 // m_storage->set_property(eWorldPropertyUseSuddenness, false);
10221027 // Alundaio: END
@@ -1093,7 +1098,7 @@ void CStalkerActionSuddenAttack::execute()
10931098
10941099 CVisualMemoryManager* visual_memory_manager = object ().memory ().enemy ().selected ()->visual_memory ();
10951100 VERIFY (visual_memory_manager);
1096- if (!visual_memory_manager->visible_now (&object ()))
1101+ if (object (). memory (). enemy (). selected ()-> g_Alive () && !visual_memory_manager->visible_now (&object ()))
10971102 return ;
10981103
10991104 m_storage->set_property (eWorldPropertyUseSuddenness, false );
@@ -1179,16 +1184,19 @@ void CStalkerActionCriticalHit::initialize()
11791184 object ().brain ().affect_cover (false );
11801185 object ().movement ().set_movement_type (eMovementTypeStand);
11811186
1182- if (object ().memory ().enemy (). selected ( ))
1187+ if (object ().inventory ().ActiveItem () && object (). best_weapon () && ( object (). inventory (). ActiveItem ()-> object (). ID () == object (). best_weapon ()-> object (). ID () ))
11831188 {
1184- u32 min_queue_size, max_queue_size, min_queue_interval, max_queue_interval;
1185- float distance = object ().memory ().enemy ().selected ()->Position ().distance_to (object ().Position ());
1186- select_queue_params (distance, min_queue_size, max_queue_size, min_queue_interval, max_queue_interval);
1187- object ().CObjectHandler ::set_goal (eObjectActionIdle, object ().best_weapon (), min_queue_size, max_queue_size,
1188- min_queue_interval, max_queue_interval);
1189+ if (object ().memory ().enemy ().selected ())
1190+ {
1191+ u32 min_queue_size, max_queue_size, min_queue_interval, max_queue_interval;
1192+ float distance = object ().memory ().enemy ().selected ()->Position ().distance_to (object ().Position ());
1193+ select_queue_params (distance, min_queue_size, max_queue_size, min_queue_interval, max_queue_interval);
1194+ object ().set_goal (eObjectActionIdle, object ().best_weapon (), min_queue_size, max_queue_size,
1195+ min_queue_interval, max_queue_interval);
1196+ }
1197+ else
1198+ object ().set_goal (eObjectActionIdle, object ().best_weapon ());
11891199 }
1190- else
1191- object ().CObjectHandler ::set_goal (eObjectActionIdle, object ().best_weapon ());
11921200
11931201 object ().sight ().setup (CSightAction (SightManager::eSightTypeCurrentDirection, true , true ));
11941202 object ().sound ().play (eStalkerSoundInjuring);
0 commit comments