예제 #1
0
	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();
	};
예제 #2
0
 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();
 }
예제 #3
0
	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);
	}
예제 #4
0
/**
 * @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();
		}
예제 #6
0
        void OnCombatStop(Unit* pTarget)
        {
            if (GetPhase() == 4)
                RemoveAura(SMITES_HAMMER);
            if (!IsAlive())
                SetWieldWeapon(false);

            SetPhase(1);
            SwitchWeapons();
            RemoveTimer(mWaitAtChest);
            ParentClass::OnCombatStop(pTarget);
        }
예제 #7
0
// --- 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));
	}
}
예제 #8
0
파일: desc.cpp 프로젝트: ronniwe/Varios
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;
}
예제 #9
0
	void AIUpdate()
	{
		if (mAliveAdds > 1)
			return;

		if (GetPhase() == 1 && GetHealthPercent() <= 50)
		{
			SetPhase(2, mEnrage);
		}

		ParentClass::AIUpdate();
	}
예제 #10
0
파일: scsidev.c 프로젝트: broftkd/mess-svn
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 );
}
예제 #11
0
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);
    }
}
예제 #12
0
파일: water.cpp 프로젝트: artemeliy/inf4715
// --- 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); 
		}
	}
예제 #13
0
	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();
	}
예제 #14
0
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();
}
예제 #15
0
    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);
    }
예제 #16
0
파일: s1410.c 프로젝트: Ilgrim/MAMEHub
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;
	}
}
예제 #17
0
파일: d9060hd.c 프로젝트: coinhelper/jsmess
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;
	}
}
예제 #18
0
	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);
	}
예제 #19
0
 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);
		}
	} 	
예제 #21
0
		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();
		}
예제 #22
0
        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;
        }
예제 #23
0
	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);
	}
예제 #24
0
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);
}
예제 #25
0
    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();
    }
예제 #26
0
파일: scsidev.c 프로젝트: broftkd/mess-svn
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;
	}
}
예제 #27
0
        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);
        }
예제 #28
0
    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();
    }
예제 #29
0
파일: water.cpp 프로젝트: artemeliy/inf4715
// 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();
}
예제 #30
0
파일: Phase.cpp 프로젝트: alltom/taps
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);
     
	}


}