Changeset 202 for trunk

Show
Ignore:
Timestamp:
11/19/08 13:45:54 (17 years ago)
Author:
yumileroy
Message:

[svn] Fix a bug that event_ai mobs do not attack or cast.

Original author: megamage
Date: 2008-11-09 10:00:15-06:00

Location:
trunk/src/bindings/scripts
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/bindings/scripts/include/sc_creature.h

    r174 r202  
    2626struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI 
    2727{ 
    28     ScriptedAI(Creature* creature) : m_creature(creature), InCombat(false) {} 
     28    ScriptedAI(Creature* creature) : m_creature(creature), InCombat(false), IsFleeing(false) {} 
    2929    ~ScriptedAI() {} 
    3030 
  • trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp

    r186 r202  
    12411241            return; 
    12421242 
    1243         if ((TimetoFleeLeft < diff || (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE && m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != FLEEING_MOTION_TYPE)) && IsFleeing) 
    1244         { 
    1245             m_creature->GetMotionMaster()->Clear(false); 
    1246             m_creature->SetNoCallAssistence(false); 
    1247             m_creature->CallAssistence(); 
    1248             m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); 
    1249             IsFleeing = false; 
    1250         } 
    1251         else 
    1252             TimetoFleeLeft -= diff; 
    1253  
    1254         if(IsFleeing) 
     1243        if (IsFleeing) 
     1244        { 
     1245            if(TimetoFleeLeft < diff  
     1246                || m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE  
     1247                && m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != FLEEING_MOTION_TYPE) 
     1248            { 
     1249                m_creature->GetMotionMaster()->Clear(false); 
     1250                m_creature->SetNoCallAssistence(false); 
     1251                m_creature->CallAssistence(); 
     1252                if(m_creature->getVictim()) 
     1253                    m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); 
     1254                IsFleeing = false; 
     1255            } 
     1256            else 
     1257                TimetoFleeLeft -= diff; 
     1258 
    12551259            return; 
     1260        } 
    12561261 
    12571262        //Events are only updated once every EVENT_UPDATE_TIME ms to prevent lag with large amount of events 
     
    12751280                    } 
    12761281                } 
    1277                 } 
     1282            } 
    12781283 
    12791284            //Check for time based events 
     
    12821287                //Decrement Timers 
    12831288                if ((*i).Time) 
    1284  
    12851289                { 
    12861290                    if ((*i).Time > EventDiff) 
    12871291                    { 
    1288                          //Do not decrement timers if event cannot trigger in this phase 
     1292                        //Do not decrement timers if event cannot trigger in this phase 
    12891293                        if (!((*i).Event.event_inverse_phase_mask & (1 << Phase))) 
    12901294                            (*i).Time -= EventDiff; 
     
    13081312                    case EVENT_T_FRIENDLY_HP: 
    13091313                        if( Combat ) 
    1310                                 ProcessEvent(*i); 
     1314                            ProcessEvent(*i); 
    13111315                        break; 
    1312                     } 
     1316                } 
    13131317            } 
    13141318 
    13151319            EventDiff = 0; 
    13161320            EventUpdateTime = EVENT_UPDATE_TIME; 
    1317         }else 
     1321        } 
     1322        else 
    13181323        { 
    13191324            EventDiff += diff; 
     
    13241329        if (Combat && MeleeEnabled) 
    13251330            DoMeleeAttackIfReady(); 
    1326  
    13271331    } 
    13281332}; 
  • trunk/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp

    r90 r202  
    482482            return; 
    483483 
    484         boss_hexlord_addAI::UpdateAI(diff); 
    485  
    486484        if(bloodlust_timer < diff) 
    487485        { 
     
    500498            cleave_timer = 12000; //3 sec cast 
    501499        }else cleave_timer -= diff; 
     500 
     501        boss_hexlord_addAI::UpdateAI(diff); 
    502502    } 
    503503}; 
     
    549549        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    550550            return; 
    551  
    552         boss_hexlord_addAI::UpdateAI(diff); 
    553  
    554551 
    555552        if(flashheal_timer < diff) 
     
    593590        dispelmagic_timer = 12000; 
    594591        }else dispelmagic_timer -= diff;*/ 
     592 
     593        boss_hexlord_addAI::UpdateAI(diff); 
    595594    } 
    596595}; 
     
    635634        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    636635            return; 
    637  
    638         boss_hexlord_addAI::UpdateAI(diff); 
    639636 
    640637        if(firebolt_timer < diff) 
     
    643640            firebolt_timer = 700; 
    644641        }else firebolt_timer -= diff; 
     642 
     643        boss_hexlord_addAI::UpdateAI(diff); 
    645644    } 
    646645}; 
     
    668667        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    669668            return; 
    670  
    671         boss_hexlord_addAI::UpdateAI(diff); 
    672669 
    673670        if (thunderclap_timer < diff) 
     
    682679            flamebreath_timer = 12000; 
    683680        }else flamebreath_timer -= diff; 
     681 
     682        boss_hexlord_addAI::UpdateAI(diff); 
    684683    } 
    685684}; 
     
    704703        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    705704            return; 
    706  
    707         boss_hexlord_addAI::UpdateAI(diff); 
    708705 
    709706        if (psychicwail_timer < diff) 
     
    712709            psychicwail_timer = 12000; 
    713710        }else psychicwail_timer -= diff; 
     711 
     712        boss_hexlord_addAI::UpdateAI(diff); 
    714713    } 
    715714}; 
     
    755754        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    756755            return; 
    757         boss_hexlord_addAI::UpdateAI(diff); 
    758756 
    759757        if (venomspit_timer < diff) 
     
    763761            venomspit_timer = 2500; 
    764762        }else venomspit_timer -= diff; 
     763 
     764        boss_hexlord_addAI::UpdateAI(diff); 
    765765    } 
    766766}; 
     
    786786        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    787787            return; 
    788  
    789         boss_hexlord_addAI::UpdateAI(diff); 
    790788 
    791789        if (volatileinf_timer < diff) 
     
    795793            volatileinf_timer = 12000; 
    796794        }else volatileinf_timer -= diff; 
     795 
     796        boss_hexlord_addAI::UpdateAI(diff); 
    797797    } 
    798798}; 
     
    822822        if(!m_creature->SelectHostilTarget() || !m_creature->getVictim() ) 
    823823            return; 
    824  
    825         boss_hexlord_addAI::UpdateAI(diff); 
    826824 
    827825        if (mightyblow_timer < diff) 
     
    836834            coldstare_timer = 12000; 
    837835        } 
     836 
     837        boss_hexlord_addAI::UpdateAI(diff); 
    838838    } 
    839839};