Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/DelayedDamage.js
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | DelayedDamage.prototype.Hit = function(data, lateness) | ||||
if (data.splash) | if (data.splash) | ||||
AttackHelper.CauseDamageOverArea({ | AttackHelper.CauseDamageOverArea({ | ||||
"type": data.type, | "type": data.type, | ||||
"attackData": data.splash.attackData, | "attackData": data.splash.attackData, | ||||
"attacker": data.attacker, | "attacker": data.attacker, | ||||
"attackerOwner": data.attackerOwner, | "attackerOwner": data.attackerOwner, | ||||
"origin": Vector2D.from3D(data.position), | "origin": Vector2D.from3D(data.position), | ||||
"radius": data.splash.radius, | "minRange": data.splash.minRange, | ||||
"maxRange": data.splash.maxRange, | |||||
"shape": data.splash.shape, | "shape": data.splash.shape, | ||||
"direction": data.direction, | "direction": data.direction, | ||||
"friendlyFire": data.splash.friendlyFire | "friendlyFire": data.splash.friendlyFire | ||||
}); | }); | ||||
// Since we can't damage mirages, replace a miraged target by the real target. | // Since we can't damage mirages, replace a miraged target by the real target. | ||||
let target = data.target; | let target = data.target; | ||||
let cmpMirage = Engine.QueryInterface(data.target, IID_Mirage); | let cmpMirage = Engine.QueryInterface(data.target, IID_Mirage); | ||||
Show All 13 Lines | DelayedDamage.prototype.Hit = function(data, lateness) | ||||
if (PositionHelper.TestCollision(target, data.position, lateness) && | if (PositionHelper.TestCollision(target, data.position, lateness) && | ||||
AttackHelper.HandleAttackEffects(target, data)) | AttackHelper.HandleAttackEffects(target, data)) | ||||
{ | { | ||||
cmpProjectileManager.RemoveProjectile(data.projectileId); | cmpProjectileManager.RemoveProjectile(data.projectileId); | ||||
return; | return; | ||||
} | } | ||||
// If we didn't hit the main target look for nearby units. | // If we didn't hit the main target look for nearby units. | ||||
let ents = PositionHelper.EntitiesNearPoint(Vector2D.from3D(data.position), this.MISSILE_HIT_RADIUS, | const ents = PositionHelper.EntitiesNearPoint(Vector2D.from3D(data.position), 0, this.MISSILE_HIT_RADIUS, | ||||
AttackHelper.GetPlayersToDamage(data.attackerOwner, data.friendlyFire)); | AttackHelper.GetPlayersToDamage(data.attackerOwner, data.friendlyFire)); | ||||
for (let ent of ents) | for (let ent of ents) | ||||
{ | { | ||||
if (!PositionHelper.TestCollision(ent, data.position, lateness) || | if (!PositionHelper.TestCollision(ent, data.position, lateness) || | ||||
!AttackHelper.HandleAttackEffects(ent, data)) | !AttackHelper.HandleAttackEffects(ent, data)) | ||||
continue; | continue; | ||||
cmpProjectileManager.RemoveProjectile(data.projectileId); | cmpProjectileManager.RemoveProjectile(data.projectileId); | ||||
break; | break; | ||||
} | } | ||||
}; | }; | ||||
Engine.RegisterSystemComponentType(IID_DelayedDamage, "DelayedDamage", DelayedDamage); | Engine.RegisterSystemComponentType(IID_DelayedDamage, "DelayedDamage", DelayedDamage); |
Wildfire Games · Phabricator