Changeset 186 for trunk/src/bindings/scripts
- Timestamp:
- 11/19/08 13:44:25 (17 years ago)
- Location:
- trunk/src/bindings/scripts
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bindings/scripts/include/sc_creature.cpp
r153 r186 74 74 void ScriptedAI::MoveInLineOfSight(Unit *who) 75 75 { 76 if (!m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) &&who->isInAccessablePlaceFor(m_creature))77 {78 if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) 79 return;80 81 float attackRadius = m_creature->GetAttackDistance(who); 82 if (m_creature->IsWithinDistInMap(who, attackRadius) &&m_creature->IsWithinLOSInMap(who))83 {84 who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);85 AttackStart(who);86 }87 }76 if(m_creature->getVictim() || !m_creature->IsHostileTo(who) || !who->isInAccessablePlaceFor(m_creature)) 77 return; 78 79 if(!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) 80 return; 81 82 if(!m_creature->IsWithinDistInMap(who, m_creature->GetAttackDistance(who)) || !m_creature->IsWithinLOSInMap(who)) 83 return; 84 85 if(m_creature->canAttack(who)) 86 //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); 87 AttackStart(who); 88 88 } 89 89 … … 778 778 void Scripted_NoMovementAI::MoveInLineOfSight(Unit *who) 779 779 { 780 if( !m_creature->getVictim() && who->isTargetableForAttack() && ( m_creature->IsHostileTo( who )) && who->isInAccessablePlaceFor(m_creature) )780 if( !m_creature->getVictim() && m_creature->canAttack(who) && ( m_creature->IsHostileTo( who )) && who->isInAccessablePlaceFor(m_creature) ) 781 781 { 782 782 if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) -
trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp
r109 r186 1196 1196 return; 1197 1197 1198 1199 if (who->isTargetableForAttack() && who->isInAccessablePlaceFor(m_creature) && m_creature->IsHostileTo(who)) 1198 if (m_creature->canAttack(who) && who->isInAccessablePlaceFor(m_creature) && m_creature->IsHostileTo(who)) 1200 1199 { 1201 1200 if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE) … … 1205 1204 if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who)) 1206 1205 { 1207 if(who->HasStealthAura())1208 who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);1206 //if(who->HasStealthAura()) 1207 // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); 1209 1208 1210 1209 //Begin melee attack if we are within range -
trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
r180 r186 414 414 EnterPhase(PHASE_FLIGHT); 415 415 } 416 else 416 else // handle flight sequence 417 417 Timer[EVENT_FLIGHT_SEQUENCE] = 1000; 418 418 } … … 692 692 for(uint32 i = 1; i <= MaxTimer[Phase]; i++) 693 693 { 694 if(Timer[i]) 694 if(Timer[i]) // Event is enabled 695 695 if(Timer[i] <= diff) 696 696 { 697 if(!Event) 697 if(!Event) // No event with higher priority 698 698 Event = (EventIllidan)i; 699 699 } … … 709 709 710 710 case PHASE_NORMAL_2: 711 if( m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 30)711 if(HPPCT(m_creature) < 30) 712 712 EnterPhase(PHASE_TALK_SEQUENCE); 713 713 break; 714 714 715 715 case PHASE_NORMAL_MAIEV: 716 if( m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 1)716 if(HPPCT(m_creature) < 1) 717 717 EnterPhase(PHASE_TALK_SEQUENCE); 718 718 break; … … 759 759 DoPlaySoundToSet(m_creature, soundid); 760 760 } 761 Timer[EVENT_TAUNT] = 32000;761 Timer[EVENT_TAUNT] = 25000 + rand()%10000; 762 762 break; 763 763 … … 834 834 Phase = PHASE_FLIGHT_SEQUENCE; 835 835 Timer[EVENT_FLIGHT_SEQUENCE] = 0;//do not start Event when changing hover point 836 for (uint8 i = 0; i <= rand()%3; i++) 837 { 838 HoverPoint++; 839 if(HoverPoint > 3) 840 HoverPoint = 0; 841 } 836 HoverPoint += (rand()%3 + 1); 837 if(HoverPoint > 3) 838 HoverPoint -= 4; 842 839 m_creature->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z); 843 840 break; … … 2060 2057 final.y = 2 * final.y - initial.y; 2061 2058 2062 for(uint8 i = 0; i < 2; ++i)//core bug, two buff do not coexist 2063 { 2064 Creature* Trigger = NULL; 2065 Trigger = m_creature->SummonCreature(DEMON_FIRE, initial.x, initial.y, initial.z, 0, TEMPSUMMON_TIMED_DESPAWN, 13000); 2066 if(Trigger) 2067 { 2068 ((demonfireAI*)Trigger->AI())->IsTrigger = true; 2069 Trigger->SetSpeed(MOVE_WALK, 3); 2070 Trigger->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE); 2071 Trigger->GetMotionMaster()->MovePoint(0, final.x, final.y, final.z); 2072 2073 if(!i) 2074 Trigger->CastSpell(Trigger, SPELL_EYE_BLAST_TRIGGER, true); 2075 else 2076 { 2077 Trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); 2078 m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Trigger->GetGUID()); 2079 DoCast(Trigger, SPELL_EYE_BLAST); 2080 } 2081 } 2082 } 2059 Creature* Trigger = m_creature->SummonCreature(DEMON_FIRE, initial.x, initial.y, initial.z, 0, TEMPSUMMON_TIMED_DESPAWN, 13000); 2060 if(!Trigger) return; 2061 2062 ((demonfireAI*)Trigger->AI())->IsTrigger = true; 2063 Trigger->SetSpeed(MOVE_WALK, 3); 2064 Trigger->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE); 2065 Trigger->GetMotionMaster()->MovePoint(0, final.x, final.y, final.z); 2066 2067 Trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); 2068 m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Trigger->GetGUID()); 2069 DoCast(Trigger, SPELL_EYE_BLAST); 2083 2070 } 2084 2071 … … 2163 2150 m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); 2164 2151 m_creature->GetMotionMaster()->Clear(false); 2165 //m_creature->GetMotionMaster()->MoveIdle();2166 2152 m_creature->AttackStop(); 2167 2153 break; 2168 2154 case PHASE_FLIGHT_SEQUENCE: 2169 if(Phase == PHASE_FLIGHT) //land 2170 Timer[EVENT_FLIGHT_SEQUENCE] = 2000; 2171 else //lift off 2155 if(Phase == PHASE_NORMAL) //lift off 2172 2156 { 2173 2157 FlightCount = 1; … … 2177 2161 m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE); 2178 2162 m_creature->GetMotionMaster()->Clear(false); 2179 //m_creature->GetMotionMaster()->MoveIdle();2180 2163 m_creature->AttackStop(); 2181 2164 } 2165 else //land 2166 Timer[EVENT_FLIGHT_SEQUENCE] = 2000; 2182 2167 break; 2183 2168 case PHASE_TRANSFORM_SEQUENCE: … … 2192 2177 } 2193 2178 m_creature->GetMotionMaster()->Clear(); 2194 //m_creature->GetMotionMaster()->MoveIdle();2195 2179 m_creature->AttackStop(); 2196 2180 break;