static void __drawmondie(struct monster_obj_private *mop) { int16_t sprid; sprid = FIRSTMONSTER + mop->m_id; monster_obj_updspr(mop); drawspr(sprid, mop->pos.x, mop->pos.y); }
static int monster_obj_mutate(struct monster_obj *self) { struct monster_obj_private *mop; mop = self->priv; mop->nobf = (mop->nobf ? 0 : 1); monster_obj_updspr(mop); drawspr(FIRSTMONSTER + mop->m_id, mop->pos.x, mop->pos.y); return (0); }
void drawdigger(int n,int16_t t,int16_t x,int16_t y,bool f) { int nn=(n==0) ? 0 : 31; digspr[n]+=digspd[n]; if (digspr[n]==2 || digspr[n]==0) digspd[n]=-digspd[n]; if (digspr[n]>2) digspr[n]=2; if (digspr[n]<0) digspr[n]=0; if (t>=0 && t<=6 && !(t&1)) { initspr(FIRSTDIGGER+n,(t+(f ? 0 : 1))*3+digspr[n]+1+nn,4,15,0,0); drawspr(FIRSTDIGGER+n,x,y); return; } if (t>=10 && t<=15) { initspr(FIRSTDIGGER+n,40+nn-t,4,15,0,0); drawspr(FIRSTDIGGER+n,x,y); return; } first[0]=first[1]=first[2]=first[3]=first[4]=-1; }
void drawfire(int n,int16_t x,int16_t y,int16_t t) { int nn=(n==0) ? 0 : 32; if (t==0) { firespr[n]++; if (firespr[n]>2) firespr[n]=0; initspr(FIRSTFIREBALL+n,82+firespr[n]+nn,2,8,0,0); } else initspr(FIRSTFIREBALL+n,84+t+nn,2,8,0,0); drawspr(FIRSTFIREBALL+n,x,y); }
void drawmondie(int16_t n,bool nobf,int16_t dir,int16_t x,int16_t y) { if (nobf) initspr(FIRSTMONSTER+n,72,4,15,0,0); else switch(dir) { case DIR_RIGHT: initspr(FIRSTMONSTER+n,76,4,15,0,0); break; case DIR_LEFT: initspr(FIRSTMONSTER+n,80,4,14,0,0); } drawspr(FIRSTMONSTER+n,x,y); }
static void __drawmon(struct monster_obj_private *mop) { int16_t sprid; sprid = FIRSTMONSTER + mop->m_id; mop->monspr += mop->monspd; if (mop->monspr == 2 || mop->monspr == 0) mop->monspd = -(mop->monspd); if (mop->monspr > 2) mop->monspr = 2; if (mop->monspr < 0) mop->monspr = 0; monster_obj_updspr(mop); drawspr(sprid, mop->pos.x, mop->pos.y); }
static int monster_obj_damage(struct monster_obj *self) { struct monster_obj_private *mop; mop = self->priv; if (!mop->alive) { /* We can only damage live thing or try to damage zombie */ assert(mop->zombie); } mop->zombie = true; mop->alive = false; monster_obj_updspr(mop); drawspr(FIRSTMONSTER + mop->m_id, mop->pos.x, mop->pos.y); return (0); }
void drawmon(int16_t n,bool nobf,int16_t dir,int16_t x,int16_t y) { monspr[n]+=monspd[n]; if (monspr[n]==2 || monspr[n]==0) monspd[n]=-monspd[n]; if (monspr[n]>2) monspr[n]=2; if (monspr[n]<0) monspr[n]=0; if (nobf) initspr(FIRSTMONSTER+n,monspr[n]+69,4,15,0,0); else switch (dir) { case DIR_RIGHT: initspr(FIRSTMONSTER+n,monspr[n]+73,4,15,0,0); break; case DIR_LEFT: initspr(FIRSTMONSTER+n,monspr[n]+77,4,15,0,0); } drawspr(FIRSTMONSTER+n,x,y); }
void drawgold(int16_t n,int16_t t,int16_t x,int16_t y) { initspr(FIRSTBAG+n,t+62,4,15,0,0); drawspr(FIRSTBAG+n,x,y); }