Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=============================================================================
- // $Workfile: WeaponInvMindclaw.uc $
- // Created By: Mark Poesch
- // Created On: 9/28/00
- // $Author: Sbrown $
- // $Date: 5/10/01 10:43p $
- // $Revision: 6 $
- //=============================================================================
- class WeaponInvMindClaw extends U2Weapon;
- #exec TEXTURE IMPORT FILE=Assets\MindClaw\MC_Icon.pcx GROUP=Icons MIPS=OFF //RSW
- #exec TEXTURE IMPORT FILE=Assets\MindClaw\MC_Ammo.pcx GROUP=Skins LODSET=2 //RSW
- #exec TEXTURE IMPORT FILE=Assets\MindClaw\MC_Skin.pcx GROUP=Skins LODSET=2 //RSW
- #exec TEXTURE IMPORT FILE=Assets\MindClaw\MC_Projectile.pcx GROUP=Skins LODSET=2 //RSW
- #exec MESH IMPORT MESH=MC_Ammo ANIVFILE=Assets\MindClaw\MC_Ammo_a.3d DATAFILE=Assets\MindClaw\MC_Ammo_d.3d X=0 Y=0 Z=0 //RSW
- #exec MESH ORIGIN MESH=MC_Ammo X=0 Y=0 Z=0
- #exec MESHMAP SCALE MESHMAP=MC_Ammo X=0.1 Y=0.1 Z=0.2
- #exec MESHMAP SETTEXTURE MESHMAP=MC_Ammo NUM=1 TEXTURE=MC_Ammo
- #exec MESH IMPORT MESH=MC_FP ANIVFILE=Assets\MindClaw\MC_FP_a.3d DATAFILE=Assets\MindClaw\MC_FP_d.3d X=0 Y=0 Z=0 //RSW
- #exec MESH ORIGIN MESH=MC_FP X=04 Y=-140 Z=-15 YAW=-64
- #exec MESH SEQUENCE MESH=MC_FP SEQ=All STARTFRAME=0 NUMFRAMES=8
- #exec MESH SEQUENCE MESH=MC_FP SEQ=Ambient STARTFRAME=0 NUMFRAMES=1 //RSW
- #exec MESH SEQUENCE MESH=MC_FP SEQ=Select STARTFRAME=0 NUMFRAMES=8 //RSW
- #exec MESH SEQUENCE MESH=MC_FP SEQ=Reload STARTFRAME=0 NUMFRAMES=8 //RSW
- #exec MESH SEQUENCE MESH=MC_FP SEQ=Idle STARTFRAME=0 NUMFRAMES=1 //RSW
- #exec MESH SEQUENCE MESH=MC_FP SEQ=Fire STARTFRAME=0 NUMFRAMES=8 //RSW
- #exec MESH SEQUENCE MESH=MC_FP SEQ=AltFire STARTFRAME=0 NUMFRAMES=8 //RSW
- #exec MESH SEQUENCE MESH=MC_FP SEQ=Down STARTFRAME=0 NUMFRAMES=1 //RSW
- #exec MESHMAP SCALE MESHMAP=MC_FP X=0.1 Y=0.1 Z=0.2
- #exec MESHMAP SETTEXTURE MESHMAP=MC_FP NUM=0 TEXTURE=MC_Skin
- #exec MESH IMPORT MESH=MC_TP ANIVFILE=Assets\MindClaw\MC_TP_a.3d DATAFILE=Assets\MindClaw\MC_TP_d.3d X=0 Y=0 Z=0 //RSW
- #exec MESH ORIGIN MESH=MC_TP X=04 Y=-140 Z=-15 YAW=-64
- #exec MESHMAP SCALE MESHMAP=MC_TP X=0.1 Y=0.1 Z=0.2
- #exec MESHMAP SETTEXTURE MESHMAP=MC_TP NUM=0 TEXTURE=MC_Skin
- #exec MESH IMPORT MESH=MC_Projectile ANIVFILE=Assets\MindClaw\MC_Projectile_a.3d DATAFILE=Assets\MindClaw\MC_Projectile_d.3d X=0 Y=0 Z=0 //RSW
- #exec MESH ORIGIN MESH=MC_Projectile X=0 Y=0 Z=0
- #exec MESHMAP SCALE MESHMAP=MC_Projectile X=0.1 Y=0.1 Z=0.2
- #exec MESHMAP SETTEXTURE MESHMAP=MC_Projectile NUM=1 TEXTURE=MC_Projectile
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_Pickup.wav GROUP=MindClaw //SBB
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_PickupAmmo.wav GROUP=MindClaw //SBB
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_Select.wav GROUP=MindClaw //SBB
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_Reload.wav GROUP=MindClaw //SBB
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_Fire.wav GROUP=MindClaw //SBB -- start+loop (ambient)
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_FireAttack.wav GROUP=MindClaw //SBB
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_FireAbort.wav GROUP=MindClaw //SBB
- #exec AUDIO IMPORT FILE=Assets\MindClaw\MC_AltFire.wav GROUP=MindClaw //SBB
- var() float AttackViewAngle; // 1.0 = directly in front, 0.707 = 90 degree cone, 0.5 = 120 degree cone, 0.0 = 180 degrees
- var() float MaxSightRadius; //
- var() float MinAttackTime; //
- var() float DamagePerSecond; //
- var() float AbsorbDamageRatio; //
- var() class<PulseLineGenerator> AttackEffectClass;
- var byte bAttacking[16]; //
- var Actor Attacking[16]; //
- var float AttackTime[16]; //
- var PulseLineGenerator AttackEffect[16];
- simulated function ClearWeaponEffects()
- {
- local int i;
- Pawn(Owner).PlaySound( None, SLOT_Misc );
- for( i = 0; i < ArrayCount(AttackEffect); i++ )
- {
- if( AttackEffect[i] != None )
- {
- AttackEffect[i].Destroy();
- AttackEffect[i] = None;
- }
- }
- Super.ClearWeaponEffects();
- }
- state NormalFire
- {
- function BeginState()
- {
- Pawn(Owner).PlaySound( sound'MC_Fire', SLOT_Misc, Pawn(Owner).SoundDampening );
- }
- function EndState()
- {
- Pawn(Owner).PlaySound( None, SLOT_Misc );
- }
- function bool InvalidTarget( Actor A )
- {
- local float InView;
- // not visible to us?
- if( A == Owner || A.bHidden || !FastTrace( A.Location, Owner.Location ) )
- return false;
- // outside our field of view?
- InView = Normal( A.Location - Owner.Location ) dot vector( Pawn(Owner).GetViewRotation() );
- if( InView < AttackViewAngle )
- return false;
- // is it already dead? is it a sentient (human) target?
- if( Pawn(A) != None && ( Pawn(A).Health <= 0 || !Pawn(A).IsPlayer() ) ) //MDF is this sufficient?
- return false;
- return true;
- }
- function UpdateAttackList( float DeltaTime )
- {
- local Pawn P;
- local int i;
- for( i = 0; i < ArrayCount(bAttacking); i++ )
- {
- bAttacking[i] = 0;
- }
- foreach RadiusActors( class'Pawn', P, MaxSightRadius )
- {
- if( InvalidTarget( P ) )
- {
- // if target is in Attacking list, continue tracking them by setting bAttacking
- for( i = 0; i < ArrayCount(Attacking); i++ )
- {
- if( P == Attacking[i] )
- {
- bAttacking[i] = 1;
- break;
- }
- }
- // if not in the Attacking list, then add them
- if( i >= ArrayCount(Attacking) )
- {
- for( i = 0; i < ArrayCount(Attacking); i++ )
- {
- if( Attacking[i] == None )
- {
- bAttacking[i] = 1;
- Attacking[i] = P;
- break;
- }
- }
- }
- }
- }
- // accumulate time for current targets, and clear time for dropped targets, and
- // update AttackingEffect (destroy or create as appropriate)
- for( i = 0; i < ArrayCount(bAttacking); i++ )
- {
- if( bAttacking[i] == 0 )
- {
- Attacking[i] = None;
- AttackTime[i] = 0.0;
- if( AttackEffect[i] != None )
- {
- AttackEffect[i].Destroy();
- AttackEffect[i] = None;
- }
- }
- else
- {
- AttackTime[i] += DeltaTime;
- if( AttackEffect[i] == None )
- {
- AttackEffect[i] = Spawn( AttackEffectClass );
- AttackEffect[i].StartActor = Owner;
- AttackEffect[i].EndActor = Attacking[i];
- }
- AttackEffect[i].BeamWidth.A = AttackTime[i] * 1;
- AttackEffect[i].BeamWidth.B = AttackTime[i] * 4;
- }
- }
- }
- function bool Attack()
- {
- local int i;
- local float Damage;
- local bool bAttacked;
- for( i = 0; i < ArrayCount(Attacking); i++ )
- {
- if( Attacking[i] != None && AttackTime[i] > MinAttackTime )
- {
- bAttacked = true;
- // inflict damage
- Damage = DamagePerSecond * AttackTime[i];
- Attacking[i].TakeDamage( Damage, Instigator, Attacking[i].Location, Attacking[i].Location - Pawn(Owner).Location, MyDamageType );
- // absorb some of the damage inflicted, capped at 199
- Pawn(Owner).Health += Damage * AbsorbDamageRatio;
- Pawn(Owner).Health = Min( Pawn(Owner).Health, 199 );
- }
- bAttacking[i] = 0;
- Attacking[i] = None;
- AttackTime[i] = 0.0;
- if( AttackEffect[i] != None )
- {
- AttackEffect[i].Destroy();
- AttackEffect[i] = None;
- }
- }
- return bAttacked;
- }
- function Tick( float DeltaTime )
- {
- UpdateAttackList( DeltaTime );
- if( Pawn(Owner).Controller.bFire == 0 )
- {
- if( Attack() )
- {
- Pawn(Owner).PlaySound( sound'MC_FireAttack', SLOT_None, Pawn(Owner).SoundDampening );
- }
- else
- {
- Pawn(Owner).PlaySound( sound'MC_FireAbort', SLOT_None, Pawn(Owner).SoundDampening );
- }
- Finish();
- }
- }
- function AnimEnd()
- {
- // don't call Finish() when anim finishes
- }
- }
- state ClientFiring
- {
- simulated function Tick( float DeltaTime )
- {
- if( Pawn(Owner).Controller.bFire == 0 )
- {
- Finish();
- }
- }
- simulated function AnimEnd()
- {
- // don't call Finish() when anim finishes
- }
- }
- function AltFire( float Value )
- {
- //ARL activate Anti-Magic Aura effect around player
- }
- defaultproperties
- {
- AttackViewAngle=0.500000
- MaxSightRadius=1024.000000
- MinAttackTime=1.000000
- DamagePerSecond=100.000000
- AbsorbDamageRatio=0.200000
- AttackEffectClass=Class'ParticleSystems.PulseLineGenerator'
- AnimationType=AT_Large
- MomentumTransfer=40000.000000
- FireAnimRate=0.400000
- AltFireAnimRate=0.400000
- AltShakeMag=0.000000
- AltShakeTime=0.000000
- AltShakeVert=(Z=0.000000)
- WeaponKickDirection=(X=0.000000)
- WeaponKickDuration=0.000000
- WeaponKickRecoveryDuration=0.000000
- AltWeaponKickDirection=(X=0.000000)
- AltWeaponKickDuration=0.000000
- AltWeaponKickRecoveryDuration=0.000000
- AmmoName=Class'U2Weapons.AmmoInvPsyCrystal'
- PickupAmmoCount=50
- AutoSwitchPriority=6
- MyDamageType=Class'U2.DamageTypePsionic'
- ShakeMag=0.000000
- shaketime=0.000000
- ShakeVert=(Z=0.000000)
- AIRating=0.700000
- RefireRate=0.400000
- AltRefireRate=0.400000
- AltFireSound=Sound'U2Weapons.MindClaw.MC_AltFire'
- CockingSound=Sound'U2Weapons.MindClaw.MC_Reload'
- SelectSound=Sound'U2Weapons.MindClaw.MC_Select'
- InventoryGroup=3
- PickupClass=Class'U2Weapons.weaponMindclaw'
- PlayerViewOffset=(X=40.599998,Y=14.600000,Z=-16.600000)
- FirstPersonMesh=VertMesh'U2Weapons.MC_FP'
- StatusIcon=Texture'U2Weapons.Icons.MC_Icon'
- ItemName="Mindclaw"
- Mesh=VertMesh'U2Weapons.MC_TP'
- }
- @@//PICKUP ITEM STARTS HERE - GreatEmerald
- //=============================================================================
- // $Workfile: weaponMindclaw.uc $
- // Created By: Mark Poesch
- // Created On: 9/28/00
- // $Author: Mpoesch $
- // $Date: 4/20/01 12:05p $
- // $Revision: 4 $
- //=============================================================================
- class weaponMindClaw extends U2WeaponPickup;
- defaultproperties
- {
- InventoryType=Class'U2Weapons.weaponInvMindClaw'
- PickupMessage="You got the Mindclaw."
- PickupSound=Sound'U2Weapons.MindClaw.MC_Pickup'
- Mesh=VertMesh'U2Weapons.MC_TP'
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement