You must be registered to see links
KEYWORD to SEARCH ITEM_ANTI_REVERT, EMANTIREVERT
Desc : Prevent Item From reverting to 0 & termination.
Idea not mine..
code added by review000
Credit to the person who owned this idea thanks
No Hate
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!You must be registered to see links
KEYWORD to SEARCH ITEM_ANTI_REVERT, EMANTIREVERT
Desc : Prevent Item From reverting to 0 & termination.
Idea not mine..
code added by review000
Credit to the person who owned this idea thanks
No Hate
BOOL DOGRINDING(SITEMCUSTOM &sCusItem,
const SITEM *pHold,
bool &bRESET,
bool &bTERMINATE,
bool &bNOFAIL, //add nofailups
bool &bNOREVERT, //add norevert
EMANTIDISAPPEAR &emANTIDISAPPEAR );
BOOL GLCHARLOGIC:OGRINDING(SITEMCUSTOM &sCusItem,
const SITEM *pHold,
bool &_bRESET,
bool &_bTERMINATE,
bool &_bNOFAIL, //add nofailups
bool &_bNOREVERT, //add norevert
EMANTIDISAPPEAR &emANTIDISAPPEAR )
{
bool bSUCCEED(false);
_bRESET = false;
_bTERMINATE = false;
const EMGRINDING_TYPE emGRINDING = pHold->sGrindingOp.emTYPE;
BYTE cGRADE = sCusItem.GETGRADE(emGRINDING);
if (emGRINDING == EMGRINDING_DAMAGE || emGRINDING == EMGRINDING_DEFENSE)
{
if (cGRADE >= GLCONST_CHAR::wGRADE_MAX) return FALSE;
}
else
{
if (cGRADE >= GLCONST_CHAR::wGRADE_MAX_REGI) return FALSE;
}
if ( cGRADE >= GRADE_NORMAL && !_bNOFAIL ) //add nofailups
{
float fRATE = GLCONST_CHAR::fGRADE_RATE[cGRADE];
BOOL bOK = RANDOM_GEN(fRATE);
if (!bOK)
{
//add norevert
if (!_bNOREVERT)
{
float fRESET = GLCONST_CHAR::fGRADE_RESET_RATE[cGRADE];
bOK = RANDOM_GEN(fRESET);
if (bOK)
{
_bRESET = true;
sCusItem.ResetGrind(emGRINDING);
bool bTER = GLCONST_CHAR::bENCHANT_TERMINATE_ITEM && (emGRINDING == EMGRINDING_DAMAGE || emGRINDING == EMGRINDING_DEFENSE);
if (bTER)
{
float fTERMINATE = GLCONST_CHAR::fGRADE_TERMINATE_RATE[cGRADE];
bOK = RANDOM_GEN(fTERMINATE);
if (bOK)
{
if (emANTIDISAPPEAR == EMANTIDISAPPEAR_ON)
{
emANTIDISAPPEAR = EMANTIDISAPPEAR_USE;
}
else
{
_bTERMINATE = true;
}
}
}
}
}
return FALSE;
}
}
switch (pHold->sGrindingOp.emTYPE)
{
case EMGRINDING_DAMAGE: sCusItem.cDAMAGE++; break;
case EMGRINDING_DEFENSE: sCusItem.cDEFENSE++; break;
case EMGRINDING_RESIST_FIRE: sCusItem.cRESIST_FIRE++; break;
case EMGRINDING_RESIST_ICE: sCusItem.cRESIST_ICE++; break;
case EMGRINDING_RESIST_ELEC: sCusItem.cRESIST_ELEC++; break;
case EMGRINDING_RESIST_POISON: sCusItem.cRESIST_POISON++; break;
case EMGRINDING_RESIST_SPIRIT: sCusItem.cRESIST_SPIRIT++; break;
};
return TRUE;
}
HRESULT GLChar::MsgReqInvenGrinding ( NET_MSG_GENERIC* nmg )
bool bNoRevert = pHold->sBasicOp.IsNoRevert(); //add norevert
BOOL bSucceeded = DOGRINDING ( pInvenItem->sItemCustom, pHold, bRESET, bTERMINATE, bNoFail, bNoRevert, emANTIDISAPPEAR ); //add norevert
bool IsCoolTime() { return ( dwCoolTime != 0 ); }
bool IsNoRevert() { return(dwFlags&ITEM_NO_REVERT) != NULL; } //add norevert
ITEM_NO_REVERT = 0x8000, //add norevert
SetWin_Check(this, IDC_CHECK_NOREVERT, m_pDummyItem->sBasicOp.dwFlags&ITEM_NO_REVERT); //add norevert
SetCheck_Flags(GetWin_Check(this, IDC_CHECK_NOREVERT), m_pDummyItem->sBasicOp.dwFlags, ITEM_NO_REVERT);//add norevert