| Home Page | Recent Changes | Preferences

TournamentHealth/Script

UT2003, Build 2225

class TournamentHealth extends TournamentPickUp
    abstract;

var() int HealingAmount;
var() bool bSuperHeal;

/* DetourWeight()
value of this path to take a quick detour (usually 0, used when on route to distant objective, but want to grab inventory for example)
*/
function float DetourWeight(Pawn Other,float PathWeight)
{
    local int Heal;
    
    if ( AIController(Other.Controller).PriorityObjective() && (Other.Health > 65) )
        return 0;
    Heal = Min(GetHealMax(Other),Other.Health + HealingAmount) - Other.Health;
    return (0.02 * Heal * MaxDesireability)/PathWeight;
}

event float BotDesireability(Pawn Bot)
{
    local float desire;
    local int HealMax;

    HealMax = GetHealMax(Bot);
    desire = Min(HealingAmount, HealMax - Bot.Health);

    if ( (Bot.Weapon != None) && (Bot.Weapon.AIRating > 0.5) )
        desire *= 1.7;
    if ( bSuperHeal || (Bot.Health < 45) )
        return ( FMin(0.03 * desire, 2.2) );
    else
    {
        if ( desire > 6 )
            desire = FMax(desire,25);
        else if ( Bot.Controller.bHuntPlayer )
            return 0;
        return ( FMin(0.017 * desire, 2.0) ); 
    }
}

static function string GetLocalString(
    optional int Switch,
    optional PlayerReplicationInfo RelatedPRI_1, 
    optional PlayerReplicationInfo RelatedPRI_2
    )
{
    return Default.PickupMessage$Default.HealingAmount;
}

function int GetHealMax(Pawn P)
{
    local int HealMax;
    
    HealMax = P.HealthMax;
    if (bSuperHeal) 
        HealMax = Min(199, HealMax * 2.0);
    return HealMax;
}

auto state Pickup
{   
    function Touch( actor Other )
    {
        local Pawn P;
            
        if ( ValidTouch(Other) ) 
        {
            P = Pawn(Other);
                    if (P.GiveHealth(HealingAmount, GetHealMax(P)))
                    {
                AnnouncePickup(P);
                        SetRespawn();
                    }
        }
    }
}

defaultproperties
{
     HealingAmount=20                                // The amount of healing done.
     PickupMessage="You picked up a Health Pack +"   // The on-screen message.
     RespawnTime=30.000000                           // How long it takes for the object to respawn.
     MaxDesireability=0.700000
     RemoteRole=ROLE_DumbProxy
     AmbientGlow=255
     CollisionRadius=32.000000
     CollisionHeight=23.000000
     Mass=10.000000
}

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In