public static Vector3 get_non_world_lot_pos(Sim actor_obj = null, Sim target_obj = null, bool safe = true) { bool is_t_null = false; if (target_obj == null) { is_t_null = true; target_obj = actor_obj; } if (target_obj != null) { var lotC = target_obj.LotCurrent; Lot lotHome; if (lotC != null) { if (lotC.IsWorldLot) { lotHome = target_obj.LotHome; if (lotHome != null && !(lotHome is WorldLot)) { return(lotHome.EntryPoint()); } } else { return(target_obj.Position); } } if (is_t_null) { actor_obj = null; } var other_obj = actor_obj ?? NFinalizeDeath.ActiveActor_AAndChildAndTeen;// ?? NFinalizeDeath.GetRandomSim(); if (other_obj != null) { lotC = other_obj.LotCurrent; if (lotC != null) { if (lotC.IsWorldLot) { lotHome = other_obj.LotHome; if (lotHome != null && !(lotHome is WorldLot)) { return(lotHome.EntryPoint()); } } else { var other_obj_pos = NFinalizeDeath.GetPositionBase (other_obj.ObjectId.mValue); other_obj_pos += (NFinalizeDeath.Random_CoinFlip() ? 1.8f : 2.7f) * NFinalizeDeath.GetForwardBase(other_obj.ObjectId.mValue); if (!(GetPostionTargetLot(other_obj_pos) is WorldLot)) { return(other_obj_pos); } } } } } var t = GetCameraTargetLot(); if (t is WorldLot) { var lots = LotManager.sLots; if (lots != null && lots.Count > 0) { foreach (var item in lots) { Lot item_lot = item.value; if (item_lot == null || item_lot.IsWorldLot) { continue; } return(item_lot.EntryPoint()); } } if (!safe) { var p = ScriptCore.CameraController.Camera_GetTarget(); if (NFinalizeDeath.Vector3_IsUnsafe(p)) { return(snwlot_return_failed); } else { return(p); } } else { return(snwlot_return_failed); } } else { return(t.EntryPoint()); } }