// 是否增加某类属性的技能,和概率没关系 // 这个函数在实例化CPet的时候调用,可以在初始化的时候就决定好奥义的功用 public void improveAttribute(BT_Monster Pet) { int PetAttri = (int)Pet._property; if (PetAttri == _AoYiItem._type || PetAttri == (_AoYiItem._type + 10)) { foreach (BT_Skill sk in Pet.get_NormalSkillArr) { SkillOpData op = sk.opObj; string[] enhanced = op.enhanced; if (enhanced != null) { foreach (string oneEnHanced in enhanced) { int param = getParam(sk, oneEnHanced); if (param != -1) { param = Formular(param); setParam(sk, oneEnHanced, param); } } } } } }
public BT_Skill(int skillNum, int lv, SkillManager skillMgr, BT_Monster ownerBy) { if (skillMgr == null) { throw new DragonException("Skill manager is null."); } if (ownerBy == null) { throw new DragonException("Owner is null"); } SkillData skCfg = skillMgr.getSkillDataConfig(skillNum); if (skCfg == null) { throw new DragonException("Skill configure is null." + skillNum); } //默认一定能释放一次 RdCast = 1; id = skillNum; curLv = lv; name = skCfg.name; mark = skCfg.mark; level = skCfg.level; param = skillMgr.GetSkParamData(skillNum, lv); op = skCfg.op; opObj = skillMgr.getSkillOpDataConfig(op); real = 0; AoYi = null; owner = ownerBy; }
Skill createSkill() { SkillManager skMgr = Core.Data.skillManager; SkillData sd = skMgr.getSkillDataConfig(skillId); SkillOpData sod = skMgr.getSkillOpDataConfig(sd.op); SkillLvData lvd = skMgr.GetSkillLvDataConfig(skillId); return(new Skill(sd, sod, lvd, skillLv)); }
/// <summary> /// Gets the skill op data config. 根据Skill OP ID 来获取Skill OP Data /// </summary> /// <returns>The skill op data config.</returns> /// <param name="ID">I.</param> public SkillOpData getSkillOpDataConfig(int ID) { SkillOpData sod = null; if (mSDOConfig != null) { if (!mSDOConfig.TryGetValue(ID, out sod)) { sod = null; } } return(sod); }
public Skill(SkillData data, SkillOpData sod, SkillLvData lvData, int skillLv, bool opened = true) { this.sdConfig = data; this.sodConfig = sod; this.skillLvConfig = lvData; level = skillLv; this.opened = opened; // _curSkParam.absorb = sdConfig.param.absorb; // _curSkParam.add = sdConfig.param.add; // _curSkParam.damage = sdConfig.param.damage; // _curSkParam.dec = sdConfig.param.dec; // _curSkParam.gailv = sdConfig.param.gailv; // _curSkParam.num = sdConfig.param.num; // _curSkParam.nuqi = sdConfig.param.nuqi; // _curSkParam.rate = sdConfig.param.rate; // _curSkParam.rate2 = sdConfig.param.rate2; // _curSkParam.seal = sdConfig.param.seal; }
public Skill(SkillData data, SkillOpData sod, SkillLvData lvData, int monsterLv, int skillLv) { this.sdConfig = data; this.sodConfig = sod; this.skillLvConfig = lvData; this.opened = monsterLv >= SKILL2_MIN_LEVEL; level = skillLv; // _curSkParam.absorb = sdConfig.param.absorb; // _curSkParam.add = sdConfig.param.add; // _curSkParam.damage = sdConfig.param.damage; // _curSkParam.dec = sdConfig.param.dec; // _curSkParam.gailv = sdConfig.param.gailv; // _curSkParam.num = sdConfig.param.num; // _curSkParam.nuqi = sdConfig.param.nuqi; // _curSkParam.rate = sdConfig.param.rate; // _curSkParam.rate2 = sdConfig.param.rate2; // _curSkParam.seal = sdConfig.param.seal; }
public BT_AoYi(AoYiData aoyiConfig, int ID, SkillManager skillMgr) { if (aoyiConfig == null) { throw new DragonException("AoYi configure is empty."); } if (skillMgr == null) { throw new DragonException("Skill Manager is empty."); } this._ID = ID; this._Name = aoyiConfig.name; this._effect = aoyiConfig.effect; this._efinfo = aoyiConfig.efinfo; this._skillOp = aoyiConfig.skillID; this._type = aoyiConfig.type; this._basic = aoyiConfig.basic; this._growth = aoyiConfig.growth; this._SkillOpConfig = skillMgr.getSkillOpDataConfig(this._skillOp); }
// 使用CAoYi来创建技能 public BT_Skill(CAoYi AoYiItem, BT_Monster ownerBy) { owner = ownerBy; int AoYiLevel = AoYiItem.getLv; BT_AoYi AoYi = AoYiItem.getAoYiItem; // 参数信息 float[] effect = AoYiItem.getEffectByLv(AoYiLevel); // 构建真实的技能参数数据 skParam realEffect = new skParam(); int length = AoYi._efinfo.Length; for (int i = 0; i < length; ++i) { //其实可以反射的写入值,但这里不太多,就不用反射了。 string key = AoYi._efinfo[i]; if (!string.IsNullOrEmpty(key)) { switch (key) { case "rate2": realEffect.rate2 = MathHelper.MidpointRounding(effect [i]); break; case "rate": realEffect.rate = MathHelper.MidpointRounding(effect [i]); break; case "gailv": realEffect.gailv = MathHelper.MidpointRounding(effect [i]); break; case "damage": realEffect.damage = MathHelper.MidpointRounding(effect [i]); break; case "nuqi": realEffect.nuqi = MathHelper.MidpointRounding(effect [i]); break; case "num": realEffect.num = MathHelper.MidpointRounding(effect [i]); break; } } } // 构造对象 //默认一定能释放一次 RdCast = 1; id = AoYi._ID; curLv = AoYiLevel; opObj = AoYi._SkillOpConfig; name = AoYi._Name; level = "A"; param = realEffect; op = AoYi._skillOp; }