public override void RegisterStates() { MeleeAttackBehaviour attackBehaviour = new MeleeAttackBehaviour(this.targetObject, CharVars.ACTION_CHECKS.ToS(), this.radius, CharVars.ENEMY_LAYER.ToS(), CharVars.FACING_DIRECTION.ToS()) // .WithDamage(this.baseDamage) .WithCharge(CharVars.GENERIC_CHARGE.ToS()) .WithEffect((int) this.effect) .WithEffectHorizontalDirection(null, 1f, true) .WithEffectVerticalDirection(CharVars.VERTICAL_VALUE.ToS(), 0f, 0f, 1f) .WithEffectForce(this.force); ; ChargedMeleeAttackBuilder attackBuilder = (ChargedMeleeAttackBuilder) new ChargedMeleeAttackBuilder(this.targetObject, this.input, CharVars.GENERIC_CHARGE.ToS(), (float)CharVars.GENERIC_CHARGE.defaultValue, this.maxChargeMultiplier, this.maxChargeSeconds) .WithState(CharStates.ATTACK_STRONG.ToS()) .WithStep(this.stepForce) .WithAnimation(new PlayAnimationBehaviour(this.targetObject, CharStates.ATTACK_STRONG.ToS())) .WithStartingStates(CharStates.IDLE.ToS(), CharStates.MOVE.ToS(), CharStates.FLY.ToS()) .WithUpdateBehaviours(attackBehaviour) .WithCombo(new ComboWrapper(CharStates.ATTACK_STRONG.ToS(Suffixes.Pursuit), 1) .WithCondition(new InputCondition(CharVars.JUMP_MODE.ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.DOUBLE_TAP)) .WithCondition(new IntCondition(CharVars.ATTACK_EFFECT.ToS(), Operators.EQUAL, (int)AttackEffects.KNOCKBACK)) ) .WithCombo(new ComboWrapper(CharStates.ATTACK_STRONG.ToS(Suffixes.Teleport), 2) .WithCondition(new InputCondition(CharVars.FIRE1_MODE.ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.DOUBLE_TAP)) .WithCondition(new IntCondition(CharVars.ATTACK_EFFECT.ToS(), Operators.EQUAL, (int)AttackEffects.KNOCKBACK)) ); this.stateWrappers = attackBuilder.Build(); }
void Start() { StartingHealth = Health; _attackBehaviour = new MeleeAttackBehaviour(this, MinDamage, MaxDamage, RechargeTime, Range); _moveBehaviour = new RandomMoveBehaviour(this); }
public override void SetUpEntityComponent(GameEntity entity) { base.SetUpEntityComponent(entity); SetUpCombatActionsAnimationHashes(); myTransform = entity.myTransform; //Time.timeScale = 0.25f; //if we with for slow mo ChangeStance(1); nextBehaviourChangeCheckeTime = Time.time + Random.Range(0, behaviourChangeCheckInterval); nextBehaviourUpdateTime = Time.time + Random.Range(0, behaviourUpdateInterval); //construct the bahaviours, assign the starting behaviour fleeBehaviour = new FleeBehaviour(entity, myTransform); meleeAttackBehaviour = new MeleeAttackBehaviour(entity, myTransform); currentBehaviour = meleeAttackBehaviour; }
private List<StateWrapper> BuildAttackUp() { MeleeAttackBehaviour attackBehaviour = new MeleeAttackBehaviour(this.targetObject, CharVars.ACTION_CHECKS.ToS(), this.radius, CharVars.ENEMY_LAYER.ToS(), CharVars.FACING_DIRECTION.ToS()) // .WithDamage(this.baseDamage) .WithCharge(CharVars.GENERIC_CHARGE.ToS()) .WithEffect((int) this.effect) .WithEffectHorizontalDirection(CharVars.HORIZONTAL_VALUE.ToS(), 0f, true) .WithEffectVerticalDirection(CharVars.VERTICAL_VALUE.ToS(), 1f, 1f, 1f) .WithEffectForce(this.force) ; BasicMeleeAttackBuilder builder = (BasicMeleeAttackBuilder) new BasicMeleeAttackBuilder(this.targetObject, this.input) .WithState(CharStates.ATTACK_STRONG.ToS(Suffixes.Up)) .WithAnimation(new PlayAnimationBehaviour(this.targetObject, CharStates.ATTACK_STRONG.ToS(Suffixes.Up))) .WithStartBehaviours(new SetVariableBehaviour(this.targetObject, CharVars.IS_SLIDING.ToS(), true), new IgnoreGravityBehaviour(this.targetObject)) .WithUpdateBehaviours(attackBehaviour) .WithExitBehaviours(new SetVariableBehaviour(this.targetObject, CharVars.IS_SLIDING.ToS(), false), new RestoreGravityBehaviour(this.targetObject, CharVars.ORIGINAL_GRAVITY_SCALE.ToS()).WithNextStateNotIn(CharStates.FLY.ToS())) .WithCombo(new ComboWrapper(CharStates.ATTACK_STRONG.ToS(Suffixes.Pursuit), 1) .WithCondition(new InputCondition(CharVars.FromInputMode(this.pursuitInput).ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.DOUBLE_TAP)) .WithCondition(new IntCondition(CharVars.GENERIC_COUNTER.ToS(), Operators.LESS_THAN, this.maxPursuits)) .WithCondition(new IntCondition(CharVars.ATTACK_EFFECT.ToS(), Operators.EQUAL, (int)AttackEffects.KNOCKBACK)) ) .WithCombo(new ComboWrapper(CharStates.ATTACK_STRONG.ToS(Suffixes.Teleport), 2) .WithCondition(new InputCondition(CharVars.FromInputMode(this.teleportInput).ToS(), Operators.EQUAL, InputModes.PRESS, InputModes.DOUBLE_TAP)) .WithCondition(new IntCondition(CharVars.GENERIC_COUNTER.ToS(), Operators.LESS_THAN, this.maxTeleports)) .WithCondition(new IntCondition(CharVars.ATTACK_EFFECT.ToS(), Operators.EQUAL, (int)AttackEffects.KNOCKBACK)) ) ; return builder.Build(); }