Head Shot Bonus (UT2003)

  1. Introduction
  2. Code source
  3. Explication du code

Créé le 01/06/2003
Dernière mise à jour le 01/07/2003

1) Introduction

Head Shot Bonus est un mutator pour Unreal Tournament 2003 qui donnera 1frag supplémentaire a celui qui tire a la tête de son adversaire avec son lightning gun. (+2frags)
En Team Deathmatch, l'équipe gagne aussi 1frag supplémentaire, mais pas en Capture The Flag ou Bombing Run.
On a besoin d'un GameRules pour accéder a la function PreventDeath et la modifié.
Le mutator sert juste pour faire apparaîttre dans le jeu le HeadShotBonusGameRules et a l'ajouter a la chaîne des GameRules du GameType comme pour le mutator d'origine Vampire par exemple. (sans cette chaîne le GameType prendrais en charge un seul GameRules et donc un seul mutator de ce type)

Top

2) Code source

Mutator:

//===========================================
// Head Shot Bonus
// created by Crokx
// 01/07/2003 (dd/mm/yyyy)
//===========================================
class HeadShotBonus extends Mutator;


//=============================
// Dés le début dans la partie
//=============================
function PostBeginPlay()
{
    local GameRules GR;

    Super.PostBeginPlay();

    GR = spawn(class'HeadShotBonusGameRules');
    if(Level.Game.GameRulesModifiers == None)
        Level.Game.GameRulesModifiers = GR;
    else Level.Game.GameRulesModifiers.AddGameRules(GR);
    Destroy();
}


//=========
// Default
//=========
defaultproperties
{
    FriendlyName="Head Shot Bonus"
    Description="2frags for one head shot."
}

GameRules:

class HeadShotBonusGameRules extends GameRules;


var private bool bTeamFrag;


//=============================
// Dés le début dans la partie
//=============================
function PostBeginPlay()
{
    bTeamFrag = ((Level.Game.IsA('TeamGame')) && (TeamGame(Level.Game).bScoreTeamKills));
}


//================================
// Quand un joueur viens de tombé
//================================
function bool PreventDeath(Pawn Killed, Controller Killer, class<DamageType> damageType, vector HitLocation)
{
    if((damageType == class'DamTypeSniperHeadShot')
    && (Killer != None)
    && (Killer.PlayerReplicationInfo != None))
    {
        if(Killer.Pawn != None)
            Killer.Pawn.ClientMessage("HeadShot +2frags");
        Killer.PlayerReplicationInfo.Score += 1;
        if((bTeamFrag)
        && (Killer.PlayerReplicationInfo.Team != None))
            TeamGame(Level.Game).Teams[Killer.PlayerReplicationInfo.Team.TeamIndex].Score += 1;
    }

    return Super.PreventDeath(Killed, Killer, damageType, HitLocation);
}

Fichier INT:

[Public]
Object=(Class=Class, MetaClass=Engine.Mutator, Name=HeadShotBonus.HeadShotBonus)

Top

3) Explication du code

Mutator:

GameRules:

Top