summaryrefslogtreecommitdiff
path: root/DiscoBot/Char.cs
blob: 28ed7b95a17684de1f12753cdbae32e9c3b887c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace DiscoBot
{
    public class Char
    {

        string name;
        public Dictionary<string, int> eigenschaften = new Dictionary<string, int>();
        public List<Talent> talente = new List<Talent>();
        public List<Kampf> kampftalente = new List<Kampf>();

        public Dictionary<string, string> Proptable = new Dictionary<string, string>();


        public Char(String path = "Felis.xml")
        {

            Load(path);
        }

        private void Load(string path)
        {
            XmlTextReader reader = new XmlTextReader(path);
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                    switch (reader.Name)
                    {
                        case "held":
                            name = reader.GetAttribute("name");
                            break;
                        case "eigenschaft":
                            eigenschaften.Add(reader.GetAttribute("name"), Convert.ToInt32(reader.GetAttribute("value")) + Convert.ToInt32(reader.GetAttribute("mod")));
                            break;
                        case "talentliste":
                            reader.Read();
                            while (reader.Name.Equals("talent"))
                            {
                                talente.Add(new Talent(reader.GetAttribute("name"), reader.GetAttribute("probe").Remove(0, 2).Trim(')'), Convert.ToInt32(reader.GetAttribute("value"))));
                                reader.Read();
                            }
                            break;
                        case "kampfwerte":
                            string atname = reader.GetAttribute("name");
                            reader.Read();
                            int at = Convert.ToInt32(reader.GetAttribute("value"));
                            reader.Read();
                            int pa = Convert.ToInt32(reader.GetAttribute("value"));
                            kampftalente.Add(new Kampf(atname, at, pa));
                            break;
                    }



            }
            Proptable.Add("MU", "Mut");
            Proptable.Add("KL", "Klugheit");
            Proptable.Add("IN", "Intuition");
            Proptable.Add("CH", "Charisma");
            Proptable.Add("FF", "Fingerfertigkeit");
            Proptable.Add("GE", "Gewandtheit");
            Proptable.Add("KO", "Konstitution");
            Proptable.Add("KK", "Körperkraft");

        }
        public string TestTalent(string talent)
        {
            var output = new StringBuilder();
            var ttalent = talente.Find(v => v.name.Equals(talent));
            var props =ttalent.Test();
            int tap = ttalent.value;
            for (int i = 0; i <= 2; i++)
            {
                int temp = dice.Rolld20();
                int eigenschaft = eigenschaften[Proptable[props[i]]];
                if (eigenschaft < temp)
                    tap -= temp - eigenschaft ;
                output.Append(temp+" ");
            }
            output.Append("tap: "+ tap);
            return output.ToString();
        }

    }
    public class Talent
    {
        public string name, probe;
        public int value;
        public Talent(string name, string probe, int value) { this.name = name; this.probe = probe; this.value = value; }
        public string[] Test()
        {
            var temp = probe.Split('/');
            foreach (string s in temp)
                s.Replace("/", "");
            return temp;
        }

    }
    public class Kampf
    {
        string name;
        private int at, pa;
        public Kampf(string name, int at, int pa) { this.name = name; this.at = at; this.pa = pa; }
        void Test() { }
    }
    public static class dice
    {
        static System.Random rnd = new System.Random();
        public static int Rolld20()
        {
            return rnd.Next(1,21) ;
        }
    }
}