public static void Invoke(ES_HibernateWakeUp __instance) { var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == EventListenerType.EnemyWakeUp) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { var enemy = __instance.m_enemyAgent; if (block.EnemyWakeup_EnemyID == enemy.EnemyDataID) { var lg_area = enemy.CourseNode.m_area; var area = lg_area.m_navInfo.Suffix.ToLower(); var lg_zone = lg_area.m_zone; var zone = lg_zone.LocalIndex; var lg_layer = lg_zone.Layer; var layer = lg_layer.m_type; bool valid = block.EnemyWakeUp_ForLayers.Count == 0; foreach (var validLayer in block.EnemyWakeUp_ForLayers) { if (validLayer.Layer == layer) { valid = validLayer.Whitelist; foreach (var validZone in validLayer.Zones) { if (validZone.ZoneIndex == zone) { valid = validZone.Whitelist; foreach (var validArea in validZone.Areas) { if (validArea.AreaName.ToLower() == area) { valid = validArea.Whitelist; } } } } } } if (valid) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } } break; } } } } }
static void Postfix(ES_HibernateWakeUp __instance) { Logger.Log("Detected Wakeup! (From HibernateWakeup)"); __instance.m_ai.m_locomotion.ScoutScream.ActivateState(__instance.m_ai.Target); }