protected override void OnRemovedFromInventory() { PlayerActionEventManager.RemoveEvent(PlayerActions.GunShoot, onShoot); // Destroy Phantom Pistol Object Destroy(phantomPistolObject); }
public override void Init_Start(GameObject gameObject) { base.Init_Start(gameObject); // For Checking When Player Gets Knockbacked PlayerActionEventManager.AddEvent(PlayerActions.Knockbacked, this.NewPlayerActionEvent(() => KnockbackStarted = true)); }
public override void OnExit() { // Reset Value dashTimer.SetActive(false).Reset(); dashDir = 0; curDist = 0; curSpeed = 0; curTime = 0; curTrailCount = 0; DashDone = false; // Reset Velocity data.RB2D.velocity = Vector2.zero; // Remove Status Effect PlayerStatus.RemoveEffect(status_IgnoreDamage); // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.DashEnd); // When Using Melee Weapon if (isUsingMelee) { isUsingMelee = false; // Unlock Slot PlayerInventoryManager.weaponHotbar.LockSlots(this, false); } }
private float DamageShield(float damageAmount) { foreach (var shield in shields.Reverse()) { ShieldHealth box = shield.Value; if (box.shieldHealth.Value == 0) { continue; } // Calculate Overkill Damage float overkillDmg = Mathf.Max(damageAmount - box.shieldHealth.Value, 0); // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.ShieldDamaged); // Damage Shield box.shieldHealth.ModFlat -= damageAmount; // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.ShieldChanged); // Damage Player damageAmount = overkillDmg; if (damageAmount == 0) { return(0); } } return(damageAmount); }
public override void OnFixedUpdate() { // Detect Ground data.groundDetectionData.DetectGround(!jumpData.isJumping, data.RB2D, transform); data.groundDetectionData.ExecuteOnGroundMethod(this); // Fall Through fallThroughKeyPressed = PlayerInputManager.Inst.Input_FallThrough; data.groundDetectionData.FallThrough(ref fallThroughKeyPressed, data.RB2D, transform, oneWayCollider); // Walk PlayerStats.Inst.walkData.Walk(PlayerInputManager.Inst.Input_WalkDir, data.RB2D, jumpData.isJumping); // Follow Moving Platform data.groundDetectionData.FollowMovingPlatform(data.RB2D); // Jump if (jumpData.Jump(ref PlayerInputManager.Inst.Input_Jump, data.RB2D, transform)) { PlayerActionEventManager.Trigger(PlayerActions.Jump); } // Gravity Gravity_Logic.ApplyGravity(data.RB2D, data.groundDetectionData.isGrounded || jumpData.isJumping ? GravityData.Zero : data.gravityData); // Update Animation UpdateAnimation(); }
public void Init(IceStaffItem iceStaffItem, OBB_IceStaff_Data data) { this.iceStaffItem = iceStaffItem; this.data = data; iceStaffItem.Sub_DamageTick.SetActive(true); iceStaffItem.Sub_ManaUsageTick.SetActive(true); onKill = this.NewPlayerActionEvent(() => { if (PlayerStats.Inst.CurAttackData.HasValue && PlayerStats.Inst.CurAttackData.Value.damageDealer == gameObject) { var dropTable = PlayerStats.Inst.KilledMob.GetComponent <Mob_DropItem>(); if (dropTable == null) { return; } dropTable.add_drop_table(ItemDB.Inst.GetItemPrefab <FrozenSoul>(), 100f, new RangeInt() { min = 1, max = 1 }); } }); PlayerActionEventManager.AddEvent(PlayerActions.Kill, onKill); }
public override void OnAdd(InventoryBase inventory) { base.OnAdd(inventory); PlayerActionEventManager.AddEvent(PlayerActions.HealthDamaged, onDamaged); PlayerActionEventManager.AddEvent(PlayerActions.DamageDealt, onDealDamage); }
public void Stun_Remove() { IsStunned.Set(false); if (!IsStunned.Value) { PlayerActionEventManager.Trigger(PlayerActions.StunEnd); } }
public override void OnAdd(InventoryBase inventory) { base.OnAdd(inventory); PlayerActionEventManager.AddEvent(PlayerActions.GunShoot, onShoot); // Spawn Phantom Pistol Object phantomPistolObject = Instantiate(phantomPistolObjectPrefab, GM.PlayerObj.transform.position, Quaternion.identity); }
public void End() { iceStaffItem.Sub_DamageTick.SetActive(false).ToEnd(); iceStaffItem.Sub_ManaUsageTick.SetActive(false).ToEnd(); PlayerActionEventManager.RemoveEvent(PlayerActions.Kill, onKill); Destroy(gameObject); }
protected override void OnRemovedFromInventory() { // Remove Player Action Event PlayerActionEventManager.RemoveEvent(PlayerActions.Dashing, onDashing); PlayerActionEventManager.RemoveEvent(PlayerActions.DashEnd, onDashEnd); // Destory Particle Destroy(flameParticle.gameObject); }
private void AnimEvent_ShootArrow() { SpawnArrow(); VisualEffect(); // Trigger Item Effect PlayerActionEventManager.Trigger(PlayerActions.WeaponMain); PlayerActionEventManager.Trigger(PlayerActions.BowShoot); }
public override void OnEnter() { // Trigger Item Effect PlayerActionEventManager.Trigger(PlayerActions.MeleeDashAttack); // Look Dir Flip_Logic.FlipXTo(GM.Player.Data.Dir, transform); // Animation data.Animator.Play("Dash"); }
public void GainStamina(float amount) { if (amount <= 0) { return; } PlayerActionEventManager.Trigger(PlayerActions.StaminaGained); stamina.ModFlat += amount; PlayerActionEventManager.Trigger(PlayerActions.StaminaChanged); }
public void Konckback_Remove() { curKnockback = null; curKnockbackMode = KnockbackMode.Weak; ResetGravityOnKnockback = false; KnockbackDir = Vector2.zero; KnockbackCurve = null; PlayerActionEventManager.Trigger(PlayerActions.KnockbackEnd); }
public override void OnEnter() { // Timer weaponItem.Main_CD.Reset(); // Animation data.Animator.Play("Main_Attack"); // Trigger Item Effect PlayerActionEventManager.Trigger(PlayerActions.WeaponMain); }
public bool UseStamina(float amount) { if (stamina.Value < amount) { return(false); } PlayerActionEventManager.Trigger(PlayerActions.StaminaUsed); stamina.ModFlat -= amount; PlayerActionEventManager.Trigger(PlayerActions.StaminaChanged); return(true); }
public override void OnAdd(InventoryBase inventory) { base.OnAdd(inventory); // Add Player Action Event PlayerActionEventManager.AddEvent(PlayerActions.Dashing, onDashing); PlayerActionEventManager.AddEvent(PlayerActions.DashEnd, onDashEnd); // Spawn Particle flameParticle = Instantiate(flameParticlePrefab, GM.PlayerObj.transform).GetComponent <ParticleSystem>(); flameParticle.transform.localPosition = flameParticle.transform.localPosition.Add(y: -0.2f); }
public bool DealDamage(AttackData attackData, GameObject target, params PlayerActions[] actionToTrigger) { // Get IDamage IDamage iDamage = target.GetComponent <IDamage>(); if (iDamage == null) { return(false); } // Check Ignore Hit (피해 무시) if (target.GetComponent <StatusEffect_IgnoreHit>() != null) { return(false); } // Store Damage DamageToDeal = attackData.damage.Value; // Store Attack Data CurAttackData = attackData; // Store Damaged Mob DamagedMob = target.GetComponent <Mob_Base>(); // Trigger Item Effect PlayerActionEventManager.Trigger(PlayerActions.DamageDealt); for (int i = 0; i < actionToTrigger.Length; i++) { PlayerActionEventManager.Trigger(actionToTrigger[i]); } attackData.damage = new FloatStat(DamageToDeal); if (iDamage.CheckDeath(attackData)) { KilledMob = target.GetComponent <Mob_Base>(); PlayerActionEventManager.Trigger(PlayerActions.Kill); } // Damage Mob iDamage.Hit(attackData); // Reset Attack Data CurAttackData = null; // Reset Damaged Mob DamagedMob = null; return(true); }
public override void InitStats() { // Init Cooldown CooldownTimer.EndTime = 10f; // Init Mana Usage ManaUsage = new FloatStat(20, min: 0); // Init Duration durationTimer.EndTime = 10f; durationTimer .SetTick(gameObject) .SetAction( onEnd: () => { corutine_CheckAllCorpseAbsorbed = StartCoroutine(CheckAllCorpseAbsorbed()); PlayerActionEventManager.RemoveEvent(PlayerActions.Kill, onKill); }) .SetActive(false); IEnumerator CheckAllCorpseAbsorbed() { while (true) { // Check if All Corpses all Absorbed if (IsActive && durationTimer.IsEnded && corpsesToAbsorb == 0) { PlayerStats.Inst.Heal(PlayerStats.Inst.GetShieldAt(shieldIndex).Value *healMultiplier); // TODO // 시체 블록 풀링하기 때문에 소환할때 리셋 해야함!!! //for (int i = 0; i < Mathf.FloorToInt(PlayerStats.Inst.GetShieldAt(shieldIndex).Value / shieldGainPerKill); i++) //{ // coprsePrefabs[i]. // GetComponent<PoolingObj>().Spawn(GM.PlayerPos). // GetComponent<Rigidbody2D>().AddForce(Vector2.right * GM.Player.Data.Dir * 50f, ForceMode2D.Impulse); //} Deactivate(); corutine_CheckAllCorpseAbsorbed = null; yield return(null); } yield return(new WaitForEndOfFrame()); } } // Init Shield HP shieldHealth = new FloatStat(0, min: 0, max: 40); }
public void Damage(AttackData attackData) { // Check Ignore Damage if (PlayerStatus.IgnoreDamage.Value) { return; } // Store Damage Amount DamageToReceive = PlayerStatus.AbsorbDamage.Value ? 0 : attackData.damage.Value; // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.Damaged); if (DamageToReceive == 0) { return; } DamageToReceive = DamageShield(DamageToReceive); if (DamageToReceive == 0) { return; } // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.HealthDamaged); // Apply Damage health.ModFlat -= DamageToReceive; // Death if (health.Value == 0) { Death(); } // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.HealthChanged); if (IsDead) { return; } // Visual Effect PlayerHitEft.Create(transform.position); GetComponent <HitColorEffect>().OnHit(); }
public int AddShield(FloatStat shieldHealth) { // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.ShieldGained); shields.Add(shieldCount, new ShieldHealth() { shieldHealth = shieldHealth }); // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.ShieldChanged); return(shieldCount++); }
protected override void OnDeactivate() { // Stop Duration Timer durationTimer.SetActive(false); durationTimer.Reset(); // Remove Shield PlayerStats.Inst.RemoveShield(ref shieldIndex); // Disable Shield Item Effect PlayerActionEventManager.RemoveEvent(PlayerActions.ShieldChanged, onShieldChanged); // Hide Effect shieldEffect.SetActive(false); }
public override void OnEnter() { // Shoot SpawnBullet(); VisualEffect(); // Timer weaponItem.Main_Shoot_CD.Reset(); // Animation data.Animator.Play(weaponItem.ANIM_Shoot); // Trigger Item Effect PlayerActionEventManager.Trigger(PlayerActions.WeaponMain); PlayerActionEventManager.Trigger(PlayerActions.GunShoot); }
protected override void OnActivate() { // Stop Cooldown Timer CooldownTimer.SetActive(false); CooldownTimer.Reset(); // Start Duration Timer durationTimer.SetActive(true); durationTimer.Reset(); // Get Shield Index shieldIndex = PlayerStats.Inst.AddShield(shieldHealth); PlayerActionEventManager.AddEvent(PlayerActions.Kill, onKill); PlayerActionEventManager.AddEvent(PlayerActions.ShieldChanged, onShieldChanged); }
public void Konckback_Add(PlayerStatus_Knockback status, KnockbackMode mode, bool resetGravity, Vector2 knockbackDir, AnimationCurve speedCurve) { if (curKnockbackMode == KnockbackMode.Unstoppable || curKnockbackMode > mode) { return; } RemoveEffect(curKnockback); curKnockback = status; curKnockbackMode = mode; ResetGravityOnKnockback = resetGravity; KnockbackDir = knockbackDir; KnockbackCurve = speedCurve; PlayerActionEventManager.Trigger(PlayerActions.Knockbacked); }
public override void OnEnter() { // Timer weaponItem.Basic_Dur.SetActive(true); // Animation data.Animator.Play(prevAttackAnim == 1 ? "Basic_PunchR" : "Basic_PunchL"); prevAttackAnim *= -1; // Trigger Item Effect PlayerActionEventManager.Trigger(PlayerActions.WeaponMain); PlayerActionEventManager.Trigger(PlayerActions.MeleeBasicAttack); // Player GM.Player.Data.CanDash = false; GM.Player.Data.CanKick = false; PlayerInventoryManager.weaponHotbar.LockSlots(this, true); }
public override void OnEnter() { // Init Value dashDir = PlayerInputManager.Inst.Input_DashDir; dashTimer.SetActive(true); // Reset Collider Size //data.groundDetectionData.Reset_IWSolid_ColSize(); // Reset Velocity data.RB2D.velocity = Vector2.zero; // Apply Status Effect PlayerStatus.AddEffect(status_IgnoreDamage); // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.DashStart); }
private void Start() { onKill = this.NewPlayerActionEvent(() => { if (PlayerStats.Inst.CurAttackData.HasValue && PlayerStats.Inst.CurAttackData.Value.damageDealer == gameObject) { var dropTable = PlayerStats.Inst.KilledMob.GetComponent <Mob_DropItem>(); if (dropTable == null) { return; } dropTable.add_drop_table(ItemDB.Inst.GetItemPrefab <FrozenSoul>(), 100f, new RangeInt() { min = 1, max = 1 }); } }); PlayerActionEventManager.AddEvent(PlayerActions.Kill, onKill); }
public void RemoveShield(ref int shieldIndex) { if (shieldIndex < 0) { return; } if (shields[shieldIndex].shieldHealth.Value > 0) { // Trigger Event PlayerActionEventManager.Trigger(PlayerActions.ShieldChanged); } shields.Remove(shieldIndex); shieldIndex = -1; if (shields.Count == 0) { shieldCount = 0; } }