關於一個網路遊戲"人在江湖"源碼修改的問題??

各位先進大家好
小弟日前在因緣際會下不小心就架好了台灣第一套網路遊戲"人在江湖"的伺服
也有對源碼做些許的修改
近日碰到了一個難題
不知道這裡是不是能夠尋求到解答

本身對程式碼是完全的外行
僅靠一些簡單的邏輯去做部份參數的修改
這是我現在開伺服相關的網站
http://xmud.miroko.tw
內有相關程式資料
有興趣的人可以來參考看看喔!!

下列是"人在江湖"的一段源碼,
主要是計算裝備損壞的部份
武器的部份並無此計算式
所以武器的使用是不會損壞的
而我想把武器也設定成有損壞
該如何修改程式源碼?

另外我也附加了該程式源碼完整的連結
http://blog.yam.com/xmud/article/21423964

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//裝備保護玩家,但自身也受損
#define EP_force  1
#define EP_damage 2
void EquipProtect(CActiveObject *you, int nType, int &damage, int nWhere)
{
 int nRet = 0;
 CGoods * lpGoods;
 CEquip * lpEquip;
 char szTxt[128];

 if (you == NULL)
  return;
 if (damage <= 0) {
  damage = 0;
  return;
 }
 POSITION pos = you->listequip.GetHeadPosition();
 while(pos != NULL) {
  lpGoods = you->listequip.GetNext(pos);
  if(lpGoods->lpGoods->nKinds & GK_equip) { //如果是裝備
   lpEquip = dynamic_cast<CEquip *>(lpGoods);
   if(lpEquip->nWearWhere & nWhere) { //穿到了挨打的地方
    switch(nType) {
    case EP_force:
     nRet += lpEquip->lpEquip->nDefanceForce;//防御內力
     if (you->bPlayer && (you->nStatus == AOS_kill)
      && !(lpEquip->lpGoods->nUsage & GP_noold))
      lpEquip->nNew -= damage >> 6;//裝備受損
     break;
    case EP_damage:
     nRet += lpEquip->lpEquip->nDefance;//一般防御
     if (you->bPlayer && (you->nStatus == AOS_kill)
      && !(lpEquip->lpGoods->nUsage & GP_noold))
      lpEquip->nNew -= damage >> 5;//裝備受損
     break;
    }

    if (lpEquip->nNew <= 0 && you->bPlayer) {
     sprintf(szTxt, "%s %s %s的%s在戰鬥中被打壞了!", SZOKMSG, szCyanHigt,
      you->szCName, lpEquip->lpGoods->szCName);
     you->SendMsg(szTxt);
     you->SendMsgToAll(szTxt);
     CString szStatus;
     switch(lpEquip->lpEquip->nWhereWear){
     case EW_neck:
      szStatus = "護頸";
      break;
     case EW_chest:
      szStatus = "護胸";
      break;
     case EW_abdomen:
      szStatus = "護腹";
      break;
     case EW_wrist:
      szStatus = "護腕";
      break;
     case EW_knee:
      szStatus = "護膝";
      break;
     case EW_head:
      szStatus = "護頭";
      break;
     case EW_hand:
      szStatus = "護手";
      break;
     case EW_foot:
      szStatus = "護腳";
      break;
     case EW_body:
      szStatus = "護身";
      break;
     }
     sprintf(szTxt, "%s %s %s %d %s", SZSUBGOODS,
      lpEquip->lpGoods->szCName, szStatus, 1, lpEquip->lpGoods->szUnit);
     you->SendMsg(szTxt);
     you->SubGoods(lpEquip->lpGoods->szEName);
    }
   }//if 穿到了挨打的地方
  }//如果是裝備
 }//while
 damage -= nRet;
 if( damage < 0 ) damage = 0; 
// return nRet;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


再附上一段有關武器傷害的計算式

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   // 臂力及武器
   damage = ( me->nStr * 1.1 )+(me->nCon*0.4)+(me->nDex*0.3)+(me->nInt*0.1) ;
   damage -= ( you->nCon * 0.2 )+( you->nDex * 0.1 );
#define Random( n) ( ( (rand()%n)> 100 )?100:(rand()%n))
   if( (me->nStr-you->nCon) < 5 && (me->nStr-you->nCon) > 0 )
    damage += Random( me->nStr + (me->nStr /3));
   if ((me->lpWeapon != NULL) && (me->nStatus == AOS_kill)) {
    damage += me->lpWeapon->lpWeapon->nAttack;
    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~