void AIUpdate() { if(GetHealthPercent() <= 50 && GetPhase() == 1) { const char * Text = ""; uint32 pSoundID = 0; uint32 Random = rand()%2; switch (Random) { case 0: Text = "I'll give you more than you can handle."; pSoundID = 13321; break; case 1: Text = "There's plenty of me to go around."; pSoundID = 13322; break; } Emote(Text, Text_Yell, pSoundID); SetPhase(2); SetCanMove(false); ApplyAura(60191); pFire = _unit->GetMapMgr()->GetInterface()->SpawnCreature( CN_TELESTRA_FIRE, 494.726990f, 89.128799f, -15.941300f, 6.021390f, true, true, NULL, NULL ); pFrost = _unit->GetMapMgr()->GetInterface()->SpawnCreature( CN_TELESTRA_FROST, 495.006012f, 89.328102f, -16.124609f, 0.027486f, true, true, NULL, NULL ); pArcane = _unit->GetMapMgr()->GetInterface()->SpawnCreature( CN_TELESTRA_ARCANE, 504.798431f, 102.248375f, -16.124609f, 4.629921f, true, true, NULL, NULL ); }; if( GetPhase() == 2 ) { if( ( pFrost != NULL && pFrost->isAlive() ) || ( pFire != NULL && pFire->isAlive() ) || ( pArcane != NULL && pArcane->isAlive() ) ) return; Emote("Now to finish the job!", Text_Yell, 13323); RemoveAura(60191); SetCanMove(true); SetPhase(3); }; ParentClass::AIUpdate(); };
void AIUpdate() { if(GetHealthPercent() <= 75 && GetPhase() == 1) { SetPhase(2, HowlingRage1); } else if(GetHealthPercent() <= 45 && GetPhase() == 2) { if(GetUnit()->HasAura(7481)) RemoveAura(7481); SetPhase(3, HowlingRage2); } else if(GetHealthPercent() <= 20 && GetPhase() == 3) { if(GetUnit()->HasAura(7483)) RemoveAura(7483); SetPhase(4, HowlingRage3); } ParentClass::AIUpdate(); }
void OnReachWP(uint32 iWaypointId, bool bForwards) { ForceWaypointMove(iWaypointId+1); if(GetPhase() == 1 && GetCurrentWaypoint() == 39) { _unit->Emote(EMOTE_ONESHOT_TALK); SetPhase(2, Awakening); SpawnTimer = AddTimer(100000); } ParentClass::OnReachWP(iWaypointId, bForwards); }
/** * @brief: 进入下一个阶段 * * @param phase 阶段ID * @param interval_usec 超时时间 * @param waiting_cmd 进入的阶段要等待的CMD */ void TransactionBase::EnterPhase(unsigned int phase, TransactionWaitInterval interval_usec, unsigned int waiting_cmd) { FUNC_TRACE(uin_); SetPhase(phase); SetTimeoutTimer(interval_usec); SetCurrCmd(waiting_cmd); }
void AIUpdate() { if(SpawnTimer && IsTimerFinished(SpawnTimer)) { switch(GetPhase()) { case 2: Moccasin(); ResetTimer(SpawnTimer, 100000); SetPhase(3); break; case 3: Ectoplasm(); ResetTimer(SpawnTimer, 100000); SetPhase(4); break; case 4: BMutanus(); ResetTimer(SpawnTimer, 100000); SetPhase(5); break; } } if(GetPhase() == 5 && (!Mutanus || !Mutanus->GetUnit()->isAlive())) { MoonScriptCreatureAI* Naralex = GetNearestCreature(3679); if(Naralex && Naralex->IsAlive()) { SetDisplayId(17089); Naralex->SetDisplayId(17089); Naralex->Emote("I am awake... at last", Text_Say, 5789); Naralex->GetUnit()->SetStandState(STANDSTATE_STAND); SetFlyMode(true); Naralex->SetFlyMode(true); MoveTo(-6.704030f, 200.308838f, -26.938824f); Naralex->MoveTo(-6.704030f, 200.308838f, -26.938824f); } SetPhase(6); } ParentClass::AIUpdate(); }
void OnCombatStop(Unit* pTarget) { if (GetPhase() == 4) RemoveAura(SMITES_HAMMER); if (!IsAlive()) SetWieldWeapon(false); SetPhase(1); SwitchWeapons(); RemoveTimer(mWaitAtChest); ParentClass::OnCombatStop(pTarget); }
// --- Methods inherited from Tex3D --- void Smoke::ReadSXPData(const TCHAR *name, void *sxpdata) { SmokeState *state = (SmokeState*)sxpdata; if (state != NULL && (state->version == SMOKE_SXP_VERSION)) { SetColor(0, ColorFromCol24(state->col1), TimeValue(0)); SetColor(1, ColorFromCol24(state->col2), TimeValue(0)); //SetSpeed(state->speed, TimeValue(0)); SetPhase(0.0f, TimeValue(0)); SetSize(state->size, TimeValue(0)); SetIter(state->nits, TimeValue(0)); SetExp(state->power, TimeValue(0)); } }
bool DESC::Setup(LPFDWATCH _fdw, socket_t _fd, const struct sockaddr_in & c_rSockAddr, DWORD _handle, DWORD _handshake) { m_lpFdw = _fdw; m_sock = _fd; m_stHost = inet_ntoa(c_rSockAddr.sin_addr); m_wPort = c_rSockAddr.sin_port; m_dwHandle = _handle; //if (LC_IsEurope() == true || LC_IsNewCIBN()) // m_lpOutputBuffer = buffer_new(DEFAULT_PACKET_BUFFER_SIZE * 2); //else //NOTE: 이걸 나라별로 다르게 잡아야할 이유가 있나? m_lpOutputBuffer = buffer_new(DEFAULT_PACKET_BUFFER_SIZE * 2); m_iMinInputBufferLen = MAX_INPUT_LEN >> 1; m_lpInputBuffer = buffer_new(MAX_INPUT_LEN); m_SockAddr = c_rSockAddr; fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_READ, false); // Ping Event desc_event_info* info = AllocEventInfo<desc_event_info>(); info->desc = this; assert(m_pkPingEvent == NULL); m_pkPingEvent = event_create(ping_event, info, ping_event_second_cycle); #ifndef _IMPROVED_PACKET_ENCRYPTION_ if (LC_IsEurope()) { thecore_memcpy(m_adwEncryptionKey, "1234abcd5678efgh", sizeof(DWORD) * 4); thecore_memcpy(m_adwDecryptionKey, "1234abcd5678efgh", sizeof(DWORD) * 4); } else { thecore_memcpy(m_adwEncryptionKey, "testtesttesttest", sizeof(DWORD) * 4); thecore_memcpy(m_adwDecryptionKey, "testtesttesttest", sizeof(DWORD) * 4); } #endif // _IMPROVED_PACKET_ENCRYPTION_ // Set Phase to handshake SetPhase(PHASE_HANDSHAKE); StartHandshake(_handshake); sys_log(0, "SYSTEM: new connection from [%s] fd: %d handshake %u output input_len %d, ptr %p", m_stHost.c_str(), m_sock, m_dwHandshake, buffer_size(m_lpInputBuffer), this); Log("SYSTEM: new connection from [%s] fd: %d handshake %u ptr %p", m_stHost.c_str(), m_sock, m_dwHandshake, this); return true; }
void AIUpdate() { if (mAliveAdds > 1) return; if (GetPhase() == 1 && GetHealthPercent() <= 50) { SetPhase(2, mEnrage); } ParentClass::AIUpdate(); }
void scsidev_device::SetCommand( UINT8 *_command, int _commandLength ) { if( _commandLength > sizeof( command ) ) { /// TODO: output an error. return; } memcpy( command, _command, _commandLength ); commandLength = _commandLength; SetPhase( SCSI_PHASE_COMMAND ); }
func Check() { var clnk; if(GetAction()S="Falling") return(Falling()); while(clnk=FindObject(0,-25,0,50,100,OCF_CrewMember(),0,0,0,clnk)) if(GetAlive(clnk) && !Random(2)) { Sound("Earthquake"); SetAction("Falling"); SetPhase(phase); RemoveVertex(0); RemoveVertex(0); } }
// --- Methods inherited from Tex3D --- void Water::ReadSXPData(const TCHAR *name, void *sxpdata) { WaterState *state = (WaterState*)sxpdata; if (state != NULL && (state->version == WATER_SXP_VERSION)) { SetColor(0, ColorFromCol24(state->col1), TimeValue(0)); SetColor(1, ColorFromCol24(state->col2), TimeValue(0)); SetNum(state->count, TimeValue(0)); SetSize(state->size, TimeValue(0)); SetLenMin(state->minperiod, TimeValue(0)); SetLenMax(state->maxperiod, TimeValue(0)); SetAmp(state->amp, TimeValue(0)); SetPhase(0.0f, TimeValue(0), TRUE); } }
void AIUpdate() { // 40 yrds if((CoreRager1 && CoreRager1->isAlive() && GetRangeToUnit(CoreRager1) < 40) || (CoreRager2 && CoreRager2->isAlive() && GetRangeToUnit(CoreRager2) < 40)) GolemaggTrust->mEnabled = true; else GolemaggTrust->mEnabled = false; if(GetPhase() == 1 && GetHealthPercent() <= 10) SetPhase(2); ParentClass::AIUpdate(); }
func Hit() { var obj; if(GetAction()ne"Falling") return(1); Sound("RockBreak*"); Sound("Blast2",0,0,50); // links oben ObjectSetAction(obj=CreateObject(_STP,-4,-4,-1),"Exist"); SetPhase(phase*2,obj); SetRDir(Random(20)-10,obj); SetSpeed(Random(30)-15,-Random(35)+10,obj); // rechts oben ObjectSetAction(obj=CreateObject(_STP,3,-4,-1),"Exist"); SetPhase(phase*2+1,obj); SetRDir(Random(20)-10,obj); SetSpeed(Random(30)-15,-Random(35)+10,obj); // unten ObjectSetAction(obj=CreateObject(_STP,0,12,-1),"LameExist"); SetPhase(phase,obj); SetRDir(Random(20)-10,obj); SetSpeed(Random(10)-15,-Random(35)+10,obj); RemoveObject(); }
void Aggro(Unit *who) { m_creature->SummonCreature(15384, TRIGGER_X, TRIGGER_Y, TRIGGER_Z, TRIGGER_O, TEMPSUMMON_DEAD_DESPAWN, 0); SetPhase(1); switch (rand()%3) { case 0: DoScriptText(SAY_AGGRO1, m_creature); break; case 1: DoScriptText(SAY_AGGRO2, m_creature); break; case 2: DoScriptText(SAY_AGGRO3, m_creature); break; } if (m_pInstance) m_pInstance->SetData(TYPE_HEIGAN, IN_PROGRESS); }
void s1410_device::ExecCommand( int *transferLength ) { switch( command[ 0 ] ) { case S1410_CMD_INIT_DRIVE_PARAMS: SetPhase(SCSI_PHASE_DATAOUT); *transferLength = TRANSFERLENGTH_INIT_DRIVE_PARAMS; break; case S1410_CMD_FORMAT_ALT_TRACK: SetPhase(SCSI_PHASE_DATAOUT); *transferLength = TRANSFERLENGTH_FORMAT_ALT_TRACK; break; case S1410_CMD_WRITE_SEC_BUFFER: SetPhase(SCSI_PHASE_DATAOUT); *transferLength = TRANSFERLENGTH_SECTOR_BUFFER; break; case S1410_CMD_READ_SEC_BUFFER: SetPhase(SCSI_PHASE_DATAIN); *transferLength = TRANSFERLENGTH_SECTOR_BUFFER; break; case S1410_CMD_CHECK_TRACK_FORMAT: case S1410_CMD_RAM_DIAGS: case S1410_CMD_DRIVE_DIAGS: case S1410_CMD_CONTROLER_DIAGS: SetPhase(SCSI_PHASE_STATUS); *transferLength = 0; break; default: scsihd_device::ExecCommand( transferLength ); break; } }
void d9060hd_device::ExecCommand( int *transferLength ) { switch( command[ 0 ] ) { case D9060HD_CMD_PHYSICAL_DEVICE_ID: case D9060HD_CMD_DRIVE_DIAGS: SetPhase(SCSI_PHASE_STATUS); *transferLength = 0; break; default: scsihd_device::ExecCommand( transferLength ); break; } }
void Split() { CurrentHealth = GetUnit()->GetUInt32Value(UNIT_FIELD_HEALTH); SetDisplayId(24144); _unit->SetHealth(240000); _unit->SetUInt32Value(UNIT_FIELD_MAXHEALTH, 240000); mLynx = GetUnit()->GetMapMgr()->GetInterface()->SpawnCreature( CN_LYNX_SPIRIT, GetUnit()->GetPositionX(), GetUnit()->GetPositionY(), GetUnit()->GetPositionZ(), GetUnit()->GetOrientation(), true, false, 0, 0); if( mLynx ) { mLynx->GetAIInterface()->AttackReaction(GetUnit()->GetAIInterface()->getNextTarget(), 1); mLynx->m_noRespawn = true; } SetPhase(2, Transfigure); }
WardenMellicharAI(Creature* pCreature) : MoonScriptBossAI(pCreature) { SetCanMove(false); Phase_Timer = -1; SetPhase(0); Spawncounter = 0; NPC_orb1 = NULL; NPC_orb2 = NULL; NPC_orb3 = NULL; NPC_orb4 = NULL; NPC_orb5 = NULL; shield = NULL; orb1 = NULL; orb2 = NULL; orb3 = NULL; orb4 = NULL; }
void AIUpdate() { if(IsTimerFinished(mRessTimer)) { SetPhase(2); _unit->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); _unit->SetUInt32Value(UNIT_FIELD_DISPLAYID, 26351); _unit->SetUInt32Value(UNIT_FIELD_HEALTH,_unit->GetUInt32Value(UNIT_FIELD_MAXHEALTH)); _unit->setDeathState(ALIVE); _unit->WipeTargetList(); _unit->WipeHateList(); Emote("I return! A second chance to carve out your skull!", Text_Yell, 13209); RemoveTimer(mRessTimer); } }
void AIUpdate() { if((GetHealthPercent() <= 85 && mSummon == 0) || (GetHealthPercent() <= 70 && mSummon == 1) || (GetHealthPercent() <= 55 && mSummon == 2) || (GetHealthPercent() <= 40 && mSummon == 3) || (GetHealthPercent() <= 25 && mSummon == 4)) { CastSpell(mPureEnergy); ++mSummon; } if(GetHealthPercent() <= 10 && GetPhase() == 1) SetPhase(2); ParentClass::AIUpdate(); }
void Reset() { _Reset(); _bersekerTimer = 0; _currentPos = 0; SetPhase(PHASE_ONE, true); _delayedMovementTimer = 8000; _delayedMovement = false; _summonDeaths = 0; me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); _cannotMove = true; }
void Merge() { if( mLynx ) { mLynx->Despawn(0, 0); mLynx = NULL; Emote("Spirit, come back to me!", Text_Yell, 12022); } if(CurrentHealth) _unit->SetHealth(CurrentHealth); if(MaxHealth) _unit->SetUInt32Value(UNIT_FIELD_MAXHEALTH, MaxHealth); SetDisplayId(21632); SplitCount++; SetPhase(1); }
public func ControlThrow (pClonk) // Bedienung: Werfen (benutzen) { if(!(pClonk->~FireRifle())) return(0); SetPhase(6, pClonk); // Fadenkreuz zum besseren Zielen erzeugen var pCross = CreateObject(WCHR, 0, 0, GetOwner(pClonk)); pCross->SetAction("Crosshair", pClonk); Local(0,GetCrosshair(pClonk)) = 84; WINC->ActualizePhase(pClonk); // dem Clonk übermitteln, wie viel Ammo da ist LocalN("iRifleAmmo", pClonk) = ContentsCount(); while(Contents()) Enter(pCross, Contents()); // eigene ID speichern LocalN("idWeapon",pClonk)=GetID(); // Schnell noch schauen, ob der Clonk auch Munition hat! if(!LocalN("iRifleAmmo", pClonk)) DefinitionCall(GetID(), "CheckAmmo", pClonk); // ...und selbst löschen RemoveObject(); return(1); }
void UpdateAI(const uint32 diff) { if (phase == 0) return; if (Phase_Timer < diff) { SetPhase(0); }else Phase_Timer -= diff; /* if (Erupt_Timer < diff) { m_pInstance->SetData(DATA_HEIGAN_ERUPT, eruptSection); if (eruptSection == 0) eruptDirection = true; else if (eruptSection == 3) eruptDirection = false; eruptDirection ? ++eruptSection : --eruptSection; if (phase == 1) { Erupt_Timer = 10000; }else Erupt_Timer = 3000; }else Erupt_Timer -= diff; */ if (!m_creature->SelectHostileTarget() || !m_creature->getVictim() || phase != 1) return; if (Disruption_Timer < diff) { DoCast(m_creature->getVictim(), SPELL_DISRUPTION); Disruption_Timer = 5000+rand()%10000; }else Disruption_Timer -= diff; if (Feaver_Timer < diff) { DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_FEAVER : H_SPELL_FEAVER); Feaver_Timer = 30000+rand()%10000; }else Feaver_Timer -= diff; DoMeleeAttackIfReady(); }
void scsidev_device::ExecCommand( int *transferLength ) { UINT8 *command; int commandLength; GetCommand( &command, &commandLength ); switch( command[ 0 ] ) { case 0x00: // TEST UNIT READY SetPhase( SCSI_PHASE_STATUS ); *transferLength = 0; break; default: logerror( "%s: SCSIDEV unknown command %02x\n", machine().describe_context(), command[ 0 ] ); *transferLength = 0; break; } }
void OnCombatStart(Unit* mTarget) { SetPhase(0); Phasepart = 0; SetCanMove(false); Phase_Timer = AddTimer(55000); SetCanEnterCombat(false); _unit->SetEmoteState(EMOTE_ONESHOT_READY1H); // to be replaced for the standstate shield = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(445.786f, -169.263f, 43.0466f, 184802); if (shield) shield->SetState(GAMEOBJECT_STATE_CLOSED); _unit->SendScriptTextChatMessage(SAY_MELLICHAR_01); _unit->SendTimedScriptTextChatMessage(SAY_MELLICHAR_02, 27000); ParentClass::OnCombatStart(mTarget); }
void AIUpdate() { if ((GetHealthPercent() <= 85 && mSummon == 0) || (GetHealthPercent() <= 70 && mSummon == 1) || (GetHealthPercent() <= 55 && mSummon == 2) || (GetHealthPercent() <= 40 && mSummon == 3) || (GetHealthPercent() <= 25 && mSummon == 4)) { CastSpell(mPureEnergy); ++mSummon; //SpawnCreature(CN_PURE_ENERGY, 231, -207, 6, 0, true); } if (GetHealthPercent() <= 10 && GetPhase() == 1) SetPhase(2); ParentClass::AIUpdate(); }
// This method is called to reset the texmap back to its default values. void Water::Init() { // Reset the XYZGen or allocate a new one if (xyzGen) xyzGen->Reset(); else ReplaceReference(0, GetNewDefaultXYZGen()); // This replaces the reference to the previous parameter block with // a new one. Note that the previous one is automatically deleted // because when the last reference to an item is deleted, MAX deletes // the item itself. // ReplaceReference(1, CreateParameterBlock(pbdesc, // PB_LENGTH, WATER_PB_VERSION)); // if (paramDlg) // paramDlg->pmap->SetParamBlock(pblock); // Set the inital parameters SetColor(0, DEFAULT_COLOR1, TimeValue(0)); SetColor(1, DEFAULT_COLOR2, TimeValue(0)); SetRandSeed(0x75cf); SetNum(DEFAULT_NUM_WAVESETS, TimeValue(0)); RegisterDistanceDefault(_T("Wave Params"), _T("Size"), DEFAULT_WAVE_RADIUS, IN_TO_M(DEFAULT_WAVE_RADIUS)); float size = GetDistanceDefault(_T("Wave Params"), _T("Size")); SetSize(size, TimeValue(0)); RegisterDistanceDefault(_T("Wave Params"), _T("Len Min"), DEFAULT_WAVE_LEN_MIN, IN_TO_M(DEFAULT_WAVE_LEN_MIN)); float lenMin = GetDistanceDefault(_T("Wave Params"), _T("Len Min")); SetLenMin(lenMin, TimeValue(0)); RegisterDistanceDefault(_T("Wave Params"), _T("Len Max"), DEFAULT_WAVE_LEN_MAX, IN_TO_M(DEFAULT_WAVE_LEN_MAX)); float lenMax = GetDistanceDefault(_T("Wave Params"), _T("Len Max")); SetLenMax(lenMax, TimeValue(0)); SetAmp(1.0f, TimeValue(0)); SetPhase(0.0f, TimeValue(0)); ReInit(); type = 0; // Set the validity interval of the texture to empty texValidity.SetEmpty(); }
int Phase::Set(char* mess, float value){ switch (FindMsg(mess)){ case 21: SetFreq(value); return 1; case 22: SetPhase(value); return 1; default: return SndObj::Set(mess,value); } }