예제 #1
0
    public bool TryRunAwayFromMovable(MovableCharacterSM movable)
    {
        float currentRunAwayProbability = GetRunAwayProbabilityForClass(movable.GetClassName());

        if (Randomizer.GetPercentageBasedBoolean((int)currentRunAwayProbability))
        {
            BeginEscape(movable);
            return(true);
        }
        return(false);
    }
예제 #2
0
    public bool TryAttackMovable(MovableCharacterSM movable)
    {
        if (_attackDenyedByTraining)
        {
            return(false);
        }
        float currentAttackProbability = GetAttackProbabilityForClass(movable.GetClassName());
        var   sm = movable as PassengerSM;

        if (sm != null)
        {
            if (_isPassengerAttackDenied)
            {
                return(false);
            }
            PassengerSM passenger = sm;
            if (passenger.IsOnTheBench())
            {
                currentAttackProbability *=
                    ConfigReader.GetConfig().GetField("tram").GetField("SitAggressionIncrement").n;
            }
        }
        if (Randomizer.GetPercentageBasedBoolean((int)currentAttackProbability))
        {
            if (_isConductorAttackDenied)
            {
                ConductorSM conductor = movable as ConductorSM;
                if (conductor != null)
                {
                    return(false);
                }
            }
            AttackTarget = movable;
            AttackIfPossible();
            return(true);
        }
        MakeIdle();
        return(false);
    }
예제 #3
0
 public bool TryRunAwayFromMovable(MovableCharacterSM movable)
 {
     float currentRunAwayProbability = GetRunAwayProbabilityForClass(movable.GetClassName());
     if (Randomizer.GetPercentageBasedBoolean((int)currentRunAwayProbability))
     {
         BeginEscape(movable);
         return true;
     }
     return false;
 }
예제 #4
0
 public bool TryAttackMovable(MovableCharacterSM movable)
 {
     if(_attackDenyedByTraining)
         return false;
     float currentAttackProbability = GetAttackProbabilityForClass(movable.GetClassName());
     var sm = movable as PassengerSM;
     if (sm != null)
     {
         if(_isPassengerAttackDenied)
             return false;
         PassengerSM passenger = sm;
         if (passenger.IsOnTheBench())
         {
             currentAttackProbability *=
                  ConfigReader.GetConfig().GetField("tram").GetField("SitAggressionIncrement").n;
         }
     }
     if (Randomizer.GetPercentageBasedBoolean((int)currentAttackProbability))
     {
         if (_isConductorAttackDenied)
         {
             ConductorSM conductor = movable as ConductorSM;
             if (conductor != null)
             {
                 return false;
             }
         }
         AttackTarget = movable;
         AttackIfPossible();
         return true;
     }
     MakeIdle();
     return false;
 }