*.bz2
*.tar
*.mk
+pobj_id.hh
+pmon_id.hh
obumbrata
obumbrata-*
COMMON_CFLAGS:=-Wall -Wwrite-strings -Wunreachable-code -Wformat -Werror=format-security -fstack-protector --param=ssp-buffer-size=4 -DMAJVERS=$(MAJVERS) -DMINVERS=$(MINVERS) -DPATCHVERS=$(PATCHVERS)-std=gnu11 -D_FORTIFY_SOURCE=2 -I$(srcdir)
COMMON_CXXFLAGS:=-Wall -Wwrite-strings -Wno-unused-but-set-variable -Wredundant-decls -Wunreachable-code -Wformat -Werror=format-security -fstack-protector --param=ssp-buffer-size=4 -DMAJVERS=$(MAJVERS) -DMINVERS=$(MINVERS) -DPATCHVERS=$(PATCHVERS) -std=gnu++11 -D_FORTIFY_SOURCE=2 -I$(srcdir)
PRODUCTION_CFLAGS:=$(COMMON_CFLAGS)
-DEVELOPMENT_CFLAGS:=$(COMMON_CFLAGS) -O2 -g -Werror
+DEVELOPMENT_CFLAGS:=$(COMMON_CFLAGS) -g -O2 -Werror
PRODUCTION_CXXFLAGS:=$(COMMON_CXXFLAGS)
-DEVELOPMENT_CXXFLAGS:=$(COMMON_CXXFLAGS) -O2 -g -Werror
+DEVELOPMENT_CXXFLAGS:=$(COMMON_CXXFLAGS) -g -O2 -Werror
LIBS=-lpanelw -lncursesw -lxdg-basedir -lm
ARCHIVEDIR:=$(GAME)-$(MAJVERS).$(MINVERS).$(PATCHVERS)
ARCHIVENAME:=$(GAME)_$(MAJVERS).$(MINVERS).$(PATCHVERS)
}
else
{
+ Obj const *optr = obj_snap(u.inventory[i]);
if ((filter == POCLASS_NONE) ||
- (permobjs[objects[u.inventory[i]].po_ref].poclass == filter))
+ (permobjs[optr->po_ref].poclass == filter))
{
wattr_set(inventory_window, colour_data[Gcol_l_grey].attr, colour_data[Gcol_l_grey].cpair, nullptr);
}
static inline void deserialize_uint32(FILE *fp, uint32_t *i)
{
- wrapped_fread(&i, 1, sizeof i, fp);
+ wrapped_fread(i, 1, sizeof *i, fp);
*i = ntohl(*i);
}
{
for (auto iter = objects.begin(); iter != objects.end(); ++iter)
{
- if (iter->second.flags & OF_USED)
+ if ((iter->second.flags & OF_USED) && !(iter->second.flags & OF_WITH_YOU))
{
lvl.set_obj_at(iter->second.pos, iter->first);
}
if (mon != NO_MON)
{
Mon m;
+ m.self = mon;
m.pm_ref = pm_idx;
m.flags = MF_USED | MF_ALIVE;
m.pos = c;
inline Mon *mon_snapv(Mon_handle mon)
{
auto iter = monsters.find(mon);
- return ((iter == monsters.end()) ? &(iter->second) : nullptr);
+ return ((iter == monsters.end()) ? nullptr : &(iter->second));
}
inline Mon const *mon_snap(Mon_handle mon)
{
auto iter = monsters.find(mon);
- return ((iter == monsters.end()) ? &(iter->second) : nullptr);
+ return ((iter == monsters.end()) ? nullptr : &(iter->second));
}
#define PLAYER_MON (-2)
}
}
Obj o;
+ o.self = obj;
o.po_ref = po_idx;
o.flags = OF_USED | (with_you ? OF_WITH_YOU : 0);
o.pos = c;
default:
break;
}
+ objects[obj] = o;
if (!(o.flags & OF_WITH_YOU))
{
lvl.set_obj_at(c, obj);
inline Obj *obj_snapv(Obj_handle obj)
{
auto iter = objects.find(obj);
- return ((iter == objects.end()) ? &(iter->second) : nullptr);
+ return ((iter == objects.end()) ? nullptr : &(iter->second));
}
inline Obj const *obj_snap(Obj_handle obj)
{
auto iter = objects.find(obj);
- return ((iter == objects.end()) ? &(iter->second) : nullptr);
+ return ((iter == objects.end()) ? nullptr : &(iter->second));
}
Action_cost drop_obj(int inv_idx);
+++ /dev/null
-// pmon_id.hh
-// This file is autogenerated from default.permons
-// and is subject to the same copyright licensing terms as that file.
-// Do not edit this file directly; edit default.permons
-// then use pmon_comp to regenerate this file and permons.cc
-#pragma once
-enum Pmon_id {
- PM_NEWT,
- PM_RAT,
- PM_WOLF,
- PM_SNAKE,
- PM_THUG,
- PM_GOON,
- PM_HUNTER,
- PM_DUELLIST,
- PM_WARLORD,
- PM_GOBLIN,
- PM_BAD_ELF,
- PM_TROLL,
- PM_GIANT,
- PM_GIANT_JARL,
- PM_WIZARD,
- PM_ARCHMAGE,
- PM_ZOMBIE,
- PM_WRAITH,
- PM_LICH,
- PM_MASTER_LICH,
- PM_VAMPIRE,
- PM_FIRE_IMP,
- PM_DEMON,
- PM_DEFILER,
- PM_PUTRID_EMISSARY,
- PM_TORMENTOR,
- PM_IRON_LORD,
- PM_CENTAUR,
- PM_ICE_MONSTER,
- PM_DRAGON,
- PM_MOONDRAKE};
-
-#define NUM_OF_PERMONS 31
-
-// pmon_id.hh
+++ /dev/null
-// pobj_id.hh
-// This file is autogenerated from default.permobjs
-// and is subject to the same copyright licensing terms as that file.
-// Do not edit this file directly; edit default.permobjs
-// then use pobj_comp to regenerate this file and permobj.cc
-#pragma once
-enum Pobj_id {
- PO_DAGGER,
- PO_LONG_SWORD,
- PO_MACE,
- PO_RUNESWORD,
- PO_HELLGLAIVE,
- PO_PLAGUE_SCYTHE,
- PO_TORMENTORS_LASH,
- PO_DEATH_STAFF,
- PO_STAFF_OF_FIRE,
- PO_BOW,
- PO_CROSSBOW,
- PO_THUNDERBOW,
- PO_LEATHER_ARMOUR,
- PO_CHAINMAIL,
- PO_PLATE_ARMOUR,
- PO_MAGE_ARMOUR,
- PO_MUNDANE_ROBE,
- PO_ROBE_OF_SWIFTNESS,
- PO_ROBE_OF_SHADOWS,
- PO_DRAGONHIDE_ARMOUR,
- PO_METEORIC_PLATE_ARMOUR,
- PO_SACRED_CHAINMAIL,
- PO_RAGGED_SHIFT,
- PO_BATTLE_BALLGOWN,
- PO_IMPERATRIX_GOWN,
- PO_FOETID_VESTMENTS,
- PO_LICHS_ROBE,
- PO_INFERNITE_ARMOUR,
- PO_IRON_RATION,
- PO_PARCEL_OF_DRIED_FRUIT,
- PO_ROUND_OF_ELVEN_WAYBREAD,
- PO_DEVIL_SPLEEN,
- PO_TELEPORT_SCROLL,
- PO_FIRE_SCROLL,
- PO_PROTECTION_SCROLL,
- PO_HEALING_POTION,
- PO_BODY_POTION,
- PO_AGILITY_POTION,
- PO_RESTORATION_POTION,
- PO_REGENERATION_RING,
- PO_FIRE_RING,
- PO_VAMPIRE_RING,
- PO_FROST_RING,
- PO_TELEPORT_RING,
- PO_SLIME_RING,
- PO_PROTECTION_RING,
- PO_IMPERIAL_SEAL,
- PO_CORPSE};
-#define PO_FIRST_WEAPON PO_DAGGER
-#define PO_LAST_WEAPON PO_THUNDERBOW
-#define PO_FIRST_ARMOUR PO_LEATHER_ARMOUR
-#define PO_LAST_ARMOUR PO_INFERNITE_ARMOUR
-#define PO_FIRST_FOOD PO_IRON_RATION
-#define PO_LAST_FOOD PO_DEVIL_SPLEEN
-#define PO_FIRST_SCROLL PO_TELEPORT_SCROLL
-#define PO_LAST_SCROLL PO_PROTECTION_SCROLL
-#define PO_FIRST_POTION PO_HEALING_POTION
-#define PO_LAST_POTION PO_RESTORATION_POTION
-#define PO_FIRST_RING PO_REGENERATION_RING
-#define PO_LAST_RING PO_IMPERIAL_SEAL
-#define PO_FIRST_CARRION PO_CORPSE
-#define PO_LAST_CARRION PO_CORPSE
-
-#define NUM_OF_PERMOBJS 48
-
-// pobj_id.hh
u.experience = 0;
u.level = 1;
u.food = 2000;
- memset(u.inventory, -1, sizeof u.inventory);
+ for (int i = 0; i < 19; ++i)
+ {
+ u.inventory[i] = NO_OBJ;
+ }
u.inventory[0] = create_obj(PO_DAGGER, 1, true, Nowhere);
u.inventory[1] = create_obj(PO_IRON_RATION, 1, true, Nowhere);
u.inventory[2] = create_obj(PO_BATTLE_BALLGOWN, 1, true, Nowhere);
}
else
{
- return player_wield(slot, Noise_std);
+ return player_wield(u.inventory[slot], Noise_std);
}
break;
case WEAR_ARMOUR:
slot = act->details[0];
- return wear_armour(slot);
+ return wear_armour(u.inventory[slot]);
case EMANATE_ARMOUR:
if (u.armour == NO_OBJ)