-
Notifications
You must be signed in to change notification settings - Fork 1
/
ProjectileItem.cpp
128 lines (107 loc) · 3.22 KB
/
ProjectileItem.cpp
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
121
122
123
124
125
126
127
128
// --------------------------------------------------------------------------------------------------------------------------------
// DEMISERL
// Copyright 2014 Corremn
//
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
// $HeadURL: $
// --------------------------------------------------------------------------------------------------------------------------------
#include ".\projectileitem.h"
#include "numberGenerator.h"
#include <string>
using namespace Random;
ProjectileItem::ProjectileItem(void) : Item()
{
wearable(true);
}
int ProjectileItem::CreateItem(eItemType _type, int level, int secondary_type)
{
type = _type;
secondaryType = secondary_type;
wearable(true);
switch (type)
{
case projectile: return createProjectile(level, secondaryType); break;
case projectileWeapon: return createProjectileWeapon(level, secondaryType); break;
default: throw std::exception("incorrect type given to prjectile item");
}
return 0;
}
int ProjectileItem::createProjectile(int level, int secondary_type)
{
secondaryType = secondary_type;
if (secondaryType == 0) // choose random
secondaryType = getInt(bolt + 1, arrow);
switch (secondaryType)
{
case arrow: symbol = '\\';
name = "arrow";
weight = 1;
setColor(128, 64, 0);
//SetDice_thr(1, 6);
itemNumber[0] = bowArrow;
break;
case bolt: symbol = '\\';
name = "bolt";
weight = 2;
setColor(100, 100, 100);
//SetDice_thr(1, 6);
itemNumber[0] = crossbowBolts;
break;
case silver: symbol = '\\';
name = ("silver arrow");
weight = 1;
setColor(99, 177, 177);
//SetDice_thr(1, 6);
itemNumber[0] = bowArrow;
break;
}
skill_bonus = getInt(100, level);
if (skill_bonus > 90 && level != 0) skill_bonus = 2;
else if (skill_bonus > 70) skill_bonus = 1;
else skill_bonus = 0;
stackable(true);
itemNumber[1] = 1;
AddBrand(0);
return 0;
}
int ProjectileItem::createProjectileWeapon(int level, int secondary_type)
{
if (secondary_type == 0) //choose random
secondary_type = getInt(4, 1);
switch (secondary_type)
{
case bow: symbol = '{';
name = ("short bow");
identified = 0;
weight = 100;
setColor(200, 100, 0);
SetDice_thr(4, 6);
itemNumber[0] = bowArrow;
break;
case longbow: symbol = '{';
name = ("long bow");
identified = 0;
weight = 100;
setColor(128, 64, 0);
itemNumber[0] = bowArrow;
SetDice_thr(5, 8);
break;
case crossbow: symbol = '}';
name = ("crossbow");
identified = 0;
weight = 100;
setColor(100, 100, 100);
itemNumber[0] = crossbowBolts;
SetDice_thr(6, 5);
break;
}
skill_bonus = getInt(100, 0);
if (skill_bonus > 90 && level != 0)
skill_bonus = 2;
else if (skill_bonus > 70)
skill_bonus = 1;
else skill_bonus = 0;
return 0;
}