Ticket #536: wakedelay.1036.patch

File wakedelay.1036.patch, 3.5 KB (added by d_m, 11 years ago)

patch to delay monsters that just woke up

  • src/attack.c

     
    436436 
    437437 
    438438        /* Disturb the monster */ 
    439         m_ptr->csleep = 0; 
     439        wake_monster(m_ptr); 
    440440 
    441441 
    442442        /* Extract monster name (or "it") */ 
  • src/spells1.c

     
    26302630                        if (seen) obvious = TRUE; 
    26312631 
    26322632                        /* Wake up */ 
    2633                         m_ptr->csleep = 0; 
     2633                        wake_monster(m_ptr); 
    26342634 
    26352635                        /* Heal */ 
    26362636                        m_ptr->hp += dam; 
     
    32483248                if (p_ptr->health_who == cave_m_idx[y][x]) p_ptr->redraw |= (PR_HEALTH); 
    32493249 
    32503250                /* Wake the monster up */ 
    3251                 m_ptr->csleep = 0; 
     3251                wake_monster(m_ptr); 
    32523252 
    32533253                /* Hurt the monster */ 
    32543254                m_ptr->hp -= dam; 
  • src/monster/melee2.c

     
    31433143 
    31443144        int mm[5]; 
    31453145 
     3146        bool woke_up = FALSE; 
    31463147        bool stagger; 
    31473148 
    31483149        bool do_turn; 
     
    31683169                if (p_ptr->state.aggravate) 
    31693170                { 
    31703171                        /* Reset sleep counter */ 
    3171                         m_ptr->csleep = 0; 
     3172                        woke_up = wake_monster(m_ptr); 
    31723173 
    31733174                        /* Notice the "waking up" */ 
    31743175                        if (m_ptr->ml) 
     
    32213222                        else 
    32223223                        { 
    32233224                                /* Reset sleep counter */ 
    3224                                 m_ptr->csleep = 0; 
     3225                                woke_up = wake_monster(m_ptr); 
    32253226 
    32263227                                /* Notice the "waking up" */ 
    32273228                                if (m_ptr->ml) 
     
    32503251                if (m_ptr->csleep) return; 
    32513252        } 
    32523253 
     3254        /* If the monster just woke up, then it doesn't act */ 
     3255        if(woke_up) return; 
    32533256 
    32543257        /* Handle "stun" */ 
    32553258        if (m_ptr->stunned) 
  • src/monster/monster2.c

     
    28162816} 
    28172817 
    28182818 
     2819/* 
     2820 * If the monster is asleep, then wake it up. Otherwise, do nothing. 
     2821 * Returns TRUE if the monster just woke up, or FALSE if it was already awake. 
     2822 */ 
     2823bool wake_monster(monster_type *m_ptr) 
     2824{ 
     2825        if(m_ptr->csleep <= 0) return FALSE; 
     2826        m_ptr->csleep = 0; 
     2827        return TRUE; 
     2828} 
    28192829 
    28202830 
    28212831/* 
     
    28552865        /* Redraw (later) if needed */ 
    28562866        if (p_ptr->health_who == m_idx) p_ptr->redraw |= (PR_HEALTH); 
    28572867 
    2858  
    28592868        /* Wake it up */ 
    2860         m_ptr->csleep = 0; 
     2869        wake_monster(m_ptr); 
    28612870 
    28622871        /* Hurt it */ 
    28632872        m_ptr->hp -= dam; 
  • src/spells2.c

     
    22012201                        if (m_ptr->csleep) 
    22022202                        { 
    22032203                                /* Wake up */ 
    2204                                 m_ptr->csleep = 0; 
     2204                                wake_monster(m_ptr); 
    22052205                                sleep = TRUE; 
    22062206                        } 
    22072207                } 
     
    27412741                                        damage = (sn ? damroll(4, 8) : (m_ptr->hp + 1)); 
    27422742 
    27432743                                        /* Monster is certainly awake */ 
    2744                                         m_ptr->csleep = 0; 
     2744                                        wake_monster(m_ptr); 
    27452745 
    27462746                                        /* Apply damage directly */ 
    27472747                                        m_ptr->hp -= damage; 
     
    29172917                        if (m_ptr->csleep && (randint0(100) < chance)) 
    29182918                        { 
    29192919                                /* Wake up! */ 
    2920                                 m_ptr->csleep = 0; 
     2920                                wake_monster(m_ptr); 
    29212921 
    29222922                                /* Notice the "waking up" */ 
    29232923                                if (m_ptr->ml) 
  • src/externs.h

     
    398398extern void display_roff(int r_idx); 
    399399 
    400400/* monster2.c */ 
     401extern bool wake_monster(monster_type *m_ptr); 
    401402extern void delete_monster_idx(int i); 
    402403extern void delete_monster(int y, int x); 
    403404extern void compact_monsters(int size);