i dont know ;)...
someone tested crywolf event? ;>
My Feather Mix:
Code:
BOOL ThirdWingLevel1ChaosMix(LPOBJ lpObj)
{
/////////////////////////////////////////////////////////////////////////////
// Ustalamy poczatkowe wartosci //
/////////////////////////////////////////////////////////////////////////////
lpObj->ChaosLock = TRUE; // Blokujemy Chaos Box
int WingCount = 0;
int ChoasGemCount = 0;
int BundleOfSoulCount = 0;
int JewelOfCreationCount = 0;
int SetItemCount = 0;
int WingIndex = -1;
int iChaosMoney = 0;
int iCharmOfLuckCount = 0;
/////////////////////////////////////////////////////////////////////////////
// Pobranie potrzebnej ilosci zen //
/////////////////////////////////////////////////////////////////////////////
int nChaosNeedMoney = 1200000;
int iChaosTaxMoney = (int)((__int64)nChaosNeedMoney * (__int64)g_CastleSiegeSync.GetTaxRateChaos(lpObj->m_Index) / (__int64)100);
if ( iChaosTaxMoney < 0 )
{
iChaosTaxMoney = 0;
}
nChaosNeedMoney += iChaosTaxMoney;
if ( nChaosNeedMoney < 0 )
{
nChaosNeedMoney = 0;
}
if ( lpObj->Money < nChaosNeedMoney )
{
pMsg.Result = CB_NOT_ENOUGH_ZEN;
DataSend(lpObj->m_Index, (BYTE *)&pMsg, pMsg.h.size);
lpObj->ChaosLock = FALSE;
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// Pobranie zawartości pralki //
/////////////////////////////////////////////////////////////////////////////
for ( int n=0;n<CHAOS_BOX_SIZE;n++)
{
// sprawdzamy czy pole to na pewno przedmiot
if ( lpObj->pChaosBox[n].IsItem() == TRUE )
{
if ( (lpObj->pChaosBox[n].m_Type >= ITEMGET(12,3) && lpObj->pChaosBox[n].m_Type <= ITEMGET(12,6)))
{
if ( lpObj->pChaosBox[n].m_Level >= 9 && lpObj->pChaosBox[n].m_Option3 >= 1 )
{
WingCount++;
WingIndex = n;
}
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(13,30) ) // Cape of lord
{
if ( lpObj->pChaosBox[n].m_Level >= 9 && lpObj->pChaosBox[n].m_Option3 >= 1 )
{
WingCount++;
WingIndex = n;
}
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(12,15) ) // Chaos
{
ChoasGemCount++;
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(12,31) ) // Bundle of Soul
{
BundleOfSoulCount++;
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(14,22) ) // Jewel of Creation
{
JewelOfCreationCount++;
}
else if ( lpObj->pChaosBox[n].m_Type == ITEMGET(14,53) ) // Charm Of Luck
{
iCharmOfLuckCount += (int)lpObj->pChaosBox[n].m_Durability;
}
else if ( lpObj->pChaosBox[n].IsExtItem() == FALSE ) //Non Exc Item
{
if ( lpObj->pChaosBox[n].m_Level >= 7 && lpObj->pChaosBox[n].m_Option3 >= 1 )
{
if ( gSetItemOption.IsSetItem(lpObj->pChaosBox[n].m_Type) != FALSE ) //Set Item
{
SetItemCount++;
iChaosMoney += lpObj->pChaosBox[n].m_BuyMoney;
}
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
// Ustawienie nagłówka błędu //
/////////////////////////////////////////////////////////////////////////////
PMSG_CHAOSMIXRESULT pMsg;
PHeadSetB((LPBYTE)&pMsg.h, 0x86, sizeof(PMSG_CHAOSMIXRESULT));
pMsg.Result = CB_ERROR;
/////////////////////////////////////////////////////////////////////////////
// Test 01 //
/////////////////////////////////////////////////////////////////////////////
if ( WingCount == 1 && JewelOfCreationCount == 1 &&
ChoasGemCount == 1 && BundleOfSoulCount == 1 &&
JewelOfCreationCount == 1 && SetItemCount == 1 )
{
if ( Random(0,99) < 100 )
{
// Czyscimy Chaos Goblina
for (int n=0;n<CHAOS_BOX_SIZE;n++)
{
lpObj->pChaosBox[n].Clear();
}
// Tworzymy przedmiot !!!
int iItemType = 13;
int iItemSubType = 53;
int iWingNum = ITEMGET(iItemType, iItemSubType);
::ItemSerialCreateSend(lpObj->m_Index, -1, 0, 0, iWingNum, 0, 0, 0, 0, 0, -1, 0, 0);
::gObjInventoryCommit(lpObj->m_Index);
LogAdd("[ThirdWing Mix][Level 01] [%s][%s] CBMix Success %d Money : %d-%d, CharmRate : %d",
lpObj->AccountID, lpObj->Name, lpObj->ChaosSuccessRate, lpObj->Money, nChaosNeedMoney, iCharmOfLuckCount);
return TRUE;
}else{
lpObj->Money -= nChaosNeedMoney;
g_CastleSiegeSync.AddTributeMoney(iChaosTaxMoney);
GCMoneySend(lpObj->m_Index, lpObj->Money);
// Czyscimy Chaos Goblina
for (int n=0;n<CHAOS_BOX_SIZE;n++)
{
lpObj->pChaosBox[n].Clear();
}
GCUserChaosBoxSend(lpObj, 0);
DataSend(lpObj->m_Index, (BYTE *)&pMsg, pMsg.h.size);
LogAdd("[ThirdWing Mix][Level 01] [%s][%s] CBMix Fail %d Money : %d-%d, CharmRate : %d",
lpObj->AccountID, lpObj->Name, lpObj->ChaosSuccessRate, lpObj->Money, nChaosNeedMoney, iCharmOfLuckCount);
lpObj->ChaosLock = FALSE;
return FALSE;
}
}else{
lpObj->Money -= nChaosNeedMoney;
g_CastleSiegeSync.AddTributeMoney(iChaosTaxMoney);
GCMoneySend(lpObj->m_Index, lpObj->Money);
lpObj->ChaosLock = FALSE;
pMsg.Result = CB_INCORRECT_MIX_ITEMS;
DataSend(lpObj->m_Index, (BYTE *)&pMsg, pMsg.h.size);
return FALSE;
}
}
- look here: Random(0,99) < 100 you have change 100 to mix success %
Fix for GM Attack:
find all
Code:
if ( !IsGM(aIndex) || GMAttack )
change to
Code:
//if ( !IsGM(aIndex) || GMAttack )
or remove :)
HOW TO BLOCK AUTOKILL? (SERVER SIDE)