public override void OnStartAttack(int index) { ParticlesManager particlesManager = ParticlesManager.Instance; if (TimeManager.Instance.IsSlowMotionOn) { particlesManager.SlowMotionTrailsManager.RegisterNewSlash(index); } particlesManager.SlashTrailManager.ShootParticle(index); Hashtable parameters = new Hashtable(); WeaponActionType attackType = WeaponActionType.NONE; if (index == 4) { attackType = WeaponActionType.STAB; } else if (index == 3) { attackType = WeaponActionType.UPPERCUT; } else if (index == 5) { attackType = WeaponActionType.DOWNWARD_SMASH; } else { attackType = WeaponActionType.SLASH; } parameters.Add(ParameterType.ATTACK_TYPE, attackType); hitter.Activate(parameters); base.OnStartAttack(index); }
/// <summary> /// Method fires just after specified key combination is detected /// </summary> /// <param name="actionIndex"></param> protected override void requestAction(int actionIndex) { WeaponActionType action = (WeaponActionType)actionIndex; if (rigAnmationController != null && rigAnmationController == rigManager.CurrentRig) { RigWithKatanaController rigWithKatanaAnimationController = (RigWithKatanaController)rigManager.CurrentRig; if (CanAttack) { CanAttack = false; switch (action) { case WeaponActionType.SLASH: CurrentActionType = WeaponActionType.SLASH; rigWithKatanaAnimationController.Attack(); break; case WeaponActionType.STAB: CurrentActionType = WeaponActionType.STAB; rigWithKatanaAnimationController.Stab(); break; case WeaponActionType.UPPERCUT: CurrentActionType = WeaponActionType.UPPERCUT; rigWithKatanaAnimationController.Uppercut(); break; case WeaponActionType.DOWNWARD_SMASH: if (!characterController.IsGrounded) { CurrentActionType = WeaponActionType.DOWNWARD_SMASH; rigWithKatanaAnimationController.DownwardSmash(); } break; } } } }
protected override void requestAction(int actionIndex) { WeaponActionType actionType = (WeaponActionType)actionIndex; if (rigAnmationController != null && rigAnmationController == rigManager.CurrentRig) { if (CanAttack) { CanAttack = false; switch (actionType) { case WeaponActionType.SHOOT: if (Bullets > 0) { CurrentActionType = WeaponActionType.SHOOT; rigAnmationController.Attack(); shoot(); } else { CurrentActionType = WeaponActionType.RELOAD; rigAnmationController.Reload(); } break; case WeaponActionType.RELOAD: CurrentActionType = WeaponActionType.RELOAD; rigAnmationController.Reload(); break; } } } }
void onMessageFromHitterRecived(Hashtable parameters) { if (parameters != null) { if (parameters.ContainsKey(ParameterType.SENDER_TYPE)) { SenderType senderType = (SenderType)parameters [ParameterType.SENDER_TYPE]; switch (senderType) { case SenderType.OBJECT: case SenderType.NPC: ShakeEffect.Instance.ShakeAndClampToGivenValue(0.5f); ParticlesManager.Instance.SwordOnHitParticleManager.ShootParticle(); break; } } if (parameters.ContainsKey(ParameterType.ATTACK_TYPE)) { WeaponActionType actionType = (WeaponActionType)parameters [ParameterType.ATTACK_TYPE]; switch (actionType) { case WeaponActionType.BLOCK: animator.SetTrigger("BLOCKED"); hitter.Deactivate(); break; } } } }
void onHitterActivated(ActivatableHitter hitter, Hashtable parameters) { if (!IsGrounded) { Vector3 velocity = this.Velocity; velocity.y = 5.5f; SetVelocity(velocity); } if (hitter != null && hitter.HitterType == HitterType.BLADE) { if (parameters != null && parameters.ContainsKey(ParameterType.ATTACK_TYPE)) { WeaponActionType attackType = (WeaponActionType)parameters [ParameterType.ATTACK_TYPE]; Hashtable feedbackParameters = new Hashtable(); feedbackParameters.Add(ParameterType.SENDER_TYPE, SenderType.NPC); if (mainMovementState != null && mainMovementState is NPCGroundState && Random.value < 0.1f && attackType != WeaponActionType.DOWNWARD_SMASH) { attackType = WeaponActionType.BLOCK; feedbackParameters.Add(ParameterType.ATTACK_TYPE, WeaponActionType.BLOCK); } hitter.SendMessage(feedbackParameters); switch (attackType) { case WeaponActionType.SLASH: onHit(hitter); break; case WeaponActionType.UPPERCUT: upperCut(); break; case WeaponActionType.STAB: stab(); break; case WeaponActionType.BLOCK: block(); break; case WeaponActionType.DOWNWARD_SMASH: smashed(); break; } } } }