public HealthComponent(GameObject owner, StatSet statSet) : base(owner, false) { this.statSet = statSet; currentHealth = statSet.GetMaxHealth(); }
public void Heal(float amount) { currentHealth += amount; currentHealth = currentHealth > statSet.GetMaxHealth() ? statSet.GetMaxHealth() : currentHealth; }
public static SkillSet CreateZombieSkillSet(GameObject zombie) { SkillSet skillSet = new SkillSet(zombie); // Perus auto attack. Skill attack = new Skill("attack", 1200, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { bool isCrit = false; float damage = weaponComponent.GenerateAttack(statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); targetingComponent.Target.FirstComponentOfType <HealthComponent>().TakeDamage(damage); SpriterComponent <Texture2D> spriterComponent = zombie.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack"); AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; zombie.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); return(true); } return(false); }); // Tekee 200% weapon damagesta ja 20-50 lisää damaa. Skill slam = new Skill("slam", 4500, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { bool isCrit = false; float damage = weaponComponent.GenerateSpecialAttack(weaponComponent.Weapon.MinDamage, weaponComponent.Weapon.MaxDamage, statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); targetingComponent.Target.FirstComponentOfType <HealthComponent>().TakeDamage(damage); SpriterComponent <Texture2D> spriterComponent = zombie.FirstComponentOfType <SpriterComponent <Texture2D> >(); spriterComponent.ChangeAnimation("Attack"); AnimationFinishedEventHandler animationFininshedEventHandler = (animation) => { spriterComponent.ChangeAnimation("Walk"); }; spriterComponent.OnAnimationFinished += animationFininshedEventHandler; spriterComponent.OnAnimationChanged += (old, newAnim) => { if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= animationFininshedEventHandler; } }; zombie.FirstComponentOfType <DamageRenderer>().AddText(((int)(damage)).ToString(), isCrit); return(true); } return(false); }); // Parantaa useria 10% hpsta ja antaa sille 5% stamina buffin. Skill meatWall = new Skill("meat wall", 12500, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { statSet.AddBuff(new Buff("meat wall", 5f, BuffType.Stamina, ModifierType.Modifier, new BuffDuration(4500))); zombie.FirstComponentOfType <HealthComponent>().Heal(statSet.GetMaxHealth() * 0.10f); return(true); } return(false); }); // Antaa userille 5% lisää strenaa. Skill rage = new Skill("rage", 12500, () => { TargetingComponent targetingComponent = zombie.FirstComponentOfType <TargetingComponent>(); WeaponComponent weaponComponent = zombie.FirstComponentOfType <WeaponComponent>(); StatSet statSet = zombie.FirstComponentOfType <StatSet>(); if (targetingComponent.HasTarget) { statSet.AddBuff(new Buff("rage", 5f, BuffType.Strength, ModifierType.Modifier, new BuffDuration(2500))); return(true); } return(false); }); skillSet.AddSkill(attack); skillSet.AddSkill(slam); skillSet.AddSkill(meatWall); skillSet.AddSkill(rage); return(skillSet); }