示例#1
0
void CKanturu::SetState_TOWER_OF_REFINEMENT()
{
	LogAddC(7, "[ KANTURU ] State(%d) -> TOWER_OF_REFINEMENT", this->m_iKanturuState);
	this->SetKanturuState(KANTURU_STATE_TOWER_OF_REFINEMENT);
	this->m_TowerOfRefinement.SetState(1);
	this->SetKanturuMapAttr(1);
}
BOOL TMonsterAIElement::ApplyElementNightmareWarp(int iIndex, int iTargetIndex, TMonsterAIState * pAIState)
{
	LPOBJ lpObj = &gObj[iIndex];

	BYTE x = this->m_iX;
	BYTE y = this->m_iY;
	PMSG_MAGICATTACK_RESULT pAttack;

	PHeadSetBE((unsigned char *)&pAttack,0x19,sizeof(pAttack));

	pAttack.MagicNumberH = SET_NUMBERH(AT_SKILL_TELEPORT);
	pAttack.MagicNumberL = SET_NUMBERL(AT_SKILL_TELEPORT);

	pAttack.SourceNumberH = SET_NUMBERH(iIndex);
	pAttack.SourceNumberL = SET_NUMBERL(iIndex);
	pAttack.TargetNumberH = SET_NUMBERH(iIndex);
	pAttack.TargetNumberL = SET_NUMBERL(iIndex);

	if ( lpObj->Type == OBJ_USER )
		DataSend(iIndex,(unsigned char *)&pAttack,pAttack.h.size);

	MsgSendV2(lpObj,(unsigned char*)&pAttack,pAttack.h.size);

	LogAddC(2, "[%s] Warp [%d,%d] -> [%d,%d]",
		lpObj->Name, lpObj->X, lpObj->Y, x, y);

	gObjTeleportMagicUse(iIndex,x,y);
	lpObj->TargetNumber = -1;

	return FALSE;
}
void CKanturuBattleOfNightmare::SetState_NOTIFY()
{
	LogAddC(5, "[ KANTURU ][ BattleOfNightmare ] State(%d) -> NOTIFY",
		this->m_iBattleOfNightmareState);

	this->SetBattleOfNightmareState(KANTURU_NIGHTMARE_NOTIFY);
}
示例#4
0
void CKanturu::CheckUserOnKanturuBossMap()
{
	for ( int iCount=OBJ_STARTUSERINDEX;iCount<OBJMAX;iCount++)
	{
		if ( gObj[iCount].Connected == PLAYER_PLAYING &&
			 gObj[iCount].Type == OBJ_USER &&
			 gObj[iCount].MapNumber == MAP_INDEX_KANTURU_BOSS)
		{
#if (GS_CASTLE == 0 || GS_SPEC == 1)
			if ( gObj[iCount].m_bKanturuEntranceByNPC == FALSE )
			{
#endif
				if ( (gObj[iCount].Authority&2) != 2 )
				{
					if ( gObj[iCount].RegenOk == 0 &&
						 gObj[iCount].m_State == 2 &&
						 gObj[iCount].Live == TRUE)
					{
						gObjMoveGate(iCount, 17);

						LogAddC(2, "[ KANTURU ][ Invalid User ] Invalid Kanturu Boss Map User[%s][%s]",
							gObj[iCount].AccountID, gObj[iCount].Name);
					}
				}
#if (GS_CASTLE == 0 || GS_SPEC == 1)
			}
#endif
		}
	}
}
//0060E540 - identical
void CRaklionBattleOfSelupan::SetState_DIE()
{
	LogAddC(5, "[ RAKLION ][ BattleOfSelupan ] State(%d) -> DIE", this->m_iBattleOfSelupanState);
	
	this->m_RaklionSelupan.SelupanAct_BerserkCansel();
	
	this->DeleteSummonMonster();
	
	int aIndex = this->m_RaklionSelupan.GetSelupanTargetIndex();

	LPOBJ lpObj = &gObj[aIndex];

	g_RaklionUtil.SendMsgAllUser(lMsg.Get(3412),lpObj->Name);

	time_t ltime;
	time(&ltime);
	tm * today=localtime(&ltime);

	for ( int i = 0; i < g_RaklionBattleUserMng.GetBattleUserCount(); ++i )
	{
		LogAdd("[Raklion][SelupanDie] %d/%d/%d %d:%d:%d %dth Winner : %s (%s)",
			today->tm_year+1900,today->tm_mon+1,today->tm_mday,today->tm_hour,
			today->tm_min,today->tm_sec,i+1,gObj[g_RaklionBattleUserMng.GetBattleUserIndex(i)].Name,gObj[g_RaklionBattleUserMng.GetBattleUserIndex(i)].AccountID);
	}

	this->SetBattleOfSelupanState(SELUPAN_STATE_DIE);
}
void CRaklionBattleOfSelupan::SetState_PATTERN_6()
{
	LogAddC(5, "[ RAKLION ][ BattleOfSelupan ] State(%d) -> PATTERN_6 // Life(%d/4800000)", this->m_iBattleOfSelupanState,this->m_RaklionSelupan.GetSelupanLife());
	
	this->m_RaklionSelupan.SelupanAct_Berserk4();
	
	this->SetBattleOfSelupanState(SELUPAN_STATE_PATTERN_6);
}
示例#7
0
void CKanturu::SetState_BATTLE_STANDBY()
{
	LogAddC(7, "[ KANTURU ] State(%d) -> STANDBY", this->m_iKanturuState);
	g_KanturuBattleUserMng.ResetAllData();
	this->SetKanturuState(KANTURU_STATE_BATTLE_STANTBY);
	this->m_BattleStanby.SetState(1);
	this->SetKanturuTimeAttackEventInfo();
}
示例#8
0
BOOL TMonsterAIElement::ApplyElementAIChange(int iIndex, int iTargetIndex, TMonsterAIState * pAIState)
{
	TMonsterAIGroup::ChangeAIOrder(this->m_iTargetType, this->m_iX);
	LogAddC(2, "[AI Change] Group %d AI Order %d",
		this->m_iTargetType, this->m_iX);

	return FALSE;
}
void CKanturuBattleStanby::SetState_NOTIFY()
{
	LogAddC(5, "[ KANTURU ][ BattleStanby ] State(%d) -> NOTIFY",
		this->m_iBattleStanbyState);

	this->SetBattleStanbyState(KANTURU_STANBY_NOTIFY);
	KANTURU_UTIL.SendMsgKauturuMapUser(lMsg.Get(MSGGET(13, 31)));
}
void CRaklionBattleOfSelupan::SetPatternCondition(int iPattern,int iCondition)
{
	if ( iPattern < 0 || iCondition < 0 )
	{
		LogAddC(2,"[RAKLION][SetPatternCondition] error : PatternNum(%d), Condition(%d)",iPattern,iCondition);
	}

	this->m_PatternCondition[iPattern] = iCondition;
}
void CRaklionBattleOfSelupan::SetState_NONE()
{
	LogAddC(5, "[ RAKLION ][ BattleOfSelupan ] State(%d) -> NONE", this->m_iBattleOfSelupanState);
	
	this->m_RaklionSelupan.SelupanAct_BerserkCansel();
	
	this->SetBattleOfSelupanState(SELUPAN_STATE_NONE);

}
void CKanturuTowerOfRefinement::SetState_REVITALIZATION()
{
	LogAddC(5, "[ KANTURU ][ TowerOfRefinement ] State(%d) -> REVITALIZATION",
		this->m_iTowerOfRefinementState);

	this->SetTowerOfRefinementState(KANTURU_TOWER_OF_REFINEMENT_REVITALIZATION);
	this->SetEntrancePermit(TRUE);
	this->SetUseTowerOfRefinement(TRUE);
}
void CKanturuTowerOfRefinement::SetState_NOTIFY2()
{
	LogAddC(5, "[ KANTURU ][ TowerOfRefinement ] State(%d) -> NOTIFY2",
		this->m_iTowerOfRefinementState);

	this->SetTowerOfRefinementState(KANTURU_TOWER_OF_REFINEMENT_NOTIFY2);
	this->SetEntrancePermit(FALSE);
	this->SetUseTowerOfRefinement(TRUE);
}
示例#14
0
void CCrywolf::SetState_NOTIFY_1()
{
	UTIL.SendMapServerGroupMsg(lMsg.Get(MSGGET(12, 228)));
	LogAddC(4, "[ Crywolf ] State (%d) -> NOTIFY_1", this->m_iCrywolfState);

	this->SetCrywolfState(CRYWOLF_STATE_NOTIFY_1);
	this->SetCrywolfStateAppliedTime(CRYWOLF_STATE_NOTIFY_1);
	this->m_dwCrywolfNotifyMsgStartTick = GetTickCount();
}
示例#15
0
void CCrywolf::SetState_END()
{
	this->m_dwCrywolfStartProcTick = 0;
	this->m_bChangeAI = FALSE;

	LogAddC(4, "[ Crywolf ] State (%d) -> END", this->m_iCrywolfState);

	if ( this->m_bTurnUpBoss != FALSE && CHECK_LIMIT(this->m_iBossIndex, OBJ_MAXMONSTER) )
	{
		if ( gObj[this->m_iBossIndex].Live != FALSE )
		{
			UTIL.SendCrywolfUserAnyMsg(2, lMsg.Get(MSGGET(12, 233)));
			this->SetOccupationState(1);
		}
	}

	this->m_bTurnUpBoss = FALSE;
	this->SetCrywolfBossIndex(-1);

	if ( this->GetOccupationState() == 1 )
	{
		UTIL.SendMapServerGroupMsg(lMsg.Get(MSGGET(12, 234)));
		this->SetOccupationState(1);

		LogAddTD("[ Crywolf ][MVP] FAIL.......!!");
	}
	else
	{
		UTIL.SendMapServerGroupMsg(lMsg.Get(MSGGET(12, 235)));
		this->SetOccupationState(0);

		LogAddTD("[ Crywolf ][MVP] SUCCESS.......!!");
	}

	this->SetCrywolfState(CRYWOLF_STATE_END);
	this->SetCrywolfStateAppliedTime(CRYWOLF_STATE_END);
	this->NotifyCrywolfCurrentState();
	this->ChangeAI(0);
	
	for ( int iAltar = 205 ; iAltar <= 209 ; iAltar++)
	{
		int iUserIndex = g_CrywolfNPC_Altar.GetAltarUserIndex(iAltar);

		if ( iUserIndex != -1 )
		{
			this->CalcGettingScore(iUserIndex, -1, 6);

			if ( this->GetOccupationState() != 1 )
			{
				this->MakeRewardForAltarElf(iUserIndex);
			}
		}
	}

	g_CrywolfNPC_Altar.ResetAllAltar();
	this->NotifyCrywolfPersonalRank();
}
示例#16
0
void CKanturu::SetKanturuMapAttr(BYTE btLevel)
{
	MapClass & KanturuMap = this->m_KanturuMap[btLevel];
	memcpy(MapC[MAP_INDEX_KANTURU_BOSS].m_attrbuf, KanturuMap.m_attrbuf, 256*256);

	LogAddC(2, "[ KANTURU ][ Map Attr Change ] Map(%d) State(%d) DetailState(%d)",
		btLevel, this->GetKanturuState(), this->GetKanturuDetailState());

}
示例#17
0
float ClassCalc::GetAttackRate(LPOBJ lpUser)
{
    float AttackRate	= 0.0f;

#if (ENABLETEST_ZTLUA == 1)
    ZTLuaManager* LuaMng = new ZTLuaManager(FILE_LUA_CHARACTERBASICS);
    ZTLuaUnit::Bind(LuaMng->getLua());
    ZTLuaItem::Bind(LuaMng->getLua());
    LuaMng->Call("getAttackRate", lpUser->m_Index);
    AttackRate = LuaMng->getRef()->cast<float>();
    ZTLuaManager::Delete(LuaMng);
    return AttackRate;
#else
    if( lpUser->Class >= MAX_TYPE_PLAYER || lpUser->Class < 0 )
    {
        LogAddC(2, "[ClassCalc] [%s] [%s] (GetAttackRate) wrong class (%d)",
                lpUser->AccountID, lpUser->Name, lpUser->Class);
        return 0.0f;
    }
    int Level			= lpUser->Level + lpUser->MasterLevel;
    WORD Class			= lpUser->Class;
    // ----
    if( Class == CLASS_WIZARD || Class == CLASS_DARKLORD )
    {
        AttackRate = (float)(Level * this->m_Data[Class].PvPAttackRateFact1 + lpUser->Dexterity * this->m_Data[Class].PvPAttackRateFact2);
    }
    else if( Class == CLASS_KNIGHT || Class == CLASS_ELF || Class == CLASS_MAGUMSA || Class == CLASS_SUMMONER )
    {
        AttackRate = (float)(Level * this->m_Data[Class].PvPAttackRateFact1  + (lpUser->Dexterity * this->m_Data[Class].PvPAttackRateFact2) / this->m_Data[Class].PvPAttackRateDiv);
    }
    else if( Class == CLASS_FIGHTER )
    {
        AttackRate = (float)(Level * this->m_Data[Class].PvPAttackRateFact1RF + (lpUser->Dexterity * this->m_Data[Class].PvPAttackRateFact2) / this->m_Data[Class].PvPAttackRateDiv);
    }
    // ----
    if( AttackRate <= 0.0f )
    {
        LogAddC(2, "[ClassCalc] [GetAttackRate] [%s][%s] Returned wrong value: %f",
                lpUser->AccountID, lpUser->Name, AttackRate);
    }
    // ----
    return AttackRate;
#endif
}
示例#18
0
void ClassCalc::GetAttackSpeed(LPOBJ lpUser)
{
#if (ENABLETEST_ZTLUA == 1)
    ZTLuaManager* LuaMng = new ZTLuaManager(FILE_LUA_CHARACTERBASICS);
    ZTLuaUnit::Bind(LuaMng->getLua());
    ZTLuaItem::Bind(LuaMng->getLua());
    LuaMng->Call("setAttackSpeed", lpUser->m_Index);
    ZTLuaManager::Delete(LuaMng);
#else
    if( lpUser->Class >= MAX_TYPE_PLAYER || lpUser->Class < 0 )
    {
        LogAddC(2, "[ClassCalc] [%s] [%s] (GetAttackSpeed) wrong class (%d)",
                lpUser->AccountID, lpUser->Name, lpUser->Class);
        return;
    }

    int Dexterity = lpUser->Dexterity + lpUser->AddDexterity;

    //if( Dexterity > g_MaxStatValue || Dexterity < 0 )
//	{
    //	LogAddC(2, "[ClassCalc] [%s] [%s] (GetAttackSpeed) wrong Dexterity (%d)",
    //		lpUser->AccountID, lpUser->Name, Dexterity);
    //	return;
    //}

    if( this->m_Data[lpUser->Class].AttackSpeedDiv < 0 )
    {
        LogAddC(2, "[ClassCalc] [%s] [%s] (GetAttackSpeed) wrong AttackSpeedDiv (%d) for class (%d)",
                lpUser->AccountID, lpUser->Name, this->m_Data[lpUser->Class].AttackSpeedDiv, lpUser->Class);
        return;
    }

    if( this->m_Data[lpUser->Class].MagicSpeedDiv < 0 )
    {
        LogAddC(2, "[ClassCalc] [%s] [%s] (GetAttackSpeed) wrong MagicSpeedDiv (%d) for class (%d)",
                lpUser->AccountID, lpUser->Name, this->m_Data[lpUser->Class].MagicSpeedDiv, lpUser->Class);
        return;
    }

    lpUser->m_AttackSpeed = Dexterity / this->m_Data[lpUser->Class].AttackSpeedDiv;
    lpUser->m_MagicSpeed = Dexterity / this->m_Data[lpUser->Class].MagicSpeedDiv;
#endif
}
void CKanturuTowerOfRefinement::SetState_NOTIFY1()
{
	LogAddC(5, "[Kanturu][TowerOfRefinement] State(%d) -> NOTIFY1",
		this->m_iTowerOfRefinementState);

	this->SetTowerOfRefinementState(KANTURU_TOWER_OF_REFINEMENT_NOTIFY1);
	this->SetEntrancePermit(TRUE);
	this->SetUseTowerOfRefinement(TRUE);
	KANTURU_UTIL.SendMsgKauturuMapUser(lMsg.Get(MSGGET(13, 29)));
}
void CRaklionSelupan::SetSelupanSkillDelay(int SkillDelay)
{
	if ( SkillDelay < 0 || SkillDelay > 50000 )
	{
		LogAddC(2,"[ RAKLION ][ SetSelupanSkillDelay ] SkillDelay error : Delay(%d)",this->m_iSelupanSkillDelay);
		return;
	}
	
	this->m_iSelupanSkillDelay = SkillDelay;
}
void CKanturuBattleOfNightmare::SetState_NONE()
{
	LogAddC(5, "[ KANTURU ][ BattleOfNightmare ] State(%d) -> NONE",
		this->m_iBattleOfNightmareState);

	this->SetBattleOfNightmareState(KANTURU_NIGHTMARE_NONE);
	TMonsterAIGroup::DelGroupInstance(this->m_iNightmareAIGroupNumber);

	LogAddTD("[ KANTURU ][ BattleOfNightmare ] DelGroupInstance SetState_NONE");
}
void CRaklionSelupan::SetSelupanObjIndex(int arg1)
{
	if ( arg1 < 0 || arg1 > OBJ_MAXMONSTER ) 
	{
		LogAddC(2,"[ RAKLION ][ SetSelupanObjIndex ] SelupanObjIndex error : Index(%d)", arg1);
		return;
	}

	this->m_iSelupanObjIndex = arg1;
}
int CRaklionSelupan::GetSelupanSkillDelay()
{
	if ( this->m_iSelupanSkillDelay < 0 || this->m_iSelupanSkillDelay > 50000 )
	{
		LogAddC(2,"[ RAKLION ][ GetSelupanSkillDelay ] SkillDelay error : Delay(%d)",this->m_iSelupanSkillDelay);
		return -1;
	}

	return this->m_iSelupanSkillDelay;
}
void CKanturuTowerOfRefinement::SetState_NONE()
{
	LogAddC(5, "[ KANTURU ][ TowerOfRefinement ] State(%d) -> NONE",
		this->m_iTowerOfRefinementState);

	this->SetTowerOfRefinementState(KANTURU_TOWER_OF_REFINEMENT_NONE);
	this->SetEntrancePermit(FALSE);
	this->SetUseTowerOfRefinement(FALSE);
	g_KanturuBattleUserMng.ResetAllData();
}
void CKanturuTowerOfRefinement::SetState_CLOSE()
{
	LogAddC(5, "[ KANTURU ][ TowerOfRefinement ] State(%d) -> CLOSE",
		this->m_iTowerOfRefinementState);

	this->SetTowerOfRefinementState(KANTURU_TOWER_OF_REFINEMENT_CLOSE);
	this->SetEntrancePermit(FALSE);
	this->SetUseTowerOfRefinement(TRUE);
	KANTURU_UTIL.SendMsgKauturuMapUser(lMsg.Get(MSGGET(13, 30)));
}
void CRaklionBattleOfSelupan::SetState_STANDBY()
{
	LogAddC(5, "[ RAKLION ][ BattleOfSelupan ] State(%d) -> STANDBY", this->m_iBattleOfSelupanState);
	
	this->m_RaklionSelupan.InitSelupanObjIndex();
	this->m_RaklionSelupan.CreateSelupan();
	this->m_RaklionSelupan.SelupanAct_BerserkCansel();
	
	this->SetBattleOfSelupanState(SELUPAN_STATE_STANDBY);
}
示例#27
0
BOOL CCashShop::CGCashShopOpen(LPOBJ lpObj, PMSG_REQ_CASHSHOPOPEN * lpMsg)
{
	BYTE btResult = 0;

	if ( this->bCashItemListReload == TRUE )
	{
		btResult = 6;
	}

	if ( g_bConnectShopServer == TRUE && g_bShopServerConnectState == FALSE )
	{
		btResult = 6;
	}

	if ( !gObjIsAccontConnect(lpObj->m_Index, lpObj->AccountID))
	{
		LogAddC(2, lMsg.Get(MSGGET(1, 175)), lpObj->AccountID, lpObj->m_Index);
		return FALSE;
	}

	if ( lpObj->Connected <= PLAYER_LOGGED || lpObj->CloseCount != -1 )
		return FALSE;

	if ( lpMsg->btShopOpenType == 1 )
	{
		if ( lpObj->m_IfState.use > 0 )
		{
			btResult = 8;
		}

		if ( btResult == 0 )
		{
			lpObj->m_IfState.use = 1;
			lpObj->m_IfState.type = 19;
			lpObj->m_IfState.state = 1;
			this->CGCashPoint(lpObj);
		}
	}
	else if ( lpMsg->btShopOpenType == 0 )
	{
		lpObj->m_IfState.use = 0;
		lpObj->m_IfState.type = 0;
		lpObj->m_IfState.state = 0;
	}

	PMSG_ANS_CASHSHOPOPEN pMsg;

	pMsg.btResult = btResult;

	PHeadSubSetB((LPBYTE)&pMsg, 0xF5, 0x02, sizeof(PMSG_ANS_CASHSHOPOPEN));

	DataSend(lpObj->m_Index, (LPBYTE)&pMsg, pMsg.head.size);

	return TRUE;
}
void CRaklionBattleOfSelupan::SetState_PATTERN_4()
{
	LogAddC(5, "[ RAKLION ][ BattleOfSelupan ] State(%d) -> PATTERN_4 // Life(%d/4800000)", this->m_iBattleOfSelupanState,this->m_RaklionSelupan.GetSelupanLife());
	
	if ( this->m_RaklionSelupan.GetBerserkIndex() != 2 )
	{
		this->m_RaklionSelupan.SelupanAct_Berserk2();
	}
	
	this->SetBattleOfSelupanState(SELUPAN_STATE_PATTERN_4);
}
示例#29
0
void cPostServer::vLogAddTD(char* szLog, ...)
{
	char szBuffer[512]="";
	
	va_list pArguments;
	
	va_start( pArguments,  szLog);	// review
	vsprintf(szBuffer, szLog, pArguments);
	va_end(pArguments);

	LogAddC(4,"[%s] %s",this->m_Name,szBuffer);
}
示例#30
0
void cExtraServer::vLogAddC(BYTE Color, char* szLog, ...)
{
	char szBuffer[512]="";
	
	va_list pArguments;
	
	va_start( pArguments,  szLog);	// review
	vsprintf(szBuffer, szLog, pArguments);
	va_end(pArguments);

	LogAddC(Color,"[%s] %s",this->m_Name,szBuffer);
}