public void SetAttackedPassenger(MovableCharacterSM character) { if (_attackedPassenger == null) { _attackedPassenger = character; } }
public virtual void AddDamage(MovableCharacterSM attacker) { AttackedStartTime = Time.time; ActivateState((int)MovableCharacterStates.Attacked); if (attacker.AttackStrength < 0) MonobehaviorHandler.GetMonobeharior().GetObject<AudioPlayer>("AudioPlayer").PlayAudioById("heal"); if (attacker.AttackStrength < 0 && Hp >= InitialLifes) { Hp = InitialLifes; return; } if (attacker.AttackStrength > 0) MonobehaviorHandler.GetMonobeharior().GetObject<AudioPlayer>("AudioPlayer").PlayAudioById("lowkick"); float currentStrength = attacker.AttackStrength*Randomizer.GetNormalizedRandom(); AttackTarget = attacker; AddDamageValue(currentStrength); if (_isHalfImmortal) { if (Hp < InitialLifes/2) { Hp = InitialLifes/2; } } if (IsAttackListenerActivated) { TrainingHandler handler = MonobehaviorHandler.GetMonobeharior().GetObject<TrainingHandler>("TrainingHandler"); handler.SetAttackedPassenger(this); handler.ShowNext(); IsAttackListenerActivated = false; } }
public void CalculateAttackReaction() { if (_attackDenyedByTraining) { return; } bool willCounterAttack = Randomizer.GetPercentageBasedBoolean((int)CounterAttackProbability); if (willCounterAttack) { if (AttackTarget != null) { AttackIfPossible(); } else { MakeIdle(); } } else { MovableCharacterSM pursuer = AttackTarget; AttackTarget = null; BeginEscape(pursuer); } }
public float CalculateLocalScaleForMovable(MovableCharacterSM character) { float posY = character.transform.position.y; posY -= _polygonCollider2D.bounds.min.y; float scalePercent = 1 + 0.3f*(1 - posY/_normalizedMax); return scalePercent; }
public void RegisterDeath(MovableCharacterSM obj) { if (obj is ConductorSM) { GameOver(true); } else { if (obj is PassengerSM) { var ps = obj as PassengerSM; if (ps.HasTicket()) { if (!ps.WasStickWhenFlyAway) { _killedPassengers++; } if (!ps.IsVisibleToHero()) { if (_totalHares > 0) { _totalHares--; } } } else { if (!_flyingAwayByKinds.ContainsKey(ps.GetClassName())) { _flyingAwayByKinds.Add(ps.GetClassName(), 1); } else { int currentValue = _flyingAwayByKinds [ps.GetClassName()]; _flyingAwayByKinds [ps.GetClassName()] = currentValue + 1; } if (_totalHares > 0) { _totalHares--; } } _passengers.Remove(ps); } UpdateStats(); if (_maxKilledPassengers < 0) { GameOver(false); } else { if (_passengers.Count == 0) { MonobehaviorHandler.GetMonobeharior().GetObject <DoorsTimer>("DoorsTimer").StopNow(); } } } }
public float CalculateLocalScaleForMovable(MovableCharacterSM character) { float posY = character.transform.position.y; posY -= _polygonCollider2D.bounds.min.y; float scalePercent = 1 + 0.3f * (1 - posY / _normalizedMax); return(scalePercent); }
public bool TryRunAwayFromMovable(MovableCharacterSM movable) { float currentRunAwayProbability = GetRunAwayProbabilityForClass(movable.GetClassName()); if (Randomizer.GetPercentageBasedBoolean((int)currentRunAwayProbability)) { BeginEscape(movable); return(true); } return(false); }
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); }
public virtual void AddDamage(MovableCharacterSM attacker) { AttackedStartTime = Time.time; ActivateState((int)MovableCharacterStates.Attacked); if (attacker.AttackStrength < 0) { MonobehaviorHandler.GetMonobeharior().GetObject <AudioPlayer>("AudioPlayer").PlayAudioById("heal"); } if (attacker.AttackStrength < 0 && Hp >= InitialLifes) { Hp = InitialLifes; return; } if (attacker.AttackStrength > 0) { MonobehaviorHandler.GetMonobeharior().GetObject <AudioPlayer>("AudioPlayer").PlayAudioById("lowkick"); } float currentStrength = attacker.AttackStrength * Randomizer.GetNormalizedRandom(); AttackTarget = attacker; AddDamageValue(currentStrength); if (_isHalfImmortal) { if (Hp < InitialLifes / 2) { Hp = InitialLifes / 2; } } if (IsAttackListenerActivated) { TrainingHandler handler = MonobehaviorHandler.GetMonobeharior().GetObject <TrainingHandler>("TrainingHandler"); handler.SetAttackedPassenger(this); handler.ShowNext(); IsAttackListenerActivated = false; } }
public void SetAttackedPassenger(MovableCharacterSM character) { if (_attackedPassenger == null) { _attackedPassenger = character; } }
public MovableCharacterState(StateMachine parent) : base(parent) { MovableCharacter = (MovableCharacterSM)parent; }
public void StopEscape() { _pursuer = null; }
public void TryAttackMovable(MovableCharacterSM movable) { if(_attackDenyedByTraining) return; float currentAttackProbability = AttackProbability; var sm = movable as PassengerSM; if (sm != null) { if(_isPassengerAttackDenied) return; 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; } } AttackTarget = movable; AttackIfPossible(); } else { MakeIdle(); } }
public void BeginEscape(MovableCharacterSM pursuer) { _pursuer = pursuer; ActivateState((int)MovableCharacterStates.Escape); }
public MovableCharacterState(StateMachine parent) : base(parent) { MovableCharacter = (MovableCharacterSM) parent; }
public void StopEscape() { _pursuer = null; }
public bool TryRunAwayFromMovable(MovableCharacterSM movable) { float currentRunAwayProbability = GetRunAwayProbabilityForClass(movable.GetClassName()); if (Randomizer.GetPercentageBasedBoolean((int)currentRunAwayProbability)) { BeginEscape(movable); return true; } return false; }
public void RegisterDeath(MovableCharacterSM obj) { if (obj is ConductorSM) { GameOver(true); } else { if (obj is PassengerSM) { var ps = obj as PassengerSM; if (ps.HasTicket()) { if (!ps.WasStickWhenFlyAway) { _killedPassengers++; } if (!ps.IsVisibleToHero()) { if(_totalHares > 0) _totalHares--; } } else { if(!_flyingAwayByKinds.ContainsKey (ps.GetClassName ())) { _flyingAwayByKinds.Add (ps.GetClassName (), 1); } else { int currentValue = _flyingAwayByKinds [ps.GetClassName ()]; _flyingAwayByKinds [ps.GetClassName ()] = currentValue + 1; } if(_totalHares > 0) _totalHares--; } _passengers.Remove(ps); } UpdateStats(); if (_maxKilledPassengers < 0) { GameOver(false); } else { if (_passengers.Count == 0) { MonobehaviorHandler.GetMonobeharior().GetObject<DoorsTimer>("DoorsTimer").StopNow(); } } } }
public void BeginEscape(MovableCharacterSM pursuer) { _pursuer = pursuer; ActivateState((int)MovableCharacterStates.Escape); }