-
Notifications
You must be signed in to change notification settings - Fork 0
/
stat_calculator.as
120 lines (107 loc) · 3.2 KB
/
stat_calculator.as
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
class stat_calculator{
static var baseHealth = 20;
static var healthRaceModifier = new Array(
'÷åëîâåê', 0,
'ýëüô', 2,
'ãíîì', -3
);
static var heatlhGenderModifier = new Array(
'ì', 0,
'æ', -3
);
static function baseHP (who):Number{
return summ( who, new Array(
'áàçîâîå ÎÇ',
'áàçà', baseHealth,
'ðàñà', select (healthRaceModifier, stat_engine.getStatValue(who, 'ðàñà')[0]),
//'òåëîñëîæåíèå', stat_engine.getStatValue(who, 'òåëîñëîæåíèå')[0],
'ïîë', select (heatlhGenderModifier, stat_engine.getStatValue(who, 'ïîë')[0])));
}
static function maxHP (who):Number{
return summ( who, new Array(
'ìàêñèìàëüíîå ÎÇ',
'áàçîâîå ÎÇ', stat_engine.getStatValue(who, 'áàçîâîå ÎÇ')[0],
'òåëîñëîæåíèå', stat_engine.getStatValue(who, 'òåëîñëîæåíèå')[0]));
// ++ items
}
static function curHP (who):Number{
return summ( who, new Array(
'ÎÇ',
'ìàêñèìàëüíîå ÎÇ', stat_engine.getStatValue(who, 'ìàêñèìàëüíîå ÎÇ')[0]));
}
static function select (from, wh){
for (var i = 0; i < from.length; i += 2)
if (from[i] == wh)
return from[i+1];
return undefined;
}
static function summ(who, params:Array):Number{
var res = 0;
var str = "";
for (var i = 2; i < params.length; i+=2)
if (params[i] != undefined)
{
//check the same
var existStat = showStat(who, params[i - 1]);
res += params[i];
if (existStat != undefined){
str += '+' + params[i] + " " + params[i - 1] +"\n\t" + replace(existStat, '\n', '\n\t')+"\n"; continue;
}
//
if (params[i] == 0) continue;
str += ((str != "")?'\n':'') + ((params[i] > 0)? ("+" + params[i]+' '):(params[i]+' '));
str += " " + params[i-1];
}
addInfo(who, params[0], str);
return res;
}
static function showStat(who, statName):String{
for (var j = 0; j < who.calculation_info.length; j += 2)
if (who.calculation_info[j] == statName)
return who.calculation_info[j+1];
return who.name + ":" + statName + ' çàäàíî èçâíå.';
}
// static function findStatDescription(who, statName):String{
////trace(who.calculation_info);
// var d;
// var stN;
// var dSp;
// var res = "";
// var foundAny:Boolean = false;
// for (var i = 1; i < who.calculation_info.length; i+=2){
// stN = who.calculation_info[i - 1];
// d = who.calculation_info[i];
// if (stN != statName) continue;
//// trace("name: " + stN + '\ndescr: ' + );
// dSp = d.split('\n');
// foundAny = true;
// for (var i = 0; i < dSp.length; ++i)if (dSp[i] != ''){
// var adS = findStatDescription(who, dSp);
// var dpsisp = dSp[i].split(' ').splice(2).join(' ');
// var res_add = 'ok';
// var res_add = findStatDescription(who, dpsisp);
// if (res_add == undefined)
// res += dSp[i].substring(0, dSp[i].indexOf(' ')) + ' áàçà';
// else
// res += res_add;
// res += "\n";
// }
// }
// if (!foundAny)
// return undefined;
// return res;
// }
static function addInfo (who, statName, statCalculation){
who.calculation_info.push(statName);
who.calculation_info.push(statCalculation);
}
static function replace (S, c1, c2){
var res = "";
for (var i = 0; i < S.length; ++i)
if (S.charAt(i) == c1)
res += c2;
else
res += S.charAt(i);
return res;
}
}