示例#1
0
    private static Boolean IsQuadTalkable(PosObj ctrl, Obj quad)
    {
        if (PersistenSingleton <EventEngine> .Instance.gMode == 1)
        {
            Obj   obj      = (Obj)null;
            Int32 fldMapNo = (Int32)FF9StateSystem.Common.FF9.fldMapNo;
            Int32 uid      = (Int32)quad.uid;
            Int32 key      = EMinigame.CreateNPCID(fldMapNo, uid);
            if (EventEngineUtils.QuadTalkableData.ContainsKey(key))
            {
                obj = PersistenSingleton <EventEngine> .Instance.GetObjUID(EventEngineUtils.QuadTalkableData[key]);
            }
            if (obj != null)
            {
                Int32 num = fldMapNo;
                Int32 num2;
                if (num == 2108)
                {
                    num2 = EventCollision.GetDir((Actor)ctrl);
                    return(num2 > 90 && num2 < 160);
                }
                if (num == 2109)
                {
                    num2 = EventCollision.GetDir((Actor)ctrl);
                    return(num2 > 159 && num2 < 223);
                }
                if (num == 2103)
                {
                    num2 = EventCollision.GetDir((Actor)ctrl);
                    return(num2 > 159 && num2 < 223);
                }
                if (num != 2802)
                {
                    num2 = EventCollision.CollisionAngle(ctrl, obj);
                    return(num2 > -880 && num2 < 880);
                }
                Obj objUID = PersistenSingleton <EventEngine> .Instance.GetObjUID(18);

                Single num3 = 0f;
                if (PersistenSingleton <EventEngine> .Instance.isPosObj(objUID))
                {
                    num3 = -((PosObj)objUID).pos[1];
                }
                num2 = EventCollision.GetDir((Actor)ctrl);
                return(num2 > 16 && num2 < 112 && num3 > 950f);
            }
        }
        return(true);
    }