- Joined
- Mar 4, 2012
- Messages
- 326
- Reaction score
- 22
SOLVED..
Thanks to ShadowDragon and Worf..
Thanks to ShadowDragon and Worf..

Last edited:

void CRandomOptionProperty::AwakeningExtension( void )
{
int anDst[eAwakeningExtension][6] =
{
[COLOR=#ff0000]DST_CHR_CHANCECRITICAL, DST_ATKPOWER, DST_SPELL_RATE, DST_ATTACKSPEED, DST_MP_MAX, DST_FP_MAX[/COLOR],
[COLOR=#008000] DST_CRITICAL_BONUS, DST_SPEED, DST_ADJDEF, DST_HP_MAX, DST_MP_MAX, DST_FP_MAX,[/COLOR]
[COLOR=#0000cd]DST_STR, DST_DEX, DST_INT, DST_STA, DST_MP_MAX, DST_FP_MAX[/COLOR]
};
int anTotal[eAwakeningExtension];
memset( anTotal, 0, sizeof(int) * eAwakeningExtension );
for( DWORD i = 0; i < m_aRandomOption[eAwakening].size(); i++ )
{
RANDOM_OPTION* pRandomOption = &m_aRandomOption[eAwakening][i];
int nProb = ( i == 0?
m_aRandomOption[eAwakening][i].nProb:
m_aRandomOption[eAwakening][i].nProb - m_aRandomOption[eAwakening][i-1].nProb );
for( int j = 0; j < eAwakeningExtension; j++ )
{
int iRandomOptionKindIndex = GetRandomOptionKindIndex( eAwakening, PARTS_HAND + j );
for( int k = 0;[COLOR=#ff0000] k < 6[/COLOR]; k++ )
if( pRandomOption->nDst == anDst[j][k] )
{
RANDOM_OPTION ro( pRandomOption );
ro.nProb = anTotal[j] + nProb;
anTotal[j] = ro.nProb;
m_aRandomOption[iRandomOptionKindIndex].push_back( ro );
oh wow.. thanks for the info man.. so if i add like 3 new awakening at the last line.. the helm and the suit will also get that awake?
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_UPPER_BODY:
//case PARTS_RWEAPON:
//case PARTS_SHIELD:
#ifdef __WEAP_OWN_AWAKE
{
if( pProp->dwItemKind1 == IK1_WEAPON || pProp->dwItemKind3 == IK3_SHIELD )
return static_cast<int>( eWeapAwakening );
}
#endif // __WEAP_OWN_AWAKE
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_RWEAPON:
case PARTS_SHIELD:
#ifdef __WEAP_OWN_AWAKE
return static_cast<int>( eWeapAwakening );
#endif // __WEAP_OWN_AWAKE
case PARTS_UPPER_BODY:
@Shadow, almost certain adding a new awakening type will not work with only this...
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_RWEAPON:
case PARTS_SHIELD:
#ifdef __WEAP_OWN_AWAKE
return static_cast<int>( eWeapAwakening );
#endif // __WEAP_OWN_AWAKE
case PARTS_UPPER_BODY:
void CRandomOptionProperty::AwakeningExtension( void )
{
int anDst[eAwakeningExtension][6] =
{
[COLOR=#ff0000]DST_CHR_CHANCECRITICAL, DST_ATKPOWER, DST_SPELL_RATE, DST_ATTACKSPEED, DST_MP_MAX, DST_FP_MAX[/COLOR],
[COLOR=#008000] DST_CRITICAL_BONUS, DST_SPEED, DST_ADJDEF, DST_HP_MAX, DST_MP_MAX, DST_FP_MAX,[/COLOR]
[COLOR=#0000cd]DST_STR, DST_DEX, DST_INT, DST_STA, DST_MP_MAX, DST_FP_MAX[/COLOR]
};
int anDst[eAwakeningExtensionEx][6] =
{
[COLOR=#008000]DST_CRITICAL_BONUS, DST_SPEED, DST_ADJDEF, DST_HP_MAX, DST_MP_MAX, DST_FP_MAX, //<-- Make this the shield[/COLOR]
[COLOR=#0000cd]DST_STR, DST_DEX, DST_INT, DST_STA, DST_MP_MAX, DST_FP_MAX //<-- Make this the weapon[/COLOR]
};
int combination = eAwakeningExtension + eAwakeningExtensionEx;
int anTotal[combination];
memset( anTotal, 0, sizeof(int) * combination );
for( DWORD i = 0; i < m_aRandomOption[eAwakening].size(); i++ )
{
RANDOM_OPTION* pRandomOption = &m_aRandomOption[eAwakening][i];
int nProb = ( i == 0?
m_aRandomOption[eAwakening][i].nProb:
m_aRandomOption[eAwakening][i].nProb - m_aRandomOption[eAwakening][i-1].nProb );
for( int j = 0; j < eAwakeningExtension; j++ )
{
int iRandomOptionKindIndex = GetRandomOptionKindIndex( eAwakening, PARTS_HAND + j );
for( int k = 0;[COLOR=#ff0000] k < 6[/COLOR]; k++ )
if( GetRandomOptionKindIndex( eAwakening, PARTS_RWEAPON || PARTS_SHIELD) )
return;
if( pRandomOption->nDst == anDst[i][l] )
{
RANDOM_OPTION ro( pRandomOption );
ro.nProb = anTotal[i] + nProb;
anTotal[i] = ro.nProb;
m_aRandomOption[iRandomOptionKindIndex].push_back( ro );
}
for( int i = 0; i < eAwakeningExtensionEx; i++ )
{
int iRandomOptionKindIndex = GetRandomOptionKindIndex( eAwakening, PARTS_RWEAPON || PARTS_SHIELD + i );
for( int l = 0;[COLOR=#ff0000] l < 6[/COLOR]; l++ )
if( pRandomOption->nDst == anDst[i][l] )
{
RANDOM_OPTION ro( pRandomOption );
ro.nProb = anTotal[i] + nProb;
anTotal[i] = ro.nProb;
m_aRandomOption[iRandomOptionKindIndex].push_back( ro );
}
case II_SYS_SYS_SCR_AWAKE:
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}
break;
case II_SYS_SYS_SCR_AWAKE:
{
#ifdef __WEAP_OWN_AWAKE
if( pTarget->GetProp()->dwParts == PARTS_RWEAPON || pTarget->GetProp()->dwParts == PARTS_SHIELD )
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eWeapAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
else
#endif
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}
break;

#ifdef __WEAP_OWN_AWAKE
if( pTarget->GetProp()->dwParts == PARTS_RWEAPON || pTarget->GetProp()->dwParts == PARTS_SHIELD )
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eWeapAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
else
#endif
HOLY ****!! hahahaha.. sorry bout that.. It did work..
Thank you guys.. can I remove the first post?
Again, thank you so much guys..
Edit:
oh I forgot to tell.. I tweaked the:
Code:#ifdef __WEAP_OWN_AWAKE if( pTarget->GetProp()->dwParts == PARTS_RWEAPON || pTarget->GetProp()->dwParts == PARTS_SHIELD ) b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eWeapAwakening, 0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01, "r", "::Awake" ); else #endif
cause I have the baruna awakening.. and I added eWeapAwakening to the II_SYS_SYS_SCR_AWAKECANCEL so I can remove the awakenings..
Thanks again guys..