戰斗即將開始!要實現MMORPG中的攻擊系統,必須為精靈增加相關的參數及屬性,這些內容及它們之間的牽連關系設計決定著游戲的新穎度與耐玩性;就好比當年的傳奇,系統再普通不過了,但是卻因為有著恰如其分的系統參數設定與完美的世界觀定位,成就了一代不朽巨作。那麼本節開始,我將首先對精靈控件進行屬性完善,使之具傳統經典游戲中的角色屬性。
首先看下圖:
這些屬性是目前最經典的角色屬性設置(不同的游戲中,某些屬性的命名可能會不同。例如上圖中的“體質”屬性在本節示例游戲中我稱之為“體格”;而“運勢”屬性我則稱之為“運氣”等等,但意義是一樣的);我們先分析:力量、智慧、敏捷、體質、運氣這5個屬性為所有基本屬性中的根屬性,何謂根屬性?就是所有基值屬性的最底層。當角色升級時,通過手動或系統自動根據角色的職業特性對這5個根屬性進行加值,而其他所有與之相關聯的基值屬性都將同時受到影響。例如我是這樣定義這5個根屬性的:
double _VPower;
/// <summary>
/// 獲取或設置力量
/// 影響最大負重,物理攻擊力(最小 - 最大)
/// --[相關基值屬性計算公式]:
/// 最大負重 = ABase[0] + Equip[0] + Buff[0] + VPower * CoefficIEnt[0]
/// 物理攻擊力最小值 = ABase[1] + Equip[1] + Buff[1] + VPower * CoefficIEnt[1]
/// 物理攻擊力最大值 = ABase[2] + Equip[2] + Buff[2] + VPower * CoefficIEnt[2]
/// </summary>
public double VPower {
get { return _VPower + Equip[16] + Buff[16]; }
set { _VPower = value; }
}
double _VAgile;
/// <summary>
/// 獲取或設置敏捷
/// 影響命中,閃避,跑速,攻速,施法速度
/// --[相關基值屬性計算公式]:
/// 命中 = ABase[3] + Equip[3] + Buff[3] + VAgile * CoefficIEnt[3]
/// 閃避 = ABase[4] + Equip[4] + Buff[4] + VAgile * CoefficIEnt[4]
/// 跑速 = ABase[5] - Equip[5] + Buff[5] - VAgile * CoefficIEnt[5]
/// 物攻速度 = ABase[6] - Equip[6] + Buff[6] - VAgile * CoefficIEnt[6]
/// 施法速度 = ABase[7] - Equip[7] + Buff[7] - VAgile * CoefficIEnt[7]
/// </summary>
public double VAgile {
get { return _VAgile + Equip[17] + Buff[17]; }
set { _VAgile = value; }
}
double _VPhysique;
/// <summary>
/// 獲取或設置體格
/// 影響最大生命值,物理防御力,格檔率(與暴擊率相反,物理或魔法攻擊傷害減半)
/// --[相關基值屬性計算公式]:
/// 最大生命值 = ABase[8] + Equip[8] + Buff[8] + VPhysique * CoefficIEnt[8]
/// 物理防御力 = ABase[9] + Equip[9] + Buff[9] + VPhysique * CoefficIEnt[9]
/// 格檔率 = ABase[10] + Equip[10] + Buff[10] + VPhysique * CoefficIEnt[10]
/// </summary>
public double VPhysique {
get { return _VPhysique + Equip[18] + Buff[18]; }
set { _VPhysique = value; }
}
double _VWisdom;
/// <summary>
/// 獲取或設置智慧
/// 影響最大魔法值,魔法防御力,魔法攻擊力(最小 - 最大)
/// --[相關基值屬性計算公式]:
/// 最大魔法值 = ABase[11] + Equip[11] + Buff[11] + VWisdom * CoefficIEnt[11]
/// 魔法防御力 = ABase[12] + Equip[12] + Buff[12] + VWisdom * CoefficIEnt[12]
/// 魔法攻擊力最小值 = ABase[13] + Equip[13] + Buff[13] + VWisdom * CoefficIEnt[13]
/// 魔法攻擊力最大值 = ABase[14] + Equip[14] + Buff[14] + VWisdom * CoefficIEnt[14]
/// </summary>
public double VWisdom {
get { return _VWisdom + Equip[19] + Buff[19]; }
set { _VWisdom = value; }
}
double _VLucky;
/// <summary>
/// 獲取或設置幸運
/// 影響暴擊率(物理或魔法攻擊加倍)及其他
/// --[相關基值屬性計算公式]:
/// 暴擊率 = ABase[15] + Equip[15] + Buff[15] + VLucky * ACoefficIEnt[15]
/// </summary>
public double VLucky {
get { return _VLucky + Equip[20] + Buff[20]; }
set { _VLucky = value; }
}
/// <summary>
/// 獲取或設置屬性基數
/// 0-14對應基礎屬性值
/// </summary>
public double[] ABase { get; set; }
/// <summary>
/// 獲取或設置裝備加成總和
/// 0-14對應基礎屬性值
/// 15-19對應5大屬性
/// </summary>
public double[] Equip { get; set; }
/// <summary>
/// 獲取或設置加持/減持值總和
/// 0-14對應基礎屬性值
/// 15-19對應5大屬性
/// </summary>
public double[] Buff { get; set; }
/// <summary>
/// 獲取或設置屬性系數(成長率)
/// 0-14對應基礎屬性值
/// </summary>
public double[] CoefficIEnt { get; set; }