Ignore:
Timestamp:
2013-07-23 22:36:26 (8 years ago)
Author:
dezhidki
Message:

Lisätty toimiva sotilas. Korjattu OrderMove:n epätarkkuuksia. Lisätty AStariin muuttuja, jolla voi jättää loppupisteen läpipääsemättömyyden huomioimatta.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai/Orders/OrderMove.cs

    r4590 r4592  
    1515        private bool excludeEndSolidness; 
    1616        private float stopDistance; 
     17        private int moveFails = 0; 
     18        private float lastDist = 0.0F; 
    1719 
    1820        public OrderMove(float x, float z, float stopDistance = 2.0F, bool excludeEndSolidness = false) 
     
    4446                float ztPoint = currentTarget.Z * Viewport.TILESIZE + 8.0F; 
    4547 
    46                 if (mob.DistanceTo(xtPoint, ztPoint) > 8.0F) 
     48                float dist = mob.DistanceTo(xtPoint, ztPoint); 
     49                if (dist > 8.0F) 
    4750                { 
    4851                    if (mob.TurnTowards(xtPoint, ztPoint)) 
     52                    { 
    4953                        mob.MoveForward(); 
     54 
     55                        if (dist == lastDist) 
     56                            moveFails++; 
     57                        else 
     58                            moveFails = 0; 
     59                        lastDist = dist; 
     60                    } 
    5061                } 
    5162                else 
     
    5465            else 
    5566            { 
    56                 if (mob.DistanceTo(x, z) > 1.0F) 
     67                float dist = mob.DistanceTo(x, z); 
     68                if (dist > 1.0F) 
    5769                { 
    5870                    if (mob.TurnTowards(x, z)) 
     71                    { 
    5972                        mob.MoveForward(); 
     73 
     74                        if (dist == lastDist) 
     75                            moveFails++; 
     76                        else 
     77                            moveFails = 0; 
     78                        lastDist = dist; 
     79                    } 
    6080                } 
    6181            } 
     
    6686            get 
    6787            { 
    68                 return (mob.DistanceTo(x, z) < stopDistance) || !mob.PathFinder.CanFindPath; 
     88                return (mob.DistanceTo(x, z) < stopDistance) || moveFails > 10 || !mob.PathFinder.CanFindPath; 
    6989            } 
    7090        } 
Note: See TracChangeset for help on using the changeset viewer.