예제 #1
0
    private static Boolean CheckQuadPush(PosObj ctrl, Obj quad)
    {
        Boolean result = true;

        if (PersistenSingleton <EventEngine> .Instance.gMode == 1)
        {
            Int16 fldMapNo = FF9StateSystem.Common.FF9.fldMapNo;
            if (fldMapNo != 2108)
            {
                if (fldMapNo != 2802)
                {
                    if (fldMapNo == 2914)
                    {
                        Byte sid = quad.sid;
                        if (sid == 13)
                        {
                            result = false;
                        }
                    }
                }
                else if (quad.sid == 24)
                {
                    result = false;
                }
            }
            else if (quad.sid == 6)
            {
                result = EventCollision.IsQuadTalkable(ctrl, quad);
            }
        }
        return(result);
    }
예제 #2
0
    public static Boolean CheckQuadInput(PosObj po)
    {
        EventEngine instance = PersistenSingleton <EventEngine> .Instance;
        UInt32      num      = ETb.KeyOn() & (UInt32)((instance.gMode != 1) ? EventInput.Lcircle : (EventInput.Lcircle | 524288u));

        if (num > 0u)
        {
            Obj obj = instance.TreadQuad(po, 4);
            if (obj != null && EventCollision.IsQuadTalkable(po, obj))
            {
                if (num == 524288u && instance.Request(obj, 1, 8, false))
                {
                    EventCollision.ClearPathFinding(po);
                    EMinigame.SetQuadmistOpponentId(obj);
                    return(true);
                }
                if (instance.Request(obj, 1, 3, false))
                {
                    EventCollision.ClearPathFinding(po);
                    return(true);
                }
            }
        }
        return(false);
    }
예제 #3
0
    public static void CollisionRequest(PosObj po)
    {
        Boolean     flag     = false;
        EventEngine instance = PersistenSingleton <EventEngine> .Instance;
        Int32       nil      = instance.nil;
        Single      nilFloat = instance.nilFloat;
        Obj         obj;

        if (EventCollision.CheckNPCInput(po))
        {
            if (instance.gMode != 3)
            {
                return;
            }
            obj = EventCollision.Collision(instance, po, 2, ref nilFloat);
        }
        else
        {
            obj = EventCollision.Collision(instance, po, 4, ref nilFloat);
            if (obj != null)
            {
                EventCollision.sSysAngle = EventCollision.CollisionAngle(po, obj);
                if (EventCollision.sSysAngle > -1024 && EventCollision.sSysAngle < 1024)
                {
                    if (EventCollision.IsNPCTalkable(obj))
                    {
                        flag = EIcon.PollCollisionIcon(obj);
                    }
                    if (!flag)
                    {
                        obj = EventCollision.Collision(instance, po, 2, ref nilFloat);
                    }
                }
                else
                {
                    obj = EventCollision.Collision(instance, po, 2, ref nilFloat);
                }
            }
            else
            {
                obj = EventCollision.Collision(instance, po, 2, ref nilFloat);
                if (instance.gMode == 3 && obj != null)
                {
                    WMActor wmActor = ((Actor)po).wmActor;
                    if (wmActor.ControlNo == 0)
                    {
                        flag = EIcon.PollCollisionIcon(obj);
                    }
                }
            }
        }
        if (obj != null && EventCollision.CheckNPCPush((PosObj)obj))
        {
            instance.Request(obj, 1, 2, false);
        }
        if (EventCollision.CheckQuadInput(po))
        {
            return;
        }
        obj = instance.TreadQuad(po, 2);
        if (obj != null)
        {
            Boolean flag2 = EventCollision.CheckQuadPush(po, obj) && instance.Request(obj, 1, 2, false);
            if (flag2)
            {
                if (instance.GetIP((Int32)obj.sid, 8, obj.ebData) != instance.nil)
                {
                    EIcon.PollFIcon(2);
                }
                else
                {
                    Int16 fldMapNo = FF9StateSystem.Common.FF9.fldMapNo;
                    if (fldMapNo == 2108)
                    {
                        if (EventCollision.CheckQuadTalk(po, obj))
                        {
                            EIcon.PollFIcon(1);
                        }
                    }
                }
            }
        }
        obj = instance.TreadQuad(po, 4);
        if (obj != null && EventCollision.CheckQuadTalk(po, obj) && EventCollision.IsQuadTalkable(po, obj))
        {
            EIcon.PollCollisionIcon(obj);
        }
        if (instance.gMode == 3 && obj == null)
        {
            if (EventCollision.IsChocoboWalkingOrFlyingInForestArea())
            {
                EIcon.PollFIcon(1);
            }
            else if (!flag && EMinigame.CheckBeachMinigame())
            {
                EIcon.PollFIcon(3);
            }
        }
    }