537 lines
26 KiB
C#
537 lines
26 KiB
C#
// /*
|
|
// * FILE: EC_IvtrWeapon.cpp
|
|
// *
|
|
// * DESCRIPTION:
|
|
// *
|
|
// * CREATED BY: Duyuxin, 2004/11/19
|
|
// *
|
|
// * HISTORY:
|
|
// *
|
|
// * Copyright (c) 2004 Archosaur Studio, All Rights Reserved.
|
|
// */
|
|
|
|
// #include "EC_Global.h"
|
|
// #include "EC_IvtrWeapon.h"
|
|
// #include "EC_Game.h"
|
|
// #include "EC_FixedMsg.h"
|
|
// #include "EC_GameRun.h"
|
|
// #include "EC_HostPlayer.h"
|
|
// #include "EC_RTDebug.h"
|
|
// #include "elementdataman.h"
|
|
// #include "EC_Configs.h"
|
|
using BrewMonster;
|
|
using ModelRenderer.Scripts.GameData;
|
|
using System.Collections.Generic;
|
|
using BrewMonster.Network;
|
|
using BrewMonster.Scripts.Managers;
|
|
using BrewMonster.Scripts;
|
|
#region C# regions
|
|
// #define new A_DEBUG_NEW
|
|
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// // Define and Macro
|
|
// //
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// // Reference to External variables and functions
|
|
// //
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// // Local Types and Variables and Global variables
|
|
// //
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// // Local functions
|
|
// //
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// // Implement CECIvtrWeapon
|
|
// //
|
|
// ///////////////////////////////////////////////////////////////////////////
|
|
#endregion
|
|
|
|
namespace PerfectWorld.Scripts.Managers
|
|
{
|
|
|
|
public class EC_IvtrArmor : EC_IvtrEquip
|
|
{
|
|
//Attributes
|
|
//Weapon essence data
|
|
protected IVTR_ESSENCE_ARMOR m_Essence;
|
|
// data in database
|
|
protected ARMOR_MAJOR_TYPE m_pDBMajorType;
|
|
protected ARMOR_SUB_TYPE m_pDBSubType;
|
|
protected ARMOR_ESSENCE m_pDBEssence;
|
|
|
|
public EC_IvtrArmor(int tid, int expire_date) : base(tid, expire_date)
|
|
{
|
|
m_iCID = ICID_WEAPON;
|
|
elementdataman pDB = ElementDataManProvider.GetElementDataMan();
|
|
DATA_TYPE DataType = DATA_TYPE.DT_INVALID;
|
|
m_pDBEssence = (ARMOR_ESSENCE)pDB.get_data_ptr((uint)tid, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
|
|
m_pDBMajorType = (ARMOR_MAJOR_TYPE)pDB.get_data_ptr(m_pDBEssence.id_major_type, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
|
|
m_pDBSubType = (ARMOR_SUB_TYPE)pDB.get_data_ptr(m_pDBEssence.id_sub_type, ID_SPACE.ID_SPACE_ESSENCE, ref DataType);
|
|
m_iPileLimit = m_pDBEssence.pile_num_max;
|
|
m_iPrice = m_pDBEssence.price;
|
|
m_iShopPrice = m_pDBEssence.shop_price;
|
|
m_i64EquipMask = EC_IvtrEquip.ICID_WEAPON;
|
|
m_iProcType = (int)m_pDBEssence.proc_type;
|
|
|
|
FixProps = m_pDBEssence.fixed_props;
|
|
RepairFee = m_pDBEssence.repairfee;
|
|
ReputationReq = m_pDBEssence.require_reputation;
|
|
}
|
|
public EC_IvtrArmor(EC_IvtrArmor other) : base(other)
|
|
{
|
|
m_pDBEssence = other.m_pDBEssence;
|
|
m_pDBMajorType = other.m_pDBMajorType;
|
|
m_pDBSubType = other.m_pDBSubType;
|
|
m_Essence = other.m_Essence;
|
|
}
|
|
|
|
// CECIvtrWeapon::~CECIvtrWeapon()
|
|
// {
|
|
// }
|
|
|
|
public override bool SetItemInfo(byte[] pInfoData, int iDataLen)
|
|
{
|
|
base.SetItemInfo(pInfoData, iDataLen);
|
|
if(pInfoData == null || iDataLen == 0)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
try
|
|
{
|
|
CECDataReader dr = new CECDataReader(pInfoData ,iDataLen);
|
|
// Skip equip requirements and endurance
|
|
dr.Offset(6 * sizeof(short), CECDataReader.SEEK_CUR);
|
|
dr.Offset(2 * sizeof(int), CECDataReader.SEEK_CUR);
|
|
int iEssenceSize = dr.ReadShort();
|
|
// Skip maker's information
|
|
dr.ReadByte();
|
|
int iMakerLen = dr.ReadByte();
|
|
dr.Offset(iMakerLen, CECDataReader.SEEK_CUR);
|
|
byte[] iEssenceData = dr.ReadData(iEssenceSize);
|
|
m_Essence = new IVTR_ESSENCE_ARMOR(iEssenceData);
|
|
// ���븽������˵��
|
|
if(m_pDBEssence.fixed_props != 0 && m_pDBEssence.probability_addon_num0 != 1.0f)
|
|
{
|
|
// Get database data
|
|
elementdataman pDataMan = ElementDataManProvider.GetElementDataMan();
|
|
CECStringTab PropTab = EC_Game.GetItemExtProp();
|
|
int i, iSize = 0;
|
|
for(i=0;i<32;i++)
|
|
{
|
|
if(m_pDBEssence.addons[i].id_addon != 0)
|
|
iSize++;
|
|
}
|
|
if(iSize > 0 && Props.Count == 0)
|
|
{
|
|
Props.Capacity = iSize;
|
|
for(i=0;i<32;i++)
|
|
{
|
|
if(m_pDBEssence.addons[i].id_addon != 0)
|
|
{
|
|
Property Prop = new Property();
|
|
Prop.Type = (int)m_pDBEssence.addons[i].id_addon;
|
|
Prop.Embed = false;
|
|
Prop.Suite = false;
|
|
Prop.Engraved = false;
|
|
Prop.Local = false;
|
|
byte bType = PropTab.GetWideString(Prop.Type) != null ? (byte)0xff : (byte)0xff;
|
|
DATA_TYPE DataType = DATA_TYPE.DT_INVALID;
|
|
object pData = pDataMan.get_data_ptr(m_pDBEssence.addons[i].id_addon, ID_SPACE.ID_SPACE_ADDON, ref DataType);
|
|
if (DataType != DATA_TYPE.DT_EQUIPMENT_ADDON)
|
|
{
|
|
return false;
|
|
}
|
|
EQUIPMENT_ADDON pAddon = (EQUIPMENT_ADDON)pData;
|
|
Prop.NumParam = pAddon.num_params;
|
|
for(int j=0; j < Prop.NumParam; j++)
|
|
{
|
|
if(j==0)
|
|
{
|
|
Prop.Params[0] = pAddon.param1;
|
|
}
|
|
else if(j==1)
|
|
{
|
|
Prop.Params[1] = pAddon.param2;
|
|
}
|
|
else if(j==2)
|
|
{
|
|
Prop.Params[2] = pAddon.param3;
|
|
}
|
|
}
|
|
Props.Add(Prop);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
catch ( System.Exception e)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
// Get item default information from database
|
|
public override void DefaultInfo()
|
|
{
|
|
LevelReq = m_pDBEssence.require_level;
|
|
StrengthReq = m_pDBEssence.require_strength;
|
|
AgilityReq = m_pDBEssence.require_agility;
|
|
ReputationReq = m_pDBEssence.require_reputation;
|
|
CurEndurance = m_pDBEssence.durability_min * ENDURANCE_SCALE;
|
|
MaxEndurance = m_pDBEssence.durability_min * ENDURANCE_SCALE;
|
|
}
|
|
// Get item icon file name
|
|
public override string GetIconFile()
|
|
{
|
|
return m_pDBEssence.FileIcon;
|
|
}
|
|
// Get item name
|
|
public override string GetName()
|
|
{
|
|
return m_pDBEssence.Name;
|
|
}
|
|
// Get preview info
|
|
public override string GetPreviewInfo()
|
|
{
|
|
int[] aPEEVals = new int[MAX_PEEINDEX];
|
|
int[] aRefines = new int[MAX_REFINEINDEX];
|
|
for(int i=0; i<MAX_PEEINDEX; i++)
|
|
aPEEVals[i] = 0;
|
|
for(int i=0; i<MAX_REFINEINDEX; i++)
|
|
aRefines[i] = 0;
|
|
m_strDesc = "";
|
|
BuildAddOnPropDesc(aPEEVals, aRefines);
|
|
CECStringTab pDescTab = EC_Game.GetItemDesc();
|
|
// Physical defense
|
|
if (m_Essence.defense - aPEEVals[PEEI_PHYDEF] + aRefines[REFINE_PHYDEF] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_PHYDEFENCE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.defense - aPEEVals[PEEI_PHYDEF] + aRefines[REFINE_PHYDEF]);
|
|
}
|
|
// Dodge
|
|
if (m_Essence.armor - aPEEVals[PEEI_DODGE] + aRefines[REFINE_DODGE] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_DODGE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.armor - aPEEVals[PEEI_DODGE] + aRefines[REFINE_DODGE]);
|
|
}
|
|
// HP
|
|
if (m_Essence.hp_enhance - aPEEVals[PEEI_HP] + aRefines[REFINE_HP] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_ADDHP));
|
|
}
|
|
// MP
|
|
if (m_Essence.mp_enhance - aPEEVals[PEEI_MP] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_ADDMP));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.mp_enhance - aPEEVals[PEEI_MP]);
|
|
}
|
|
//Gold Resistance
|
|
if (m_Essence.resistance[0] - aPEEVals[PEEI_GOLDDEF] + aRefines[REFINE_GOLDDEF] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_GOLDDEFENCE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.resistance[0] - aPEEVals[PEEI_GOLDDEF] + aRefines[REFINE_GOLDDEF]);
|
|
}
|
|
//Wood Resistance
|
|
if (m_Essence.resistance[1] - aPEEVals[PEEI_WOODDEF] + aRefines[REFINE_WOODDEF] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_WOODDEFENCE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.resistance[1] - aPEEVals[PEEI_WOODDEF] + aRefines[REFINE_WOODDEF]);
|
|
}
|
|
//Water Resistance
|
|
if (m_Essence.resistance[2] - aPEEVals[PEEI_WATERDEF] + aRefines[REFINE_WATERDEF] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_WATERDEFENCE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.resistance[2] - aPEEVals[PEEI_WATERDEF] + aRefines[REFINE_WATERDEF]);
|
|
}
|
|
//Fire Resistance
|
|
if (m_Essence.resistance[3] - aPEEVals[PEEI_FIREDEF] + aRefines[REFINE_FIREDEF] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_FIREDEFENCE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.resistance[3] - aPEEVals[PEEI_FIREDEF] + aRefines[REFINE_FIREDEF]);
|
|
}
|
|
//Earth Resistance
|
|
if (m_Essence.resistance[4] - aPEEVals[PEEI_EARTHDEF] + aRefines[REFINE_EARTHDEF] != 0)
|
|
{
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, false, EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_EARTHDEFENCE));
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL_WHITE, true, " %+d", m_Essence.resistance[4] - aPEEVals[PEEI_EARTHDEF] + aRefines[REFINE_EARTHDEF]);
|
|
}
|
|
return m_strDesc;
|
|
}
|
|
public override bool GetRefineEffectFor(string strEffect, RefineEffect rhs){
|
|
strEffect = "";
|
|
if (!m_bNeedUpdate){
|
|
switch (rhs.RefineIndex){
|
|
case REFINE_PHYDEF:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_PHYDEFENCE),
|
|
m_Essence.defense - rhs.APEEVals[PEEI_PHYDEF] + rhs.ARefines[REFINE_PHYDEF] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_DODGE:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_DODGE),
|
|
m_Essence.armor - rhs.APEEVals[PEEI_DODGE] + rhs.ARefines[REFINE_DODGE] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_HP:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_ADDHP),
|
|
m_Essence.hp_enhance - rhs.APEEVals[PEEI_HP] + rhs.ARefines[REFINE_HP] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_GOLDDEF:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_GOLDDEFENCE),
|
|
m_Essence.resistance[0] - rhs.APEEVals[PEEI_GOLDDEF] + rhs.ARefines[REFINE_GOLDDEF] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_WOODDEF:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_WOODDEFENCE),
|
|
m_Essence.resistance[1] - rhs.APEEVals[PEEI_WOODDEF] + rhs.ARefines[REFINE_WOODDEF] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_WATERDEF:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_WATERDEFENCE),
|
|
m_Essence.resistance[2] - rhs.APEEVals[PEEI_WATERDEF] + rhs.ARefines[REFINE_WATERDEF] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_FIREDEF:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_FIREDEFENCE),
|
|
m_Essence.resistance[3] - rhs.APEEVals[PEEI_FIREDEF] + rhs.ARefines[REFINE_FIREDEF] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
case REFINE_EARTHDEF:
|
|
strEffect = string.Format("{0}{1} {2}(+{3})",
|
|
rhs.GetClrAttribute(),
|
|
EC_Game.GetItemDesc().GetWideString((int)DescriptipionMsg.ITEMDESC_EARTHDEFENCE),
|
|
m_Essence.resistance[4] - rhs.APEEVals[PEEI_EARTHDEF] + rhs.ARefines[REFINE_EARTHDEF] + rhs.GetIncEffect(),
|
|
rhs.GetClrEffect(),
|
|
rhs.GetIncEffect());
|
|
break;
|
|
}
|
|
}
|
|
return !string.IsNullOrEmpty(strEffect);
|
|
}
|
|
// Get item description text
|
|
protected override string GetNormalDesc(bool bRepair){
|
|
if (m_bNeedUpdate)
|
|
return null;
|
|
int[] aPEEVals = new int[MAX_PEEINDEX];
|
|
int[] aRefines = new int[MAX_REFINEINDEX];
|
|
for(int i=0; i<MAX_PEEINDEX; i++)
|
|
aPEEVals[i] = 0;
|
|
for(int i=0; i<MAX_REFINEINDEX; i++)
|
|
aRefines[i] = 0;
|
|
m_strDesc = "";
|
|
BuildAddOnPropDesc(aPEEVals, aRefines);
|
|
string strAddon = m_strDesc;
|
|
m_strDesc = "";
|
|
CECStringTab pDescTab = EC_Game.GetItemDesc();
|
|
CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
|
|
int white = (int)DescriptipionMsg.ITEMDESC_COL_WHITE;
|
|
int lblue = (int)DescriptipionMsg.ITEMDESC_COL_LIGHTBLUE;
|
|
int red = (int)DescriptipionMsg.ITEMDESC_COL_RED;
|
|
int namecol = DecideNameCol();
|
|
uint dwPEE = PropEffectEssence();
|
|
if (Holes != null && Holes.Count > 0)
|
|
{
|
|
AddDescText(namecol, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_NAMESOCKET), GetName(), Holes.Count);
|
|
}
|
|
else
|
|
{
|
|
AddDescText(namecol, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_NAME), GetName());
|
|
}
|
|
// Refine level
|
|
if (RefineLvl > 0)
|
|
AddDescText(-1, true, "{0} +{1}", pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_LEVEL), RefineLvl);
|
|
else
|
|
m_strDesc += "\\r";
|
|
AddIDDescText();
|
|
AddBindDescText();
|
|
// Is destroying?
|
|
AddDestroyingDesc((int)m_pDBEssence.id_drop_after_damaged, m_pDBEssence.num_drop_after_damaged);
|
|
AddExpireTimeDesc();
|
|
// Sub class name
|
|
AddDescText(white, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_CLASSNAME), m_pDBSubType.name.ToString());
|
|
// Weapon level
|
|
AddDescText(-1, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_LEVEL), m_pDBEssence.level);
|
|
|
|
// Physical defence
|
|
if (m_Essence.defense - aPEEVals[PEEI_PHYDEF] + aRefines[REFINE_PHYDEF] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_PHYDEFENCE));
|
|
AddDescText(white, true, " +{0}", m_Essence.defense - aPEEVals[PEEI_PHYDEF] + aRefines[REFINE_PHYDEF]);
|
|
}
|
|
// Dodge
|
|
if (m_Essence.armor - aPEEVals[PEEI_DODGE] + aRefines[REFINE_DODGE] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_DODGE));
|
|
AddDescText(white, true, " +{0}", m_Essence.armor - aPEEVals[PEEI_DODGE] + aRefines[REFINE_DODGE]);
|
|
}
|
|
// HP
|
|
if (m_Essence.hp_enhance - aPEEVals[PEEI_HP] + aRefines[REFINE_HP] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_ADDHP));
|
|
AddDescText(white, true, " +{0}", m_Essence.hp_enhance - aPEEVals[PEEI_HP] + aRefines[REFINE_HP]);
|
|
}
|
|
// MP
|
|
if (m_Essence.mp_enhance - aPEEVals[PEEI_MP] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_ADDMP));
|
|
AddDescText(white, true, " +{0}", m_Essence.mp_enhance - aPEEVals[PEEI_MP]);
|
|
}
|
|
// Gold Resistance
|
|
if (m_Essence.resistance[0] - aPEEVals[PEEI_GOLDDEF] + aRefines[REFINE_GOLDDEF] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_GOLDDEFENCE));
|
|
AddDescText(white, true, " +{0}", m_Essence.resistance[0] - aPEEVals[PEEI_GOLDDEF] + aRefines[REFINE_GOLDDEF]);
|
|
}
|
|
// Wood Resistance
|
|
if (m_Essence.resistance[1] - aPEEVals[PEEI_WOODDEF] + aRefines[REFINE_WOODDEF] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_WOODDEFENCE));
|
|
AddDescText(white, true, " +{0}", m_Essence.resistance[1] - aPEEVals[PEEI_WOODDEF] + aRefines[REFINE_WOODDEF]);
|
|
}
|
|
// Water Resistance
|
|
if (m_Essence.resistance[2] - aPEEVals[PEEI_WATERDEF] + aRefines[REFINE_WATERDEF] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_WATERDEFENCE));
|
|
AddDescText(white, true, " +{0}", m_Essence.resistance[2] - aPEEVals[PEEI_WATERDEF] + aRefines[REFINE_WATERDEF]);
|
|
}
|
|
// Fire Resistance
|
|
if (m_Essence.resistance[3] - aPEEVals[PEEI_FIREDEF] + aRefines[REFINE_FIREDEF] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_FIREDEFENCE));
|
|
AddDescText(white, true, " +{0}", m_Essence.resistance[3] - aPEEVals[PEEI_FIREDEF] + aRefines[REFINE_FIREDEF]);
|
|
}
|
|
// Earth Resistance
|
|
if (m_Essence.resistance[4] - aPEEVals[PEEI_EARTHDEF] + aRefines[REFINE_EARTHDEF] != 0)
|
|
{
|
|
AddDescText(white, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_EARTHDEFENCE));
|
|
AddDescText(white, true, " +{0}", m_Essence.resistance[4] - aPEEVals[PEEI_EARTHDEF] + aRefines[REFINE_EARTHDEF]);
|
|
}
|
|
// Endurance
|
|
int col = white;
|
|
if (CurEndurance == 0)
|
|
col = red;
|
|
else if ((dwPEE & PEE_ENDURANCE) != 0)
|
|
col = lblue;
|
|
AddDescText(col, false, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_ENDURANCE));
|
|
AddDescText(col, true, " {0}/{1}", VisualizeEndurance(CurEndurance), VisualizeEndurance(MaxEndurance));
|
|
|
|
// Profession requirement
|
|
AddProfReqDesc((uint)ProfReq);
|
|
// Level requirment
|
|
if (LevelReq != 0)
|
|
{
|
|
col = pHost.GetMaxLevelSofar() >= LevelReq ? white : red;
|
|
AddDescText(col, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_LEVELREQ), LevelReq);
|
|
}
|
|
// Strength requirment
|
|
if (StrengthReq != 0)
|
|
{
|
|
col = pHost.GetExtendProps().bs.strength < StrengthReq ? red : ((dwPEE & PEE_STRENGTHREQ) != 0 ? lblue : white);
|
|
AddDescText(col, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_STRENGTHREQ), StrengthReq);
|
|
}
|
|
// Agility requirment
|
|
if (AgilityReq != 0)
|
|
{
|
|
col = pHost.GetExtendProps().bs.agility < AgilityReq ? red : ((dwPEE & PEE_AGILITYREQ) != 0 ? lblue : white);
|
|
AddDescText(col, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_AGILITYREQ), AgilityReq);
|
|
}
|
|
// Vitality requirment
|
|
if (VitalityReq != 0)
|
|
{
|
|
col = pHost.GetExtendProps().bs.vitality < VitalityReq ? red : ((dwPEE & PEE_VITALITYREQ) != 0 ? lblue : white);
|
|
AddDescText(col, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_VITALITYREQ), VitalityReq);
|
|
}
|
|
// Energy requirment
|
|
if (EnergyReq != 0)
|
|
{
|
|
col = pHost.GetExtendProps().bs.energy < EnergyReq ? red : ((dwPEE & PEE_ENERGYREQ) != 0 ? lblue : white);
|
|
AddDescText(col, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_ENERGYREQ), EnergyReq);
|
|
}
|
|
// Reputation requirement
|
|
AddReputationReqDesc();
|
|
// Add addon properties
|
|
if (!string.IsNullOrEmpty(strAddon))
|
|
m_strDesc += strAddon;
|
|
// Build tessera description
|
|
BuildTesseraDesc();
|
|
if(m_pDBEssence.fixed_props == 0 && m_bIsInNPCPack)
|
|
AddDescText((int)DescriptipionMsg.ITEMDESC_COL2_BRIGHTBLUE, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_HASRANDOM_PROP));
|
|
// Price
|
|
AddPriceDesc(white, bRepair);
|
|
AddSharpenerDesc();
|
|
AddEngravedDesc();
|
|
AddMakerDesc();
|
|
AddSuiteDesc();
|
|
AddExtDescText();
|
|
return m_strDesc;
|
|
}
|
|
// // Does this equipment has random property ?
|
|
public bool HasRandomProp()
|
|
{
|
|
for (int i = 0; i < Props.Count; i++)
|
|
{
|
|
if (!Props[i].Embed && !Props[i].Engraved && Props[i].Type == 472)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
public int GetRefineMaterialNum()
|
|
{
|
|
return m_pDBEssence.material_need;
|
|
}
|
|
public override uint GetRefineAddOn()
|
|
{
|
|
return (uint)m_pDBEssence.levelup_addon;
|
|
}
|
|
public override string GetDropModel()
|
|
{
|
|
return m_pDBEssence.FileMatter;
|
|
}
|
|
public override bool IsRare()
|
|
{
|
|
return base.IsRare() || m_pDBEssence.level >= 6;
|
|
}
|
|
public override int GetItemLevel()
|
|
{
|
|
return m_pDBEssence.level;
|
|
}
|
|
}
|
|
} |