My check so far:
Code: Select all
function int FixRangedProjectiles(ELogType LogLevel) {
/*******************************************************************************
Changes RangedProjectile for all ScriptedPawns, if RangedProjectile.Class is
equal to:
* "class'UnrealShare.Plasma'" -> ScriptedPawn.Default.RangedProjectile
* "class'BotPack.GuidedWarShell'" -> ScriptedPawn.Default.RangedProjectile
* "class'UnrealShare.EnergyBolt'" -> Class'EnergyBoltSB'
* "class'UnrealShare.ShellCase'" -> ScriptedPawn.Default.RangedProjectile
Log a warning if
ScriptedPawn.bHasRangedAttack != ScriptedPawn.Default.bHasRangedAttack
ScriptedPawn.RangedProjectile != None && ! ScriptedPawn.bHasRangedAttack
Returns the number of modified ScriptedPawns.
*******************************************************************************/
local ScriptedPawn SP;
local int result;
// log("Entered FixRangedProjectiles, Level.PawnList=" $ Level.PawnList); <- sometimes None?!
foreach AllActors(class 'ScriptedPawn', SP)
if (SP.RangedProjectile == class'UnrealShare.Plasma')
FixRangedProjectile(LOG_Info, SP, SP.Default.RangedProjectile, result);
else if (SP.RangedProjectile == class'BotPack.GuidedWarShell')
FixRangedProjectile(LOG_Info, SP, SP.Default.RangedProjectile, result);
else if (SP.RangedProjectile == class'UnrealShare.EnergyBolt')
FixRangedProjectile(LOG_Info, SP, Class'EnergyBoltSB', result);
else if (SP.RangedProjectile == class'UnrealShare.ShellCase')
FixRangedProjectile(LOG_Info, SP, SP.Default.RangedProjectile, result);
// if *RangedProjectile==None* then *bHasRangedAttack* is not necessarily FALSE - see Titan for example. Such cases cannot be detected.
else if (SP.bHasRangedAttack != SP.Default.bHasRangedAttack)
logger(LOG_Warning, "FixRangedProjectiles", "bHasRangedAttack=" $ SP.bHasRangedAttack @ "is not the default value for" @ SP $ "; RangedProjectile=" $ SP.RangedProjectile);
else if (SP.RangedProjectile != None && ! SP.bHasRangedAttack)
logger(LOG_Warning, "FixRangedProjectiles", "bHasRangedAttack=false for" @ SP @ " although it has a RangedProjectile=" $ SP.RangedProjectile);
return result;
}