| 91 | } |
| 92 | |
| 93 | void CStalkerCombatPlanner::initialize() |
| 94 | { |
| 95 | inherited::initialize(); |
| 96 | |
| 97 | if (!m_loaded) |
| 98 | { |
| 99 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyInCover, false); |
| 100 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyLookedOut, false); |
| 101 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyPositionHolded, false); |
| 102 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyEnemyDetoured, false); |
| 103 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyUseSuddenness, true); |
| 104 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyKilledWounded, false); |
| 105 | |
| 106 | object().brain().CStalkerPlanner::m_storage.set_property(eWorldPropertyCriticallyWounded, false); |
| 107 | } |
| 108 | |
| 109 | object().agent_manager().member().member(m_object).cover(0); |
| 110 | // this is fake, should be revisited |
| 111 | // we must clear path, since it can be built using eMentalStateFree velocities |
| 112 | // and our new path may not be ready |
| 113 | object().movement().clear_path(); |
| 114 | |
| 115 | object().m_clutched_hammer_enabled = true; |
| 116 | |
| 117 | m_last_enemy_id = u16(-1); |
| 118 | m_last_level_time = 0; |
| 119 | m_last_wounded = false; |
| 120 | |
| 121 | if (!m_loaded && object().memory().enemy().selected()) |
| 122 | { |
| 123 | CVisualMemoryManager* visual_memory_manager = object().memory().enemy().selected()->visual_memory(); |
| 124 | VERIFY(visual_memory_manager); |
| 125 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyUseSuddenness, !visual_memory_manager->visible_now(&object())); |
| 126 | } |
| 127 | |
| 128 | m_loaded = false; |
| 129 | |
| 130 | if (!object().agent_manager().member().combat_members().empty()) |
| 131 | CScriptActionPlanner::m_storage.set_property(eWorldPropertyUseSuddenness, false); |
| 132 | |
| 133 | // this is possible when i enter combat when it is wait after combat stage |
| 134 | // VERIFY (object().memory().enemy().selected()); |
| 135 | |
| 136 | if (m_object->memory().visual().visible_now(m_object->memory().enemy().selected())) |
| 137 | { |
| 138 | if (m_object->memory().enemy().selected()->human_being()) |
| 139 | if (object().agent_manager().member().can_cry_noninfo_phrase()) |
| 140 | if (object().agent_manager().member().members().size() > 1) |
| 141 | if (!CScriptActionPlanner::m_storage.property(eWorldPropertyUseSuddenness)) |
| 142 | object().sound().play(eStalkerSoundAlarm); |
| 143 | } |
| 144 | |
| 145 | object().agent_manager().member().register_in_combat(m_object); |
| 146 | } |
| 147 | |
| 148 | void CStalkerCombatPlanner::finalize() |
| 149 | { |
nothing calls this directly
no test coverage detected