📄 rareeffectmgr.cpp
字号:
{
SkillMgr.SetCanViewTrap(caster,0);
}
}
else
{
if(GetStaticRareTraping(caster->StaticRare))
{
SkillMgr.SetCanViewTrap(caster,5);
}
}
return 0;
}
inline int CRareEffectMgr::CheckFaultStaticRareType(const int iKind)const
{
//力累 啊瓷 殿殿狼 炼扒阑 持绢霖促
if( iKind > MAX_ITEM_RARE || iKind < 1 ) { return 0; }
return 1;
}
inline int CRareEffectMgr::CheckFaultDynamicRareType(const int iKind)const
{
//力累 啊瓷 殿殿狼 炼扒阑 持绢霖促
if( iKind > MAX_ITEM_FUNCTION || iKind < 1 ) { return 0; }
return 1;
}
inline int CRareEffectMgr::CheckFaultRareGrade(const int iGrade)const
{
//力累 啊瓷 殿殿狼 炼扒阑 持绢霖促
if( iGrade > MAX_ITEM_GRADE || iGrade < 1 ) { return 0; }
return 1;
}
inline int CRareEffectMgr::GetStaticRareEffectValue(const int iKind, const int iGrade)const
{
if(!CheckFaultStaticRareType(iKind)){ return 0;}
if(!CheckFaultRareGrade(iGrade)){ return 0;}
return ItemRare[iKind].GRADE[iGrade];
}
inline int CRareEffectMgr::GetDynamicRareEffectValue(const int iKind, const int iGrade)const
{
if(!CheckFaultDynamicRareType(iKind)){ return 0;}
if(!CheckFaultRareGrade(iGrade)){ return 0;}
return ItemFunction[iKind].iGrade[iGrade];
}
inline DWORD CRareEffectMgr::GetDynamicRareEffectTime(const int iKind, const int iGrade)const
{
if(!CheckFaultDynamicRareType(iKind)){ return 0;}
if(!CheckFaultRareGrade(iGrade)){ return 0;}
return ItemFunction[iKind].iTime[iGrade];
}
inline short CRareEffectMgr::GetStaticRareMaxValue(const int iKind)const
{
if(!CheckFaultStaticRareType(iKind)){ return 0;}
const short nMax = (short)ItemRare[iKind].GRADE[0];//0锅捞 钙胶促
return nMax;
}
inline int CRareEffectMgr::GetDynamicRareMaxValue(const int iKind)const
{
return 0;
}
inline int CRareEffectMgr::AddANDCheckStaticRareMaxValue(const int iKind,short &nNow, const int iAddValue,bool bSymbol)//soto-1.02
{
int iMax = 0;
int iAdded = 0;
if(bSymbol)
{
nNow += iAddValue;
}
else
{
iMax = GetStaticRareMaxValue(iKind);
iAdded = nNow+iAddValue;//歹秦柳 蔼
if( !iMax ) { return 0; }//钙胶蔼捞 0 牢芭绰 扁瓷 绝促.
if( iMax <= iAdded )//钙胶 焊促 歹秦 初篮 蔼捞 歹 腹栏搁
{
nNow = iMax;//钙胶肺 悸泼
}
else
{
nNow = iAdded;
}
if(nNow < 0)
{
nNow = 0;
}
}
return 1;
}
//soto-1.02
inline int CRareEffectMgr::ApplyStaticRareEffect(STATICRAREEFFECT &SR, const int iKind, const int iGrade,bool bSymbol)
{
int iValue = 0;
if(bSymbol)
{
iValue = iGrade; //缴杭 酒捞袍老锭绰. iGrade 函荐啊 角力 利侩蔼栏肺 静牢促.
}
else
{
iValue = GetStaticRareEffectValue(iKind,iGrade);
}
if( !iValue ) {return 0;}
switch(iKind)
{
case RARE_POWER :{AddANDCheckStaticRareMaxValue(iKind, SR.nPower , iValue); }break;
case RARE_ACCURATE :{AddANDCheckStaticRareMaxValue(iKind, SR.nAccurate , iValue); }break;
case RARE_WISE :{AddANDCheckStaticRareMaxValue(iKind, SR.nWise , iValue); }break;
case RARE_BEAR :{AddANDCheckStaticRareMaxValue(iKind, SR.nBear , iValue); }break;
case RARE_DISTANT :{AddANDCheckStaticRareMaxValue(iKind, SR.nDistant , iValue); }break;
// case RARE_VIGOR :{AddANDCheckStaticRareMaxValue(iKind, SR.nVigor , iValue); }break;
case RARE_VIGOR :{AddANDCheckStaticRareMaxValue(iKind, SR.nPower , iValue); }break; //厚芭客 颇况 烹钦
case RARE_CURSE :{AddANDCheckStaticRareMaxValue(iKind, SR.nCurse , iValue); }break;
case RARE_AID :{AddANDCheckStaticRareMaxValue(iKind, SR.nAid , iValue); }break;
case RARE_MASKING :{AddANDCheckStaticRareMaxValue(iKind, SR.nMasking , iValue); }break;
// case RARE_PIERCING :{AddANDCheckStaticRareMaxValue(iKind, SR.nPiercing , iValue); }break;
case RARE_PIERCING :{AddANDCheckStaticRareMaxValue(iKind, SR.nPower , iValue); }break;//020823 lsw
case RARE_BASIC_RESIST :{AddANDCheckStaticRareMaxValue(iKind, SR.nBasicResist , iValue); }break;
case RARE_HARDEST :{AddANDCheckStaticRareMaxValue(iKind, SR.nHardest , iValue); }break;
case RARE_SMART :{AddANDCheckStaticRareMaxValue(iKind, SR.nSmart , iValue); }break;
case RARE_RESIST_FREEZE :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_freeze , iValue); }break;
case RARE_RESIST_VENOM :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_venom , iValue); }break;
case RARE_RESIST_LIGHTNING :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_lightning , iValue); }break;
case RARE_RESIST_BLAZE :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_blaze , iValue); }break;
case RARE_RESIST_PARALYSIS :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_paralysis , iValue); }break;
case RARE_RESIST_HOLY :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_holy , iValue); }break;
case RARE_RESIST_ALL :{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_all , iValue); }break;
case RARE_SPEED :{AddANDCheckStaticRareMaxValue(iKind, SR.nSpeed , iValue); }break;
case RARE_LIFE :{AddANDCheckStaticRareMaxValue(iKind, SR.nLife , iValue); }break;
case RARE_MANA :{AddANDCheckStaticRareMaxValue(iKind, SR.nMana , iValue); }break;
case RARE_DIVINE :{AddANDCheckStaticRareMaxValue(iKind, SR.nDivine , iValue); }break;
case RARE_HEALTH :{AddANDCheckStaticRareMaxValue(iKind, SR.nHealth , iValue); }break;
case RARE_BROOD :{AddANDCheckStaticRareMaxValue(iKind, SR.nBrood , iValue); }break;
case RARE_MIND :{AddANDCheckStaticRareMaxValue(iKind, SR.nMind , iValue); }break;
case RARE_SPIRIT :{AddANDCheckStaticRareMaxValue(iKind, SR.nSpirit , iValue); }break;
case RARE_YOUTH :{AddANDCheckStaticRareMaxValue(iKind, SR.nYouth , iValue); }break;
case RARE_FATAL :{AddANDCheckStaticRareMaxValue(iKind, SR.nFatal , iValue); }break;
case RARE_MAGIC :{AddANDCheckStaticRareMaxValue(iKind, SR.nMagic , iValue); }break;
case RARE_NATURE :{AddANDCheckStaticRareMaxValue(iKind, SR.nNature , iValue); }break;
case RARE_STRENGTH :{AddANDCheckStaticRareMaxValue(iKind, SR.nStrength , iValue); }break;
case RARE_DEXTERITY :{AddANDCheckStaticRareMaxValue(iKind, SR.nDexterity , iValue); }break;
case RARE_CONSTITUTION :{AddANDCheckStaticRareMaxValue(iKind, SR.nConstitution , iValue); }break;
case RARE_WISDOM :{AddANDCheckStaticRareMaxValue(iKind, SR.nWisdom , iValue); }break;
case RARE_INTELLIGENCE :{AddANDCheckStaticRareMaxValue(iKind, SR.nIntelligence , iValue); }break;
case RARE_CHARISMA :{AddANDCheckStaticRareMaxValue(iKind, SR.nCharisma , iValue); }break;
case RARE_ENDURANCE :{AddANDCheckStaticRareMaxValue(iKind, SR.nEndurance , iValue); }break;
case RARE_MOVEMENT :{AddANDCheckStaticRareMaxValue(iKind, SR.nMovement , iValue); }break;
case RARE_MORAL :{AddANDCheckStaticRareMaxValue(iKind, SR.nMoral , iValue); }break;
case RARE_LUCKY :{AddANDCheckStaticRareMaxValue(iKind, SR.nLucky , iValue); }break;
case RARE_WIZARD :{AddANDCheckStaticRareMaxValue(iKind, SR.nWizard , iValue); }break;
case RARE_PRIEST :{AddANDCheckStaticRareMaxValue(iKind, SR.nPriest , iValue); }break;
// case RARE_MAGIC_POWER :{AddANDCheckStaticRareMaxValue(iKind, SR.nMagic_power , iValue); }break;
case RARE_MAGIC_VIGOR :{AddANDCheckStaticRareMaxValue(iKind, SR.nMagic_vigor , iValue); }break;
case RARE_MAGIC_STAY :{AddANDCheckStaticRareMaxValue(iKind, SR.nMagic_stay , iValue); }break;
// case RARE_NATURE_POWER :{AddANDCheckStaticRareMaxValue(iKind, SR.nNature_power , iValue); }break;
case RARE_NATURE_VIGOR :{AddANDCheckStaticRareMaxValue(iKind, SR.nNature_vigor , iValue); }break;
case RARE_NATURE_STAY :{AddANDCheckStaticRareMaxValue(iKind, SR.nNature_stay , iValue); }break;
// case RARE_LIFE_RECOVERY :{AddANDCheckStaticRareMaxValue(iKind, SR.cLife_recovery , iValue); }break;
// case RARE_MANA_RECOVERY :{AddANDCheckStaticRareMaxValue(iKind, SR.cMana_recovery , iValue); }break;
case RARE_CRITICAL :{AddANDCheckStaticRareMaxValue(iKind, SR.nCritical , iValue); }break;
// case RARE_GUARDIAN :{AddANDCheckStaticRareMaxValue(iKind, SR.nGuardian , iValue); }break;
case RARE_EVASION :{AddANDCheckStaticRareMaxValue(iKind, SR.nEvasion , iValue); }break;
case RARE_56 :{ }break;
case RARE_57 :{ }break;
case RARE_58 :{ }break;
case RARE_59 :{ }break;
case RARE_60 :{ }break;
case RARE_61 :{ }break;
case RARE_62 :{ }break;
case RARE_63 :{ }break;
case RARE_64 :{ }break;
case RARE_65 :{ }break;
case RARE_66 :{ }break;
case RARE_67 :{ }break;
case RARE_WITCH :{AddANDCheckStaticRareMaxValue(iKind, SR.nWitch , iValue); }break;
case RARE_DEVIL :{AddANDCheckStaticRareMaxValue(iKind, SR.nDevil , iValue); }break;
case RARE_DESIRE :{AddANDCheckStaticRareMaxValue(iKind, SR.nDesire , iValue); }break;
case RARE_ROBBER :{AddANDCheckStaticRareMaxValue(iKind, SR.nRobber , iValue); }break;
case RARE_EVIL :{AddANDCheckStaticRareMaxValue(iKind, SR.nEvil , iValue); }break;
case RARE_SATAN :{AddANDCheckStaticRareMaxValue(iKind, SR.nSatan , iValue); }break;
case RARE_WEARY :{AddANDCheckStaticRareMaxValue(iKind, SR.nWeary , iValue); }break;
case RARE_FATIGUE :{AddANDCheckStaticRareMaxValue(iKind, SR.nFatigue , iValue); }break;
case RARE_COUNTERATTACK :{AddANDCheckStaticRareMaxValue(iKind, SR.nCounterattack , iValue); }break;
case RARE_STRIKE :{AddANDCheckStaticRareMaxValue(iKind, SR.nStrike , iValue); }break;
// case RARE_78 :{ }break;
case RARE_SNAG :{AddANDCheckStaticRareMaxValue(iKind, SR.nSnag , iValue); }break;
case RARE_VERTIGLY :{AddANDCheckStaticRareMaxValue(iKind, SR.nVertigly , iValue); }break;
case RARE_POISON :{AddANDCheckStaticRareMaxValue(iKind, SR.nPoison , iValue); }break;
case RARE_STIFF :{AddANDCheckStaticRareMaxValue(iKind, SR.nStiff , iValue); }break;
case RARE_SLACK :{AddANDCheckStaticRareMaxValue(iKind, SR.nSlack , iValue); }break;
// case RARE_84 :{ }break;
case RARE_GHOST :{AddANDCheckStaticRareMaxValue(iKind, SR.nGhost , iValue); }break;
case RARE_LANDMINE :{AddANDCheckStaticRareMaxValue(iKind, SR.nLandmine , iValue); }break;
case RARE_TRAPING :{AddANDCheckStaticRareMaxValue(iKind, SR.nTraping , iValue); }break;
case RARE_DETECT ://滴啊瘤甫 钦模 瓤苞
{
AddANDCheckStaticRareMaxValue(RARE_LANDMINE, SR.nLandmine , iValue);
AddANDCheckStaticRareMaxValue(RARE_TRAPING, SR.nTraping , iValue);
}
break;
case RARE_HIGH_POWER:{AddANDCheckStaticRareMaxValue(iKind, SR.nHighPower , iValue); }break;
case RARE_HIGH_SHIELD:{AddANDCheckStaticRareMaxValue(iKind, SR.nHighShield , iValue); }break;
case RARE_HIGH_BLOOD:{AddANDCheckStaticRareMaxValue(iKind, SR.nHighBlood , iValue); }break;
case RARE_HIGH_MAGIC:{AddANDCheckStaticRareMaxValue(iKind, SR.nHighMagic , iValue); }break;
case RARE_HIGH_NATURE:{AddANDCheckStaticRareMaxValue(iKind, SR.nHighNature , iValue); }break;
case RARE_HIGH_RESIST_ALL:{AddANDCheckStaticRareMaxValue(iKind, SR.nResist_all , iValue); }break;
default :{return 0;} break;
}
return 1;
}
inline int CRareEffectMgr::AddANDCheckDynamicRareMaxValue(const int iKind,const int iValue)
{
return 0;
}
int CRareEffectMgr::ApplyDynamicRareEffect(void* ch, const int iKind, const int iGrade, const int iOrder)
{
const int iValue = GetDynamicRareEffectValue(iKind,iGrade);
const DWORD dwTime = GetDynamicRareEffectTime(iKind,iGrade);
CHARLIST *Caster = (CHARLIST*)ch;
if( !iValue ) {return 0;}
switch(iKind)//唱吝俊 康绢捞抚 叼颇牢栏肺 官曹巴 g_curr_time; 阑 荤侩 茄促
{
case FITEM_MOVABLE :
{
Caster->ClearCurse(1);
::SendCharacterCondition(Caster, 0);
}break; //付厚,籍拳,去鄂 秦力 付厚拌凯秦力
case FITEM_RECOVERY :
{
Caster->ClearCurse(2);
Caster->ClearCurse(6);
::SendCharacterCondition(Caster, 0);
}break; //加档历窍 秦力 加档历窍 秦力
case FITEM_DETOX :
{
Caster->ClearCurse(3);
::SendCharacterCondition(Caster, 0);
}break; //秦刀累侩 秦刀
case FITEM_ENLIGHT :
{
Caster->ClearCurse(4);
SendMagicCommand(Caster, SET_CUREBLIND, 0, 0); //矫仿惑角 雀汗
}break; //矫仿 雀汗 矫仿惑角
//case FITEM_NULL : // 5 NULL NULL
//case FITEM_NULL : // 6 NULL NULL
//case FITEM_REVIVAL : // 7 //磊悼 何劝 KillCharacter 俊 乐澜 case 巩俊辑 滑巴
case FITEM_COME_BACK : // 8 //付阑肺狼 蓖券 磊脚捞 加茄 惫啊狼 付阑肺 倒酒咳
{
MoveToHomeTown(Caster);
}break;
case FITEM_GHOST : // 23 //蜡飞阑 杭 荐 乐澜 蜡飞阑 杭 荐 乐澜
{
SkillMgr.SetCanViewGhost(Caster,dwTime);//郴何 俊辑 bCanViewGhost甫 true肺
}break;
//诀弊饭捞靛 啊瓷幅绰 捞芭 眉农
//CheckDynamicRareMaxValue
case FITEM_RESIST_UP :// 9 //葛电 拌凯 历亲仿 惑铰 葛电 拌凯 付过 历亲仿 惑铰
case FITEM_STEALTH :// 10 //捧疙 惑怕 蜡瘤 老沥 矫埃 捧疙 惑怕 蜡瘤
case FITEM_INVALID_CURSE :// 11 //历林 拌凯 付过 公瓤拳 惑措狼 历林 拌凯 付过 公瓤拳
case FITEM_INVALID_OFFENCE :// 12 //傍拜 拌凯 付过 公瓤拳 惑措狼 傍拜 拌凯 付过 公瓤拳
case FITEM_POWER_UP :// 13 //拱府利 傍拜仿 刘啊 拱府利 傍拜仿 刘啊(%)
case FITEM_SPEED_UP :// 14 //捞悼 加档 刘啊 捞悼 加档 (捞悼仿) 刘啊
case FITEM_HEAVY_ARMOR :// 15 //AC 刘啊 AC 荐摹 刘啊
case FITEM_SPELL_UP :// 16 //付过 单固瘤 刘气 付过 单固瘤 刘气(%)
//case FITEM_ :// 17 //付过 瘤加 矫埃 刘气 付过 瘤加 矫埃 刘气(msec)
case FITEM_CRITICAL :// 18 //CRITICAL DAMAGE 农府萍拿 单固瘤肺 拱府利 傍拜
case FITEM_STROKE : // 19 //拱府利 傍拜 己傍伏 100% 拱府利 傍拜 己傍伏 100%
case FITEM_AGILITY :// 20 //拱府利 傍拜 雀乔啦 90% 拱府利 傍拜 雀乔啦 90%
case FITEM_INVALID_PROTECT :// 21 //惑措狼 焊龋 拌凯 付过 公矫 惑措狼 焊龋 拌凯 付过阑 公炼扒 公矫窍咯 傍拜(拱府/付过 葛滴)
case FITEM_INVALID_RESIST :// 22 //惑措狼 付过 历亲仿 公矫 惑措狼 付过 历亲仿 公炼扒 公矫 (付过 历亲仿 0栏肺 利侩)
case FITEM_SAMARITAN : // 24 //NK狼 傍拜阑 公矫 NK狼 拱府利/付过 傍拜 葛滴 公矫
case FITEM_SLIGHT ://25 //付过 某胶泼 矫埃 窜绵 付过 某胶泼 矫埃 窜绵(%)
{
switch(iOrder)
{
case 1:
{
Caster->DynamicRare.cRareType1 = iKind;
Caster->DynamicRare.iValue1 = iValue;
Caster->DynamicRare.iRareTime1 = g_curr_time+dwTime;
}break;
case 2:
{
Caster->DynamicRare.cRareType2 = iKind;
Caster->DynamicRare.iValue2 = iValue;
Caster->DynamicRare.iRareTime2 = g_curr_time+dwTime;
}break;
case 3:
{
Caster->DynamicRare.cRareType3 = iKind;
Caster->DynamicRare.iValue3 = iValue;
Caster->DynamicRare.iRareTime3 = g_curr_time+dwTime;
}break;
default:break;
}
}break;
default:{return 0;}break;
}
return 1;
}
void ResetAbility(CHARLIST *ch)
{
if(!ch){return;}
RareEM.ResetRareEffect(ch);
g_CSymbolMgr.AddSymbolEffect(ch);//soto-1.02 缴杭狼 瓷仿阑 利侩矫挪促.
const int nPassive = ch->GetPassiveCombat();
ch->ResetAbility(nPassive);
::SendAbilityOpen(ch->GetServerID());
}
int CRareEffectMgr::GetDynamicRareValue(const int iDRType,const DYNAMICRAREEFFECT &DR) const
{
if(!iDRType ) {return 0;}
if(iDRType == DR.cRareType1)
{
return DR.iValue1;
}
if(iDRType == DR.cRareType2)
{
return DR.iValue2;
}
if(iDRType == DR.cRareType3)
{
return DR.iValue3;
}
return 0;
}
void CRareEffectMgr::AutoCheckDynamicRare(DYNAMICRAREEFFECT &DR)
{ //瓤侩 矫埃捞 粮犁窍绰单 辑滚 矫埃焊促 陋栏搁
if( DR.iRareTime1 && (g_curr_time > DR.iRareTime1))
{
DR.iRareTime1 = 0;
DR.cRareType1 = 0;
DR.iValue1 = 0;
}
if( DR.iRareTime2 && (g_curr_time > DR.iRareTime2))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -