private void SetUserAnimParams(SkillUser user) { user.userAnim.SetFloat("skillX", Mathf.Round(user.userAim.aimDirection.normalized.x)); user.userAnim.SetFloat("skillY", Mathf.Round(user.userAim.aimDirection.normalized.y)); user.userAnim.SetFloat("horizontal", user.userAim.aimDirection.normalized.x); user.userAnim.SetFloat("vertical", user.userAim.aimDirection.normalized.y); }
private void CastProjectile(PoolObject projectile, SkillUser user, bool rotateProjectile = true) { PoolObject p = user.userPool.SpawnTargetObject(projectile, 10); if (soundOnCastEach) { EazySoundManager.PlaySound(soundOnCastEach, 0.1f); } if (user.skillSpawnPoint) { p.transform.position = user.skillSpawnPoint.position; } else { p.transform.position = user.transform.position; } //p.transform.position += user.userAim.aimDirection.normalized * spawnDistanceMultiplier; if (rotateProjectile) { user.userAim.RotateObjectToAim(p.transform); } p.GetComponent <ProjectileObject>().InitializeProjectile(user); if (castingKnockback > 0) { user.userStats.rb.velocity = Vector3.zero; Vector3 kDirection = user.userAim.aimDirection.normalized; if (!forwardCastingKnockback) { kDirection.y *= -1; kDirection.x *= -1; //eu sei que dava pra fazer numa conta só, mas só assim vai } user.userStats.rb.AddForce(kDirection * castingKnockback); } }
public override bool Initialize(SkillUser user) { if (skillsToUse == null || skillsToUse.Length <= 0)//não tem skills configuradas { Debug.LogError("Skill Combo Sequence Object has no skills."); return(false); } //tem skills Skill nextSkill = skillsToUse[0]; if (user.timeSinceLastSkill <= timeToUseNextSkill)//vamos ver qual é a proxima skill a se usar { int targetSkillIndex = 0; for (int i = 0; i < skillsToUse.Length; i++) { if (user.lastUsedSkill != null && user.lastUsedSkill == skillsToUse[i]) { targetSkillIndex = (i + 1) % skillsToUse.Length; //Debug.Log("advancing skill"); } } //Debug.Log("Combo skill id: "+targetSkillIndex); nextSkill = skillsToUse[targetSkillIndex]; } user.InitializeSkill(nextSkill); return(false); }
public object GetSkillJson() { string jsonString = File.ReadAllText(Application.dataPath + "/Resources/Data/Skill.json"); SkillUser skillObject = JsonMapper.ToObject <SkillUser>(jsonString); return(skillObject); }
public override void InitState(EntityStats receiver, EntityStats applier = null) { StateStack ss = receiver.GetStack(this); if (ss == null) { ss = new StateStack(this, stunDuration, 1); receiver.states.Add(ss); } else { ss.ResetTimer(); } /* receiver.canMove = false; * SkillUser su = receiver.GetComponent<SkillUser>(); * if(su){ * su.canCastSkills = false; * } */ SkillUser su = receiver.GetComponent <SkillUser>(); if (su) { su.canCastSkills = false; } receiver.stunned = true; }
public static void Damage(object key, SkillUser su, Tile target, GameEvent ge) { if (target.Inhabitant != null) { ge.AddDamageApplication(target.Inhabitant, new Damage(target.Inhabitant, su.SkillUsageStats[key])); } }
public override void AffectEffect(object key, SkillUser su, Tile target, GameEvent ge, Action <object, SkillUser, Tile, GameEvent> effect) { if (target.Inhabitant != null) { int dif = su.Place.X - target.X; if (dif == 0) { dif = su.Place.Y - target.Y; } dif = Math.Abs(dif); var nKey = new { s = key, w = this, dist = dif }; if (!su.SkillUsageStats.ContainsKey(nKey)) { su.SkillUsageStats[nKey] = new StatSet(); su.SkillUsageStats[nKey].AddSubSet(su.SkillUsageStats[key]); foreach (var m in PrivMods) { m.Affect(su.SkillUsageStats[nKey]); } if (dif == 2) //halve effect v targets 2 tiles away { SecondaryTargetMod.Affect(su.SkillUsageStats[nKey]); } } effect(nKey, su, target, ge); } }
public override void FrameUpdate(SkillUser user) { if (updateAimDuringVolley) { SetUserAnimParams(user); } }
public override void InitializeProjectile(SkillUser user) { anim.Play("Idle", 0, 0); //hitCollider.enabled = false; meleeDirection = user.userAim.GetGeneralDirection(); projectileDamageSource.damageValue = (int)(Random.Range(user.userStats.strength.Value - 1, user.userStats.strength.Value + 2) * strengthMultiplier); projectileDamageSource.hostileTo = user.userStats.enemyEntitySets; projectileDamageSource.owner = user.userStats; projectileDamageSource.skillType = SkillType.Melee; projectileDamageSource.damageType = DamageType.Physical; if (meleeDirection == GeneralDirection.DOWN) { projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, -90); } else if (meleeDirection == GeneralDirection.UP) { projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, 90); } else if (meleeDirection == GeneralDirection.RIGHT) { projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, 0); } else if (meleeDirection == GeneralDirection.LEFT) { projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, 180); } StartCoroutine(HitRoutine()); }
public override void FrameUpdate(SkillUser user) { if (keepUpdatingSkillAnim) { user.userAnim.SetFloat("skillX", Mathf.Round(user.userAim.aimDirection.normalized.x)); user.userAnim.SetFloat("skillY", Mathf.Round(user.userAim.aimDirection.normalized.y)); } }
private void Awake() { trans = GetComponent <Transform>(); skillUser = playerMovement.GetComponent <SkillUser>(); playerStats = playerMovement.GetComponent <PlayerStats>(); int curID = EazySoundManager.PlaySound(singleAudio, baseVolume, true, null); currentAudio = EazySoundManager.GetAudio(curID); }
public override void InitializeProjectile(SkillUser user) { anim.Play("Fire", 0, 0); damageInfo.damageValue = (int)(baseHitDamage * damageMultiplier.GetValue()); damageInfo.hostileTo = user.userStats.enemyEntitySets; damageInfo.owner = user.userStats; damageInfo.knockbackForce = 0; //skill e damage type setada no inspector }
public override void ConcludeState(EntityStats receiver) { receiver.stunned = false; SkillUser su = receiver.GetComponent <SkillUser>(); if (su) { su.canCastSkills = true; } }
public override void FrameUpdate(SkillUser user) { if (user.timeSinceLastSkill >= healingTime) { if (stopAnim) { user.ReplaceSkillAnimationSet(stopAnim.GetSetForRace(user.userStats.baseRace)); } //user.userAnim.Play("Skill",0,0); } }
public override void StepSkill(SkillUser user) { if (user.skillStep == 1) { ApplyBuffs(user); } else if (user.skillStep > 1) { ConcludeSkill(user); } }
public void CastSkill(PoolObject projectile, SkillUser user) { PoolObject p = user.userPool.SpawnTargetObject(projectile, 1); if (user.userAim.focusPoint != null) { p.transform.position = user.userAim.focusPoint; } p.transform.position = new Vector3(p.transform.position.x, p.transform.position.y, 0); p.GetComponent <ProjectileObject>().InitializeProjectile(user); }
public override void StepSkill(SkillUser user) { if (user.skillStep == 1) { CastSkill(effectToSpawn, user); } else if (user.skillStep > 1) { ConcludeSkill(user); } }
public override void StepSkill(SkillUser user) { if (user.skillStep == 1) { ApplyAOE(user); } else if (user.skillStep > 1) { EndSkill(user); } }
public override void StepSkill(SkillUser user) { //Debug.Log("step"); if (user.skillStep == 1) { SpawnSlash(user); } else if (user.skillStep > 1) { ConcludeSlash(user); } }
public override IEnumerable <Tile> Range(object key, SkillUser su) { if (su.Place == null) { throw new ArgumentException("SkillUser must be placed."); } Tile t; t = su.Place.North; if (t != null) { yield return(t); t = t.North; if (t != null) { yield return(t); } } t = su.Place.East; if (t != null) { yield return(t); t = t.East; if (t != null) { yield return(t); } } t = su.Place.West; if (t != null) { yield return(t); t = t.West; if (t != null) { yield return(t); } } t = su.Place.South; if (t != null) { yield return(t); t = t.South; if (t != null) { yield return(t); } } }
public override bool Initialize(SkillUser user) { if (castingAnimSet) { user.ReplaceSkillAnimationSet(castingAnimSet.GetSetForRace(user.userStats.baseRace)); } user.userStats.rb.velocity = Vector3.zero; user.userStats.canMove = false; user.userAnim.Play("Skill", 0, 0); user.ComputeSkill(this); user.userStats.ChangeMana(-skillCost); return(true); }
public override void InitializeProjectile(SkillUser user) { anim.ResetTrigger("fade"); anim.Play("Travel", 0, 0); currentSpeed = travelSpeed; //col.enabled = true; moving = true; fadeTimer = timeToFade; projectileDamageSource.owner = user.userStats; projectileDamageSource.damageValue = (int)(Random.Range(user.userStats.mind.Value - 1, user.userStats.mind.Value + 1) * 1.5f); projectileDamageSource.hostileTo = user.userStats.enemyEntitySets; projectileDamageSource.knockbackForce = knockback; }
public override void InitializeProjectile(SkillUser user) { float currentAngle = 0; while (currentAngle < 360) { PoolObject p = pool.SpawnTargetObject(iceShardPrefab, 20); p.GetComponent <ProjectileObject>().InitializeProjectile(user); p.transform.position = transform.position; p.transform.rotation = Quaternion.Euler(0, 0, currentAngle); currentAngle += angleBetweenShards; } }
public void ApplyBuffs(SkillUser user) { user.userStats.ApplyState(buffToApply); if (stillGraph) { PoolObject p = user.userPool.SpawnTargetObject(stillGraph, 1, user.transform); p.GetComponent <StillGraph>().Initialize(null, user.userStats.GetStack(buffToApply).stateDuration, user.transform); } if (castEffect) { PoolObject p = user.userPool.SpawnTargetObject(castEffect, 1, user.transform); p.transform.localPosition = Vector3.zero; } }
public IEnumerable <Tile> Range(SkillUser su) { //init statset here because this is always first method called on skill if (!su.SkillUsageStats.ContainsKey(this)) { su.SkillUsageStats[this] = new StatSet(); su.SkillUsageStats[this].AddSubSet(su.Stats); foreach (var m in Mods) { m.Affect(su.SkillUsageStats[this]); } } return(_Range(this, su)); }
void Start() { rb = GetComponent <Rigidbody2D>(); anim = GetComponent <Animator>(); spr = GetComponent <SpriteRenderer>(); skills = GetComponent <SkillUser>(); sp = spr.sprite; MapaCyber mc = FindObjectOfType <MapaCyber>(); if (mc != null) { transform.position = MapaCyber.sala[0].transform.position; } }
public virtual void AffectEffect(object key, SkillUser su, Tile target, GameEvent ge, Action <object, SkillUser, Tile, GameEvent> effect) { var nKey = new { s = key, w = this }; if (!su.SkillUsageStats.ContainsKey(nKey)) { su.SkillUsageStats[nKey] = new StatSet(); su.SkillUsageStats[nKey].AddSubSet(su.SkillUsageStats[key]); foreach (var m in PrivMods) { m.Affect(su.SkillUsageStats[nKey]); } } effect(nKey, su, target, ge); }
public override void InitializeProjectile(SkillUser user) { anim.ResetTrigger("fade"); anim.Play("Travel", 0, 0); currentSpeed = travelSpeed; tickCounter = 0; fadeTimer = 0; tickTimer = 0; col.enabled = true; moving = true; victim = null; fadeTimer = timeToFade; projectileDamageSource.damageValue = (int)(Random.Range(user.userStats.strength.Value - 1, user.userStats.strength.Value + 1) * impactMultipler); projectileDamageSource.hostileTo = user.userStats.enemyEntitySets; projectileDamageSource.knockbackForce = knockback; projectileDamageSource.owner = user.userStats; }
public void ApplyAOE(SkillUser user) { if (globalEntitySet.Items.Count > 0) { for (int i = 0; i < globalEntitySet.Items.Count; i++) { float dist = Vector2.Distance(user.transform.position, globalEntitySet.Items[i].transform.position); if (dist < range * rangeMultiplier.GetValue()) { globalEntitySet.Items[i].TakeDamage(damageInformation); damageInformation.ApplyStatesToEntity(globalEntitySet.Items[i]); globalEntitySet.Items[i].ApplyKnockback(user.transform.position, victimsKnockback * knockbackMultiplier.GetValue()); } } } }
public override void StepSkill(SkillUser user) { if (user.skillStep > 0 && user.skillStep <= numberOfProjectiles) { if (user.skillStep == numberOfProjectiles && ultimateProjectile) { CastProjectile(ultimateProjectile, user, rotateUltimateProjectile); } else { CastProjectile(baseProjectile, user, rotateBasicProjectile); } } else if (user.skillStep > numberOfProjectiles) { ConcludeVolley(user); } }