本文整理汇总了C#中AttackData类的典型用法代码示例。如果您正苦于以下问题:C# AttackData类的具体用法?C# AttackData怎么用?C# AttackData使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
AttackData类属于命名空间,在下文中一共展示了AttackData类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Damage
public Damage(float amount, AttackData attackData, RaycastHit hitLocation, Transform attackerTransform)
{
HitLocation = hitLocation;
Amount = amount;
Attacker = attackerTransform;
Attack = attackData;
}
开发者ID:redbluegames,项目名称:ness,代码行数:7,代码来源:Damage.cs
示例2: StealLife
/// <summary>
/// Uses percent of damage to heal the caster
/// </summary>
public virtual void StealLife(AttackData ad)
{
if (ad == null) return;
if (!m_caster.IsAlive) return;
if (ad.Target is Keeps.GameKeepDoor || ad.Target is Keeps.GameKeepComponent)
{
return;
}
int heal = (ad.Damage + ad.CriticalDamage) * m_spell.LifeDrainReturn / 100;
if (m_caster.IsDiseased)
{
MessageToCaster("You are diseased!", eChatType.CT_SpellResisted);
heal >>= 1;
}
if (heal <= 0) return;
heal = m_caster.ChangeHealth(m_caster, GameLiving.eHealthChangeType.Spell, heal);
if (heal > 0)
{
MessageToCaster("You steal " + heal + " hit point" + (heal == 1 ? "." : "s."), eChatType.CT_Spell);
}
else
{
MessageToCaster("You cannot absorb any more life.", eChatType.CT_SpellResisted);
}
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:31,代码来源:DamageSpeedDecrease.cs
示例3: EventHandler
/// <summary>
/// Handler fired on every melee attack by effect target
/// </summary>
/// <param name="e"></param>
/// <param name="sender"></param>
/// <param name="arguments"></param>
protected void EventHandler(DOLEvent e, object sender, EventArgs arguments)
{
AttackFinishedEventArgs atkArgs = arguments as AttackFinishedEventArgs;
if (atkArgs == null) return;
if (atkArgs.AttackData.AttackResult != GameLiving.eAttackResult.HitUnstyled
&& atkArgs.AttackData.AttackResult != GameLiving.eAttackResult.HitStyle) return;
if (atkArgs.AttackData.Target == null) return;
GameLiving target = atkArgs.AttackData.Target;
if (target == null) return;
if (target.ObjectState != GameObject.eObjectState.Active) return;
if (target.IsAlive == false) return;
GameLiving attacker = sender as GameLiving;
if (attacker == null) return;
if (attacker.ObjectState != GameObject.eObjectState.Active) return;
if (attacker.IsAlive == false) return;
if (atkArgs.AttackData.IsOffHand) return; // only react to main hand
if (atkArgs.AttackData.Weapon == null) return; // no weapon attack
int modifier = 100;
//double dpsCap = (1.2 + 0.3 * attacker.Level) * 0.7;
//double dps = Math.Min(atkArgs.AttackData.Weapon.DPS_AF/10.0, dpsCap);
double baseDamage = atkArgs.AttackData.Weapon.DPS_AF / 10.0 *
atkArgs.AttackData.WeaponSpeed;
modifier += (int)(25 * atkArgs.AttackData.Target.GetConLevel(atkArgs.AttackData.Attacker));
modifier = Math.Min(300, modifier);
modifier = Math.Max(75, modifier);
double damage = baseDamage * modifier * 0.001; // attack speed is 10 times higher (2.5spd=25)
double damageResisted = damage * target.GetResist(eDamageType.Body) * -0.01;
AttackData ad = new AttackData();
ad.Attacker = attacker;
ad.Target = target;
ad.Damage = (int)(damage + damageResisted);
ad.Modifier = (int)damageResisted;
ad.DamageType = eDamageType.Body;
ad.AttackType = AttackData.eAttackType.MeleeOneHand;
ad.AttackResult = GameLiving.eAttackResult.HitUnstyled;
ad.WeaponSpeed = atkArgs.AttackData.WeaponSpeed;
GamePlayer owner = attacker as GamePlayer;
if (owner != null)
{
owner.Out.SendMessage(LanguageMgr.GetTranslation(owner.Client, "Effects.TripleWieldEffect.MBHitsExtraDamage", target.GetName(0, false), ad.Damage), eChatType.CT_Spell, eChatLoc.CL_SystemWindow);
GamePlayer playerTarget = target as GamePlayer;
if (playerTarget != null)
{
owner.Out.SendMessage(LanguageMgr.GetTranslation(owner.Client, "Effects.TripleWieldEffect.XMBExtraDamageToYou", attacker.GetName(0, false), ad.Damage), eChatType.CT_Spell, eChatLoc.CL_SystemWindow);
}
}
target.OnAttackedByEnemy(ad);
attacker.DealDamage(ad);
foreach (GamePlayer player in ad.Attacker.GetPlayersInRadius(WorldMgr.VISIBILITY_DISTANCE))
{
player.Out.SendCombatAnimation(null, target, 0, 0, 0, 0, 0x0A, target.HealthPercent);
}
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:66,代码来源:TripleWieldEffect.cs
示例4: DrainPower
public override void DrainPower(AttackData ad)
{
if ( !(m_caster is NecromancerPet))
return;
base.DrainPower(ad);
}
开发者ID:mynew4,项目名称:DOLSharp,代码行数:7,代码来源:PowerDrain.cs
示例5: DamageTarget
public override void DamageTarget(AttackData ad, bool showEffectAnimation)
{
if(ad.Damage > 0 && ad.Target is GameNPC)
{
if(!(Caster is GamePlayer)) return;
IOldAggressiveBrain aggroBrain = ((GameNPC) ad.Target).Brain as IOldAggressiveBrain;
if(aggroBrain != null)
{
TurretPet turret = null;
if(Caster.TargetObject == null || !Caster.IsControlledNPC(Caster.TargetObject as TurretPet))
{
if(Caster.ControlledBrain != null && Caster.ControlledBrain.Body != null)
{
turret = Caster.ControlledBrain.Body as TurretPet;
}
}
else if(Caster.IsControlledNPC(Caster.TargetObject as TurretPet))
{
turret = Caster.TargetObject as TurretPet;
}
if(turret != null)
{
//pet will take aggro
AttackData turretAd = ad;
turretAd.Attacker = turret;
ad.Target.OnAttackedByEnemy(turretAd);
aggroBrain.AddToAggroList(turret, (ad.Damage + ad.CriticalDamage)*3);
}
aggroBrain.AddToAggroList(Caster, ad.Damage);
}
}
base.DamageTarget(ad, showEffectAnimation);
}
开发者ID:mynew4,项目名称:DOLSharp,代码行数:35,代码来源:PetPBAoE.cs
示例6: GenerateID
/// <summary>
/// Utility method to generate attack IDs.
/// </summary>
/// <param name="data">The data to create an id for.</param>
/// <returns>An entirely unique id for the data.</returns>
protected virtual int GenerateID(AttackData data)
{
var id = data.GetHashCode () * 23;
id <<= data.Priority;
id <<= 5;
id *= Time.frameCount;
return id;
}
开发者ID:UTC-SkillsUSA-2015,项目名称:SkillsUSA-2015,代码行数:13,代码来源:AbstractAttackingHitbox.cs
示例7: Attack
public Attack(AttackData data, int team, int id, float damageMult = 1.00f,
float xKnockbackMult = 1.00f, float yKnockbackMult = 1.00f)
{
kData = data;
kTeam = team;
kId = id;
damageMultiplier = damageMult;
launchScale = new Vector2 (xKnockbackMult, yKnockbackMult);
}
开发者ID:UTC-SkillsUSA-2015,项目名称:SkillsUSA-2015,代码行数:9,代码来源:Attack.cs
示例8: Attack
public Attack(AttackData atk)
{
this.aName = atk.aName;
this.range = atk.range;
this.dmg = atk.dmg;
this.roll = atk.roll;
this.nDice = atk.nDice;
foreach (DamageType x in atk.dmgTypes)
dmgTypes.Add(x);
}
开发者ID:ExaltedBagel,项目名称:TargetPractice,代码行数:11,代码来源:Attack.cs
示例9: Start
void Start()
{
victim.ownerPlayer = Network.player.guid;
var _attackData = new AttackData(100)
{
ownerPlayer = Network.player.guid,
projectile = ProjectileType.RED_BULLET,
weapon = WeaponType.ASSAULT_RIFLE,
};
victim.Hit(_attackData);
bangEntity.Refresh(victim);
}
开发者ID:JamesKim2998,项目名称:snugdc-project-ricochet,代码行数:15,代码来源:HUDBangEntityTest.cs
示例10: SendAttackCoord
public void SendAttackCoord(int charId, float fireForce, Quaternion fireAngle, CharacterCoord fireCoord)
{
if(network != null)
{
// 패킷 데이터 만들기
AttackData data = new AttackData();
data.characterId = charId;
data.fireForce = fireForce;
data.fireAngle = fireAngle;
data.fireCoord = fireCoord;
// 데이터를 UDP송신
AttackPacket packet = new AttackPacket(data);
network.SendUnreliableToAll<AttackData>(packet);
}
}
开发者ID:lastone9182,项目名称:NetworkProgramming,代码行数:16,代码来源:CharacterRoot.cs
示例11: StealEndo
/// <summary>
/// Uses percent of damage to renew endurance
/// </summary>
public virtual void StealEndo(AttackData ad)
{
if (ad == null) return;
if (!m_caster.IsAlive) return;
int renew = ((ad.Damage + ad.CriticalDamage) * Spell.ResurrectHealth / 100) * Spell.LifeDrainReturn / 100; // %endo returned
renew = m_caster.ChangeEndurance(m_caster, GameLiving.eEnduranceChangeType.Spell, renew);
if (renew > 0)
{
MessageToCaster("You steal " + renew + " endurance.", eChatType.CT_Spell);
}
else
{
MessageToCaster("You cannot steal any more endurance.", eChatType.CT_SpellResisted);
}
}
开发者ID:boscorillium,项目名称:dol,代码行数:19,代码来源:OmniLifedrainSpellHandler.cs
示例12: StealLife
/// <summary>
/// Uses percent of damage to heal the caster
/// </summary>
public override void StealLife(AttackData ad)
{
if (ad == null) return;
if (!Caster.IsAlive) return;
int heal = (ad.Damage + ad.CriticalDamage) * 35 / 100;
int mana = (ad.Damage + ad.CriticalDamage) * 21 / 100;
int endu = (ad.Damage + ad.CriticalDamage) * 14 / 100;
if (Caster.IsDiseased)
{
MessageToCaster("You are diseased!", eChatType.CT_SpellResisted);
heal >>= 1;
}
if (heal <= 0) return;
heal = Caster.ChangeHealth(Caster, GameLiving.eHealthChangeType.Spell, heal);
if (heal > 0)
{
MessageToCaster("You drain " + heal + " hit point" + (heal == 1 ? "." : "s."), eChatType.CT_Spell);
}
else
{
MessageToCaster("You cannot absorb any more life.", eChatType.CT_SpellResisted);
}
if (mana <= 0) return;
mana = Caster.ChangeMana(Caster, GameLiving.eManaChangeType.Spell, mana);
if (mana > 0)
{
MessageToCaster("You drain " + mana + " power point" + (mana == 1 ? "." : "s."), eChatType.CT_Spell);
}
else
{
MessageToCaster("You cannot absorb any more power.", eChatType.CT_SpellResisted);
}
if (endu <= 0) return;
endu = Caster.ChangeEndurance(Caster, GameLiving.eEnduranceChangeType.Spell, endu);
if (heal > 0)
{
MessageToCaster("You drain " + endu + " endurance point" + (endu == 1 ? "." : "s."), eChatType.CT_Spell);
}
else
{
MessageToCaster("You cannot absorb any more endurance.", eChatType.CT_SpellResisted);
}
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:50,代码来源:TartarosGift.cs
示例13: DrainPower
/// <summary>
/// Use a percentage of the damage to refill caster's power.
/// </summary>
/// <param name="ad">Attack data.</param>
public virtual void DrainPower(AttackData ad)
{
if (ad == null || !m_caster.IsAlive)
return;
GameLiving owner = Owner();
if (owner == null)
return;
int powerGain = (ad.Damage + ad.CriticalDamage) * m_spell.LifeDrainReturn / 100;
powerGain = owner.ChangeMana(m_caster, GameLiving.eManaChangeType.Spell, powerGain);
if (powerGain > 0)
MessageToOwner(String.Format("Your summon channels {0} power to you!", powerGain), eChatType.CT_Spell);
else
MessageToOwner("You cannot absorb any more power.", eChatType.CT_SpellResisted);
}
开发者ID:mynew4,项目名称:DOLSharp,代码行数:21,代码来源:PowerDrain.cs
示例14: Damage
public void Damage(AttackData attackData)
{
if (! enabled)
{
// Debug.Log("DamageDetector already disabled!");
return;
}
if (m_DoDamage != null)
{
m_DoDamage(attackData);
}
else
{
Debug.Log("doDamage is not set!");
}
}
开发者ID:JamesKim2998,项目名称:snugdc-project-ricochet,代码行数:17,代码来源:DamageDetector.cs
示例15: CalculateDamageToTarget
public override AttackData CalculateDamageToTarget( GameLiving target, double effectiveness )
{
int bleedValue = target.TempProperties.getProperty<int>( BLEED_VALUE_PROPERTY);
AttackData ad = new AttackData();
ad.Attacker = Caster;
ad.Target = target;
ad.AttackType = AttackData.eAttackType.Spell;
ad.Modifier = bleedValue * ad.Target.GetResist( Spell.DamageType ) / -100;
ad.Damage = bleedValue + ad.Modifier;
ad.DamageType = Spell.DamageType;
ad.AttackResult = GameLiving.eAttackResult.HitUnstyled;
ad.SpellHandler = this;
ad.CausesCombat = false;
return ad;
}
开发者ID:mynew4,项目名称:DOLSharp,代码行数:17,代码来源:StyleBleeding.cs
示例16: DamageTarget
public override void DamageTarget(AttackData ad, bool showEffectAnimation)
{
ad.Damage = (int)(ad.Damage * m_effetiveness);
base.DamageTarget(ad, showEffectAnimation);
if (m_currentTick < m_maxTick)
{
m_effetiveness -= 0.1;
//fetch next target
foreach (GamePlayer pl in m_currentSource.GetPlayersInRadius(500))
{
if (GameServer.ServerRules.IsAllowedToAttack(Caster,pl,true)){
StartSpell(pl);
break;
}
}
}
}
开发者ID:mynew4,项目名称:DAoC,代码行数:17,代码来源:ChainBoltSpellHandler.cs
示例17: DamageTarget
/// <summary>
/// Apply the extra aggression
/// </summary>
/// <param name="ad"></param>
/// <param name="showEffectAnimation"></param>
/// <param name="attackResult"></param>
public override void DamageTarget(AttackData ad, bool showEffectAnimation, int attackResult)
{
base.DamageTarget(ad, showEffectAnimation, attackResult);
if (ad.Target is GameNPC && Spell.Value > 0)
{
IOldAggressiveBrain aggroBrain = ((GameNPC)ad.Target).Brain as IOldAggressiveBrain;
if (aggroBrain != null)
{
// this amount is a wild guess - Tolakram
aggroBrain.AddToAggroList(Caster, Math.Max(1, (int)(Spell.Value * Caster.Level * 0.1)));
//log.DebugFormat("Damage: {0}, Taunt Value: {1}, Taunt Amount {2}", ad.Damage, Spell.Value, Math.Max(1, (int)(Spell.Value * Caster.Level * 0.1)));
}
}
m_lastAttackData = ad;
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:23,代码来源:TauntSpellHandler.cs
示例18: StealLife
/// <summary>
/// Uses percent of damage to heal the caster
/// </summary>
public virtual void StealLife(AttackData ad)
{
if (ad == null) return;
if (!m_caster.IsAlive) return;
int heal = (ad.Damage + ad.CriticalDamage) * Spell.LifeDrainReturn / 100; // % factor on all drains
if (m_caster.IsDiseased)
{
MessageToCaster("You are diseased!", eChatType.CT_SpellResisted);
heal >>= 1;
}
heal = m_caster.ChangeHealth(m_caster, GameLiving.eHealthChangeType.Spell, heal);
if (heal > 0)
{
MessageToCaster("You steal " + heal + " hit point" + (heal == 1 ? "." : "s."), eChatType.CT_Spell);
#region PVP DAMAGE
if (m_caster is NecromancerPet && ((m_caster as NecromancerPet).Brain as IControlledBrain).GetPlayerOwner() != null || m_caster is GamePlayer)
{
if (m_caster.DamageRvRMemory > 0)
m_caster.DamageRvRMemory -= (long)Math.Max(heal, 0);
}
#endregion PVP DAMAGE
}
else
{
MessageToCaster("You cannot absorb any more life.", eChatType.CT_SpellResisted);
#region PVP DAMAGE
if (m_caster is NecromancerPet && ((m_caster as NecromancerPet).Brain as IControlledBrain).GetPlayerOwner() != null || m_caster is GamePlayer)
{
if (m_caster.DamageRvRMemory > 0)
m_caster.DamageRvRMemory = 0; //Remise a zéro compteur dommages/heal rps
}
#endregion PVP DAMAGE
}
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:46,代码来源:OmniLifedrainSpellHandler.cs
示例19: DamageTarget
private void DamageTarget(GameLiving target, GameLiving caster)
{
double modifier = 0.5 + (caster.GetModifiedSpecLevel("Soulrending") * 0.01);
int basedamage = (int)(250 * modifier);
int resist = basedamage * target.GetResist(eDamageType.Spirit) / -100;
int damage = basedamage + resist;
int heal = (int)(damage * 0.75);
int modheal = caster.MaxHealth - caster.Health;
if (modheal > heal)
modheal = heal;
caster.Health += modheal;
GamePlayer player = caster as GamePlayer;
if (player != null)
player.Out.SendMessage("You hit " + target.Name + " for " + damage + "(" + resist + ") points of damage!", eChatType.CT_YouHit, eChatLoc.CL_SystemWindow);
if (caster is GamePlayer && modheal > 0)
((GamePlayer)caster).Out.SendMessage("Your Soul Quench returns " + modheal + " lifepoints to you", eChatType.CT_Spell, eChatLoc.CL_SystemWindow);
GamePlayer targetPlayer = target as GamePlayer;
if (targetPlayer != null)
{
if (targetPlayer.IsStealthed)
targetPlayer.Stealth(false);
}
foreach (GamePlayer p in target.GetPlayersInRadius(false, WorldMgr.VISIBILITY_DISTANCE))
{
p.Out.SendSpellEffectAnimation(caster, target, 1145, 0, false, 1);
p.Out.SendCombatAnimation(caster, target, 0, 0, 0, 0, 0x14, target.HealthPercent);
}
//target.TakeDamage(caster, eDamageType.Spirit, damage, 0);
AttackData ad = new AttackData();
ad.AttackResult = GameLiving.eAttackResult.HitUnstyled;
ad.Attacker = caster;
ad.Target = target;
ad.DamageType = eDamageType.Spirit;
ad.Damage = damage;
target.OnAttackedByEnemy(ad);
caster.DealDamage(ad);
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:41,代码来源:SoulQuenchAbility.cs
示例20: StealLife
/// <summary>
/// Uses percent of damage to power the caster
/// </summary>
public override void StealLife(AttackData ad)
{
if (ad == null) return;
if (!m_caster.IsAlive) return;
int heal = (ad.Damage + ad.CriticalDamage) * m_spell.LifeDrainReturn / 100;
// Return the spell power? + % calculated on HP value and caster maxmana
double manareturned = m_spell.Power + (heal * m_caster.MaxMana / 100);
if (heal <= 0) return;
heal = m_caster.ChangeMana(m_caster, GameLiving.eManaChangeType.Spell, (int)manareturned);
if (heal > 0)
{
MessageToCaster("You steal " + heal + " power point" + (heal == 1 ? "." : "s."), eChatType.CT_Spell);
}
else
{
MessageToCaster("You cannot absorb any more power.", eChatType.CT_SpellResisted);
}
}
开发者ID:uvbs,项目名称:Dawn-of-Light-core,代码行数:24,代码来源:DamageToPowerSpellHandler.cs
注:本文中的AttackData类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论