summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/player.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r--crawl-ref/source/player.cc36
1 files changed, 34 insertions, 2 deletions
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index 4c47f44685..6ac2ef50c9 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -41,7 +41,9 @@
#include "itemname.h"
#include "itemprop.h"
#include "items.h"
+#include "Kills.h"
#include "macro.h"
+#include "message.h"
#include "misc.h"
#include "monstuff.h"
#include "mon-util.h"
@@ -58,7 +60,9 @@
#include "spl-util.h"
#include "spells4.h"
#include "stuff.h"
+#include "terrain.h"
#include "transfor.h"
+#include "traps.h"
#include "travel.h"
#include "tutorial.h"
#include "view.h"
@@ -4769,12 +4773,12 @@ bool rot_player( int amount )
}
-int count_worn_ego( special_armour_type ego )
+int count_worn_ego( int which_ego )
{
int result = 0;
for ( int slot = EQ_CLOAK; slot <= EQ_BODY_ARMOUR; ++slot )
if (you.equip[slot] != -1 &&
- get_armour_ego_type(you.inv[you.equip[slot]]) == ego)
+ get_armour_ego_type(you.inv[you.equip[slot]]) == which_ego)
result++;
return result;
}
@@ -4896,8 +4900,31 @@ actor::~actor()
player::player()
{
init();
+ kills = new KillMaster();
}
+player::player(const player &other)
+{
+ init();
+ *this = other;
+
+ kills = new KillMaster(*(other.kills));
+}
+
+void player::copy_from(const player &other)
+{
+ if (this == &other)
+ return;
+
+ KillMaster *_kills = kills;
+
+ *this = other;
+
+ kills = _kills;
+ *kills = *(other.kills);
+}
+
+
// player struct initialization
void player::init()
{
@@ -5039,6 +5066,11 @@ void player::init()
exp_available = 25;
}
+player::~player()
+{
+ delete kills;
+}
+
bool player::is_valid() const
{
// Check if there's a name.