🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.games.unreal.tournament
15 messages
15 total messages Started by §ď×darts Wed, 17 Dec 2008 09:27
The final skill to master ... any advice?
#191405
Author: §ď×darts
Date: Wed, 17 Dec 2008 09:27
13 lines
1993 bytes
OK.  I can rocket jump.  I can hammer jump. .. I can shoot my teleporter
puck all the way across a map with rockets or a shock ball.  I've done skeet
shooting with teleporter pucks and the shock rifle.  I can even slide across
the floor and break dance.  Other UT skills I have gained over the years are
too numerous to name.

What I can not figure out how to do is block incoming fire with my impact
hammer.  I've seen it done and I know guys who can do it fairly regularly. 
I did it accidentally once, but I'll be dipped in shit if I know how I did
it.

So, any tips?  What weapons can be blocked?  What weapons can not be
blocked?  And how the hell does one accomplish this?
Re: The final skill to master ... any advice?
#191419
Author: MB
Date: Wed, 17 Dec 2008 12:31
46 lines
3216 bytes
§ï×darts skrev:
> OK.  I can rocket jump.  I can hammer jump. .. I can shoot my teleporter
> puck all the way across a map with rockets or a shock ball.  I've done skeet
> shooting with teleporter pucks and the shock rifle.  I can even slide across
> the floor and break dance.  Other UT skills I have gained over the years are
> too numerous to name.
> 
> What I can not figure out how to do is block incoming fire with my impact
> hammer.  I've seen it done and I know guys who can do it fairly regularly. 
> I did it accidentally once, but I'll be dipped in shit if I know how I did
> it.
> 
> So, any tips?  What weapons can be blocked?  What weapons can not be
> blocked?  And how the hell does one accomplish this?

I got two other tips.

First off, it's not well known and very hard to master but you can 
actually do high speed bunny jumping in UT (99 version).

A good place to try it out is on Liandri. Out in the big room you have 
the bio gun up on a "shelf" and under it is an almost diagonal pillar. 
This is where you usually take the shortcut up to bio by dodging up on 
the pillar.
If you stand behind the pillar and walk up right next to it touching it 
and jump in the correct moment, you'll notice you're speed increases 
alot and you'll land far away from the pillar. Doing this jump alone can 
seem difficult, but try it a few times and you'll see what I mean.
Now, if you time it *exactly* right when you land and push jump again, 
you will keep this high speed through the next jump and the next and so 
forth.
I haven't practised it alot and I found it very hard to do. I only 
succeeded 3 jumps in a row and doubt that it is very useful in game 
unless you have perfected your skills on doing it.
I used that pillar on Liandri as an example, but it probably works on 
similar surfaces on other maps too.

Another trick that you can also try out on Liandri is making a similar 
high speed long distance jump through the teleporter leading to the belt 
area.
When approaching the teleporter, jump in the right moment right before 
you enter it and you'll gain the same high speed and long distance jump 
as in the previous trick. This is much easier to do and can be a good 
thing to do when attacking the belt area.

MB
Re: The final skill to master ... any advice?
#191406
Author: goPostal
Date: Wed, 17 Dec 2008 14:32
24 lines
2222 bytes
"§ď×darts" <sixdartsREMOVE@hotmail.com> wrote in message 
news:VsadnYncI41oWNXUnZ2dnUVZ_gednZ2d@giganews.com...
> OK.  I can rocket jump.  I can hammer jump. .. I can shoot my teleporter
> puck all the way across a map with rockets or a shock ball.  I've done 
> skeet
> shooting with teleporter pucks and the shock rifle.  I can even slide 
> across
> the floor and break dance.  Other UT skills I have gained over the years 
> are
> too numerous to name.
>
> What I can not figure out how to do is block incoming fire with my impact
> hammer.  I've seen it done and I know guys who can do it fairly regularly.
> I did it accidentally once, but I'll be dipped in shit if I know how I did
> it.
>
> So, any tips?  What weapons can be blocked?  What weapons can not be
> blocked?  And how the hell does one accomplish this?

Six if you want to test one evening, I'm all for it. I could run a 
passworded server and see.

I'll pull the code and see what's blocked for you. 
Re: The final skill to master ... any advice?
#191407
Author: goPostal
Date: Wed, 17 Dec 2008 14:38
25 lines
17338 bytes
"§ď×darts" <sixdartsREMOVE@hotmail.com> wrote in message 
news:VsadnYncI41oWNXUnZ2dnUVZ_gednZ2d@giganews.com...
> OK.  I can rocket jump.  I can hammer jump. .. I can shoot my teleporter
> puck all the way across a map with rockets or a shock ball.  I've done 
> skeet
> shooting with teleporter pucks and the shock rifle.  I can even slide 
> across
> the floor and break dance.  Other UT skills I have gained over the years 
> are
> too numerous to name.
>
> What I can not figure out how to do is block incoming fire with my impact
> hammer.  I've seen it done and I know guys who can do it fairly regularly.
> I did it accidentally once, but I'll be dipped in shit if I know how I did
> it.
>
> So, any tips?  What weapons can be blocked?  What weapons can not be
> blocked?  And how the hell does one accomplish this?

