📄 playerstats.cpp.svn-base
字号:
}
}
}
}
}
}
break;
case ONE_HAND_BUNT_SWORD://one hand blunt sword
attack += (UINT)floor( (Attr->Str + Attr->Estr)*0.75 + Stats->Level*0.2 + ((Attr->Str + Attr->Estr)*0.05 + 29) * weaponatk * 0.03333334 );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == ONE_HAND_WEAP_AP ||
cskills[i].thisskill->buff[j] == ONE_HAND_MELEE_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
break;
case TWO_HAND_SWORD://two hand sword
{
attack += (UINT)floor( (Attr->Str + Attr->Estr)*0.75 + Stats->Level*0.2 + ((Attr->Str + Attr->Estr)*0.05 + 29) * weaponatk * 0.03333334 );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == TWO_HAND_WEAP_AP ||
cskills[i].thisskill->buff[j] == TWO_HAND_SWORD_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case SPEAR://spear
{
attack += (UINT)floor( (Attr->Str + Attr->Estr)*0.75 + Stats->Level*0.2 + ((Attr->Str + Attr->Estr)*0.05 + 29) * weaponatk * 0.03333334 );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == TWO_HAND_WEAP_AP ||
cskills[i].thisskill->buff[j] == TWO_HAND_SPEAR_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case TWO_HAND_AXE://two hand axe
{
attack += (UINT)floor( (Attr->Str + Attr->Estr)*0.75 + Stats->Level*0.2 + ((Attr->Str + Attr->Estr)*0.05 + 29) * weaponatk * 0.03333334 );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == TWO_HAND_WEAP_AP ||
cskills[i].thisskill->buff[j] == TWO_HAND_AXE_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case BOW://bow
{
float arrows = 0;
if(items[132].count>0)
arrows = GServer->NaturalList.Index[items[132].itemnum]->quality*0.5;
attack += (UINT)floor((((Attr->Str + Attr->Estr) + Stats->Level)*0.1) + ((Attr->Dex + Attr->Edex)*0.04 + (Attr->Sen + Attr->Esen)*0.03 + 29) * weaponatk * 0.03333334 + (Attr->Dex+Attr->Edex)*0.52 + arrows);
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == BOW_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case GUN://gun
case DUAL_GUN://dual guns
{
float bullets = 0;
if(items[133].count>1)
bullets = GServer->NaturalList.Index[items[133].itemnum]->quality * 0.8;
attack += (UINT)floor( (Attr->Con + Attr->Econ)*0.47 + bullets + Stats->Level*0.1 + (Attr->Dex + Attr->Edex)*0.3 + ((Attr->Con + Attr->Econ)*0.04 + (Attr->Sen + Attr->Esen)*0.05 + 29) * weaponatk * 0.03333334);
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == GUN_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case LAUNCHER://launcher
{
float cannons = 0;
if(items[134].count>0)
{
cannons = GServer->NaturalList.Index[items[134].itemnum]->quality;
}
attack += (UINT)floor( cannons*0.8 + Stats->Level*0.1 + (Attr->Str + Attr->Estr)*0.32 + (Attr->Con + Attr->Econ)*0.45 + ((Attr->Con + Attr->Econ)*0.04 + (Attr->Sen + Attr->Esen)*0.05 + 29) * weaponatk * 0.03333334 );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == LAUNCHER_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case STAFF://staff
{
attack += (UINT)floor( Stats->Level*0.2 + ((Attr->Int + Attr->Eint)+(Attr->Str + Attr->Estr))*0.4 + ((Attr->Int + Attr-> Eint)*0.05 + 29) * weaponatk * 0.03333334 );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == STAFF_POWER )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case WAND://wand
{
attack += (UINT)floor( Stats->Level*0.2 + (Attr->Int + Attr->Eint)*0.6 + ( ((Attr->Sen + Attr->Esen)*0.1 +26) * 0.03703704 * weaponatk ) );
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == WAND_POWER )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case KATAR://katar
{
attack += (UINT)floor( Stats->Level*0.2 + (Attr->Str + Attr->Estr)*0.42 + (Attr->Dex + Attr->Edex)*0.55 + ((Attr->Dex + Attr->Edex)*0.05 + 20) * weaponatk * 0.0476190);
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == KATAR_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case DOUBLE_SWORD://double sword
{
attack += (UINT)floor( Stats->Level*0.2 + (Attr->Str + Attr->Estr)*0.63 + (Attr->Dex + Attr->Edex)*0.45 + ((Attr->Dex + Attr->Edex)*0.05 + 25) * weaponatk * 0.03846154);
for(UINT i=0;i<MAX_SKILL;i++)
{
if( cskills[i].id == 0 || cskills[i].thisskill == 0 )
continue;
if( cskills[i].thisskill->type == 15 ) //Pasive
{
for( UINT j=0;j<3;j++ )
{
if( cskills[i].thisskill->buff[j] == DUALSWORD_AP )
{
if( cskills[i].thisskill->value2[j] > 0 )
attack += attack * cskills[i].thisskill->value2[j] / 100;
if( cskills[i].thisskill->value1[j] > 0 )
{
attack += cskills[i].thisskill->value1[j];
}
}
}
}
}
}
break;
case CROSSBOW://crossbow
{
float arrows = 0;
if(items[132].count>0)
arrows = GServer->NaturalList.Index[items[132].itemnum]->quality*0.5;
attack += (UINT)floor((((Attr->Str + Attr->Estr)+Stats->Level)*0.1) + ((Attr->Dex + Attr->Edex)*0.04 + (Attr->Sen +Attr->Esen)*0.03 + 29) * weaponatk * 0.03333334 + (Attr->Dex + Attr->Edex)*0.52 + arrows);
}
break;
}
for(UINT i=1;i<12;i++)//cloth stats [from tomiz]
{
if( items[i].count != 0 )
{
if(items[i].itemtype>9)
{
Log(MSG_WARNING, "Char %s have equip invalid item: %i,%i", CharInfo->charname, items[i].itemtype, items[i].itemnum );
continue;
}
if( GServer->EquipList[items[i].itemtype].Index[items[i].itemnum]->stat1[0] == A_ATTACK)
{
attack += GServer->EquipList[items[i].itemtype].Index[items[i].itemnum]->stat1[1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -