source: 2015/26/MikkoL/JRPG/JRPG/JRPG/Battle/AttackList.cs @ 6401

Revision 6401, 4.0 KB checked in by mijoliim, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6
7public static class AttackList
8{
9    public static AttackBase Attack()
10    {
11        AttackBase Attack = new AttackBase();
12        Attack.Name = "attack";
13        Attack.DMG = 5;
14        Attack.LearnAtLevel = 1;
15
16        Attack.OnUse = delegate {
17            BattleView.CurrentBattleView.SelectSingleEnemyForAttackTarget(AttackList.Attack());
18        };
19
20        return Attack;
21    }
22
23    public static AttackBase Kick()
24    {
25        AttackBase Kick = new AttackBase();
26        Kick.Name = "Kick";
27        Kick.DMG = 5;
28        Kick.LearnAtLevel = 1;
29
30        Kick.OnUse = delegate
31        {
32            BattleView.CurrentBattleView.SelectSingleEnemyForAttackTarget(AttackList.Kick());
33        };
34
35        Kick.Animation = delegate(CharacterBase character, int SelectedEnemy, int TrueDamage, bool Crit)
36        {
37            character.AllyOnScreen.MoveTo(character.AllyOnScreen.Position + new Vector(-50, 0), 400, delegate
38            {
39                character.AllyOnScreen.Animation.Start(1);
40                Timer.SingleShot(0.4,
41                    delegate
42                    {
43                        SoundEffects.Battle.Hit_02.Play();
44
45                        BattleView.CurrentBattleView.HitSplat(SelectedEnemy, TrueDamage, Crit);
46                    });
47
48                Timer.SingleShot(1,
49                    delegate
50                    {
51                        character.AllyOnScreen.MoveTo(character.AllyOnScreen.Position + new Vector(50, 0), 400,
52                            delegate
53                            {
54                                BattleView.CurrentBattleView.IsAttackAnimationPlaying = false;
55                                BattleView.CurrentBattleView.IsTimerActive = true;
56                                   
57                            });
58                    });
59            });
60
61        };
62
63        return Kick;
64    }
65
66    public static AttackBase SpookyAttack()
67    {
68        AttackBase SpookyAttack = new AttackBase();
69        SpookyAttack.DMG = 5;
70
71        SpookyAttack.OnUse = delegate
72        {
73           
74            EnemyBase user = BattleView.CurrentBattleView.Attacker;
75
76            CharacterBase character = BattleView.CurrentBattleView.SelectRandomAlly();
77
78            double BaseDamage = SpookyAttack.BaseDamage(user.Stats.Str, 2);
79            int TrueDamage = BattleAlgorithms.DamageFromBasicAttack(BaseDamage, character.CurrentStats.Def);
80
81            BattleView.CurrentBattleView.IsTimerActive = true;
82
83            user.EnemyOnScreen.MoveTo(user.EnemyOnScreen.Position + new Vector(50, 0), 400, delegate
84            {
85                character.CurrentHP.Value -= TrueDamage;
86                BattleView.CurrentBattleView.HitSplatPlayer(character, TrueDamage);
87
88
89                if (SoundEffects.Battle.Hit_01.IsPlaying)
90                {
91                    SoundEffects.Battle.Hit_01.Stop();
92                }
93                SoundEffects.Battle.Hit_01.Play();
94
95                Timer.SingleShot(0.2,
96                    delegate
97                    {
98                        user.EnemyOnScreen.MoveTo(user.EnemyOnScreen.Position - new Vector(50, 0), 400,
99                            delegate
100                            {
101                                BattleView.CurrentBattleView.Attacker.CanMakeAction = false;
102                                BattleView.CurrentBattleView.IsAttackAnimationPlaying = false;
103                               
104                            });
105                    });
106            });
107        };
108
109        return SpookyAttack;
110    }
111}
112
113public class AttackBase
114{
115    public string Name { get; set; }
116    public int LearnAtLevel { get; set; }
117
118    public int DMG { get; set; }
119    public double BaseDamage(int Str, int Lvl)
120    {
121        return DMG * Lvl + Str;
122    }
123   
124    public int HitPercent = 100;
125
126    public Action OnUse { get; set; }
127    public Action<CharacterBase, int, int, bool> Animation { get; set; }
128}
Note: See TracBrowser for help on using the repository browser.