OK I pulled the code for the hammer. There is a very small area in which to 
block the incoming weapon fire, so timing is crucial. Here is the weapon 
code (I'll explain it later when I get home):

 //=============================================================================// ImpactHammer.//=============================================================================class ImpactHammer extends TournamentWeapon;#exec MESH IMPORT  MESH=ImpactHammer ANIVFILE=MODELS\impact_a.3DDATAFILE=MODELS\impact_d.3D X=0 Y=0 Z=0#exec MESH ORIGIN MESH=ImpactHammer X=0 Y=0 Z=0 YAW=64 PITCH=0 ROLL=-56#exec MESH SEQUENCE MESH=ImpactHammer SEQ=All         STARTFRAME=0NUMFRAMES=56#exec MESH SEQUENCE MESH=ImpactHammer SEQ=Select      STARTFRAME=0NUMFRAMES=17#exec MESH SEQUENCE MESH=ImpactHammer SEQ=Still       STARTFRAME=17NUMFRAMES=1#exec MESH SEQUENCE MESH=ImpactHammer SEQ=Pull        STARTFRAME=17NUMFRAMES=5#exec MESH SEQUENCE MESH=ImpactHammer SEQ=Shake       STARTFRAME=22NUMFRAMES=10#exec MESH SEQUENCE MESH=ImpactHammer SEQ=Fire        STARTFRAME=35NUMFRAMES=16#exec MESH SEQUENCE MESH=ImpactHammer SEQ=Down        STARTFRAME=51NUMFRAMES=5#exec TEXTURE IMPORT NAME=JImpactHammer1 FILE=MODELS\imp1.PCX GROUP=SkinsLODSET=2#exec TEXTURE IMPORT NAME=JImpactHammer2 FILE=MODELS\imp2.PCX GROUP=SkinsLODSET=2#exec TEXTURE IMPORT NAME=JImpactHammer3 FILE=MODELS\imp3.pCX GROUP=SkinsLODSET=2#exec TEXTURE IMPORT NAME=JImpactHammer4 FILE=MODELS\imp4.PCX GROUP=SkinsLODSET=2#exec MESHMAP SCALE MESHMAP=ImpactHammer X=0.006 Y=0.006 Z=0.007#exec MESHMAP SETTEXTURE MESHMAP=ImpactHammer NUM=0 TEXTURE=JImpactHammer1#exec MESHMAP SETTEXTURE MESHMAP=ImpactHammer NUM=1 TEXTURE=JImpactHammer2#exec MESHMAP SETTEXTURE MESHMAP=ImpactHammer NUM=2 TEXTURE=JImpactHammer3#exec MESHMAP SETTEXTURE MESHMAP=ImpactHammer NUM=3 TEXTURE=JImpactHammer4#exec MESH IMPORT MESH=ImpPick ANIVFILE=MODELS\imppick_a.3DDATAFILE=MODELS\imppick_d.3D X=0 Y=0 Z=0#exec MESH ORIGIN MESH=ImpPick X=0 Y=0 Z=0 YAW=0 ROLL=-64#exec MESH SEQUENCE MESH=ImpPick SEQ=All         STARTFRAME=0   NUMFRAMES=1#exec MESH SEQUENCE MESH=ImpPick SEQ=Still       STARTFRAME=0   NUMFRAMES=1#exec TEXTURE IMPORT NAME=JImpPick1 FILE=MODELS\imp0.PCX GROUP=SkinsLODSET=2#exec MESHMAP SCALE MESHMAP=ImpPick X=0.1 Y=0.1 Z=0.2#exec MESHMAP SETTEXTURE MESHMAP=ImpPick NUM=1 TEXTURE=JImpPick1#exec MESH IMPORT MESH=ImpactHandm ANIVFILE=MODELS\impacthand_a.3DDATAFILE=MODELS\impacthand_d.3D#exec MESH ORIGIN MESH=ImpactHandm X=30 Y=-130 Z=-157 YAW=64 ROLL=-64#exec MESH SEQUENCE MESH=ImpactHandm SEQ=All  STARTFRAME=0   NUMFRAMES=13#exec MESH SEQUENCE MESH=ImpactHandm SEQ=Pull  STARTFRAME=1   NUMFRAMES=10#exec MESH SEQUENCE MESH=ImpactHandm SEQ=Shake STARTFRAME=12   NUMFRAMES=1#exec MESH SEQUENCE MESH=ImpactHandm SEQ=Still STARTFRAME=0   NUMFRAMES=1#exec MESHMAP SCALE MESHMAP=ImpactHandm X=0.06 Y=0.06 Z=0.12#exec MESHMAP SETTEXTURE MESHMAP=ImpactHandm NUM=1 TEXTURE=JImpPick1#exec TEXTURE IMPORT NAME=IconHammer FILE=TEXTURES\HUD\WpnMpact.PCXGROUP="Icons" MIPS=OFF#exec TEXTURE IMPORT NAME=UseHammer FILE=TEXTURES\HUD\UseMpact.PCXGROUP="Icons" MIPS=OFF#exec AUDIO IMPORT FILE="Sounds\ImpactHammer\impact-regularfire.WAV"NAME="ImpactFire" GROUP="ASMD"#exec AUDIO IMPORT FILE="Sounds\ImpactHammer\impact-altfireSTART.WAV"NAME="ImpactAltFireStart" GROUP="ASMD"#exec AUDIO IMPORT FILE="Sounds\ImpactHammer\impact-altfireRELEASE.WAV"NAME="ImpactAltFireRelease" GROUP="ASMD"#exec AUDIO IMPORT FILE="Sounds\ImpactHammer\impacthammerloop.WAV"NAME="ImpactLoop" GROUP="ASMD"#exec AUDIO IMPORT FILE="Sounds\ImpactHammer\impactpickup.WAV"NAME="ImpactPickup" GROUP="ASMD"var float ChargeSize, Count;var() sound AltFireSound;var() sound TensionSound;function float RateSelf( out int bUseAltMode ){    local float EnemyDist;    local bool bRetreating;    local Pawn P;    bUseAltMode = 0;    P = Pawn(Owner);    if ( (P == None) || (P.Enemy == None) )        return 0;    EnemyDist = VSize(P.Enemy.Location - Owner.Location);    if ( (EnemyDist < 750) && P.IsA('Bot') && Bot(P).bNovice && (P.Skill <=2) && !P.Enemy.IsA('Bot') && (ImpactHammer(P.Enemy.Weapon) != None) )        return FClamp(300/(EnemyDist + 1), 0.6, 0.75);    if ( EnemyDist > 400 )        return 0.1;    if ( (P.Weapon != self) && (EnemyDist < 120) )        return 0.25;    return ( FMin(0.8, 81/(EnemyDist + 1)) );}function float SuggestAttackStyle(){    return 10.0;}function float SuggestDefenseStyle(){    return -2.0;}simulated function PlayPostSelect(){    local Bot B;    if ( Level.NetMode == NM_Client )    {        Super.PlayPostSelect();        return;    }    B = Bot(Owner);    if ( (B != None) && (B.Enemy != None) )    {        B.PlayFiring();        B.bFire = 1;        B.bAltFire = 0;        Fire(1.0);    }}simulated function bool ClientFire( float Value ){    if ( bCanClientFire )    {        if ( (PlayerPawn(Owner) != None)            && ((Level.NetMode == NM_Standalone) ||PlayerPawn(Owner).Player.IsA('ViewPort')) )        {            if ( InstFlash != 0.0 )                PlayerPawn(Owner).ClientInstantFlash( InstFlash, InstFog);            PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert);        }        if ( Affector != None )            Affector.FireEffect();        Owner.PlayOwnedSound(Misc1Sound, SLOT_Misc,1.3*Pawn(Owner).SoundDampening);        PlayAnim('Pull', 0.2, 0.05);        if ( Role < ROLE_Authority )            GotoState('ClientFiring');        return true;    }    return false;}function Fire( float Value ){    bPointing=True;    bCanClientFire = true;    ClientFire(Value);    Pawn(Owner).PlayRecoil(FiringSpeed);    GoToState('Firing');}function AltFire( float Value ){    bPointing=True;    bCanClientFire = true;    Pawn(Owner).PlayRecoil(FiringSpeed);    TraceAltFire();    ClientAltFire(value);    GoToState('AltFiring');}simulated function ClientWeaponEvent(name EventType){    if ( EventType == 'FireBlast' )    {        PlayFiring();        GotoState('ClientFireBlast');    }}simulated function PlayFiring(){    if (Owner != None)    {        if ( Affector != None )            Affector.FireEffect();        Owner.PlayOwnedSound(FireSound, SLOT_Misc,1.7*Pawn(Owner).SoundDampening,,,);        if ( PlayerPawn(Owner) != None )            PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert);        PlayAnim( 'Fire', 0.65 );    }}simulated function PlayAltFiring(){    if (Owner != None)    {        if ( Affector != None )            Affector.FireEffect();        PlayOwnedSound(AltFireSound, SLOT_Misc,1.7*Pawn(Owner).SoundDampening,,,);        LoopAnim( 'Fire', 0.65);    }}state Firing{    function AltFire(float F)    {    }    function Tick( float DeltaTime )    {        local Pawn P;        local Rotator EnemyRot;        local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z;        local actor HitActor;        if ( bChangeWeapon )            GotoState('DownWeapon');        if (  Bot(Owner) != None )        {            if ( Bot(Owner).Enemy == None )                Bot(Owner).bFire = 0;            else                Bot(Owner).bFire = 1;        }        P = Pawn(Owner);        if ( P == None )        {            AmbientSound = None;            GotoState('');            return;        }        else if( P.bFire==0 )        {            TraceFire(0);            PlayFiring();            GoToState('FireBlast');            return;        }        ChargeSize += 0.75 * DeltaTime;        Count += DeltaTime;        if ( Count > 0.2 )        {            Count = 0;            Owner.MakeNoise(1.0);        }        if (ChargeSize > 1)        {            if ( !P.IsA('PlayerPawn') && (P.Enemy != None) )            {                EnemyRot = Rotator(P.Enemy.Location - P.Location);                EnemyRot.Yaw = EnemyRot.Yaw & 65535;                if ( (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) > 8000)                    && (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) <57535) )                    return;                GetAxes(EnemyRot,X,Y,Z);            }            else                GetAxes(P.ViewRotation, X, Y, Z);            StartTrace = P.Location + CalcDrawOffset() + FireOffset.X * X +FireOffset.Y * Y + FireOffset.Z * Z;            if ( (Level.NetMode == NM_Standalone) && P.IsA('PlayerPawn') )                EndTrace = StartTrace + 25 * X;            else                EndTrace = StartTrace + 60 * X;            HitActor = Trace(HitLocation, HitNormal, EndTrace, StartTrace,true);            if ( (HitActor != None) && (HitActor.DrawType == DT_Mesh) )            {                ProcessTraceHit(HitActor, HitLocation, HitNormal,vector(AdjustedAim), Y, Z);                PlayFiring();                GoToState('FireBlast');            }        }    }    function BeginState()    {        ChargeSize = 0.0;        Count = 0.0;    }    function EndState()    {        Super.EndState();        AmbientSound = None;    }Begin:    FinishAnim();    AmbientSound = TensionSound;    SoundVolume = 255*Pawn(Owner).SoundDampening;    LoopAnim('Shake', 0.9);}state ClientFiring{    simulated function AnimEnd()    {        AmbientSound = TensionSound;        SoundVolume = 255*Pawn(Owner).SoundDampening;        LoopAnim('Shake', 0.9);        Disable('AnimEnd');    }}state FireBlast{    function Fire(float F)    {    }    function AltFire(float F)    {    }Begin:    if ( (Level.NetMode != NM_Standalone) && Owner.IsA('PlayerPawn')        && (ViewPort(PlayerPawn(Owner).Player) == None) )        PlayerPawn(Owner).ClientWeaponEvent('FireBlast');    FinishAnim();    Finish();}state ClientFireBlast{    simulated function bool ClientFire(float Value)    {        return false;    }    simulated function bool ClientAltFire(float Value)    {        return false;    }    simulated function AnimEnd()    {        if ( Pawn(Owner) == None )        {            PlayIdleAnim();            GotoState('');        }        else if ( !bCanClientFire )            GotoState('');        else if ( Pawn(Owner).bFire != 0 )            Global.ClientFire(0);        else if ( Pawn(Owner).bAltFire != 0 )            Global.ClientAltFire(0);        else        {            PlayIdleAnim();            GotoState('');        }    }}function TraceFire(float accuracy){    local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z;    local actor Other;    Owner.MakeNoise(Pawn(Owner).SoundDampening);    GetAxes(Pawn(owner).ViewRotation, X, Y, Z);    StartTrace = Owner.Location + CalcDrawOffset() + FireOffset.Y * Y +FireOffset.Z * Z;    AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, AimError,False, False);    EndTrace = StartTrace + 120.0 * vector(AdjustedAim);    Other = Pawn(Owner).TraceShot(HitLocation, HitNormal, EndTrace,StartTrace);    ProcessTraceHit(Other, HitLocation, HitNormal, vector(AdjustedAim), Y,Z);}function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal,Vector X, Vector Y, Vector Z){    if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner ==None))        return;    ChargeSize = FMin(ChargeSize, 1.5);    if ( (Other == Level) || Other.IsA('Mover') )    {        ChargeSize = FMax(ChargeSize, 1.0);        if ( VSize(HitLocation - Owner.Location) < 80 )            Spawn(class'ImpactMark',,, HitLocation+HitNormal,Rotator(HitNormal));        Owner.TakeDamage(36.0, Pawn(Owner), HitLocation, -69000.0 *ChargeSize * X, MyDamageType);    }    if ( Other != Level )    {        if ( Other.bIsPawn && (VSize(HitLocation - Owner.Location) > 90) )            return;        Other.TakeDamage(60.0 * ChargeSize, Pawn(Owner), HitLocation,66000.0 * ChargeSize * X, MyDamageType);        if ( !Other.bIsPawn && !Other.IsA('Carcass') )            spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9);    }}function TraceAltFire(){    local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z;    local actor Other;    local Projectile P;    local float speed;    Owner.MakeNoise(Pawn(Owner).SoundDampening);    GetAxes(Pawn(owner).ViewRotation, X, Y, Z);    StartTrace = Owner.Location + CalcDrawOffset() + FireOffset.X * X +FireOffset.Y * Y + FireOffset.Z * Z;    AdjustedAim = pawn(owner).AdjustAim(1000000, StartTrace, AimError,False, False);    EndTrace = StartTrace + 180 * vector(AdjustedAim);    Other = Pawn(Owner).TraceShot(HitLocation, HitNormal, EndTrace,StartTrace);    ProcessAltTraceHit(Other, HitLocation, HitNormal, vector(AdjustedAim),Y, Z);    // push aside projectiles    ForEach VisibleCollidingActors(class'Projectile', P, 550,Owner.Location)        if ( ((P.Physics == PHYS_Projectile) || (P.Physics == PHYS_Falling))            && (Normal(P.Location - Owner.Location) Dot X) > 0.9 )        {            P.speed = VSize(P.Velocity);            if ( P.Velocity Dot Y > 0 )                P.Velocity = P.Speed * Normal(P.Velocity + (750 -VSize(P.Location - Owner.Location)) * Y);            else                P.Velocity = P.Speed * Normal(P.Velocity - (750 -VSize(P.Location - Owner.Location)) * Y);        }}function ProcessAltTraceHit(Actor Other, Vector HitLocation, VectorHitNormal, Vector X, Vector Y, Vector Z){    local vector realLoc;    local float scale;    if ( (Other == None) || (Other == Owner) || (Other == self) || (Owner ==None) )        return;    realLoc = Owner.Location + CalcDrawOffset();    scale = VSize(realLoc - HitLocation)/180;    if ( (Other == Level) || Other.IsA('Mover') )    {        Owner.TakeDamage(24.0 * scale, Pawn(Owner), HitLocation, -40000.0 *X * scale, MyDamageType);    }    else    {        Other.TakeDamage(20 * scale, Pawn(Owner), HitLocation, 30000.0 * X *scale, MyDamageType);        if ( !Other.bIsPawn && !Other.IsA('Carcass') )            spawn(class'UT_SpriteSmokePuff',,,HitLocation+HitNormal*9);    }}simulated function PlayIdleAnim(){    local Bot B;    B = Bot(Owner);    if ( (B != None) && (B.Enemy != None) )    {        B.PlayFiring();        B.bFire = 1;        B.bAltFire = 0;        Fire(1.0);    }    else if ( Mesh != PickupViewMesh )        TweenAnim( 'Still', 1.0);}defaultproperties{     InstFlash=0.0     InstFog=(X=475.00000,Y=325.00000,Z=145.00000)     MyDamageType=Impact     InventoryGroup=1     AltFireSound=Sound'Botpack.ImpactFire'     TensionSound=Sound'Botpack.ImpactLoop'     bMeleeWeapon=True     bRapidFire=true     RefireRate=1.000000     AltRefireRate=1.000000     FireSound=Sound'Botpack.ImpactAltFireRelease'     Misc1Sound=Sound'Botpack.ImpactAltFireStart'     DeathMessage="%o got smeared by %k's piston."     PickupMessage="You got the Impact Hammer."     ItemName="Impact Hammer"     PlayerViewOffset=(X=3.800000,Y=-1.600000,Z=-1.800000)     PlayerViewMesh=Mesh'Botpack.ImpactHammer'     PickupViewMesh=Mesh'Botpack.ImpPick'     Mesh=Mesh'Botpack.ImpPick'     ThirdPersonMesh=Mesh'Botpack.ImpactHandm'     StatusIcon=Texture'Botpack.Icons.UseHammer'     PickupSound=Sound'UnrealShare.Pickups.WeaponPickup'     SelectSound=Sound'Botpack.ImpactPickup'     Icon=Texture'Botpack.Icons.UseHammer'     bMeshCurvy=False     bNoSmooth=False     SoundRadius=50     SoundVolume=200     WeaponDescription="Classification: Melee Piston\\n\\nPrimary Fire: Whentrigger is held down, touch opponents with this piston to inflict massivedamage.\\n\\nSecondary Fire: Damages opponents at close range and has theability to deflect projectiles.\\n\\nTechniques: Shoot at the ground whilejumping to jump extra high."     NameColor=(R=255,G=192,B=0)}
Re: The final skill to master ... any advice?
#191408
Author: goPostal
Date: Wed, 17 Dec 2008 14:39
36 lines
2746 bytes
"goPostal" <agutgopostal@hotmail.com> wrote in message 
news:T982l.10123$297.4107@newsfe23.iad...
>
> "§ď×darts" <sixdartsREMOVE@hotmail.com> wrote in message 
> news:VsadnYncI41oWNXUnZ2dnUVZ_gednZ2d@giganews.com...
>> OK.  I can rocket jump.  I can hammer jump. .. I can shoot my teleporter
>> puck all the way across a map with rockets or a shock ball.  I've done 
>> skeet
>> shooting with teleporter pucks and the shock rifle.  I can even slide 
>> across
>> the floor and break dance.  Other UT skills I have gained over the years 
>> are
>> too numerous to name.
>>
>> What I can not figure out how to do is block incoming fire with my impact
>> hammer.  I've seen it done and I know guys who can do it fairly 
>> regularly.
>> I did it accidentally once, but I'll be dipped in shit if I know how I 
>> did
>> it.
>>
>> So, any tips?  What weapons can be blocked?  What weapons can not be
>> blocked?  And how the hell does one accomplish this?
>
> OK I pulled the code for the hammer. There is a very small area in which 
> to block the incoming weapon fire, so timing is crucial. Here is the 
> weapon code (I'll explain it later when I get home):
>
> //=============================================================================// 
> ImpactHammer.//=============================================================================class 
> ImpactHammer extends TournamentWeapon;#exec



Stupid OE screwed up the format. I'll fix it tonight. 
Re: The final skill to master ... any advice?
#191409
Author: Vis
Date: Thu, 18 Dec 2008 15:11
17 lines
1876 bytes
Sixdarts a new skill for you???????????? maybe

Wall climbing with  an impact hammer.

Only seen it done once that was from the bottom path on lava giant.

I had this dude cornered he had taken full sheild and a mega health off me, 
I had a pistol he had the hammer,  I had him ,  time to die scum.

Then he turned jumped hit the wall and went PowpowPow striaght up the 
vertical wall over the top and was gone.

WTF and i carried on playing.

It was not a fluke it was deliberate move.  I thought i was dreaming.

Vis 
Re: The final skill to master ... any advice?
#191410
Author: §ď×darts
Date: Thu, 18 Dec 2008 18:13
8 lines
1747 bytes
On 18-Dec-2008, "Vis" <darrend43removethis--Bit@hotmail.com> wrote:

> Then he turned jumped hit the wall and went PowpowPow striaght up the
> vertical wall over the top and was gone.

Oh.  I like that.  I wonder if both "pow pow's" were primary or secondary
fire.
Re: The final skill to master ... any advice?
#191411
Author: §ď×darts
Date: Thu, 18 Dec 2008 18:18
13 lines
1987 bytes
On 17-Dec-2008, "goPostal" <agutgopostal@hotmail.com> wrote:

> Stupid OE screwed up the format. I'll fix it tonight.

I know that feeling.

Where did you learn all this stuff?  A couple years back when we first "met"
in this group, it was a different situation.

Anyway, I'm very interested to know what can and can't be blocked.  I'm also
trying to figure out if blocking stuff can be done with either primary or
secondary fire.
Re: The final skill to master ... any advice?
#191418
Author: Vis
Date: Thu, 18 Dec 2008 21:53
9 lines
1359 bytes
definately primary fire

there was no buld up just pow pow pow and over and gone.  Very impressive.

I did look a bit thinking wow

ttfn

Vis
Re: The final skill to master ... any advice?
#191412
Author: goPostal
Date: Fri, 19 Dec 2008 00:46
100 lines
4370 bytes
"§ď×darts" <sixdartsREMOVE@hotmail.com> wrote in message 
news:F-edneZLT_mYCdfUnZ2dnUVZ_u-dnZ2d@giganews.com...
>
> On 17-Dec-2008, "goPostal" <agutgopostal@hotmail.com> wrote:
>
>> Stupid OE screwed up the format. I'll fix it tonight.
>
> I know that feeling.
>
> Where did you learn all this stuff?  A couple years back when we first 
> "met"
> in this group, it was a different situation.
>
> Anyway, I'm very interested to know what can and can't be blocked.  I'm 
> also
> trying to figure out if blocking stuff can be done with either primary or
> secondary fire.

OK, I'll try dots and see if that holds the code right. If it does, I'll 
post an explanation in a moment:


.state Firing
.{
.    function AltFire(float F)
.    {
.    }
.
.    function Tick( float DeltaTime )
.    {
.        local Pawn P;
.        local Rotator EnemyRot;
.        local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, Z;
.        local actor HitActor;
.
.        if ( bChangeWeapon )
.            GotoState('DownWeapon');
.
.        if (  Bot(Owner) != None )
.        {
.            if ( Bot(Owner).Enemy == None )
.                Bot(Owner).bFire = 0;
.            else
.                Bot(Owner).bFire = 1;
.        }
.        P = Pawn(Owner);
.        if ( P == None )
.        {
.            AmbientSound = None;
.            GotoState('');
.            return;
.        }
.        else if( P.bFire==0 )
.        {
.            TraceFire(0);
.            PlayFiring();
.            GoToState('FireBlast');
.            return;
.        }
.
.        ChargeSize += 0.75 * DeltaTime;
.
.        Count += DeltaTime;
.        if ( Count > 0.2 )
.        {
.            Count = 0;
.            Owner.MakeNoise(1.0);
.        }
.        if (ChargeSize > 1)
.        {
.            if ( !P.IsA('PlayerPawn') && (P.Enemy != None) )
.            {
.                EnemyRot = Rotator(P.Enemy.Location - P.Location);
.                EnemyRot.Yaw = EnemyRot.Yaw & 65535;
.                if ( (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) > 8000)
.                    && (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) < 
57535) )
.                    return;
.                GetAxes(EnemyRot,X,Y,Z);
.            }
.            else
.                GetAxes(P.ViewRotation, X, Y, Z);
.            StartTrace = P.Location + CalcDrawOffset() + FireOffset.X * X + 
FireOffset.Y * Y + FireOffset.Z * Z;
.            if ( (Level.NetMode == NM_Standalone) && P.IsA('PlayerPawn') )
.                EndTrace = StartTrace + 25 * X;
.            else
.                EndTrace = StartTrace + 60 * X;
.            HitActor = Trace(HitLocation, HitNormal, EndTrace, StartTrace, 
true);
.            if ( (HitActor != None) && (HitActor.DrawType == DT_Mesh) )
.            {
.                ProcessTraceHit(HitActor, HitLocation, HitNormal, 
vector(AdjustedAim), Y, Z);
.                PlayFiring();
.                GoToState('FireBlast');
.            }
.        }
.    } 
Re: The final skill to master ... any advice?
#191413
Author: goPostal
Date: Fri, 19 Dec 2008 01:02
114 lines
4833 bytes
"goPostal" <agutgopostal@hotmail.com> wrote in message 
news:2aC2l.8410$%z5.1580@newsfe09.iad...
>


Yay, it worked!

To answer you, I've never stopped learning UT stuff. I've been making mods 
and monsters for both UT and 2K4 pretty much non-stop. Got a couple of 
websites and a bunch of released things. It's my nirvana. I figured I sucked 
as a player so I should try to do other UT things    :P

Now your question. It's secondary fire, and I'll show you where:


> .state Firing
> .{
> .    function AltFire(float F)
> .    {
> .    }
> .

This part sets up the alt fire itself:

> .    function Tick( float DeltaTime )
> .    {
> .        local Pawn P;
> .        local Rotator EnemyRot;
> .        local vector HitLocation, HitNormal, StartTrace, EndTrace, X, Y, 
> Z;
> .        local actor HitActor;
> .
> .        if ( bChangeWeapon )
> .            GotoState('DownWeapon');
> .
> .        if (  Bot(Owner) != None )
> .        {
> .            if ( Bot(Owner).Enemy == None )
> .                Bot(Owner).bFire = 0;
> .            else
> .                Bot(Owner).bFire = 1;
> .        }
> .        P = Pawn(Owner);
> .        if ( P == None )
> .        {
> .            AmbientSound = None;
> .            GotoState('');
> .            return;
> .        }
> .        else if( P.bFire==0 )
> .        {
> .            TraceFire(0);
> .            PlayFiring();
> .            GoToState('FireBlast');
> .            return;
> .        }
> .
> .        ChargeSize += 0.75 * DeltaTime;
> .
> .        Count += DeltaTime;
> .        if ( Count > 0.2 )
> .        {
> .            Count = 0;
> .            Owner.MakeNoise(1.0);
> .        }
> .        if (ChargeSize > 1)
> .        {

Here it wants to know if the alt fire hits another player/bot (thats a 
playerpawn). If it does it add yaw to them (pushes them back basically):

> .            if ( !P.IsA('PlayerPawn') && (P.Enemy != None) )
> .            {
> .                EnemyRot = Rotator(P.Enemy.Location - P.Location);
> .                EnemyRot.Yaw = EnemyRot.Yaw & 65535;
> .                if ( (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) > 
> 8000)
> .                    && (abs(EnemyRot.Yaw - (P.Rotation.Yaw & 65535)) < 
> 57535) )
> .                    return;
> .                GetAxes(EnemyRot,X,Y,Z);
> .            }

If it doesn't then it hits any other actors (like an incoming rocket :P) 
effectively canceling them out:

> .            else
> .                GetAxes(P.ViewRotation, X, Y, Z);
> .            StartTrace = P.Location + CalcDrawOffset() + FireOffset.X * X 
> + FireOffset.Y * Y + FireOffset.Z * Z;
> .            if ( (Level.NetMode == NM_Standalone) && 
> P.IsA('PlayerPawn') )
> .                EndTrace = StartTrace + 25 * X;
> .            else
> .                EndTrace = StartTrace + 60 * X;
> .            HitActor = Trace(HitLocation, HitNormal, EndTrace, 
> StartTrace, true);

If there's nothing to hit then it just does the animation:

> .            if ( (HitActor != None) && (HitActor.DrawType == DT_Mesh) )
> .            {
> .                ProcessTraceHit(HitActor, HitLocation, HitNormal, 
> vector(AdjustedAim), Y, Z);
> .                PlayFiring();
> .                GoToState('FireBlast');
> .            }
> .        }
> .    }
>

I hope this helps you out. The "window" for this is incredibly small. The 
timing is gonna be tough to get correct. 
Re: The final skill to master ... any advice?
#191414
Author: §ď×darts
Date: Sat, 20 Dec 2008 07:23
20 lines
2370 bytes
On 18-Dec-2008, "goPostal" <agutgopostal@hotmail.com> wrote:

> > .            else
> > .                GetAxes(P.ViewRotation, X, Y, Z);
> > .            StartTrace = P.Location + CalcDrawOffset() + FireOffset.X *
> > X
> > + FireOffset.Y * Y + FireOffset.Z * Z;
> > .            if ( (Level.NetMode == NM_Standalone) &&
> > P.IsA('PlayerPawn') )
> > .                EndTrace = StartTrace + 25 * X;
> > .            else
> > .                EndTrace = StartTrace + 60 * X;
> > .            HitActor = Trace(HitLocation, HitNormal, EndTrace,
> > StartTrace, true);

Ok...  so there is really no limit to what actors it can cancel?

Could I theoreticaly cancel a shock ball?  Or is the fact that the damage
area of the shock ball being bigger than the window make that impossible?
Re: The final skill to master ... any advice?
#191415
Author: goPostal
Date: Sat, 20 Dec 2008 22:59
44 lines
3495 bytes
"§ď×darts" <sixdartsREMOVE@hotmail.com> wrote in message 
news:vN6dnRw29PjoANHUnZ2dnUVZ_vCdnZ2d@giganews.com...
>
> On 18-Dec-2008, "goPostal" <agutgopostal@hotmail.com> wrote:
>
>> > .            else
>> > .                GetAxes(P.ViewRotation, X, Y, Z);
>> > .            StartTrace = P.Location + CalcDrawOffset() + FireOffset.X 
>> > *
>> > X
>> > + FireOffset.Y * Y + FireOffset.Z * Z;
>> > .            if ( (Level.NetMode == NM_Standalone) &&
>> > P.IsA('PlayerPawn') )
>> > .                EndTrace = StartTrace + 25 * X;
>> > .            else
>> > .                EndTrace = StartTrace + 60 * X;
>> > .            HitActor = Trace(HitLocation, HitNormal, EndTrace,
>> > StartTrace, true);
>
> Ok...  so there is really no limit to what actors it can cancel?
>

Kinda. Depends on the attributes the actor has inherited. Can it be 
destroyed? Can you even have contact with it in the map? Stuff like that. 
It's very logical, but detailed. If you are interested I could show you how 
to follow the classes in about 15 minutes so you can see for yourself if you 
are interested.

> Could I theoreticaly cancel a shock ball?  Or is the fact that the damage
> area of the shock ball being bigger than the window make that impossible?

Depends. I'd have to follow the shock actor back and see. The shock 
explosion shouldn't trigger on a block like that but I can't be sure without 
checking. The shock ball is a funny animal anyway. I actually use it some on 
invasion monsters because the code does such freaky things.

Also, don't confuse the shock ball with the shock explosion. They are two 
different actors with the explosion called after the ball is destroyed. 
Additionally, uscript doesn't care about size like you are thinking. If I 
script a weapon that destroys a particular actor as a side effect, it 
wouldn't matter if the actor were the size of a small house, one touch would 
destroy it (without factoring in any sort of health issues you might give 
said actor). 
Re: The final skill to master ... any advice?
#191416
Author: §ď×darts
Date: Mon, 22 Dec 2008 10:46
17 lines
2222 bytes
On 20-Dec-2008, "goPostal" <agutgopostal@hotmail.com> wrote:

>  I could show you how
> to follow the classes in about 15 minutes so you can see for yourself if
> you
> are interested.

Yes, please.


> Also, don't confuse the shock ball with the shock explosion.

I was just thinking ball for the moment... but if I could save myself from
an exploding shock ball, that would be amazing and I would probably practice
that one until I got good at it even if I'm 90 years old by the time I
master it.
Re: The final skill to master ... any advice?
#191417
Author: goPostal
Date: Mon, 22 Dec 2008 23:58
31 lines
2719 bytes
"§ď×darts" <sixdartsREMOVE@hotmail.com> wrote in message 
news:xtOdnV4rwZBs8tLUnZ2dnUVZ_jOdnZ2d@giganews.com...
>
> On 20-Dec-2008, "goPostal" <agutgopostal@hotmail.com> wrote:
>
>>  I could show you how
>> to follow the classes in about 15 minutes so you can see for yourself if
>> you
>> are interested.
>
> Yes, please.
>

Drop me an email or better yet catch me on messenger. I'll hang some in the 
teamspeak channel for PMH too if you like voice chat. It's not hard and once 
you get the gist of it, you'll be amazed at how fast you can find things out 
you never knew were in there.

>
>> Also, don't confuse the shock ball with the shock explosion.
>
> I was just thinking ball for the moment... but if I could save myself from
> an exploding shock ball, that would be amazing and I would probably 
> practice
> that one until I got good at it even if I'm 90 years old by the time I
> master it.

I'm guessing it would cancel the shock without an explosion. IIRC the 
smaller "explosion" you get when a ball strikes bsp is strictly for show and 
there is no damage call. If you block it I'm pretty sure you'd get that one. 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads