no it's depend on the damager hits
from Battle Script / strategy.dll AddScoreToInitiator(AiActor actor, AiDamageInitiator initiator, double score):
Code:
public int AddScoreToInitiator(AiActor actor, AiDamageInitiator initiator, double score)
{
DamagerScore item = new DamagerScore(initiator, score, base.Time.current());
int index = this.damList.victim.IndexOf(actor);
if (index >= 0)
{
List<DamagerScore> list = this.damList.damagers[index];
int num2 = list.IndexOf(item);
if (num2 >= 0)
{
DamagerScore local1 = list[num2];
local1.score += score;
list[num2].time = base.Time.current();
return index;
}
list.Insert(0, item);
return index;
}
this.damList.victim.Insert(0, actor);
List<DamagerScore> list2 = new List<DamagerScore> {
item
};
this.damList.damagers.Insert(0, list2);
return 0;
}
public override void OnActorDamaged(int missionNumber, string shortName, AiActor actor, AiDamageInitiator initiator, NamedDamageTypes damageType)
{
switch (damageType)
{
case NamedDamageTypes.ChunkSmallDamage:
case NamedDamageTypes.PartSmallDamage:
case NamedDamageTypes.WeaponSmallDamage:
case NamedDamageTypes.EngineSmallDamage:
case NamedDamageTypes.LifeKeeperPartSmallDamage:
this.AddScoreToInitiator(actor, initiator, 0.1);
break;
case NamedDamageTypes.ChunkLargeDamage:
case NamedDamageTypes.PartLargeDamage:
case NamedDamageTypes.WeaponLargeDamage:
case NamedDamageTypes.EngineLargeDamage:
case NamedDamageTypes.LifeKeeperPartLargeDamage:
this.AddScoreToInitiator(actor, initiator, 0.2);
break;
}
foreach (AMission mission in base.missions)
{
if (mission.IsMissionListener(missionNumber))
{
mission.OnActorDamaged(missionNumber, shortName, actor, initiator, damageType);
}
}
}
public override void OnActorDead(int missionNumber, string shortName, AiActor actor, AiDamageInitiator initiator)
{
if ((base.GamePlay.gpPlayer().Place() == actor) && base.GamePlay.gpIsServerSingle())
{
base.GamePlay.gpHUDLogCenter("Press Esc to end mission.");
}
if (actor is AiPerson)
{
initiator = null;
}
int index = -1;
if (initiator != null)
{
index = this.AddScoreToInitiator(actor, initiator, 0.5);
}
else
{
index = this.damList.victim.IndexOf(actor);
}
List<DamagerScore> damages = null;
if (index >= 0)
{
damages = this.damList.damagers[index];
}
else
{
damages = new List<DamagerScore>();
}
foreach (AMission mission in base.missions)
{
if (mission.IsMissionListener(missionNumber))
{
mission.OnActorDead(missionNumber, shortName, actor, damages);
}
}
this.LogServer_ActorDead(missionNumber, shortName, actor, initiator);
}
public override void OnAircraftDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType)
{
base.OnAircraftDamaged(missionNumber, shortName, aircraft, initiator, damageType);
this.AddScoreToInitiator(aircraft, initiator, 0.1);
}
public override void OnAircraftLimbDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiLimbDamage limbDamage)
{
base.OnAircraftLimbDamaged(missionNumber, shortName, aircraft, limbDamage);
this.AddScoreToInitiator(aircraft, limbDamage.Initiator, 0.2);
}
public override void OnPersonHealth(AiPerson person, AiDamageInitiator initiator, float deltaHealth)
{
this.AddScoreToInitiator(person, initiator, ((double) deltaHealth) / 255.0);
base.OnPersonHealth(person, initiator, deltaHealth);
}