|
@@ -29,7 +29,7 @@ namespace XmdsCommonSkill.Plugin.Skills
|
|
|
private HashMap<int, IntIntData> mPoisonRate = new HashMap<int, IntIntData>();
|
|
|
|
|
|
//记录所有附加毒的玩家信息
|
|
|
- private HashMap<String, PoisonPlayers> mPoisonPlayers = new HashMap<String, PoisonPlayers>();
|
|
|
+ //private HashMap<String, PoisonPlayers> mPoisonPlayers = new HashMap<String, PoisonPlayers>();
|
|
|
|
|
|
//毒buff有效时间
|
|
|
private int mPoisonValidTime;
|
|
@@ -101,18 +101,18 @@ namespace XmdsCommonSkill.Plugin.Skills
|
|
|
|
|
|
|
|
|
//记录叠毒玩家信息
|
|
|
- public void RecordPoisonPlayer(XmdsVirtual hitter)
|
|
|
- {
|
|
|
- PoisonPlayers record = mPoisonPlayers.Get(hitter.mUnit.PlayerUUID);
|
|
|
- if(record == null)
|
|
|
- {
|
|
|
- record = new PoisonPlayers();
|
|
|
- record.player = hitter;
|
|
|
- mPoisonPlayers.Put(hitter.mUnit.PlayerUUID, record);
|
|
|
- }
|
|
|
-
|
|
|
- record.buffValidTime = CommonLang.CUtils.localTimeMS + mPoisonValidTime;
|
|
|
- }
|
|
|
+ //public void RecordPoisonPlayer(XmdsVirtual hitter)
|
|
|
+ //{
|
|
|
+ // PoisonPlayers record = mPoisonPlayers.Get(hitter.mUnit.PlayerUUID);
|
|
|
+ // if(record == null)
|
|
|
+ // {
|
|
|
+ // record = new PoisonPlayers();
|
|
|
+ // record.player = hitter;
|
|
|
+ // mPoisonPlayers.Put(hitter.mUnit.PlayerUUID, record);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // record.buffValidTime = CommonLang.CUtils.localTimeMS + mPoisonValidTime;
|
|
|
+ //}
|
|
|
|
|
|
//刷新配置
|
|
|
public void RefreshConfig(int poisonTime)
|
|
@@ -121,46 +121,46 @@ namespace XmdsCommonSkill.Plugin.Skills
|
|
|
}
|
|
|
|
|
|
//毒爆: checkRange内的玩家毒会爆炸
|
|
|
- public void TriggerPoisonEffect(int damageBase, int damagePer, int checkRange = 9, int addLayer = 0, int breakAddBuffId = 0, int breakAddBufMaxLayer = 0)
|
|
|
- {
|
|
|
- XmdsVirtual owner = this.mOwner.Virtual as XmdsVirtual;
|
|
|
- foreach (PoisonPlayers playerData in mPoisonPlayers.Values)
|
|
|
- {
|
|
|
- if (playerData.buffValidTime < CommonLang.CUtils.localTimeMS || !playerData.player.mUnit.IsActive)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- else if(CMath.getDistance(mOwner.X, mOwner.Y, playerData.player.mUnit.X, playerData.player.mUnit.Y) > checkRange)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- BuffState buffState = playerData.player.mUnit.GetBuffByIDAndSender(Remedy_510601.Buff_POISON, this.mOwner.ID);
|
|
|
- if(buffState == null)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- int finalLayer = 1 + buffState.OverlayLevel + addLayer;
|
|
|
- damagePer += (this.mPoisonBreakDmgAdd + (finalLayer >= buffState.Data.MaxOverlay ? this.mPoisonBreakFullDmgAdd : 0));
|
|
|
-
|
|
|
- int attackTemp = (int)(owner.MirrorProp.GetFinalAttack(playerData.player.mUnit.IsMonster) / XmdsDamageCalculator.PERER * damagePer);
|
|
|
- int calcDmg = (damageBase + XmdsDamageCalculator.GetDamage(attackTemp, owner, playerData.player, null)) * finalLayer;
|
|
|
- playerData.player.mUnit.AddHP(-calcDmg, this.mOwner);
|
|
|
- playerData.player.mUnit.removeBuffBySender(Remedy_510601.Buff_POISON, this.mOwner.ID);
|
|
|
-
|
|
|
- // 附加额外buff
|
|
|
- if(breakAddBuffId > 0)
|
|
|
- {
|
|
|
- BuffState buff = playerData.player.mUnit.AddBuff(breakAddBuffId, this.mOwner, 0, false, false, false, 0, finalLayer);
|
|
|
- buff.SetLayerLevel((byte)(Math.Min(breakAddBufMaxLayer, finalLayer)));
|
|
|
- }
|
|
|
-
|
|
|
- System.Console.WriteLine("毒爆: " + playerData.player.mUnit.Info.Name + ", 伤害:" + calcDmg + ", 结算层:" + (1 + buffState.OverlayLevel + addLayer));
|
|
|
- }
|
|
|
-
|
|
|
- this.mPoisonPlayers.Clear();
|
|
|
- }
|
|
|
+ //public void TriggerPoisonEffect(int damageBase, int damagePer, int checkRange = 9, int addLayer = 0, int breakAddBuffId = 0, int breakAddBufMaxLayer = 0)
|
|
|
+ //{
|
|
|
+ // XmdsVirtual owner = this.mOwner.Virtual as XmdsVirtual;
|
|
|
+ // foreach (PoisonPlayers playerData in mPoisonPlayers.Values)
|
|
|
+ // {
|
|
|
+ // if (playerData.buffValidTime < CommonLang.CUtils.localTimeMS || !playerData.player.mUnit.IsActive)
|
|
|
+ // {
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
+ // else if(CMath.getDistance(mOwner.X, mOwner.Y, playerData.player.mUnit.X, playerData.player.mUnit.Y) > checkRange)
|
|
|
+ // {
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // BuffState buffState = playerData.player.mUnit.GetBuffByIDAndSender(Remedy_510601.Buff_POISON, this.mOwner.ID);
|
|
|
+ // if(buffState == null)
|
|
|
+ // {
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // int finalLayer = 1 + buffState.OverlayLevel + addLayer;
|
|
|
+ // damagePer += (this.mPoisonBreakDmgAdd + (finalLayer >= buffState.Data.MaxOverlay ? this.mPoisonBreakFullDmgAdd : 0));
|
|
|
+
|
|
|
+ // int attackTemp = (int)(owner.MirrorProp.GetFinalAttack(playerData.player.mUnit.IsMonster) / XmdsDamageCalculator.PERER * damagePer);
|
|
|
+ // int calcDmg = (damageBase + XmdsDamageCalculator.GetDamage(attackTemp, owner, playerData.player, null)) * finalLayer;
|
|
|
+ // playerData.player.mUnit.AddHP(-calcDmg, this.mOwner);
|
|
|
+ // playerData.player.mUnit.removeBuffBySender(Remedy_510601.Buff_POISON, this.mOwner.ID);
|
|
|
+
|
|
|
+ // // 附加额外buff
|
|
|
+ // if(breakAddBuffId > 0)
|
|
|
+ // {
|
|
|
+ // BuffState buff = playerData.player.mUnit.AddBuff(breakAddBuffId, this.mOwner, 0, false, false, false, 0, finalLayer);
|
|
|
+ // buff.SetLayerLevel((byte)(Math.Min(breakAddBufMaxLayer, finalLayer)));
|
|
|
+ // }
|
|
|
+
|
|
|
+ // System.Console.WriteLine("毒爆: " + playerData.player.mUnit.Info.Name + ", 伤害:" + calcDmg + ", 结算层:" + (1 + buffState.OverlayLevel + addLayer));
|
|
|
+ // }
|
|
|
+
|
|
|
+ // this.mPoisonPlayers.Clear();
|
|
|
+ //}
|
|
|
|
|
|
}
|
|
|
}
|