This commit is contained in:
jl777
2019-03-06 01:18:07 -11:00
parent 8ce1f9dea1
commit d3e077180d
4 changed files with 43 additions and 39 deletions

View File

@@ -25,7 +25,6 @@ command(struct rogue_state *rs)
char *fp; char *fp;
THING *mp; THING *mp;
static char countch, direction, newcount = FALSE; static char countch, direction, newcount = FALSE;
num_packitems(rs);
if (on(player, ISHASTE)) if (on(player, ISHASTE))
ntimes++; ntimes++;
/* /*

View File

@@ -290,27 +290,31 @@ attack(struct rogue_state *rs,THING *mp)
} }
when 'N': when 'N':
{ {
register THING *obj, *steal; register THING *obj, *steal;
register int nobj; register int nobj;
/*
* Nymph's steal a magic item, look through the pack
* and pick out one we like.
*/
steal = NULL;
for (nobj = 0, obj = pack; obj != NULL; obj = next(obj))
if (obj != cur_armor && obj != cur_weapon
&& obj != cur_ring[LEFT] && obj != cur_ring[RIGHT]
&& is_magic(obj) && rnd(++nobj) == 0)
steal = obj;
if (steal != NULL)
{
remove_mon(rs,&mp->t_pos, moat(mp->t_pos.y, mp->t_pos.x), FALSE);
mp=NULL;
fprintf(stderr,"%d: (%c) hp.%d num.%d\n",counter,c,pstats.s_hpt,num_packitems(rs););
/* leave_pack(rs,steal, FALSE, FALSE);
* Nymph's steal a magic item, look through the pack msg(rs,"she stole %s!", inv_name(steal, TRUE));
* and pick out one we like. fprintf(stderr,"%d: (%c) hp.%d num.%d\n",counter,c,pstats.s_hpt,num_packitems(rs););
*/ discard(steal);
steal = NULL; fprintf(stderr,"%d: (%c) hp.%d num.%d\n",counter,c,pstats.s_hpt,num_packitems(rs););
for (nobj = 0, obj = pack; obj != NULL; obj = next(obj)) }
if (obj != cur_armor && obj != cur_weapon
&& obj != cur_ring[LEFT] && obj != cur_ring[RIGHT]
&& is_magic(obj) && rnd(++nobj) == 0)
steal = obj;
if (steal != NULL)
{
remove_mon(rs,&mp->t_pos, moat(mp->t_pos.y, mp->t_pos.x), FALSE);
mp=NULL;
leave_pack(rs,steal, FALSE, FALSE);
msg(rs,"she stole %s!", inv_name(steal, TRUE));
discard(steal);
}
} }
otherwise: otherwise:
break; break;

View File

@@ -160,14 +160,14 @@ readchar(struct rogue_state *rs)
if ( rs->ind < rs->numkeys ) if ( rs->ind < rs->numkeys )
{ {
c = rs->keystrokes[rs->ind++]; c = rs->keystrokes[rs->ind++];
if ( 0 ) if ( 1 )
{ {
static FILE *fp; static int32_t counter; static FILE *fp; static int32_t counter;
if ( fp == 0 ) if ( fp == 0 )
fp = fopen("log","wb"); fp = fopen("log","wb");
if ( fp != 0 ) if ( fp != 0 )
{ {
fprintf(fp,"%d: (%c) hp.%d\n",counter,c,pstats.s_hpt); fprintf(fp,"%d: (%c) hp.%d num.%d\n",counter,c,pstats.s_hpt,num_packitems(rs););
fflush(fp); fflush(fp);
counter++; counter++;
} }

View File

@@ -167,6 +167,7 @@ int32_t num_packitems(struct rogue_state *rs)
{ {
fprintf(stderr,"num_packitems cant find %p\n",list); fprintf(stderr,"num_packitems cant find %p\n",list);
sleep(3); sleep(3);
return(-1);
} }
if ( list->o_packch != 0 ) if ( list->o_packch != 0 )
{ {
@@ -224,29 +225,29 @@ THING *
leave_pack(struct rogue_state *rs,THING *obj, bool newobj, bool all) leave_pack(struct rogue_state *rs,THING *obj, bool newobj, bool all)
{ {
THING *nobj; THING *nobj;
inpack--; inpack--;
nobj = obj; nobj = obj;
if (obj->o_count > 1 && !all) if (obj->o_count > 1 && !all)
{ {
last_pick = obj; last_pick = obj;
obj->o_count--; obj->o_count--;
if (obj->o_group) if (obj->o_group)
inpack++; inpack++;
if (newobj) if (newobj)
{ {
nobj = new_item(); nobj = new_item();
*nobj = *obj; *nobj = *obj;
next(nobj) = NULL; next(nobj) = NULL;
prev(nobj) = NULL; prev(nobj) = NULL;
nobj->o_count = 1; nobj->o_count = 1;
} }
} }
else else
{ {
last_pick = NULL; last_pick = NULL;
pack_used[obj->o_packch - 'a'] = FALSE; pack_used[obj->o_packch - 'a'] = FALSE;
detach(pack, obj); detach(pack, obj);
} }
return nobj; return nobj;
} }